УСТРОЙСТВО ДЛЯ РАСПАКОВКИ ДАННЫХ
DEVICE FOR UNPACKING DATA

ОБЛАСТЬ ТЕХНИКИ
Изобретение относится к области вычислительной техники и предназначено для использования в системах обработки информации, а также может быть применено в блоках сжатия и распаковки данных без потерь в системах для рационального использования устройств хранения и передачи данных, обработки данных физических экспериментов.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
0
1
1
c
c
1
0
1
c
2
0
1
Известен способ сжатия восстановления данных без потерь (RU №2403677 С1, МПК Н03М 7/30, заявлено 09.02.2009, опубликовано 10.11.2010, Бюл. №31), в котором используется сжатие данных, ранее подвергнутых сжатию. В сжимаемом потоке данных считают количество нулей n и количество единиц n, выбирают алгоритм присвоения неповторяющихся цифровых кодов всем возможным перестановкам с повторениями из по нулей и n единиц и нахождения соответствующей перестановки, которой присваивают цифровой код N, считают общее количество кодов n, определяют значения d=n+n-n и d=(n+n)/2, а для восстановления потока данных выполняют обратные операции.
2
2
2
Известно кодирующее устройство (RU №153302 U1, МПК Н03М 7/30, заявлено 17.06.2014, опубликовано 10.07.2015, Бюл. №19), содержащее входной регистр, анализатор разрядов, блок управления ключами, блок ключей, ПЗУ, блок мультиплексоров, выходной регистр, а также тактовый генератор, делитель частоты, счетчик и выходной регистр со следующими соединениями: выход входного регистра 1-n соединен с входами анализатора разрядов и с блоком управления ключами, выходы 1-n анализатора соединены с информационными входами блока ключей, а выходы 1-n - с управляющими входами этого блока, выходы которого 1-n соединены с входами ПЗУ, а выходы 1-2n ПЗУ соединены с информационными входами блока мультиплексора, выходы которого 1-n являются выходами маркера устройства; выходы 3-8 входного регистра соединены с выходным регистром, выходы которого являются выходами информационных разрядов устройства; выход тактового генератора через счетчик соединен с управляющими входами блока мультиплексоров, а через делитель частоты - с управляющими входами: через выход 1 входного регистра, через выход 2 с блоком управления ключами, а через выход 3 с выходным регистром.
Недостатком данных устройств является схемная сложность, что затрудняет их применение.
1
2
Известно устройство для упаковки данных (RU №2701711 С1, МПК Н03М 7/30, заявлено 09.01.2019, опубликовано 30.09.2019, Бюл. №28), содержащее N входных символов ID1, ID2, …, IDN по k разрядов соединенных с входным регистром данных 2, формирователь маски 3, содержащий группу из N элементов ИЛИ, коммутатор маски 4, регистр маски 5, многовыходной блок приоритета 6, содержащий w каскадов, блок коммутаторов данных 7, содержащий w коммутаторов 7, 7, …, 7w, коммутатор маски-данных 8, выходной буфер 9, элемент ИЛИ-НЕ 10, синхронный D-триггер 11, внешний вход С синхронизации 12, внешний вход R синхронной установки в нулевое состояние 13, внешние выходы Q устройства 14, содержащие w символов по k разрядов, а также внутреннюю шину данных DD из N символов по k разрядов, внутреннюю N разрядную шину маски символов М, группу из w внутренних шин указателей старших символов U1, U2, …, Uw (где w количество выходных символов), внутреннюю шину остаточной маски MS и флаг нулевых символов (флаг нуля) FZ.
Недостатком данного устройства является отсутствие средств для восстановления сжатых данных.
1
2
N
1
2
N
1
2
N
Наиболее близким устройством того же назначения к заявленному изобретению по совокупности признаков является, принятое за прототип, устройство для декомпрессии данных (RU №2697618 С1, МПК Н03М 7/30, заявлено 30.10.2018, опубликовано 15.08.2019, Бюл. №23), содержащее шину входных данных 1 соединенную с входным регистром данных 2, многовыходной блок приоритета 3, который содержит w групп выходов указателей старших символов S1, S2, …, Sw по N разрядов (где w количество входных символов), группу из N коммутаторов данных 4, 4, …, 4, группу из N регистров 5, 5, …, 5 с синхронным входом R установки в нулевое состояние, выходной буфер 6, выходы которого содержат N выходных символов Q1, Q2, … QN по k разрядов и которые являются внешними выходами устройства 13, элемент ИЛИ-НЕ 7, N групп 8, 8, …, 8 по k элементов 2И, регистр маски 9, D-триггер 10 с синхронным входом R установки в нулевое состояние,
а также содержащее внешний вход С синхронизации 11, внешний вход R синхронной установки в нулевое состояние, внутреннюю шину данных D из w символов по k разрядов, внутреннюю шину приоритета MS, которая является группой вторых выходов многовыходного блока приоритета 3, внутреннюю N разрядную первую шину маски символов М, внутреннюю N разрядную вторую шину маски символов QM, которая является группой выходов регистра маски 9, и флаг нуля FZ,
причем внешний вход С синхронизации 11 и внешний вход R синхронной установки в нулевое состояние 12 соединены соответственно с входами синхронизации С и входами R синхронной установки в нулевое состояние входного регистра данных 2, N групп регистров 5, выходного буфера 6, регистра маски 9 и D-триггера 10,
1
2
N
1
причем выходы входного регистра 2 являются соответствующими w*k разрядами внутренней шины данных D, которые соединены с информационными входами каждого коммутатора данных группы из N коммутаторов данных 4, 4, …, 4, управляющие входы выборки которых соединены с соответствующими одноименными разрядами w групп выходов S, S2, …, Sw многовыходного блока приоритета 3,
1
2
N
1
2
N
1
2
N
1
2
N
1
2
N
при этом выходы группы из N коммутаторов данных 4, 4, …, 4 соединены с соответствующими информационными входами D одноименных регистров группы из N регистров 5, 5, …, 5, у которых выходы QB1, QB2, …, QBN всех N регистров 5, 5, …, 5 соединены по группам с соответствующими первыми входами элементов 2И одноименных N групп 8, 8, …, 8, выходы которых соединены с соответствующими группами информационных входов IQ1, IQ2, …, IQN выходного буфера 6, а вторые входы элементов 2И из N групп 8, 8, …, 8 по группам соединены между собой и подключены к соответствующим одноименным разрядам внутренней N разрядной второй шины маски QM,
кроме того выход элемента ИЛИ-НЕ 7 является флагом нуля FZ и соединен с информационным D-входом D-триггера 10, выход которого соединен с входом СЕ разрешения работы регистра маски 9 и соединен с входом СЕ разрешения работы выходного буфера 6,
1
2
N
причем шина входных данных 1 содержит группу входных разрядов данных ID из w символов по k разрядов и группу входных N разрядов маски символов IM, при этом вторая группа выходов входного регистра 2 является N разрядами внутренней первой шины маски символов М, которая соединена с входами многовыходного блока приоритета 3 и соединена с входами СЕ одноименных групп регистров 5, 5, …, 5.
Недостатками данного устройства являются аппаратные затраты на хранение текущей маски для каждой упакованной группы символов и передача на каждом такте N разрядов текущей маски.
ЗАДАЧА ИЗОБРЕТЕНИЯ
Задачей изобретения является разработка аппаратных средств для использования в системах обработки информации, блоках сжатия и распаковки данных без потерь в системах для рационального использования устройств хранения и передачи данных.
Техническим результатом изобретения является сокращение разрядности входных данных и простота реализации с одновременным повышением информационной вместимости без потерь информации за счет сокращения необходимого объема памяти для хранения последовательности групп входных данных двоичных символов и соответствующих масок символов.
КРАТКОЕ ОПИСАНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
1
2
N
1
2
N
1
2
N
Указанный технический результат при осуществлении изобретения достигается тем, что в устройство для распаковки данных содержащее шину IMD входных данных 1 соединенную с входным регистром RD данных 2, многовыходной блок FU приоритета 3, который содержит w групп выходов указателей старших символов U1, U2, …, Uw по N разрядов (где w количество входных символов), группу из N коммутаторов КD данных 4, 4, …, 4, группу из N регистров 5, 5, …, 5 с синхронным входом R установки в нулевое состояние, выходной буфер BQ 6, выходы которого содержат N выходных символов Q1, Q2, …, QN по k разрядов и которые являются внешними выходами устройства 13, элемент ИЛИ-НЕ 7, N групп 8, 8, …, 8 по k элементов 2И, регистр RM1 общей маски 9, D-триггер 10 с синхронным входом R установки в нулевое состояние,
а также содержащее внешний вход С синхронизации 11, внешний вход R синхронной установки в нулевое состояние 12, внутреннюю шину данных-маски MD из w символов по k разрядов, внутреннюю шину приоритета (остаточной маски) MS, которая является группой вторых выходов многовыходного блока приоритета 3, внутреннюю N разрядную шину общей маски символов QM, которая является группой выходов регистра RM1 общей маски 9, и флаг нуля (флаг нулевых символов) FZ,
1
2
N
причем внешний вход С синхронизации 11 и внешний вход R синхронной установки в нулевое состояние 12 соединены соответственно с входами синхронизации С и входами R синхронной установки в нулевое состояние входного регистра RD данных 2, N групп регистров 5, 5, …, 5, выходного буфера BQ 6, регистра RM1 общей маски 9 и D-триггера 10,
1
2
N
причем выходы входного регистра 2 являются соответствующими w*k разрядами внутренней шины данных-маски MD, которые соединены с информационными входами каждого коммутатора данных КD группы из N коммутаторов данных 4, 4, …, 4, управляющие входы выборки которых соединены с соответствующими одноименными разрядами w групп выходов U1, U2, …, Uw многовыходного блока FU приоритета 3,
1
2
N
1
2
N
1
2
N
1
2
N
1
2
N
при этом выходы группы из N коммутаторов КD данных 4, 4, …, 4 соединены с соответствующими информационными входами D одноименных регистров группы из N регистров 5, 5, …, 5, у которых выходы QB1, QB2, …, QBN всех N регистров 5, 5, …, 5 соединены по группам с соответствующими первыми входами элементов 2И одноименных N групп 8, 8, …, 8, выходы которых соединены с соответствующими группами информационных входов IQ1, IQ2, …, IQN выходного буфера BQ 6, а вторые входы элементов 2И из N групп 8, 8, …, 8 по группам соединены между собой и подключены к соответствующим одноименным разрядам внутренней N разрядной шины общей маски символов QM,
кроме того выход элемента ИЛИ-НЕ 7 является флагом нуля FZ и соединен с информационным D-входом D-триггера 10, выход которого соединен с входом СЕ разрешения работы регистра RM1 общей маски 9 и соединен с входом СЕ разрешения работы выходного буфера ВО 6,
дополнительно введены коммутатор КМ маски 14 и регистр RM2 текущей маски 15, у которого вход синхронизации С соединен с внешним входом С синхронизации 11, а вход R синхронной установки в нулевое состояние соединен с внешним входом 12 синхронной установки в нулевое состояние, а также введена внутренняя N разрядная шина текущей маски символов М,
причем внутренняя шина данных-маски MD также соединена с информационными входами регистра общей маски 9 и с первой группой информационных входов коммутатора КМ маски 14, у которого вторая группа информационных входов соединена с внутренней шиной приоритета (остаточной маски) MS, а третий управляющий вход выборки коммутатора КМ маски 14 соединен с выходом D-триггера 10,
1
2
N
при этом группа выходов коммутатора КМ маски 14 соединена с входами элемента ИЛИ-НЕ 7 и с информационными входами регистра RM2 текущей маски 15, группа выходов которого соединена с группой входов многовыходного блока приоритета 3 и является внутренней шиной текущей маски символов М, разряды которой соединены с входами СЕ одноименных групп регистров 5, 5, …, 5.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
На фиг. 1 представлена схема предлагаемого устройства для распаковки данных. На фиг. 2 приведен формат данных до упаковки. На фиг. 3 приведены форматы данных на входе в устройство. На фиг. 4 приведен формат выходных данных. На фиг. 5 приведена потактовая временная диаграмма работы предлагаемого устройства при количестве символов до упаковки N=16 по k=4 разрядов, разрядности маски N=16, разрядности входной шины IMD данных-маски L=16, содержащей w=4 символов по k=4 разрядов или N=16 разрядов маски.
В устройстве на фиг. 1-5 и в тексте приняты следующие обозначения:
С - вход синхронизации,
СЕ - вход разрешения работы,
BQ - выходной буфер,
D - информационный вход триггера,
DD - данные до упаковки (сжатия) - N символов по k разрядов,
dd - входные символы, содержащие по k разрядов,
IMD - входная шина данных-маски разрядностью L ≥ max (N, w*k), где w количество символов по k разрядов, N разрядов маски,
ID - набор из w входных символов по k разрядов,
IM - входная маска N разрядности,
MD - внутренняя шина данных-маски - w символов по k разрядов или N разрядов маски,
FU - многовыходной блок приоритета, содержащий w каскадов,
FZ - флаг нулевых символов (флаг нуля),
IQ1, IQ2, …, IQN - N групп входов символов выходного буфера 6,
k - разрядность символов,
KD - коммутатор данных,
KM - коммутатор маски,
L - разрядность входных данных, где L ≥ max (N, w*k),
М - внутренняя N разрядная шина текущей маски символов,
MS - внутренняя шина приоритета (остаточной маски),
N - количество выходных символов по k разрядов
ТСЕ - выход триггера,
Q1, Q2, …, ON - N выходных символов по k разрядов после распаковки (восстановления),
1
2
N
QB1, QB2, …, QBN - N символов с выходов группы регистров 5, 5, …, 5,
QM - внутренняя N разрядная шина общей маски символов,
R - вход синхронной установки в нулевое состояние,
RD - входной регистр данных,
RG - регистр,
RM1 - регистр общей маски,
RM2 - регистр текущей маски,
S1, S2, …, Sw - группа из w внутренних шин маски символов в блоке приоритета,
U1, U2, …, Uw - w групп N разрядных указателей старшей единицы в коде «1 из N»,
V - количество ненулевых символов во входных данных ID,
w - количество символов во входных данных IMD,
Z - максимальное количество групп во входной последовательности ненулевых символов, причем Z=] N/w [(большее целое) когда количество V ненулевых символов больше (N-w+1),
1 - внешняя входная шина данных-маски IMD,
2 - входной регистр данных RD,
3 - многовыходной блок приоритета FU,
1
2
N
4, 4, …, 4 - группа из N коммутаторов данных по k разрядов,
1
2
N
5, 5, …, 5 - группа из N регистров по k разрядов с синхронным входом R установки в нулевое состояние,
6 - выходной буфер BQ,
7 - элемент ИЛИ-НЕ,
1
2
N
8, 8, …, 8 - N групп по k элементов 2И,
9 - регистр общей маски RM1,
10 - D-триггер с синхронным входом R установки в нулевое состояние,
11 - внешний вход С синхронизации,
12 - внешний вход R синхронной установки в нулевое состояние,
13 -внешние выходы Q1, Q2, …, QN,
14 - коммутатор маски КМ,
15 - регистр текущей маски RM2.
1
2
N
1
2
N
Устройство для распаковки данных содержит шину IMD входных данных 1 соединенную с входным регистром RD данных 2, многовыходной блок FU приоритета 3, который содержит w групп выходов указателей старших символов U1, US2, …, Uw по N разрядов (где w количество входных символов), группу из N коммутаторов КD данных 4, 4, …, 4, группу из N регистров с синхронным входом R установки в нулевое состояние, выходной буфер BQ 6, выходы которого содержат N выходных символов Q1, Q2, …, QN по k разрядов и которые являются внешними выходами устройства 13, элемент ИЛИ-НЕ 7, N групп 8, 8, …, 8 по k элементов 2И, регистр RM1 общей маски 9, D-триггер 10 с синхронным входом R установки в нулевое состояние, коммутатор КМ маски 14 и регистр RM2 текущей маски 15.
Кроме того устройство содержит внешний вход С синхронизации 11, внешний вход R синхронной установки в нулевое состояние 12, внутреннюю шину данных-маски MD из w символов по k разрядов, внутреннюю шину приоритета (остаточной маски) MS, которая является группой вторых выходов многовыходного блока приоритета 3, внутреннюю N разрядную шину общей маски символов QM, которая является группой выходов регистра RM1 общей маски 9, флаг нуля FZ и внутреннюю N разрядную шину текущей маски символов М.
1
2
N
Входной регистр RD данных 2, N группа регистров 5, 5, …, 5, выходной буфер BQ 6, регистр RM1 общей маски 9, D-триггер 10 и регистр RM2 текущей маски 15 содержат вход синхронизации С и вход синхронной установки в нулевое состояние R.
1
2
N
Внешний вход С синхронизации 11 и внешний вход R синхронной установки в нулевое состояние 12 соединены соответственно с входами синхронизации С и входами R синхронной установки в нулевое состояние входного регистра RD данных 2, N групп регистров 5, 5, …, 5, выходного буфера BQ 6, регистра RM1 общей маски 9, D-триггера 10 и регистра RM2 текущей маски 15.
Входная шина IMD данных-маски 1 содержит L разрядов (L ≥ max (N, w*k) где w количество символов по k разрядов, N разрядов маски). На входную шину 1 последовательно поступают маски ненулевых символов IM и наборы данных ID.
Входной регистр данных 2 предназначен для временного хранения масок ненулевых символов IM и наборов данных ID. При этом выходы входного регистра данных 2 являются внутренней шиной данных-маски MD.
Выходной BQ буфер 9 содержит N*k и предназначен для хранения выходных последовательностей распакованных значений символов.
Регистр RM1 общей маски 9 предназначен для хранения общей маски в течение времени распаковки и используется для выделения всех ненулевых символов и передачи их на входы выходного буфера BQ 6.
1
2
N
Регистр RM2 текущей маски 15 предназначен для выделения текущих ненулевых символов и разрешения их загрузки в группу регистров 5, 5, …, 5.
D-триггер 10 предназначен для управления записью в выходной буфер бив регистр RM1 общей маски 9. Выход ТСЕ D-триггера 10 установленный в единичное состояние ТСЕ=1 разрешает загрузку распакованных данных в выходной буфер BQ 6 и определяет передачу общей маски через коммутатор КМ маски 14 и разрешает загрузку маски в регистр RM1 общей маски 9.
Коммутатор КМ маски 14 осуществляет передачу общей или текущей масок.
1
2
N
Многовыходной блок FU приоритета 3 формирует на выходах каждой из w групп унитарные коды «1 из N», которые соответствуют значению кода на внутренней шине текущей маски М. Унитарные коды «1 из N», формируются в порядке старшинства приоритетов. Коммутаторы КD данных 4, 4, …, 4 предназначены для выделения из w символов по k разрядов с внутренней шины маски-данных MD одного из символов разрешенного в соответствии с унитарным кодом «1 из N» установленным на выходах w групп N разрядных указателей старшей единицы U1, U2, …, Uw.
1
2
N
1
2
N
Выходы группы из N коммутаторов данных 4, 4, …, 4 соединены с соответствующими информационными входами D одноименных регистров группы из N регистров 5, 5, …, 5, у которых управляющие входы СЕ разрешения работы соединены с одноименными разрядами внутренней N разрядной шины текущей маски символов М.
1
2
N
Группа из N регистров 5, 5, …, 5 предназначена для записи на каждом такте до w ненулевых символов по k разрядов входных данных ID, в соответствии с кодом, установленным на внутренней N разрядной первой шине маски символов М.
1
2
N
1
2
N
Выходы QB1, QB2, …, QBN всех N регистров 5, 5, …, 5 соединены по группам с соответствующими первыми входами элементов 2И одноименных N групп 8, 8, …, 8, выходы которых соединены с соответствующими группами информационных входов IQ1, IQ2, …, IQN выходного буфера ВО 6, который предназначен для хранения восстановленных значений после распаковки данных.
1
2
N
1
2
N
1
2
N
Вторые входы элементов 2И из N групп 8, 8, …, 8 по группам соединены между собой и подключены к соответствующим одноименным разрядам внутренней N разрядной общей маски символов QM, которая является выходами регистра маски 9, у которого группа информационных D-входов соединена с N разрядами внутренней шины текущей маски символов М. Разряды общей маски символов QM разрешают передачу ненулевых символов после восстановления с выходов QB1, QB2, …, QBN всех N регистров 5, 5, …, 5 по группам через элементы 2И из N групп 8, 8, …, 8 на группы входов IQ1, IQ2, …, IQN символов выходного буфера BQ 6.
Внутренняя шина приоритета (остаточной маски) MS, которая является группой вторых выходов многовыходного блока приоритета 3, соединена с входами элемента ИЛИ-НЕ 7, выход которого является флагом нуля FZ и соединен с информационным D-входом D-триггера 10, выход которого соединен с входами СЕ разрешения работы выходного буфера ВQ6, регистра RM1 общей маски 9 и управляющим входом коммутатора КМ маски 14.
Единичное значение флага нуля FZ=1 формируется если нулевые значения установлены во всех разрядах на выходе коммутатора КМ маски 14.
Выходы выходного буфера BQ 6 содержат N выходных символов Q1, Q2, …, QN по k разрядов и являются внешними выходами устройства 13.
ПОДРОБНОЕ ОПИСАНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
Принцип работы предлагаемого устройства состоит в следующем.
Код маски IM и коды входных данных ID поступают последовательно по одной входной шине 1 данных-маски IMD. Код общей маски IM сохраняется на регистре RM1 общей маски 9 в течение времени распаковки набора данных DD из N символов по k разрядов. Формируемая текущая маска сохраняется на регистре RM2 текущей маски 14.
Перед началом работы все регистры и D-триггер 10 устанавливаются в нулевое состояние, а флаг нуля принимает единичное значение FZ=1.
После упаковки (сжатия) данных DD, содержащих N символов по k разрядов (фиг. 2), формируется последовательность сжатых данных, элементы которой состоят из одной группы маски символов IM с разрядностью N и из соответствующих групп данных (символов) ID, содержащих до w ненулевых символов по k разрядов данных (фиг. 3). Максимальное количество элементов входной последовательности составляет Z=] N/w [(большее целое) когда количество V ненулевых символов больше (N-w+1).
На шину входных данных 1 предлагаемого устройства поступает входная последовательность упакованных данных, содержащая N разрядов маски символов IM и входные разряды данных ненулевых символов ID, начиная со старших символов, которые состоят из w символов по k разрядов (фиг. 3). При этом единичное значение разрядов маски символов IM соответствует ненулевым символам в исходных данных DD до упаковки (сжатия).
Многовыходной блок FU приоритета 3 определяет не только сигнал с наивысшим приоритетом, но также определяет сигналы со вторым, третьим, …, w-м по старшинству приоритетами. В соответствии с кодом текущей маски М на выходах многовыходного блока приоритета 3 формируются w групп приоритета U1, U2, …, Uw в порядке старшинства приоритета. При этом каждому из N разрядов маски символов М присваивается фиксированный приоритет. В устройстве старший приоритет присвоен старшему N-му разряду из N разрядов маски символов М, а далее приоритет уменьшается от разряда к разряду с уменьшением номера разряда. Младший приоритет задан для младшего 1-го разряда маски символов М. Среди выходных w групп U1, U2, …, Uw многовыходного блока приоритета 3 наивысший приоритет присвоен младшей первой группе U1, а далее приоритет уменьшается от группы к группе с увеличением номера группы. Младший приоритет задан для группы со старшим номером Uw. На выходах каждой из w групп приоритета U1, U2, …, Uw вырабатывается результат в виде унитарного кода «1 из N» - единичный сигнал будет установлен только на одном выходе соответствующем высшему (старшему) приоритету. Старший приоритет в каждой из w групп приоритета U1, U2, …, Uw присвоен разряду со старшим номером.
1
2
N
Далее в соответствии со значениями w групп приоритета U1, U2, …, Uw на выходы группы из N коммутаторов данных 4, 4, …, 4 передаются не более w соответствующих ненулевых символов входных данных ID с внутренней шины данных-маски MD.
Одновременно также осуществляется запись в регистр RM2 текущей маски 15 нового значения с внутренней шины приоритета MS, в которой исключены w разрядов старших единичных значений, которые соответствуют обработанным ненулевым символам первой группы ID11, а единичные значения шины приоритета MS соответствуют следующим ненулевым символам последовательности.
1
2
N
На следующем такте в соответствии с единичными значениями N разрядов текущего кода с внутренней шины маски символов М проводится запись с внутренней шины данных-маски MD до w входных ненулевых символов по k разрядов, соответствующие w единичным значениям, начиная со старших разрядов текущей маски символов М, и нулевые значения символов, соответствующие единичным значениям, превышающим w, начиная со старших разрядов текущей маски символов М, в соответствующие регистры 5, 5, …, 5.
1
2
N
Одновременно с шины входных данных 1 проводится прием следующих значений элементов упакованной (сжатой) последовательности данных во входной регистр данных 2. Далее аналогично проводится восстановление данных и осуществляется прием до w следующих входных ненулевых символов по k разрядов в соответствующие регистры 5, 5, …, 5, в соответствии со значениями разрядов текущей маски символов М.
Если на текущем такте обработаны все единичные значении разрядов текущей маски символов М, то нулевые значения устанавливаются во всех разрядах внутренней шины приоритета MS на выходах многовыходного блока FU приоритета 3, формируется единичное значение флага нуля FZ=1 и на следующем такте единичное значение устанавливается на выходе D-триггера 10.
Кроме того, для каждых новых входных данных DD на первом такте первичное значение маски символов IM, соответствующее всем V ненулевым символам из N входных символов до упаковки (сжатия), записывается в регистр RM1 общей маски 9 при единичном значении на выходе D-триггера 10.
1
2
N
1
2
N
1
2
N
В каждом такте, в соответствии с единичными значениями разрядов регистра RM1 общей маски 9, на выходы N групп по k элементов 2И 8, 8, …, 8 передаются значения символов QB1, QB2, …, QBN с выходов соответствующих регистров 5, 5, …, 5, или формируются нулевые символы соответствующие нулевым значениям разрядов регистра RM1 общей маски 9. Значения с выходов N групп по k элементов 2И 8, 8, …, 8 поступают на входы символов IQ1, IQ2, …, IQN выходного буфера BQ 6, которые, при единичном значении на выходе D-триггера 10, на следующем такте записываются в выходной буфер BQ 6 и поступают на внешние выходы 13 устройства. При этом N выходных символов по k разрядов восстановленных данных Q1, Q2, …, QN (фиг. 4) соответствуют данным DD до упаковки (сжатия) без потери информации.
Предлагаемое устройство работает следующим образом.
1
2
N
При подаче единичного сигнала на вход 12 синхронной установки R в нулевое состояние по тактовому сигналу С на внешнем входе 11 в нулевое состояние устанавливаются входной регистр RD данных 1, группа из N регистров 5, 5, …, 5, выходной буфер ВQ6, регистр RM1 общей маски 9, D-триггер 10 и регистр RM2 текущей маски 15. При этом нулевые значения также устанавливаются во всех N разрядах внутренней шины приоритета (остаточной маски) MS и внутренней шины общей маски символов QM, на всех выходах многовыходного блока FU приоритета 3 и формируется единичное значение флага нуля FZ=1 на выходе элемента ИЛИ-НЕ 7.
1
2
N
Далее на первом такте во входной регистр RD данных 2 с шины входных данных 1 принимается код первой маски символов IM1. При этом прием в регистры 5, 5, …, 5, и выходной буфер ВQ6 не выполняется, так как у них на входах разрешения СЕ установлены нулевые сигналы, которые поступают с выхода D-триггера 10. Одновременно в единичное состояние устанавливается D-триггер 10, так как установлен флаг нуля FZ=1.
Далее значение маски символов IM1 передается на вход регистра RM1 общей маски 9 и через коммутатор маски КМ 14 на вход регистра RM2 текущей маски 15, прием в которые осуществляется по следующему тактовому сигналу С на внешнем входе 11. При этом одновременно осуществляется прием первой группы ID11 из w входных символов в регистр RD данных 2 с шины IMD входных данных 1.
1
2
N
1
2
N
При этом в соответствии с кодом маски IM1, с выхода регистра RM2 текущей маски 15, на выходах многовыходного блока FU приоритета 3 формируются w групп приоритета U1, U2, …, Uw в порядке старшинства приоритета. На выходах каждой из w групп приоритета U1, U2, …, Uw вырабатывается результат в виде унитарного кода «1 из N» - единичный сигнал будет установлен только на одном выходе соответствующем высшему (старшему) приоритету. В соответствии с единичными значениями сигналов приоритета U1, U2, …, Uw в группе из N коммутаторов данных 4, 4, …, 4 на выходы передаются не более w соответствующих ненулевых символов данных ID11, а на остальных выходах коммутаторов данных 4, 4, …, 4 устанавливаются значения нулевых символов.
1
2
N
Одновременно разряды кода маски QM с выхода регистра RM2 текущей маски 15, передаются на соответствующие одноименные входы СЕ разрешения работы регистров 5, 5, …, 5., прием в которые осуществляется в следующем такте по всем единичным значениям кода общей маски QM. Кроме того, если на текущем такте обработаны все единичные значении разрядов текущей маски символов М или если все разряды входной маски IM имеют нулевые значения, то нулевые значения устанавливаются во всех разрядах внутренней шины приоритета (остаточной маски) MS, которые поступают на выходы многовыходного блока FU приоритета 3 и далее по которым на выходе элемента ИЛИ-НЕ 7 формируется единичное значение флага нуля FZ=1, а при наличии не обработанных единичных разрядов текущей маски символов М формируется нулевое значение флага нуля FZ=0.
1
2
N
По следующему тактовому импульсу С в соответствии с единичными значениями разрядов кода текущей маски М проводится запись в соответствующие регистры 5, 5, …, 5 до w входных ненулевых символов по k разрядов с шины текущей маски М, начиная со старших разрядов текущей маски символов М, и нулевые значения символов, соответствующие единичным значениям текущей маски символов М, превышающим w. При этом также осуществляется запись в регистр RM2 текущей маски 15 нового значения с внутренней шины приоритета (остаточной маски) MS, в которой исключены w разрядов старших единичных значений, которые соответствуют обработанным ненулевым символам первой группы ID11, а единичные значения шины приоритета MS соответствуют следующим ненулевым символам элементов входной последовательности.
Кроме того соответствующее значение флага нуля FZ принимается в D-триггер 10, который управляет коммутатором КМ маски 14. Одновременно осуществляется прием во входной регистр 2 следующих данных ID или маски символов IM с шины входных данных 1.
1
2
N
Далее аналогично, как в предыдущих тактах, проводится анализ следующих единичных разрядов кода текущей маски М и в группе из N коммутаторов данных 4, 4, …, 4 на выходы передаются соответствующие следующие w ненулевых символов входных данных ID с внутренней шины MD данных-маски.
1
2
N
1
2
N
1
2
N
Одновременно на каждом такте, в соответствии с единичными значениями разрядов с регистра RM1 общей маски 9 установленными на шине кода маски QM, на выходы N групп по k элементов 2И 8, 8, …, 8 передаются значения символов QB1, QB2, …, QBN с выходов соответствующих регистров 5, 5, …, 5, или формируются нулевые символы соответствующие нулевым значениям разрядов регистра RM1 общей маски 9. Значения с выходов N групп по k элементов 2И 8, 8, …, 8 поступают на входы символов IQ1, IQ2, …, IQN выходного буфера BQ 6, которые, при единичном значении на выходе D-триггера 10, на следующем такте записываются в выходной буфер BQ 6 и поступают на внешние выходы 13 устройства. При этом N выходных символов по к разрядов восстановленных данных Q1, Q2, …, QN (фиг. 4) соответствуют данным DD до упаковки (сжатия) без потери информации.
В потактовой временной диаграмме на фиг. 5 приведен пример последовательности наборов входных данных для DD1, …, DD5, элементы последовательности кодов на входе устройства после упаковки (сжатия), содержащие коды маски IM и коды наборов символов ID, и восстановление сжатых данных в предлагаемом устройстве, при количестве входных символов N=16 по k=4 разрядов и количестве символов w=4 во входных данных ID. На фиг. 5 в скобках указана форма представления данных - двоичная (2) или шестнадцатеричная (16).
В такте 1 шестнадцать символов первых данных DD1 до упаковки (сжатия) содержат четыре ненулевых символа (В, А, 5, 2), которые далее сжимаются, и формируется соответствующая маска IM1=0С24, и далее код маски и данные последовательно поступают по входной шине IMD данных-маски 1 в предлагаемое устройство. В такте 1 сначала поступает код маски IM1=0С24, который принимается во входной регистр 2 в такте 2 и передается на внутреннюю шину маски-данных MD. Далее код маски IM1=0С24 передается на вход регистр RM1 общей маски 9 и при единичном значении ТСЕ=1 на выходе D-триггера 10 также передается на вход регистра RM2 текущей маски 15, прием в которые осуществляется в такте 3. При этом устанавливается нулевое значение флага нуля FZ=0, которое на такте 3 передается на выход ТСЕ=0 D-триггера 10.
1
2
16
1
2
16
Одновременно на такте 3 в соответствии со значением кода маски IM1=0С24 с выхода регистра RM2 текущей маски 15 многовыходной блок FU приоритета 3 формирует w групп приоритета U1=0800, U2=0400, U3=0020, U4=0004, по которым проводится восстановление данных в группе из N=16 коммутаторов данных 4, 4, …, 4, а затем результаты восстановления в такте 4 записываются в регистры 5, 5, …, 5 (QB1, QB2, …, QB16). При этом также код MS=0000, с внутренней шины приоритета (остаточной маски) MS, проходит через коммутатор КМ маски 14, так как нулевое состояние установлено на выходе ТСЕ=0 D-триггера 10, и который на такте 4 записывается в регистр RM2 текущей маски 15. При этом устанавливается единичное значение флага нуля FZ=1, которое далее устанавливает в единичное значение ТСЕ=1 выход D-триггера 10 в такте 5.
1
2
16
1
2
16
Одновременно на такте 4 в соответствии с единичными значениями разрядов QM=0C24 регистра RM1 общей маски 9, на выходы N групп по k элементов 2И 8, 8, …, 8 передаются значения символов QB1, QB2, …, QB16 с выходов соответствующих регистров 5, 5, …, 5, которые поступают на входы IQ1, IQ2, …, IQ16 выходного буфера 6 и восстановленные данные (В, А, 5, 2) записываются на следующем такте 5 в выходной буфер 6 и поступают на внешние выходы 13 соответствующих выходных символов Q1, Q2, …, Q16 (QD1 на фиг. 5), при единичном значении на выходе D-триггера 10. Таким образом, распаковка входных данных DDI, содержащих маску IM1=0С24 и четыре ненулевых символа ID1=ВА52, поступивших на тактах 1 и 2, проведена за четыре такта.
1
2
16
1
2
N
В такте 3 вторые данные DD2 до компрессии содержат все нулевые символы. Поэтому формируются нулевые разряды маски IM21=0000, которые в такте 4 записываются во входной RD регистр 2 и поступают на шину маски-данных MD, а далее при единичном значении ТСЕ=1 на выходе D-триггера 10 проходят через коммутатор КМ маски 14 и принимаются в регистр RM2 текущей маски 15, а также в регистр RM1 общей маски 9. При этом на всех выходах U1-U4 блока FU приоритета 3 формируются нулевые значения. Поэтому в такте 5 не проводится запись в регистры 5, 5, …, 5, в которых сохраняется предыдущая информация. Но так как в регистре RM1 общей маски 9 установлена нулевая информация, то на выходах элементов 2И 8, 8, …, 8 также устанавливаются нулевые значения кодов символов, поэтому на входах IQ1, IQ2, …, IQ16 выходного буфера BQ 6 также формируются нулевые значения, которые записываются в такте 6 в выходной буфер BQ 6 (QD2 все нули на фиг. 5).
В такте 4 третьи данные DD3 содержат восемь ненулевых символов (Е, В, 9, 8, 7, 6, 3, 1), которые сжимаются и формируется соответствующая им общая маска IM3=4В6А, содержащая восемь единичных разрядов для всех ненулевых символов. Код маски IM3=4В6А в такте 4 поступает по входной шине IMD данных-маски 1, принимается во входной RD регистр 2 и в такте 5 и передается на внутреннюю шину маски-данных MD. Далее код маски IM3=4В6А передается на вход регистра RM1 общей маски 9 и при единичном значении ТСЕ=1 на выходе D-триггера 10 также передается на вход регистра RM2 текущей маски 15. Прием в регистры 9 и 15 осуществляется в такте 6. Одновременно в такте 5 устанавливается нулевое значение флага нуля FZ=0, которое в такте 6 устанавливает значение ТСЕ=0 на выходе D-триггера 10.
1
2
16
1
2
16
1
2
16
Одновременно в такте 5 на входную шину IMD данных-маски 1 поступает код ID31=EB98 соответствующий первым четырем ненулевым символам, а в такте 6 поступает код ID32=7631 соответствующий вторым четырем ненулевым символам третьих данных DD3. При этом одновременно на такте 6 для кода текущей маски М=4В6А с регистра RM2 текущей маски 15 передается в многовыходной блок FU приоритета 3 и формируются w=4 групп приоритета U1=4000, U2=0800, U3=0200, U4=0100, по которым проводится восстановление данных ID31=EB98 в группе из N=16 коммутаторов данных 4, 4, …, 4, а затем результаты восстановления в такте 7 записываются в восемь соответствующих регистров 5, 5, …, 5 (QB1, QB2, …, QB16) в соответствии с текущей маской IM3=4В6А с регистра RM2 текущей маски 15. При этом в регистры 5, 5, …, 5 соответствующие четырем младшим единичным разрядам маски будут записаны нулевые значения, а в разрядах, соответствующим всем нулевым значениям кода текущей маски М=4В6А, сохраняются предыдущие значения.
1
2
16
1
2
16
Одновременно в такте 6 код MS=006A, с внутренней шины приоритета (остаточной маски) MS, проходит через коммутатор КМ маски 14, так как установлено значение ТСЕ=0 на выходе D-триггера 10, и на такте 7 записывается в регистр RM2 текущей маски 15 и устанавливается код текущей маски М=006А. Поэтому в такте 7 для кода текущей маски М=006А, с выхода регистра RM2 текущей маски 15, в многовыходном блоке FU приоритета 3 формируются w=4 групп приоритета U1=0040, U2=0020, U3=0008, U4=0002, по которым проводится восстановление данных ID32=7631 в группе из N=16 коммутаторов данных 4, 4, …, 4, а затем результаты восстановления в такте 8 записываются в восемь соответствующих регистров 5, 5, …, 5 (QB1, QB2, …, QB16) в соответствии с кодом текущей маски М=006А с регистра RM2 текущей маски 15. Одновременно в такте 7 формируется нулевой код остаточной маски MS=0000, по которому формируется единичное значение флага нуля FZ=1 и далее в такте 8 в единичное состояние ТСЕ=1 устанавливается на выходе D-триггера 10, который разрешает прием следующего кода маски IM4=1610 для четвертых данных DD4.
1
2
16
1
2
16
Кроме того на такте 8 в соответствии с единичными значениями разрядов QM=4B6A регистра RM1 общей маски 9, на выходы N групп по k элементов 2И 8, 8, …, 8 передаются значения символов QB1, QB2, …, QB16 с выходов соответствующих регистров 5, 5, …, 5, которые поступают на входы IQ1, IQ2, …, IQ16 выходного буфера BQ 6 и восстановленные данные ненулевых символов (Е, В, 9, 8, 7, 6, 3, 1) записываются на следующем такте 9 в выходной буфер 6, при единичном значении ТСЕ=1 на выходе D-триггера 10, и поступают на внешние выходы 13 соответствующих выходных символов Q1, Q2, …, Q16 (QD3 на фиг. 5).
Одновременно в такте 7 четвертые данные DD4, содержащие четыре ненулевых символов (А, С, F, 4), сжимаются и формируется соответствующая общая маска IM4=1610 содержащая четыре единичных разряда для всех ненулевых символов. Код маски IM4=1610 в такте 8 принимается во входной регистр RD2 и с выходов передается на внутреннюю шину маски-данных MD. Далее код маски IM4=1610 передается на вход регистра RM1 общей маски 9 и при единичном значении ТСЕ=1 на выходе D-триггера 10 также передается на вход регистра RM2 текущей маски 15, прием в которые осуществляется в такте 9. Одновременно в такте 8 устанавливается нулевое значение флага нуля FZ=0, так как на выходе коммутатора маски КМ 14 установлен код общей маски IM4=1610, а в такте 9 нулевое состояние устанавливается на выходе ТСЕ=0 D-триггера 10. Одновременно в такте 9 осуществляется прием группы входных символов ID41=ACF4 в регистр RD данных 2 с шины входных данных 1.
1
2
16
1
2
16
В такте 9 в соответствии со значением кода маски IM4=1610 с выхода регистра RM2 текущей маски 15 многовыходной блок FU приоритета 3 формирует w групп приоритета U1=1000, U2=0400, U3=0200, U4=0010, по которым проводится восстановление данных в группе из N=16 коммутаторов данных 4, 4, …, 4, а затем результаты восстановления в такте 10 записываются в соответствующие регистры 5, 5, …, 5 (QB1, QB2, …, QB16). При этом с внутренней шины приоритета (остаточной маски) MS, код MS=0000 проходит через коммутатор КМ маски 14,так как нулевое состояние установлено на выходе ТСЕ=0 D-триггера 10, и устанавливается единичное значение флага нуля FZ=1, по которому в такте 10 единичное состояние устанавливается на выходе ТСЕ=1 D-триггера 10.
1
2
16
1
2
16
Одновременно в такте 10 в соответствии с единичными значениями разрядов QM=1610 регистра RM1 общей маски 9, на выходы N групп по k элементов 2И 8, 8, …, 8 передаются значения символов QB1, QB2, …, QB16 с выходов соответствующих регистров 5, 5, …, 5, которые поступают на входы IQ1, IQ2, …, IQ16 выходного буфера BQ 6 и восстановленные данные (А, С, F, 4), записываются на следующем такте 11 в выходной буфер BQ 6 и поступают на внешние выходы 13 соответствующих выходных символов Q1, Q2, …, Q16 (QD4 на фиг. 5), при единичном значенииТСЕ=1 на выходе D-триггера 10.
1
2
16
1
2
N
Кроме того в такте 9 для пятых данных DD5, которые содержат все нулевые символы, формируются нулевые разряды маски IM5=0000, которые в такте 10 записываются во входной RD регистр 2 и поступают на шину маски-данных MD, а далее при единичном значении ТСЕ=1 на выходе D-триггера 10 проходят через коммутатор КМ маски 14 и принимаются в регистр RM2 текущей маски 15, а также в регистр RM1 общей маски 9. При этом на всех выходах блока FU приоритета 3 формируются нулевые значения, поэтому в такте 11 не проводится запись в регистры 5, 5, …, 5, в которых сохраняется предыдущая информация. Но, так как в регистре RM1 общей маски 9 установлена нулевая информация, то на выходах элементов 2И 8, 8, …, 8 также устанавливаются нулевые значения кодов символов, поэтому на входах IQ1, IQ2, …, IQ16 выходного буфера BQ 6 также формируются нулевые значения, которые записываются в такте 12 в выходной буфер BQ 6 и поступают на внешние выходы 13 соответствующих выходных символов Q1, Q2, …, Q16 (QD5 все нули на фиг. 5), при единичном значении ТСЕ=1 на выходе D-триггера 10.
Таким образом, вышеизложенные сведения позволяют сделать вывод, что предлагаемое устройство решает поставленную задачу по распаковке данных без потери информации. При этом N выходных символов по k разрядов восстановленных данных Q1, Q2, …, QN соответствуют данным DD до упаковки (сжатия) без потери информации.
В сравнении с прототипом в предлагаемом устройстве сокращается разрядность входных данных за счет исключения внешней N разрядной шины маски символов IM. При этом также сокращается объем памяти для хранения данных после упаковки и объем передаваемой информации.
Таким образом, вышеизложенные сведения позволяют сделать вывод, что предлагаемое устройство обеспечивает распаковку входных данных без потерь, обладает регулярностью узлов и связей, простотой конструкции и устройство соответствует заявляемому техническому результату - сокращение разрядности входных данных и уменьшение объема памяти для хранения последовательности групп входных данных двоичных символов.