RU2117388C1 - Data coding and decoding method and device - Google Patents

Data coding and decoding method and device Download PDF

Info

Publication number
RU2117388C1
RU2117388C1 RU95116587A RU95116587A RU2117388C1 RU 2117388 C1 RU2117388 C1 RU 2117388C1 RU 95116587 A RU95116587 A RU 95116587A RU 95116587 A RU95116587 A RU 95116587A RU 2117388 C1 RU2117388 C1 RU 2117388C1
Authority
RU
Russia
Prior art keywords
data
decoding
binary
code
codeword
Prior art date
Application number
RU95116587A
Other languages
Russian (ru)
Other versions
RU95116587A (en
Inventor
Л.Шварц Эдвард
Дж.Гормиш Майкл
Д.Аллен Джеймс
Болиек Мартин
Original Assignee
Рикох Компани, Лтд.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Рикох Компани, Лтд. filed Critical Рикох Компани, Лтд.
Publication of RU95116587A publication Critical patent/RU95116587A/en
Application granted granted Critical
Publication of RU2117388C1 publication Critical patent/RU2117388C1/en

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Abstract

FIELD: coding devices designed for data compacting systems incorporating decoding device for decoding information generated by coding device. SUBSTANCE: coding device has encoder used to generate code word information in response to data. Coding device also incorporates re- ordering unit generating stream of coded data in response to code word information arriving from encoder. Re-ordering unit has run count re-ordering sub-unit designed to arrange code words in coding sequence and binary digit arrangement sub-unit for aggregating variable-length code words with fixed length alternation and for submitting these fixed- length words in sequence required by decoding device. EFFECT: provision for precise recovery of original data. 121 cl, 33 dwg

Description

Эта заявка на патент является частично продолжающей заявку на патент США N 08/172646 под названием "Способ и устройство параллельного кодирования и декодирования данных" от 23 декабря 1993 г., которая, в свою очередь, является частично продолжающей заявку на патент США N 08/016035 под названием "Способ и устройство параллельного декодирования и кодирования данных" от 10 февраля 1993 г. This patent application is partly continuing the application for US patent N 08/172646 under the name "Method and device for parallel encoding and decoding of data" dated December 23, 1993, which, in turn, is partly continuing the application for US patent N 08 / 016035 entitled "Method and device for parallel decoding and encoding of data" dated February 10, 1993

Изобретение относится к системам уплотнения и разуплотнения данных, в частности к способу и устройству параллельного кодирования и декодирования данных в системах уплотнения-разуплотнения. The invention relates to data compression and decompression systems, in particular, to a method and apparatus for parallel encoding and decoding of data in compression-decompression systems.

В настоящее время широко используется уплотнение данных, в частности, для хранения и передачи больших объемов данных. Из уровня техники известно много различных методов уплотнения данных. Методы уплотнения можно разделить на две категории: кодирование с потерями и кодирование без потерь. Кодирование с потерями включает в себя кодирование, приводящее в результате к потере информации, вследствие чего не гарантируется точное восстановление первоначальных данных. При уплотнении без потерь вся информация сохраняется, а данные уплотняются так, чтобы обеспечить точное восстановление. Currently, data compression is widely used, in particular, for storing and transmitting large amounts of data. Many different data compression techniques are known in the art. Compaction methods can be divided into two categories: lossy coding and lossless coding. Lossy coding includes coding, resulting in loss of information, as a result of which accurate restoration of the original data is not guaranteed. With lossless compression, all information is saved, and data is compressed so as to ensure accurate recovery.

При уплотнении без потерь входные символы преобразуются в выходные кодовые слова. Если уплотнение осуществлено успешно, кодовые слова представляются меньшим количеством двоичных разрядов, чем количество входных символов. Способы кодирования без потерь включают в себя словарные способы кодирования (например, способ Lempel-Ziv (Лемпел-Зива), кодирование неравномерным кодом, перечисляющим кодом и статистическим кодом. With lossless multiplexing, input characters are converted to output codewords. If summarization is successful, codewords are represented by fewer bits than the number of input characters. Lossless coding methods include vocabulary coding methods (for example, the Lempel-Ziv method), coding with an uneven code, an enumerating code, and a statistical code.

К кодированию статистическим кодом относится любой способ кодирования без потерь, в котором стремятся уплотнить данные близко к предельной энтропии, используя известные или прогнозируемые вероятности символов. Статистические коды включают в себя коды Хаффмена, арифметические коды и двоичные статистические коды. Устройства кодирования двоичным статистическим кодом являются кодирующими устройствами без потерь, которые действуют на основе бинарных решений (да-нет), часто определяемых как наиболее вероятный символ (БВС) и наименее вероятный символ (МВС). Примеры бинарных статистических кодирующих устройств включают в себя Q-кодер фирмы IBM и кодирующее устройство, называемое B-кодером. Дополнительную информацию о B-кодере можно найти в патенте США N 5272478 на "Способ и устройство кодирования статистическим кодом", выданном Дж.Д.Аллену 21 декабря 1993 г. и принадлежащем тому же заявителю, что и настоящее изобретение (см. также работу М.Дж.Гормиша и Дж.Д. Аллена "Двоичное кодирование статистическим кодом конечного автомата", кратко изложенную в трудах Конференции по способам уплотнения данных, опубликованных 30 марта 1993 г. в г.Сноубид, штат Юта, с.449). B-кодер представляет собой устройство двоичного статистического кодирования, в котором для уплотнения используется конечный автомат (автомат с конечным числом состояний). Statistical code coding refers to any lossless coding method in which they seek to compress data close to the limiting entropy using known or predicted symbol probabilities. Statistics codes include Huffman codes, arithmetic codes, and binary statistics codes. Encoding devices with a binary statistical code are lossless encoding devices that operate on the basis of binary solutions (yes-no), often defined as the most probable character (BWS) and the least probable character (MBC). Examples of binary statistical encoders include an IBM Q encoder and an encoder called a B encoder. Further information on the B encoder can be found in US Pat. No. 5,272,478 to "Method and apparatus for encoding a statistical code" issued by J. D. Allen on December 21, 1993 and owned by the same applicant as the present invention (see also work M .J. Gormish and JD Allen, “Binary Encoding with a State Machine Statistical Code,” summarized in the proceedings of the Conference on Data Compression Methods, published March 30, 1993 in Snowbid, Utah, p.449). A B-encoder is a binary statistical encoding device in which a state machine (a machine with a finite number of states) is used for compression.

На фиг.1 показана блок-схема известной из уровня техники системы уплотнения и разуплотнения, в которой используется устройство двоичного статистического кодирования. Для кодирования данные вводят в контекстную модель 101 (КМ). КМ 101 преобразует входные данные в ряд или последовательность двоичных решений и обеспечивает контекстный элемент для каждого решения. Как последовательность двоичных решений, так и связанные с ними контекстные элементы выводятся из КМ 101 в модуль оценки вероятности (МОВ) 102. МОВ 102 принимает каждый контекстный элемент и вырабатывает оценку вероятности для каждого двоичного решения. Действительная оценка вероятности обычно представляется классом, обозначаемым P-классом. Каждый P-класс используется для диапазона вероятностей. МОВ 102, кроме того, определяет, находится ли двоичное решение (результат) в его наиболее вероятном состоянии или нет (то есть соответствует ли решение БВС). Модуль генератора последовательности бит (ГПБ) 103 принимает сигналы оценки вероятности (то есть P-класс) и определения того, насколько вероятно двоичное решение в качестве входных сигналов. В ответ на это модуль ГПБ 103 создает последовательность уплотненных данных, формируя на выходе нулевые или ненулевые биты для представления первоначальных входных данных. Figure 1 shows a block diagram of a prior art compression and decompression system in which a binary statistical encoding device is used. For encoding, data is entered into the context model 101 (CM). KM 101 converts the input into a series or sequence of binary decisions and provides a context element for each decision. Both the sequence of binary decisions and the contextual elements associated with them are output from CM 101 to the probability estimation module (MOB) 102. MOB 102 receives each context element and generates a probability estimate for each binary decision. A valid probability estimate is usually represented by a class denoted by a P-class. Each P-class is used for a range of probabilities. MOB 102, in addition, determines whether the binary solution (result) is in its most probable state or not (that is, whether the BVS solution matches). The Bit Sequence Generator (GPB) module 103 receives probability estimation signals (i.e., P-class) and determines how likely the binary solution is as input signals. In response to this, the GPU module 103 creates a sequence of compressed data, generating zero or nonzero bits at the output to represent the original input data.

Для декодирования КМ 104 обеспечивает для МОВ 105 контекстный элемент, а МОВ 105 на основании контекстного элемента обеспечивает класс вероятности (P-класс) для модуля ГПБ 106. Модуль ГПБ 106 подсоединен для приема класса вероятности. В ответ на класс вероятности и уплотненные данные модуль ГПБ 106 возвращает двоичный разряд, символизирующий, соответствует ли двоичное решение (то есть событие) в его наиболее вероятном состоянии или нет. МОВ 105 принимает этот двоичный разряд, обновляет оценку вероятности, основываясь на принятом двоичном разряде, и возвращает результат в КМ 104. КМ 104 принимает возвращаемый двоичный разряд и использует этот возвращенный двоичный разряд для генерирования исходных данных и обновления контекстного элемента для следующего двоичного решения. For decoding, KM 104 provides a context element for MOB 105, and MOB 105, based on the context element, provides a probability class (P-class) for the GPU module 106. The GPU module 106 is connected to receive a probability class. In response to the probability class and compressed data, the GPU module 106 returns a binary digit, symbolizing whether the binary solution (i.e., the event) corresponds to its most probable state or not. MOB 105 receives this binary bit, updates the probability estimate based on the received binary bit, and returns the result to CM 104. CM 104 receives the returned binary bit and uses this returned binary bit to generate the source data and update the context element for the next binary decision.

Одна из проблем, возникающих при использовании декодеров двоичных статистических кодов, типа Q-кодера и B-кодера фирмы IBM, заключается в их низком быстродействии, даже при реализации аппаратными средствами. Их функционирование основано на использовании одной большой медленнодействующей цепи обратной связи. Чтобы повторно запустить процесс декодирования, в контекстной модели используются последние декодированные данные для создания контекста. В модуле оценки вероятности контекст используется для создания класса вероятности. В генераторе последовательности двоичных разрядов используются класс вероятности и уплотненные данные для определения, представляет ли следующий двоичный разряд вероятный или невероятный результат. В модуле оценки вероятности используется вероятный/невероятный результат для выработки двоичного разряда результата (и для обновления оценки вероятности контекста). Двоичный разряд результата используется в контекстной модели для обновления архива последних данных. Все эти этапы требуются для декодирования единственного двоичного разряда. Поскольку контекстная модель должна ожидать двоичного разряда результата для обновления ее архива данных, причем может обеспечить следующий контекст, необходимо ожидать декодирования следующего двоичного разряда. Желательно исключить ожидание замыкания петли обратной связи до декодирования следующего двоичного разряда. Другими словами, желательно одновременно декодировать более одного двоичного разряда или кодового слова для увеличения скорости декодирования уплотненных данных. One of the problems encountered when using binary statistic code decoders, such as the Q-encoder and IBM B-encoder, is their low speed, even when implemented in hardware. Their operation is based on the use of one large slow-acting feedback circuit. To restart the decoding process, the context model uses the latest decoded data to create the context. In the probability estimation module, context is used to create a probability class. The binary sequence generator uses a probability class and summarized data to determine if the next binary bit represents a likely or unbelievable result. The probability estimation module uses a probable / improbable result to generate a binary digit of the result (and to update the context probability estimate). The binary digit of the result is used in the context model to update the archive of the latest data. All of these steps are required to decode a single bit. Since the context model must expect a binary digit of the result to update its data archive, and can provide the following context, it is necessary to expect decoding of the next binary digit. It is advisable to avoid waiting for the feedback loop to close before decoding the next bit. In other words, it is desirable to simultaneously decode more than one binary bit or codeword to increase the decoding rate of the compressed data.

Другая проблема, связанная с декодерами двоичных статистических кодов, заключается в том, что нужно обрабатывать данные переменной длины. В большинстве систем декодируемые кодовые слова имеют переменные длины. Либо другие системы кодируют символы переменной длины (некодированные данные). При обработке данных переменной длины необходимо смещать данные на уровне двоичного разряда для обеспечения последующих корректных данных для операции декодирования или кодирования. Эти манипулирования на уровне двоичного разряда в потоке данных могут потребовать применения дорогостоящего и/или медленнодействующего аппаратного и/или программного обеспечения. Кроме того, в известных системах требуется, чтобы это смещение осуществлялось в петлях обратной связи, критичных к времени, что ограничивает эффективность декодирующего устройства. Также было бы желательно устранить манипулирование уровнем двоичного разряда потока данных из критичных к времени петель обратной связи, чтобы для увеличения быстродействия можно было использовать параллельную обработку. Another problem with binary statistic decoders is that variable length data needs to be processed. In most systems, decoded codewords have variable lengths. Or other systems encode variable-length characters (non-encoded data). When processing data of variable length, it is necessary to shift the data at the binary level to provide subsequent correct data for the decoding or encoding operation. These binary-level manipulations in the data stream may require the use of expensive and / or slow-acting hardware and / or software. In addition, in known systems it is required that this bias be implemented in feedback loops that are time critical, which limits the efficiency of the decoding device. It would also be desirable to eliminate the manipulation of the binary level of the data stream from time-critical feedback loops so that parallel processing could be used to increase speed.

Настоящее изобретение относится к системе уплотнения и разуплотнения без потерь. Кроме того, настоящее изобретение обеспечивает кодирующему и декодирующему устройствам, работающим в реальном масштабе времени, параллельное кодирование и декодирование данных соответственно. Соответствующие настоящему изобретению кодирующее и декодирующее устройства формируют сбалансированную параллельную энтропийную систему, в которой осуществляется как кодирование, так и декодирование в реальном масштабе времени с использованием аппаратных средств с высоким быстродействием и низкой стоимостью. The present invention relates to a lossless sealing and decompression system. In addition, the present invention provides real-time encoding and decoding devices for parallel encoding and decoding of data, respectively. The encoding and decoding devices of the present invention form a balanced parallel entropy system in which both real-time encoding and decoding are performed using hardware with high speed and low cost.

Предлагаются способ и устройство разуплотнения и уплотнения данных. Настоящее изобретение обеспечивает кодирующее устройство для использования в системе уплотнения, имеющей декодирующее устройство, предназначенное для декодирования информации, вырабатываемой кодирующим устройством. Соответствующее настоящему изобретению кодирующее устройство включает в себя кодер, предназначенный для формирования в ответ на данные информации кодовых слов. Кодирующее устройство включает в себя также блок переупорядочивания, который генерирует поток кодированных данных в ответ на поступающую из кодера информацию кодовых слов. A method and apparatus for decompression and data compression are proposed. The present invention provides an encoding device for use in a compaction system having a decoding device for decoding information generated by the encoding device. The encoding apparatus of the present invention includes an encoder for generating codewords information in response to data. The encoding device also includes a reordering unit that generates a stream of encoded data in response to the codeword information received from the encoder.

Переупорядочивающий блок содержит в себе блок переупорядочивания счета прогонов, предназначенный для расположения кодовых слов в порядке декодирования, и блок компоновки двоичных разрядов для объединения кодовых слов переменной длины в слова с чередованием фиксированной длины и для выдачи слов с чередованием фиксированной длины в требуемом декодирующим устройством порядке. The reordering unit includes a run count reordering unit designed to arrange codewords in decoding order, and a binary bit arrangement unit for combining variable-length codewords into words with alternating fixed lengths and for outputting words with alternating fixed lengths in the order required by the decoding device.

Настоящее изобретение будет более понятным из приведенного ниже подробного описания и прилагаемых чертежей различных вариантов осуществления изобретения, которые, однако, приведены не в качестве ограничения изобретения конкретными вариантами его осуществления, а только для объяснения и понимания. The present invention will be better understood from the following detailed description and the accompanying drawings of various embodiments of the invention, which, however, are not given as a limitation of the invention to specific embodiments, but only for explanation and understanding.

Фиг. 1 представляет блок-схему известных двоичных статистических кодирующего и декодирующего устройств; фиг.2 представляет блок-схему соответствующей настоящему изобретению системы декодирования; фиг.3 представляет блок-схему возможного варианта осуществления соответствующей настоящему изобретению системы кодирования; фиг.4 представляет блок-схему возможного варианта осуществления соответствующей настоящему изобретению системы декодирования, в которой осуществляется параллельная обработка контекстных элементов кодированного сигнала; фиг.5 представляет блок-схему возможного варианта осуществления соответствующей настоящему изобретению декодирующей системы, в которой осуществляется параллельная обработка классов вероятности; фиг.6 иллюстрирует соответствующий настоящему изобретению поток с неперемежающимся кодом; фиг.7 иллюстрирует возможный вариант потока информации с перемежающимся кодом, полученного из примерного набора данных; фиг.8 представляет пример таблицы оценки вероятности и генератора последовательности двоичных разрядов для соответствующего изобретению R-кодера; фиг.9 представляет блок-схему возможного варианта осуществления соответствующего изобретению кодирующего устройства; фиг.10 представляет блок-схему возможного варианта осуществления соответствующего изобретению генератора двоичных разрядов; фиг.11 представляет блок-схему возможного варианта осуществления соответствующего изобретению переупорядочивающего блока; фиг. 12 представляет блок-схему возможного варианта осуществления соответствующего настоящему изобретению переупорядочивающего блока счета прогонов; фиг.13 представляет блок-схему другого варианта осуществления соответствующего настоящему изобретению переупорядочивающего блока счета прогонов; фиг. 14 представляет блок-схему возможного варианта осуществления соответствующего настоящему изобретению блока компоновки двоичных разрядов; фиг.15 представляет блок-схему возможного варианта осуществления соответствующей настоящему изобретению логической схемы компоновки; фиг.16 представляет блок-схему соответствующего настоящему изобретению генератора двоичных разрядов кодирующего устройства; фиг.17 представляет блок-схему возможного варианта осуществления соответствующей настоящему изобретению системы декодирования; фиг. 18 представляет блок-схему соответствующего настоящему изобретению декодирующего устройства; фиг. 19 представляет блок-схему возможного варианта осуществления соответствующей настоящему изобретению структуры обратного магазинного типа (FIFO); фиг.20 иллюстрирует возможный вариант осуществления соответствующей настоящему изобретению конвейерной обработки декодирования; фиг.21 иллюстрирует возможный вариант осуществления соответствующего настоящему изобретению декодирующего устройства; фиг.22 представляет блок-схему возможного варианта осуществления соответствующего настоящему изобретению сдвигающего устройства; фиг.23 представляет блок-схему другого варианта осуществления соответствующего настоящему изобретению сдвигающего устройства; фиг. 24 представляет блок-схему системы, имеющей внешнюю контекстную модель; фиг. 25 представляет блок-схему другой системы, имеющей внешнюю контекстную модель; фиг. 26 представляет блок-схему возможного варианта осуществления соответствующего настоящему изобретению декодирующего устройства; фиг.27 представляет блок-схему возможного варианта осуществления декодирующего устройства с отдельными генераторами двоичных разрядов; фиг.28 представляет блок-схему возможного варианта осуществления соответствующего настоящему изобретению генератора двоичных разрядов; фиг.29 представляет блок-схему возможного варианта осуществления настоящего изобретения блока длительного прогона; фиг. 30 представляет блок-схему возможного варианта осуществления настоящего изобретения блока короткого прогона; фиг.31 представляет блок-схему возможного варианта осуществления соответствующей настоящему изобретению логической схемы инициализации и управления; фиг.32 представляет блок-схему возможного варианта осуществления переупорядочивания данных с использованием декодирующего устройства слежения: фиг.33 представляет блок-схему другого варианта осуществления переупорядочивающего блока; фиг.34 представляет блок-схему другого варианта осуществления переупорядочивающего блока, в котором используется объединенная очередность; фиг.35 представляет блок-схему системы с широкой полосой, в которой используется настоящее изобретение; фиг. 36 представляет блок-схему системы согласования полос, в которой используется настоящее изобретение; фиг.37 представляет блок-схему телевизионной системы, работающей в реальном масштабе времени, в которой используется настоящее изобретение; фиг.38 иллюстрирует возможный вариант осуществления соответствующего настоящему изобретению запоминающего устройства кодированных данных; фиг.39 представляет соответствующую настоящему изобретению временную диаграмму декодирования. FIG. 1 is a block diagram of known binary statistical encoding and decoding devices; 2 is a block diagram of a decoding system according to the present invention; 3 is a block diagram of a possible embodiment of a coding system according to the present invention; FIG. 4 is a block diagram of a possible embodiment of a decoding system according to the present invention, in which parallel processing of context elements of an encoded signal is performed; 5 is a block diagram of a possible embodiment of a decoding system according to the present invention in which probability classes are processed in parallel; 6 illustrates a non-intermittent code stream according to the present invention; FIG. 7 illustrates a possible embodiment of an interleaved code information stream obtained from an exemplary data set; FIG. Fig. 8 is an example of a probability estimation table and a binary sequence generator for an R-encoder according to the invention; Fig. 9 is a block diagram of a possible embodiment of an encoding device according to the invention; 10 is a block diagram of a possible embodiment of a binary digit generator according to the invention; 11 is a block diagram of a possible embodiment of a reordering block according to the invention; FIG. 12 is a block diagram of a possible embodiment of a reordering run counting unit according to the present invention; 13 is a block diagram of another embodiment of a reordering run counting unit according to the present invention; FIG. 14 is a block diagram of a possible embodiment of a binary digitization unit of the present invention; FIG. 15 is a block diagram of a possible embodiment of a layout logic in accordance with the present invention; FIG. FIG. 16 is a block diagram of an encoder according to the present invention; 17 is a block diagram of a possible embodiment of a decoding system according to the present invention; FIG. 18 is a block diagram of a decoding apparatus of the present invention; FIG. 19 is a block diagram of a possible embodiment of a Reverse Shop Type (FIFO) structure according to the present invention; FIG. 20 illustrates a possible embodiment of a decoding pipeline according to the present invention; FIG. 21 illustrates a possible embodiment of a decoding apparatus according to the present invention; FIG. 22 is a block diagram of a possible embodiment of a shifting device according to the present invention; FIG. 23 is a block diagram of another embodiment of a shifting device according to the present invention; FIG. 24 is a block diagram of a system having an external context model; FIG. 25 is a block diagram of another system having an external context model; FIG. 26 is a block diagram of a possible embodiment of a decoding apparatus of the present invention; Fig.27 is a block diagram of a possible embodiment of a decoding device with separate binary generators; FIG. 28 is a block diagram of a possible embodiment of a binary digit generator according to the present invention; FIG. Fig.29 is a block diagram of a possible embodiment of the present invention block long run; FIG. 30 is a block diagram of a possible embodiment of the present invention of a short run block; FIG. 31 is a block diagram of a possible embodiment of an initialization and control logic in accordance with the present invention; FIG. Fig. 32 is a block diagram of a possible embodiment of reordering data using a decoding tracking device: Fig. 33 is a block diagram of another embodiment of a reordering unit; Fig. 34 is a block diagram of another embodiment of a reordering block in which a combined order is used; Fig. 35 is a block diagram of a wide band system using the present invention; FIG. 36 is a block diagram of a band matching system in which the present invention is used; Fig. 37 is a block diagram of a real-time television system using the present invention; Fig. 38 illustrates a possible embodiment of a coded data storage device according to the present invention; Fig. 39 is a decoding timing diagram of the present invention.

Описываются способ и устройство для параллельного кодирования и декодирования данных. В нижеприведенном описании приведены многочисленные специальные детали, такие как определенные количества двоичных разрядов, количества кодеров, специфические вероятности, типы данных и так далее, для того, чтобы обеспечить полное понимание предпочтительных вариантов осуществления настоящего изобретения. Специалистам в данной области техники должно быть ясно, что настоящее изобретение можно осуществлять на практике без этих специфических деталей. Кроме того, известные схемы показаны в форме блок-схем, а не подробно, для большей ясности изложения настоящего изобретения. A method and apparatus for parallel coding and decoding of data are described. In the following description, numerous specific details are given, such as certain numbers of binary bits, number of encoders, specific probabilities, data types, and so on, in order to provide a thorough understanding of the preferred embodiments of the present invention. Those skilled in the art will appreciate that the present invention can be practiced without these specific details. In addition, well-known schemes are shown in the form of flowcharts, and not in detail, for greater clarity of presentation of the present invention.

Некоторые части последующего подробного описания представлены в виде алгоритмов и символических представлений операций с двоичными разрядами данных в памяти вычислительной машины. Эти алгоритмические описания и представления являются средствами, используемыми специалистами в технике обработки данных для более эффективного выражения сути их работы для других специалистов в этой области техники. Алгоритм рассматривается как последовательность этапов обработки, ведущих к требуемому результату. Эти этапы характеризуют собой физические операции над физическими объектами. Эти объекты могут принимать форму электрических или магнитных сигналов, которые можно запоминать, передавать, объединять, сравнивать и осуществлять другие операции. Иногда эти сигналы удобно называть двоичными разрядами, значениями, элементами, символами, знаками, терминами, числами или подобными понятиями. Some parts of the following detailed description are presented in the form of algorithms and symbolic representations of operations with binary bits of data in the memory of a computer. These algorithmic descriptions and representations are the means used by specialists in the data processing technique to more effectively express the essence of their work for other specialists in this technical field. The algorithm is considered as a sequence of processing steps leading to the desired result. These stages characterize physical operations on physical objects. These objects can take the form of electrical or magnetic signals that can be stored, transmitted, combined, compared, and other operations performed. Sometimes these signals are conveniently called binary digits, values, elements, symbols, signs, terms, numbers, or similar concepts.

Однако надо иметь в виду, что все эти и подобные им термины должны быть связаны с соответствующими физическими объектами и просто представляют удобные их обозначения. Если не оговорено особо, как очевидно из последующего описания, то следует понимать, что на всем протяжении настоящего изобретения обсуждения с использованием таких терминов, как "обработка", "вычисление", "расчет", "определение", "отображение" или подобных им, относятся к действию и процессам вычислительной системы или подобного электронного вычислительного устройства, которое манипулирует данными и преобразует данные, представляемые в виде физических (электронных) величин внутри регистров и запоминающих устройств вычислительной системы, в другие данные, подобным образом представляемые в виде физических величин в запоминающих устройствах или регистрах вычислительной системы или других таких запоминающих, передающих или отображающих информацию устройствах. However, it must be borne in mind that all these and similar terms should be associated with the corresponding physical objects and simply represent their convenient notation. Unless otherwise noted, as is apparent from the following description, it should be understood that throughout the present invention, discussions are used using terms such as "processing", "calculation", "calculation", "definition", "display" or the like , relate to the operation and processes of a computing system or similar electronic computing device that manipulates data and converts data represented as physical (electronic) quantities inside registers and storage devices of computing systems Into other data similarly represented as physical quantities within the registers or memories of the computing system or other such storage, transmission or display information devices.

Настоящее изобретение касается также устройства, предназначенного для осуществления в нем операций. Это устройство может быть специально создано для требуемых целей или оно может содержать в себе универсальную вычислительную машину, избирательно приводимую в действие или реконфигурируемую с помощью компьютерной программы, хранящейся в вычислительной машине. Имеющиеся в нем алгоритмы и индикаторы по своей природе не связаны с какой-либо особой вычислительной машиной или другим устройством. Различные универсальные вычислительные машины можно использовать с программами в соответствии с излагаемыми здесь положениями или может оказаться удобным создание специализированного устройства для выполнения требуемых этапов этого способа. Из представленного ниже описания будет ясна необходимая структура этих различных вычислительных машин. Кроме того, настоящее изобретение описывается без ссылки на какой-либо конкретный язык программирования. Следует понимать, что можно использовать разнообразные языки программирования для осуществления изобретения. The present invention also relates to a device for performing operations therein. This device can be specially created for the required purposes, or it can contain a universal computer, selectively driven or reconfigurable using a computer program stored in a computer. The algorithms and indicators available in it are not inherently associated with any particular computing machine or other device. Various universal computers can be used with programs in accordance with the provisions set forth herein, or it may be convenient to create a specialized device to perform the required steps of this method. From the description below, the necessary structure of these various computers will be clear. In addition, the present invention is described without reference to any particular programming language. It should be understood that a variety of programming languages can be used to implement the invention.

Настоящее изобретение предусматривает систему параллельного статистического кодирования. Система включает в себя кодирующее устройство и декодирующее устройство. В одном варианте осуществления изобретения кодирующее устройство осуществляет кодирование данных в реальном масштабе времени. Подобно этому в одном варианте осуществления соответствующее настоящему изобретению декодирующее устройство осуществляет декодирование данных в реальном масштабе времени. Кодирующее и декодирующее устройства в реальном масштабе времени вместе образуют сбалансированную систему кодирования. The present invention provides a parallel statistical coding system. The system includes an encoding device and a decoding device. In one embodiment of the invention, the encoder encodes the data in real time. Similarly, in one embodiment, a decoding apparatus of the present invention decodes real-time data. Real-time encoding and decoding devices together form a balanced coding system.

Настоящее изобретение относится к системе, которая декодирует без потерь параллельно закодированные данные. Данные декодируются параллельно с использованием множества ресурсов декодирования. Каждому из множества ресурсов декодирования выделяются данные (например, кодовые слова) из потока данных для декодирования. Выделение потока данных происходит непрерывно, ресурсы декодирования декодируют данные одновременно, осуществляя тем самым параллельное декодирование потока данных. Для того, чтобы обеспечить возможность такого выделения данных для эффективного использования ресурсов декодирования, поток данных упорядочивается. Этот процесс называется параллелизацией потока данных. Упорядочивание данных позволяет каждому ресурсу (средству) декодирования декодировать некоторые или все кодированные данные, не ожидая обратной связи от контекстной модели. The present invention relates to a system that decodes losslessly encoded data in parallel. Data is decoded in parallel using multiple decoding resources. Each of the plurality of decoding resources is allocated data (eg, codewords) from the data stream for decoding. The allocation of the data stream occurs continuously, the decoding resources decode the data simultaneously, thereby parallel decoding the data stream. In order to enable such data allocation for efficient use of decoding resources, the data stream is streamlined. This process is called data stream parallelization. Data sequencing allows each decoding resource (means) to decode some or all of the encoded data without waiting for feedback from the context model.

На фиг. 2 показана соответствующая настоящему изобретению система декодирования, не использующая медленнодействующую цепь обратной связи, известную из уровня техники. Входной буфер 204 принимает кодированные данные (то есть кодовые слова) и сигнал обратной связи с декодирующего устройства 205 и подает кодированные данные в заранее установленном порядке (например, в порядке контекстного элемента) в соответствующий настоящему изобретению декодер 205, который декодирует кодированные данные. Декодирующее устройство 205 включает в себя множество декодирующих блоков (например, 205A, 205B, 205C и так далее). In FIG. 2 shows a decoding system according to the present invention that does not use the slow feedback loop known in the art. An input buffer 204 receives encoded data (i.e., code words) and a feedback signal from a decoder 205 and supplies the encoded data in a predetermined order (e.g., in a context element order) to a decoder 205 according to the present invention, which decodes the encoded data. Decoding device 205 includes a plurality of decoding units (e.g., 205A, 205B, 205C, and so on).

В одном варианте осуществления изобретения каждый из декодирующих блоков 205A, 205B, 205C и т.д. обеспечивается данными для группы контекстов. Каждый из декодирующих блоков в декодирующем устройстве 205 обеспечивается кодированными данными для каждого контекстного элемента дискретизации в его группе контекстов из входного буфера 204. Используя эти данные, каждый декодирующий блок 205A, 205B, 205C и т.д. формирует декодированные данные для его группы контекстных элементов. Контекстная модель не требуется для связывания кодированных данных с конкретной группой контекстных элементов. In one embodiment, each of the decoding units 205A, 205B, 205C, etc. provided with data for a group of contexts. Each of the decoding blocks in the decoding device 205 is provided with encoded data for each context sampling element in its context group from the input buffer 204. Using this data, each decoding block 205A, 205B, 205C, etc. generates decoded data for its group of contextual elements. A context model is not required to associate encoded data with a particular group of context elements.

Декодирующее устройство 205 посылает декодированные данные в накопитель декодированных данных 207 (например, 207A, 207B, 207C и т.д.). Отметим, что накопитель декодированных данных 207 может хранить промежуточные данные, которые не являются ни кодированными, ни некодированными, типа счетов прогонов. В этом случае накопитель декодированных данных 207 запоминает данные в сжатой, но не в закодированной статистическим кодом форме. The decoding device 205 sends the decoded data to the decoded data storage 207 (e.g., 207A, 207B, 207C, etc.). Note that the decoded data storage 207 may store intermediate data that is neither encoded nor unencoded, such as run accounts. In this case, the decoded data storage 207 stores the data in a compressed, but not in a form encoded by a statistical code.

Работая независимо, контекстная модель 206 подсоединена для приема ранее декодированных данных из накопителя декодированных данных 207 (то есть 207A, 207B, 207C и т.д.) в ответ на сигналы обратной связи, которые она посылает в накопитель декодированных данных 207. Поэтому существуют две независимые цепи обратной связи; одна между декодирующим устройством 205 и входным буфером 204, а вторая между контекстной моделью 206 и накопителем декодированных данных 207. Поскольку большая цепь обратной связи устранена, декодеры в декодирующем устройстве 205 (например, 205A, 205B, 205C и т.д.) способны декодировать связанные с ними кодовые слова, как только они принимают их из входного буфера 204. Operating independently, the context model 206 is connected to receive previously decoded data from the decoded data storage 207 (i.e., 207A, 207B, 207C, etc.) in response to feedback signals that it sends to the decoded data storage 207. Therefore, there are two independent feedback circuits; one between the decoding device 205 and the input buffer 204, and the second between the context model 206 and the decoded data storage 207. Since the large feedback loop is removed, the decoders in the decoding device 205 (for example, 205A, 205B, 205C, etc.) are able to decode their associated codewords as soon as they receive them from the input buffer 204.

Контекстная модель обеспечивает участок памяти системы кодирования и делит набор данных (например, изображения) на различные категории (например, контекстные элементы кодирования данных) на основе запоминающего устройства. В настоящем изобретении контекстные элементы считаются независимыми упорядоченными наборами данных. В одном варианте осуществления каждая группа контекстных элементов кодированных данных имеет свою собственную модель оценки вероятности, а каждый контекстный элемент имеет свое собственное состояние (где модели оценки вероятности разделяются). Следовательно, каждый контекстный элемент кодированных данных может использовать иную модель оценки вероятности и/или генератор последовательности двоичных разрядов. The context model provides a memory portion of the encoding system and divides the data set (e.g., images) into various categories (e.g., context-sensitive data encoding elements) based on a storage device. In the present invention, contextual elements are considered independent ordered data sets. In one embodiment, each group of contextual elements of encoded data has its own probability estimation model, and each contextual element has its own state (where probability estimation models are separated). Therefore, each context element of the encoded data may use a different probability estimation model and / or a binary sequence generator.

Таким образом, данные упорядочиваются или запараллеливаются, и данные из потока данных назначаются индивидуальным декодерам для декодирования. Thus, data is ordered or parallelized, and data from the data stream is assigned to individual decoders for decoding.

Добавление параллелизма к классической модели статистического кодирования. Adding concurrency to the classic statistical coding model.

Для параллелизации потока данных данные можно разделить в соответствии с любой из последовательностей: контекстной, вероятностной, мозаичной, кодовых слов (основанной на кодовых словах) и т.д. Переупорядочивание потока кодированных данных не зависит от параллелизма, способа, используемого для параллелизма данных или вероятности в любой другой точке. На фиг. 3 показано устройство параллельного кодирования соответствующей настоящему изобретению системы кодирования, в которое поступают данные, дифференцированные контекстной моделью (КМ). To parallelize the data stream, data can be divided in accordance with any of the sequences: contextual, probabilistic, mosaic, codewords (based on codewords), etc. The reordering of the encoded data stream is independent of concurrency, the method used for concurrency of data, or probability at any other point. In FIG. 3 shows a parallel coding device of a coding system according to the present invention, into which data differentiated by a context model (CM) is received.

Как показано на фиг.3, параллельное зависимое от контекста кодирующее устройство содержит контекстную модель (КМ) 214, модули оценки вероятности (МОВ) 215-217 и генераторы последовательности бит (ГПБ) 218-220. КМ 214 подсоединена для приема кодированных входных данных. КМ 214 подсоединена также к модулям 215-217. МОВ 215-217, кроме того, связаны с ГПБ 218-220 соответственно, которые дают на выходе кодированные потоки 1, 2 и 3 соответственно. Каждая пара МОВ и ГПБ содержит кодер. Поэтому параллельное кодирующее устройство показано с тремя кодерами. Хотя показаны только три параллельных кодера, можно использовать любое их количество. As shown in FIG. 3, a parallel context-dependent encoder comprises a context model (CM) 214, probability estimation modules (MOBs) 215-217, and bit sequence generators (GPUs) 218-220. KM 214 is connected to receive encoded input data. KM 214 is also connected to modules 215-217. MOB 215-217, in addition, are associated with GPB 218-220, respectively, which yield encoded streams 1, 2, and 3, respectively. Each pair of MOB and GPB contains an encoder. Therefore, a parallel encoder is shown with three encoders. Although only three parallel encoders are shown, any number of them can be used.

КМ 214 делит поток данных на разные контексты таким же образом, как обычная КМ, и посылает множество потоков в параллельные аппаратные средства кодирования. Отдельные контексты или группы контекстов направляются в раздельные модули оценки вероятности (МОВ) 215-217 и генераторы последовательности бит (ГПБ) 218-219. Каждый из ГПБ 218-220 дает на выходе поток кодированных данных. KM 214 divides the data stream into different contexts in the same way as a regular KM, and sends multiple streams to parallel coding hardware. Individual contexts or groups of contexts are routed to separate probability estimation modules (MOBs) 215-217 and bit sequence generators (GPBs) 218-219. Each of GPB 218-220 gives an output stream of encoded data.

На фиг. 4 представлена блок-схема одного варианта осуществления декодирующего устройства соответствующей настоящему изобретению системы декодирования. На фиг.4 показано зависимое от контекста параллельное декодирующее устройство, имеющее ГПБ 221-223, МОВ 224-226 и КМ 227. Кодированные потоки 1-3 подаются на ГПБ 221-223 соответственно. ГПБ 221-223 связаны также с МОВ 224-226 соответственно. МОВ 224-226 подсоединены к КМ 227, которая выдает на выходе реконструированные входные данные. Входной сигнал поступает из нескольких кодовых потоков, показанных в виде кодовых потоков 1-3. Один кодовый поток выделяется каждому МОВ и ГПБ. Каждый из ГПБ 221-223 возвращает двоичный разряд, представляющий выбор из двух альтернатив, в зависимости от того, находится ли в своем наиболее вероятном состоянии, которое МОВ 224-226 использует для возврата декодированных двоичных разрядов (например, выбор из двух альтернатив). Каждый из МОВ 224-226 связан с одним из ГПБ 221-223, показывая, какой код необходимо использовать для выработки потока данных из его входного кодового потока. КМ 227 создает поток декодированных данных путем отбора декодированных двоичных разрядов с генераторов потока бит в надлежащей последовательности, воссоздавая тем самым первоначальные данные. Таким образом, КМ 227 получает двоичный разряд разуплотненных данных из соответственных МОВ и ГПБ, фактически переупорядочивая данные в первоначальный порядок. Отметим, что управление этой схемой проходит в обратном направлении относительно потока данных. ГПБ и МОВ могут декодировать данные до того, как их потребует КМ 227, оставляя впереди один или больше двоичных разрядов. В качестве альтернативы КМ 227 может запрашивать (но не принимать) двоичный разряд с одного ГПБ и МОВ, а затем запрашивать один или больше двоичных разрядов с других ГПБ и МОВ до использования первоначально запрошенного двоичного разряда. In FIG. 4 is a block diagram of one embodiment of a decoding device of a decoding system of the present invention. Figure 4 shows a context-dependent parallel decoding device having a GPB 221-223, MOB 224-226 and KM 227. Coded streams 1-3 are supplied to GPB 221-223, respectively. GPB 221-223 are also associated with MOB 224-226, respectively. MOB 224-226 are connected to KM 227, which provides reconstructed input data at the output. The input signal comes from several code streams shown as code streams 1-3. One codestream is allocated to each MOV and GPB. Each of GPB 221-223 returns a binary bit representing a choice of two alternatives, depending on whether it is in its most probable state, which MOB 224-226 uses to return decoded binary bits (for example, a choice of two alternatives). Each of MOB 224-226 is associated with one of the GPB 221-223, showing which code must be used to generate the data stream from its input code stream. KM 227 creates a decoded data stream by selecting the decoded binary bits from the bit stream generators in the proper sequence, thereby recreating the original data. Thus, KM 227 receives a binary bit of decompressed data from the corresponding MOV and GPB, actually reordering the data in the original order. Note that this circuit is controlled in the opposite direction relative to the data stream. GPB and MOV can decode data before it is required by KM 227, leaving one or more binary bits ahead. Alternatively, KM 227 may request (but not receive) a binary bit from one GPB and MOB, and then request one or more binary bits from other GPB and MOB before using the originally requested binary bit.

Показанная на фиг.4 конфигурация предусматривает жесткое соединение МОВ и ГПБ. Q-кодер 1ВМ является хорошим примером кодера, имеющего жестко соединенные МОВ и ГПБ. Локальные цепи обратной связи между этими двумя узлами не оказывают ограничивающего действия на характеристики системы. The configuration shown in FIG. 4 provides for a rigid connection of the MOB and GPB. The 1BM Q encoder is a good example of an encoder having hardwired MOBs and GPBs. Local feedback circuits between these two nodes do not have a limiting effect on the characteristics of the system.

В другом варианте конструкции МОВ могли бы дифференцировать данные и посылать их в параллельные блоки ГПБ. Таким образом, здесь может быть только одна КМ и один МОВ, а ГПБ дублируется. При таком способе можно использовать адаптированное кодирование Хаффмена и кодирование с использованием конечного автомата. In another design option, MOVs could differentiate the data and send them to parallel blocks of the GPB. Thus, there can only be one CM and one MOU, and the GPB is duplicated. With this method, adapted Huffman coding and state machine coding can be used.

На фиг.5 показана аналогичная система декодирования, в которой используется МОВ для дифференцирования данных и посылки их в параллельные ГПБ. В этом случае классы вероятности обрабатываются параллельно, и каждый генератор последовательности бит (ГПБ) выделяется определенному классу вероятности и принимает сведения о результате. Как показано на фиг.5, потоки кодированных данных 1-3 поступают на соответствующие из множества генераторов последовательности бит (например, ГПБ 232, ГПБ 233, ГПБ 234 и т.д.), которые подсоединены для их приема. Каждый из генераторов последовательности бит подсоединен к МОВ 235. МОВ 235 подсоединен также к КМ 236. В этой конфигурации каждый из генераторов последовательности бит декодирует кодированные данные, а результаты декодирования выбираются МОВ 235 (вместо КМ 236). Каждый из генераторов последовательности бит принимает кодированные данные из источника, связанного с одним классом вероятности (то есть где кодированные данные могли быть из любого контекстного элемента). МОВ 235 выбирает генераторы последовательности бит, используя класс вероятности. Класс вероятности предписывает контекстным элементам кодированных данных, обеспечиваемым для него моделью КМ 236. Таким образом, декодированные данные получаются с помощью параллельной обработки классов вероятности. Figure 5 shows a similar decoding system in which the MOB is used to differentiate data and send them to parallel GPBs. In this case, the probability classes are processed in parallel, and each bit sequence generator (GPB) is allocated to a certain probability class and receives information about the result. As shown in FIG. 5, encoded data streams 1–3 are supplied to the corresponding from a plurality of generators bit sequences (for example, GPB 232, GPB 233, GPB 234, etc.) that are connected to receive them. Each of the bit sequence generators is connected to the MOB 235. The MOB 235 is also connected to the CM 236. In this configuration, each of the bit sequence generators decodes the encoded data, and the decoding results are selected by the MOB 235 (instead of the CM 236). Each of the bit sequence generators receives encoded data from a source associated with one probability class (that is, where the encoded data could be from any context element). MOB 235 selects bit sequence generators using a probability class. The probability class prescribes the context elements of the encoded data provided for it by the KM 236 model. Thus, the decoded data is obtained by parallel processing of the probability classes.

Для соответствующих настоящему изобретению параллельных систем декодирования существуют многочисленные реализации. В одном варианте осуществления потоки кодированных данных, соответствующие многочисленным контекстным элементам кодированных данных, могут перемежаться в один поток, упорядоченный запросами различных кодеров. В одном варианте осуществления настоящего изобретения кодированные данные упорядочиваются таким образом, что каждый кодер постоянно получает данные, даже если кодированные данные подаются на декодер в одном потоке. Следует отметить, что настоящее изобретение оперирует со всеми типами данных, включая видеоданные. Numerous implementations exist for parallel decoding systems of the present invention. In one embodiment, encoded data streams corresponding to multiple contextual encoded data elements may be interleaved into a single stream ordered by requests from different encoders. In one embodiment of the present invention, the encoded data is arranged so that each encoder constantly receives data, even if the encoded data is supplied to the decoder in one stream. It should be noted that the present invention operates with all types of data, including video data.

При использовании малых простых кодеров, которые можно легко дублировать в интегральных схемах, кодированные данные можно быстро параллельно декодировать. В одном варианте осуществления изобретения кодеры выполняются на аппаратных средствах, используя кристаллы матриц логических элементов с эксплуатационным программированием (МЛЭЭП) или стандартный кристалл интегральных схем прикладной ориентации (ИСПО). Сочетание параллелизма и простых генераторов последовательности бит позволяет осуществлять декодирование кодированных данных со скоростью, превышающей скорости в существующих декодирующих устройствах, в то же время сохраняя или превышая эффективность уплотнения существующих декодирующих систем. With small, simple encoders that can be easily duplicated in integrated circuits, encoded data can be quickly decoded in parallel. In one embodiment of the invention, the encoders are hardware-based using Operational Programmable Logic Matrix Crystals (MLEEP) or a standard application-oriented integrated circuit chip (ISPS). The combination of parallelism and simple bit sequence generators allows decoding of encoded data at a speed exceeding the speed in existing decoding devices, while maintaining or exceeding the compression efficiency of existing decoding systems.

Канальное упорядочивание многочисленных потоков данных. Channel sequencing of multiple data streams.

Существует множество различных конструктивных вопросов и проблем, влияющих на характеристики системы. There are many different design issues and problems that affect system performance.

Некоторые из них будут упомянуты ниже. Однако в изображенных на фиг. 3 и 4 (и 5) вариантах осуществления используются многочисленные кодовые потоки. Можно представить системы с параллельными каналами, которые могут обеспечить этот вариант осуществления: линии с множеством телефонных аппаратов, множество головок на дисководах и т.д. В некоторых системах имеется или пригоден для использования только один канал. Фактически, если требуется много каналов, то может оказаться недостаточным использование полосы частот из-за пакетного характера отдельных кодовых потоков. Some of them will be mentioned below. However, in those shown in FIG. 3 and 4 (and 5) embodiments, multiple code streams are used. You can imagine systems with parallel channels that can provide this embodiment: lines with many telephones, many heads on drives, etc. On some systems, only one channel is available or usable. In fact, if many channels are required, then the use of the frequency band may be insufficient due to the packet nature of the individual code streams.

В одном варианте осуществления кодовые потоки конкатенируются (сочленяются) и непрерывным образом посылаются на декодирующее устройство. Начальный заголовок содержит указатели местоположения начального разряда каждого потока. На фиг. 6 показан возможный вариант упорядочения расположения этих данных. Как показано на фиг. 6, здесь три указателя 301-303 показывают начальное местоположение в сочлененном коде кодовых потоков 1, 2 и 3 соответственно. В буфере имеется полный файл уплотненных данных, представляемый для декодирующего устройства. При необходимости кодовые слова отыскиваются в надлежащем местоположении посредством надлежащего указателя. Затем указатель обновляется для следующего кодового слова в этом кодовом потоке. In one embodiment, code streams are concatenated (articulated) and sent continuously to a decoding device. The start header contains location indicators for the start bit of each stream. In FIG. Figure 6 shows a possible arrangement for arranging the location of this data. As shown in FIG. 6, here three pointers 301-303 show the initial location in the articulated code of the code streams 1, 2, and 3, respectively. The buffer contains the complete compressed data file provided for the decoding device. If necessary, code words are retrieved at the proper location using the proper pointer. The pointer is then updated for the next codeword in this codestream.

Следует отметить, что этот способ требует запоминания в декодирующем устройстве и для практических целей в кодирующем устройстве полного закодированного кадра (блока данных). Если требуется система, работающая в реальном масштабе времени, или поток данных без пакетов, то для группирования можно использовать два кадровых буфера как в кодирующем, так и декодирующем устройствах. It should be noted that this method requires storing in the decoding device and for practical purposes in the encoding device the full encoded frame (data block). If a real-time system or a packet-free data stream is required, then two frame buffers can be used for grouping in both encoding and decoding devices.

Упорядоченность данных для упорядочения кодовых слов. Data streamlining to streamline codewords.

Отметим, что декодирующее устройство декодирует кодовые слова в заданном детерминированном порядке. При параллельном кодировании поток запросов кодового потока является детерминированным. Таким образом, если кодовые слова из параллельных кодовых потоков можно чередовать в правильном порядке в кодирующем устройстве, то оказывается достаточно одного кодового потока. Кодовые слова подаются в декодирующее устройство в таком же порядке на основе "строго вовремя". В кодирующем устройстве модель декодирующего устройства определяет порядок кодовых слов и компонует кодовые слова в один поток. Эта модель может представлять действительное декодирующее устройство. Note that the decoding device decodes the code words in a predetermined deterministic order. In parallel coding, the codestream request stream is deterministic. Thus, if codewords from parallel codestreams can be alternated in the correct order in the encoder, then one codestream is sufficient. Code words are supplied to the decoding device in the same manner on a “strictly on time” basis. In the encoder, the model of the decoder determines the order of the code words and composes the code words into a single stream. This model may represent a valid decoding device.

Проблема в отношении подачи данных в параллельные декодирующие элементы возникает в том случае, если данные имеют переменную длину. Распаковка потока кодовых слов переменной длины требует использования регистра побитового сдвига для выравнивания кодовых слов. Регистры побитового сдвига часто бывают дорогостоящими и/или имеют низкое быстродействие, если они выполнены на аппаратных средствах. Управление регистром побитового сдвига зависит от размера конкретного кодового слова. Эта цепь управления обратной связи мешает быстрому осуществлению сдвига переменной длины. Положительные качества подачи одного потока на множество декодирующих устройств не могут быть реализованы, если процесс распаковки потока осуществляется в единственном регистре побитового сдвига, который не обладает достаточным быстродействием для того, чтобы работать совместно с множеством декодирующих устройств. A problem with supplying data to parallel decoding elements occurs if the data is of variable length. Unpacking a variable-length codeword stream requires the use of a bit-shift register to align codewords. Bit shift registers are often expensive and / or have low performance if they are hardware-based. The control of the bit shift register depends on the size of a particular codeword. This feedback control loop interferes with the rapid implementation of a variable length shift. The positive qualities of supplying a single stream to a plurality of decoding devices cannot be realized if the process of unpacking a stream is carried out in a single bit-shift register, which does not have sufficient speed to work in conjunction with a plurality of decoding devices.

Решение, предлагаемое в этом изобретении, состоит в отделении проблемы распределения кодированных данных по параллельным кодерам от выравнивания кодовых слов переменной длины для декодирования. Кодовые слова в каждом независимом кодовом потоке компонуются в слова фиксированной длины, называемые словами с перемежением (чередованием). На декодирующем конце канала эти слова с перемежением могут быть распределены по параллельным блокам декодеров с быстродействующими линиями передачи данных на аппаратных средствах и с простой схемой управления. The solution proposed in this invention is to separate the problem of distributing encoded data among parallel encoders from alignment of variable-length codewords for decoding. Code words in each independent code stream are arranged into words of a fixed length, called words with alternation (alternation). At the decoding end of the channel, these words with interleaving can be distributed across parallel blocks of decoders with high-speed data lines on hardware and with a simple control circuit.

Удобно выбрать длину перемежаемого слова больше максимальной длины кодового слова, чтобы в каждом перемежаемом слове содержалось по меньшей мере достаточное количество двоичных разрядов для целого одного кодового слова. Перемежаемые слова могут содержать возможные кодовые слова и части кодовых слов. На фиг.7 показано перемежение примерного набора параллельных кодовых потоков. It is convenient to choose the length of the interleaved word greater than the maximum length of the codeword so that each interleaved word contains at least a sufficient number of binary bits for the whole one codeword. Interleaved words may contain possible codewords and parts of codewords. 7 shows the interleaving of an exemplary set of parallel code streams.

Эти слова перемежаются в соответствии с потребностями со стороны декодирующего устройства. Каждый независимый декодер принимает целое перемежаемое слово. Операция побитового смещения теперь осуществляется локально в каждом декодере, поддерживая параллелизм системы. Отметим, что на фиг.7 первое кодовое слово в каждом слове с перемежением представляет собой самое низшее оставшееся кодовое слово в наборе. Например, первые перемежаемые слова поступают из кодового потока 1, начинаясь с самого низшего кодового слова (т. е. N 1). За ним следует первое перемежаемое слово в кодовом потоке 2, а затем первое перемежаемое слово в кодовом потоке 3. Однако следующее самое низкое кодовое слово, не содержащееся полностью в уже упорядоченном перемежаемом слове, представляет N 7. Следовательно, следующее слово в потоке является вторым перемежаемым словом кодового потока 2. These words are interleaved in accordance with the needs of the decoding device. Each independent decoder receives an integer interleaved word. The bitwise offset operation is now performed locally in each decoder, maintaining system parallelism. Note that in FIG. 7, the first codeword in each interleaved word is the lowest remaining codeword in the set. For example, the first interleaved words come from codestream 1, starting with the lowest codeword (i.e., N 1). It is followed by the first interleaved word in codestream 2, and then the first interleaved word in codestream 3. However, the next lowest codeword, not completely contained in the already ordered interleaved word, is N 7. Therefore, the next word in the stream is the second interleaved codestream word 2.

В другом варианте осуществления изобретения порядок, в котором последующий набор перемежаемых слов (например, кодовое слово, начинающееся с кодового слова N 8 в потоке 1, кодовое слово, начинающееся с кодового слова N 7 в потоке 2, кодовое слово, начинающееся с кодового слова N 11 в потоке 3) вводится в перемежаемый кодовый поток, основывается на первом кодовом слове предыдущего набора перемежаемых слов (например, кодовое слово, начинающееся с кодового слова N 1 в потоке 1, кодовое слово, начинающееся с кодового слова N 2 в потоке 2, кодовое слово, начинающееся с кодового слова N 4 в потоке 3) и упорядочивается от перемежаемого слова с первым кодовым словом самого низкого номера до перемежаемого слова с первым кодовым словом наивысшего номера. Следовательно, в этом случае, поскольку первым было перемежаемое слово, начинающееся с кодового слова N 1, то следующее перемежаемое слово в потоке 1 является первым из второй группы перемежаемых слов, подлежащих введению в перемежаемый поток, за которым следует перемежаемое слово в потоке 2, а затем следующее перемежаемое слово в потоке 3. Следует отметить, что после введения второй группы перемежаемых слов в перемежаемый поток следующим перемежаемым словом в потоке 2 может быть следующее перемежаемое слово, введенное в поток, поскольку кодовое слово N 7 является самым низшим кодовым словом второго набора перемежаемых слов (с последующим кодовым словом N 8 в потоке 1 и затем кодовым словом N 11 в потоке 3). In another embodiment of the invention, the order in which a subsequent set of interleaved words (for example, a codeword starting with codeword N 8 in stream 1, a codeword starting with codeword N 7 in stream 2, codeword starting with codeword N 11 in stream 3) is introduced into the interleaved codestream, based on the first codeword of the previous set of interleaved words (for example, a codeword starting with codeword N 1 in stream 1, a codeword starting with codeword N 2 in stream 2, code word start arising from codeword N 4 in stream 3) and is ordered from the interleaved word with the first codeword of the lowest number to the interleaved word with the first codeword of the highest number. Therefore, in this case, since the first was an interleaved word starting with the code word N 1, the next interleaved word in stream 1 is the first of the second group of interleaved words to be introduced into the interleaved stream, followed by the interleaved word in stream 2, and then the next interleaved word in stream 3. It should be noted that after introducing the second group of interleaved words into the interleaved stream, the next interleaved word in stream 2 may be the next interleaved word entered into the stream, since the code The new word N 7 is the lowest codeword of the second set of interleaved words (followed by the code word N 8 in stream 1 and then the code word N 11 in stream 3).

Использование действительного декодера в качестве разработчика модели для потока данных учитывает все варианты построения и задержки при создании перемежаемого потока. Это не приводит к увеличению стоимости дуплексных систем, имеющих как кодирующие, так и декодирующие устройства. Следует отметить, что это можно обобщить для любого параллельного набора информационных слов переменной длины (или разных размеров), которые употребляются в детерминированном порядке. Using a valid decoder as a model designer for a data stream takes into account all construction and delay options when creating an interleaved stream. This does not increase the cost of duplex systems having both encoding and decoding devices. It should be noted that this can be generalized for any parallel set of information words of variable length (or different sizes), which are used in a deterministic order.

Типы кодов и генераторов последовательности бит для параллельного декодирования. Types of codes and bit sequence generators for parallel decoding.

В настоящем изобретении можно использовать в качестве элементов генерирования последовательности бит, которые дублируются параллельно, существующие кодеры, такие как Q-кодеры и B-кодеры. Однако можно использовать и другие коды и кодеры. Применяемые в настоящем изобретении кодеры и связанные с ними коды являются простыми кодирующими устройствами. В настоящем изобретении обеспечиваются преимущества использования генератора последовательности бит с простым кодом вместо сложного кода, типа арифметического кода, используемого в Q-кодере, или кодов с большим количеством состояний, используемых в B-кодере. Простой код имеет преимущество в том отношении, что реализация аппаратными средствами гораздо имеет значительно более высокое быстродействие, проще по конструкции и требует меньше кремниевых элементов, чем в случае сложного кода. In the present invention, existing encoders such as Q encoders and B encoders can be used as elements for generating a sequence of bits that are duplicated in parallel. However, other codes and encoders may be used. The encoders and associated codes used in the present invention are simple encoders. The present invention provides the advantages of using a bit sequence generator with a simple code instead of a complex code, such as the arithmetic code used in the Q encoder, or codes with a large number of states used in the B encoder. Simple code has the advantage that the hardware implementation has much higher performance, is simpler in design and requires less silicon elements than in the case of complex code.

Другим преимуществом настоящего изобретения является то, что можно улучшить эффективность кодирования. Код, в котором используется ограниченное количество информации о состоянии, не может полностью соответствовать пределу энтропии Шеннона для каждой вероятности. В технике известны реализуемые аппаратными средствами коды, позволяющие одному генератору последовательности бит манипулировать многочисленными вероятностями или контекстами, но имеющие ограничения, снижающие эффективность кодирования. Устранение ограничений, требуемых для большого количества контекстов или классов вероятности, позволяет использовать коды, которые в большей степени соответствуют пределу энтропии Шеннона. Another advantage of the present invention is that coding efficiency can be improved. A code that uses a limited amount of state information cannot fully match the Shannon entropy limit for each probability. Codes implemented in hardware are known in the art that allow a single bit sequence generator to manipulate multiple probabilities or contexts, but having limitations that reduce coding efficiency. Elimination of the restrictions required for a large number of contexts or probability classes allows the use of codes that are more consistent with the Shannon entropy limit.

R-коды. R codes.

Код (и кодер), используемый в одном из вариантов осуществления настоящего изобретения, называется R-кодом. R-коды являются адаптивными кодами, которые преобразуют переменное количество идентичных входных символов в кодовое слово. В варианте осуществления изобретения R-коды параметризованы таким образом, что можно манипулировать большим количеством различных вероятностей с помощью единственного декодирующего устройства. Более того, соответствующие настоящему изобретению R-коды можно декодировать с помощью простого быстродействующего аппаратного средства. The code (and encoder) used in one embodiment of the present invention is called an R code. R codes are adaptive codes that convert a variable number of identical input characters into a code word. In an embodiment of the invention, the R codes are parameterized so that a large number of different probabilities can be manipulated with a single decoding device. Moreover, the R codes of the present invention can be decoded using simple high-speed hardware.

В настоящем изобретении R-коды используются R-кодером для выполнения кодирования или декодирования. В одном варианте осуществления R-кодер представляет собой объединенные генератор последовательности бит и модуль оценки вероятности. Например, на фиг.1 R-кодер может включать в себя объединение модуля оценки вероятности 102 и генератора последовательности бит 103 и объединение модуля оценки вероятности 105 с генератором последовательности бит 106. In the present invention, R codes are used by an R encoder to perform encoding or decoding. In one embodiment, the R encoder is a combined bit sequence generator and a probability estimator. For example, in FIG. 1, an R-encoder may include combining a probability estimator 102 and a bit sequence generator 103 and combining a probability estimator 105 with a bit sequence generator 106.

Кодовые слова представляют прогоны наиболее вероятного символа (БВС). БВС представляет результат принятия решения из двух альтернатив с вероятностью более 50%. С другой стороны, наименее вероятный символ (МВС) представляет результат принятия решения из двух альтернатив с вероятностью менее 50%. Следует отметить, что когда два результата равновероятны, неважно, который из них обозначается БВС или МВС, поскольку и кодирующее, и декодирующее устройства делают одинаковое обозначение. Результирующая последовательность двоичных разрядов в уплотненном файле показана в табл.1 для данного параметра, обозначенного MAXRUN (максимальное количество прогонов). Code words represent runs of the most probable character (BVS). BVS represents the result of a decision of two alternatives with a probability of more than 50%. On the other hand, the least probable symbol (MVS) represents the outcome of a decision of two alternatives with a probability of less than 50%. It should be noted that when two results are equally probable, it does not matter which of them is indicated by BVS or MVS, since both the encoding and decoding devices make the same designation. The resulting sequence of binary bits in the compressed file is shown in Table 1 for this parameter denoted by MAXRUN (maximum number of runs).

При кодировании количество БВС в прогоне подсчитывается простым счетчиком. Если этот счет равен величине счета MAXRUN, в кодовый поток направляется кодовое слово 0, и счетчик возвращается в исходное состояние. Если встречается МВС, то в кодовый поток посылается 1 с последующими N двоичными разрядами, которые однозначно описывают количество символов БВС перед МВС. (Следует отметить, что существует много способов назначения N двоичных разрядов для описания длины прогона.) Вновь счетчик устанавливается в исходное состояние. Следует отметить, что количество двоичных разрядов, необходимых для N, зависит от величины MAXRUN. Кроме того, отметим, что можно использовать дополнение до 1 кодовых слов. When encoding, the number of DSS in the run is calculated by a simple counter. If this count is equal to the MAXRUN count, the code word 0 is sent to the code stream, and the counter returns to its original state. If MVS is encountered, then 1 with subsequent N binary digits is sent to the code stream, which uniquely describe the number of BVS symbols before MVS. (It should be noted that there are many ways to assign N bits to describe the length of the run.) Once again, the counter is reset. It should be noted that the number of bits required for N depends on the value of MAXRUN. In addition, note that you can use the complement of up to 1 code words.

При декодировании, если первый двоичный разряд в кодовом потоке представляет собой 0, то величина MAXRUN помещается в счетчике БВС, а показание МВС сбрасывается. Затем 0 двоичный разряд отбрасывается. Если первый двоичный разряд представляет собой 1, тогда следующие двоичные разряды исследуются для выделения N двоичных разрядов, и соответствующий счет (N) помещается в счетчике БВС, а индикатор МВС устанавливается. Затем отбрасываются двоичные разряды кодового потока, содержащие кодовое слово 1. When decoding, if the first binary bit in the code stream is 0, then the MAXRUN value is placed in the BVS counter, and the MBC value is reset. Then 0 binary digit is discarded. If the first binary digit is 1, then the following binary digits are examined to extract N binary digits, and the corresponding count (N) is placed in the BVS counter, and the MBC indicator is set. Then the binary bits of the codestream containing codeword 1 are discarded.

R-коды генерируются по приведенным в табл. 1 правилам. Следует отметить, что описание данного R-кода Rx(к) определяется параметром MAXRUN. Например:
MAXRUN для Rx(к) = х • 2к-1,
таким образом
MAXRUN для R2 (к) = 2 • 2к-1;
MAXRUN для R3(к) = 3 • 2к-1,
и т.д.
R-codes are generated according to the table. 1 rules. It should be noted that the description of this R-code Rx (k) is determined by the parameter MAXRUN. For instance:
MAXRUN for Rx (k) = x • 2 k-1 ,
thus
MAXRUN for R2 (k) = 2 • 2 k-1 ;
MAXRUN for R3 (k) = 3 • 2 k-1 ,
etc.

Отметим, что R-коды являются подмножеством кодов Голомба. Отметим также, что в кодах Райса используются только коды R2(*). Соответствующие настоящему изобретению R-коды позволяют использовать коды как R2(к), так и R3(к), а также другие коды Rn(к), если требуется. В одном варианте осуществления изобретения используются коды R2(к) и R3(к). Следует отметить, что Rn существует для n= 2 и n, равного любому нечетному числу (например, R2, R3, R5, R7, R9, R11, R13, R15). В одном варианте осуществления изобретения для кода R2(к) счет прогона r кодируется переменной N, счет прогона r описывается к двоичными разрядами, так что 1N представляется к + 1 двоичными разрядами. Еще в одном варианте осуществления изобретения для кода R3(к) N двоичных разрядов могут содержать 1 двоичный разряд для указания, если n < 2(к-1) или n ≥ 2(к-1) и либо к-1, либо к двоичных разрядов для отображения счета прогонов r, так что переменная N представляется общим количеством к или к+1 двоичных разрядов соответственно. В других вариантах осуществления изобретения в кодовом слове можно использовать дополнение до 1 величины N. В этом случае БВС имеет тенденцию создавать кодовые потоки с большим количеством 0-й, а МВС имеет тенденцию создавать кодовые потоки с большим количеством 1.Note that R codes are a subset of the Golomb codes. Note also that in Rice codes only R2 (*) codes are used. The R codes corresponding to the present invention allow the use of both R2 (k) and R3 (k) codes, as well as other Rn (k) codes, if required. In one embodiment, codes R2 (k) and R3 (k) are used. It should be noted that Rn exists for n = 2 and n equal to any odd number (for example, R2, R3, R5, R7, R9, R11, R13, R15). In one embodiment of the invention, for the code R2 (k), the run count r is encoded by the variable N, the run count r is described in binary digits, so 1N is represented in + 1 binary digits. In yet another embodiment of the invention, for the R3 (k) code, N binary bits may contain 1 binary bit to indicate if n <2 (k-1) or n ≥ 2 (k-1) and either k-1 or binary bits to display the run count of r, so that the variable N is represented by the total number of k or k + 1 binary bits, respectively. In other embodiments of the invention, a complement of up to 1 value N can be used in the codeword. In this case, the BVS tends to create code streams with a large number of 0, and the MVS tends to create code streams with a large number of 1.

В табл. 2, 3, 4 и 5 изображены некоторые эффективные R-коды, используемые для одного варианта осуществления настоящего изобретения. Следует отметить, что в настоящем изобретении можно также использовать другие коды длительности прогона. Пример альтернативного кода длины прогона для R2(2) показан в табл. 6. В табл.7 и 8 показаны примеры кодов, используемых в варианте осуществления изобретения. In the table. 2, 3, 4, and 5 depict some effective R codes used for one embodiment of the present invention. It should be noted that other run duration codes can also be used in the present invention. An example of an alternative run length code for R2 (2) is shown in Table. 6. Tables 7 and 8 show examples of codes used in an embodiment of the invention.

Модуль оценки вероятности для R-кодов. Probability estimation module for R-codes.

В варианте осуществления изобретения код R2(0) не осуществляет кодирование: входной сигнал 0 кодируется в 0, а входной сигнал 1 кодируется в 1 (или наоборот) и является оптимальным для вероятностей, равных 60%. Код R2(1) предпочтительного в настоящее время варианта осуществления изобретения оптимален для вероятностей, близких к 0,707 (то есть 70,7%), a R3(1) оптимален для вероятности 0,794 (79,4%). Код оптимален для вероятности 0,841 (84,1%). Табл. 9 отображает близкий к оптимальному код длины прогона, где перекос вероятности определяется следующим выражением:
Перекос вероятности = -log2(MBC).
In an embodiment, the code R2 (0) does not encode: input 0 is encoded to 0, and input 1 is encoded to 1 (or vice versa) and is optimal for probabilities of 60%. Code R2 (1) of the currently preferred embodiment is optimal for probabilities close to 0.707 (i.e. 70.7%), and R3 (1) is optimal for probability 0.794 (79.4%). The code is optimal for a probability of 0.841 (84.1%). Tab. 9 displays a run-length code that is close to optimal, where the skew of probability is determined by the following expression:
Skew of probability = -log 2 (MBC).

Отметим, что коды оказываются близкими к оптимальным в том смысле, что диапазон вероятностей, как показано перекосом вероятности, перекрывает интервал относительно равномерно, даже если оптимальные вероятности не дифференцируются так сильно при более высоких значениях к, как при более низких значениях к. Note that the codes turn out to be close to optimal in the sense that the probability range, as shown by the bias of probability, spans the interval relatively evenly, even if the optimal probabilities do not differentiate as much at higher values of k as at lower values of k.

Ссылка делается на вероятность, при которой R-код оптимален. Фактически, только R2(2) соответствует кривой энтропии. Действительное соображение состоит в том, какой диапазон вероятностей представляет конкретный R-кодер лучше, чем все другие R-кодеры в данном классе. Последующие таблицы обеспечивают диапазоны вероятностей для класса кодов R2 и класса кодов R2 и R3. Reference is made to the probability at which the R code is optimal. In fact, only R2 (2) corresponds to the entropy curve. The real consideration is which probability range a particular R-encoder represents better than all other R-encoders in this class. The following tables provide probability ranges for the code class R2 and code class R2 and R3.

Для класса кодов R2 от 0 до 12 диапазоны представлены в табл.10. Например, когда используются только коды R2, R2(0) оказывается лучше тогда, когда 0,50 ≤ вероятность ≤ 0,6180. Подобно этому R2(1) оказывается лучше, когда 0,6180 ≤ вероятность ≤ 0,7862. For the code class R2 from 0 to 12, the ranges are presented in Table 10. For example, when only the codes R2, R2 (0) are used, it turns out to be better when 0.50 ≤ probability ≤ 0.6180. Similarly, R2 (1) is better when 0.6180 ≤ probability ≤ 0.7862.

Для класса кодов R2 и R3 решения представлены в табл.11. Например, когда используются коды R2 и R3, R2(1) оказывается лучше, когда 0,6180 ≤ вероятность ≤ 0,7549. For the class of codes R2 and R3, the solutions are presented in Table 11. For example, when codes R2 and R3 are used, R2 (1) is better when 0.6180 ≤ probability ≤ 0.7549.

R2(к) для фиксированного к называется кодом длины прогона. Однако фиксированный к лучше только для диапазона вероятностей. Отмечается, что когда кодирование ведется вблизи оптимальной вероятности, в соответствующем настоящему изобретению R-коде используются кодовые слова "0" и "1N" с приблизительно одинаковой частотой. Другими словами, половину времени соответствующий настоящему изобретению R-кодер дает на выходе один код, а другую половину времени R-кодер дает на выходе другой код. С помощью исследования кодовых слов с номерами "0" и "1N" можно осуществить определение относительно того, лучший ли код используется. То есть, если на выходе слишком много кодовых слов "1N", то длина прогона слишком большая, с другой стороны, если на выходе слишком много кодовых слов 0, то длина прогона слишком маленькая. R2 (k) for fixed k is called the run length code. However, fixed to is only better for the probability range. It is noted that when the encoding is carried out near the optimal probability, the code words “0” and “1N” are used with approximately the same frequency in the R code corresponding to the present invention. In other words, half the time, the R-encoder corresponding to the present invention outputs one code, and the other half-time, the R-encoder outputs another code. By examining the codewords with the numbers “0” and “1N”, a determination can be made as to whether the best code is used. That is, if the output contains too many code words "1N", then the run length is too long, on the other hand, if the output contains too many code words 0, then the run length is too small.

Модель оценки вероятности, используемая Лангдоном, исследует первый двоичный разряд каждого кодового слова для определения, выше или ниже вероятность источника текущей оценки (см. работу Дж.Дж.Лангдона "Адаптивный алгоритм кодирования длины прогона", Бюллетень технических открытий IBM, том 26, N 7B, декабрь 1983 г). На основании этого определения к увеличивается или уменьшается. Например, если обнаруживается кодовое слово, указывающее БВС, оценка вероятности слишком низкая. Поэтому согласно Лангдону к увеличивают на 1 для каждого кодового слова 0. Если обнаруживается кодовое слово, показывающее меньше, чем MAXRUN БВС с последующим МВС (например, кодовое слово "1N"), оценка вероятности слишком высокая. Следовательно, согласно Лангдону к уменьшается на 1 для каждого кодового слова 1N. The probability estimation model used by Langdon examines the first binary bit of each codeword to determine whether the source of the current estimate is higher or lower (see JJ Langdon's work “Adaptive Run-Length Encoding Algorithm”, IBM Technical Discovery Bulletin, Volume 26, N 7B, December 1983). Based on this definition, k increases or decreases. For example, if a codeword indicating BWS is detected, the probability score is too low. Therefore, according to Langdon, k is increased by 1 for each codeword 0. If a codeword is detected showing less than MAXRUN BVS followed by MVS (for example, codeword "1N"), the probability score is too high. Therefore, according to Langdon, k decreases by 1 for each codeword 1N.

Настоящее изобретение позволяет получить более сложную оценку вероятности, чем простое увеличение или уменьшение к на 1 каждого кодового слова. Настоящее изобретение включает в себя состояние (режим) модуля оценки вероятности, которое определяет код для использования. Много состояний (режимов) могут использовать один и тот же код. Коды назначаются состояниям с использованием таблицы состояний или конечного автомата. The present invention provides a more complex probability estimate than simply increasing or decreasing k by 1 of each codeword. The present invention includes a state (mode) of a probability estimation module that determines a code to use. Many states (modes) can use the same code. Codes are assigned to states using a state table or state machine.

В одном варианте осуществления настоящего изобретения оценка вероятности изменяет состояние каждого выходного слова. Таким образом, модуль оценки вероятности увеличивает или уменьшает оценку вероятности в зависимости от того, начинается ли кодовое слово с 0 или с 1. Например, если на выходе кодовое слово представляет "0", происходит увеличение оценки вероятности БВС. С другой стороны, если на выходе кодовое слово представляет "1", оценка вероятности БВС уменьшается. In one embodiment of the present invention, a probability estimate changes the state of each output word. Thus, the probability estimation module increases or decreases the probability estimate depending on whether the codeword starts from 0 or 1. For example, if the codeword is “0” at the output, the probability estimate of the BVI increases. On the other hand, if the codeword represents “1” at the output, the probability estimate of the DSS is reduced.

В известном кодере Лангдона используются только коды R2(к) и производится увеличение или уменьшение к для каждого кодового слова. В качестве альтернативы в настоящем изобретении используются коды R2(к) и R3(к) вместе с таблицей состояний или конечным автоматом, что обеспечивает возможность настраивать скорость адаптации к применению. То есть, если имеется небольшое количество стационарных данных, адаптация должна происходить быстрее для получения более оптимального кодирования, а если имеется большее количество стационарных данных, время адаптации может быть больше, так что можно выбирать кодирование для достижения лучшего уплотнения остальной части данных. Отметим, в тех случаях, когда могут встречаться переменные количества изменений состояния, особые характеристики применений также могут влиять на скорость адаптации. Из-за характера R-кодов оценка R-кодов простая и требует небольшого технического обеспечения, в то же время она имеет очень высокую мощность. На фиг.40 показан этот график эффективности кодирования (длина кода нормирована относительно энтропии) в зависимости от вероятности БВС. На фиг. 40 показано, как некоторые из соответствующих настоящему изобретению R-кодов перекрывают интервал вероятности. В качестве примера на фиг.40 показано, что в случае вероятности БВС, равной примерно 0,55, эффективность кода R2(0) равна 1,01 (или на 1% хуже) предела энтропии. В противоположность этому код R2(1) имеет эффективность 1,09 (или на 9% хуже) предела энтропии. Этот пример показывает, что использование неверного кода для этого конкретного случая низкой вероятности приводит к потерям 8% эффективности кодирования. In the well-known Langdon encoder, only the R2 (k) codes are used and an increase or decrease in k is made for each codeword. As an alternative to the present invention, codes R2 (k) and R3 (k) are used together with a state table or a state machine, which makes it possible to adjust the rate of adaptation to the application. That is, if there is a small amount of stationary data, adaptation should be faster to obtain better coding, and if there is more stationary data, the adaptation time may be longer, so you can choose the coding to achieve better compression of the rest of the data. Note that in cases where variable amounts of state changes can occur, special characteristics of the applications can also affect the rate of adaptation. Due to the nature of the R codes, the evaluation of R codes is simple and requires little technical support, while at the same time it has a very high power. On Fig shows this graph of coding efficiency (the length of the code is normalized relative to the entropy) depending on the likelihood of BVS. In FIG. 40 shows how some of the R codes of the present invention span a probability interval. As an example, FIG. 40 shows that in the case of a probability of BVI of approximately 0.55, the efficiency of the R2 (0) code is 1.01 (or 1% worse) of the entropy limit. In contrast, the R2 (1) code has an efficiency of 1.09 (or 9% worse) than the entropy limit. This example shows that using the wrong code for this particular case of low probability leads to a loss of 8% coding efficiency.

Включение кодов R3(к) дает возможность перекрывать больший диапазон вероятности с более высокой эффективностью. На фиг. 8 показана соответствующая настоящему изобретению примерная таблица состояний оценки и вероятности. Рассмотрим фиг. 8, на которой в таблице состояний оценки вероятности показан как счетчик числа состояний, так и код, связанный с каждым из отдельных состояний в таблице. Следует отметить, что таблица включает в себя как положительные, так и отрицательные состояния. В таблице показано наличие 37 положительных состояний и 37 отрицательных состояний, включая нулевые состояния. Отрицательные состояния имеют значения БВС, отличные от положительных состояний. В одном варианте осуществления отрицательные состояния можно использовать, когда БВС равен 1, а положительные состояния можно использовать, когда БВС равен 0, или наоборот. Отметим, что показанная на фиг. 8 таблица является только примером и что другие таблицы могут иметь больше или меньше состояний и отличающееся расположение состояний. The inclusion of R3 (k) codes makes it possible to cover a greater probability range with higher efficiency. In FIG. 8 shows an exemplary table of estimation and probability states corresponding to the present invention. Consider FIG. 8, in which the probability estimation state table shows both the state number counter and the code associated with each of the individual states in the table. It should be noted that the table includes both positive and negative states. The table shows the presence of 37 positive states and 37 negative states, including zero states. Negative states have BVS values different from positive states. In one embodiment, negative states can be used when BVI is 1, and positive states can be used when BVI is 0, or vice versa. Note that shown in FIG. 8, the table is only an example and that other tables may have more or less states and a different arrangement of states.

В исходном положении кодер находится в состоянии 0, что означает код R2(0) (то есть нет кода) для оценки вероятности, равной 0,50. После каждой обработки кодового слова счетчик количества состояний получает положительное или отрицательное приращение в зависимости от первого двоичного разряда кодового слова. В одном варианте осуществления изобретения кодовое слово 0 увеличивает величину счетчика количества состояний, начало кодового слова с 1 уменьшает величину счетчика количества состояний. Поэтому каждое кодовое слово заставляет производить изменение состояния с помощью счетчика количества состояний. Другими словами, модуль оценки вероятности меняет состояние. Однако последовательные состояния могут быть связаны с одним и тем же кодом. В этом случае оценка вероятности совершается без изменения кодов с каждым кодовым словом. Другими словами, состояние изменяется с каждым кодовым словом; однако в определенные моменты состояние устанавливается на одни и те же вероятности. Например, все состояния от 5 до -5 используют код R2(0), тогда как состояния с 6 до 11 и с -6 до -11 используют код R2(1). Используя соответствующую настоящему изобретению таблицу состояний, оценка вероятности может оставаться в том же самом кодере нелинейным образом. In the initial position, the encoder is in state 0, which means the code R2 (0) (that is, there is no code) to estimate the probability of 0.50. After each processing of the codeword, the state counter obtains a positive or negative increment depending on the first binary digit of the codeword. In one embodiment of the invention, the codeword 0 increases the counter of the number of states, the beginning of the codeword from 1 decreases the counter of the number of states. Therefore, each codeword forces a state change using a state count. In other words, the probability estimation module changes state. However, successive states may be associated with the same code. In this case, the probability estimate is performed without changing the codes with each codeword. In other words, the state changes with each codeword; however, at certain points, the state is set to the same probabilities. For example, all states from 5 to -5 use the R2 (0) code, while states 6 to 11 and -6 to -11 use the R2 (1) code. Using the state table of the invention, the probability estimate can remain in the same encoder in a non-linear fashion.

Следует отметить, что для более низких вероятностей включено больше состояний с одним и тем же R-кодом. Это сделано потому, что потеря эффективности при использовании неверного кода при низких вероятностях больше. Характер таблицы состояний кодов длины прогона заключается в переходе между состояниями после каждого кодового слова. В таблице состояний, составленной для изменения кодов с каждым изменением состояния, когда происходит переключение между состояниями на более низких вероятностях, код переключается между кодом, который очень близок к пределу энтропической эффективности, и кодом, который далек от предела энтропической эффективности. Таким образом, штраф (выраженный в количестве двоичных разрядов кодированных данных) может привести к переходу между состояниями. Существующие модули оценки вероятности типа модуля оценки вероятности Лангдона теряют свою характеристику из-за такого штрафа. It should be noted that for lower probabilities, more states with the same R code are included. This is because the loss of efficiency when using the wrong code at low probabilities is greater. The nature of the state table of run length codes is to switch between states after each codeword. In the state table, compiled to change codes with each state change, when switching between states at lower probabilities, the code switches between a code that is very close to the limit of entropic efficiency and a code that is far from the limit of entropic efficiency. Thus, a penalty (expressed as the number of bits of encoded data) can lead to a transition between states. Existing probability estimation modules such as the Langdon probability estimation module lose their characterization due to such a fine.

В кодах с более высокой вероятностью длины прогона штраф за использование неверного кода не такой большой. Поэтому в настоящем изобретении при более низких вероятностях добавляются дополнительные состояния, так что изменения в переключении между двумя правильными состояниями увеличиваются, снижая тем самым неэффективность кодирования. In codes with a higher probability of run length, the penalty for using the wrong code is not so large. Therefore, in the present invention, additional states are added at lower probabilities, so that changes in switching between two correct states increase, thereby reducing coding inefficiency.

Отметим, что в некоторых вариантах осуществления изобретения кодер может иметь первоначальное состояние оценки вероятности. Другими словами, кодер может начинать работать в заранее установленном одном из состояний, таком как состояние 18. В одном варианте осуществления можно использовать другую таблицу состояний, так что некоторые состояния можно использовать для первых нескольких символов с целью обеспечения быстрой адаптации. Вторую таблицу состояний можно использовать для оставшихся символов с целью медленной адаптации, чтобы обеспечить точную настройку оценки вероятности. Таким образом, кодер может иметь возможность скорее использовать более эффективный код в процессе кодирования. В другом варианте осуществления изобретения кодовый поток может устанавливать начальную оценку вероятности для каждого контекста. В одном варианте осуществления изобретения положительные и отрицательные приращения не производятся в соответствии с фиксированным числом (например, 1). Вместо этого состояние оценки вероятности может быть увеличено на переменное число в соответствии с количеством уже встречаемых данных или количеством изменения данных (стабильности). Примеры таких таблиц представлены в табл. 22 - 26. Note that in some embodiments, the encoder may have an initial probability estimation state. In other words, the encoder may begin to operate in a predetermined one of the states, such as state 18. In one embodiment, another state table may be used, so that some states may be used for the first few characters in order to ensure quick adaptation. The second state table can be used for the remaining characters for the purpose of slow adaptation to ensure fine tuning of the probability estimate. Thus, the encoder may be able to more likely use a more efficient code in the encoding process. In another embodiment, the codestream may establish an initial probability estimate for each context. In one embodiment, positive and negative increments are not produced according to a fixed number (e.g., 1). Instead, the state of the probability estimate can be increased by a variable number in accordance with the amount of data already encountered or the amount of data change (stability). Examples of such tables are presented in table. 22 - 26.

Если таблица состояний симметричная, как показанная на фиг.8 примерная таблица, то необходимо запоминать или реализовать в аппаратном средстве только ее половину (включая нулевое состояние). В одном варианте осуществления изобретения количество состояний запоминается в форме дополнения величины знака (1) для получения преимущества от симметрии. Таким образом, можно использовать таблицу, принимая абсолютную величину числа дополнения до единицы для определения состояния и проверяя знак определения, равняется ли БВС 1 или 0. Это дает возможность уменьшить объем аппаратных средств, необходимых для положительного или отрицательного приращения состояния, поскольку для индексирования таблицы используется абсолютное значение состояния, а вычисление абсолютного значения числа дополнения до единицы оказывается тривиальным. В другом варианте осуществления изобретения для большей эффективности аппаратного средства таблицу состояний можно заменить жестко замонтированным или программируемым конечным автоматом. Жестко замонтированное состояние преобразователя кода характеризует собой одну из реализаций таблицы состояний. If the state table is symmetric, as shown in FIG. 8, an example table, then only half of it (including the zero state) needs to be stored or implemented in the hardware. In one embodiment of the invention, the number of states is stored in the form of complementing the sign magnitude (1) to take advantage of symmetry. Thus, you can use the table, taking the absolute value of the number of additions to one to determine the state and checking the sign to determine whether BVS is 1 or 0. This makes it possible to reduce the amount of hardware required for a positive or negative state increment, since it is used to index the table the absolute value of the state, and the calculation of the absolute value of the number of additions to unity is trivial. In another embodiment, the state table can be replaced by a hard-wired or programmable state machine for greater hardware efficiency. A hard-mounted state of a code converter characterizes one of the state table implementations.

Общая характеристика системы сбалансированного параллельного статистического кодирования. General characteristics of a balanced parallel statistical coding system.

Настоящее изобретение обеспечивает систему сбалансированного параллельного статистического кодирования. Система параллельного статистического кодирования включает в себя как кодирование в реальном масштабе времени, так и декодирование в реальном масштабе времени, выполняемые с помощью аппаратных средств с высоким быстродействием и низкой стоимостью. Настоящее изобретение можно использовать в многочисленных применениях кодирования без потерь, включая, но не ограничиваясь ими, уплотнение и разуплотнение в реальном масштабе времени данных на перезаписываемых оптических дисках или магнитных дисках, уплотнение и разуплотнение в реальном масштабе времени данных компьютерных сетей, уплотнение и разуплотнение в реальном масштабе времени данных изображения в памяти уплотненной группы данных в многофункциональной машине (например, в копировальном устройстве, факсимильной аппаратуре, сканирующем устройстве, печатающем устройстве и т.д.) и уплотнение и разуплотнение в реальном масштабе времени аудиоданных. The present invention provides a balanced parallel statistical coding system. The system of parallel statistical coding includes both real-time coding and real-time decoding, performed using hardware with high speed and low cost. The present invention can be used in numerous lossless coding applications, including but not limited to real-time compaction and decompression of data on rewritable optical discs or magnetic disks, real-time compaction and decompression of computer network data, real-time compaction and decompression the time scale of the image data in the memory of a compressed group of data in a multifunction machine (for example, in a photocopier, fax machine, an analyzing device, a printing device, etc.) and real-time compaction and decompression of audio data.

Некоторого внимания требует определение характеристик кодирующего устройства. Его проектирование и осуществление кодирования весьма просты, что позволяет достичь определенной скорости поступления исходных данных, выдаваемых в канал с достаточно быстрым кодированием данных. Однако во многих применениях задача состоит в том, чтобы кодирующее устройство эффективно использовало канал кодированных данных. На использование канала кодированных данных оказывает действие максимальная скорость передачи пакетов, интерфейса исходных данных, быстродействие кодирующего устройства и достигаемая степень уплотнения данных. Влияние этих воздействий необходимо рассматривать для некоторого локального количества данных, которое зависит от обеспечиваемой буферизации в кодирующем устройстве. Желательно иметь кодирующее устройство, эффективно использующее канал кодированных данных при сохранении быстродействия кодирующего устройства и высокого уплотнения, при этом обеспечивая максимальную скорость передачи пакетов. Some attention is required to characterize the encoder. Its design and implementation of coding is very simple, which allows you to achieve a certain speed of receipt of the source data output to the channel with a fairly fast data coding. However, in many applications, the challenge is for the encoder to efficiently use the encoded data channel. The use of the encoded data channel is influenced by the maximum packet rate, the source data interface, the speed of the encoder and the achieved degree of data compression. The influence of these influences must be considered for a certain local amount of data, which depends on the provided buffering in the encoding device. It is desirable to have an encoding device that effectively uses the channel of encoded data while maintaining the speed of the encoding device and high compression, while ensuring maximum packet transfer rate.

В последующем описании раскрыто соответствующее настоящему изобретению кодирующее устройство. Описано также декодирующее устройство, которое можно использовать с кодирующим устройством. In the following description, an encoding device according to the present invention is disclosed. A decoding device that can be used with an encoding device is also described.

Кодирование в реальном масштабе времени в настоящем изобретении. Real-time coding in the present invention.

На фиг. 9 представлена блок-схема соответствующей настоящему изобретению системы кодирования. В одном варианте осуществления изобретения соответствующее настоящему изобретению кодирующее устройство осуществляет кодирование в реальном масштабе времени. Показанная на фиг. 9 кодирующая система 600 включает в себя кодирующее устройство 602, подсоединенное к контекстной модели (КМ) и памяти состояния 603, предназначенное для генерирования кодированной информации в форме информации кодовых слов 604 в ответ на исходные данные 601. Информация кодовых слов 604 принимается переупорядочивающим блоком 606, который подсоединен к памяти переупорядочивания 607. В ответ на информацию кодовых слов 604 переупорядочивающий блок 606 совместно с памятью переупорядочивания 607 генерирует поток кодированных данных 608. Следует отметить, что система кодирования 600, соответствующая изобретению, не ограничивается оперированием с кодовыми словами, а может в других вариантах осуществления оперировать дискретными аналоговыми формами сигналов, комбинациями двоичных разрядов переменной длины, символами канала связи, алфавитами, событиями и т.д. In FIG. 9 is a block diagram of a coding system according to the present invention. In one embodiment of the invention, an encoder according to the present invention performs real-time encoding. Shown in FIG. 9, the encoding system 600 includes an encoding device 602 connected to a context model (CM) and a state memory 603 for generating encoded information in the form of codeword information 604 in response to the source data 601. The codeword information 604 is received by the reordering unit 606, which is connected to the reordering memory 607. In response to the codeword information 604, the reordering unit 606, together with the reordering memory 607, generates a stream of encoded data 608. It should be noted that YSTEM encoding 600 according to the invention is not limited to operating with the code words, but may in other embodiments handle discrete analog waveforms, combinations of bits of the variable length communication channel symbols, alphabets, events, etc.

Кодирующее устройство 602 включает в себя контекстную модель (КМ), механизм оценки вероятности (MOB) и генератор последовательности бит (ГПБ). Контекстная модель и MOB (механизм оценки вероятности) в кодирующем устройстве 602 по существу идентичны элементам в декодирующем устройстве (за исключением направления потока данных). Генератор двоичных разрядов кодирующего устройства 602 аналогичен генератору двоичных разрядов декодирующего устройства и описывается ниже. Результат кодирования кодирующим устройством 602 представляет собой выходной сигнал из нуля или более двоичных разрядов, которые отображают исходные данные. В одном варианте осуществления изобретения выходной сигнал генератора последовательности бит, кроме того, включает в себя один или больше управляющих сигналов. Эти управляющие сигналы обеспечивают цепь управляющего воздействия на данные в последовательности двоичных разрядов. В одном варианте осуществления изобретения информация кодовых слов может содержать в себе индикацию начала прогона и индикацию окончания прогона, кодовое слово и индекс, идентифицирующий счет прогонов (как относящихся к контексту или к классу вероятности) для кодового слова. Ниже описан один вариант осуществления соответствующего настоящему изобретению генератора последовательности бит. Encoding device 602 includes a context model (CM), a probability estimation mechanism (MOB), and a bit sequence generator (GPB). The context model and the MOB (probability estimation mechanism) in the encoder 602 are essentially identical to the elements in the decoder (except for the direction of the data stream). The binary generator of the encoder 602 is similar to the binary generator of the decoder and is described below. The result of encoding by encoder 602 is an output from zero or more bits that represent the source data. In one embodiment of the invention, the output of the bit sequence generator further includes one or more control signals. These control signals provide a control circuit for data in a sequence of binary bits. In one embodiment of the invention, the codeword information may include an indication of the start of the run and an indication of the end of the run, a codeword and an index identifying the count of the runs (as related to the context or probability class) for the codeword. One embodiment of a bit sequence generator according to the present invention is described below.

Переупорядочивающий блок 606 принимает двоичные разряды и управляющие сигналы, вырабатываемые генератором последовательности бит (если он вообще имеется) кодера 602, и вырабатывает кодированные данные. В одном варианте осуществления изобретения выходные кодированные данные переупорядочивающего блока 606 содержат в себе поток слов с чередованием. The reordering unit 606 receives the binary bits and control signals generated by the bit sequence generator (if any) of the encoder 602, and generates encoded data. In one embodiment of the invention, the output encoded data of the reordering unit 606 comprises an interleaved word stream.

В одном варианте осуществления изобретения переупорядочивающий блок 606 выполняет две функции. Переупорядочивающий блок 606 перемещает кодовые слова с конца прогонов, создаваемых кодирующим устройством, в начало прогонов, как это требуется для декодирующего устройства, и объединяет кодовые слова переменной длины в слова с чередованием, имеющие фиксированную длину, и передает их на выход в надлежащем порядке, требуемом для декодирующего устройства. In one embodiment, the reordering unit 606 has two functions. The reordering unit 606 moves the codewords from the end of the runs created by the encoder to the start of the runs, as required by the decoder, and combines the variable-length codewords into interlaced words having a fixed length and sends them to the output in the proper order required for a decoding device.

В переупорядочивающем блоке 606 используется временная переупорядочивающая память 607. В одном варианте осуществления изобретения, где кодирование осуществляется на автоматизированном рабочем месте, емкость временной памяти переупорядочивания может составлять более 100 мегабайтов. В соответствующей настоящему изобретению сбалансированной системе временная память переупорядочивания 607 имеет значительно меньшую емкость (например, приблизительно 1 килобайт) и является постоянной. Таким образом, в одном варианте осуществления изобретения кодирование в реальном масштабе времени осуществляется с использованием постоянного объема памяти, даже если это увеличивает память, необходимую декодирующему устройству или для скорости передачи бит (например, когда вывод осуществляется до завершения прогона). Соответствующее настоящему изобретению декодирующее устройство способно определять действия ограниченной памяти переупорядочивающего блока, используя, например, неявную, явную сигнализацию или сигнализацию внутри потока (как описывается ниже). Переупорядочивающий блок 606 имеет ограниченную память, используемую для переупорядочивания, но "необходимая" память не ограничена. Необходимо учитывать как влияние ограниченной памяти в отношении окончания прогона с целью начала очереди прогона, так и в отношении переупорядочивания перемежаемых слов. In the reordering unit 606, a temporary reordering memory 607 is used. In one embodiment of the invention, where encoding is performed on a workstation, the capacity of the temporary reordering memory may be more than 100 megabytes. In a balanced system according to the present invention, the temporary reordering memory 607 has significantly lower capacity (e.g., approximately 1 kilobyte) and is constant. Thus, in one embodiment of the invention, real-time coding is performed using a constant amount of memory, even if it increases the memory needed by the decoding device or for the bit rate (for example, when output is performed before the completion of the run). The decoding apparatus of the present invention is capable of determining the actions of the limited memory of a reordering block using, for example, implicit, explicit, or intra-stream signaling (as described below). The reordering unit 606 has limited memory used for reordering, but the “required” memory is not limited. It is necessary to take into account both the influence of limited memory in relation to the end of the run with the aim of starting the run queue, and in relation to the reordering of interleaved words.

В одном варианте осуществления изобретения соответствующая настоящему изобретению кодирующая система (и соответствующая декодирующая система) осуществляет кодирование (или декодирование), используя единственную интегральную микросхему. В другом варианте осуществления изобретения единственная интегральная схема содержит в себе соответствующую настоящему изобретению систему кодера, включая ее кодирующее и декодирующее устройства и память. Для обеспечения кодирования может быть дополнительно использовано отдельное внешнее запоминающее устройство. Многокристальный модуль или интегральная схема может содержать как аппаратные средства кодирования-декодирования, так и запоминающее устройство. In one embodiment of the invention, the encoding system of the present invention (and the corresponding decoding system) performs encoding (or decoding) using a single integrated circuit. In another embodiment, a single integrated circuit comprises an encoder system according to the present invention, including its encoding and decoding devices and memory. To provide encoding, a separate external storage device may be additionally used. A multi-chip module or integrated circuit may contain both encoding-decoding hardware and a storage device.

Соответствующая настоящему изобретению система кодирования может увеличить эффективную ширину полосы пропускания вплоть до величины, определяемой коэффициентом N. Если достигнутое уплотнение меньше, чем N:1, то канал кодирования данных будет полностью использован, но полученное увеличение эффективной ширины полосы пропускания равно только степени уплотнения. Если достигнутое уплотнение больше, чем N:1, то обеспечивается эффективная ширина полосы пропускания с дополнительной полосой пропускания с перезаписью. В обоих случаях достигаемое уплотнение должно обеспечиваться по всей локальной области данных, определяемой объемом буферизации, имеющейся в системе кодирования. A coding system according to the present invention can increase the effective bandwidth up to a value determined by the coefficient N. If the achieved compression is less than N: 1, then the data coding channel will be fully utilized, but the resulting increase in the effective bandwidth is only equal to the degree of compression. If the achieved compaction is greater than N: 1, then an effective bandwidth with an additional overwrite bandwidth is provided. In both cases, the achieved compression should be provided over the entire local data region, determined by the amount of buffering available in the coding system.

На фиг. 10 показан один вариант осуществления соответствующего настоящему изобретению генератора двоичных разрядов кодирующего устройства. Генератор двоичных разрядов 701 подсоединен для приема в качестве входных сигналов класса вероятности и некодированного двоичного разряда (например, индикации БВС или МВС). В ответ на входные сигналы генератор 701 выдает множество сигналов. Два из выходных сигналов представляют управляющие сигналы, указывающие начало прогона и окончание прогона (каждое кодовое слово представляет прогон), сигнал запуска 711 и сигнал окончания 712. Прогон можно запускать и оканчивать в одно и то же время. Когда прогон запускается или заканчивается, выходной сигнал "индекс" 713 содержит индикацию класса вероятности (или контекста) для некодированного двоичного разряда. В одном варианте осуществления изобретения выходной сигнал индекса 713 представляет объединение класса вероятности для двоичного разряда и идентификацию банка данных для систем, в которых каждый класс вероятности дублирован в нескольких банках данных запоминающего устройства. Выходной сигнал кодового слова 714 используется для вывода кодированного слова из генератора двоичных разрядов 701, когда заканчивается прогон. In FIG. 10 shows one embodiment of an encoder binary generator according to the present invention. The binary generator 701 is connected to receive as input signals of the probability class and an unencrypted binary bit (for example, an indication of BVS or MVS). In response to the input signals, a generator 701 provides a plurality of signals. Two of the output signals represent control signals indicating the start of the run and the end of the run (each code word represents the run), the start signal 711 and the end signal 712. The run can be started and terminated at the same time. When the run starts or ends, the output signal “index” 713 contains an indication of the probability class (or context) for the non-encoded binary bit. In one embodiment, the output of index 713 represents the combination of a probability class for a binary digit and the identification of a data bank for systems in which each probability class is duplicated in several data banks of a storage device. The output of codeword 714 is used to output the encoded word from binary generator 701 when the run ends.

Память 702 подсоединена к генератору двоичных разрядов 701 и содержит счет прогонов для данного класса вероятности. Во время генерации двоичных разрядов генератор двоичных разрядов 701 считывает из запоминающего устройства 702, используя индекс (например, класс вероятности). После считывания из памяти 702 генератор двоичных разрядов 701 осуществляет вырабатывание двоичных разрядов следующим образом. Во-первых, если счет прогонов равен нулю, выдается сигнал запуска 711, индицирующий начало прогона. Затем, если некодированный двоичный разряд равен МВС, то формируется сигнал окончания 712, указывающий на окончание прогона. Кроме того, если некодированный двоичный разряд равен наименее вероятному символу (МВС), то формируется выходное кодовое слово 714 для того, чтобы показать, что кодовое слово является кодовым словом "1N" и счет прогонов очищается, например устанавливается на ноль (поскольку это конец прогона). Если некодированный двоичный разряд не равен МВС, то счет прогонов получает положительное приращение, а проверка определяет, равен ли счет прогонов максимальному счету прогонов для кода. Если это так, то выдается сигнал окончания 712, выходной сигнал кодового слова 714 устанавливается на ноль, а счет прогонов очищается (например, счет прогонов устанавливается на ноль). Если в результате проверки определяется, что число прогонов не равно максимальному значению для кода, то счет прогонов получает положительное приращение. Отметим, что индексирующий сигнал 713 соответствует классу вероятности, принимаемому в качестве входного сигнала. The memory 702 is connected to a binary generator 701 and contains a run count for a given probability class. During binary generation, the binary generator 701 reads from the memory 702 using an index (e.g., a probability class). After reading from the memory 702, the binary generator 701 generates binary bits as follows. Firstly, if the run count is zero, a start signal 711 is issued, indicating the start of the run. Then, if the non-encoded binary bit is equal to MVS, then an end signal 712 is generated, indicating the end of the run. In addition, if the non-encoded binary bit is the least probable character (MBC), an output codeword 714 is generated to indicate that the codeword is the codeword “1N” and the run count is cleared, for example, set to zero (since this is the end of the run ) If the non-encoded binary bit is not equal to MVS, then the run count is incremented, and the check determines whether the run count is equal to the maximum run count for the code. If so, then an end signal 712 is output, the output of codeword 714 is set to zero, and the run count is cleared (for example, the run count is set to zero). If as a result of the check it is determined that the number of runs is not equal to the maximum value for the code, then the run count receives a positive increment. Note that the indexing signal 713 corresponds to a probability class adopted as an input signal.

В настоящем изобретении срабатывание кодовых слов 1N осуществляется так, что их длину можно определять без какой-либо дополнительной информации. Табл. 12 иллюстрирует кодовые слова "1N", представляющие кодовые слова R3(2) для декодирующего и кодирующего устройств. Декодирующее устройство ожидает, что двоичный разряд "1" в кодовом слове "1N" будет МВС и что часть счета N оказывается в надлежащем порядке БВС...МВС. В порядке декодирования кодовое слово переменной длины не может отличаться от нулевого заполнения без знания того, какой конкретный код использован. В порядке кодирования кодовое слово реверсируется, и положение старшего разряда "1" показывает длину кодовых слов "1N". Для генерирования кодовых слов в порядке кодирования дополнение значения счета должно быть изменено на противоположное. Это можно выполнить путем реверсирования 13-разрядного счета и затем смещения его так, чтобы совместить его с МВС. Как описывается подробно ниже, блок компоновки двоичных разрядов реверсирует кодовые слова обратно, соответственно порядку декодирования. Однако это реверсирование кодовых слов не вызывает усложнения блока компоновки двоичных разрядов 606, поскольку он должен осуществлять сдвиг любым путем. In the present invention, the triggering of the code words 1N is carried out so that their length can be determined without any additional information. Tab. 12 illustrates codewords “1N” representing codewords R3 (2) for decoding and encoding devices. The decoding device expects that the binary digit “1” in the codeword “1N” will be MVS and that part of the count N will be in the proper order BVS ... MVS. In decoding order, a variable-length codeword cannot differ from zero filling without knowing which specific code is used. In coding order, the codeword is reversed, and the position of the high order bit “1” indicates the length of the codewords “1N”. To generate codewords in coding order, the complement of the count value must be reversed. This can be done by reversing the 13-bit account and then shifting it so that it is compatible with the MVS. As described in detail below, the binary unit arranges the code words backward, according to the decoding order. However, this reversal of codewords does not complicate the block arrangement of the binary digits 606, since it must carry out the shift in any way.

Для кодов R3 генерирование кодовых слов "N2" требует также, чтобы двоичный разряд, следующий за "1", указывал, присутствует ли короткий или длинный счет. For R3 codes, generating the code words “N2” also requires that the binary digit following “1” indicates whether a short or long count is present.

Используя многочисленные банки данных памяти, настоящее изобретение позволяет работать в конвейерном режиме. Например, в случае многопортового запоминающего устройства операция считывания осуществляется в запоминающем устройстве для некодированного двоичного разряда в то время, как операция записи осуществляется в запоминающем устройстве для предыдущего некодированного двоичного разряда. Using numerous banks of memory data, the present invention allows you to work in a pipelined mode. For example, in the case of a multi-port storage device, a read operation is performed in a storage device for an unencrypted bit, while a write operation is performed in a storage device for a previous unencrypted bit.

Создание выборки Altera AHDL. Create an Altera AHDL Sample.

Один вариант осуществления соответствующего настоящему изобретению генератора двоичных разрядов кодирующего устройства включает в себя программируемую пользователем вентильную матрицу (ППВМ). При создании обрабатывают все коды R2 и R3 вплоть до R2(12). Ниже распечатан исходный код AHDL (язык описания аппаратного средства "Алтера"). One embodiment of an encoder binary generator according to the present invention includes a user programmable gate array (FPGA). During creation, all codes R2 and R3 are processed up to R2 (12). The source code for AHDL (hardware description language Altera) is printed below.

Как показано на фиг. 16, эта схема содержит несколько частей. Первая часть EN СВG является основной частью схемы, в которой имеется логическая схема 1301 для осуществления запуска, окончания и продолжения прогона. Вторая часть KEXPAND 1302 используется для расширения класса вероятности на максимальную длину прогона, маску переменной длины и длину первого длинного кодового слова для кодов R3. Функция KEXPAND 1302 идентична функции декодирующего устройства с тем же названием. Третья часть LPSCW 1303 принимает в качестве входных сигналов величину счета и информацию о классе вероятности и вырабатывает надлежащее кодовое слово "1N". As shown in FIG. 16, this diagram contains several parts. The first part of the CBG EN is the main part of the circuit, in which there is a logic circuit 1301 for starting, ending and continuing the run. The second part of KEXPAND 1302 is used to extend the probability class to the maximum run length, a variable-length mask, and the length of the first long codeword for R3 codes. The KEXPAND 1302 function is identical to the function of the decoder of the same name. The third part of the LPSCW 1303 receives the count value and the probability class information as input signals and generates the appropriate codeword "1N".

В этой схеме используются два конвейерных каскада. Во время работы первого конвейерного каскада счет получает положительное приращение, класс вероятности расширяется и выполняется вычитание и сравнение длинных кодовых слов R3. Все другие операции осуществляются во время работы второго конвейерного каскада (см. табл.13). In this scheme, two conveyor stages are used. During the operation of the first pipeline stage, the count is incremented, the probability class is expanded, and the long codewords R3 are subtracted and compared. All other operations are carried out during operation of the second conveyor cascade (see table 13).

На фиг. 11 представлена блок-схема одного варианта осуществления переупорядочивающего блока. Переупорядочивающий блок 606 содержит блок переупорядочивания счета прогонов 801 и блок уплотнения двоичных разрядов 802. Блок переупорядочивания счета прогонов 801 перемещает кодовые слова с конца прогонов, как это создается кодирующим устройством, к началу прогонов, как это необходимо для декодирующего устройства, в то время как блок компоновки двоичных разрядов 802 объединяет кодовые слова переменной длины в перемежаемые слова постоянной длины и выдает их на выходе в надлежащем порядке, требуемом декодирующим устройством. In FIG. 11 is a block diagram of one embodiment of a reordering block. The reordering unit 606 comprises a reordering unit of the run count 801 and a binary bit compaction unit 802. The reordering unit of the run count 801 moves the code words from the end of the runs, as created by the encoder, to the start of the runs, as necessary for the decoding device, while the block Binary Arrangements 802 Combines variable-length codewords into interleaved constant-length words and outputs them in the proper order required by the decoding device.

В целях переупорядочивания для любого декодирующего устройства можно использовать "поисковое" декодирующее устройство, в котором декодирующее устройство включено в состав кодирующего устройства и обеспечивает запросы данных в том порядке, в котором кодовые слова будут необходимы для действительного декодирующего устройства. Для поддержки "поискового" декодирующего устройства можно осуществлять независимое переупорядочивание счетов прогонов для каждого потока. Для декодирующих устройств, которые легко можно смоделировать, в целях обеспечения возможности переупорядочивания можно использовать очереди с множеством отметок времени или единую объединенную очередность. В одном варианте осуществления изобретения переупорядочивание каждого кодового слова может выполняться с использованием очередеподобной структуры данных и независимо от использования множества потоков кодированных данных. Ниже приводится описание способа осуществления переупорядочивания. For reordering purposes, for any decoding device, a “search” decoding device can be used in which the decoding device is included in the encoding device and provides data requests in the order in which codewords are needed for the actual decoding device. To support the "search" decoding device, independent reordering of run accounts for each stream can be performed. For decoding devices that can be easily modeled, in order to allow reordering, you can use queues with multiple time stamps or a single combined order. In one embodiment of the invention, the reordering of each codeword may be performed using a queue-like data structure and regardless of the use of multiple encoded data streams. The following is a description of a method for performing reordering.

Первая выполняемая в кодирующем устройстве операция переупорядочивания заключается в переупорядочивании каждого из счетов прогонов таким образом, что счет прогонов устанавливается в начале прогона (как этого требует декодирующее устройство для декодирования). Это переупорядочивание требуется потому, что кодирующее устройство до окончания прогона не определяет, какой имеется счет прогонов (и кодовое слово). Таким образом, получающийся в результате счет прогонов, выводимый из кодирования данных, переупорядочивается таким образом, что декодирующее устройство способно должным образом декодировать счеты прогонов обратно в поток данных. The first reordering operation performed by the encoder is to reorder each of the run accounts so that the run count is set at the start of the run (as required by the decoding device for decoding). This reordering is required because the encoder until the end of the run does not determine which run count (and code word) is available. Thus, the resulting run count output from the data encoding is reordered so that the decoding apparatus is able to properly decode the run counts back to the data stream.

Как показано на фиг. 11, соответствующий настоящему изобретению переупорядочивающий блок 606 включает в себя блок переупорядочивания счета прогонов 801 и блок компоновки двоичных разрядов 802. Переупорядочивающий блок счета прогонов 801 подсоединен для приема множества входных сигналов, которые включают в себя сигнал запуска 711, сигнал окончания 712, сигнал индекса 713 и кодовое слово 714. Эти сигналы будут описаны более подробно в связи с блоком переупорядочивания счета прогонов, показанным на фиг.12. В ответ на входные сигналы блок переупорядочивания счета прогонов 801 генерирует кодовое слово 803 и сигнал 804. Сигнал 804 указывает, когда счет прогонов необходимо возвращать в исходное состояние. Кодовое слово 803 принимается блоком компоновки двоичных разрядов 802. В ответ на кодовое слово 803 блок компоновки двоичных разрядов 802 вырабатывает перемежаемые слова 805. As shown in FIG. 11, the reordering unit 606 of the present invention includes a run count reordering unit 801 and a binary bit arrangement unit 802. A run reordering unit 801 is connected to receive a plurality of input signals that include a start signal 711, an end signal 712, an index signal 713 and codeword 714. These signals will be described in more detail in connection with the run-count reordering unit shown in FIG. In response to the input signals, the run count reordering unit 801 generates a codeword 803 and a signal 804. A signal 804 indicates when the run count needs to be reset. The codeword 803 is received by the binary unit 802. In response to the code word 803, the binary unit 802 produces interleaved words 805.

Блок переупорядочивания счета прогонов 801 и блок компоновки двоичных разрядов 802 более подробно описаны ниже. Run count reordering unit 801 and binary bit arrangement unit 802 are described in more detail below.

Блок переупорядочивания счета прогонов. Block reordering run accounts.

Как было описано выше, требуется, чтобы декодирующее устройство принимало кодовые слова в момент времени начала данных, кодируемых с помощью кодового слова. Однако кодирующее устройство не знает идентичности кодового слова до окончания данных, кодированных с помощью кодового слова. As described above, the decoding device is required to receive codewords at the time of the start of the data encoded by the codeword. However, the encoder does not know the identity of the codeword until the end of the data encoded with the codeword.

Блок-схема одного варианта осуществления переупорядочивающего блока счета прогонов 801 показана на фиг. 12. Описываемый вариант осуществления обеспечивает четыре перемежаемых потока, в которых каждое перемежаемое слово содержит 16 двоичных разрядов, а длина кодового слова изменяется от одного до тринадцати двоичных разрядов. В этом случае переупорядочивающий блок 300 может быть конвейеризован для оперирования со всеми потоками. Более того, используется кодирующее устройство, которое связывает счета прогонов с классами вероятности, так что максимальное число счетов прогонов, которое можно активизировать в какое-либо время, мало и для данного варианта осуществления изобретения предполагается равным 25. Отметим, что настоящее изобретение не ограничивается четырьмя перемежаемыми потоками, перемежаемыми словами из 16 двоичных разрядов или длинами кодовых слов от 1 до 13 двоичных разрядов, а его можно использовать для большего или меньшего количества потоков с перемежаемыми словами длиной более или менее 16 двоичных разрядов и длинами кодовых слов в диапазоне от 1 двоичного разряда до более чем 13 двоичных разрядов. A block diagram of one embodiment of a reordering block of run count 801 is shown in FIG. 12. The described embodiment provides four interleaved streams in which each interleaved word contains 16 bits, and the length of the code word varies from one to thirteen binary bits. In this case, the reordering unit 300 may be pipelined to handle all threads. Moreover, an encoder is used that associates run accounts with probability classes so that the maximum number of run accounts that can be activated at any time is small and is assumed to be 25 for this embodiment. Note that the present invention is not limited to four interleaved streams, interleaved words from 16 binary digits or codeword lengths from 1 to 13 binary digits, and it can be used for more or fewer streams with variable aemymi words longer than or less than 16 bits of codewords and lengths in the range from 1 digit up to more than 13 bits.

Как показано на фиг. 12, запоминающее устройство указателя 901 подсоединено для приема входного сигнала индекса 713 и вырабатывает адресный выходной сигнал, который подается на один вход мультиплексора 902. Два других входа мультиплексора 902 подсоединены для приема адреса в форме головного указателя из головного счетчика 903 и адреса в форме хвостового указателя из хвостового счетчика 904. Выходным сигналом мультиплексора 902 является адрес, подаваемый в запоминающее устройство кодовых слов 908 и используемый для обращения к нему. As shown in FIG. 12, a pointer storage device 901 is connected to receive an input signal of index 713 and generates an address output signal that is supplied to one input of the multiplexer 902. Two other inputs of the multiplexer 902 are connected to receive the address in the form of a head pointer from the head counter 903 and the address in the form of a tail pointer from the tail counter 904. The output of multiplexer 902 is the address supplied to the codeword memory 908 and used to access it.

Входной сигнал индекса 713 подается также в качестве входного сигнала в мультиплексор 905. На другой вход мультиплексора 905 поступает входной сигнал кодовых слов 714. Выход мультиплексора 905 подсоединен к входу модуля выявления достоверности 906 и к шине данных 907. Шина данных 907 подсоединена к запоминающему устройству кодовых слов 908 и входу мультиплексора 905. Кроме того, к шине данных 907 подсоединен выход управляющего модуля 909. Входной сигнал запуска 711 и входной сигнал окончания 712 поступают на раздельные входы управляющего модуля 909. Выходные сигналы модуля выявления достоверности 906 содержат выходной сигнал кодовых слов 803 и сигнал 804 (фиг. 7). Переупорядочивающий блок счета прогонов 801 включает в себя также логическую схему управляющего устройства (не показана для исключения усложнения описания настоящего изобретения), предназначенную для координирования работы различных элементов переупорядочивающего блока счета прогонов 801. The input signal of the index 713 is also supplied as an input signal to the multiplexer 905. The input signal of the codewords 714 is received at the other input of the multiplexer 905. The output of the multiplexer 905 is connected to the input of the validation module 906 and to the data bus 907. Data bus 907 is connected to the code memory words 908 and the input of the multiplexer 905. In addition, the output of the control module 909 is connected to the data bus 907. The input start signal 711 and the input end signal 712 are fed to separate inputs of the control module 909. chasing reliability detection unit 906 comprise the output codewords 803 and signal 804 (FIG. 7). The reordering unit of the run count 801 also includes a logic circuit of a control device (not shown to avoid complicating the description of the present invention), designed to coordinate the operation of the various elements of the reordering unit of the run counting 801.

Для повторения цикла обработки входной сигнал индекса 713 идентифицирует прогон. В одном варианте осуществления изобретения индекс указывает один из 25 классов вероятности. В таком случае для представления индекса необходимо пять двоичных разрядов. Отметим, что если используется множество банков данных для классов вероятности, то для определения конкретного банка данных могут потребоваться дополнительные двоичные разряды. В одном варианте осуществления изобретения входной сигнал индекса идентифицирует класс вероятности для счета прогонов. Входной сигнал кодовых слов 714 представляет собой кодовое слово, когда происходит окончание прогона, а в противном случае "не имеет значения". Входной сигнал запуска 711 и входной сигнал окончания 712 являются управляющими сигналами, которые указывают, начинается ли, заканчивается ли прогон или и то и другое. Прогон начинается и заканчивается в одно и то же время, когда прогон состоит из единственного некодированного двоичного разряда. To repeat the processing cycle, the input of index 713 identifies the run. In one embodiment, the index indicates one of 25 probability classes. In this case, five binary digits are required to represent the index. Note that if multiple databanks are used for probability classes, then additional binary bits may be required to determine a particular databank. In one embodiment, an index input identifies a probability class for run counting. The input of the codewords 714 is a codeword when the end of the run occurs, and otherwise "does not matter." The trigger input 711 and the termination input 712 are control signals that indicate whether the run is starting, whether the run is ending, or both. A run starts and ends at the same time that the run consists of a single, non-encoded binary bit.

Переупорядочивающий блок счета прогонов 801 переупорядочивает счеты прогонов, вырабатываемые генератором двоичных разрядов в ответ на его входные сигналы. Запоминающее устройство кодовых слов 908 запоминает кодовые слова во время переупорядочивания. В одном варианте осуществления изобретения запоминающее устройство кодовых слов 908 больше, чем количество счетов прогонов, которые могут быть активированы в одно и то же время. Это ведет к лучшему уплотнению. Если запоминающее устройство кодовых слов меньше, чем количество счетов прогонов, которые могут быть активированы в одно и то же время, то это действительно может ограничивать количество активированных счетов прогонов количеством, которое может храниться в памяти. В системе, которая обеспечивает хорошее уплотнение, часто получается, что когда накапливаются данные для одного кодового слова с длинным счетом прогонов, то начинаются (возможно, также и оканчиваются) множество кодовых слов с короткими счетами прогонов. Это требует наличия большой памяти для исключения вытеснения длинного прогона до его полного завершения. The reordering unit of the run count 801 reorders the run counts generated by the binary generator in response to its input signals. A codeword memory 908 stores codewords during reordering. In one embodiment, the codeword memory 908 is greater than the number of run accounts that can be activated at the same time. This leads to better compaction. If the codeword memory is less than the number of run accounts that can be activated at the same time, then this can indeed limit the number of activated run accounts to the amount that can be stored in memory. In a system that provides good compaction, it often turns out that when data is accumulated for one codeword with a long run count, then many codewords with short run counts begin (and also end). This requires a large memory to prevent crowding out the long run until it is completed.

Запоминающее устройство указателя 901 запоминает адреса местоположений памяти кодовых слов для классов вероятности, которые находятся в середине прогона, и адресует запоминающее устройство кодовых слов 908 в режиме произвольной выборки. Запоминающее устройство указателей 901 имеет ячейку запоминающего устройства для адреса в запоминающем устройстве кодового слова 908 для каждого класса вероятности, который может быть в середине прогона. После того, как прогон завершится для конкретного класса вероятности, адрес, запомненный в запоминающем устройстве указателя 901 для этого класса вероятности, используется для выборки из запоминающего устройства кодовых слов 908, и завершенное кодовое слово записывается в запоминающее устройство кодовых слов 908 в этой ячейке. До этого времени эта ячейка в запоминающем устройстве кодовых слов 908 содержит недействительный элемент. Таким образом, запоминающее устройство указателя 901 запоминает местоположение ошибочного кодового слова для каждого счета прогона. The pointer memory 901 stores the code word memory location addresses for the probability classes that are in the middle of the run, and addresses the codeword memory 908 in a random access mode. The pointer memory 901 has a memory cell for an address in the memory of the codeword 908 for each probability class, which may be in the middle of the run. After the run is completed for a particular probability class, the address stored in the memory of the pointer 901 for this probability class is used to select codewords 908 from the memory, and the completed codeword is written to the codeword memory 908 in this cell. Until this time, this cell in the codeword memory 908 contains an invalid element. Thus, the pointer memory 901 stores the location of the erroneous codeword for each run account.

Головной счетчик 903 и хвостовой счетчик 904 обеспечивают также адреса для доступа в запоминающее устройство кодовых слов 908. Использование головного счетчика 903 и хвостового счетчика 904 позволяет адресовать запоминающее устройство кодовых слов 908 в качестве очереди или кольцевого буфера (например, запоминающее устройство обратного магазинного типа). Хвостовой счетчик 904 содержит адрес следующей имеющейся ячейки в запоминающем устройстве кодовых слов 908 для разрешения введения кодового слова в запоминающее устройство кодовых слов 908. Головной счетчик 903 содержит адрес в запоминающем устройстве кодовых слов 908 следующего подлежащего выведению кодового слова. Другими словами, головной счетчик 903 содержит адрес запоминающего устройства кодовых слов следующего кодового слова, подлежащего аннулированию из запоминающего устройства кодовых слов 908. Местоположение каждого возможного индекса (например, класса вероятности) в запоминающем устройстве указателя 901 используется для запоминания, где находился хвостовой указатель 904, когда был запущен прогон, чтобы в это местоположение в запоминающем устройстве кодовых слов 908 можно было поместить надлежащее кодовое слово при окончании прогона. The head counter 903 and the tail counter 904 also provide addresses for access to the codeword memory 908. Using the head counter 903 and the tail counter 904 allows the codeword memory 908 to be addressed as a queue or ring buffer (e.g., inverse store type memory). The tail counter 904 contains the address of the next available cell in the codeword memory 908 for allowing codeword input into the codeword memory 908. The head counter 903 contains the address in the codeword memory 908 of the next codeword to be output. In other words, the head counter 903 contains the address of the codeword memory of the next codeword to be canceled from the codeword memory 908. The location of each possible index (e.g., probability class) in the memory of pointer 901 is used to store where the tail pointer 904 was located. when the run has been started so that the appropriate codeword can be placed at this location in the codeword memory 908 at the end of the run.

Управляющий модуль 909 вырабатывает сигнал достоверности в качестве части данных, запомненных в запоминающем устройстве кодовых слов 908 для того, чтобы показать, правильно ли запомнено содержимое данных кодовых слов или нет. Например, если двоичный разряд достоверности имеет логический уровень "1", то ячейка запоминающего устройства кодовых слов содержит достоверные данные. Однако если двоичный разряд достоверности представляет логический "0", то ячейка запоминающего устройства кодовых слов содержит недостоверные данные. Модуль выявления достоверности определяет, содержит ли ячейка в запоминающем устройстве правильное кодовое слово каждый раз, когда кодовое слово считывается из запоминающего устройства кодовых слов 908. В одном варианте осуществления изобретения модуль выявления достоверности 906 определяет, имеется ли в ячейке запоминающего устройства правильное кодовое слово или конкретный неверный код. The control module 909 generates a validity signal as part of the data stored in the codeword memory 908 in order to show whether the contents of the data of the codewords are correctly stored or not. For example, if the binary bit of confidence has a logic level of "1", then the cell of the codeword memory device contains valid data. However, if the binary digit of confidence represents a logical “0”, then the cell of the codeword memory contains invalid data. The validation detection module determines whether the cell in the memory contains the correct codeword each time the codeword is read from the codeword memory 908. In one embodiment, the validity detection module 906 determines whether the correct codeword or specific Incorrect code.

Когда запускается новый прогон, содержимое неверных данных вводится в запоминающее устройство кодовых слов 908. Ввод неверных данных действует в качестве держателей промежутка в потоке данных, хранящихся в запоминающем устройстве кодовых слов 908, чтобы при завершении прогона кодовое слово для прогона могло запоминаться в запоминающем устройстве в надлежащей ячейке (для надлежащего упорядочивания при моделировании декодирующего устройства). В одном варианте осуществления изобретения ввод неверных данных включает индекс посредством мультиплексора 905 и индикацию недостоверности (например, двоичный разряд недостоверности) из управляющего модуля 909. Адрес в запоминающем устройстве кодовых слов 908, под которым запоминается неверное содержимое, задается хвостовым указателем 904, а впоследствии запоминается в запоминающем устройстве указателя 901 в качестве напоминания о ячейке для счета прогонов в запоминающем устройстве кодовых слов 908. Остальные данные, которые появляются между головным указателем 903 и хвостовым указателем 904, запоминаются в запоминающем устройстве кодовых слов 908 в виде счетов завершенных прогонов (например, переупорядоченных счетов прогонов). Максимальные количества неверных ячеек запоминающего устройства равно от 0 до l-1, где l - количество счетов прогонов. Когда кодовое слово завершено в конце прогона, счет прогонов заполняется в запоминающем устройстве кодовых слов 908 с использованием адреса, хранящегося в запоминающем устройстве указателя 901. When a new run is started, the contents of the invalid data are entered into the codeword memory 908. The invalid data entry acts as gap holders in the data stream stored in the codeword memory 908, so that when the run is completed, the code word for the run can be stored in the memory in proper cell (for proper ordering when modeling a decoding device). In one embodiment of the invention, the input of incorrect data includes an index by a multiplexer 905 and an indication of an invalid (for example, a binary digit of an invalid) from the control module 909. The address in the memory of the code words 908, under which the invalid content is stored, is set by the tail pointer 904, and subsequently stored in the memory of the pointer 901 as a reminder of the cell for counting runs in the memory of the code words 908. The remaining data that appears between head pointer 903 and the tail pointer 904 stored in the memory 908 codewords in the form of completed runs accounts (e.g., accounts reordered runs). The maximum number of invalid memory cells is 0 to l-1, where l is the number of run counts. When the codeword is completed at the end of the run, the run count is populated in the codeword memory 908 using the address stored in the pointer memory 901.

Когда прогон запущен, индекс прогона запоминается в запоминающем устройстве кодовых слов 908, так что, если запоминающее устройство кодовых слов 908 заполнено, а прогон еще не завершен, индекс используется вместе с сигналом 804 для установления в исходное состояние соответствующего счетчика прогонов. В дополнение к запоминанию кодовых слов или индексов в запоминающем устройстве кодовых слов 908 один двоичный разряд используется для указания, который из этих двух типов данных запоминается. When the run is started, the run index is stored in the codeword memory 908, so that if the codeword memory 908 is full and the run is not yet completed, the index is used with the signal 804 to reset the corresponding run counter. In addition to storing codewords or indices in the codeword memory 908, one binary bit is used to indicate which of these two types of data is stored.

Если нет запуска или окончания прогона, переупорядочивающий блок счета прогонов простаивает. Если произведен запуск прогона и нет окончания прогона и если запоминающее устройство заполнено, то из запоминающего устройства кодовых слов 908 выводится кодовое слово. Выводимое кодовое слово является кодовым словом, запомненным в адресе, содержащемся в головном указателе 903 для этого класса вероятности. Затем, если произведен запуск прогона и нет окончания прогона (независимо от того, заполнена ли память), входной сигнал индекса 713 записывается в запоминающее устройство кодовых слов 908 через мультиплексор 905 по адресу, определяемому хвостовым указателем 904. Затем хвостовой указатель 904 записывается в запоминающее устройство указателя 901 по адресу, определяемому данными во входном сигнале индекса 713 (например, в ячейке запоминающего устройства указателя 901 для класса вероятности). После записи хвостового указателя 904 хвостовой указатель 904 получает положительное приращение. If there is no start or end of the run, the reordering block of the run count is idle. If a run is started and there is no end to the run, and if the storage device is full, then the codeword is output from the codeword memory 908. The output codeword is a codeword stored in the address contained in the head pointer 903 for this probability class. Then, if the run is started and there is no end of the run (regardless of whether the memory is full), the input signal of the index 713 is written to the codeword memory 908 through the multiplexer 905 at the address defined by the tail pointer 904. Then, the tail pointer 904 is written to the memory pointer 901 at the address determined by the data in the input signal of index 713 (for example, in the memory cell of the pointer 901 for the probability class). After writing the tail pointer 904, the tail pointer 904 is incremented.

Если имеется окончание прогона и нет запуска прогона, то адрес, хранящийся в запоминающем устройстве указателя 901, соответствующий индексу (классу вероятности), считывается и используется в качестве ячейки в запоминающем устройстве кодовых слов для запоминания законченного кодового слова во входном сигнале кодового слова 714. If there is an end to the run and there is no start to the run, then the address stored in the memory of the pointer 901 corresponding to the index (probability class) is read and used as a cell in the memory of the code words for storing the completed code word in the input signal of the code word 714.

Если имеются запуск прогона и окончание прогона (то есть прогон начинается и заканчивается в одно и то же время), а память заполнена, то из запоминающего устройства кодовых слов 908 выводится кодовое слово. Затем, если произведены запуск прогона и окончание прогона (независимо от того, заполнена ли память), входной сигнал кодового слова 714 записывается в запоминающее устройство кодовых слов 908 по адресу, определяемому хвостовым указателем 904. Затем хвостовой указатель 904 получает положительное приращение для содержания следующей имеющейся ячейки (например, приращение на 1). If there is a run start and end of the run (that is, the run starts and ends at the same time), and the memory is full, then the code word is output from the codeword memory 908. Then, if the run is started and the run ends (regardless of whether the memory is full), the input of the codeword 714 is written to the codeword memory 908 at the address defined by the tail pointer 904. Then, the tail pointer 904 is incremented to contain the next available cells (e.g. increment by 1).

В настоящем изобретении переупорядочивающий блок счета прогонов 801 может выдавать кодовые слова в различные моменты времени. В одном варианте осуществления изобретения кодовые слова могут выдаваться, когда они верные или неверные. Кодовые слова могут выдаваться, когда они неверные, если существует состояние заполнения памяти, а прогон не завершен. Кроме того, неверные кодовые слова могут выдаваться для поддержания минимальной скорости (то есть для управления скоростью). Неверные кодовые слова могут выдаваться также для выключения из работы запоминающего устройства кодовых слов 908, когда все данные подверглись переупорядочиванию счета прогонов или когда в результате операции установки в исходное состояние переупорядочивающий блок счета прогонов переходит к середине запоминающего устройства кодовых слов 908. Отметим, что в таком случае декодирующее устройство должно быть уведомлено о том, что кодирующее устройство работает таким образом. In the present invention, the reordering unit of the run count 801 may provide codewords at various points in time. In one embodiment of the invention, codewords may be provided when they are true or false. Code words can be issued when they are incorrect, if there is a state of full memory, and the run is not completed. In addition, incorrect codewords may be issued to maintain a minimum speed (i.e., to control the speed). Invalid codewords may also be issued to turn off codewords 908 from the memory when the data is reordered by the run count or when, as a result of the reset operation, the reordering block of the run count goes to the middle of the codeword memory 908. Note that in such In this case, the decoding device should be notified that the encoding device is operating in this way.

Как описано выше, кодовое слово выдается всякий раз, когда заполняется запоминающее устройство кодовых слов 908. После заполнения памяти всякий раз, когда осуществляется ввод (то есть запуск нового кодового слова) в запоминающее устройство кодовых слов 908, осуществляется вывод из запоминающего устройства кодовых слов 908. Отметим, что корректировка содержимого не вызывает вывода из запоминающего устройства кодовых слов 908, когда существует состояние заполнения памяти. То есть, завершение прогона с последующей записью полученного в результате кодового слова в заранее назначенную ему ячейку памяти не вызывает появления вывода из заполненной памяти. Аналогично этому, когда прогон окончен, а соответствующий адрес в запоминающем устройстве указателя 901 и адрес в головном счетчике 903 одни и те же, кодовое слово может быть выдано немедленно, а после этого головной счетчик 903 может получить положительное приращение без обращения в запоминающее устройство кодовых слов 908. В одном варианте осуществления изобретения состояние заполнения памяти происходит, когда хвостовой указатель 904 равен головному указателю 903 после того, как хвостовой счетчик получит положительное приращение. Следовательно, после того, как хвостовой указатель получит положительное приращение, логическая схема управляющего устройства в переупорядочивающем блоке счета прогонов 801 сравнивает хвостовой указатель 904 и головной указатель 903, и если они одинаковые, логическая схема управляющего устройства определяет, что запоминающее устройство кодовых слов 908 заполнено и что должно быть выдано кодовое слово. В другом варианте осуществления изобретения кодовые слова могут выдаваться до заполнения памяти. Например, если часть очереди, адресуемая заголовком, содержит верные кодовые слова, она может быть выдана. Для этого требуется, чтобы начало очереди неоднократно проверялось для определения состояния кодовых слов в ней. Отметим, что запоминающее устройство кодовых слов 908 в конце кодирования файла очищается. As described above, the code word is issued whenever the codeword memory 908 is full. After the memory is full, whenever a codeword 908 is entered (i.e., start a new codeword) into the memory, the codewords 908 are output from the memory Note that adjusting the content does not cause code words 908 to be output from the storage device when a memory full state exists. That is, the completion of the run with the subsequent recording of the resulting code word in a previously assigned memory cell does not cause output from the filled memory. Similarly, when the run is over, and the corresponding address in the pointer memory 901 and the address in the head counter 903 are the same, the code word can be issued immediately, and after that the head counter 903 can receive a positive increment without accessing the code word memory 908. In one embodiment, a memory full state occurs when the tail pointer 904 is equal to the head pointer 903 after the tail counter is incremented. Therefore, after the tail pointer has a positive increment, the logic of the control device in the reordering unit of the run count 801 compares the tail pointer 904 and the head pointer 903, and if they are the same, the logic of the control device determines that the codeword memory 908 is full and that a code word should be issued. In another embodiment, codewords may be output before the memory is full. For example, if the portion of the queue addressed by the header contains valid code words, it may be returned. This requires that the beginning of the queue be checked repeatedly to determine the status of the code words in it. Note that the codeword memory 908 at the end of the file encoding is cleared.

Используя переупорядочивающий блок счета прогонов 801, кодовое слово выдается при первом считывании значения (например, данных) из запоминающего устройства кодовых слов 908 по адресу, определяемому головным указателем 903. Выводом кодовых слов управляет и координирует логическая схема управляющего устройства. Модуль выявления достоверности 906 осуществляет проверку с целью определения, является ли значение кодовым словом. Другими словами, модуль выявления достоверности 906 определяет, верное ли кодовое слово. В одном варианте осуществления изобретения модуль выявления достоверности 906 определяет достоверность любого содержимого путем проверки двоичного разряда достоверности, запомненного с каждым входным сообщением. Если значение является кодовым словом (то есть кодовое слово верное), то значение выдается как кодовое слово. С другой стороны, если значение не является кодовым словом (то есть кодовое слово неверное), то может быть выдано любое кодовое слово, которое имеет прогон символом БВС, по меньшей мере такой же длинный, как текущий счет прогонов. Кодовое слово "0" является одним кодовым словом, которое пока правильно представляет текущий прогон и может быть выдано. После осуществления выдачи головной указатель 903 получает положительное приращение для следующей ячейки в запоминающем устройстве кодовых слов 908. В качестве альтернативы, использование "1N" с самыми короткими возможными длинами прогона позволяет декодирующему устройству проверять, вытеснено ли только кодовое слово до выпуска МВС. Using the reordering block of the run count 801, the code word is issued when the value (for example, data) is first read from the codeword memory 908 at the address defined by the head pointer 903. The logic of the control device controls and coordinates the output of the codewords. A validity detection module 906 checks to determine if the value is a codeword. In other words, the validity detection module 906 determines whether the codeword is correct. In one embodiment of the invention, the validity detection module 906 determines the validity of any content by checking the bit of validity stored with each input message. If the value is a codeword (that is, the correct codeword), then the value is issued as a codeword. On the other hand, if the value is not a codeword (that is, the codeword is incorrect), then any codeword that has a run with the BVS symbol at least as long as the current run count can be returned. Codeword "0" is one codeword that so far correctly represents the current run and can be returned. After issuing the output, the head pointer 903 receives a positive increment for the next cell in the codeword memory 908. Alternatively, using “1N” with the shortest possible run lengths allows the decoding device to check whether only the codeword is crowded out before the MBC is released.

В одном варианте осуществления изобретения переупорядочивающий блок счета прогонов 801 работает с периодом времени двух циклов синхронизации. В первом цикле синхронизации входные сигналы принимаются в переупорядочивающий блок счета прогонов 801. Во втором цикле синхронизации происходит вывод сигнала из запоминающего устройства кодовых слов 908. In one embodiment of the invention, the reordering block of the run count 801 operates with a time period of two synchronization cycles. In the first synchronization cycle, input signals are received in the reordering block of the run count 801. In the second synchronization cycle, the signal is output from the codeword memory 908.

Хотя кодовые слова могут выводиться всякий раз, когда головной указатель 903 адресует правильное кодовое слово, может оказаться желательным в некоторых реализациях выдавать на выход кодовое слово только тогда, когда заполнен буфер. Это вызывает фиксированную задержку в системе в единицах количества кодовых слов вместо переменной задержки. Если запоминающее устройство 908 способно удерживать заранее установленное количество кодовых слов между моментом времени, когда прогон запускается и вводится и когда выводится, задержка составляет это количество кодовых слов, поскольку вывод не производится, пока оно не заполнится. Таким образом, существует постоянная задержка в кодовых словах. Отметим, что задержка переупорядочивания все еще остается переменной в других местах, например, в количестве кодированных или первоначальных данных. Позволяя запоминающему устройству 908 заполняться до осуществления вывода, на выходе вырабатывается кодовое слово за один цикл. Although codewords may be output whenever the head pointer 903 addresses the correct codeword, in some implementations it may be desirable to output the codeword only when the buffer is full. This causes a fixed delay in the system in units of the number of code words instead of a variable delay. If the storage device 908 is capable of holding a predetermined number of code words between the time when the run is started and entered and when it is output, the delay is this number of code words, since the output is not made until it is full. Thus, there is a constant delay in codewords. Note that the reordering delay still remains variable in other places, for example, in the amount of encoded or original data. By allowing the storage device 908 to fill up before output, a codeword is generated at the output in one cycle.

Отметим, что если ячейка запоминающего устройства кодовых слов маркируется как неверная, то можно использовать неиспользованные двоичные разряды для запоминания идентификации, для какого это счета прогона (то есть запоминается в ней контекстный элемент кодированного сигнала или класс вероятности, которые должны заполнять эту ячейку). Эта информация полезна для манипулирования в случае, когда память заполнена. В частности, информацию можно использовать для указания генератора двоичных разрядов, который не закончил кодовое слово для этой конкретной длины прогона, которое теперь должно быть закончено. В таком случае принимается решение вывести первое кодовое слово, которое может появиться из-за состояния заполненной памяти. Таким образом, когда система устанавливает в исходное состояние счетчик прогонов, информация, выраженная через генераторы двоичных разрядов и счеты прогонов, указывает, когда система начнет все сначала. Note that if the cell of the codeword memory device is marked as incorrect, then you can use unused binary digits to remember the identification of what the run count is for (that is, it stores the context element of the encoded signal or the probability class that should fill this cell). This information is useful for manipulation when the memory is full. In particular, the information can be used to indicate a binary generator that has not completed the codeword for this particular run length, which should now be completed. In this case, a decision is made to output the first codeword, which may appear due to the state of full memory. Thus, when the system resets the run counter, the information expressed through binary generators and run counts indicates when the system will start all over again.

Что касается входного сигнала индекса, то по причинам конвейерного режима, когда используются банки классов вероятности, индекс может включать в себя идентификатор банка. То есть, здесь для конкретного класса вероятности может существовать множество счетов прогонов. Например, в случае 80-процентного кода можно использовать два счета прогонов, когда сначала используется один, потом другой. As for the index input, for pipelined reasons, when banks of probability classes are used, the index may include a bank identifier. That is, here for a particular probability class there can be many run accounts. For example, in the case of an 80 percent code, two run accounts can be used when one is used first, then the other.

Поскольку кодовые слова имеют переменную длину, они должны запоминаться в запоминающем устройстве кодовых слов 908 таким образом, который позволит установить их длину. Хотя было бы возможным запомнить размер в явном виде, это не минимизировало бы использование запоминающего устройства. В случае R-кодов запоминание значения нуля в памяти может индицировать одноразрядное кодовое слово "0", а кодовые слова "1N" могут запоминаться так, что для определения длины от первого двоичного разряда "1" можно использовать кодер приоритета. Since the codewords have a variable length, they must be stored in the memory of the codewords 908 in a way that allows you to set their length. Although it would be possible to remember the size explicitly, this would not minimize the use of the storage device. In the case of R-codes, storing the value of zero in the memory can indicate a one-bit code word "0", and code words "1N" can be stored so that a priority encoder can be used to determine the length from the first binary bit "1".

Если запоминающее устройство кодовых слов 908 многопортовое (например, двухпортовое), эту конструкцию можно конвейеризировать для оперирования одним кодовым словом за один цикл синхронизации. Поскольку с большого количества портов можно осуществлять доступ к любой ячейке в запоминающем устройстве кодовых слов 908, в ячейке запоминающего устройства кодовых слов можно записывать, например, когда запоминается неверная информация или кодовое слово, в то время как другой участок можно считывать, например, когда кодовое слово выводится. Отметим, что в таком случае мультиплексоры могут быть модифицированы для обеспечения множества шин данных и адресов. If the codeword memory 908 is multi-port (for example, dual-port), this design can be pipelined to operate with one codeword per synchronization cycle. Since a large number of ports can access any cell in the codeword memory 908, codewords can be recorded in a memory cell, for example, when incorrect information or a codeword is stored, while another section can be read, for example, when the codeword the word is displayed. Note that in this case, the multiplexers can be modified to provide multiple data buses and addresses.

Всякий раз, когда кодирующее устройство дает на выходе кодовое слово "0" и устанавливает счетчик прогонов в исходное состояние, так как запоминающее устройство кодовых слов заполнено, декодирующее устройство должно делать то же самое. Это требует, чтобы декодирующее устройство моделировало очередь запоминающего устройства кодовых слов кодирующего устройства. Ниже будет описано, каким образом это выполняется. Whenever the encoder outputs the code word "0" and sets the run counter to its initial state, since the codeword memory is full, the decoder should do the same. This requires the decoding device to simulate the storage queue of the codewords of the encoding device. Below will be described how this is done.

Отметим, что для экономии энергии при реализациях комплементарных МОП-структур счетчики можно блокировать для кодовых слов "1N", когда кодовые слова "0" выводятся в отношении неверных прогонов. Это происходит потому, что декодируемое кодовое слово "1N" правильное, в то время как неверным может быть только кодовое слово "0". Note that to save energy when implementing complementary MOS structures, the counters can be blocked for code words "1N" when code words "0" are output for incorrect runs. This is because the decoded codeword "1N" is correct, while only the codeword "0" can be incorrect.

Альтернативный вариант осуществления изобретения, основанный на контексте. An alternative embodiment of the invention based on context.

На фиг. 13 представлена блок-схема другого варианта осуществления переупорядочивающего блока счета прогонов, который переупорядочивает данные, принимаемые в соответствии с контекстом (в противоположность классу вероятности). Переупорядочивающий блок счета прогонов 1000 осуществляет переупорядочивание с использованием R-кодов. Рассматривая фиг.13, отметим, что переупорядочивающий блок 1000 включает в себя запоминающее устройство указателя 1001, головной счетчик 1002, хвостовой счетчик 1003, мультиплексор данных 1004, мультиплексор адреса 1005, блок вычисления длины 1006, блок выявления достоверности 1007 и запоминающее устройство кодовых слов 1008. Запоминающее устройство кодовых слов 1008 запоминает кодовые слова во время переупорядочивания. Запоминающее устройство указателя 1001 запоминает адреса ячеек запоминающего устройства кодовых слов для контекстных элементов кодированного сигнала, которые расположены в середине прогона. Головной счетчик 1002 и хвостовой счетчик 1003 позволяют адресовать запоминающее устройство кодовых слов 1008 в виде очереди или кольцевого буфера в дополнение к адресации методом произвольной выборки запоминающим устройством указателя 1001. В случае R-кодов запоминание значения нуля в памяти может указывать одноразрядное кодовое слово "0", а кодовые слова "1N" могут запоминаться так, что для определения длины от первого двоичного разряда "1" можно использовать кодер приоритета. Модуль вычисления длины 1006 функционирует подобно кодеру приоритета. (Если бы использовались другие неравномерные коды, то для точного запоминания длины было бы эффективнее в память добавлять двоичный разряд "1" с целью маркировки запуска кодового слова, чем добавлять log2 двоичных разрядов.) Переупорядочивающий блок счета прогонов 1000, кроме того, включает в себя логическую схему управляющего устройства обратными этапами для координирования и управления работой компонентов 1001-1008.In FIG. 13 is a block diagram of another embodiment of a reordering block of run counts that reorders data received in accordance with a context (as opposed to a probability class). The reordering unit of the run count 1000 performs reordering using R codes. Referring to FIG. 13, note that the reordering unit 1000 includes a pointer storage device 1001, a head counter 1002, a tail counter 1003, a data multiplexer 1004, an address multiplexer 1005, a length calculating unit 1006, a validity detecting unit 1007, and a codeword memory 1008 A codeword memory 1008 stores codewords during reordering. The memory of the pointer 1001 stores the addresses of the cells of the codeword memory for the context elements of the encoded signal that are located in the middle of the run. The head counter 1002 and the tail counter 1003 allow addressing the memory of the codewords 1008 as a queue or a ring buffer in addition to the random access address of the pointer 1001. In the case of R-codes, storing the value of zero in the memory can indicate a one-bit codeword "0" and the code words “1N” can be stored so that a priority encoder can be used to determine the length from the first binary bit “1”. The length calculator 1006 functions like a priority encoder. (If other non-uniform codes were used, it would be more efficient to add the binary digit “1” to the memory to mark the length of the code to mark the start of the code word than to add log 2 binary digits.) The reordering block of the run count 1000 also includes the logic of the control device in reverse steps to coordinate and control the operation of components 1001-1008.

Функционирование переупорядочивающего блока счета прогонов 1000 очень похоже на функционирование переупорядочивающего блока счета прогонов, основанного на оценках вероятности. Если начинается новый прогон, то неверное содержимое, включающее в себя контекстный элемент кодированного сигнала, записывается в запоминающее устройство кодовых слов 1008 по адресу, указанному хвостовым указателем 1003. После этого адрес хвостового указателя 1003 запоминается в запоминающем устройстве указателя 1001 по адресу контекстного элемента кодированного сигнала текущего счета прогонов. Затем хвостовой указатель 1003 получает положительное приращение. При завершении указатель в запоминающем устройстве указателя 1001, соответствующий счету прогонов, считывается из запоминающего устройства указателя 1001, а кодовое слово параллельно записывается в запоминающее устройство кодовых слов 1008 в ячейке, указанной этим указателем. Если не происходит ни запуск, ни окончание прогона и если указанная адресом головного указателя 1002 ячейка в запоминающем устройстве кодовых слов 1008 не содержит неверных данных, то адресуемое головным указателем кодовое слово считывается и выводится. Затем головной указатель 1002 получает приращение. В том случае, если прогон начинается и заканчивается в одно и то же время, кодовое слово записывается в запоминающее устройство кодовых слов 1008 по адресу, указанному хвостовым указателем 1003, и после этого хвостовой указатель 1003 получает приращение. The functioning of the reordering block of the run count 1000 is very similar to the functioning of the reordering block of the run count based on probability estimates. If a new run begins, then the incorrect content, including the context element of the encoded signal, is written to the codeword memory 1008 at the address indicated by the tail pointer 1003. After that, the address of the tail pointer 1003 is stored in the pointer memory 1001 at the address of the encoded signal context element current account runs. Then, the tail pointer 1003 receives a positive increment. Upon completion, the pointer in the memory of the pointer 1001 corresponding to the run count is read from the memory of the pointer 1001, and the code word is written in parallel to the memory of the code words 1008 in the cell indicated by this pointer. If neither the start nor the end of the run occurs, and if the cell indicated by the address of the head pointer 1002 in the codeword memory 1008 does not contain invalid data, then the code word addressed by the head pointer is read and displayed. Then, the head pointer 1002 is incremented. In the event that the run starts and ends at the same time, the code word is written to the codeword memory 1008 at the address indicated by the tail pointer 1003, and then the tail pointer 1003 is incremented.

Подобно этому, когда прогон заканчивается и соответствующий адрес в запоминающем устройстве указателя 1001 и адрес в головном счетчике 1002 одни и те же, кодовое слово может быть выведено немедленно, а значение в головном счетчике 1002 может получить приращение без обращения к запоминающему устройству кодовых слов 1008. Similarly, when the run ends and the corresponding address in the pointer memory 1001 and the address in the head counter 1002 are the same, the code word can be output immediately, and the value in the head counter 1002 can be incremented without accessing the code word memory 1008.

Для систем счета прогонов "с помощью контекста" каждый контекст требует ячейку памяти в запоминающем устройстве указателя 1001, так что емкость запоминающего устройства состояния генератора последовательности бит (ГПБ) и модуля оценки вероятности (MOB) можно увеличить с целью обеспечения этой памяти. Емкость запоминающего устройства указателя 1001 равна емкости, необходимой для адреса запоминающего устройства кодовых слов. For context-assisted run counting systems, each context requires a memory location in the pointer memory 1001, so that the capacity of the status memory of the bit sequence generator (GPB) and the probability estimation module (MOB) can be increased to provide this memory. The storage capacity of the pointer 1001 is equal to the capacity required for the address of the storage of codewords.

Количество ячеек в запоминающем устройстве кодовых слов 1008 может быть выбрано разработчиком при конкретной реализации. Ограниченная емкость этой памяти снижает эффективность уплотнения, так что существует компромисс между стоимостью и уплотнением. Емкость запоминающего устройства кодовых слов определяется размером самого большого кодового слова плюс один двоичный разряд для указания достоверности-недостоверности. The number of cells in the codeword memory 1008 may be selected by the developer in a particular implementation. The limited capacity of this memory reduces compaction efficiency, so there is a trade-off between cost and compaction. The capacity of the codeword memory is determined by the size of the largest codeword plus one binary bit to indicate validity.

Для иллюстрации переупорядочивания будет представлен пример использования кода R2(2), показанный в табл. 14. В табл.15 показаны подлежащие переупорядочиванию данные /0 = БВС (наиболее вероятный символ); 1 = МВС (наименее вероятный символ)/, отмеченные контекстом. Имеются только два контекста. Указаны запуск и окончание прогонов, а кодовые слова показаны в конце прогонов. To illustrate the reordering, an example of using the R2 (2) code shown in Table 1 will be presented. 14. Table 15 shows the data to be reordered / 0 = BVS (the most probable symbol); 1 = MVS (least probable symbol) /, marked by context. There are only two contexts. Run start and end are indicated, and code words are shown at the end of runs.

Операция переупорядочивания переменных данных показана в табл. 16. Использовано запоминающее устройство кодовых слов с четырьмя ячейками 0-3, которые достаточно большие для исключения переполнения в этом примере. В каждой строке показано состояние системы после операции, которая представляет собой либо запуск, либо окончание прогона для некоторого контекста или вывода кодового слова. Символ "x" используется для указания ячеек памяти, которые "безразличны". В отношении некоторых некодированных двоичных разрядов прогон не запускается и не останавливается, так что переупорядочивающий блок счета прогонов простаивает. Для кодированных двоичных разрядов, у которых закончены прогоны, могут выдаваться одно или больше кодовых слов, что может вызывать несколько изменений в состоянии системы. The reordering operation of variable data is shown in Table. 16. A codeword memory device with four cells 0-3 is used that are large enough to avoid overflow in this example. Each line shows the state of the system after the operation, which is either the start or the end of the run for some context or codeword output. The symbol "x" is used to indicate memory cells that are "indifferent." For some non-encoded binary bits, the run does not start or stop, so the reordering block of the run count is idle. For coded bits that have completed runs, one or more codewords may be output, which may cause several changes in the state of the system.

В соответствии c табл. 16 головной и хвостовой указатели устанавливаются в ноль, указывая, что в запоминающем устройстве кодовых слов ничего не содержится (например, очереди). Показано, что запоминающее устройство указателя имеет две ячейки памяти, по одной для каждого контекста. Каждая ячейка имеет "безразличные" значения до прихода разряда номер один. Показано запоминающее устройство кодовых слов с глубиной, равной четырем кодовым словам, которые все первоначально имеют "безразличные" значения. In accordance with table. 16, the head and tail pointers are set to zero, indicating that nothing is contained in the codeword memory (e.g., a queue). It is shown that the pointer memory has two memory cells, one for each context. Each cell has “indifferent” values until the arrival of discharge number one. Shows a codeword storage device with a depth equal to four codewords, which all initially have "indifferent" meanings.

В ответ на принятые данные для двоичного разряда номер 1 головной указатель сохраняет указание на ячейку 0 запоминающего устройства кодовых слов. Поскольку декодирующее устройство будет ожидать данные, следующая имеющаяся ячейка 0 запоминающего устройства кодовых слов назначается кодовому слову, а неверное значение записывается в ячейку памяти 0. Поскольку контекст равен нулю, адрес назначенной кодовому слову ячейки запоминающего устройства кодовых слов запоминается в ячейке запоминающего устройства указателя для нулевого контекста (ячейка 0 запоминающего устройства указателя). Таким образом, в ячейке 0 запоминающего устройства указателя запоминается "0". Хвостовой указатель получает приращение до следующей ячейки 1 запоминающего устройства кодовых слов. In response to the received data for the binary digit number 1, the head pointer stores an indication of cell 0 of the codeword memory device. Since the decoding device will wait for data, the next available cell 0 of the codeword memory is assigned to the codeword, and the incorrect value is written to memory 0. Since the context is zero, the address of the codeword memory cell assigned to the codeword is stored in the pointer memory cell for zero context (cell 0 of the pointer storage device). Thus, in cell 0 of the pointer memory, “0” is stored. The tail pointer increments to the next cell 1 of the codeword memory.

В ответ на данные, соответствующие двоичному разряду номер 2, головной счетчик сохраняет указание на первую ячейку памяти (поскольку не было вывода, вызывающего приращение). Поскольку данные соответствуют второму контексту, то есть контексту 1, следующая ячейка запоминающего устройства кодовых слов назначается кодовому слову в качестве ячейки 1 запоминающего устройства кодовых слов, указываемой хвостовым указателем, а в ячейку записываются неверные данные. Адрес, то есть ячейка 1 кодового слова, записывается в ячейку запоминающего устройства указателя, соответствующую контексту 1. То есть, адрес второй ячейки запоминающего устройства кодового слова записывается в ячейку 1 запоминающего устройства указателя. После этого хвостовой указатель получает приращение. In response to the data corresponding to bit number 2, the head counter stores an indication of the first memory cell (since there was no output causing the increment). Since the data corresponds to the second context, that is, context 1, the next cell of the codeword memory is assigned to the codeword as cell 1 of the codeword memory indicated by the tail pointer, and incorrect data is written to the cell. The address, that is, codeword cell 1, is recorded in the pointer memory cell corresponding to context 1. That is, the address of the second codeword memory cell is recorded in cell 1 of the pointer memory. After that, the tail pointer is incremented.

В ответ на данные, соответствующие двоичным разрядам номер 3, переупорядочивающий блок простаивает, поскольку прогон не запускается и не оканчивается. In response to the data corresponding to bits 3, the reordering block is idle because the run does not start and does not end.

В ответ на соответствующие двоичному разряду номер 4 данные для контекста 1 указывается окончание прогона. Поэтому в ячейку запоминающего устройства кодовых слов, назначенную для контекста 1, записывается кодовое слово "101" (ячейка 1 запоминающего устройства кодовых слов), как указывает ячейка запоминающего устройства указателя для контекста 1. Головной и хвостовой указатели остаются теми же самыми, а значение в ячейке запоминающего устройства указателя для контекста 1 не будет использоваться снова, поэтому оно "безразлично". In response to the corresponding binary digit number 4 data for context 1 indicates the end of the run. Therefore, the codeword “101” (cell 1 of the codeword memory device) is written to the codeword memory cell assigned to context 1, as indicated by the pointer memory cell for context 1. The head and tail pointers remain the same, and the value in the pointer memory cell for context 1 will not be used again, therefore it is "indifferent".

В ответ на данные, соответствующие двоичному разряду номер 5, переупорядочивающий блок не занят, поскольку нет ни запуска, ни окончания прогона. In response to the data corresponding to the binary digit number 5, the reordering block is not busy, because there is no start or end of the run.

В ответ на данные, соответствующие двоичному разряду номер 6, происходит тот же тип операций, который описан выше для двоичного разряда номер 2. In response to the data corresponding to the binary digit number 6, the same type of operation occurs as described above for the binary digit number 2.

В ответ на данные, соответствующие двоичному разряду номер 7, происходит окончание прогона кодового слова для контекста 0. В этом случае в ячейку запоминающего устройства кодовых слов (ячейка 0 запоминающего устройства кодовых слов) записывается кодовое слово "0", как указано ячейкой запоминающего устройства указателя для контекста 0 (ячейка 0 запоминающего устройства указателя). После этого значение в ячейке запоминающего устройства указателя не будет снова использоваться, так что оно оказывается "безразличным". Кроме того, ячейка запоминающего устройства кодового слова, обозначаемая головным указателем, содержит верные данные. Поэтому верные данные выводятся, а головной указатель получает приращение. Приращение головного указателя обуславливает указание им на другую ячейку запоминающего устройства кодовых слов, содержащую верное кодовое слово. Следовательно, это кодовое слово выводится, а головной указатель снова получает приращение. Отметим, что в этом примере кодовые слова выводятся тогда, когда они оказываются готовыми, в противоположность случаю, когда запоминающее устройство кодовых слов полностью заполнено. In response to the data corresponding to bit number 7, the codeword run for context 0 ends. In this case, the codeword "0" is written to the codeword memory cell (cell 0 of the codeword memory), as indicated by the pointer memory cell for context 0 (cell 0 of the pointer storage device). After that, the value in the cell of the pointer memory will not be used again, so that it turns out to be "indifferent". In addition, a codeword memory cell designated by a head pointer contains valid data. Therefore, the correct data is output, and the head pointer is incremented. The increment of the head pointer causes them to point to another cell in the memory of the code words containing the correct code word. Therefore, this codeword is output, and the leading pointer is incremented again. Note that in this example, codewords are output when they are ready, as opposed to when the codeword memory is full.

Обработка некодированных двоичных разрядов продолжается в соответствии с приведенным выше описанием. Отметим, что ячейки запоминающего устройства кодовых слов не назначаются для использования конкретных контекстов, так что кодовые слова из любого контекста могут запоминаться в данной ячейке запоминающего устройства кодовых слов на всем протяжении кодирования файла данных. Processing of non-encoded bits is continued as described above. Note that codeword memory cells are not assigned to use specific contexts, so codewords from any context can be stored in a given codeword memory cell throughout the encoding of the data file.

Блок компоновки двоичных разрядов. Binary Layout Block.

Компоновка двоичных разрядов иллюстрируется на фиг. 7, где показаны данные, обработанные с помощью переупорядочивающего блока до и после компоновки двоичных разрядов. На фиг. 7 показаны шестнадцать кодовых слов переменной длины, пронумерованные с 1 по 16 для указания порядка использования их декодирующим устройством. Каждое кодовое слово назначается одному из трех кодированных потоков. Данные в каждом кодированном потоке разбиваются на слова фиксированной длины, называемые перемежаемыми словами. (Отметим, что одно кодовое слово переменной длины может быть разбито на два перемежаемых слова. ) В этом примере перемежаемые слова упорядочены в одном перемежаемом потоке, так что порядок первого кодового слова переменной длины (или частичного кодового слова) в конкретном слове с чередованием (перемежением) определяет порядок слова с чередованием. Могут выполняться другие типы критериев упорядочивания. Преимущество чередования множества кодированных потоков заключается в том, что для передачи данных можно использовать один канал кодированных данных и что можно осуществлять сдвигание переменной длины для каждого потока параллельным или конвейерным образом. The binary arrangement is illustrated in FIG. 7, which shows data processed by a reordering block before and after the arrangement of the bits. In FIG. 7 shows sixteen variable-length codewords numbered 1 through 16 to indicate how they are used by the decoding device. Each codeword is assigned to one of three coded streams. The data in each encoded stream is broken up into words of a fixed length, called interleaved words. (Note that one variable-length codeword can be split into two interleaved words.) In this example, interleaved words are ordered in a single interleaved stream, so that the order of the first variable-length codeword (or partial codeword) in a particular interleaved (interleaved) word ) determines the word order with alternation. Other types of ordering criteria may be fulfilled. The advantage of interleaving a plurality of encoded streams is that one channel of encoded data can be used to transmit data and that variable length shifting can be performed for each stream in a parallel or pipelined manner.

Соответствующий настоящему изобретению блок компоновки двоичных разрядов 802 принимает кодовые слова переменной длины из переупорядочивающего блока счета прогонов 801 и компонует их в перемежаемые слова. Блок компоновки двоичных разрядов 802 содержит логическую схему для осуществления манипулирования кодовыми словами переменной длины и блок переупорядочивания типа объединенной очередности для вывода перемежаемых слов фиксированной длины в правильном порядке. В одном варианте осуществления изобретения кодовые слова принимаются из переупорядочивающего блока счета прогонов со скоростью вплоть до одного кодового слова за тактовый цикл. Блок-схема одного варианта осуществления блока компоновки двоичных разрядов 802 показана на фиг. 14. В следующем варианте осуществления изобретения используются четыре перемежаемых потока, каждое перемежаемое слово состоит из 16 разрядов, а длина кодового слова изменяется от одного до тридцати двоичных разрядов. В одном варианте осуществления изобретения для манипулирования всеми потоками конвейеризируется единственный блок компоновки двоичных разрядов. Если в соответствующем настоящему изобретению блоке компоновки двоичных разрядов 802 используется двухпортовое запоминающее устройство (или регистровый файл), оно может выдавать одно перемежаемое слово за тактовый цикл. Это может оказаться быстрее, чем требуется для согласования с остальной частью кодирующего устройства. The binary unit 802 according to the present invention receives variable-length codewords from the reordering unit of the run count 801 and composes them into interleaved words. The binary arrangement unit 802 comprises a logic circuit for manipulating variable-length codewords and a reordering unit of a combined order type for outputting interleaved words of a fixed length in the correct order. In one embodiment, codewords are received from the reordering block of the run count at a rate of up to one codeword per clock cycle. A block diagram of one embodiment of a binary bit arrangement unit 802 is shown in FIG. 14. In a further embodiment of the invention, four interleaved streams are used, each interleaved word consists of 16 bits, and the length of the code word varies from one to thirty binary bits. In one embodiment, a single binary arrangement block is pipelined to manipulate all streams. If a dual-port memory device (or register file) is used in the binary bitmap unit 802 according to the present invention, it can output one interleaved word per clock cycle. This may be faster than required for coordination with the rest of the encoder.

Как показано на фиг. 14, блок компоновки двоичных разрядов 802 включает в себя компонующую логическую схему 1101, счетчик потоков 1102, запоминающее устройство 1103, хвостовые указатели 1104 и головной счетчик 1105. As shown in FIG. 14, the binary unit 802 includes a component logic 1101, a stream counter 1102, a memory 1103, tail indicators 1104, and a head counter 1105.

Компонующая логическая схема 1101 подсоединена для приема кодовых слов и подсоединена к счетчику потоков 1102. Счетчик потоков 1102 также подсоединен к запоминающему устройству 1103. К запоминающему устройству 1103, кроме того, подсоединены хвостовые указатели 1104 и головной счетчик 1105. A component logic circuit 1101 is connected to receive codewords and connected to a stream counter 1102. A stream counter 1102 is also connected to a storage device 1103. To the storage device 1103, tail indicators 1104 and a head counter 1105 are also connected.

Счетчик потоков 1102 отслеживает перемежаемый поток, с которым связано текущее входное кодовое слово. В одном варианте осуществления изобретения счетчик потоков 1102 повторно считает потоки от 0 до N-1, где N - количество потоков. После того, как счетчик потоков 1102 достигнет величины N-1, он снова начинает считать с 0. В одном варианте осуществления изобретения счетчик потоков 1102 является двухразрядным счетчиком и считает от 0 до 3 (для четырех перемежаемых потоков). В этом варианте осуществления изобретения счетчик потоков устанавливается в ноль (например, посредством общего сброса в исходное состояние). A stream counter 1102 monitors the interleaved stream to which the current input codeword is associated. In one embodiment of the invention, thread counter 1102 re-counts threads 0 through N-1, where N is the number of threads. After the stream counter 1102 reaches a value of N-1, it starts counting again from 0. In one embodiment, the stream counter 1102 is a two-bit counter and counts from 0 to 3 (for four interleaved streams). In this embodiment, the thread counter is set to zero (for example, by means of a general reset).

Компонующая логическая схема 1101 объединяет текущее входное кодовое слово с предыдущими входными кодовыми словами для формирования перемежаемых кодовых слов. Длина каждого из кодовых слов может меняться. Поэтому компонующая логическая схема 1101 компонует эти кодовые слова переменной длины в слова фиксированной длины. Созданные с помощью компонующей логической схемы 1101 перемежаемые кодовые слова выводятся в запоминающее устройство 1103 по порядку и хранятся в запоминающем устройстве 1103 до надлежащего времени для их вывода. В одном варианте осуществления изобретения запоминающее устройство 1103 представляет собой статистическое запоминающее устройство с произвольной выборкой (СЗУПВ) или регистровый файл с шестьюдесятью четырьмя 16-разрядными словами. The component logic 1101 combines the current input codeword with the previous input codewords to form interleaved codewords. The length of each of the code words may vary. Therefore, the component logic 1101 composes these variable-length codewords into fixed-length words. The interleaved codewords generated by the component logic 1101 are output to the memory 1103 in order and stored in the memory 1103 until the appropriate time for output. In one embodiment, storage device 1103 is a random access statistical storage device (RAM) or a register file with sixty-four 16-bit words.

Перемежаемые слова запоминаются в запоминающем устройстве 1103. В настоящем изобретении емкость запоминающего устройства 1103 достаточно большая для манипулирования словами в двух случаях. Один случай нормальной работы, когда один перемежаемый поток имеет кодовые слова минимальной длины, а другие перемежаемые потоки имеют кодовые слова максимальной длины. Этот первый случай требует 3•13=39 ячеек памяти. Другой случай представляет собой случай инициализации, где опять один поток имеет кодовые слова минимальной длины, или короткие кодовые слова, а другие потоки имеют кодовые слова максимальной длины, или длинные кодовые слова. Для второго случая, хотя достаточно 2•3•13= 78 ячеек памяти, работа модуля MOB позволяет теснее связывать 56-ю ячейками. The interleaved words are stored in the storage device 1103. In the present invention, the capacity of the storage device 1103 is large enough to manipulate words in two cases. One case of normal operation, when one interleaved stream has code words of minimum length, and other interleaved flows have code words of maximum length. This first case requires 3 • 13 = 39 memory cells. Another case is the initialization case, where again one stream has code words of minimum length, or short code words, and other threads have code words of maximum length, or long code words. For the second case, although 2 • 3 • 13 = 78 memory cells are sufficient, the operation of the MOB module makes it possible to more closely link 56 cells.

Переупорядочение выполняет запоминающее устройство 1003 совместно со счетчиком потоков 1102 и хвостовыми указателями 1104. Счетчик потоков 1102 указывает текущий поток кодового слова, принимаемого запоминающим устройством 1103. Каждый из перемежаемых потоков связан по меньшей мере с одним хвостовым указателем. Хвостовые указатели 1104 и головной счетчик 1105 осуществляют переупорядочивание кодовых слов. Причина, по которой нужно иметь два хвостовых указателя на поток, следует из слова чередования N, запрашиваемого декодирующим устройством, когда данные в перемежаемом слове N-1 содержат запуск следующего кодового слова. Один хвостовой указатель определяет ячейку в запоминающем устройстве 1103 для запоминания следующего перемежаемого слова из данного перемежаемого потока. Другой хвостовой указатель определяет ячейку в запоминающем устройстве для запоминания слова с чередованием после следующего такого слова. Это позволяет определить ячейку слова N с чередованием, когда время запроса декодером слова N-1 с чередованием известно. В одном варианте осуществления изобретения указатели представляют собой восемь 6-разрядных регистров (два хвостовых указателя на поток). Reordering is performed by the storage device 1003 in conjunction with the stream counter 1102 and the tail pointers 1104. The stream counter 1102 indicates the current codeword stream received by the memory 1103. Each of the interleaved streams is associated with at least one tail pointer. The tail pointers 1104 and the head counter 1105 reorder the codewords. The reason why you need to have two tail pointers to the stream follows from the interleaving word N, requested by the decoding device, when the data in the interleaved word N-1 contain the start of the next codeword. One tail pointer defines a cell in memory 1103 for storing the next interleaved word from a given interleaved stream. Another tail pointer identifies a cell in a memory for storing an alternating word after the next such word. This allows you to determine the cell of the word N with alternation, when the time of requesting the decoder for the word N-1 with alternation is known. In one embodiment, the pointers are eight 6-bit registers (two tail pointers to a stream).

В одном варианте осуществления изобретения в начале кодирования хвостовые указатели 1104 устанавливаются так, что первые восемь слов с чередованием (два из каждого потока) запоминаются в запоминающем устройстве 1103 в последовательности по одному из каждого потока. После инициализации всякий раз, когда компонующее логическое устройство 1101 начинает новое слово с чередованием для конкретного кодового потока, "следующий" хвостовой указатель устанавливают на значение "после следующего" хвостового указателя, а хвостовой указатель "после следующего" для кодового потока устанавливают на следующую имеющуюся ячейку памяти. Таким образом, для каждого потока имеются два хвостовых указателя. В другом варианте осуществления изобретения для каждого потока используют только один хвостовой указатель, и он указывает, где следующее перемежаемое слово следует запоминать в запоминающем устройстве 1103. In one embodiment, at the beginning of the coding, the tail pointers 1104 are set so that the first eight interleaved words (two from each stream) are stored in memory 1103 in a sequence of one from each stream. After initialization, whenever the composing logic device 1101 starts a new word with alternation for a particular codestream, the “next” tail pointer is set to “after the next” tail pointer, and the tail pointer “after the next” for the code stream is set to the next available cell memory. Thus, for each stream, there are two tail pointers. In another embodiment, only one tail pointer is used for each stream, and it indicates where the next interleaved word should be stored in memory 1103.

Головной счетчик 1105 используется для определения ячейки памяти для вывода следующего слова с чередованием из блока компоновки двоичных разрядов 802. В описываемом варианте осуществления изобретения головной счетчик 1105 содержит 6-разрядный счетчик, который получает приращение для вывода всего слова с чередованием сразу. The head counter 1105 is used to determine a memory location for outputting the next word interleaved from the binary unit 802. In the described embodiment, the head counter 1105 contains a 6-bit counter that increments to output the entire word interleaved at once.

Запоминающее устройство 1103 в дополнение к использованию его для переупорядочивания можно также использовать в качестве буфера обратного магазинного типа (FIFO) между кодирующим устройством и каналом. Может оказаться желательным иметь запоминающее устройство с большей емкостью, чем требуется для переупорядочивания, поэтому для останова кодирующего устройства можно использовать сигнал почти заполненного FIFO, если канал не может поддерживать кодирующее устройство. Кодирующее устройство типа один двоичный разряд на цикл не может генерировать одно слово с чередованием за цикл. Когда кодирующее устройство хорошо согласовано с каналом, канал не принимает слово с чередованием на каждый цикл, и поэтому необходима некоторая FIFO-буферизация. Например, канал, который может принимать 16-разрядное слово с чередованием каждые 32 тактовых цикла, может представлять собой хорошо согласованный вариант для эффективного расширения полосы пропускания 2:1 или больше. Storage device 1103, in addition to using it for reordering, can also be used as a reverse store type (FIFO) buffer between the encoder and the channel. It may be desirable to have a memory device with a larger capacity than that required for reordering, so an almost full FIFO signal can be used to stop the encoder if the channel cannot support the encoder. An encoder of the type of one binary digit per cycle cannot generate one interleaved word per cycle. When the encoder is well aligned with the channel, the channel does not receive an interleaved word for each cycle, and therefore some FIFO buffering is required. For example, a channel that can receive a 16-bit word interleaved every 32 clock cycles can be a well-matched option for effectively expanding a bandwidth of 2: 1 or more.

Блок-схема компонующей логической схемы показана на фиг. 15. Компонующая логическая схема 1101 состоит из размерного блока 1201, набора накапливающих сумматоров 1202, сдвигающего устройства 1203, мультиплексора 1204, набора регистров 1205 и логического вентиля ИЛИ 1206. Размерный блок 1201 подсоединен для приема кодовых слов и подсоединен к накапливающим сумматорам 1202. Накапливающие сумматоры подсоединены к сдвигающему устройству 1203, на который поступают также кодовые слова. Сдвигающее устройство 1203 подсоединено к мультиплексору 1204 и логическому вентилю ИЛИ 1206. Мультиплексор 1204 подсоединен также к регистрам 1205 и выходу логического вентиля ИЛИ 1206. Регистры, кроме того, подсоединены к логическому вентилю ИЛИ 1206. A block diagram of a component logic circuit is shown in FIG. 15. The component logic circuit 1101 consists of a size block 1201, a set of accumulative adders 1202, a shifter 1203, a multiplexer 1204, a set of registers 1205 and an OR gate 1206. The size block 1201 is connected to receive code words and connected to the accumulative adders 1202. The accumulative adders connected to the shifting device 1203, which also receives code words. The biasing device 1203 is connected to the multiplexer 1204 and the OR gate 1206. The multiplexer 1204 is also connected to the registers 1205 and the output of the OR gate 1206. The registers are also connected to the OR gate 1206.

В одном варианте осуществления изобретения кодовые слова вводятся в 13-разрядную шину с установленными на ноль неиспользованными разрядами. Эти установленные на ноль неиспользованные двоичные разряды находятся рядом с "1" в кодовых словах "1N", так что кодер приоритета в размерном блоке 1201 можно использовать для определения длины кодовых слов "1N" и вырабатывания размера кодовых слов "0". In one embodiment of the invention, the codewords are inputted into a 13-bit bus with zero bits unused. These zero bit positions set to zero are located next to “1” in the code words “1N”, so the priority encoder in the size block 1201 can be used to determine the length of the code words “1N” and generate the size of the code words “0”.

Накапливающие сумматоры 1202 содержат множество накапливающих сумматоров, по одному для каждого потока с чередованием. Накапливающий сумматор для каждого потока с чередованием сохраняет запись количества двоичных разрядов уже в текущем слове с чередованием. В одном варианте осуществления изобретения каждый накапливающий сумматор содержит 4-разрядный сумматор (с завершением) и 4-разрядный регистр, используемый для каждого потока. В одном варианте осуществления изобретения выход сумматора является выходом накапливающего сумматора. В другом варианте выходной сигнал регистра представляет выходной сигнал накапливающего сумматора. Используя размер кодовых слов, принимаемых из размерного блока 1201, накапливающие сумматоры определяют количество разрядов для сдвигания с целью конкатенирования текущего кодового слова в регистр, содержащий текущее слово с чередованием для этого потока. The accumulating adders 1202 comprise a plurality of accumulating adders, one for each interleaved stream. The accumulating adder for each interleaved stream saves a record of the number of binary bits already in the current interleaved word. In one embodiment, each accumulative adder comprises a 4-bit adder (with completion) and a 4-bit register used for each stream. In one embodiment of the invention, the output of the adder is the output of the accumulating adder. In another embodiment, the output of the register represents the output of the accumulating adder. Using the size of the codewords received from the size block 1201, the accumulating adders determine the number of bits to shift in order to concatenate the current codeword into a register containing the current interleaved word for this stream.

На основании текущего значения накапливающего сумматора сдвигающее устройство 1203 совмещает текущее кодовое слово так, чтобы оно надлежащим образом следовало за любыми предыдущими кодовыми словами в этом слове с чередованием. Таким образом, данные в кодирующем устройстве сдвигаются в порядок декодирования. Выходной сигнал сдвигающего устройства 1203 составляет 28 двоичных разрядов, что соответствует случаю, когда 13-разрядное кодовое слово должно добавляться к 15 двоичным разрядам в текущем слове с чередованием так, чтобы двоичные разряды из текущего кодового слова оканчивались в старших 12 двоичных разрядах из 28 выводимых двоичных разрядов. Отметим, что сдвигающее устройство 1203 работает без обратной связи и, следовательно, его можно конвейеризировать. В одном варианте осуществления изобретения сдвигающее устройство 1203 представляет собой многорегистровое циклическое сдвиговое устройство. Based on the current value of the accumulating adder, the shifting device 1203 aligns the current codeword so that it properly follows any previous codewords in the alternating word. Thus, the data in the encoder is shifted in decoding order. The output of the shifter 1203 is 28 bits, which corresponds to the case where a 13-bit codeword is to be added to 15 bits in the current word interleaved so that the bits from the current code word end in the highest 12 bits of the 28 output binary discharges. Note that the biasing device 1203 operates without feedback and therefore can be conveyed. In one embodiment, the shifting device 1203 is a multi-register cyclic shifting device.

Регистры 1205 запоминают двоичные разряды в текущих словах с чередованием. В одном варианте осуществления изобретения 16-разрядный регистр для каждого перемежаемого потока удерживает предыдущие двоичные разряды текущего слова с чередованием. Registers 1205 store binary bits in the current interleaved words. In one embodiment, a 16-bit register for each interleaved stream holds the previous binary bits of the current interleaved word.

Вначале кодовое слово потока принимается сдвигающим устройством 1203, в то время как размерный блок 1201 указывает размер кодового слова накапливающему сумматору, соответствующему потоку. Накапливающий сумматор имеет начальное значение, равное нулю, установленное посредством общего сброса в исходное состояние. Поскольку значение накапливающего сумматора равно нулю, кодовое слово не сдвигается и затем проходит в режиме ИЛИ с использованием логической схемы ИЛИ 1206 при содержимом регистра, соответствующем потоку. Однако в некоторых вариантах осуществления изобретения кодовые слова "1N" должны сдвигаться для надлежащего выравнивания даже в начале перемежаемого слова. Такой регистр установлен в нулевое состояние и, следовательно, результат операции ИЛИ заключается в помещении кодового слова в положения крайних правых разрядов выходного сигнала логической схемы ИЛИ 1206 и направлении по цепи обратной связи через мультиплексор 1204 в регистр для хранения до следующего кодового слова из потока. Таким образом, вначале сдвигающее устройство 1203 действует как транзитный проход. Отметим, что количество двоичных разрядов в первом кодовом слове теперь хранится в накапливающем сумматоре. При приеме следующего кодового слова для этого потока величина в накапливающем сумматоре посылается в сдвигающее устройство 1203, а кодовое слово сдвигается левее для объединения с ранее введенными двоичными разрядами в перемежаемом слове. Нули размещаются в других позициях двоичных разрядов в сдвигаемом слове. Двоичные разряды из регистра, соответствующего потоку, объединяются с двоичными разрядами из сдвигающего устройства 1203, используя для этого логическую схему ИЛИ 1206. Если накапливающий сумматор не дает индикацию завершения (например, сигнала), то требуется больше двоичных разрядов для завершения формирования текущего слова с чередованием, а данные, получаемые в результате операции ИЛИ, вводятся обратно в регистр через мультиплексор 1204. В одном варианте осуществления мультиплексор 1204 представляет собой мультиплексор 2:1. Когда накапливающий сумматор вырабатывает сигнал завершения, 16 двоичных разрядов, прошедших операцию ИЛИ данных из логической схемы ИЛИ 1206, представляют полное слово с чередованием и затем выводятся. Мультиплексор 1204 вызывает загрузку регистра любыми дополнительными двоичными разрядами (например, верхними 12 двоичными разрядами из 28 двоичных разрядов, выходящих из сдвигающего устройства 1203) после первых 16, а остальные заполняются нулями. Initially, the stream codeword is received by the shifting device 1203, while the size block 1201 indicates the size of the codeword to the accumulating adder corresponding to the stream. The accumulating adder has an initial value of zero, set by means of a general reset. Since the value of the accumulating adder is zero, the code word is not shifted and then passes in the OR mode using the OR logic 1206 with the contents of the register corresponding to the stream. However, in some embodiments, the code words “1N” must be shifted for proper alignment even at the beginning of an interleaved word. Such a register is set to zero and, therefore, the result of the OR operation consists in placing the code word in the positions of the rightmost bits of the output signal of the OR logic circuit 1206 and the direction along the feedback circuit through the multiplexer 1204 into the register for storage until the next code word from the stream. Thus, initially, the shifting device 1203 acts as a transit passage. Note that the number of bits in the first codeword is now stored in the accumulating adder. Upon receipt of the next codeword for this stream, the value in the accumulating adder is sent to the shifter 1203, and the codeword is shifted to the left to combine with the previously entered binary digits in the interleaved word. Zeros are placed in other positions of the binary digits in the shifted word. The binary bits from the register corresponding to the stream are combined with the binary bits from the shifter 1203 using the logic OR OR 1206. If the accumulating adder does not give an indication of completion (for example, a signal), then more binary bits are required to complete the formation of the current word with alternation and the data resulting from the OR operation is entered back into the register through the multiplexer 1204. In one embodiment, the multiplexer 1204 is a 2: 1 multiplexer. When the accumulating adder generates a completion signal, 16 bits that have passed the OR operation from the data from the OR logic 1206 represent the alternating full word and then are output. Multiplexer 1204 causes the register to load with any additional binary bits (for example, the upper 12 binary bits of 28 binary bits leaving the shifter 1203) after the first 16, and the rest are filled with zeros.

Управление мультиплексором 1204 и выводом слова с чередованием включает выдачу сигнала завершения из накапливающего сумматора. В одном варианте осуществления изобретения мультиплексор 1204 содержит шестнадцать мультиплексоров 2:1, четыре из которых имеют один вход, который всегда равен нулю. Controlling the multiplexer 1204 and interleaving the word includes outputting a completion signal from the accumulating adder. In one embodiment, multiplexer 1204 comprises sixteen 2: 1 multiplexers, four of which have one input that is always zero.

Настоящее изобретение обеспечивает многочисленные варианты осуществления переупорядочивания данных. Например, в системе со множеством кодовых потоков кодовые потоки должны переупорядочиваться в перемежаемые слова, как показано на фиг. 7. Настоящее изобретение обеспечивает многочисленные пути выполнения переупорядочивания в перемежаемые слова. The present invention provides numerous embodiments of reordering data. For example, in a system with multiple code streams, code streams should be reordered into interleaved words, as shown in FIG. 7. The present invention provides numerous ways of performing reordering into interleaved words.

Один способ переупорядочивания данных в перемежаемые слова заключается в использовании поискового декодирующего устройства, как показано на фиг. 32. Множество блоков переупорядочивания счетов прогонов 2501A-n подсоединены для приема информации кодовых слов наряду с потоком кодовых слов. Каждый из них вырабатывает на выходе кодовые слова и сигналы размеров. Отдельный блок логических схем компоновки двоичных разрядов (1101) типа блоков компоновки двоичных разрядов 2502A-n подсоединен для приема выходных сигналов кодовых слов и размеров от одного из блоков переупорядочивания счетов прогонов 2501A-n. Блоки логических схем компоновки двоичных разрядов 2502A-n выдают на выходе слова с чередованием, которые поступают как на мультиплексор 2503, так и на поисковое декодирующее устройство 2504. Декодирующее устройство 2504 обеспечивает селективный управляющий сигнал, который принимается мультиплексором 2503 и указывает мультиплексору 2503, которое из перемежаемых слов выводить в кодовый поток. One way to reorder data into interleaved words is to use a search decoder, as shown in FIG. 32. A plurality of run accounts reordering units 2501A-n are connected to receive codeword information along with a codeword stream. Each of them produces code words and size signals at the output. A separate block of binary arrangement logic circuits (1101) of the type of binary arrangement blocks 2502A-n is connected to receive output signals of codewords and sizes from one of the blocks of reordering of run accounts 2501A-n. The blocks of the logic circuits of the arrangement of the binary digits 2502A-n output alternating words that are transmitted to both the multiplexer 2503 and the search decoding device 2504. The decoding device 2504 provides a selective control signal that is received by the multiplexer 2503 and indicates the multiplexer 2503, which from interleaved words to output to the code stream.

Каждый поток кодированных данных имеет блок переупорядочивания счета прогонов, содержащий блок переупорядочивания счета прогонов 801, изображенный на фиг. 11. Каждый блок компоновки двоичных разрядов объединяет кодовое слово переменной длины в слова с чередованием, имеющие фиксированную длину, возможно 8, 16 или 32 двоичных разряда в слове. Каждый блок компоновки двоичных разрядов содержит регистры и сдвигающую схему, как описано выше. Декодирующее устройство 2504 содержит полное операционное декодирующее устройство (включая ГПБ, MOB и КМ), которое имеет доступ к перемежающимся словам из всех блоков компоновки двоичных разрядов (либо по отдельным шинам, как показано на фиг. 32, либо через общую шину). Всякий раз, когда декодирующее устройство 2504 выбирает слово с чередованием с одного из блоков компоновки двоичных разрядов, это слово передается в кодовом потоке. Поскольку декодирующее устройство в конце приема требует данные в таком же порядке, как у идентичного поискового декодирующего устройства, перемежаемые слова передаются в надлежащем порядке. Each encoded data stream has a run count reordering unit comprising a run count reordering unit 801 shown in FIG. 11. Each binary arrangement unit combines a variable-length codeword into alternating words having a fixed length, possibly 8, 16, or 32 binary digits in a word. Each binary arrangement block contains registers and a shifting circuit as described above. The decoding device 2504 contains a complete operational decoding device (including GPB, MOB, and KM) that has access to interleaved words from all binary arrangement blocks (either on separate buses, as shown in Fig. 32, or via a common bus). Whenever the decoding device 2504 selects an interleaved word from one of the binary arrangement blocks, this word is transmitted in the code stream. Since the decoding device at the end of reception requires data in the same order as that of an identical search decoding device, the interleaved words are transmitted in the proper order.

Кодирующее устройство вместе с поисковым декодирующим устройством может быть приемлемым для использования в полудуплексной системе, поскольку поисковое декодирующее устройство также можно использовать, как нормальное декодирующее устройство. Преимущество использования метода поискового декодирующего устройства заключается в его применимости для любых детерминированных декодирующих устройств. В альтернативных решениях, описываемых ниже, независимо от поискового декодирующего устройства используются более простые модели декодирующего устройства для снижения стоимости аппаратного оборудования. Для декодирующих устройств, которые декодируют множество кодовых слов в одном и том же тактовом цикле, моделирование декодирующего устройства с использованием меньшего объема аппаратных средств, чем само декодирующее устройство, может оказаться невозможным, что неизбежно влечет за собой использование поискового декодирующего устройства. Как будет описано ниже, существуют более простые модели декодирующих устройств, которые декодируют самое большее только одно кодовое слово за цикл. An encoder together with a search decoder may be suitable for use in a half-duplex system, since a search decoder can also be used as a normal decoder. The advantage of using the search decoding device method is its applicability to any deterministic decoding devices. The alternative solutions described below, regardless of the search decoding device, use simpler models of the decoding device to reduce the cost of hardware. For decoding devices that decode multiple codewords in the same clock cycle, modeling a decoding device using less hardware than the decoding device may not be possible, which inevitably entails the use of a search decoding device. As will be described below, there are simpler models of decoding devices that decode at most only one codeword per cycle.

Другой технический прием переупорядочивания данных для конвейеризируемых систем декодирующих устройств заключается в том, что декодирование самое большее одного кодового слова за тактовый цикл основано на том, что информация, необходимая для моделирования запросов декодирующего устройства в отношении кодированных данных, заключается в том, чтобы знать порядок кодовых слов (учитывая все кодовые слова, а не независимые кодовые слова для потоков кодированных данных). Если временная метка связана с каждым кодовым словом, когда оно поступает в блок переупорядочивания счета прогонов, независимо от того, какое скомпонованное слово с чередованием имеет самую старшую временную метку, связанную с ним, оно представляет подлежащее выводу следующее слово с чередованием. Another technique for reordering data for pipelined decoding device systems is that decoding at most one codeword per clock cycle is based on the fact that the information needed to model the decoding device's requests for encoded data is to know the order of the code words (considering all codewords, not independent codewords for coded data streams). If a timestamp is associated with each codeword when it enters the run count reordering unit, regardless of which interlaced word has the highest timestamp associated with it, it represents the next interleaved word to be output.

На фиг. 33 представлена блок-схема, изображающая примерный переупорядочивающий блок кодирующего устройства. Показанная здесь система кодирования такая же, как описанная со ссылкой на фиг. 32, за исключением того, что каждый блок переупорядочивания счета прогонов 2501A-n принимает также информацию временной метки. Эта информация временной метки также продвигается вперед в блоки компоновки двоичных разрядов 2502A-n. Блоки компоновки двоичных разрядов 2502A-n обеспечивают слова с чередованием для мультиплексора 2503, а связанные с ними временные метки - для логической схемы 2601. Логическая схема 2601 обеспечивает управляющий сигнал для мультиплексора 2503, предназначенный для выбора слова с чередованием, подлежащего выводу в кодовый поток. In FIG. 33 is a block diagram illustrating an example reordering unit of an encoder. The coding system shown here is the same as described with reference to FIG. 32, except that each run count reordering unit 2501A-n also receives time stamp information. This timestamp information is also advancing into the bitmap blocks 2502A-n. The bitmap units 2502A-n provide interleaved words for multiplexer 2503, and the associated timestamps for logic 2601. Logic 2601 provides a control signal for multiplexer 2503 to select an interleaved word to be output to the codestream.

В этом варианте осуществления изобретения поисковое декодирующее устройство заменяется простым сравнением, которое определяет, какой из блоков компоновки двоичных разрядов 2502A-n имеет кодовое слово (или часть кодового слова) с самой старшей временной меткой. Такая система выступает для мультиплексора 2503 в качестве множества очередей с временными метками. Логическая схема 2601 просто делает выбор между различными очередями. Логическая схема каждого из блоков переупорядочивания счета прогонов 2501A-n только слегка изменяет (из блока переупорядочивания счета прогонов 801) для записи временную метку, когда запускается прогон. Каждый блок переупорядочивания счета прогонов 2501A-n оборудован для запоминания временной метки в запоминающем устройстве кодовых слов. Запоминание временных меток с достаточным количеством двоичных разрядов для подсчета каждого слова из кодовых слов в потоке кодированных данных оказывается достаточным, но в некоторых вариантах осуществления изобретения может быть использовано меньшее количество двоичных разрядов. In this embodiment, the search decoder is replaced with a simple comparison that determines which of the bitmap units 2502A-n has a codeword (or part of a codeword) with the highest time stamp. Such a system acts for the multiplexer 2503 as a set of queues with time stamps. The 2601 logic circuit simply makes a choice between different queues. The logic of each of the run count reordering blocks 2501A-n only slightly changes (from the run count reordering block 801) to record the timestamp when the run starts. Each run count reordering unit 2501A-n is equipped for storing a time stamp in a codeword memory. Storing timestamps with a sufficient number of binary bits to count each word from the code words in the encoded data stream is sufficient, but in some embodiments, fewer binary bits may be used.

Ниже представлено краткое описание этапов использования множества очередей с временными метками. Описание понятно для специалистов в данной области техники. Здесь представлены операции кодирующего устройства. Для случая, когда прогон начинается и заканчивается с помощью одного и того же кодового слова, упрощение не произведено. Операции можно проверить для каждого кодированного символа (хотя на практике не все проверки необходимо выполнять). Предположим, что перемежаемые слова имеют размер 32 двоичных разряда. The following is a brief description of the steps for using multiple timestamped queues. The description is clear to those skilled in the art. Here are the operations of the encoder. For the case when the run begins and ends using the same code word, simplification is not performed. Operations can be checked for each coded character (although in practice not all checks need to be performed). Suppose interleaved words are 32 bits wide.

if (если нет текущего кодового слова для контекста):
размещение отметки времени в очередь (используемую для определения следующей очереди),
размещение указателя контекста в очередь,
размещение неверных данных в очередь,
указание контекста для ввода очереди,
обеспечение приращения хвостовому счету очереди,
if (если уже имеется кодовое слово и БВС):
обеспечение приращения счету прогонов контекста,
if (MAXRUN или МВС):
размещение верных данных в очередь,
(указатель контекста не нужен),
установка на нуль указателя и счет прогонов в запоминающем устройстве контекстов,
корректирование оценки вероятности в запоминающем устройстве контекстов,
if (достоверные данные в начале следующей очереди) (если):
размещение 32 двоичных разрядов данных на выходе,
очищение содержимого очереди,
обеспечение приращения головной части очереди,
while (в то время как любая очередь почти полная):
отыскание следующей очереди, которая должна поместить данные на выход,
в то время как менее чем 32 двоичных разряда достоверных данных,
использование указателя контекста для нахождения контекста,
установка на ноль указателя и счет прогонов в запоминающем устройстве контекстов,
размещение кодового слова MAXRUN в данные очереди.
if (if there is no current codeword for context):
placing a timestamp in a queue (used to determine the next queue),
queuing a context pointer
queuing incorrect data
indication of the context for entering the queue,
incrementing the tail account of the queue,
if (if there is already a codeword and BVS):
incrementing the count of context runs,
if (MAXRUN or MVS):
placing the correct data in the queue
(no context pointer needed)
setting the pointer to zero and counting runs in the context memory,
adjusting the probability estimates in the context memory,
if (reliable data at the beginning of the next queue) (if):
placement of 32 bits of data on the output,
flushing the contents of the queue,
ensuring the increment of the head of the queue,
while (while any queue is almost complete):
finding the next queue that should put the output data,
while less than 32 bits of valid data,
using a context pointer to find context,
setting the pointer to zero and running counts in the context memory,
placing the MAXRUN codeword in the queue data.

Операции декодирующего устройства подобны, хотя нет необходимости кодовые слова сохранять в очереди. Однако необходимо сохранять временную метку кодовых слов в очереди. The operations of the decoding device are similar, although there is no need to store the code words in the queue. However, you must save the time stamp of the code words in the queue.

Для запоминания информации о порядке кодовых слов используется описанная выше функция временных меток. Эквивалентный способ выражения той же концепции заключается в использовании одной очереди для всех кодовых слов, то есть объединенной очереди. В системе с объединенной очередью, как показано на фиг. 34, для всех перемежаемых потоков используется один блок переупорядочивания счета прогонов 2701. Блок переупорядочивания счета прогонов 2701 вырабатывает выходные сигналы кодового слова, размера и потока, поступающие в блоки компоновки двоичных разрядов 2502A-n, выходные перемежаемые слова для мультиплексора 2503 и информацию о позиции для логической схемы 2702, и эти сигналы мультиплексора 2503 предназначены для вывода в виде перемежаемых слов в виде части кодового потока. To store information about the order of code words, the time stamp function described above is used. An equivalent way of expressing the same concept is to use one queue for all codewords, that is, a combined queue. In a combined queue system, as shown in FIG. 34, one run reordering unit 2701 is used for all interleaved flows. Run reordering unit 2701 generates codeword, size, and stream output signals to binary arrangement blocks 2502A-n, output interleaved words for multiplexer 2503, and position information for logic circuit 2702, and these multiplexer signals 2503 are intended to be output as interleaved words as part of a code stream.

В случае произвольных потоков запоминающее устройство переупорядочивания счета прогонов запоминает идентификацию перемежаемого потока для каждого кодового слова. Каждый перемежаемый поток имеет свой собственный головной указатель. Когда блоку компоновки двоичных разрядов требуется больше данных, используется соответствующий головной указатель для выборки такого количества кодовых слов, которое необходимо для формирования нового перемежаемого слова. Это может включать в себя просмотр большого количества ячеек памяти кодовых слов для определения, какие из них являются частью надлежащего потока. В качестве альтернативы это может повлечь за собой просмотр запоминающего устройства кодовых слов в отношении дополнительных полей для выполнения связного списка. In the case of arbitrary streams, the run reordering memory remembers the identification of the interleaved stream for each codeword. Each interleaved thread has its own head pointer. When the binary unit needs more data, the appropriate head pointer is used to select as many codewords as are necessary to form a new interleaved word. This may include looking at a large number of codeword memory cells to determine which ones are part of the proper stream. Alternatively, this may entail viewing a codeword storage device for additional fields to perform a linked list.

Другой способ перемежения потоков в настоящем изобретении заключается в использовании объединенной очереди с фиксированным распределением потоков. В этом способе используют единственный хвостовой указатель, как и в случае объединенной очередности, так что временные метки не требуются. Кроме того, многочисленные головные указатели используются как и в предыдущем случае, так что при выведении данных из конкретного потока непроизводительные издержки отсутствуют. Осуществление этого назначения кодовых слов в перемежаемые потоки в случае N потоков осуществляется согласно следующему правилу: кодовое слово M назначается потоку M по модулю N. Отметим, что в соответствии с данным способом перемежаемые потоки могут иметь кодовые слова из любого контекстного элемента, кодированного сигнала или класса вероятности. Если количество потоков соответствует показателю степени, равному двум, то M по модулю N можно вычислить посредством отбрасывания некоторых наиболее старших двоичных разрядов. Например, предположим, что запоминающее устройство переупорядочивания кодовых слов адресуется 12 двоичными разрядами и что используются четыре перемежаемых потока. Хвостовой указатель имеет длину 12 двоичных разрядов, а два самых младших двоичных разряда идентифицируют кодированный поток для следующего кодового слова. Четыре головных указателя с 10 двоичными разрядами, каждый из которых неявно назначается каждому из четырех возможных комбинаций двух самых младших двоичных разрядов. Как хвостовой, так и головной указатели получают приращение как обычные двоичные счетчики. Another method of interleaving threads in the present invention is to use a combined queue with a fixed distribution of threads. This method uses a single tail pointer, as in the case of a combined sequence, so that no timestamps are required. In addition, numerous head pointers are used as in the previous case, so that there is no overhead when outputting data from a particular stream. In the case of N streams, this assignment of codewords to interleaved streams is carried out according to the following rule: a codeword M is assigned to a stream M modulo N. Note that, in accordance with this method, interleaved streams can have codewords from any context element, encoded signal, or class probabilities. If the number of streams corresponds to an exponent of two, then M modulo N can be calculated by discarding some of the most significant binary bits. For example, suppose that a codeword reordering memory is addressed by 12 bits and that four interleaved streams are used. The tail pointer is 12 bits long, and the two least significant bits identify the encoded stream for the next codeword. Four leading pointers with 10 binary digits, each of which is implicitly assigned to each of the four possible combinations of the two least significant binary digits. Both the tail and head pointers are incremented like regular binary counters.

В декодирующем устройстве сдвигающее устройство имеет регистры для запоминания слов с чередованием. Сдвигающее устройство представляет выровненные надлежащим образом кодированные данные генератору двоичных разрядов. Когда генератор двоичных разрядов использует некоторые кодированные данные, он сообщает об этом сдвигающему устройству. Сдвигающее устройство представляет выровненные должным образом данные из следующего перемежаемого потока. Если количество потоков кодированных данных равно N, у сдвигающего устройства имеется N-1 тактовых циклов для сдвигания используемых данных и, возможно, запроса другого кодового слова с чередованием, прежде чем этот конкретный перемежаемый поток будет использован снова. In the decoding device, the shifting device has registers for storing alternating words. The biasing device presents properly aligned encoded data to the binary generator. When the binary generator uses some encoded data, it reports this to the shifter. The shifter presents properly aligned data from the next interleaved stream. If the number of encoded data streams is N, the shifter has N-1 clock cycles for shifting the data used and possibly requesting another interleaved codeword before this particular interleaved stream is used again.

Настоящее изобретение включает в себя декодирующее устройство, которое поддерживает работу кодирующего устройства в реальном масштабе времени с ограниченной памятью переупорядочивания. В одном варианте осуществления декодирующее устройство характеризуется также уменьшенными требованиями в емкости и сложности благодаря сохранению счета прогонов для каждого класса вероятности вместо каждого контекстного сборника. The present invention includes a decoding apparatus that supports real-time encoding of an encoder with limited reordering memory. In one embodiment, the decoding device is also characterized by reduced requirements in capacity and complexity by maintaining a run count for each probability class instead of each contextual collection.

На фиг. 17 показана блок-схема одного варианта осуществления соответствующей настоящему изобретению системы аппаратных средств, реализующих декодирующее устройство. Система декодирующего устройства 1400 включает в себя структуру обратного магазинного типа (FIFO) 1401, декодирующие устройства 1402, запоминающее устройство 1403 и модель контекста 1404. Декодирующие устройства 1402 включают в себя множество декодеров. Кодированные данные 1410 подаются таким образом, чтобы их принимала структура обратного магазинного типа 1401. Структура обратного магазинного типа 1401 подсоединена для подачи кодированных данных на декодирующее устройство 1402. Декодирующие устройства 1402 подсоединены к запоминающему устройству 1403 и модели контекста 1404. Модель контекста 1404 также подсоединена к запоминающему устройству 1403. Один выход контекстной модели 1404 содержит декодированные данные 1411. In FIG. 17 is a block diagram of one embodiment of a hardware system according to the present invention that implements a decoding device. The decoding device system 1400 includes a reverse store type (FIFO) structure 1401, decoding devices 1402, a storage device 1403, and a context model 1404. Decoding devices 1402 include a plurality of decoders. The encoded data 1410 is provided so that it is received by the reverse store type structure 1401. The reverse store type structure 1401 is connected to supply encoded data to the decoding device 1402. Decoding devices 1402 are connected to the storage device 1403 and the context model 1404. The context model 1404 is also connected to storage device 1403. One output of context model 1404 contains decoded data 1411.

В системе 1400 кодированные данные 1410 поступают на вход структуры обратного магазинного типа 1401, упорядочиваются и перемежаются. Структура обратного магазинного типа 1401 содержит данные в надлежащем порядке. Потоки подаются на декодирующие устройства 1402. Декодирующие устройства 1402 запрашивают данные из этих потоков в последовательном и детерминированном порядке. Хотя порядок, в котором декодирующие устройства 1402 требуют кодированные данные, нетривиальный, он не произволен. С помощью упорядочивания кодовых слов в таком порядке в кодирующем устройстве вместо декодирующего устройства кодированные данные могут перемежаться в единый поток. В другом варианте осуществления изобретения кодированные данные 1410 могут содержать единственный поток неперемежаемых данных, где данные для каждого контекстного элемента кодированного сигнала, класса контекста и класса вероятности добавляются в поток данных. В этом случае структуру обратного магазинного типа 1401 заменяют на область памяти, предназначенную для приема всех кодированных данных прежде, чем направить данные дальше в декодирующие устройства 1402, так что данные могут быть сегментированы надлежащим образом. In system 1400, encoded data 1410 is input to a reverse store type structure 1401, ordered, and interleaved. The reverse store type structure 1401 contains data in the proper order. Streams are provided to decoding devices 1402. Decoding devices 1402 request data from these streams in a sequential and deterministic order. Although the order in which decoding devices 1402 require encoded data is non-trivial, it is not arbitrary. By arranging the code words in this order in the encoder, instead of the decoder, the encoded data can be interleaved into a single stream. In another embodiment, encoded data 1410 may comprise a single non-interleaving data stream, where data for each context element of the encoded signal, context class, and probability class are added to the data stream. In this case, the inverse store type structure 1401 is replaced with a memory area for receiving all encoded data before forwarding the data further to decoding devices 1402 so that the data can be segmented appropriately.

Когда кодированные данные 1410 приняты структурой обратного магазинного типа 1401, контекстная модель 1404 определяет текущий контекстный сборник. В одном варианте осуществления изобретения контекстная модель 1404 определяет текущий контекстный сборник, основываясь на предыдущих элементах изображения и (или) двоичных разрядах. Хотя это не показано, но при контекстной модели 1404 может быть включена линейная буферизация. Линейная буферизация обеспечивает необходимые данные, или шаблон, с помощью которого контекстная модель 1404 определяет текущий контекстный сборник. Например, там, где контекст основан на значениях элементов изображения в окрестности текущего элемента изображения, линейная буферизация может использоваться для хранения значений тех элементов изображения в окрестностях, которые используются для обеспечения специального контекста. When the encoded data 1410 is received by the inverse store type structure 1401, the context model 1404 determines the current context collection. In one embodiment, the context model 1404 determines the current context collection based on previous pixels and / or bits. Although not shown, linear context buffering can be enabled with the context model 1404. Linear buffering provides the necessary data, or template, with which the context model 1404 determines the current context collection. For example, where the context is based on the values of image elements in the vicinity of the current image element, linear buffering can be used to store the values of those image elements in the vicinity that are used to provide a special context.

В ответ на контекстный сборник система декодирующего устройства 1400 выбирает состояние декодирования из запоминающего устройства 1403 для текущего контекстного сборника. В одном варианте осуществления изобретения состояние декодера включает в себя состояние модуля оценки вероятности (МОВ) и состояние генератора двоичных разрядов. Состояние МОВ определяет, какой код надлежит использовать для декодирования новых кодовых слов. Состояние генератора двоичных разрядов поддерживает запись двоичных разрядов в текущем прогоне. Состояние для декодирующих устройств 1402 обеспечивается из запоминающего устройства 1403 в ответ на адрес, обеспечиваемый контекстной моделью 1404. Адрес выбирает ячейку в запоминающем устройстве 1403, которая хранит информацию, соответствующую контекстному сборнику. In response to the contextual collector, the decoding system 1400 selects a decoding state from the memory 1403 for the current contextual collector. In one embodiment of the invention, the state of the decoder includes the state of the probability estimation module (MOB) and the state of the binary generator. The status of the MOB determines which code should be used to decode the new codewords. The state of the binary generator supports recording of the binary bits in the current run. The state for the decoding devices 1402 is provided from the storage device 1403 in response to the address provided by the context model 1404. The address selects a cell in the storage device 1403 that stores information corresponding to the contextual collection.

После выбора из запоминающего устройства 1403 состояние декодирующего устройства для контекстного сборника система 1400 определяет следующий неуплотненный двоичный разряд и обрабатывает состояние декодирующего устройства. Затем декодирующие устройства 1402 декодируют новое кодовое слово, если это необходимо, и (или) обновляют счет прогонов. Если необходимо, то обновляется состояние МОВ, а также состояние генерации двоичных разрядов. После этого декодирующие устройства 1402 записывают новое состояние кодирующего устройства в запоминающее устройство 1403. After selecting the state of the decoding device for the context collector from the storage device 1403, the system 1400 determines the next uncompressed binary bit and processes the state of the decoding device. Then, the decoding devices 1402 decode the new codeword, if necessary, and / or update the run count. If necessary, the state of the MOV, as well as the state of generation of binary digits, is updated. After that, the decoding devices 1402 write the new state of the encoding device to the storage device 1403.

На фиг. 18 показан один вариант осуществления соответствующего настоящему изобретению декодирующего устройства. Декодирующее устройство включает в себя сдвигающую логическую схему 1431, генератор двоичных разрядов 1432, логическую схему "новое значение к" 1433, логическую схему обновления МОВ 1434, логическую схему новых кодовых слов 1435, блок состояния МОВ для логической схемы кэш 1436, логическую схему кодирования по шаблону 1437, логическую схему расширения кодирования по MaxP1, Шаблона и разбиения R3 1438, логическую схему декодирования 1439, мультиплексор 1440 и логическую схему обновления счета прогонов 1441. Сдвигающая логическая схема 1431 подсоединена для приема входных кодированных данных 1443, а также входного сигнала состояния 1442 (из запоминающего устройства). Выходной сигнал сдвигающей логической схемы 1431 поступает в качестве входного сигнала на логическую схему генерации двоичных разрядов 1432, логическую схему вырабатывания "нового значения к" 1433 и логическую схему обновления МОВ 1434. Логическая схема генерации двоичных разрядов 1432, кроме того, подсоединена для приема входного сигнала состояния 1442 и вырабатывает выходной сигнал декодированных данных для контекстной модели. Логическая схема "новое значение к" 1433 вырабатывает выходной сигнал, который подается на вход логической схемы кодирования по шаблону 1437. Логическая схема обновления МОВ 1434 также получает входной сигнал состояния 1442 и вырабатывает выходной сигнал состояния (подаваемый в запоминающее устройство). Входной сигнал состояния 1442, кроме того, подается на входы логической схемы новых кодовых слов 1435 и логической схемы состояния МОВ для кода 1436. Выходной сигнал логической схемы состояния МОВ для кода 1436 поступает для приема логической схемой расширения 1438. Выход логической схемы расширения 1438 подсоединен к логической схеме декодирования 1439 и логической схеме обновления счета прогонов 1441. Другой вход логической схемы декодирования подсоединен к выходу схемы кода по шаблону 1437. Выход логической схемы декодирования 1439 подсоединен к одному входу мультиплексора 1440. На другой вход мультиплексора 1440 поступает входной сигнал состояния 1442. Вход выбора мультиплексора 1440 подсоединен к выходу логической схемы новых кодовых слов 1435. Выходы мультиплексора 1440 и логической схемы расширения 1438 подсоединены к двум входам логической схемы обновления счета прогонов 1441 вместе с выходом логической схемы кода по шаблону 1437. Выходной сигнал логической схемы обновления счета прогонов 1441 включен в выходной сигнал состояния, подаваемый в запоминающее устройство. In FIG. 18 shows one embodiment of a decoding apparatus of the present invention. The decoding device includes a shifting logic 1431, a binary bit generator 1432, a “new value to” logic 1433, a MOV update logic 1434, a new codeword logic 1435, a MOB status block for cache logic 1436, a coding logic for template 1437, extension logic for MaxP1 coding, Pattern and partition R3 1438, decoding logic 1439, multiplexer 1440, and run count update logic 1441. The shift logic 1431 is connected to receive input dnyh coded data 1443, 1442 and the state of the input signal (from the memory). The output signal of the biasing logic circuit 1431 is supplied as an input signal to the logic circuit for generating binary bits 1432, the logic circuit for generating a “new value to” 1433, and the logic for updating the MOB 1434. The logic circuit for generating binary bits 1432 is also connected to receive an input signal state 1442 and generates an output signal of decoded data for the context model. The logic "new value to" 1433 produces an output signal that is input to an encoding logic circuit according to pattern 1437. The update logic circuit MOB 1434 also receives a status input signal 1442 and generates a status output signal (supplied to a storage device). The input state signal 1442, in addition, is fed to the inputs of the logic circuit of the new code words 1435 and the logic state circuit of the MOB for code 1436. The output signal of the logic state circuit of the MOB for code 1436 is received for reception by the expansion logic 1438. The output of the expansion logic 1438 is connected to decoding logic 1439 and run calculation update logic 1441. The other input of the decoding logic is connected to the output of the code circuit according to pattern 1437. The output of the decoding logic 1439 is connected to one the input of the multiplexer 1440. At the other input of the multiplexer 1440 the input state signal 1442 is received. The input of the selection of the multiplexer 1440 is connected to the output of the logic circuit of the new codewords 1435. The outputs of the multiplexer 1440 and the expansion logic 1438 are connected to two inputs of the logic for updating the run count 1441 together with the output the logic of the code for the pattern 1437. The output of the logic of the update of the run count 1441 is included in the status output signal supplied to the storage device.

Сдвигающая логическая схема 1431 сдвигает данные из потока кодовых данных. На основании входных кодированных данных и входного сигнала режима логическая схема генерирования двоичных разрядов 1432 вырабатывает декодированные данные для контекстной модели. Логическая схема "новое значение к" 1433 также использует сдвиг данных и входной сигнал состояния для вырабатывания новой величины к. В данном варианте осуществления изобретения логическая схема "новое значение к" 1433 использует состояние МОВ и первый разряд кодированных данных для вырабатывания нового значения к. На основании нового значения к логическая схема кодирования по шаблону 1437 вырабатывает шаблон R1Z для следующего кодового слова. Шаблон R1Z для следующего кодового слова посылается в логическую схему декодирования 1439 и логическую схему обновления счета прогонов 1441. The biasing logic 1431 shifts data from the code data stream. Based on the input encoded data and the input mode signal, the binary bit generation logic 1432 generates decoded data for the context model. The new value k logic 1433 also uses a data offset and a state input signal to generate a new value of k. In this embodiment, the new value k logic 1433 uses the MOB state and the first bit of encoded data to generate a new value of k. on the basis of the new value k, the coding logic according to pattern 1437 generates a pattern R1Z for the next codeword. The R1Z pattern for the next codeword is sent to decoding logic 1439 and run count update logic 1441.

Логическая схема обновления МОВ 1434 обновляет состояние МОВ. В одном варианте осуществления изобретения состояние МОВ обновляется с использованием текущего состояния. Откорректированное состояние посылается в запоминающее устройство. Логическая схема новых кодовых слов 1435 определяет, нужно ли новое кодовое слово. Логическая схема состояния МОВ для кода 1436 определяет код для декодирования с использованием входного состояния 1442. Код вводится в логическую схему расширения 1438 для вырабатывания максимальной длины прогона текущего шаблона и величины расщепления R3. Логическая схема декодирования 1439 декодирует кодовое слово для производства выходного сигнала счета прогонов. Мультиплексор 1440 выбирает либо выходной сигнал логической схемы декодирования 1439, либо входной сигнал режима 1442 для логической схемы обновления счета прогонов 1441. Логическая схема обновления счета прогонов 1441 обновляет счет прогонов. The MOB update logic 1434 updates the status of the MOB. In one embodiment of the invention, the state of the MOB is updated using the current state. The corrected state is sent to the storage device. The logic of the new codewords 1435 determines whether a new codeword is needed. The MOV state logic for code 1436 determines the code for decoding using the input state 1442. The code is entered into the extension logic 1438 to generate the maximum run length of the current template and the splitting value R3. Decoding logic 1439 decodes a codeword to produce a run count output. The multiplexer 1440 selects either the output of the decoding logic 1439 or the input of mode 1442 for the run count update logic 1441. The run count update logic 1441 updates the run count.

Соответствующая настоящему изобретению система декодирования 1400, включающая декодирующее устройство 1430, работает конвейерным способом. В одном варианте осуществления изобретения соответствующая настоящему изобретению декодирующая система 600 определяет контекстные сборники, оценивает вероятности, декодирует кодовые слова и генерирует двоичные разряды из счетов прогонов, все это выполняя конвейерным способом. Один вариант осуществления конвейерной структуры системы декодирования изображен на фиг. 20. Показанный на чертеже вариант осуществления конвейеризованного процесса декодирования содержит шесть ступеней 1-6. A decoding system 1400 according to the present invention, including a decoding device 1430, operates in a pipelined manner. In one embodiment of the invention, the decoding system 600 of the present invention determines context collections, estimates probabilities, decodes codewords, and generates binary bits from run accounts, all by pipelining. One embodiment of the piping structure of a decoding system is depicted in FIG. 20. The embodiment of the pipelined decoding process shown in the drawing comprises six steps 1-6.

На первой ступени определяется текущий контекстный сборник (1501). На второй ступени после определения элемента контекста происходит считывание запоминающего устройства (1502), при котором из запоминающего устройства выбирается текущее состояние декодирующего устройства для элемента контекста. Как установлено выше, состояние декодирующего устройства включает в себя режим МОВ и состояние генератора двоичных разрядов. At the first stage, the current contextual collection (1501) is determined. In the second step, after the determination of the context element, a memory device (1502) is read, in which the current state of the decoding device for the context element is selected from the memory device. As stated above, the state of the decoding device includes the MOB mode and the state of the binary generator.

На третьей ступени соответствующего настоящему изобретению конвейеризованного процесса декодирования генерируется разуплотненный двоичный разряд (1503). Это создает возможность обеспечения пригодности двоичного разряда для контекстной модели. Две другие операции происходят в течение третьей ступени. Состояние МОВ преобразуется в тип кода (1504), а определение осуществляется относительно того, должно ли быть декодировано новое кодовое слово (1505), что также происходит на третьей ступени. In a third step of the pipelined decoding process of the present invention, a decompressed binary bit (1503) is generated. This makes it possible to ensure the suitability of the binary digit for the context model. Two other operations occur during the third stage. The state of the MOV is converted to a code type (1504), and the determination is made as to whether a new codeword (1505) should be decoded, which also occurs in the third stage.

Во время четвертой ступени декодирующая система обрабатывает кодовое слово и (или) обновляет счет прогонов (1506). При обработке кодового слова и обновлении счета прогонов осуществляются несколько подопераций. Например, кодовое слово декодируют с целью определения следующего счета прогонов или счет прогонов обновляют для текущего кодового слова (1506). Если это необходимо, то при декодировании новых кодовых слов из входного сигнала устройства обратного магазинного типа выбираются дополнительные кодированные данные. Другая подоперация, происходящая на четвертой стадии, заключается в обновлении состояния МОВ (1507). И наконец, на четвертой стадии конвейера декодирования используется новое состояние МОВ для определения, какое кодовое слово нулевой длины прогона (описываемое ниже) подходит для следующего кода, если счет прогонов текущего кодового слова равен нулю (1508). During the fourth stage, the decoding system processes the codeword and / or updates the run count (1506). When processing the code word and updating the run count, several sub-operations are performed. For example, the codeword is decoded to determine the next run count, or the run count is updated for the current codeword (1506). If necessary, then when decoding new codewords, additional encoded data is selected from the input signal of the inverse store type device. Another suboperation that occurs in the fourth stage is to update the state of the MOV (1507). Finally, in the fourth stage of the decoding pipeline, the new MOB state is used to determine which codeword of zero run length (described below) is suitable for the next code if the run count of the current codeword is zero (1508).

Во время пятого этапа соответствующего настоящему изобретению конвейера декодирования состояние декодирующего устройства вместе с обновленным состоянием МОВ записывается в запоминающее устройство (1509), и начинается сдвигание для следующего кодового слова (1510). На шестой ступени сдвигание к следующему кодовому слову завершается (1510). During the fifth step of the decoding pipeline of the present invention, the state of the decoding device, together with the updated state of the MOB, is written to the storage device (1509), and the offset for the next codeword begins (1510). At the sixth step, the shift to the next codeword is completed (1510).

Соответствующее настоящему изобретению конвейеризованное декодирование фактически начинается с решения относительно того, запускать ли процесс декодирования. Это определение основывается на том, достаточно ли имеется данных для представления их соответствующему настоящему изобретению декодирующему устройству. Если данных из устройства обратного магазинного типа не достаточно, система декодирования останавливается. В другом случае система декодирования может быть остановлена при вводе декодированных данных на периферийное устройство, которое не способно принимать все выходные данные декодирующего устройства, которые оно вырабатывает. Например, когда декодирующее устройство обеспечивает проработку выходного сигнала на интерфейс видеодисплея и связанные с ним телевизионные схемы, видеосигнал может иметь слишком низкую скорость, так что должен производиться останов декодирующего устройства для захвата видеосигнала. The pipelined decoding of the present invention actually begins with a decision as to whether to start the decoding process. This determination is based on whether there is enough data to present them to a decoding apparatus according to the present invention. If there is not enough data from the reverse store type device, the decoding system stops. In another case, the decoding system may be stopped when the decoded data is input to a peripheral device that is not capable of receiving all the output data of the decoding device that it produces. For example, when the decoding device provides the output signal to the video display interface and the associated television circuitry, the video signal may be too slow, so the decoding device must be stopped to capture the video signal.

После принятия решения на запуск процесса декодирования с помощью контекстной модели определяется текущий контекстный элемент. В настоящем изобретении текущий контекстный элемент устанавливается путем исследования предшествующих данных. Такие предшествующие данные могут храниться в строчных буферных устройствах и могут включать в себя данные из текущей строки и (или) предшествующих строк. Например, в шаблоне контекста для данного двоичного разряда двоичные разряды из строчного буферного устройства (буферных устройств) можно конструировать с использованием шаблона относительно предшествующих данных, так что контекстный элемент для текущих данных выбирается в соответствии с тем, согласуются ли проверяемые предшествующие данные с шаблоном. Эти строчные буферные устройства могут включать в себя регистры сдвига двоичных разрядов. Для каждой разрядной матрицы n-разрядного изображения можно использовать шаблон. After a decision is made to start the decoding process using the context model, the current context element is determined. In the present invention, the current context element is established by examining the prior data. Such previous data may be stored in lowercase buffer devices and may include data from the current line and / or previous lines. For example, in a context template for a given bit, binary bits from a lowercase buffer device (s) can be constructed using a template relative to the previous data, so that the context element for the current data is selected according to whether the verified previous data matches the template. These lowercase buffer devices may include binary shift registers. For each bit matrix of an n-bit image, a pattern can be used.

В одном варианте осуществления изобретения элемент кодированного сигнала контекста выбирают с помощью вывода адреса в запоминающее устройство в течение следующего конвейерного этапа. Адрес может включать в себя заранее установленное количество двоичных разрядов, например три бита, для идентификации разрядной матрицы. С помощью использования трех двоичных разрядов можно идентифицировать положение двоичных разрядов в данных элемента изображения. Используемый для определения контекста шаблон также может быть представлен в виде части адреса. Используемые для идентификации разрядной матрицы двоичные разряды и двоичные разряды, идентифицирующие шаблон, можно объединить с целью создания адреса для специальной ячейки в запоминающем устройстве, которое содержит информацию о режиме для элемента кодированного сигнала контекста, определяемого этими двоичными разрядами. Например, используя три двоичных разряда для определения позиции двоичных разрядов в контекстном элементе изображения и десять предыдущих двоичных разрядов в той же самой позиции в каждом из предшествующих элементов изображения в шаблоне, можно создать 13-разрядный адрес контекста. In one embodiment of the invention, the context encoded signal element is selected by outputting the address to the memory during the next pipelining step. The address may include a predetermined number of binary bits, for example three bits, to identify the bit matrix. By using three binary bits, the position of the binary bits in the image element data can be identified. The template used to define the context can also be represented as part of the address. The binary digits and the binary digits that identify the pattern used to identify the bit matrix can be combined to create an address for a special cell in a storage device that contains mode information for an element of the encoded context signal defined by these binary digits. For example, using three binary digits to determine the position of the binary digits in the context image element and ten previous binary digits at the same position in each of the previous image elements in the template, you can create a 13-bit context address.

Используя создаваемый с помощью контекстной модели адрес, запоминающее устройство (например, запоминающее устройство с произвольной выборкой, ЗУПВ) запрашивается для получения информации о состоянии. Состояние включает в себя состояние МОВ. Состояние МОВ включает в себя текущую оценку вероятности. Поскольку один и тот же код использует более одного состояния, состояние МОВ включает в себя не класс вероятности или обозначение кода, а скорее указатель на таблицу, типа таблицы, показанной на фиг. 8. Кроме того, при использовании таблицы типа изображенной на фиг. 8 состояние МОВ обеспечивает также наиболее вероятный символ (БВС) в качестве средства для идентификации того, соответствует ли текущее состояние МОВ положительной или отрицательной стороне таблицы. Состояние генерации двоичных разрядов может включать в себя величину счета и индикацию, имеется ли МВС (наименее вероятный символ). В одном варианте осуществления изобретения включена также величина БВС (наиболее вероятного символа) для текущего прогона для декодирования следующего кодового слова. В настоящем изобретении в целях снижения пространства, требуемого для счетчиков прогона, состояние генерирования двоичных разрядов хранится в запоминающем устройстве. Если стоимость пространства в системе, требуемого для счетчиков для каждого контекста, низкая, состояние генерирования двоичных разрядов не должно запоминаться в запоминающем устройстве. Using the address created using the context model, a storage device (for example, a random access memory device, RAM) is requested to obtain status information. The state includes the state of the MOB. The MOV status includes a current probability estimate. Since the same code uses more than one state, the state of the MOB does not include a probability class or code designation, but rather a pointer to a table, such as the table shown in FIG. 8. In addition, when using the type table shown in FIG. 8, the state of the MOV also provides the most probable character (BVS) as a means to identify whether the current state of the MOV corresponds to the positive or negative side of the table. The status of the generation of binary digits may include a count value and an indication of whether there is a MVS (least probable symbol). In one embodiment of the invention, a BWS (most probable symbol) value is also included for the current run to decode the next codeword. In the present invention, in order to reduce the space required for run counters, the state of generating binary bits is stored in a storage device. If the cost of the space in the system required for the counters for each context is low, the state of the generation of the binary digits should not be stored in the storage device.

После завершения четвертой ступени в запоминающее устройство записываются новое состояние генератора двоичных разрядов и состояние МОВ. Кроме того, на пятом этапе поток кодированных данных сдвигается к следующему кодовому слову. Операция сдвигания завершается на шестом этапе. After the fourth stage is completed, the new state of the binary generator and the state of the MOV are recorded in the storage device. In addition, in the fifth step, the encoded data stream is shifted to the next codeword. The shift operation is completed in the sixth step.

На фиг. 19 представлена блок-схема одного варианта осуществления соответствующей настоящему изобретению структуры обратного магазинного типа 1401, иллюстрирующая буферизацию слова с чередованием для двух декодирующих устройств. Отметим, что можно поддерживать любое количество декодирующих устройств, используя принципы настоящего изобретения. Как показано, входные данные и структура обратного магазинного типа имеют достаточную длину для размещения двух слов с чередованием. Структура обратного магазинного типа 1401 содержит структуру обратного магазинного типа 1460, регистры 1461 и 1462, мультиплексоры 1463 и 1464 и блок управления 1465. В качестве входных слов с чередованием подаются два входных кодовых слова. Выходы структуры обратного магазинного типа 1460 подсоединены к входам регистров 1461 и 1462. Входы мультиплексора 1463 подсоединены к выходам регистров 1461 и 1462. Блок управления 1465 подсоединен для обеспечения управляющих сигналов для структуры обратного магазинного типа 1460, регистров 1461 и 1462 и мультиплексоров 1463 и 1464. Слова с чередованием представляют собой выходные данные (выходные данные 1 и 2), обеспечиваемые для двух декодирующих устройств. Каждое декодирующее устройство использует сигнал запроса для индикации использования текущего слова и необходимости следующего нового слова. Сигналы запросов от декодирующих устройств подаются на входы блока управления 1465. Блок управления 1465 выдает сигнал запроса структуры обратного магазинного типа с целью запроса дополнительных данных из запоминающего устройства. In FIG. 19 is a block diagram of one embodiment of an inverse store type structure 1401 according to the present invention, illustrating interleaved word buffering for two decoding devices. Note that any number of decoding devices can be supported using the principles of the present invention. As shown, the input data and the inverse store type structure are long enough to accommodate two alternating words. The structure of the inverse store type 1401 contains the structure of the inverse store type 1460, registers 1461 and 1462, multiplexers 1463 and 1464, and a control unit 1465. Two input codewords are provided as alternating input words. The outputs of the reverse storefront structure 1460 are connected to the inputs of the registers 1461 and 1462. The inputs of the multiplexer 1463 are connected to the outputs of the registers 1461 and 1462. The control unit 1465 is connected to provide control signals for the reverse storefront type 1460, the registers 1461 and 1462, and the multiplexers 1463 and 1464. The interlaced words are output (output 1 and 2) provided for two decoding devices. Each decoding device uses a request signal to indicate the use of the current word and the need for the next new word. The request signals from the decoding devices are fed to the inputs of the control unit 1465. The control unit 1465 provides a request signal of the inverse store type structure in order to request additional data from the storage device.

На начальной стадии структура обратного магазинного типа и регистры 1461 и 1462 заполнены данными, а в блоке управления 1465 установлено действительное состояние триггера. Всякий раз, когда появляется запрос, блок управления 1465 обеспечивает данные в соответствии с логикой, показанной в табл. 17. At the initial stage, the inverse store-type structure and registers 1461 and 1462 are filled with data, and the actual state of the trigger is set in the control unit 1465. Whenever a request appears, the control unit 1465 provides data in accordance with the logic shown in the table. 17.

На фиг. 21 показано другое конструктивное представление соответствующего настоящему изобретению декодирующего устройства. Рассматривая фиг. 21, отметим, что в декодирующее устройство вводятся (кодированные) данные переменной длины. Декодирующее устройство выдает сигнал, который подается обратно в качестве обратной связи с задержкой, которая принимается в качестве входного сигнала декодирующего устройства. В соответствующем настоящему изобретению декодирующем устройстве сдвиг переменной длины, используемый при декодировании, базируется на декодированных данных, которые имеются в наличии после некоторой задержки. Задержка обратной связи не снижает пропускную способность в декодирующих устройствах с допустимой задержкой. In FIG. 21 shows another structural representation of a decoding apparatus according to the present invention. Referring to FIG. 21, note that variable-length (encoded) data is input into the decoding device. The decoding device provides a signal that is fed back as feedback with a delay, which is received as the input signal of the decoding device. In the decoding apparatus of the present invention, the variable length offset used in decoding is based on the decoded data that is available after some delay. Feedback delay does not reduce the bandwidth in decoding devices with an acceptable delay.

Входные данные переменной длины делятся на слова с чередованием, имеющие фиксированную длину так, как описано в связи с фиг. 7. Декодирующее устройство использует слова фиксированной длины, как описано ниже со ссылкой на фиг. 22. Декодирующее устройство и задержка моделируют конвейерное декодирующее устройство, как описано в связи с фиг. 20, 21 и 39, или множество параллельных декодирующих устройств типа описанных в связи с фиг. 2-5. Таким образом, настоящее изобретение обеспечивает декодирующее устройство, не критичное к задержке. Соответствующие настоящему изобретению декодирующие устройства с допустимой задержкой позволяют параллельно манипулировать данными переменной длины. Variable-length input data is divided into interlaced words having a fixed length as described in connection with FIG. 7. The decoding apparatus uses fixed-length words, as described below with reference to FIG. 22. The decoding device and the delay model the conveyor decoding device, as described in connection with FIG. 20, 21 and 39, or a plurality of parallel decoding devices of the type described in connection with FIG. 2-5. Thus, the present invention provides a decoding device that is not critical to delay. Delayed decoding apparatuses of the present invention allow parallel manipulation of variable length data.

Известные декодирующие устройства (например, декодирующие устройства Хаффмена) являются критичными к задержке. Для выполнения сдвига переменной длины, необходимого для декодирования следующего кодового слова, требуется информация, определяемая из декодирования всех предшествующих кодовых слов. В противоположность этому настоящее изобретение обеспечивает создание декодирующих устройств с допустимой задержкой. Known decoding devices (e.g., Huffman decoding devices) are delay critical. To perform a variable length shift necessary to decode the next codeword, information is required determined from the decoding of all previous codewords. In contrast, the present invention provides decoding devices with an acceptable delay.

Сдвиг в системе декодирования. Shift in the decoding system.

Соответствующее настоящему изобретению декодирующее устройство предусматривает сдвигающую логическую схему для сдвига слов с чередованием в соответствующий генератор двоичных разрядов для декодирования. Соответствующее настоящему изобретению сдвигающее устройство не требует никакого конкретного типа параллелизма "по контексту" или "по вероятности". Предполагается кодирующее устройство, которое назначает кодовое слово M по потоку M по модулю N (M%N на языке на основе языка Си), где N - количество потоков. В настоящем изобретении представляются кодированные данные из текущего потока до тех пор, пока не будет запрошено кодовое слово. Только после этого данные переключаются на следующий поток. A decoding apparatus according to the present invention provides a shifting logic circuit for shifting words interleaved into a corresponding binary bit generator for decoding. The shifting device of the present invention does not require any particular type of parallelism “in context” or “in probability”. An encoding device is assumed that assigns a codeword M to a stream M modulo N (M% N in C language), where N is the number of streams. The present invention provides encoded data from a current stream until a codeword is requested. Only after that the data switches to the next stream.

На фиг. 22 показан один вариант осуществления сдвигающего устройства для соответствующего настоящему изобретению декодирующего устройства. Сдвигающее устройство 1600 сконструировано для четырех потоков данных. Это обеспечивает четыре тактовых цикла для каждой операции сдвигания. Слова с чередованием состоят из 16 двоичных разрядов, а самое длинное кодовое слово состоит из 13 двоичных разрядов. Сдвигающее устройство 1600 включает в себя четыре регистра 1601-1604, подсоединенные для приема входных сигналов кодированных данных с чередованием. Выходы каждого из регистров 1601-1604 подсоединены к входам мультиплексора 1605. Выход мультиплексора 1605 подсоединен к входу многорегистрового циклического сдвигового устройства 1606. Выходной сигнал многорегистрового циклического сдвигового устройства 1606 подается в качестве входных сигналов на регистр 1607, мультиплексор и регистры 1608-1610 и размерный блок 1611. Выход размерного блока 1611 подсоединен к накапливающему сумматору 1612. Выходной сигнал накапливающего сумматора 1612 подается обратно и поступает на многорегистровое циклическое сдвиговое устройство 1606. Выходной сигнал регистра 1607 поступает в качестве входного сигнала на мультиплексор и регистр 1608. Выходной сигнал мультиплексора и регистра 1608 подается в качестве входного сигнала на мультиплексор и регистр 1609. Выходной сигнал мультиплексора и регистра 1609 подается в качестве входного сигнала на мультиплексор и регистр 1610. Выходной сигнал мультиплексора и регистра 1610 представляет собой выровненные кодированные данные. В одном варианте осуществления изобретения регистры 1601-1604 представляют собой 16-разрядные регистры, многорегистровое циклическое сдвиговое устройство 1606 - 32-13-разрядное многорегистровое циклическое сдвиговое устройство, а накапливающий сумматор 1612 представляет 4-разрядный накапливающий сумматор. In FIG. 22 shows one embodiment of a shifting device for a decoding device according to the present invention. The shifter 1600 is designed for four data streams. This provides four clock cycles for each shift operation. Alternating words consist of 16 binary bits, and the longest code word consists of 13 binary bits. The shifter 1600 includes four registers 1601-1604 connected to receive interleaved encoded data signals. The outputs of each of the registers 1601-1604 are connected to the inputs of the multiplexer 1605. The output of the multiplexer 1605 is connected to the input of the multi-register cyclic shift device 1606. The output signal of the multi-register cyclic shift device 1606 is supplied as input signals to the register 1607, the multiplexer and the registers 1608-1610 and the size block 1611. The output of the size block 1611 is connected to the accumulating adder 1612. The output signal of the accumulating adder 1612 is fed back and fed to the multi-register cyclic shift device 1606. The output signal of register 1607 is supplied as an input signal to the multiplexer and register 1608. The output signal of the multiplexer and register 1608 is supplied as an input signal to the multiplexer and register 1609. The output signal of the multiplexer and register 1609 is supplied as an input signal to the multiplexer and register 1610. The output of the multiplexer and register 1610 is aligned encoded data. In one embodiment, registers 1601-1604 are 16-bit registers, a multi-register cyclic shift device 1606 is a 32-13-bit multi-register cyclic shift device, and the accumulating adder 1612 is a 4-bit accumulating adder.

Регистры 1601-1604 принимают 16-разрядные слова из устройства обратного магазинного типа и посылают их на вход многорегистрового циклического сдвигового устройства 1606. В каждый момент времени по меньшей мере 32 двоичных разряда некодированных данных обеспечиваются для многорегистрового циклического сдвигового устройства 1606. Для начала четыре регистра 1601-1604 инициализируются двумя 16-разрядными словами кодированных данных. Это позволяет всегда иметь в наличии по меньшей мере одно новое кодовое слово для каждого потока. Registers 1601-1604 receive 16-bit words from the inverse store type device and send them to the input of the multi-register cyclic shift device 1606. At each time point, at least 32 bits of non-encoded data are provided for the multi-register cyclic shift device 1606. To start, four registers 1601 -1604 is initialized with two 16-bit encoded data words. This allows you to always have at least one new codeword for each stream.

Что касается R-кодов, то размерный блок кодовых слов 1611 определяет, присутствует ли кодовое слово "0" или "1N", и, если этим кодовым словом является "1N", то как много двоичных разрядов после символа "1" являются частью текущего кодового слова. Размерный блок, обеспечивающий такую же функцию, был описан фиг. 15. Для других кодов в технике хорошо известно определение размера кодового слова. As for R-codes, the dimensional block of codewords 1611 determines whether the codeword is “0” or “1N”, and if this codeword is “1N”, then how many binary bits after the character “1” are part of the current code word. A dimensional block providing the same function has been described in FIG. 15. For other codes, the technique of determining the size of a codeword is well known.

Сдвигающее устройство 1600 включает в себя устройство обратного магазинного типа, состоящее из четырех регистров, три из которых имеют мультиплексированные входы. Каждый из регистров 1607-1610 предназначен для размещения по меньшей мере одного кодового слова, так что длина регистров и мультиплексоров составляет 13 двоичных разрядов для размещения самого длинного возможного кодового слова. С каждым регистром связан также один управляющий мультивибратор (не показан), который показывает, содержит ли конкретный регистр кодовое слово или он ожидает подачи кодового слова от многорегистрового циклического сдвигового устройства 1606. The biasing device 1600 includes a reverse store type device consisting of four registers, three of which have multiplexed inputs. Each of the registers 1607-1610 is designed to accommodate at least one codeword, so that the length of the registers and multiplexers is 13 bits to accommodate the longest possible codeword. Each register is also associated with one control multivibrator (not shown), which indicates whether a particular register contains a codeword or is waiting for a codeword to be received from a multi-register cyclic shift device 1606.

Устройство обратного магазинного типа никогда не бывает пустым. Можно использовать только одно кодовое слово за тактовый цикл и за временной цикл можно сдвигать одно кодовое слово. Задержка на выполнение сдвига компенсируется, поскольку система заранее запускает четыре кодовых слова. Как только каждое кодовое слово будет сдвинуто для обеспечения совмещения выходных кодированных данных, другие кодовые слова в регистрах 1607-1610 сдвигаются в сторону младших разрядов. Когда левое кодовое слово в устройстве обратного магазинного типа запоминается в регистре 1602, многорегистровое циклическое сдвигающее устройство 1606 вызывает считывание кодовых слов из регистров 1601-1604 через мультиплексор 1605 с тем, чтобы заполнить регистры 1607-1609. Отметим, что устройство обратного магазинного типа можно сконструировать таким образом, чтобы повторно заполнять регистр 1607 следующим кодовым словом, как только его кодовое слово будет сдвинуто в регистр 1608. A reverse store-like device is never empty. You can use only one codeword per clock cycle and you can shift one codeword per time cycle. The shift delay is compensated because the system starts four codewords in advance. As soon as each codeword is shifted to ensure alignment of the output encoded data, the other codewords in the registers 1607-1610 are shifted towards the lower digits. When the left codeword in the inverse store type device is stored in the register 1602, the multi-register cyclic shift device 1606 causes the codewords to be read from the registers 1601-1604 through the multiplexer 1605 so as to fill the registers 1607-1609. Note that the inverse store type device can be designed to re-populate register 1607 with the next code word as soon as its code word is shifted to register 1608.

Многорегистровое циклическое сдвиговое устройство 1606, вычислительное устройство размера кодовых слов 1611 и выбранный накапливающий сумматор 1612 манипулируют сдвигом переменной длины. Накапливающий сумматор 1612 имеет четыре регистра, по одному для каждого потока кодированных данных, каждый из которых содержит выравненное текущее кодовое слово для каждого потока данных. Накапливающий сумматор 1612 представляет собой четырехразрядный накапливающий сумматор, используемый для управления многорегистровым циклическим сдвиговым устройством 1606. Накапливающий сумматор 1612 осуществляет приращение своего значения на значение входного сигнала, поступающего из размерного блока кодовых слов 1611. Когда накапливающий сумматор 1612 переполняется (например, каждый раз, когда счет сдвига равен 16 или больше), регистры 1601-1604 тактируются для сдвигания. Каждый другой сдвиг на 16 разрядов вызывает запрос нового 32-разрядного слова из устройства обратного магазинного типа. Входной сигнал накапливающего сумматора 1611 характеризует собой размер кодового слова, который определяется текущим кодом и первым одним или двумя разрядами текущего кодового слова. Отметим, что в некоторых вариантах осуществления изобретения регистры 1601-1604 должны инициализироваться кодированными данными до начала декодирования. A multi-register cyclic shift device 1606, a codeword size computing device 1611, and a selected accumulative adder 1612 manipulate a variable-length shift. The accumulating adder 1612 has four registers, one for each stream of encoded data, each of which contains a aligned current codeword for each data stream. The accumulating adder 1612 is a four-digit accumulating adder used to control a multi-register cyclic shift device 1606. The accumulating adder 1612 increments its value by the value of the input signal coming from the dimensional block of code words 1611. When the accumulating adder 1612 overflows (for example, every time shift count is 16 or greater), registers 1601-1604 are clocked for shifting. Each other shift of 16 bits causes a request for a new 32-bit word from a reverse store type device. The input signal of the accumulating adder 1611 characterizes the size of the code word, which is determined by the current code and the first one or two bits of the current code word. Note that in some embodiments, registers 1601-1604 must be initialized with encoded data before decoding begins.

Когда система запрашивает кодовое слово, регистры в устройстве обратного магазинного типа тактируются так, что кодовые слова перемещаются к выходу. Когда многорегистровое циклическое сдвиговое устройство 1606 оказывается готовым выдать новое кодовое слово, оно мультиплексируется в первый незанятый регистр в устройстве обратного магазинного типа. When the system requests a codeword, the registers in the inverse store-type device are clocked so that the codewords move to the output. When the multi-register cyclic shift device 1606 is ready to issue a new codeword, it is multiplexed into the first unoccupied register in the inverse store type device.

В этом варианте осуществления изобретения сигнал следующего кодового слова из генератора двоичных разрядов принимается до принятия решения на переключение потоков. In this embodiment of the invention, the next codeword signal from the binary generator is received before deciding to switch the streams.

Если нельзя гарантировать, что сигнал следующего кодового слова с генератора двоичных разрядов будет принят до принятия решения о переключении потоков, можно использовать систему предварительного просмотра, иллюстрируемую фиг. 23. На чертеже показано в виде блок-схемы сдвигающее устройство 1620, использующее систему предварительного просмотра. Сдвигающее устройство 1620 включает в себя сдвигающее устройство 1600, которое производит выходные сигналы текущих кодированных данных и следующих кодированных данных. Текущие кодированные данные подают на вход логического блока предварительной обработки кодовых слов 1624. Следующие кодированные данные подаются на вход логического блока предварительной обработки кодированных слов 1622. Выходы обоих логических блоков предварительной обработки 1621 и 1622 подсоединены к входам мультиплексора 1623. Выход мультиплексора 1623 подсоединен к другому входу логического блока обработки кодовых слов 1624. If it is not possible to guarantee that the next codeword signal from the binary generator will be received before deciding to switch the streams, the preview system illustrated in FIG. 23. The drawing shows in block diagram form a shifting device 1620 using a preview system. The shifting device 1620 includes a shifting device 1600, which produces the output signals of the current encoded data and the following encoded data. The current encoded data is fed to the input of the preprocessing logic block of code words 1624. The following encoded data is fed to the input of the preprocessing logic block of encoded words 1622. The outputs of both preprocessing logic 1621 and 1622 are connected to the inputs of multiplexer 1623. The output of multiplexer 1623 is connected to another input logical block processing codewords 1624.

Логическое устройство, использующее кодовое слово, делится на две части: логическое устройство предварительной обработки кодовых слов и логическое устройство обработки кодовых слов. Два идентичных конвейерных блока предварительной обработки 1621 и 1622 работают до того, как можно будет сдвинуть перемежаемый поток. Один из блоков предварительной обработки 1621, 1622 вырабатывает надлежащую информацию в том случае, если поток переключается, а другой вырабатывает информацию, если поток не переключается. Когда поток переключается, выходной сигнал блока предварительной обработки соответствующих кодовых слов мультиплексируется с помощью мультиплексора 1623 в логическое устройство обработки кодовых слов 1624, которое завершает операцию с соответствующим кодовым словом. A logical device using a codeword is divided into two parts: a logical device for preprocessing codewords and a logical device for processing codewords. Two identical pre-processing conveyor units 1621 and 1622 operate before the interleaved stream can be shifted. One of the preprocessing units 1621, 1622 generates the appropriate information if the flow is switched, and the other generates information if the flow is not switched. When the flow is switched, the output of the preprocessing unit of the corresponding codewords is multiplexed by a multiplexer 1623 into a codeword processing logic 1624 that completes the operation with the corresponding codeword.

Память и контекстные модели вне кристалла. Memory and context models outside the crystal.

В одном варианте осуществления изобретения может оказаться желательным использовать множество кристаллов для внешнего запоминающего устройства или внешних контекстных моделей. В таких вариантах осуществления изобретения желательно снизить задержку между генерированием двоичного разряда и предоставлением двоичного разряда для контекстной модели, где используется множество интегральных схем. In one embodiment of the invention, it may be desirable to use multiple crystals for external storage or external context models. In such embodiments, it is desirable to reduce the delay between generating a bit and providing a bit for a context model that uses many integrated circuits.

На фиг. 24 показана блок-схема одного варианта осуществления системы с внешним кристаллом контекстной модели 1701 и кристаллом кодирующего устройства 1702 с запоминающим устройством для каждого контекста. Отметим, что на кристалле кодирующего устройства показаны только блоки, имеющие отношение к контекстной модели. Специалистам в данной области техники ясно, что кристалл кодирующего устройства 1702 содержит схемы генерирования двоичных разрядов, оценки вероятности и т.д. Кристалл кодирующего устройства 1702 включает в себя контекстную модель нулевого порядка 1703, контекстные модели 1704 и 1705, логическую схему выбора 1706, схему управления запоминающим устройством 1707 и запоминающее устройство 1708. Контекстная модель нулевого порядка 1703 и контекстные модели 1704 и 1705 вырабатывают выходные сигналы, которые подаются на входы логической схемы выбора 1706. Другой вход логической схемы выбора 1706 подсоединен к выходу внешнего кристалла контекстной модели 1701. Выход логической схемы выбора 1706 подсоединен к входу запоминающего устройства 1708. Кроме того, к входу запоминающего устройства 1708 подсоединен выход блока управления запоминающим устройством 1707. In FIG. 24 is a block diagram of one embodiment of a system with an external crystal of a context model 1701 and a crystal of an encoding device 1702 with memory for each context. Note that only blocks related to the context model are shown on the crystal of the encoder. Those skilled in the art will appreciate that the crystal of the encoder 1702 contains circuits for generating binary bits, probability estimates, etc. The crystal of the encoder 1702 includes a zero order context model 1703, context models 1704 and 1705, a selection logic 1706, a memory control circuit 1707, and a memory 1708. The zero order context model 1703 and context models 1704 and 1705 generate output signals that served on the inputs of the selection logic circuit 1706. Another input of the selection logic circuit 1706 is connected to the output of the external crystal of the context model 1701. The output of the selection logic circuit 1706 is connected to the input th device 1708. In addition, to the input of memory 1708 is connected the output of the control unit memory device 1707.

Логическая схема выбора 1706 позволяет использовать либо внешнюю контекстную модель, либо внутреннюю контекстную модель (например, контекстную модель нулевого порядка 1703, контекстную модель 1704, контекстную модель 1705). Логическая схема выбора 1706 позволяет внутреннюю часть нулевого порядка контекстной модели 1703 использовать, даже когда используется внешняя контекстная модель 1701. Контекстная модель нулевого порядка 1703 обеспечивает один двоичный разряд или больше, в то время как внешний кристалл контекстной модели 1701 обеспечивает оставшуюся часть. Например, непосредственно предшествующие двоичные разряды могут представлять обратную связь и возвращаться обратно из контекстной модели нулевого порядка 1703, тогда как предшествующие двоичные разряды идут во внешнюю контекстную модель 1701. Таким образом, критическая по времени информация остается на кристалле. Это устраняет задержку на передачу информации вне кристалла для последних сформированных двоичных разрядов. The selection logic 1706 allows you to use either an external context model or an internal context model (for example, a zero-order context model 1703, context model 1704, context model 1705). The selection logic 1706 allows the zero-order inner part of the context model 1703 to be used even when the external context model 1701 is used. The zero-order context model 1703 provides one or more binary bits, while the external crystal of the context model 1701 provides the remainder. For example, the immediately preceding bits can represent feedback and return back from the zero order context model 1703, while the preceding bits go to the external context model 1701. Thus, time-critical information remains on the chip. This eliminates the delay in transmitting information off-chip for the last generated binary bits.

На фиг. 25 представлена блок-схема одной системы с внешней контекстной моделью 1801, внешним запоминающим устройством 1803 и кристаллом кодирующего устройства 1802. Некоторые адресные линии запоминающего устройства приводятся в действие внешней контекстной моделью 1801, тогда как другие приводятся в действие контекстной моделью "нулевого порядка" в кристалле кодирующего устройства 1802. То есть, контекст из только что прошедшего цикла декодирования приводится в действие контекстной моделью нулевого порядка. Это дает возможность кристаллу декодирующего устройства обеспечивать информацию контекста из только что прошедшего цикла с минимальной задержкой передачи информации. Кристалл контекстной модели 1802 опережает остальную часть информации, использующую двоичные разряды, декодированные более давно в прошлом, тем самым допуская задержку в передаче информации. Во многих случаях контекстная информация из только что прошедшего цикла характеризует собой состояние Маркова нулевого порядка, а контекстная информация из более отдаленного прошлого представляет состояние Маркова более высокого порядка. Показанный на фиг. 25 вариант осуществления изобретения устраняет задержку передачи информации, неизбежную при осуществлении модели нулевого порядка во внешнем кристалле контекстной модели 1802. Однако здесь все еще может быть определение контекстного элемента с целью задержки генерируемых двоичных разрядов, обусловленной кристаллом декодирующего устройства 1802 и запоминающим устройством 1803. In FIG. 25 is a block diagram of one system with an external context model 1801, external storage device 1803, and an encoding chip 1802. Some address lines of the storage device are driven by an external context model 1801, while others are driven by a “zero order” context model in the chip encoding device 1802. That is, a context from a just past decoding cycle is driven by a zero-order context model. This enables the chip of the decoding device to provide context information from a just past cycle with a minimum information transfer delay. The crystal of the context model 1802 is ahead of the rest of the information using binary bits decoded more long ago in the past, thereby allowing a delay in the transmission of information. In many cases, contextual information from a recently passed cycle characterizes a zero-order Markov state, and contextual information from a more distant past represents a higher-order Markov state. Shown in FIG. 25, an embodiment of the invention eliminates the information transfer delay that is inevitable when implementing the zero-order model in the external crystal of the context model 1802. However, there may still be a definition of the context element in order to delay the generated binary bits due to the chip of the decoding device 1802 and the storage device 1803.

Следует отметить, что можно использовать другую архитектуру запоминающего устройства. Например, можно использовать систему с контекстной моделью и запоминающим устройством на одном кристалле, а кодирующее устройство - на другом кристалле. Кроме того, система может включать в себя кристалл кодирующего устройства с внутренним запоминающим устройством, которое используется для некоторых контекстов и внешнее запоминающее устройство, которое используется с другими контекстами. It should be noted that a different storage architecture may be used. For example, you can use a system with a context model and memory on one chip, and the encoder on another chip. In addition, the system may include an encoding chip with an internal storage device that is used for some contexts and an external storage device that is used with other contexts.

На фиг. 26 показано декодирующее устройство с конвейеризированным генератором двоичных разрядов, использующим запоминающее устройство. Как показано на фиг. 26, декодирующее устройство 1900 включает в себя контекстную модель 1901, запоминающее устройство 1902, блок преобразования состояния МОВ в код 1903, конвейеризированный генератор двоичных разрядов 1905, запоминающее устройство 1904 и сдвигающее устройство 1906. Входной сигнал контекстной модели 1901 включает в себя декодированные данные с конвейеризированного генератора последовательности бит 1905. Входы сдвигающего устройства 1906 подсоединены для приема кодированных данных. Выход контекстной модели 1901 подсоединен к входу запоминающего устройства 1902. Выход запоминающего устройства 1902 подсоединен к блоку преобразования состояния МОВ в код 1903. Выход блока преобразования режима МОВ в код 1903 и выход выровненных кодированных данных со сдвигающего устройства 1906 подсоединены к входам генератора двоичных разрядов 1905. Запоминающее устройство 1904 также подсоединено к генератору двоичных разрядов 1905, используя двунаправленную шину. Выходной сигнал генератора двоичных разрядов 1905 представляет собой декодированные данные. In FIG. 26 shows a decoding device with a pipelined binary generator using a storage device. As shown in FIG. 26, the decoding device 1900 includes a context model 1901, a storage device 1902, a MOB to code 1903 conversion unit, a pipelined binary digit generator 1905, a storage device 1904, and a shifter 1906. The input to the context model 1901 includes decoded data from the pipelined a bit sequence generator 1905. The inputs of the shifter 1906 are connected to receive encoded data. The output of the context model 1901 is connected to the input of the storage device 1902. The output of the storage device 1902 is connected to the block for converting the state of the MOB to code 1903. The output of the block for converting the MOB mode to code 1903 and the output of aligned encoded data from the shifting device 1906 are connected to the inputs of the binary generator 1905. Storage device 1904 is also connected to the binary generator 1905 using a bi-directional bus. The output of the binary generator 1905 is decoded data.

Под действием кодированных данных на входе контекстной модели 1901 на ее выходе появляется контекстный элемент. Элемент кодированного сигнала контекста используется в качестве адреса для обращения в запоминающее устройство 1902 на основании элемента кодированного сигнала контекста для получения вероятностного состояния, которое принимается модулем преобразования состояния МОВ в код 1903, который под действием вероятностного состояния вырабатывает класс вероятности. Затем класс вероятности используется в качестве адреса для обращения в запоминающее устройство 1904 для получения счета прогонов. После этого счет прогонов используется генератором двоичных разрядов 1905 для вырабатывания декодированных данных. Under the influence of encoded data at the input of the context model 1901, a context element appears at its output. The encoded context signal element is used as an address for accessing the storage device 1902 based on the encoded context signal element to obtain a probabilistic state, which is received by the module for converting the state of the MOB into code 1903, which generates a probability class under the action of the probabilistic state. The probability class is then used as an address to access memory 1904 to obtain a run count. After that, the run count is used by the binary generator 1905 to generate decoded data.

В одном варианте осуществления изобретения запоминающее устройство 1902 представляет собой память объемом 1024•7 двоичных разрядов (1024 - число различных контекстов), тогда как запоминающее устройство 1904 представляет собой память 25•14 двоичных разрядов (25 - число различных счетов прогонов). In one embodiment, memory 1902 is a 1024 * 7 binary bit memory (1024 is the number of different contexts), while memory 1904 is a 25 * 14 binary bit memory (25 is the number of different run counts).

Поскольку состояние генератора двоичных разрядов (счетов прогонов и т.д. ) связано с классами вероятности, а не с элементами кодированных сигналов контекста, имеется дополнительная конвейерная задержка перед тем, как двоичный разряд будет представлен для использования контекстной модели. Из-за того, что обновление состояния генератора двоичных разрядов занимает множество тактовых циклов (задержка на повторное обращение к памяти состояния генератора двоичных разрядов), для каждого класса вероятности будет использовано множество состояний генератора двоичных разрядов. Например, если конвейер занимает шесть тактовых циклов, то память состояний генератора двоичных разрядов имеет шесть входных сообщений на класс вероятности. Для выбора надлежащей ячейки памяти используется счетчик. Даже при большом количестве входных сообщений на класс вероятности размер памяти обычно бывает меньше, чем количество контекстов. Память может быть реализована либо в виде множества банков данных статистического запоминающего устройства с произвольной выборкой, либо в виде многопортового регистрового файла. Since the state of the binary digit generator (run counts, etc.) is associated with probability classes, and not with elements of encoded context signals, there is an additional pipeline delay before the binary bit is presented for using the context model. Due to the fact that updating the state of a binary generator takes a lot of clock cycles (the delay for re-accessing the state memory of a binary generator), for each probability class, many states of a binary generator will be used. For example, if the pipeline takes six clock cycles, then the state memory of the binary generator has six input messages per probability class. A counter is used to select the appropriate memory location. Even with a large number of input messages per probability class, the memory size is usually less than the number of contexts. The memory can be implemented either in the form of a plurality of data banks of a random access statistical storage device, or in the form of a multi-port register file.

Поскольку один счет прогонов может быть связан со множеством контекстов, вариант осуществления изобретения должен обновлять состояние оценки вероятности одного или более контекстов. В одном варианте осуществления изобретения обновляется состояние МОВ контекста, который вызывает окончание прогона. Since one run count may be associated with multiple contexts, an embodiment of the invention should update the state of the probability estimate of one or more contexts. In one embodiment of the invention, the state of the MOW context is updated, which causes the end of the run.

Вместо того, чтобы требовать считывание, модификацию и запись счета прогонов до того, как они могут быть считаны снова, счет прогонов снова можно использовать после завершения модификации. На фиг. 39 изображена временная диаграмма операции декодирования в одном варианте осуществления настоящего изобретения. Здесь показаны операции декодирования из трех циклов. Названия сигналов перечислены в левой колонке временной диаграммы. Достоверность сигнала во время любого одного цикла указана полосой в течение цикла (или его части). В некоторых случаях блок или логическая схема, ответственные за обеспечение достоверного сигнала, показаны рядом с индикацией достоверного сигнала в пунктирном прямоугольнике. Кроме того, приведены обозначения раскрытых здесь примеров конкретных элементов и блоков. Отметим, что любая часть сигнала, простирающаяся в другой цикл, индицирует достоверность сигнала только для того периода времени, который занят сигналом в этом другом цикле. Кроме того, некоторые сигналы показаны как отдельно достоверные более чем для одного цикла. Примером этого является временный сигнал счета прогонов, который достоверен в одной точке в конце второго цикла и затем вновь в течение третьего цикла. Отметим, что это указывает на то, что сигнал просто регистрируют в конце цикла. Перечень зависимостей также показан в табл. 18, показывающей зависимости от того же или предыдущего тактового цикла к текущему времени, и этот сигнал определяется достоверным. Instead of requiring reading, modifying, and writing the run count before they can be read again, the run count can again be used after the modification is completed. In FIG. 39 is a timing chart of a decoding operation in one embodiment of the present invention. Shown here are three-cycle decoding operations. The names of the signals are listed in the left column of the timing chart. The reliability of the signal during any one cycle is indicated by a bar during the cycle (or part thereof). In some cases, the block or logic responsible for providing a valid signal is shown next to the indication of a valid signal in a dashed box. In addition, designations of examples of specific elements and blocks disclosed herein are provided. Note that any part of the signal that extends into another cycle indicates the reliability of the signal only for that period of time that is occupied by the signal in this other cycle. In addition, some signals are shown as separately reliable for more than one cycle. An example of this is a temporary run count signal, which is valid at one point at the end of the second cycle and then again during the third cycle. Note that this indicates that the signal is simply recorded at the end of the cycle. The list of dependencies is also shown in table. 18, showing the dependence of the same or previous clock cycle to the current time, and this signal is determined reliable.

В некоторых вариантах осуществления изобретения декодирующее устройство должно моделировать буфер ограниченного переупорядочивания кодирующего устройства. В одном варианте осуществления изобретения это моделирование осуществляется с неявной передачей сигналов (сигнализацией). In some embodiments of the invention, the decoding device must simulate a limited reordering buffer of the encoding device. In one embodiment of the invention, this simulation is performed with implicit signaling (signaling).

Как объяснялось выше относительно кодирующего устройства, когда кодовое слово запускается в кодирующем устройстве, в соответствующем буфере резервируется место для кодового слова в порядке кодовых слов, в котором они должны помещаться в канал. При резервировании в буфере последнего пространства для нового кодового слова некоторые кодовые слова помещаются в уплотненном потоке двоичных разрядов независимо от того, определены ли они полностью. As explained above with respect to the encoder, when the codeword is started in the encoder, a place for the codeword is reserved in the corresponding buffer in the order of the codewords in which they should be placed in the channel. When reserving the last space in the buffer for a new codeword, some codewords are placed in a compressed binary stream, regardless of whether they are fully defined.

Если необходимо закончить неполное кодовое слово, то можно выбрать короткое кодовое слово и точно установить символы, принимаемые до сих пор. Например, в системе R-кодера, если необходимо преждевременно закончить кодовое слово для серии из 100 символов БВС в коде прогонов с максимальной длиной прогона, равной 128 символам, можно использовать слово для 128 символов БВС, поскольку это точно определяет первые 100 символов. If you need to complete an incomplete codeword, you can select a short codeword and precisely set the characters accepted so far. For example, in the R-encoder system, if it is necessary to prematurely end the code word for a series of 100 BVS characters in the run code with a maximum run length of 128 characters, you can use the word for 128 BVS characters, since this precisely defines the first 100 characters.

В качестве альтернативы можно использовать кодовое слово, которое определяет 100 символов БВС с последующим МВС. Когда кодовое слово закончено, его можно удалить из переупорядочивающего буфера и добавить к кодовому потоку. Это может дать возможность помещать в кодовом потоке также ранее завершенные кодовые слова. Если форсирование завершения одного неполного кодового слова приводит к удалению кодового слова из заполненного буфера, то кодирование может продолжаться. Если один буфер все еще полный, то следующее кодовое слово снова должно закончиться и добавиться к кодовому потоку. Этот процесс продолжается до тех пор, пока буферное устройство, которое было полным, больше не будет полным. Декодирующее устройство может моделировать кодирующее устройство для неявной передачи сигналов, используя счетчик для каждой ячейки памяти для информации о состоянии генератора двоичных разрядов. As an alternative, you can use a code word that defines 100 characters of BVS followed by MVS. When the codeword is finished, it can be removed from the reordering buffer and added to the codestream. This may make it possible to place previously completed codewords in the code stream as well. If forcing the completion of one incomplete codeword results in the removal of the codeword from the filled buffer, then the encoding may continue. If one buffer is still full, the next codeword should end again and be added to the codestream. This process continues until the buffer device, which was full, is no longer complete. A decoding device can simulate an encoding device for implicit signal transmission using a counter for each memory cell for information about the state of the binary generator.

В одном варианте осуществления изобретения каждый счетчик двоичных разрядов (в этом примере класса вероятности) имеет счетчик, у которого такой же размер, как у головных или хвостовых счетчиков в кодирующих устройствах (например, 6 двоичных разрядов). Каждый раз, когда запускается новый прогон (выбирается новое кодовое слово), соответствующий счет загружается вместе с размером памяти кодовых слов. Каждый раз, когда запускается прогон (выбирается новое кодовое слово), все счетчики получают отрицательное приращение. Любой счетчик, который достигает нуля, вызывает очищение соответствующего счета прогонов (и гасится признак наличия МВС). In one embodiment, each binary counter (in this example of a probability class) has a counter that has the same size as the head or tail counters in encoders (e.g., 6 binary bits). Each time a new run is started (a new codeword is selected), the corresponding score is loaded along with the size of the codeword memory. Each time a run is started (a new codeword is selected), all counters receive a negative increment. Any counter that reaches zero causes the corresponding run count to be cleared (and the sign of the presence of MVS is suppressed).

Варианты сигнализации для конечной памяти. Alarm options for destination memory.

Кодирование в реальном масштабе времени в настоящем изобретении требует, чтобы декодирующее устройство манипулировало прогонами символов БВС, после которых не следует МВС и которые не представляют максимальную длину прогона. Это происходит, когда кодирующее устройство начинает прогон символов БВС, но не имеет достаточного ограниченного переупорядочивающего устройства для того, чтобы дождаться завершения прогона. При этом условии требуется, чтобы новое кодовое слово декодировалось в следующий момент времени, когда используется этот контекстный элемент кодированного сигнала, и об этом состоянии должен быть послан сигнал в декодирующее устройство. Ниже описываются три потенциальных способа модификации декодирующего устройства. Real-time coding in the present invention requires the decoding device to manipulate runs of BVA characters, followed by no MVC, and which do not represent the maximum run length. This occurs when the encoder starts running the BWS characters, but does not have a sufficiently limited reordering device to wait for the run to complete. Under this condition, it is required that the new codeword be decoded at the next time when this context element of the encoded signal is used, and a signal must be sent to this decoder about this state. Three potential methods for modifying a decoding device are described below.

Когда буфер заполнен, счет прогонов элемента кодированного сигнала контекста или класса вероятности, который вытесняется, должен быть установлен в исходное состояние. Для эффективного выполнения этого полезно запомнить в запоминающем устройстве кодовых слов элемент кодированного сигнала контекста или класс вероятности. Поскольку это необходимо только для прогонов, которые еще не имеют связанные с ними кодовые слова, можно совместно использовать запоминающее устройство, используемое для хранения кодового слова. Отметим, что в некоторых системах вместо вытеснения неполного кодового слова можно заставить двоичные разряды перейти в контекст и (или) класс вероятности кодового слова, которое задерживается в буфере, когда он заполняется. Декодирующее устройство определяет это и использует соответственный (неправильный) элемент кодированного сигнала контекста или класс вероятности. When the buffer is full, the count of runs of the element of the encoded context signal or probability class that is being supplanted should be reset. To effectively accomplish this, it is useful to store in the codeword memory a coded context signal element or a probability class. Since this is only necessary for runs that do not yet have codewords associated with them, you can share the storage device used to store the codeword. Note that in some systems, instead of crowding out an incomplete codeword, it is possible to make binary bits go into the context and (or) the probability class of the codeword, which is delayed in the buffer when it is filled. The decoding device determines this and uses the corresponding (wrong) element of the encoded context signal or probability class.

При сигнализации в потоке используются кодовые слова для передачи сигнала в декодирующее устройство. В одном варианте осуществления изобретения определения кодов R2(к) и R3(к) изменяются с целью включения прогонов немаксимальной длины БВС, за которым не следует МВС. Это можно выполнить путем добавления одного двоичного разряда к кодовому слову, которое должно появляться с наименее вероятным символом. Это дает однозначно декодируемый префикс для счетов прогонов немаксимальной длины. В табл. 19 показана замена кодов R2(2), дающая возможность осуществлять сигнализацию в потоке. Недостатки этого способа заключаются в том, что необходимо изменить логику декодирования R-кода, и в том, что имеются затраты на уплотнение каждый раз, когда появляется кодовое слово с наименьшей вероятностью. When signaling in a stream, codewords are used to transmit a signal to a decoding device. In one embodiment of the invention, the definitions of the codes R2 (k) and R3 (k) are changed to include runs of non-maximum lengths of BVA, not followed by MVS. This can be accomplished by adding one bit to the codeword, which should appear with the least probable character. This gives a uniquely decoded prefix for run counts of non-maximum length. In the table. Figure 19 shows the replacement of the R2 (2) codes, enabling signaling in the stream. The disadvantages of this method are that it is necessary to change the decoding logic of the R code, and that there is a cost of compression every time a code word appears with the least probability.

В некоторых вариантах осуществления изобретения декодирующее устройство выполняет неявную сигнализацию, используя временные отметки. Счетчик отслеживает текущее "время", давая приращение каждый раз, когда запрашивается кодовое слово. Кроме того, всякий раз, когда запускается кодовое слово, текущее "время" сохраняется в запоминающем устройстве, связанном с кодовым словом. Всегда после первого использования кодового слова соответствующее запомненное значение "времени" плюс размер переупорядочивающего буфера кодирующего устройства сравнивается с текущем "временем". Если текущее "время" больше, вырабатывается неявный сигнал, так что запрашивается новое кодовое слово. Таким образом моделируется ограниченное запоминающее устройство переупорядочивания в кодирующем устройстве. В одном варианте осуществления изобретения для обеспечения возможности перечисления всех кодовых слов используется достаточное количество двоичных разрядов для значений "времени". In some embodiments of the invention, the decoding device performs implicit signaling using timestamps. A counter tracks the current “time”, incrementing each time a codeword is requested. In addition, whenever a codeword is started, the current "time" is stored in a memory associated with the codeword. Always after the first use of the codeword, the corresponding stored value of the “time” plus the size of the reordering buffer of the encoder is compared with the current “time”. If the current “time” is longer, an implicit signal is generated, so a new codeword is requested. In this way, a limited reordering memory is encoded in the encoder. In one embodiment, a sufficient number of bits are used for the "time" values to enable all codewords to be enumerated.

Чтобы снизить требуемую емкость памяти, количество двоичных разрядов, используемых для временных меток, поддерживается минимальным. Если временные метки используют малое число двоичных разрядов, так что осуществляется повторное использование значений времени, следует обратить внимание на то, чтобы все прежние временные метки отмечались до того, как счетчик запустит повторно используемые значения времени. Допустим, что N - большее значение из количества адресных двоичных разрядов для очереди или памяти состояния генератора двоичных разрядов. Можно использовать временные метки с N+1 двоичными разрядами. Память состояний генератора двоичных разрядов должна обеспечивать множество обращений, например два считывания и две записи на декодированный двоичный разряд. Для циклирования памяти состояний генератора двоичных разрядов используется счетчик, дающий одно приращение на каждый декодируемый двоичный разряд. Любая достаточно "старая" ячейка памяти очищается, поэтому осуществляется выборка нового кодового слова при ее использовании в последующем. Это гарантирует проверку всех временных меток, прежде чем какое-либо значение времени будет использовано повторно. To reduce the required memory capacity, the number of bits used for time stamps is kept to a minimum. If timestamps use a small number of binary digits so that time values are reused, care should be taken to ensure that all previous timestamps are marked before the counter starts the reused time values. Suppose that N is a larger value from the number of address binary bits for a queue or state memory of a binary generator. You can use timestamps with N + 1 binary digits. The state memory of the binary generator must provide many accesses, for example, two reads and two records per decoded binary bit. For cycling the state memory of a binary generator, a counter is used that gives one increment for each decoded binary bit. Any sufficiently “old” memory cell is cleared, therefore, a new codeword is sampled when used later. This ensures that all timestamps are checked before any time value is reused.

Если память состояний генератора двоичных разрядов меньше, чем очередь, то можно уменьшить скорость счета (счетчика временных отметок) и требуемую ширину полосы памяти. Это объясняется тем, что каждая временная метка (одна на память состояний генератора двоичных разрядов) должна проверяться только один раз за множество циклов, требуемых для использования всей очереди. Кроме того, запоминание временных меток в отдельной памяти может уменьшить требуемую ширину полосы памяти. В системах, использующих кодовые слова "0" для парциальных прогонов, нет необходимости проверять временные метки для кодовых слов "1N". В системах, использующих кодовые слова "1N" для парциальных прогонов, временная метка должна проверяться только до генерирования МВС. If the state memory of the binary generator is smaller than the queue, then it is possible to reduce the counting speed (time stamp counter) and the required memory bandwidth. This is because each timestamp (one for the state memory of the binary digit generator) should be checked only once during the set of cycles required to use the entire queue. In addition, storing time stamps in a separate memory can reduce the required memory bandwidth. In systems using the codewords "0" for partial runs, there is no need to check timestamps for the codewords "1N". In systems using the "1N" codewords for partial runs, the timestamp should only be checked before the generation of the MVS.

В некоторых вариантах осуществления изобретения неявная сигнализация выполняется очередью во время декодирования. Этот способ может быть полезен в полудуплексной системе, где при декодировании используются аппаратные средства кодирования. Функционирование очереди почти такое же, как и при кодировании. Когда запрашивается новое кодовое слово, его индекс помещается в очередь и маркируется как неверный. Когда данные из кодового слова заканчиваются, его содержимое в очереди маркируется как верное. Когда данные выводятся из очереди для того, чтобы обеспечить участок памяти для новых кодовых слов, то, если выведенные данные промаркированы как неверные, информация о состоянии генератора двоичных разрядов под этим индексом очищается. Эта операция очистки может потребовать, чтобы память состояний генератора двоичных разрядов обеспечивала поддержку дополнительной операции записи. In some embodiments, implicit signaling is performed by a queue during decoding. This method may be useful in a half-duplex system where decoding uses encoding hardware. The operation of the queue is almost the same as with encoding. When a new codeword is requested, its index is queued and marked as invalid. When the data from the code word ends, its contents in the queue are marked as true. When data is output from the queue in order to provide a piece of memory for new codewords, then if the output data is marked as invalid, the information about the state of the binary generator under this index is cleared. This cleanup operation may require the state generator of the binary digits to support additional write operations.

В противоположность этому явная сигнализация сообщает о переполнении буфера в виде уплотнения данных. Возможная реализация этого может состоять в том, чтобы иметь вспомогательный элемент контекста, который используется один раз для каждого нормального декодирования элемента контекста или один раз для каждого декодируемого кодового слова. Декодированные двоичные разряды из вспомогательного элемента контекста указывают, возникает ли условие необходимости нового кодового слова, и новое кодовое слово должно быть декодировано с учетом соответствующего нормального элемента контекста. В этом случае кодовые слова для этого специального контекста должны быть надлежащим образом переупорядочены. Поскольку использование этого контекста является до некоторой степени известной функцией для переупорядочивающего блока (обычно это используется один раз для каждого кодового слова), память, требуемую для переупорядочивания вспомогательного контекста, можно ограничить или неявно смоделировать. Кроме того, можно ограничить возможные коды, предоставляемые для этого вспомогательного контекста. In contrast, explicit signaling reports a buffer overflow in the form of data compression. A possible implementation of this may be to have an auxiliary context element that is used once for each normal decoding of the context element or once for each decoded codeword. The decoded binary bits from the auxiliary context element indicate whether a condition for the need for a new codeword occurs, and the new codeword should be decoded taking into account the corresponding normal context element. In this case, the code words for this special context should be properly reordered. Since the use of this context is to some extent a known function for the reordering block (usually used once for each codeword), the memory required to reorder the auxiliary context can be limited or implicitly modeled. In addition, you can limit the possible codes provided for this auxiliary context.

Неявная сигнализация моделирует ограниченный буфер кодирующего устройства при декодировании с целью вырабатывания сигнала, который показывает, что должно быть декодировано новое кодовое слово. В одном варианте осуществления изобретения временная метка сохраняется для каждого контекста. В одном варианте осуществления изобретения переупорядочивающий буфер ограниченного размера кодирующего устройства моделируется непосредственно. В полудуплексной системе, поскольку при декодировании используется переупорядочивающая схема кодирующего устройства, ее можно использовать для генерирования сигналов для декодирующего устройства. Implicit signaling models the encoder's limited buffer during decoding to generate a signal that indicates that a new codeword should be decoded. In one embodiment, a time stamp is stored for each context. In one embodiment, the reordering buffer of a limited size of the encoder is modeled directly. In a half-duplex system, since a decoding scheme of an encoding device is used in decoding, it can be used to generate signals for a decoding device.

Точное осуществление неявной сигнализации зависит от особенностей того, как кодирующее устройство распознает и оперирует состоянием полного буфера. В случае системы, использующей объединенную очередь с фиксированным размещением, использование множества головных указателей позволяет осуществлять выбор состояния, соответствующего "полному буферу". При наличии конкретного выполнения кодирующего устройства можно создать соответствующую модель. The exact implementation of implicit signaling depends on the features of how the encoder recognizes and operates on the state of a full buffer. In the case of a system using an integrated queue with a fixed location, the use of multiple head pointers allows the selection of the state corresponding to the "full buffer". If you have a specific implementation of the encoding device, you can create the appropriate model.

Ниже описываются работа кодирующего устройства и модель для использования декодирующим устройством объединенной очередности с фиксированным распределением потоков параллельно системе вероятности. Для этого примера предположили, что переупорядочивающий буфер имеет 256 ячеек, используются 4 перемежаемых потока, а каждое перемежаемое слово состоит из 16 двоичных разрядов. Когда буфер содержит 256 входных сообщений, содержимое должно высылаться в устройство компоновки двоичных разрядов (например, блок компоновки двоичных разрядов) до того, как 257-е кодовое слово может быть помещено в очереди. При необходимости содержимое может быть вытеснено раньше. The following describes the operation of the encoder and the model for use by a decoder of a combined order with a fixed distribution of flows in parallel with the probability system. For this example, it was suggested that the reordering buffer has 256 cells, 4 interleaved streams are used, and each interleaved word consists of 16 binary bits. When the buffer contains 256 input messages, the contents must be sent to the binary unit (for example, the binary unit) before the 257th codeword can be placed in the queue. If necessary, the contents may be squeezed out earlier.

В некоторых системах перемещение первого сообщения в буфере требует перемещения достаточного количества двоичных разрядов с целью завершения целого перемежаемого кодового слова. Поэтому, если возможны 1-разрядные кодовые слова, перемещение 0 кодового слова может потребовать также перемещения кодовых слов 4, 8, 12, ..., 52, 56, 60 для 16-разрядных перемежаемых слов. Для обеспечения того, чтобы введенные данные буфера представляли собой достоверные данные, формирование заполнения содержимого, поскольку память заполняется, может выполняться по адресам 64, 192 ячеек из ячейки, куда вводится новое кодовое слово (256-16•4=192). In some systems, moving the first message in the buffer requires moving a sufficient number of bits to complete the whole interleaved codeword. Therefore, if 1-bit codewords are possible, moving 0 codewords may also require moving codewords 4, 8, 12, ..., 52, 56, 60 for 16-bit interleaved words. To ensure that the entered buffer data is reliable data, the formation of content filling, as the memory is full, can be performed at the addresses of 64, 192 cells from the cell where the new codeword is entered (256-16 • 4 = 192).

В декодирующем устройстве имеется счетчик для каждой вероятности. Когда новое кодовое слово используется для запуска прогона, в счетчик загружается 192. В любое время, когда новое кодовое слово используется какой-либо вероятностью, все счетчики получают отрицательное приращение. Если какой-либо счетчик достигает нуля, длина прогона для этой вероятности устанавливается на ноль (и гасится признак наличия МВС). The decoding device has a counter for each probability. When a new codeword is used to start a run, 192 is loaded into the counter. At any time when a new codeword is used by any probability, all counters receive a negative increment. If any counter reaches zero, the run length for this probability is set to zero (and the sign of the presence of MVS is suppressed).

Может оказаться удобным использовать многочисленные банки данных на ЗУПВ (многопортовая память, моделирование с быстродействующей памятью и т.д.), по одному банку данных для каждого потока кодированных данных. Это позволит всем блокам компоновки двоичных разрядов одновременно принимать данные, так что считывание многочисленных кодовых слов для конкретного потока не препятствует считыванию другими потоками. It may be convenient to use numerous data banks on the RAM (multi-port memory, high-speed memory simulation, etc.), one data bank for each stream of encoded data. This will allow all the blocks of the arrangement of binary bits to simultaneously receive data, so that the reading of multiple codewords for a particular stream does not interfere with reading by other streams.

В других системах множество блоков компоновки двоичных разрядов должны принимать решение для единственной памяти, основываясь на порядке кодовых слов, как они запомнены в буфере. В таких системах вывод содержимого из буфера может не завершить перемежаемое слово. Каждый блок компоновки двоичных разрядов обычно принимает некоторую часть перемежаемого слова в последовательности. Каждый блок компоновки двоичных разрядов принимает, как минимум, количество двоичных разрядов, равное длине самого короткого кодового слова (например, 1 бит), как максимум, количество двоичных разрядов, равное длине самого длинного кодового слова (например, 13 бит). Слова с чередованием не могут выпускаться до того, как они будут завершены, и должны выпускаться в порядке инициализации. В данном примере блок компоновки двоичных разрядов может иметь для буфера 13 слов с чередованием, это максимальное количество таких слов, которые могут быть завершены с кодовыми словами максимальной длины, в то время как другой поток имеет задержку слова с чередованием, то есть принимает кодовые слова минимальной длины. In other systems, a plurality of binary arrangement blocks must make a decision for a single memory based on the order of the codewords as they are stored in the buffer. On such systems, outputting content from the buffer may not complete the interleaved word. Each binary arrangement unit typically receives some portion of the interleaved word in the sequence. Each binary arrangement unit receives at least the number of binary bits equal to the length of the shortest codeword (e.g. 1 bit), as a maximum, the number of binary bits equal to the length of the longest codeword (e.g. 13 bits). Alternating words cannot be released before they are completed, and must be issued in initialization order. In this example, the binary unit may have 13 interlaced words for the buffer, this is the maximum number of words that can be completed with code words of maximum length, while the other stream has an interlaced word delay, that is, it accepts code words of minimal lengths.

Система, в которой каждое кодовое слово требует две записи и одно считывание памяти, может оказаться менее подходящей для осуществления их аппаратными средствами, чем система, обеспечивающая две записи и два считывания. Если бы потребовалась, например, система с четырьмя потоками, то блоки 1 и 2 компоновки двоичных разрядов могли бы совместно использовать один цикл считывания памяти, а блоки 1 и 3 компоновки двоичных разрядов могли бы совместно использовать другой цикл считывания (или любую другую произвольную комбинацию). Хотя это не обеспечило бы уменьшение необходимого размера буфера, однако позволило бы обеспечить более высокую скорость передачи в блок компоновки двоичных разрядов, что позволит блокам компоновки двоичных разрядов лучше использовать пропускную способность канала кодированных данных. A system in which each codeword requires two records and one memory read may be less suitable for hardware implementation than a system that provides two records and two reads. If, for example, a system with four streams were required, then blocks 1 and 2 of the arrangement of binary digits could share one reading cycle of memory, and blocks 1 and 3 of arrangement of binary digits could share another reading cycle (or any other arbitrary combination) . Although this would not ensure a reduction in the required buffer size, it would allow for a higher transmission rate to the binary unit, which would allow the binary unit to better use the bandwidth of the encoded data channel.

Системы с запоминающим устройством фиксированной емкости. Systems with a fixed capacity storage device.

Одно из достоинств системы, имеющей множество состояний генератора двоичных разрядов на класс вероятности, заключается в том, что система может обеспечивать кодирование с потерями при переполнении запоминающего устройства фиксированной емкости. Это может оказаться полезным в случае уплотнения изображения для кадрового буфера и других применений, когда можно запомнить лишь ограниченное количество кодированных данных. One of the advantages of a system having many binary generator states per probability class is that the system can provide lossy coding when the storage device is full of fixed capacity. This may be useful in the case of image compression for the framebuffer and other applications where only a limited amount of encoded data can be stored.

В случае систем с запоминающим устройством фиксированной емкости каждое из многочисленных состояний генератора двоичных разрядов для каждой вероятности назначается части данных. Например, каждое из восьми состояний можно назначить конкретной разрядной матрице для восьми разрядных данных. В этом случае каждой части данных назначается также сдвигающее устройство в противоположность сдвигающим устройствам, последовательно обеспечивающим следующее кодовое слово. Следует отметить, что нет необходимости делить данные посредством разрядной матрицы. Кроме того, в кодирующем устройстве не осуществляется перемежение, каждая часть данных просто компонуется по разрядам. Каждой части данных назначается запоминающее устройство. In the case of systems with a fixed capacity storage device, each of the multiple states of the binary generator for each probability is assigned a piece of data. For example, each of the eight states can be assigned to a specific bit matrix for eight bit data. In this case, a shifting device is also assigned to each piece of data as opposed to shifting devices sequentially providing the next codeword. It should be noted that there is no need to share data using a bit matrix. In addition, interleaving is not performed in the encoder; each piece of data is simply arranged in bits. Each piece of data is assigned a storage device.

Управление памятью кодированных данных предоставляется в случае систем, запоминающих все данные в запоминающем устройстве фиксированной емкости, и в случае систем, передающих данные в канал с максимальной допустимой шириной полосы. В обеих этих системах желательно постепенное сокращение возможностей системы с потерями. Для данных различной важности используются различные потоки данных, так что менее значимые потоки могут храниться или не передаваться, когда нет в наличии достаточной емкости памяти или пропускной способности. The memory management of the encoded data is provided in the case of systems storing all data in a storage device of fixed capacity, and in the case of systems transmitting data to a channel with a maximum allowable bandwidth. In both of these systems, a gradual reduction in the capabilities of a lossy system is desirable. Different data streams are used for data of various importance, so less significant streams may or may not be stored when there is not enough memory or bandwidth available.

При использовании памяти кодированные данные должны храниться так, чтобы можно было осуществлять такую выборку, когда можно отбрасывать менее важные потоки данных без потери способности декодировать важные потоки данных. Поскольку кодированные данные имеют переменную длину, можно использовать динамическое распределение памяти. На фиг. 38 показан пример блока динамического распределения памяти для трех потоков кодированных данных. Регистровый файл 3100 (или другое запоминающее устройство) содержит указатель для каждого потока плюс другой указатель для индикации следующей свободной ячейки памяти. Память 3101 делится на страницы фиксированной емкости. When using memory, encoded data must be stored so that sampling can be performed where less important data streams can be discarded without losing the ability to decode important data streams. Since the encoded data is variable in length, dynamic memory allocation can be used. In FIG. 38 shows an example of a dynamic memory allocation unit for three encoded data streams. Register file 3100 (or other storage device) contains a pointer for each stream plus another pointer to indicate the next free memory location. The memory 3101 is divided into pages of fixed capacity.

В исходном положении каждый указатель, назначенный потоку, указывает начало страницы памяти, а свободный указатель - на следующую имеющуюся страницу памяти. Кодированные данные из конкретного потока запоминаются в ячейке памяти, адресованной соответственным указателем. Затем указатель получает приращение для следующей ячейки памяти. In the initial position, each pointer assigned to a stream indicates the beginning of a memory page, and a free pointer indicates the next available memory page. The encoded data from a particular stream is stored in a memory location addressed by a corresponding pointer. Then the pointer increments for the next memory location.

Когда указатель достигает максимума для текущей страницы, происходит следующее. Адрес начала следующей свободной страницы (заполненный в свободном указателе) запоминается с текущей страницей. (Можно использовать либо часть памяти кодированных данных, либо отдельную память или регистровый файл. ) Текущий указатель устанавливается на следующую свободную страницу. Свободный указатель получает приращение. Эти действия назначают новую страницу памяти конкретному потоку и обеспечивают такую связь, что при декодировании можно определить порядок размещения. When the index reaches its maximum for the current page, the following happens. The address of the beginning of the next free page (filled in the free index) is remembered with the current page. (You can use either part of the encoded data memory, or a separate memory or register file.) The current pointer is set to the next free page. A free pointer is incremented. These actions assign a new memory page to a specific thread and provide such a connection that decoding can determine the placement order.

Если все страницы памяти использованы, а в потоке еще имеются более важные данные, чем менее важные данные в памяти, можно действовать следующим образом. Во всех случаях память, выделенная менее значимым данным, предназначается потоку более важных данных и из потока менее значимых дополнительные данные не запоминаются. If all pages of memory are used, and there is still more important data in the stream than less important data in memory, you can proceed as follows. In all cases, the memory allocated to less significant data is intended for the flow of more important data and additional data is not stored from the stream of less significant data.

Во-первых, страница, используемая в настоящий момент менее важным потоком, просто выделяется для более важных данных. Поскольку в более типичных устройствах кодирования статистическим кодом используется информация о внутреннем состоянии, теряются все ранее запомненные на этой странице менее важные данные. First, the page currently in use by the less important stream is simply allocated for more important data. Since in more typical encoding devices, the statistical code uses information about the internal state, all less important data previously stored on this page is lost.

Во-вторых, страница, используемая в данный момент менее важным потоком, просто выделяется для потока более важных данных. В отличие от предыдущего случая указатель устанавливается на конец страницы и, когда на странице записываются более важные данные, соответствующий указатель получает отрицательное приращение. Это имеет преимущество сохранения менее важных данных в начале страницы, если для потока более важных данных не требуется целая страница. Secondly, the page currently in use by the less important stream is simply allocated to the more important data stream. Unlike the previous case, the pointer is positioned at the end of the page, and when more important data is written on the page, the corresponding pointer takes a negative increment. This has the advantage of storing less important data at the top of the page if the flow of more important data does not require a whole page.

В-третьих, вместо текущей страницы переназначаемых менее важных данных можно переназначать любую страницу с менее важными данными. Это требует независимого кодирования кодируемых данных для всех страниц, что может снизить достигнутое уплотнение. Это также требует идентификацию некодированных данных, соответствующих началу всех страниц. Поскольку можно отбросить любую страницу менее важных данных, получается более высокая гибкость в постепенном сокращении возможностей кодирования с потерями. Thirdly, instead of the current page of reassigned less important data, you can reassign any page with less important data. This requires independent encoding of the encoded data for all pages, which may reduce compression achieved. It also requires identification of non-encoded data corresponding to the top of all pages. Since you can discard any page of less important data, you get more flexibility in gradually reducing lossy coding capabilities.

Третий вариант может быть особенно привлекателен в системе, достигающей фиксированной степени уплотнения по всем областям изображения. Областям изображения можно назначать определенное количество страниц памяти. Сохраняются ли менее важные данные или нет, может зависеть от уплотнения, достигнутого в конкретной области. Память, назначенная области, может использоваться не полностью, если требуемое уплотнение без потерь меньше, чем емкость назначенной памяти. Достижение фиксированной степени уплотнения в области изображения может обеспечить произвольный доступ к областям изображения. The third option can be especially attractive in a system that achieves a fixed degree of compaction across all areas of the image. Image areas can be assigned a specific number of pages of memory. Whether less important data is stored or not may depend on the compaction achieved in a particular area. The memory assigned to the area may not be fully used if the required lossless compression is less than the capacity of the assigned memory. Achieving a fixed degree of compaction in the image area can provide random access to image areas.

Для лучшего использования общей емкости, имеющейся в системе памяти, можно использовать возможность записывать данные в каждую страницу с обоих концов. Когда все страницы оказываются распределены, любую страницу, имеющую достаточную свободную область на конце, можно назначить для использования с конца. Возможность использования обоих концов страницы необходимо соотносить со стоимостью поддержания отслеживания местоположения, где встречаются два типа данных. (Это отличается от случая, когда один из типов данных не был важным и его можно было просто перезаписать). To make better use of the total capacity available in the memory system, you can use the ability to write data to each page from both ends. When all pages are distributed, any page that has a sufficient free area at the end can be assigned for use from the end. The ability to use both ends of the page needs to be correlated with the cost of maintaining location tracking where two types of data meet. (This is different from the case when one of the data types was not important and could simply be overwritten).

Теперь рассмотрим систему, в которой данные передаются в канал вместо того, чтобы запоминаться в памяти. Используются страницы фиксированной емкости памяти, но необходима только одна страница на поток (или, возможно, две, если требуется пинг-понговое считывание, предназначенное для обеспечения амортизирования канала, так что при записи на одну страницу с другой можно считывать для вывода данных). Когда страница памяти заполняется, она передается в канал, и ячейку памяти можно использовать повторно, как только страница окажется переданной. В некоторых применениях емкость страницы памяти может представлять емкость пакетов данных, используемых в канале, или объем множества пакетов. Now consider a system in which data is transmitted to a channel instead of being stored in memory. Pages of a fixed memory capacity are used, but only one page per stream is needed (or perhaps two if ping-pong reading is required to ensure channel amortization, so that when writing to one page on the other, it can be read to output data). When a memory page is full, it is transferred to the channel, and the memory cell can be reused as soon as the page is transferred. In some applications, the capacity of a memory page may represent the capacity of data packets used in a channel, or the volume of a plurality of packets.

В некоторых системах связи, например с асинхронным режимом передачи (АРП), пакетам могут назначаться приоритеты. АРП имеет два уровня приоритетности: первичный и вторичный. Вторичные пакеты передаются только в том случае, если имеется достаточная ширина полосы. Для определения, который из пакетов первичный, а который вторичный, можно использовать пороговую величину. В другом способе можно использовать пороговую величину в кодирующем устройстве для того, чтобы не передавать потоки, которые оказались менее важными, чем порог. In some communication systems, for example with asynchronous transfer mode (ATM), packets may be prioritized. ARP has two priority levels: primary and secondary. Secondary packets are only transmitted if there is sufficient bandwidth. To determine which of the packets is primary and which is secondary, a threshold value can be used. In another method, you can use the threshold value in the encoder so as not to transmit streams that are less important than the threshold.

На фиг. 27 представлена блок-схема системы с отдельными генераторами для каждого кода. Система декодирования 2000 включает в себя контекстную модель 2001, запоминающее устройство 2002, блок преобразования состояния МОВ в код 2003, декодирующее устройство 2004, генераторы двоичных разрядов 2005A-n и сдвигающее устройство 2006. Выход контекстной модели 2001 подсоединен к входу запоминающего устройства 2002. Выход запоминающего устройства 2002 подсоединен к входу блока преобразования состояния МОВ в код 2003. Выход блока преобразования состояния МОВ в код 2003 подсоединен к входу декодирующего устройства 2004. Выходной сигнал декодирующего устройства 2004 подается в качестве разрешающего сигнала на генераторы двоичных разрядов 2005A-n. Генераторы двоичных разрядов 2005A-n, кроме того, подсоединены для приема выходного сигнала кодированных данных со сдвигающего устройства 2006. In FIG. 27 is a block diagram of a system with separate generators for each code. The decoding system 2000 includes a context model 2001, a storage device 2002, a unit for converting the state of the MOB to code 2003, a decoding device 2004, binary generators 2005A-n and a shifting device 2006. The output of the context model 2001 is connected to the input of the storage device 2002. The output of the storage device 2002 is connected to the input of the unit for converting the state of the MOB to code 2003. The output of the unit for converting the state of the MOB to code 2003 is connected to the input of the decoding device 2004. The output signal of the decoding devices and 2004 is supplied as an enable signal to 2005A-n binary generators. The 2005A-n binary generators are furthermore connected to receive the output of the encoded data from the shifter 2006.

Контекстная модель 2001, запоминающее устройство 2002 и блок преобразования состояния МОВ в код 2003 работают подобно своим аналогам на фиг. 26. Контекстная модель 2001 вырабатывает элементы кодированных данных контекста. Запоминающее устройство 2002 выдает вероятностное состояние, основываясь на элементе контекста. Вероятностное состояние принимается блоком преобразования состояния МОВ в код 2003, который вырабатывает класс вероятности для каждого вероятностного состояния. Декодирующее устройство 2004 разблокирует один из генераторов двоичных разрядов 2005A-n на основании декодирования класса вероятности. (Отметим, что декодирующее устройство 2004 является схемой декодирующего устройства преобразования M в 2M подобно хорошо известному декодирующему устройству 74•138 3:8 - это не декодирующее устройство статистического кодирования). Отметим, что поскольку каждый код имеет отдельный генератор двоичных разрядов, некоторые генераторы двоичных разрядов могут использовать коды, отличающиеся от R-кодов. В частности, код для вероятностей порядка 60% может использоваться для лучшего перехода области вероятности между R2(0) и R2(1). Например, в табл. 20 показан такой код.The context model 2001, the storage device 2002, and the unit for converting the state of the MOB to code 2003 work similarly to their counterparts in FIG. 26. The context model 2001 produces elements of encoded context data. Storage device 2002 provides a probabilistic state based on a context element. The probabilistic state is adopted by the unit for converting the state of the MOB into code 2003, which generates a probability class for each probabilistic state. The decoding device 2004 unlocks one of the binary generators 2005A-n based on the decoding of the probability class. (Note that the decoding device 2004 is a circuit of a decoding device for converting M to 2 M, like the well-known decoding device 74 • 138 3: 8 - this is not a statistical decoding decoding device). Note that since each code has a separate binary generator, some binary generators may use codes other than R codes. In particular, the code for probabilities of the order of 60% can be used to better transition the probability domain between R2 (0) and R2 (1). For example, in table. 20 shows such a code.

Если необходимо получить желательное быстродействие, то для обеспечения требуемой быстроты декодирования данных можно осуществить предварительное декодирование одного или больше двоичных разрядов. В некоторых вариантах осуществления изобретения во избежание необходимости обновления большого счета прогонов каждый тактовый цикл осуществляется расчленение как кодирования кодовых слов, так и подсчета прогонов для данных кодов. If you want to get the desired performance, then to ensure the required speed of decoding data, you can pre-decode one or more binary bits. In some embodiments of the invention, in order to avoid the need to update a large run count, each clock cycle breaks up both the encoding of code words and the count of runs for these codes.

Генератор двоичных разрядов для кодов R2(0) несложный. Кодовое слово запрашивается каждый раз, когда запрашивается двоичный разряд. Генерируемый двоичный разряд является просто кодовым словом (схема ИСКЛЮЧАЮЩЕЕ ИЛИ с МОВ). The binary digit generator for R2 (0) codes is simple. A codeword is requested each time a binary digit is requested. The generated binary bit is simply a codeword (EXCLUSIVE OR with MOV scheme).

Кодами для короткой длины прогона, например R2(1), R3(1), R2(2), R3(2), манипулируют следующим образом. Все двоичные разряды в кодовом слове декодируются и запоминаются в конечном автомате, который содержит малый счетчик (1, 2 или 3 двоичных разряда соответственно) и двоичный разряд наличия МВС. Счетчик и двоичный разряд наличия МВС функционируют как декодирующее устройство R-кода. В случае более длинных кодов, таких как R2(x), R3(к) для к>2, генераторы двоичных разрядов разделяются на два блока, как показано на фиг. 28. Здесь генератор двоичных разрядов для R2(к)-кодов, где к>2, показан состоящим из блока коротких прогонов 2101 и блока длинных прогонов 2102. Отметим, что хотя такая конструкция предназначена для использования с кодами R2(к>2), ее работа с кодами R3(к>2) будет такой же (и это ясно специалистам в данной области техники). Codes for a short run length, for example, R2 (1), R3 (1), R2 (2), R3 (2), are manipulated as follows. All binary bits in the codeword are decoded and stored in a state machine, which contains a small counter (1, 2, or 3 binary bits, respectively) and a binary bit of the presence of MVS. The counter and the binary bit of the presence of the MVS function as an R-code decoding device. In the case of longer codes, such as R2 (x), R3 (k) for k> 2, the binary generators are divided into two blocks, as shown in FIG. 28. Here, the binary generator for R2 (k) codes, where k> 2, is shown as consisting of a block of short runs 2101 and a block of long runs 2102. Note that although this design is intended for use with codes R2 (k> 2), her work with R3 codes (k> 2) will be the same (and this is clear to specialists in this field of technology).

Блок коротких прогонов 2101 подсоединен для приема разблокирующего сигнала и кодового слова (0... 2) в качестве входных сигналов для генератора двоичных разрядов, а также сигнала "все нули" (на фиг. 28 "все единицы") и сигнала "нулевой счет" (указывающего счет нуля) из блока длинных прогонов 2102. В ответ на эти входные сигналы блок коротких прогонов 2101 выдает декодированный двоичный разряд и индикацию следующего сигнала, которая сигнализирует, что необходимо новое кодовое слово. Блок коротких прогонов 2101 вырабатывает также сигнал разблокирования счета, сигнал загрузки счета и сигнал максимального счета для блока длинных прогонов 2102. Блок длинных прогонов 2102 подсоединен также для приема кодового слова (к... 3) в качестве входного сигнала для генератора двоичных разрядов. The short run block 2101 is connected to receive an enable signal and a codeword (0 ... 2) as input signals for the binary digit generator, as well as an all-zeros signal (in Fig. 28, all ones) and a zero count signal "(indicating the zero count) from the long run block 2102. In response to these input signals, the short run block 2101 provides a decoded binary bit and an indication of the next signal, which signals that a new code word is needed. The short run block 2101 also generates an account unlock signal, an account load signal and a maximum count signal for the long run block 2102. The long run block 2102 is also connected to receive a code word (k ... 3) as an input signal to the binary generator.

Блок коротких прогонов 2101 манипулирует прогонами длиной вплоть до 4 и подобен генератору двоичных разрядов R2(2). В одном варианте осуществления изобретения блок коротких прогонов 2101 одинаковый для всех кодов R2(к>2). Назначение блока длинных прогонов 2102 заключается в определении, когда необходимо выводить последний из 1-4 двоичных разрядов прогона. Блок длинных прогонов 2102 имеет входы, логическую схему И и счетчик, размер которого изменяется с изменением к. The short run block 2101 manipulates runs up to 4 in length and is similar to the binary generator R2 (2). In one embodiment, the short run block 2101 is the same for all R2 codes (k> 2). The purpose of the long run block 2102 is to determine when to output the last of 1-4 binary bits of the run. The block of long runs 2102 has inputs, a logical circuit AND, and a counter, the size of which changes with a change in k.

Один вариант осуществления блока счета длинных прогонов 2102 показан на фиг. 29. Блок длинных прогонов 2102 содержит логическую схему И 2201, подсоединенную для приема кодового слова (к...3), и выдает сигнал "все единицы" в виде логической "1", если все двоичные разряды в кодовом слове представляют собой единицы, тем самым показывая, что кодовое слово представляет собой кодовое слово "1N" и что счет прогонов меньше 4. Логическая схема НЕ 2202 также подсоединена для приема кодового слова и инвертирует его. Выход логической схемы НЕ 2202 подсоединен к одному входу счетчика двоичных разрядов 2203. Счетчик двоичных разрядов 2203, кроме того, подсоединен для приема сигнала разблокирования счета, сигнала загрузки счета и сигнала максимума счета. В ответ на входные сигналы счетчик двоичных разрядов 2203 генерирует сигнал нулевого счета. One embodiment of the long run counting unit 2102 is shown in FIG. 29. The block of long runs 2102 contains a logic circuit And 2201 connected to receive a code word (k ... 3), and gives a signal "all units" in the form of a logical "1" if all the binary digits in the code word are units, thereby showing that the codeword is a “1N” codeword and that the run count is less than 4. A logic circuit NOT 2202 is also connected to receive the codeword and inverts it. The output of the logic circuit NOT 2202 is connected to one input of the binary bit counter 2203. The binary bit counter 2203 is also connected to receive an account unlock signal, an account load signal, and a maximum account signal. In response to the input signals, the binary counter 2203 generates a zero-count signal.

В одном варианте осуществления изобретения счетчик 2203 представляет собой счетчик к-2 разрядов и используется для разрыва счетов длинных прогонов на прогоны из четырех БВС и, возможно, некоторого остатка. Сигнал разблокирования счета показывает, что выведены четыре символа БВС и счетчик должен получить отрицательное приращение. Сигнал загрузки счета используется при декодировании кодовых слов "1N" и вызывает загрузку счетчика дополнением двоичных разрядов кодового слова от к до 3. Сигнал максимума счета используется при декодировании кодовых слов "0" и загружает счетчик их максимальным значением. Выходной сигнал нулевого счета индицирует, когда показание счетчика равно нулю. In one embodiment of the invention, the counter 2203 is a counter of k-2 bits and is used to break the accounts of long runs into runs of four BVS and, possibly, some remainder. The account unlock signal indicates that four BVS characters are displayed and the counter should receive a negative increment. The count loading signal is used when decoding the “1N” code words and causes the counter to be loaded by adding binary bits of the code word from k to 3. The maximum count signal is used when decoding the “0” code words and loads the counter with its maximum value. The output of the zero counter indicates when the counter is zero.

Один вариант осуществления изобретения блока счета коротких прогонов 2101 показан на фиг. 30. Блок счета коротких прогонов содержит модуль управления 2301, двухразрядный счетчик 2302 и трехразрядный счетчик 2303. Модуль управления 2301 принимает разблокирующий сигнал, кодовое слово (0...2) и сигналы "все единицы" и "нулевой счет" с блока длинных прогонов. Двухразрядный счетчик используется для счета четырехразрядных прогонов символов БВС, являющихся частью более длинных прогонов. Счетчик R2(2) и двоичный разряд МВС (в сумме три двоичных разряда) 2303 используются для вырабатывания в конце прогона 1-4 двоичных разрядов. Разблокирующий входной сигнал указывает, что на выходе двоичных разрядов должен вырабатываться двоичный разряд. Нулевой счет поступает на вход, когда не подтверждены индикации, что прогон четырех символов БВС должен быть выдан. Всякий раз, когда счетчик БВС 2302 достигает нуля, формируется выходной сигнал разблокирования счета. Когда формируется входной сигнал нулевого счета, то либо используется счетчик R2(2) МВС, либо декодируется новое кодовое слово и формируется следующий выходной сигнал. One embodiment of the short run counting unit 2101 is shown in FIG. 30. The short run counting unit comprises a control module 2301, a two-bit counter 2302 and a three-bit counter 2303. The control unit 2301 receives an enable signal, a code word (0 ... 2), and all-one and zero-count signals from the long run block . A two-digit counter is used to count four-digit runs of BVS characters that are part of longer runs. Counter R2 (2) and the MVC binary digit (a total of three binary digits) 2303 are used to generate 1-4 binary digits at the end of the run. An enable input signal indicates that a binary digit should be generated at the output of the binary digits. Zero counting is input when indications are not confirmed that a run of four BVS characters should be issued. Whenever the counter BVS 2302 reaches zero, an output signal to unlock the account is generated. When the input signal of the zero account is generated, either the MVS counter R2 (2) is used, or a new codeword is decoded and the next output signal is generated.

Когда декодируется новое кодовое слово, выполняемые действия определяются вводом кодового слова. Если на входе имеется кодовое слово "0", используется счетчик БВС 2302 и формируется выходной сигнал максимума счета. В случае новых слов "1N" первые три двоичных разряда кодового слова загружаются в счетчик R2(2) и МВС 2303 и формируется выходной сигнал загрузки счета. Если формируется входной сигнал всех единиц, то счетчик R2(2) и МВС 2303 используется для вырабатывания двоичных разрядов, в противном случае используется счетчик БВС до тех пор, пока не будет сформирован входной сигнал нулевого счета. When a new codeword is decoded, the actions performed are determined by entering the codeword. If there is a code word "0" at the input, the counter of the BVS 2302 is used and the output signal of the maximum of the count is generated. In the case of new words “1N”, the first three binary digits of the code word are loaded into the counter R2 (2) and MBC 2303, and an output signal to load the account is generated. If an input signal of all units is generated, then the counter R2 (2) and MBC 2303 is used to generate binary digits, otherwise the BVS counter is used until an input signal of zero count is generated.

С точки зрения системы количество кодов должно быть небольшим для хорошей работы системы, обычно 25 или меньше. Емкость мультиплексора, необходимого для вывода двоичного разряда и следующего кодового слова, и декодирующего устройства, необходимого для разблокирования конкретного генератора двоичных разрядов, для быстрой работы должна быть ограничена. Кроме того, разветвление кодового слова от сдвигающего устройства должно быть не слишком высоким для высокоскоростной работы. From a system point of view, the number of codes should be small for the system to work well, usually 25 or less. The capacity of the multiplexer needed to output the binary bit and the next codeword, and the decoding device needed to unlock a specific binary generator for fast operation should be limited. In addition, the branching of the codeword from the shifting device should not be too high for high-speed operation.

Отдельные генераторы двоичных разрядов для каждого кода обеспечивают возможность конвейерной обработки. Если все кодовые слова дали по меньшей мере два двоичных разряда, обработку кодовых слов можно конвейеризировать в два цикла вместо одного. Это могло бы удвоить быстродействие декодирующего устройства, если бы генераторы двоичных разрядов представляли ограничивающую часть системы. Один способ выполнения этого заключается в случае кодового слова нулевой длины прогона (кодовое слово указывает только МВС) с последующим одним двоичным разрядом, который является следующим некодированным двоичным разрядом. Их можно назвать кодами RN(k)+1, и они всегда могут кодировать по меньшей мере два двоичных разряда. Отметим, что кодовые слова R2(0) и, возможно, некоторые из других коротких кодовых слов не нуждаются в конвейеризации для повышения быстродействия. Separate binary generators for each code provide pipelining capabilities. If all codewords have given at least two binary digits, the processing of codewords can be pipelined in two cycles instead of one. This could double the speed of the decoding device if the binary generators represented the limiting part of the system. One way to accomplish this is with a codeword of zero run length (the codeword indicates only MBC) followed by one binary bit, which is the next non-encoded binary bit. They can be called RN (k) +1 codes, and they can always encode at least two binary bits. Note that the codewords R2 (0) and possibly some of the other short codewords do not need pipelining to improve performance.

Отдельные генераторы двоичных разрядов прибегают к использованию неявной сигнализации. Неявную сигнализацию, предназначенную для кодирования с конечным запоминающим устройством, можно выполнять следующим способом. Каждый генератор двоичных разрядов имеет счетчик, имеющий размер адреса очереди, например, 9 бит, когда используется очередность размером в 512 бит. Каждый раз, когда генератор двоичных разрядов использует новое кодовое слово, счетчик загружается максимальным значением. Всякий раз, когда какой-либо генератор запрашивает кодовое слово, счетчики всех генераторов двоичных разрядов получают отрицательное приращение. Всякий раз, когда счетчик достигает нуля, режим соответственного генератора двоичных разрядов очищается (например, очищаются счетчик БВС, счетчик R2(2) и МВС и счетчик длинных прогонов). Поскольку сбрасывание может происходить, даже если конкретный генератор двоичных разрядов не разблокирован, проблема со счетами состояний отсутствует. Separate binary generators resort to the use of implicit signaling. Implicit signaling intended for encoding with a finite storage device can be performed in the following way. Each binary generator has a counter having a queue address size, for example, 9 bits, when a 512-bit sequence is used. Each time the binary generator uses a new code word, the counter is loaded with the maximum value. Whenever a generator requests a codeword, the counters of all binary generators receive a negative increment. Whenever the counter reaches zero, the mode of the corresponding binary generator is cleared (for example, the BVS counter, the R2 (2) counter and the MVC and the long run counter are cleared). Since resetting can occur even if a particular binary generator is not unlocked, there is no problem with state counts.

Инициализация запоминающего устройства для каждого элемента контекста. Initialization of the storage device for each element of the context.

В случаях, когда запоминающее устройство для каждого элемента контекста содержит информацию об оценке вероятности, для очень быстрой инициализации декодирующего устройства (например, запоминающего устройства) может потребоваться дополнительная пропускная способность памяти. Быстрая инициализация декодирующего устройства может представлять проблему, когда декодирующее устройство имеет много контекстов и их все необходимо очищать. Когда декодирующее устройство обеспечивает много контекстов (1к или больше) и нельзя произвести полную очистку памяти, для очистки памяти потребуется неприемлемо большое количество тактовых циклов. In cases where the storage device for each context element contains probability estimation information, additional memory bandwidth may be required to initialize a decoding device (eg, storage device) very quickly. Quick initialization of the decoding device can be a problem when the decoding device has many contexts and all of them need to be cleared. When the decoding device provides many contexts (1k or more) and it is not possible to completely clear the memory, an unacceptably large number of clock cycles will be required to clear the memory.

Для быстрой очистки контекстов в некоторых вариантах осуществления настоящего изобретения используется дополнительный двоичный разряд, называемый здесь двоичным разрядом инициализованного состояния, который запоминается с каждым контекстом. Таким образом, добавочный двоичный разряд запоминается вместе с состоянием МОВ (например, 8 бит) для каждого контекста. To quickly clear contexts, in some embodiments of the present invention, an additional binary bit is used, called here the initialized state binary bit, which is stored with each context. Thus, the incremental binary bit is stored along with the state of the MOB (for example, 8 bits) for each context.

На фиг. 31 показаны запоминающее устройство для каждого элемента контекста и логическая схема управления инициализацией. Запоминающее устройство контекста 2401 показано подсоединенным к регистру 2402. В одном варианте осуществления изобретения регистр 2402 включает в себя одноразрядный регистр, который указывает текущее надлежащее состояние для элемента инициализированного состояния. Регистр 2402 подсоединен к одному входу логической схемы ИСКЛЮЧАЮЩЕЕ ИЛИ 2403. Другой вход логической схемы ИСКЛЮЧАЮЩЕЕ ИЛИ 2403 подсоединен к выходу запоминающего устройства 2401. Выходной сигнал e логической схемы ИСКЛЮЧАЮЩЕЕ ИЛИ 2403 представляет собой достоверный сигнал и подается на вход логической схемы управления 2404. Другие входы логической схемы управления подсоединены к выходу счетчика 2405 и сигналу элемента дискретизации контекста. Выход логической схемы управления 2404 подсоединен к селективным входам мультиплексоров 2406 и 2407 и к входу счетчика 2405. Другой выход логической схемы управления 2404 подсоединен к селективному входу мультиплексора 2406. Входы мультиплексора 2406 подсоединены к выходу счетчика 2405 и сигналу индикации элемента дискретизации контекста. Выход мультиплексора 2406 подсоединен к запоминающему устройству 2401. Входы мультиплексора 2407 подсоединены к сигналу нового состояния МОВ и сигналу нуля. Выход мультиплексора 2407 подсоединен к одному входу запоминающего устройства 2401, выход запоминающего устройства 2401 и сигнал начального режима МОВ подсоединены к входу мультиплексора 2408. Выходной сигнал мультиплексора 2408 представляет собой выходной сигнал состояния МОВ. In FIG. 31 shows a storage device for each context element and initialization control logic. A context memory 2401 is shown connected to register 2402. In one embodiment of the invention, register 2402 includes a one-bit register that indicates the current proper state for the initialized state element. The register 2402 is connected to one input of the EXCLUSIVE OR 2403 logic circuit. The other input of the EXCLUSIVE OR 2403 logic circuit is connected to the output of the storage device 2401. The output signal of the logic circuit EXCLUSIVE OR 2403 is a reliable signal and is fed to the input of the control logic 2404. Other inputs of the logic circuit 2404. control circuits are connected to the output of the counter 2405 and the signal of the context discretization element. The output of the control logic 2404 is connected to the selective inputs of the multiplexers 2406 and 2407 and to the input of the counter 2405. Another output of the control logic 2404 is connected to the selective input of the multiplexer 2406. The inputs of the multiplexer 2406 are connected to the output of the counter 2405 and the indication signal of the context sampling element. The output of the multiplexer 2406 is connected to the storage device 2401. The inputs of the multiplexer 2407 are connected to the signal of the new state of the MOB and the signal zero. The output of the multiplexer 2407 is connected to one input of the storage device 2401, the output of the storage device 2401 and the initial MOB signal are connected to the input of the multiplexer 2408. The output signal of the multiplexer 2408 is an output signal of the status of the MOB.

Значение в регистре 2402 дополняется с каждым выполнением операции декодирования (то есть с каждым набором данных, а не с каждым декодированным двоичным разрядом). Логическая схема ИСКЛЮЧАЮЩЕЕ ИЛИ 2403 сравнивает достоверность каждой выбранной ячейки памяти со значением регистра для определения, достоверна ли выбранная ячейка памяти для данной операции декодирования. Это осуществляют с использованием логической схемы ИСКЛЮЧАЮЩЕЕ ИЛИ 2403, проверяя, совпадает ли двоичный разряд инициализированного состояния с надлежащим состоянием в регистре 2402. Если данные в запоминающем устройстве 2401 не достоверны, логическая схема управления 2404 вызывает пропускание данных логической схемой преобразования состояния в код и вместо этого использование начального состояния МОВ. Это выполняется с использованием мультиплексора 2408. Когда в запоминающее устройство записывается новое состояние МОВ, инициализированный двоичный разряд устанавливается на текущее значение регистра, так что при новом обращении это значение будет считаться достоверным. The value in register 2402 is supplemented with each execution of the decoding operation (i.e., with each data set, and not with each decoded binary bit). The EXCLUSIVE OR 2403 logic circuit compares the validity of each selected memory location with a register value to determine whether the selected memory location is valid for a given decoding operation. This is done using an EXCLUSIVE OR 2403 logic circuit, checking to see if the initial state binary bit matches the proper state in register 2402. If the data in the memory 2401 is not reliable, the control logic 2404 causes the data to be passed by the state to code logic and instead use of the initial state of MOB. This is done using multiplexer 2408. When a new MOB state is written to the memory device, the initialized binary bit is set to the current value of the register, so that when it is accessed again, this value will be considered reliable.

Каждое содержимое запоминающего устройства элементов контекста должно иметь свой двоичный разряд инициализированного состояния, установленный на текущее значение регистра до того, как может начаться другая операция декодирования. Счетчик 2405 выполняет этапы по всем ячейкам памяти для гарантии, что они инициализированы. Всякий раз, когда используется элемент контекста, а его режим МОВ не скорректирован, неиспользованный цикл записи можно использовать для тестирования или коррекции ячейки памяти, указываемой счетчиком 2405. После завершения операции декодирования, если счетчик 2405 не достиг максимального значения, оставшиеся контексты инициализируются до начала следующей операции. Для операции управления используется следующая логика:
записать это = ложная;
счетчик = 0;
все инициализируемое = ложное;
хотя (счетчик < максимальный элемент кодирования данных контекста +1)
считывание режима МОВ из запоминающего устройства контекста
если ((счетчик = считыванию элемента кодирования данных контекста) и (записывание это))
запись это = ложная
счетчик = счетчик + 1
если (режим МОВ изменен)
записывание нового режима МОВ
еще если (записывание это)
записывание начального режима МОВ в ячейку памяти "счетчик"
счетчик = счетчик + 1
еще
считывание ячейки памяти "счетчик"
если (инициализированный двоичный разряд в считанной ячейке находится в ошибочном состоянии)
записывание это = истинная
еще
счетчик = счетчик + 1
все инициализированное = истинное;
хотя (декодирование)
считывание режима МОВ из запоминающего устройства контекста
если (состояние МОВ изменено)
записывание нового режима МОВ.
Each context element storage device must have its own initial state binary bit set to the current value of the register before another decoding operation can begin. Counter 2405 performs steps across all memory locations to ensure that they are initialized. Whenever a context element is used, and its MOB mode is not adjusted, an unused write cycle can be used to test or correct the memory cell indicated by counter 2405. After the decoding operation is completed, if counter 2405 has not reached its maximum value, the remaining contexts are initialized before the next operations. The following logic is used for the control operation:
write it = false;
counter = 0;
all initialized = false;
although (counter <maximum context data encoding element +1)
reading the MOB mode from the context memory
if ((counter = reading the context data encoding element) and (writing this))
record this = false
counter = counter + 1
if (MOB mode is changed)
recording a new MOB mode
even if (recording this)
recording the initial mode of MOB in the memory cell "counter"
counter = counter + 1
yet
reading memory "counter"
if (the initialized binary bit in the read cell is in an error state)
spelling it = true
yet
counter = counter + 1
all initialized = true;
although (decoding)
reading the MOB mode from the context memory
if (DOM state is changed)
recording a new MOB mode.

Используемый в настоящем изобретении модуль МОВ может включать в себя схему адаптации, которая позволяет быстрее адаптировать независимо от количества имеющихся данных. При ее использовании настоящее изобретение в качестве средства обеспечения более точной оценки позволит вначале быстрее адаптировать декодирование и гораздо медленнее адаптировать, когда имеется больше данных. Более того, МОВ может фиксироваться при реализации таблицы состояний / конечного автомата МОВ в программируемой пользователем вентильной матрице (ППВМ) или интегральных схемах прикладной ориентации (ИСПО). The MOB module used in the present invention may include an adaptation circuit that allows faster adaptation regardless of the amount of data available. When used, the present invention as a means of providing a more accurate estimate will initially allow for faster decoding adaptation and much slower adaptation when more data is available. Moreover, the MOV can be fixed during the implementation of the state table / finite state machine of the MOB in a user-programmable gate array (PPVM) or application-oriented integrated circuits (ISPO).

В табл. 21-26 описан ряд конечных автоматов оценки вероятности. В некоторых таблицах не используются коды R3 и не используются длинные коды для пониженной цены аппаратного средства. Во всех таблицах, за исключением табл. 21, используются особые режимы "быстрой адаптации", используемые для быстрой адаптации при запуске кодирования до появления первого МВС. Эти режимы быстрой адаптации в таблицах показаны выделенным курсивом. Например, из табл. 22 видно, что когда начинается декодирование, текущее состояние представляет состояние 0. Если появляется БВС, декодирующее устройство переходит в состояние 35. Пока появляются символы БВС, декодирующее устройство переходит вверх по направлению от состояния 35, в конце концов переходя в состояние 28. Если в какое-то время появляется МВС, декодирующее устройство переходит из четко определенных режимов быстрой адаптации в режим, который представляет правильное состояние вероятности в отношении данных, которые были приняты до сих пор. In the table. 21-26 described a number of finite state machines for estimating probability. Some tables do not use R3 codes or long codes for reduced hardware prices. In all tables, with the exception of table. 21, special “fast adaptation” modes are used, which are used for quick adaptation when starting coding before the first MVS appears. These quick adaptation modes in the tables are shown in italics. For example, from table. 22 it can be seen that when decoding starts, the current state represents state 0. If BWS appears, the decoding device goes into state 35. As long as the BWS symbols appear, the decoding device goes up in the direction from state 35, eventually turning into state 28. If in MVS appears for some time, the decoding device switches from clearly defined fast adaptation modes to a mode that represents the correct state of probability in relation to data that has been received so far.

Отметим, что для каждой таблицы после приема определенного количества символов БВС декодирующее устройство выходит из режимов быстрого адаптирования. В желаемом варианте осуществления изобретения после выхода из режимов быстрой адаптации не существует механизма возвращения в них, за исключением повторного запуска процесса декодирования. В других вариантах осуществления таблицу состояний можно разработать так, чтобы повторно входить в эти режимы быстрой адаптации посредством обеспечения возможности более быстрого адаптирования, настоящее изобретение дает возможность декодирующему устройству быстрее вступить в более асимметричные коды, извлекая тем самым возможную пользу из улучшенного уплотнения. Отметим, что быструю адаптацию можно устранить для конкретной таблицы путем изменения содержимого таблицы для текущего состояния 0 таким образом, что таблица переходит только на одно состояние вверх или вниз в зависимости от входных данных. Note that for each table, after receiving a certain number of BVS symbols, the decoding device leaves the fast adaptation modes. In the desired embodiment, after exiting the quick adaptation modes, there is no mechanism for returning to them, with the exception of restarting the decoding process. In other embodiments, the implementation of the state table can be designed to re-enter these modes of fast adaptation by providing the possibility of faster adaptation, the present invention enables the decoding device to enter more asymmetric codes faster, thereby benefiting from improved compression. Note that quick adaptation can be eliminated for a specific table by changing the contents of the table for the current state 0 so that the table goes only one state up or down depending on the input data.

Для всех этих таблиц данные для каждого состояния представляют код для этого состояния, следующего состояния при положительной коррекции (вверх) и следующего состояния при отрицательной коррекции (вниз). Звездочками указаны состояния, когда символы БВС должны измениться при отрицательной коррекции. For all these tables, the data for each state represents the code for this state, the next state with positive correction (up) and the next state with negative correction (down). Asterisks indicate the states when the BVS symbols should change with a negative correction.

Добавление быстрой адаптации к оценке вероятности поможет только при запуске кодирования. Для улучшения адаптации во время кодирования можно использовать другие способы, когда статистические данные элементов контекста изменяются быстрее, чем могут отслеживать описанные выше таблицы состояния МОВ. Один способ сохранения быстрой адаптации на протяжении всего кодирования заключается в добавлении элемента ускорения к обновлению состояния МОВ. Это ускорение можно ввести в таблицу состояния МОВ путем повторения каждого кода постоянное количество раз (например, 8). Затем элемент ускорения M (например, положительное целое число) можно добавить или вычесть из текущего состояния при обновлении. Когда M равен 1, система работает так же, как без ускорения, и происходит наиболее медленная адаптация. Когда M больше 1, происходит более быстрая адаптация. Вначале M можно установить на некоторое значение, превышающее значение 1, обеспечивая начальную быструю адаптацию. Adding a quick adaptation to the probability estimate will only help when starting coding. To improve adaptation during coding, other methods can be used when the statistics of the context elements change faster than the MOV status tables described above can track. One way to maintain fast adaptation throughout coding is to add an acceleration element to update the state of the MOB. This acceleration can be entered into the MOV status table by repeating each code a constant number of times (for example, 8). Then the acceleration element M (for example, a positive integer) can be added or subtracted from the current state when updating. When M is 1, the system works the same way as without acceleration, and the slowest adaptation occurs. When M is greater than 1, faster adaptation occurs. Initially, M can be set to a value in excess of 1, providing initial quick adaptation.

Один соответствующий настоящему изобретению способ обновления значения M основан на ряде последовательных кодовых слов. Например, если последовательно появляется заранее установленное количество кодовых слов, то значение M увеличивается. Например, если четыре последовательных кодовых слова представляют собой "0" "0" "0" "0" или "1N" "1N" "1N" "1N", то величина M увеличивается. С другой стороны, для уменьшения значения M можно использовать трафарет переключения между кодовыми словами "0" и "1N". Например, если четыре последовательных кодовых слова представляют собой "0" "1N" "0" "1N" или "1N" "0" "1N" "0", то величина M уменьшается. One method of updating the value of M according to the present invention is based on a series of consecutive codewords. For example, if a predetermined number of codewords appears sequentially, then the value of M increases. For example, if four consecutive codewords are "0" "0" "0" "0" or "1N" "1N" "1N" "1N", then the value of M increases. On the other hand, to reduce the value of M, a switching pattern between the code words “0” and “1N” can be used. For example, if four consecutive codewords are "0" "1N" "0" "1N" or "1N" "0" "1N" "0", then the value of M decreases.

В другом способе ускорения используют таблицы состояний, в которых каждый код повторяется S раз, где S - положительное целое число. S является обратной величиной параметра ускорения. Когда S равен единице, адаптация быстрая, а когда S больше, адаптация осуществляется медленнее. Значение S вначале можно установить равным 1 для обеспечения начальной быстрой адаптации. Используя способ, аналогичный описанному выше, значение S можно корректировать, когда четыре последовательных кодовых слова представляют собой "0" "0" "0" "0" или "1N" "1N" "1N" "1N". B таком случае величина S уменьшается. В противоположность этому, если четыре последовательных кодовых слова представляют собой "0" "1N" "0" "1N" или "1N" "0" "1N" "0", то значение S увеличивается. Another acceleration method uses state tables in which each code is repeated S times, where S is a positive integer. S is the reciprocal of the acceleration parameter. When S is equal to one, adaptation is fast, and when S is greater, adaptation is slower. The value of S can initially be set to 1 to provide an initial quick adaptation. Using a method similar to that described above, the value of S can be adjusted when four consecutive codewords are "0" "0" "0" "0" or "1N" "1N" "1N" "1N". In this case, the value of S decreases. In contrast, if four consecutive codewords are "0" "1N" "0" "1N" or "1N" "0" "1N" "0", then the value of S increases.

Определение последовательных кодовых слов может иметь несколько значений. В системах "по контексту" последовательные кодовые слова могут относиться к последовательным словам в одном элементе контекста. В системе "по вероятности" последовательные кодовые слова могут относиться к последовательным кодовым словам в одном классе вероятности. В качестве альтернативы в одной системе последовательные кодовые слова могут относиться к последовательным кодовым словам в широком смысле (не относящимся к элементам контекста или классу вероятности). В случае этих трех примеров требуемые для сохранения архива кодовых слов двоичные разряды запоминания представляют собой 3 х количество элементов контекста, 3 х количество классов вероятности и 3 х соответственно. Сохранение ускорения для каждого элемента контекста может обеспечить лучшую адаптацию. Поскольку плохое отслеживание часто обусловлено общим изменением некодированных данных, хорошую адаптацию может обеспечить также определение общего ускорения. The definition of consecutive codewords can have several meanings. In context-based systems, consecutive codewords may refer to consecutive words in a single context element. In a "probability" system, consecutive codewords may refer to consecutive codewords in a single probability class. Alternatively, in one system, consecutive codewords may refer to consecutive codewords in a broad sense (not related to context elements or probability class). In the case of these three examples, the binary digits required to store the codeword archive are 3 x the number of context elements, 3 x the number of probability classes and 3 x, respectively. Storing acceleration for each context element can provide better adaptation. Since poor tracking is often caused by a general change in unencrypted data, a good fit can also be provided by determining the overall acceleration.

Применения системы. System applications.

Одно из достоинств любой системы уплотнения заключается в снижении требований к объему памяти для совокупности данных. Соответствующую настоящему изобретению параллельную систему можно заменить для любого применения, осуществляемого в настоящее время, с помощью системы кодирования без потерь, и можно применять в системах, работающих с аудио-, текстовыми данными, базами данных, выполнимыми на вычислительных машинах, или другими цифровыми данными, сигналами или символами. Примеры систем кодирования без потерь включают в себя уплотнение факсимильной связи, уплотнение баз данных, уплотнение графических изображений побитовых отображений и уплотнение коэффициентов преобразования в стандартах изображения типа стандарта JPEG (рабочая группа по стандартам цифровых видео- и мультипликационных изображений) и стандарта MPEG (группа экспертов по движущимся изображениям - стандарт сжатия движущегося изображения). Настоящее изобретение обеспечивает возможность реализации небольшого эффективного аппаратного оборудования и реализаций сравнительно быстродействующих программных обеспечений, обеспечивая хороший выбор даже в случае применений, не требующих высокого быстродействия. One of the benefits of any compaction system is that it reduces the memory requirements for a data set. The parallel system of the present invention can be replaced for any current application with a lossless coding system, and can be used in systems that work with audio, text data, computer-executable databases, or other digital data, signals or symbols. Examples of lossless coding systems include facsimile compression, database compression, bitmap graphic compression, and conversion coefficient compression in image standards such as the JPEG standard (working group on digital video and cartoon image standards) and the MPEG standard (expert group on moving images - the standard for moving image compression). The present invention provides the ability to implement small efficient hardware and implementations of relatively high-speed software, providing a good choice even in the case of applications that do not require high speed.

Преимущество, обеспечиваемое настоящим изобретением по сравнению с известным уровнем техники, заключается в возможности работы на очень высоких скоростях, особенно при декодировании. Таким образом, настоящее изобретение может обеспечивать полное использование дорогостоящих высокоскоростных каналов, таких как высокоскоростные сети вычислительных машин, спутниковые и наземные ретрансляционные каналы связи. На фиг. 35 показана такая система, в которой для декодирующей системы 2801 данные обеспечивает вещательная сеть или высокоскоростная сеть вычислительных машин. Система 2801 осуществляет параллельное кодирование данных при выработке выходных данных. Текущая энтропия аппаратного обеспечения (типа Q-кодера) может снизить пропускную способность этих систем. Все эти системы сконструированы так, что при высокой стоимости должны иметь большую пропускную способность. Счетчик выполнен так, что имеет декодирующее устройство, замедляющее пропускную способность. Соответствующая настоящему изобретению параллельная система не только обеспечивает эти высокие пропускные способности, она действительно увеличивает эффективную пропускную способность, поскольку данные можно передавать в сжатой форме. The advantage provided by the present invention compared with the prior art is that it can operate at very high speeds, especially when decoding. Thus, the present invention can make full use of expensive high-speed channels, such as high-speed computer networks, satellite and terrestrial relay communication channels. In FIG. 35 illustrates a system in which a broadcast network or high-speed network of computers provides data for decoding system 2801. System 2801 performs parallel coding of data when generating output data. The current hardware entropy (such as a Q encoder) can reduce the throughput of these systems. All these systems are designed so that at high cost they should have a large bandwidth. The counter is designed to have a decoding device that slows throughput. The parallel system of the present invention not only provides these high throughputs, it does increase effective throughput because data can be transmitted in compressed form.

Соответствующая настоящему изобретению параллельная система применима также для обеспечения более эффективной пропускной способности из-за умеренно быстрых каналов, подобных цифровой сети связи с интеграцией служб и комплексными услугами (ISDN), неперезаписываемых компакт-дисков (CD-ROM) и интерфейса малых вычислительных систем (SCSI). Такая система согласования пропускной способности показана на фиг. 36, тогда как данные от таких источников, как неперезаписываемый компакт-диск, этернет, интерфейс малых вычислительных систем или другого аналогичного источника, подаются на систему декодирования 2901, которая принимает и декодирует данные, с целью вырабатывания выходного сигнала. Эти каналы работают все еще быстрее, чем некоторые используемые в настоящее время кодирующие устройства. Часто эти каналы используются для обслуживания источника данных, которому требуется большая ширина полосы, чем для канала, например видеоизображение в реальном масштабе времени или компьютерная среда (мультимедиа). Соответствующая настоящему изобретению система может выполнять функцию согласования по ширине полосы. The parallel system of the present invention is also applicable to provide more efficient throughput due to moderately fast channels such as a Service Integrated Services Integrated Services Digital Network (ISDN), CD-ROMs, and Small Computer System Interface (SCSI) ) Such a bandwidth matching system is shown in FIG. 36, while data from sources such as a rewritable compact disc, internet, small computer interface or other similar source are supplied to a decoding system 2901 that receives and decodes data in order to generate an output signal. These channels are still faster than some of the currently used encoders. Often these channels are used to serve a data source that requires a larger bandwidth than for a channel, such as real-time video or a computer environment (multimedia). The system according to the present invention can perform a bandwidth matching function.

Соответствующая настоящему изобретению система представляет собой переходный вариант для части кодирующего устройства статистического кода телевизионной системы, работающей в реальном масштабе времени, подобной стандартам телевидения высокой четкости (ТВВЧ) и телевидения группы экспертов по движущемуся изображению (MPEG). Такая система показана на фиг. 37. Телевизионная система, работающая в реальном масштабе времени, включает в себя систему декодирования 3001, на которую поступают уплотненные данные изображения. Система 3001 декодирует данные и выводит их в декодирующее устройство с потерями 3002. Декодирующее устройство с потерями 3002 может быть передающей, преобразующей цвет и субдискретизирующей частью декодирующего устройства телевидения высокой четкости стандарта сжатия движущегося изображения (MPEG). В качестве монитора 3003 можно использовать телевизионный или видеомонитор. The system of the present invention is a transitional embodiment for a part of the encoder of a statistical code of a television system operating in real time, similar to the standards of high definition television (HDTV) and television of the moving picture expert group (MPEG). Such a system is shown in FIG. 37. A real-time television system includes a decoding system 3001, which receives compressed image data. System 3001 decodes data and outputs it to a lossy decoding device 3002. A lossy decoding device 3002 may be a color transmitting, color converting, and downsampling part of a moving picture compression standard (MPEG) high definition television decoder. As a monitor 3003, you can use a television or video monitor.

В то время как множество изменений и модификаций настоящего изобретения несомненно должны быть очевидны специалистам в данной области техники после прочтения описания, должно быть ясно, что конкретный вариант осуществления изобретения, показанный и описанный с помощью иллюстраций, не предназначен для того, чтобы считать его в качестве ограничения. Следовательно, ссылки на детали предпочтительного варианта осуществления изобретения не предназначены для ограничения объема формулы изобретения, в которой перечисляются только особенности, которые рассматриваются в виде сущности изобретения. While many changes and modifications of the present invention should undoubtedly be apparent to those skilled in the art after reading the description, it should be clear that the specific embodiment shown and described by way of illustration is not intended to be construed as restrictions. Therefore, reference to details of a preferred embodiment of the invention is not intended to limit the scope of the claims, which list only features that are considered as the essence of the invention.

Таким образом, описаны способ и устройство, предназначенные для параллельного декодирования и кодирования. Thus, a method and apparatus for parallel decoding and encoding are described.

Claims (121)

1. Способ кодирования потока данных, при котором преобразуют поток входных данных для получения последовательности уплотненных выходных данных, отличающийся тем, что соответственно упомянутому потоку данных вырабатывают информацию кодовых слов, представляющую поток данных, причем информация кодовых слов содержит множество кодовых слов, которые вырабатывают из данных потока данных обрабатываемых параллельно, формируют кодированные данные соответственно информации кодовых слов, причем при формировании кодированных данных каждое из множества кодовых слов выдают в порядке соответственно началу части потока данных, представляемой каждым кодовым словом. 1. A method of encoding a data stream, in which the input data stream is converted to obtain a sequence of compressed output data, characterized in that, respectively, the data stream generates code words representing the data stream, the code word information comprising a plurality of code words that are generated from the data the data stream processed in parallel, encoded data is formed according to the codeword information, each of which when generating encoded data nozhestva codewords give in order of respectively the top portion of the data stream representing each code word. 2. Способ по п.1, отличающийся тем, что каждое из множества кодовых слов выдают в начале каждого прогона. 2. The method according to claim 1, characterized in that each of the many code words is issued at the beginning of each run. 3. Способ по п.1, отличающийся тем, что при формировании кодированных данных объединяют кодовые слова переменной длины в структуры данных фиксированной длины. 3. The method according to claim 1, characterized in that when generating encoded data, variable-length codewords are combined into fixed-length data structures. 4. Способ по п.3, отличающийся тем, что в каждое из структур данных фиксированной длины включает слово, сформированное с перемежением. 4. The method according to claim 3, characterized in that in each of the data structures of a fixed length includes a word formed with alternation. 5. Способ по п.1, отличающийся тем, что кодированные данные выдают так, чтобы кодовые слова упорядочивались в порядке декодирования. 5. The method according to claim 1, characterized in that the encoded data is output so that the code words are ordered in decoding order. 6. Способ по п.1, отличающийся тем, что дополнительно осуществляют упорядочивание кодовых слов. 6. The method according to claim 1, characterized in that they further carry out the ordering of code words. 7. Способ по п.1, отличающийся тем, что при выработке информации кодовых слов вырабатывают данные вероятностного состояния кодового слова, выбирают код генерирования двоичных разрядов на основании вероятностного состояния и обращаются к памяти для получения счета прогонов, связанного с классом вероятности. 7. The method according to claim 1, characterized in that when generating codeword information, they generate data of the probabilistic state of the codeword, select the binary generation code based on the probabilistic state, and access the memory to obtain a run count associated with the probability class. 8. Система кодирования потока данных, содержащая кодирующее устройство, подсоединенное для приема потока данных, отличающаяся тем, что кодирующее устройство выполнено с возможностью выработки информации кодовых слов, содержащей множество кодовых слов, причем множество кодовых слов вырабатываются кодирующим устройством из данных потока данных, обрабатываемых парраллельно, и упомянутая система дополнительно содержит блок переупорядочивания, подсоединенный к кодирующему устройству, для формирования кодированных данных соответственно информации кодовых слов, причем блок переупорядочивания обеспечивает переупорядочивание кодовых слов, вырабатываемых кодирующим устройством, в порядке декодирования так, что порядок выдаваемых кодовых слов соответствует началу части потока данных, представляемой каждым кодовым словом. 8. A coding system for a data stream comprising a coding device connected to receive a data stream, characterized in that the coding device is configured to generate codeword information comprising a plurality of codewords, wherein a plurality of codewords are generated by the coding device from data of the data stream processed in parallel , and said system further comprises a reordering unit connected to an encoding device for generating encoded data, respectively data codewords, the reordering unit delivers reordering codewords produced by the encoder in decode order so that the order issued by the code words corresponding to the beginning portion of the data stream representing each code word. 9. Система по п.8, отличающаяся тем, что блок переупорядочивания обеспечивает запоминание кодовых слов с указанием размера кодовых слов. 9. The system of claim 8, wherein the reordering unit provides storage of code words indicating the size of the code words. 10. Система по п.9, отличающаяся тем, что кодовые слова IN переупорядочиваются так, что старший разряд "1" указывает длину каждого кодового слова. 10. The system according to claim 9, characterized in that the code words IN are reordered so that the high order bit "1" indicates the length of each code word. 11. Система по п.8, отличающаяся тем, что блок переупорядочивания включает в себя по меньшей мере один блок переупорядочивания счета прогонов, предназначенный для формирования каждого из упомянутого множества кодовых слов в информации кодовых слов в начале каждого прогона, и по меньшей мере один блок компоновки двоичных разрядов, предназначенный для объединения кодовых слов переменной длины в структуры данных фиксированной длины. 11. The system of claim 8, wherein the reordering unit includes at least one run count reordering unit for generating each of said plurality of codewords in the codeword information at the beginning of each run, and at least one unit Binary layouts designed to combine variable-length codewords into fixed-length data structures. 12. Система по п. 11, отличающаяся тем, что каждая из структур данных фиксированной длины включает в себя слово, сформированное с перемежением. 12. The system according to p. 11, characterized in that each of the data structures of a fixed length includes a word formed with alternation. 13. Система по п.8, отличающаяся тем, что блок переупорядочивания предназначен для упорядочивания кодовых слов. 13. The system of claim 8, characterized in that the reordering unit is designed to organize code words. 14. Система по п.13, отличающаяся тем, что содержит запоминающее устройство, подсоединенное к блоку переупорядочивания для запоминания кодовых слов в заданном порядке. 14. The system according to item 13, characterized in that it contains a storage device connected to the reordering unit for storing code words in a predetermined order. 15. Система по п.8, отличающаяся тем, что кодирующее устройство включает в себя блок контекстной модели, блок оценки вероятности, подсоединенный к блоку контекстной модели, и блок генератора двоичных разрядов, подсоединенный к блоку оценки вероятности и предназначенный для формирования кодового слова соответственно потоку данных. 15. The system of claim 8, wherein the encoding device includes a context model block, a probability estimation block connected to the context model block, and a binary bit generator block connected to the probability estimation block and intended to generate a codeword according to the stream data. 16. Система по п.15, отличающаяся тем, что кодирующее устройство включает в себя запоминающее устройство для запоминания множества счетов прогонов, причем при обращении в запоминающее устройство используются классы вероятности из блока оценки вероятности для выдачи одного из множества счетов прогонов на блок генератора двоичных разрядов для использования в качестве части информации кодового слова. 16. The system of clause 15, wherein the encoding device includes a storage device for storing a plurality of run accounts, and when accessing the storage device, probability classes are used from a probability estimation unit for issuing one of a plurality of run accounts to a binary generator block for use as part of the codeword information. 17. Система по п.15, отличающаяся тем, что блок генератора двоичных разрядов включает в себя генератор двоичных разрядов, выполненный с возможностью формирования информации кодовых слов в ответ на индексирующий сигнал и индикацию наиболее вероятного символа или наименее вероятного символа (БВС/МВС), и запоминающее устройство, подсоединенное к генератору двоичных разрядов, предназначенное для выдачи счета прогонов на генератор двоичных разрядов, причем генератор двоичных разрядов осуществляется считывание из запоминающего устройства на основании индексирующего сигнала и генерирование двоичных разрядов на основании данных, полученных считыванием из запоминающего устройства. 17. The system of clause 15, wherein the block of the binary generator includes a binary generator, configured to generate codeword information in response to an indexing signal and an indication of the most probable symbol or least probable symbol (BVS / MVS), and a storage device connected to the binary generator, designed to issue a run count to the binary generator, moreover, the binary generator is read from the storage device to based on the indexing signal and generating binary bits based on data obtained by reading from the storage device. 18. Система по п.17, отличающаяся тем, что информация кодовых слов содержит в себя первый сигнал, указывающий, содержит ли индикация БВС или МВС запуск прогона, второй сигнал, указывающий, содержит ли индикация БВС или МВС окончание прогона, и выходной сигнал кодовых слов. 18. The system according to 17, characterized in that the codeword information includes a first signal indicating whether the BVS or MVS indication starts the run, a second signal indicating whether the BVS or MVS indication contains the end of the run, and the code signal output words. 19. Система по п.11, отличающаяся тем, что блок компоновки двоичных разрядов предназначен для упорядочивания слов, сформированных с перемежением, для формирования протока кодированных данных в виде потоков с перемежением, упорядоченных в соответствии с предыдущим N-м кодовым словом в каждом перемеженном слове каждого потока. 19. The system according to claim 11, characterized in that the unit for arranging binary digits is designed to order words formed with interleaving, for forming a flow of encoded data in the form of streams with interleaving, ordered in accordance with the previous N-th code word in each interleaved word each thread. 20. Система по п.11, отличающаяся тем, что блок переупорядочивания содержит поисковое декодирующее устройство, предназначенное для отбора перемеженных слов, выдаваемых в кодовый поток. 20. The system according to claim 11, characterized in that the reordering unit comprises a search decoding device for selecting interleaved words output to the code stream. 21. Система по п.20, отличающаяся тем, что переупорядочивания содержит множество блоков переупорядочивания счетов прогонов, связанных с множеством блоков компоновки двоичных разрядов, причем каждый из множества блоков компоновки двоичных разрядов предназначен для формирования слов с перемежением, а поисковое декодирующее устройство обеспечивает выбор слова с перемежением из множества таких слов в качестве выходного сигнала для кодового потока. 21. The system according to claim 20, wherein the reordering comprises a plurality of reordering units of run accounts associated with a plurality of binary arrangement blocks, each of the plurality of binary arrangement blocks being used for generating words with interleaving, and the search decoding device provides a word selection interleaving from a plurality of such words as an output signal for a code stream. 22. Система по п.11, отличающаяся тем, что информация кодовых слов включает в себя временную метку, а блок переупорядочивания дополнительно содержит логический блок для выдачи слов с перемежением на основании связанных с ними временных меток. 22. The system according to claim 11, characterized in that the codeword information includes a time stamp, and the reordering unit further comprises a logical unit for issuing words with interleaving based on the associated time stamps. 23. Система по п.22, отличающаяся тем, что блок переупорядочивания содержит множество блоков переупорядочивания счета прогонов, связанных с множеством блоков компоновки двоичных разрядов, при этом логический блок обеспечивает выдачу слов с перемежением на основании связанных с ними временных меток. 23. The system of claim 22, wherein the reordering unit comprises a plurality of run count reordering units associated with a plurality of binary digit arrangement blocks, the logical unit providing interleaving words based on associated timestamps. 24. Система по п.23, отличающаяся тем, что слова с перемежением выдаются соответственно наиболее ранней временной метке. 24. The system according to item 23, wherein the words with interleaving are issued according to the earliest time stamp. 25. Система по п.11, отличающаяся тем, что обеспечивает посредством единственного блока очереди выдачу кодовых слов на множество блоков компоновки двоичных разрядов, а множество блоков компоновки двоичных разрядов формируют слова с перемежением для выдачи в качестве части кодового потока. 25. The system according to claim 11, characterized in that by means of a single block of the queue the issuance of code words to many blocks of the arrangement of binary digits, and many blocks of the arrangement of binary digits form words with alternation for issuing as part of the code stream. 26. Система по п. 25, отличающаяся тем, что единственный блок очереди включает в себя единственный блок переупорядочивания счета прогонов, при этом логическая схема обеспечивает определение следующего слова с перемежением для выдачи в качестве кодового потока. 26. The system according to p. 25, characterized in that the single block of the queue includes a single block reordering counts of runs, while the logic circuit ensures the determination of the next word with alternation for issuing as a code stream. 27. Система по п. 11, отличающаяся тем, что обеспечивает посредством единственного блока очереди выдачу кодовых слов на единственный блок компоновки двоичных разрядов. 27. The system according to p. 11, characterized in that by means of a single block of the queue, the issuance of code words to a single block arrangement of binary digits. 28. Система кодирования, содержащая кодирующее устройство и предназначенная ля использования в системе уплотнения, имеющей декодирующее устройство для декодирования информации, вырабатываемой кодирующим устройством, отличающаяся тем, что кодирующее устройство выполнено с возможностью выработки информации кодовых слов в ответ на данные, блок переупорядочивания, подсоединенный к кодирующему устройству, предназначенный для формирования потока кодированных данных соответственно информации кодовых слов, причем блок переупорядочивания содержит блок переупорядочивания счета прогонов для помещения каждого кодового слова в начале соответствующих ему данных, и блок компоновки двоичных разрядов, предназначенный для приема кодовых слов с блока переупорядочивания счета прогонов, для объединения кодовых слов переменной длины в множество слов с перемежением фиксированной длины и для вывода множества слов с перемежением фиксированной длины в порядке, требуемом декодирующим устройством. 28. An encoding system comprising an encoding device and intended to be used in a compaction system having a decoding device for decoding information generated by the encoding device, characterized in that the encoding device is configured to generate codeword information in response to the data, a reordering unit connected to an encoding device for generating a stream of encoded data, respectively, of codeword information, wherein the reordering unit comprises a run count reordering unit for putting each codeword at the beginning of the data corresponding to it, and a binary digit arranging unit for receiving code words from the run count reordering unit, for combining variable length codewords into a plurality of words interleaving a fixed length and for outputting a plurality words alternating with a fixed length in the order required by the decoding device. 29. Система по п.28, отличающаяся тем, что блок переупорядочивания содержит запоминающее устройство для запоминания кодовых слов при переупорядочивании. 29. The system of claim 28, wherein the reordering unit comprises a storage device for storing codewords during reordering. 30. Система по п.28, отличающаяся тем, что кодирующее устройство содержит блок контекстной модели, блок оценки вероятности, связанный с блоком контекстной модели, и генератор последовательности двоичных разрядов, связанный с блоком оценки вероятности. 30. The system of claim 28, wherein the encoder comprises a context model block, a probability estimation block associated with the context model block, and a binary sequence generator associated with the probability estimation block. 31. Система по п.30, отличающаяся тем, что блок переупорядочивания счета прогонов содержит первое запоминающее устройство для запоминания кодовых слов, первый индикатор и второй индикатор, предназначенные для адресации первого запоминающего устройства в качестве очереди, причем первый индикатор предназначен для указания первого содержимого в качестве выходного сигнала первого запоминающего устройства, а второй индикатор предназначен для указания второго содержимого для следующей доступной и неназначенной ячейки памяти в первом запоминающем устройстве. 31. The system of claim 30, wherein the reordering unit of the run count comprises a first storage device for storing codewords, a first indicator and a second indicator for addressing the first storage device as a queue, the first indicator for indicating the first content in as the output signal of the first storage device, and the second indicator is designed to indicate the second content for the next available and unassigned memory in the first memory devices of huge capacity. 32. Система по п.31, отличающаяся тем, что содержит запоминающее устройство указателя для запоминания адресной информации, соответствующей ячейкам в первом запоминающем устройстве, назначенным в данный момент для запоминания кодовых слов для каждого индексирующего сигнала. 32. The system according to p. 31, characterized in that it contains a pointer storage device for storing address information corresponding to the cells in the first storage device currently assigned to store code words for each indexing signal. 33. Система по п.32, отличающаяся тем, что каждый индексирующий сигнал указывает класс вероятности. 33. The system of claim 32, wherein each indexing signal indicates a probability class. 34. Система по п.32, отличающаяся тем, что каждый индексирующий сигнал указывает по меньшей мере один контекст. 34. The system according to p, characterized in that each indexing signal indicates at least one context. 35. Система по п.28, отличающаяся тем, что блок переупорядочивания включает в себя очередь запоминающего устройства кодовых слов для запоминания кодовых слов, головной указатель для указания по меньшей мере одного кодового слова для вывода и хвостовой указатель для указания по меньшей мере ячейки памяти для внесения кодовых слов в очередь запоминающего устройства кодовых слов. 35. The system of claim 28, wherein the reordering unit includes a codeword memory queue for storing codewords, a head pointer for indicating at least one codeword for output, and a tail pointer for indicating at least a memory cell for adding codewords to the queue of the codeword memory device. 36. Система по п. 35, отличающаяся тем, что каждое содержимое кодовых слов в очереди запоминающего устройства кодовых слов включает в себя индикацию достоверности, при этом кодовое слово выдается из очереди запоминающего устройства кодовых слов, когда головной указатель определяет адрес кодового слова, а индикация достоверности для кодового слова показывает его достоверность. 36. The system of claim 35, wherein each content of the codewords in the queue of the codeword memory device includes a confidence indication, wherein the code word is issued from the codeword memory queue when the head pointer determines the address of the code word, and the indication Credibility for a codeword shows its credibility. 37. Система по п.28, отличающаяся тем, что блок компоновки двоичных разрядов содержит логический блок компоновки двоичных разрядов, выполненный с возможностью приема кодовых слов из блока переупорядочивания и объединения кодовых слов в слова с перемежением для множества потоков. 37. The system according to p. 28, characterized in that the block arrangement of binary digits contains a logical block layout of binary digits, configured to receive code words from the block reordering and combining code words into words with alternation for multiple streams. 38. Система по п.37, отличающаяся тем, что логический блок компоновки двоичных разрядов содержит множество накапливающих сумматоров и множество регистров, причем каждый из множества регистров связан с одним из множества накапливающих сумматоров и одним из множества потоков, каждый регистр предназначен для запоминания слова с перемежением для соответствующего потока, а каждый накапливающий сумматор указывает следующую ячейку в связанном с ним регистре для запоминания текущего кодового слова потока, так что каждое кодовое слово для одного из множества потоков добавляется к содержимому регистра, соответствующего упомянутому одному из множества потоков, на основании значения в соответствующем накапливающем сумматоре. 38. The system according to clause 37, wherein the logical unit for arranging binary digits contains many accumulative adders and many registers, each of the many registers associated with one of the many accumulative adders and one of the many streams, each register is designed to store a word with interleaving for the corresponding stream, and each accumulating adder indicates the next cell in the associated register to store the current codeword of the stream, so that each codeword for one of a plurality of streams are added to the contents of the register corresponding to said one of the plurality of streams based on the value in the corresponding accumulator. 39. Система по п. 38, отличающаяся тем, что содержит сдвигающее устройство, подсоединенное к множеству накапливающих сумматоров, предназначенное для сдвига кодовых слов в ответ по меньшей мере на один сигнал с множества накапливающих сумматоров, причем кодовые слова сдвигаются для добавления к содержимому одного из множества регистров соответственно значению в накапливающем сумматоре для объединения частей по меньшей мере двух кодовых слов для формирования каждого слова с перемежением. 39. The system according to p. 38, characterized in that it contains a shifting device connected to a plurality of accumulating adders, designed to shift code words in response to at least one signal from a plurality of accumulating adders, the code words being shifted to add one of multiple registers according to the value in the accumulating adder to combine parts of at least two code words to form each word with alternation. 40. Система по п.37, отличающаяся тем, что содержит запоминающее устройство переупорядочивания для запоминания слов с перемежением в последовательности, указанной декодирующим устройством. 40. The system according to clause 37, characterized in that it contains a memory reordering device for storing words with alternation in the sequence indicated by the decoding device. 41. Система по п.40, отличающаяся тем, что содержит множество указателей, соответствующих множеству перемежаемых потоков данных, причем каждый из множества указателей указывает ячейку запоминающего устройства переупорядочивания для следующего слова с перемежением для каждого из множества потоков. 41. The system of claim 40, characterized in that it contains a plurality of pointers corresponding to the plurality of interleaved data streams, each of the plurality of pointers indicating a cell of a reordering memory for the next word interleaved for each of the plurality of streams. 42. Система по п.28, отличающаяся тем, что содержит множество блоков переупорядочивания счета прогонов, каждый из которых связан с одним из потоков кодированных данных, множество блоков компоновки двоичных разрядов для формирования слов с перемежением для каждого потока кодированных данных и декодирующее устройство для выбора слов с перемежением из множества блоков компоновки двоичных разрядов в качестве кодированного выходного сигнала. 42. The system according to p. 28, characterized in that it contains many blocks reordering run counts, each of which is associated with one of the streams of encoded data, many blocks of the arrangement of binary digits for the formation of words with alternation for each stream of encoded data and a decoding device for selecting words interleaved from a plurality of binary arrangement blocks as an encoded output signal. 43. Система по п.28, отличающаяся тем, что содержит множество блоков переупорядочивания счета прогонов, каждый из которых связан с одним из потоков кодированных данных и предназначен для выработки множества кодовых слов и временных меток, связанных с каждым из множества кодовых слов, множество блоков компоновки двоичных разрядов для формирования слов с перемежением для каждого потока кодированных данных и логический блок для выбора каждого из слов с перемежением соответственно временным меткам кодовых слов в каждом из слов с перемежением. 43. The system according to p. 28, characterized in that it contains many blocks reordering counts of runs, each of which is associated with one of the streams of encoded data and is designed to generate many code words and time stamps associated with each of the many code words, many blocks layout of binary digits for the formation of words with alternation for each stream of encoded data and a logical unit for selecting each of the words with alternation according to the time stamps of the code words in each of the words with alternation . 44. Система по п.43, отличающаяся тем, что логический блок выполнен с возможностью выбора слова с перемежением содержащего кодовое слово с самой старой временной меткой. 44. The system according to item 43, wherein the logical unit is configured to select a word with alternation containing a code word with the oldest time stamp. 45. Система по п.28, отличающаяся тем, что блок компоновки двоичных разрядов содержит множество блоков компоновки двоичных разрядов, подсоединенных для приема кодовых слов из одного из множества потоков, и логический блок для выбора слов с перемежением для выдачи с каждого из множества блоков компоновки двоичных разрядов соответственно следующему потоку. 45. The system according to p. 28, characterized in that the block layout of the binary digits contains many blocks layout of the binary digits connected to receive code words from one of the many streams, and a logical block for selecting words with alternation for issuing from each of the many blocks of layout binary bits according to the next stream. 46. Система по п.28, отличающаяся тем, что блок переупорядочивания содержит конечную память. 46. The system of claim 28, wherein the reordering unit comprises a finite memory. 47. Система кодирования для обработки данных, отличающаяся тем, что содержит генератор индексирующих сигналов, предназначенный для выработки индексирующих сигналов соответственно сигналам данных, и блок таблицы состояний для обеспечения оценки вероятности на основании индекцирующих сигналов, причем таблица состояний включает в себя первое множество состояний и второе множество состояний, каждое из которых соответствует коду, при этом переходы между разными кодами, соответствующими первому множеству состояний, происходит быстрее при переходе между состояниями в первом множестве состояний, чем переходы между разными кодами, соответствующими второму множеству состояний, при переходе во втором множестве состояний. 47. A coding system for processing data, characterized in that it comprises an indexing signal generator for generating indexing signals according to the data signals, and a state table unit for providing a probability estimate based on the indexing signals, the state table including a first plurality of states and a second a set of states, each of which corresponds to a code, while transitions between different codes corresponding to the first set of states are faster when the transition between states in the first set of states than the transitions between different codes corresponding to the second set of states in the transition in the second set of states. 48. Система по п.47, отличающаяся тем, что первое множество состояний используется только для заранее установленного количества индексирующих сигналов. 48. The system according to clause 47, wherein the first set of states is used only for a predetermined number of indexing signals. 49. Система по п.47, отличающаяся тем, что первое множество состояний используется только для заранее установленного количества индексирующих сигналов, которые первоначально индексируют таблицу состояний. 49. The system of claim 47, wherein the first plurality of states is used only for a predetermined number of indexing signals that initially index the state table. 50. Система по п.47, отличающаяся тем, что каждое из первого множества состояний связано с кодом R2.50. The system according to clause 47, wherein each of the first set of states is associated with a code R 2 . 51. Система по п.48, отличающаяся тем, что первое множество состояний включает в себя по меньшей мере один переход к второму множеству состояний, так что таблица состояний переходит к второму множеству состояний из первого множества состояний после заранее установленного количества индексирующих сигналов. 51. The system of claim 48, wherein the first plurality of states includes at least one transition to the second plurality of states, so that the state table transitions to the second plurality of states from the first plurality of states after a predetermined number of indexing signals. 52. Система по п.47, отличающаяся тем, что каждое из первого множества состояний связано с различными кодами. 52. The system of claim 47, wherein each of the first plurality of states is associated with different codes. 53. Система по п.47, отличающаяся тем, что таблица состояний переходит от одного из первого множества состояний к одному из второго множества состояний в ответ на наименее вероятный символ. 53. The system according to clause 47, wherein the state table goes from one of the first set of states to one of the second set of states in response to the least probable symbol. 54. Система по п.47, отличающаяся тем, что посредством конечного автомата обеспечивает изменение состояния путем приращения в ответ на наиболее вероятный символ. 54. The system of claim 47, wherein the state machine provides a state change by incrementing in response to the most probable symbol. 55. Система кодирования для обработки данных, отличающаяся тем, что содержит генератор индекцирующих сигналов, предназначенный для выработки индексирующих сигналов соответственно сигналам данных, и блок таблицы состояний для обеспечения оценки вероятности на основании индексирующих сигналов, причем таблица состояний включает в себя множество состояний, каждое из которых соответствует коду, и каждый код в таблице состояний повторяется заранее установленное количество раз, причем переход между состояниями таблицы состояний происходит соответственно изменяемому элементу ускорения, так что первая скорость перехода между состояниями в течение первого периода времени отличается от второй скорости перехода в течение второго периода времени. 55. A coding system for processing data, characterized in that it comprises an indexing signal generator for generating indexing signals according to the data signals, and a state table unit for providing a probability estimate based on the indexing signals, the state table including a plurality of states, each of which corresponds to the code, and each code in the state table is repeated a predetermined number of times, and the transition between the states of the state table occurs according to the variable acceleration element, so that the first transition speed between states during the first time period is different from the second transition speed during the second time period. 56. Система по п.55, отличающаяся тем, что обновления данных таблицы состояний включают модифицирование состояние модуля оценки вероятности (МОВ) посредством положительного или отрицательного приращения элемента ускорения. 56. The system of claim 55, wherein updating the state table data includes modifying the state of the probability estimation module (MOW) by positive or negative increment of the acceleration element. 57. Система по п.56, отличающаяся тем, что адаптивное ускорение не происходит тогда, когда элемент ускорения характеризуется заранее установленным числом, что соответствует отсутствию адаптивного ускорения. 57. The system of claim 56, wherein adaptive acceleration does not occur when the acceleration element is characterized by a predetermined number, which corresponds to the absence of adaptive acceleration. 58. Система по п.56, отличающаяся тем, что значение элемента ускорения обновляется на основании ряда последовательных кодовых слов. 58. The system of claim 56, wherein the value of the acceleration element is updated based on a series of consecutive codewords. 59. Система по п.58, отличающаяся тем, что последовательные кодовые слова включают в себя последовательные кодовые слова в контексте. 59. The system of claim 58, wherein the sequential codewords include sequential codewords in context. 60. Система по п.58, отличающаяся тем, что последовательные кодовые слова включают в себя последовательные кодовые слова в классе вероятности. 60. The system of claim 58, wherein the sequential codewords include sequential codewords in a probability class. 61. Система по п.56, отличающаяся тем, что значение элемента ускорения обновляется на основании ряда чередующихся кодовых слов. 61. The system of claim 56, wherein the value of the acceleration element is updated based on a series of alternating code words. 62. Статистическое декодирующее устройство, предназначенное для декодирования потока данных из множества кодовых слов, содержащее множество генераторов последовательно двоичных разрядов, предназначенных для приема потока данных, отличающееся тем, что содержит блок таблицы состояний, связанный с множеством генераторов последовательности двоичных разрядов для обеспечения оценки вероятности для множества генераторов последовательности двоичных разрядов, предназначенных для генерирования декодированного результата для каждого кодового слова в потоке данных соответственно оценке вероятности с использованием кода Rn (k) для множества значений n, при этом таблица состояний включает в себя первое множество состояний и второе множество состояний, причем переходы между разными кодами в первом множестве состояний происходят быстрее, когда переход происходит в первом множестве состояний, чем переходы между кодами, когда переход происходит во втором множестве состояний.62. A statistical decoding device for decoding a data stream from a plurality of codewords, comprising a plurality of binary-sequence generators for receiving a data stream, characterized in that it comprises a state table unit associated with a plurality of binary-sequence generators to provide a probability estimate for sets of binary sequence generators designed to generate a decoded result for each code th word in the data stream respectively probability estimation using code R n (k) for a plurality n of values, wherein the state table includes a first set of states and a second set of states, and transitions between different codes in the first plurality of states are faster, when a transition occurs in the first set of states than transitions between codes when the transition occurs in the second set of states. 63. Устройство по п. 62, отличающееся тем, что каждое из первого множества состояний содержит код R2(k).63. The device according to p. 62, characterized in that each of the first set of states contains the code R 2 (k). 64. Устройство по п.62, отличающееся тем, что первое множество состояний предназначено для использования только при инициализации. 64. The device according to item 62, wherein the first set of states is intended for use only during initialization. 65. Статистическое декодирующее устройство, предназначенное для декодирования потока данных из множества кодовых слов, содержащее множество генераторов последовательности двоичных разрядов, предназначенных для приема потока данных, отличающееся тем, что содержит блок таблицы состояний для обеспечения оценки вероятности соответственно индексирующим сигналом, при этом таблица включает в себя множество состояний, каждое из которых соответствует коду, и каждый код в таблице состояний повторяется заранее определенное количество раз, при этом переход между состояниями таблицы состояний происходит соответственно изменяемому элементу ускорения, причем первая скорость перехода между состояниями в течение первого периода времени отличается от второй скорости перехода в течение второго периода времени. 65. A statistical decoding device for decoding a data stream from a plurality of codewords, comprising a plurality of binary sequence generators for receiving a data stream, characterized in that it contains a state table unit for providing probability estimates with an indexing signal, the table includes there are many states, each of which corresponds to a code, and each code in the state table is repeated a predetermined number of times, with In this case, the transition between the states of the state table occurs according to the variable acceleration element, and the first transition speed between the states during the first time period differs from the second transition speed during the second time period. 66. Система по п.62, отличающаяся тем, что каждый код в таблице состояний повторяется постоянное число раз. 66. The system of claim 62, wherein each code in the state table is repeated a constant number of times. 67. Система по п.66, отличающаяся тем, что обновления таблицы состояний включает модифицирование состояния модуля оценки вероятности (МОВ) посредством элемента ускорения. 67. The system of claim 66, wherein updating the state table includes modifying the state of a probability estimation module (MOV) by means of an acceleration element. 68. Система по п.67, отличающаяся тем, что элемент ускорения характеризуется заранее установленным числом, что соответствует отсутствию адаптивного ускорения. 68. The system of claim 67, wherein the acceleration element is characterized by a predetermined number, which corresponds to the absence of adaptive acceleration. 69. Система по п.67, отличающаяся тем, что значение элемента ускорения обновляется на основании определенного количестве последовательных кодовых слов. 69. The system of claim 67, wherein the value of the acceleration element is updated based on a certain number of consecutive codewords. 70. Система по п.67, отличающаяся тем, что значение элемента ускорения обновляется на основании определенного количества чередующихся кодовых слов. 70. The system of claim 67, wherein the value of the acceleration element is updated based on a certain number of alternating code words. 71. Декодирующее устройство для декодирования множества слов с перемежением, содержащее блок оценки вероятности, отличающееся тем, что содержит сдвигающий блок для приема потока данных и выдачи надлежащим образом выравненных кодированных данных, блок декодирования длины прогона, подсоединенный к сдвигающему блоку, для приема надлежащим образом выравненных кодированных данных в качестве кодовых слов для определения типа кодового слова, при этом блок оценки вероятности подсоединен к блоку декодирования длины прогона, обеспечивающего выработку данных длины прогона и индикации появления наименее вероятного символа в ответ на каждое кодовое слово, причем сдвигающий блок содержит блок сдвига переменной длины для сдвига кодовых слов из потока данных и множество регистров, подсоединенных для приема кодовых слов из потока под действием блока сдвига, для обеспечения вывода выравненных кодированных данных в виде последовательности кодовых слов. 71. A decoding device for decoding a plurality of words interleaved, comprising a probability estimating unit, characterized in that it comprises a shifting unit for receiving a data stream and outputting properly aligned encoded data, a run length decoding unit connected to the shifting unit, for receiving properly aligned encoded data as codewords for determining the type of codeword, wherein the probability estimation unit is connected to the run length decoding unit, providing data processing of run length and indication of the appearance of the least probable symbol in response to each codeword, moreover, the shifting unit contains a variable-length shift unit for shifting codewords from the data stream and a plurality of registers connected to receive codewords from the stream under the action of the shift unit, to ensure output aligned coded data as a sequence of code words. 72. Устройство по п.71, отличающееся тем, что часть регистров подсоединена с возможностью приема данных из другого множества регистров или из потока данных. 72. The device according to p, characterized in that part of the registers is connected with the possibility of receiving data from another set of registers or from a data stream. 73. Устройство по п. 71, отличающееся тем, что блок сдвига переменной длины включает в себя многорегистровое циклическое сдвиговое устройство, предназначенное для сдвига данных из потока во множество регистров. 73. The device according to p. 71, characterized in that the variable-length shift unit includes a multi-register cyclic shift device designed to shift data from a stream into multiple registers. 74. Устройство по п.71, отличающееся тем, что сдвигающий блок содержит блок обработки данных в порядке поступления, имеющий множество регистров, каждый из которых предназначен для приема данных в качестве входного сигнала из перемежаемых кодированных данных, а по меньшей мере один из множества регистров подсоединен для приема кодовых слов из другого из упомянутого множества триггеров. 74. The device according to p, characterized in that the shifting unit contains a data processing unit in the order of arrival, having many registers, each of which is designed to receive data as an input signal from interleaved encoded data, and at least one of the many registers connected to receive codewords from another of the plurality of triggers. 75. Устройство по п.71, отличающееся тем, что сдвигающий блок содержит первое множество регистров для приема данных кодовых слов, причем каждый из множества регистров связан с соответствующим одним из множества потоков, мультиплексор, подсоединенный для приема данных кодовых слов из каждого из множества регистров в качестве входных сигналов и выдачи кодовых слов из одного из множества потоков одновременно, многорегистровое циклическое сдвиговое устройство, подсоединенное к выходу мультиплексора, для сдвига данных кодовых слов из мультиплексора для выдачи их в виде выравненных кодированных данных, логический блок, подсоединенный к многорегистровому циклическому сдвиговому устройству, для указания количества двоичных разрядов для сдвига кодового слова и блок обработки данных в порядке поступления, имеющий множество регистров, подсоединенных для приема кодовых слов из упомянутого мультиплексора, причем блок обработки данных в порядке поступления включает в себя множество регистров, каждый из которых предназначен для приема данных в качестве входного сигнала из перемежаемых кодированных данных, а по меньшей мере один из множества регистров подсоединен для приема кодовых слов из другого из упомянутого множества регистров. 75. The device according to p, characterized in that the shifting unit contains a first plurality of registers for receiving data of codewords, wherein each of the plurality of registers is associated with a respective one of the plurality of streams, a multiplexer connected to receive data of codewords from each of the plurality of registers as input signals and issuing code words from one of the many streams at the same time, a multi-register cyclic shift device connected to the output of the multiplexer for shifting data code words from the multip a lexor for outputting them in the form of aligned encoded data, a logic unit connected to a multi-register cyclic shift device for indicating the number of bits for shifting the code word and a data processing unit in the order of arrival having a plurality of registers connected to receive code words from said multiplexer, moreover, the data processing unit in the order of receipt includes many registers, each of which is designed to receive data as an input signal from zhaemyh coded data, and at least one of the plurality of registers connected to receive codewords from another of said plurality of registers. 76. Система декодирования, предназначенная для декодирования данных, содержащая декодирующие устройства и блок контекстной модели для обеспечения контекстов, отличающаяся тем, что содержит блок обработки данных в порядке поступления, подсоединенный для приема данных, запоминающее устройство, подсоединенное к блоку контекстной модели, предназначенное для запоминания информации состояний, причем запоминающее устройство обеспечивает информацию состояний соответственно каждому контексту, обеспечиваемому блоком контекстной модели, при этом множество декодирующих устройств подсоединены для приема кодированных данных из блока обработки данных в порядке поступления и из запоминающего устройства для декодирования кодовых слов, выдаваемых блоком обработки данных в порядке поступления, с использованием информации состояний из запоминающего устройства, причем множество декодирующих устройств вырабатывают отсчеты прогонов для множества кодов. 76. A decoding system for decoding data, comprising decoding devices and a context model unit for providing contexts, characterized in that it comprises a data processing unit in the order of receipt connected for receiving data, a storage device connected to the context model unit for storing state information, and the storage device provides state information corresponding to each context provided by the context model block, when this many decoding devices are connected to receive encoded data from the data processing unit in the order received and from the storage device for decoding code words issued by the data processing unit in the order received using state information from the storage device, and many decoding devices generate run counts for a plurality codes. 77. Система по п.76, отличающаяся тем, что блок обработки данных в порядке поступления предназначен для выдачи кодированных данных на множество декодирующих устройств независимо от контекста и класса вероятности. 77. The system of claim 76, wherein the data processing unit, in the order of receipt, is designed to provide encoded data to a plurality of decoding devices, regardless of context and probability class. 78. Система по п.76, отличающаяся тем, что декодирующее устройство содержит запоминающее устройство счета прогонов, предназначенное для запоминания отсчетов прогонов, причем доступ в запоминающее устройство счета прогонов осуществляется соответственно классу вероятности. 78. The system of claim 76, wherein the decoding device comprises a run count memory device for storing run counts, wherein access to the run count memory is in accordance with a probability class. 79. Система по п.76, отличающаяся тем, что блок обработки данных в порядке поступления обеспечивается данные для двух декодирующих устройств. 79. The system of claim 76, wherein the data processing unit in order of receipt provides data for two decoding devices. 80. Система по п.76, отличающаяся тем, что обработки данных в порядке поступления содержит множество выходов, по одному для каждого декодирующего устройства. 80. The system according to p, characterized in that the data processing in the order of receipt contains many outputs, one for each decoding device. 81. Система по п.80, отличающаяся тем, что блок обработки данных в порядке поступления содержит пару мультиплексоров и управляющий логический блок для выбора пары мультиплексоров для подачи кодового слова на каждое декодирующее устройство. 81. The system of claim 80, wherein the data processing unit, in the order of receipt, comprises a pair of multiplexers and a control logic unit for selecting a pair of multiplexers for supplying a codeword to each decoding device. 82. Система по п.81, отличающаяся тем, что выбор пары мультиплексоров обеспечивается управляющим логическим блоком соответственно запросам, принимаемым от одного из множества декодирующих устройств. 82. The system of claim 81, wherein the choice of a pair of multiplexers is provided by a control logic unit according to requests received from one of the plurality of decoding devices. 83. Система кодирования для кодирования входных данных, содержащая блок кодирования, подсоединенный для приема входных данных, отличающаяся тем, что блок кодирования выполнен с возможностью выработки кодированных данных в форме множества потоков, причем кодированные данные назначаются одному из множества потоков на основании ряда критериев, при этом упомянутая система содержит запоминающее устройство фиксированной емкости, подсоединенное к блоку кодирования, предназначенное для запоминания множества потоков кодированных данных, причем кодированные данные меньшей значимости отбрасываются в случае переполнения запоминающего устройства фиксированной емкости. 83. An encoding system for encoding input data, comprising an encoding unit connected to receive input data, characterized in that the encoding unit is configured to generate encoded data in the form of multiple streams, the encoded data being assigned to one of the multiple streams based on a number of criteria, with this system contains a storage device of fixed capacity connected to the encoding unit, designed to store multiple streams of encoded data, when than coded data of lesser significance are discarded in case of overflow of a fixed capacity storage device. 84. Система по п.83, отличающаяся тем, что запоминающее устройство содержит множество участков памяти, а кодированные данные, запоминаемые в каждом из множества участков памяти, включают кодированные данные определенного уровня значимости. 84. The system of claim 83, wherein the storage device comprises a plurality of memory plots, and the encoded data stored in each of the plurality of memory plots includes encoded data of a certain significance level. 85. Система по п. 84, отличающаяся тем, что в ней запоминание кодированных данных одного уровня значимости обеспечивается по меньшей мере в одном участке памяти запоминающего устройства, хранящего кодированные данные другого уровня значимости. 85. The system of claim 84, wherein the stored encoded data of one significance level is provided in at least one memory location of a storage device storing encoded data of another significance level. 86. Система по п.85, отличающаяся тем, что посредством кодированных данных упомянутого одного уровня значимости обеспечивается перезапись кодированных данных упомянутого другого уровня значимости в упомянутом по меньшей мере одном участке памяти запоминающего устройства. 86. The system of Claim 85, wherein the encoded data of said one significance level is provided to overwrite the encoded data of said other significance level in said at least one memory location of the storage device. 87. Способ инициализации множества контекстов в системе при кодировании данных, основанный на формировании контекстов и оценке вероятности контекстов, отличающийся тем, что каждый из множества контекстов выбирают на основании значения счетчика, получают состояние модуля оценки вероятности (МОВ) текущего контекста путем осуществления операций выбора индикации ячейки запоминающего устройства для каждого контекста, показывающей состояние МОВ, определения правильности выбранной ячейки памяти для текущей операции путем сравнения текущего номера контекста со значением счетчика, так что данные определяются как достоверные, если значение счетчика показывает, что ячейка уже инициализирована, использования начального состояния МОВ для контекста и отбрасывания текущего состояния МОВ для контекста, если данные выбранной ячейки памяти недостоверные, и использования текущего состояния МОВ, если упомянутые данные достоверные. 87. A method of initializing multiple contexts in the system when encoding data, based on the formation of contexts and assessing the probability of contexts, characterized in that each of the multiple contexts is selected based on the counter value, and the state of the probability estimation module (MOB) of the current context is obtained by performing indication selection operations memory cells for each context showing the state of the MOB, determining the correctness of the selected memory cell for the current operation by comparing the current about the context number with the counter value, so that the data is determined to be reliable if the counter value indicates that the cell has already been initialized, use the initial MOB state for the context and discard the current MOB state for the context if the data of the selected memory cell is invalid, and use the current MOB state if the mentioned data is reliable. 88. Способ по п.87, отличающийся тем, что дополнительно записывают новое состояние МОВ, если состояние МОВ изменилось. 88. The method according to p, characterized in that it additionally record a new state of the MOB, if the state of the MOB has changed. 89. Декодирующее устройство для декодирования входных данных, содержащее блок контекстной модели для формирования элемента контекста и генераторы последовательностей двоичных разрядов, отличающееся тем, что содержит запоминающее устройство, подсоединенное к блоку контекстной модели, для выдачи данных состояния вероятности на основании элемента контекста, логический блок, подсоединенный к запоминающему устройству, выполненный с возможностью выработки класса вероятности соответственно состоянию вероятности, декодирующий блок, подсоединенный к логическому блоку, для формирования разрешающего сигнала соответственно классу вероятности, при этом множество генераторов последовательностей двоичных разрядов подсоединены к декодирующему блоку и, кроме того, подсоединены для приема кодированных данных, каждый их множества генераторов последовательностей двоичных разрядов соответствует по меньшей мере одному определенному коду, причем декодирующий блок выполнен с возможностью запуска одного из множества генераторов последовательностей двоичных разрядов в соответствии с классом вероятности для обеспечения декодирования кодированных данных упомянутым одним из множества генераторов последовательностей двоичных разрядов. 89. A decoding device for decoding input data containing a context model block for generating a context element and binary sequence generators, characterized in that it contains a storage device connected to the context model block for generating probability state data based on the context element, a logical block, connected to a storage device, configured to generate a probability class according to a state of probability, a decoding unit, sub unified to a logic block, for generating an enable signal according to the probability class, while a plurality of binary sequence generators are connected to a decoding unit and, in addition, are connected to receive encoded data, each of their multiple binary sequence generators corresponds to at least one specific code, moreover, the decoding unit is configured to start one of the many generators of the sequences of binary digits in accordance dance with the class probability for decoding the encoded data by said one of the plurality of bits sequences generators. 90. Устройство по п.89, отличающееся тем, что по меньшей мере один из множества генераторов последовательностей двоичных разрядов выполнен с возможностью декодирования данных с использованием R-кода и по меньшей мере один из множества генераторов последовательностей двоичных разрядов выполнен с возможностью декодирования данных с использованием кода, отличного от R-кода. 90. The device according to p. 89, characterized in that at least one of the many generators of the sequences of binary digits is configured to decode data using the R-code and at least one of the many generators of sequences of binary digits is configured to decode the data using code other than the R code. 91. Устройство по п. 89, отличающееся тем, что генераторы последовательностей двоичных разрядов для коротких длин прогонов использованы в качестве декодеров R-кода. 91. The device according to p. 89, characterized in that the generators of the sequences of binary digits for short run lengths are used as decoders of the R-code. 92. Устройство по п. 89, отличающееся тем, что генераторы последовательностей двоичных разрядов для больших длин прогонов содержат блок коротких прогонов и блок длинных прогонов, причем блок коротких прогонов предназначен для манипулирования кодами первой заранее определенной длины, а блок длинных прогонов - для манипулирования любыми остальными двоичными разрядами и для определения того, какие из оставшихся двоичных разрядов, если таковые имеются, должны выводиться. 92. The device according to p. 89, characterized in that the generators of the sequences of binary digits for long runs contain a block of short runs and a block of long runs, moreover, a block of short runs is intended to manipulate the codes of the first predetermined length, and a block of long runs to manipulate any the remaining bits and to determine which of the remaining bits, if any, should be output. 93. Способ декодирования входных данных, основанный на формировании элементов контекстов и оценке состояния вероятности, отличающийся тем, что осуществляются обращение к запоминающему устройству с использованием элемента контекста для получения состояния вероятности, генерируют класс вероятности соответственно состоянию вероятности, запускают один из множества генераторов последовательностей двоичных разрядов, каждый из которых соответствует по меньшей мере одному определенному коду, в результате чего только один упомянутый из множества генераторов последовательности двоичных разрядов обеспечивает декодирование кодированных данных. 93. A method of decoding input data, based on the formation of context elements and estimation of the probability state, characterized in that the memory device is accessed using the context element to obtain the probability state, a probability class corresponding to the probability state is generated, one of the plurality of binary sequence generators is launched , each of which corresponds to at least one specific code, resulting in only one of the plural the set bits sequence generators decodes encoded data. 94. Кодирующее устройство для кодирования входных данных, содержащее блок контекстной модели для формирования элемента контекста и генераторы последовательностей двоичных разрядов, отличающееся тем, что содержит запоминающее устройство, подсоединенное к блоку контекстной модели, для выдачи данных состояния вероятности на основании элемента контекста, логический блок, подсоединенный к запоминающему устройству, выполненный с возможностью выработки класса вероятности соответственно состоянию вероятности, кодирующий блок, подсоединенный к логическому блоку для формирования запускающего сигнала соответственно классу вероятности, при этом множество генераторов последовательностей двоичных разрядов подсоединены к кодирующему блоку и, кроме того, подсоединены для приема входных данных, каждый из множества генераторов последовательностей двоичных разрядов, соответствует по меньшей мере одному определенному коду, причем кодирующий блок выполнен с возможностью запуска одного из множества генераторов последовательностей двоичных разрядов в соответствии с классом вероятности для обеспечения кодирования входных данных одним из множества генераторов последовательности двоичных разрядов. 94. An encoding device for encoding input data containing a context model block for generating a context element and binary sequence generators, characterized in that it comprises a storage device connected to the context model block for generating probability state data based on the context element, a logical block, connected to a storage device, configured to generate a probability class according to a probability state, an encoding unit is connected which is connected to a logic block for generating a trigger signal according to the probability class, while many generators of binary sequences are connected to the encoding block and, in addition, are connected to receive input data, each of the many generators of binary sequences corresponds to at least one specific code, moreover, the encoding unit is configured to start one of the many generators of the sequences of binary digits in accordance with the class digits for providing input data encoding by one of a plurality of binary sequence generators. 95. Устройство по п.94, отличающееся тем, что по меньшей мере один из множества генераторов последовательностей двоичных разрядов выполнен с возможностью кодирования данных с использованием R-кода и по меньшей мере один из множества генераторов последовательностей двоичных разрядов выполнен с возможностью кодирования данных с использованием кода, отличного от R-кода. 95. The device according to clause 94, wherein at least one of the plurality of binary sequence generators is configured to encode data using an R code, and at least one of the plurality of binary sequence generators is configured to encode data using code other than the R code. 96. Устройство по п. 94, отличающееся тем, что генераторы последовательностей двоичных разрядов для малых длин прогонов использованы в качестве кодирующих устройство R-кода. 96. The device according to p. 94, characterized in that the generators of the sequences of binary digits for short runs are used as encoding the device R-code. 97. Устройство по п. 94, отличающееся тем, что генераторы последовательностей двоичных разрядов для больших длин прогонов содержат блок коротких прогонов и блок длинных прогонов, причем блок коротких прогонов предназначен для манипулирования кодами первой заранее установленной длины, а блок длинных прогонов предназначен для манипулирования любыми оставшимися двоичными разрядами и определения того, которые из оставшихся двоичных разрядов, если таковые имеются, должны выводиться. 97. The device according to p. 94, characterized in that the generators of the sequences of binary digits for long runs contain a block of short runs and a block of long runs, and the block of short runs is designed to manipulate the codes of the first predetermined length, and the block of long runs is designed to manipulate any the remaining binary bits and determining which of the remaining binary bits, if any, should be deduced. 98. Способ кодирования входных данных, основанный на формировании элементов контекста и оценке состояния вероятности, отличающийся тем, что осуществляют обращение к запоминающему устройству с использованием элемента контекста для получения состояния вероятности, генерируют класс вероятности соответственно состоянию вероятности, запускают один из множества генераторов последовательностей двоичных разрядов, каждый из которых соответствует по меньшей мере одному определенному коду, в результате чего упомянутый один из множества генераторов последовательности двоичных разрядов обеспечивает кодирование входных данных. 98. A method of encoding input data, based on the formation of context elements and the estimation of the probability state, characterized in that they access the storage device using the context element to obtain the probability state, generate a probability class according to the probability state, start one of the set of binary sequence generators each of which corresponds to at least one specific code, resulting in the said one of the many gene Ator sequence of bits encodes the input data. 99. Способ декодирования кодированных данных, содержащих множество кодовых слов, основанный на использовании генераторов последовательностей двоичных разрядов, отличающийся тем, что загружают значение счета в счетчик, связанный с каждым счетчиком прогонов, при этом значение счета соответствует емкости запоминающего устройства кодовых слов, используемого при кодировании при запуске нового прогона, причем упомянутое значение счета загружают при выборке нового кодового слова для упомянутого каждого счетчика прогонов, осуществляют отрицательное приращение значения счета каждый раз при выборке любого кодового слова и очищают состояние генератора последовательности двоичных разрядов, связанное с упомянутым новым кодовым словом, когда значение счетчика уменьшается до нуля. 99. A method for decoding encoded data containing a plurality of codewords, based on the use of binary sequence generators, characterized in that the count value is loaded into the counter associated with each run counter, the count value corresponding to the capacity of the codeword memory used in the encoding when starting a new run, and the said count value is loaded when selecting a new code word for each run counter, negative a substantial increment of the count value each time when sampling any codeword, and clear the state of the binary sequence generator associated with the aforementioned new codeword when the counter value is reduced to zero. 100. Способ по п.99, отличающийся тем, что каждый счетчик прогонов соответствует состоянию МОВ. 100. The method according to p. 99, characterized in that each run counter corresponds to the state of the MOU. 101. Способ по п.99, отличающийся тем, что каждый счетчик прогонов соответствует элементу контекста. 101. The method according to claim 99, wherein each run counter corresponds to a context element. 102. Способ декодирования кодированных данных, содержащих множество кодовых слов, основанный на использовании генераторов последовательностей двоичных разрядов, отличающийся тем, что осуществляют положительное приращение значения счетчика каждый раз, когда запрашивается кодовое слово, причем значение счетчика содержит в себе индикацию текущего времени, запоминают значения счетчика в качестве индикации запомненного времени при запуске первого кодового слова, сравнивают индикацию запомненного времени плюс емкость памяти кодирующего устройства с индикацией текущего времени, очищают состояние генератора последовательности двоичных разрядов для первого кодового слова и запрашивают второе кодовое слово, когда индикация текущего времени больше индикации запомненного времени плюс емкость памяти кодирующего устройства. 102. A method for decoding encoded data containing a plurality of code words, based on the use of binary sequence generators, characterized in that the counter value is incremented each time a code word is requested, the counter value comprising an indication of the current time, the counter values are stored as an indication of the stored time when starting the first codeword, compare the indication of the stored time plus the memory capacity of the coding devices with an indication of the current time, clear the state of the binary sequence generator for the first codeword and request a second codeword when the indication of the current time is greater than the indication of the stored time plus the memory capacity of the encoder. 103. Способ по п.102, отличающийся тем, что индикация запомненного времени содержит временную метку. 103. The method according to p. 102, characterized in that the indication of the stored time contains a time stamp. 104. Способ по п.102, отличающийся тем, что дополнительно содержит повторное использование индикации запомненного времени для последующего кодового слова. 104. The method according to p. 102, characterized in that it further comprises the reuse of the indication of the stored time for the subsequent code word. 105. Способ декодирования кодированных данных, содержащих множество кодовых слов, основанный на использовании генераторов последовательностей двоичных разрядов, отличающийся тем, что запоминают индекс, соответствующий кодовому слову, причем индекс запоминают в очереди при запросе кодового слова, маркируют содержимое индекса в очереди как недостоверное, запоминают кодовое слово в содержимом и маркируют содержимое как достоверно по окончании кодового слова, выводят подлежащие декодированию данные из очереди, причем кодовое слово выводят для декодирования, если содержимое в очереди достоверное, и выводят данные из содержимого очереди и указывают данные декодирующему устройству как недостоверные, если содержимое очереди маркировано как недостоверное при выводе данных из очереди, причем информацию состояния генератора последовательности двоичных разрядов очищают декодирующим устройством в ответ на прием данных из очереди, маркированных как недостоверные. 105. A method for decoding encoded data containing a plurality of code words, based on the use of binary sequence generators, characterized in that the index corresponding to the code word is stored, the index being stored in the queue when the code word is requested, the contents of the index in the queue are marked as invalid, stored the codeword in the content and mark the content as valid at the end of the codeword, output the data to be decoded from the queue, the codeword output t for decoding, if the contents of the queue are valid, and the data is output from the contents of the queue and the data is indicated to the decoding device as invalid if the contents of the queue are marked as invalid when outputting data from the queue, and the state information of the binary sequence generator is cleared by the decoding device in response to reception data from the queue marked as invalid. 106. Декодирующее устройство для декодирования кодированных данных, содержащее блок моделирования контекста для формирования контекстов, содержащий множество интегральных схем, отличающееся тем, что содержит запоминающее устройство, подсоединенное к блоку моделирования контекста для запоминания информации состояния, причем запоминающее устройство предназначено для выдачи информации состояния в ответ на каждый контекст блока моделирования контекста, множество декодирующих блоков, подсоединенных к запоминающему устройству и предназначенных для декодирования кодовых слов с использованием информации состояния из запоминающего устройства, причем множество декодирующих блоков обеспечивают декодирование кодовых слов с использованием множества R-кодов, включающего в себя по меньшей мере один прогон не максимальной длины наиболее вероятных символов, за которыми не следует наименее вероятный символ. 106. A decoding device for decoding encoded data, comprising a context modeling unit for creating contexts, comprising a plurality of integrated circuits, characterized in that it comprises a storage device connected to a context modeling unit for storing state information, the storage device being adapted to provide state information in response for each context of the context modeling unit, a plurality of decoding units connected to the storage device and started for decoding codewords using state information from a storage device, the plurality of decoding blocks providing decoding of codewords using a plurality of R-codes, including at least one run of not the maximum length of the most probable characters, followed by the least probable character . 107. Устройство по п.106, отличающееся тем, что счеты прогонов не максимальной длины имеют уникальную декодируемую приставку. 107. The device according to p. 106, characterized in that the scores of the runs are not the maximum length have a unique decoded prefix. 108. Система декодирования кодового потока, имеющего множество кодовых слов, содержащая блок моделирования контекста, для формирования контекстов, содержащий множество интегральных схем, отличающаяся тем, что содержит запоминающее устройство, подсоединенное к блоку моделирования контекста для запоминания информации состояния и выдачи информации состояния в ответ на каждый контекст блока моделирования контекста, и множество декодирующих устройств, подсоединенных к запоминающему устройству, для декодирования кодовых слов с использованием информации состояния из запоминающего устройства. 108. A system for decoding a code stream having a plurality of codewords containing a context modeling unit for generating contexts containing a plurality of integrated circuits, characterized in that it comprises a storage device connected to the context modeling unit for storing state information and outputting state information in response to each context of the context modeling unit, and a plurality of decoding devices connected to the storage device for decoding codewords using retrieving status information from the storage device. 109. Система по п. 108, отличающаяся тем, что блок моделирования контекста содержит по меньшей мере одну контекстную модель, обеспечивающую контексты с одной из множества интегральных схем, и по меньшей мере одну контекстную модель, обеспечивающую контексты с второй из множества интегральных схем. 109. The system of claim 108, wherein the context modeling unit comprises at least one context model providing contexts with one of a plurality of integrated circuits, and at least one context model providing contexts with a second of a plurality of integrated circuits. 110. Система по п.109, отличающаяся тем, что упомянутая по меньшей мере одна контекстная модель на упомянутой одной из множества интегральных схем содержит контекстную модель нулевого порядка. 110. The system of claim 109, wherein said at least one context model on said one of a plurality of integrated circuits comprises a zero order context model. 111. Система по п.108, отличающаяся тем, что контексты из множества интегральных схем предназначены для выдачи непосредственно в запоминающее устройство. 111. The system of claim 108, wherein the contexts of the plurality of integrated circuits are intended to be output directly to the storage device. 112. Система по п.108, отличающаяся тем, что формирование первой части первого контекста обеспечивается одной интегральной схемой, а формирование второй части первого контекста обеспечивается второй интегральной схемой. 112. The system of claim 108, wherein the formation of the first part of the first context is provided by one integrated circuit, and the formation of the second part of the first context is provided by the second integrated circuit. 113. Система по п.17, отличающаяся тем, что генератор последовательности двоичных разрядов выполнен с возможностью обновления состояния, причем генератор последовательности двоичных разрядов повторно используется перед записью обновленного состояния в память. 113. The system according to 17, characterized in that the binary sequence generator is configured to update the state, and the binary sequence generator is reused before writing the updated status to the memory. 114. Система по п.113, отличающаяся тем, что генератор последовательности двоичных разрядов выполнен с возможностью повторного использования на стадии модификации цикла считывания - модификации - записи. 114. The system according to p. 113, characterized in that the binary sequence generator is configured to be reused at the stage of modification of the read-modify-write cycle. 115. Система по п.17, отличающаяся тем, что генератор последовательности двоичных разрядов выполнен с возможностью выработки счета прогонов не минимальной длины при повторном использовании перед записью обновленного состояния в память. 115. The system according to 17, characterized in that the binary sequence generator is configured to generate a run count of a minimum length when reused before writing the updated state to the memory. 116. Система по п.17, отличающаяся тем, что генератор последовательности двоичных разрядов предназначен для кодирования с использованием R-кодов, определяемых так, что после каждой длины прогона следует по меньшей мере один некодированный двоичный разряд, так что два кодовых слова одной и той же длины прогона никогда не декодируются рядом. 116. The system according to 17, characterized in that the binary sequence generator is intended to be encoded using R codes, defined so that after each run length at least one non-encoded binary bit follows, so that two codewords of the same run lengths are never decoded side by side. 117. Система декодирования кодового потока, имеющего множество кодовых слов, содержащая блок моделирования контекста для формирования контекстов, отличающаяся тем, что содержит запоминающее устройство, подсоединенное к блоку моделирования контекста, для запоминания информации состояния и выдачи информации состояния в ответ на каждый контекст блока моделирования контекста, и множество декодирующих устройств, подсоединенных к запоминающему устройству, для декодирования кодовых слов с использованием информации состояния из запоминающего устройства, причем по меньшей мере одно из множества декодирующих устройств содержит декодер допустимой задержки. 117. A system for decoding a code stream having a plurality of code words, comprising a context modeling unit for creating contexts, characterized in that it comprises a storage device connected to the context modeling unit for storing state information and outputting state information in response to each context of the context modeling unit , and a plurality of decoding devices connected to the storage device for decoding codewords using the state information from the storage second device, wherein at least one of the plurality of decoders includes a decoder permissible delay. 118. Система по п. 115, отличающаяся тем, что по меньшей мере одно из множества декодирующих устройств выполнено с возможностью осуществления сдвига переменной длины на основании декодированных данных, формируемого после задержки. 118. The system of claim 115, wherein at least one of the plurality of decoding devices is configured to shift a variable length based on decoded data generated after the delay. 119. Система по п.117, отличающаяся тем, что каждое из множества декодирующих устройств в качестве входного сигнала использует данные переменной длины. 119. The system of claim 117, wherein each of the plurality of decoding devices uses variable-length data as an input signal. 120. Система по п.119, отличающаяся тем, что множество декодирующих устройств предназначены для параллельного декодирования входных данных переменной длины. 120. The system according to p, characterized in that many decoding devices are designed for parallel decoding of input data of variable length. 121. Система по п.117, отличающаяся тем, что выходной сигнал множества декодирующих устройств разделен на слова с перемежением, имеющие фиксированную длину. 121. The system of claim 117, wherein the output signal of the plurality of decoding devices is divided into interleaved words having a fixed length.
RU95116587A 1994-09-30 1995-09-29 Data coding and decoding method and device RU2117388C1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US31611694A 1994-09-30 1994-09-30
US08/316,116 1994-09-30

Publications (2)

Publication Number Publication Date
RU95116587A RU95116587A (en) 1997-11-10
RU2117388C1 true RU2117388C1 (en) 1998-08-10

Family

ID=23227538

Family Applications (1)

Application Number Title Priority Date Filing Date
RU95116587A RU2117388C1 (en) 1994-09-30 1995-09-29 Data coding and decoding method and device

Country Status (10)

Country Link
JP (1) JP3272580B2 (en)
KR (1) KR100240372B1 (en)
CN (1) CN1136659C (en)
CA (1) CA2156889C (en)
DE (1) DE19536401B4 (en)
FR (1) FR2725330B1 (en)
GB (1) GB2293735B (en)
NL (1) NL1001317C2 (en)
RU (1) RU2117388C1 (en)
TW (1) TW410311B (en)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788106B2 (en) 2005-04-13 2010-08-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Entropy coding with compact codebooks
US7991610B2 (en) 2005-04-13 2011-08-02 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Adaptive grouping of parameters for enhanced coding efficiency
US8300966B2 (en) 2006-11-14 2012-10-30 Nippon Telegraph And Telephone Corporation Image signal encoding method and decoding method, information source encoding method and decoding method, apparatuses therefor, programs therefor, and storage media which store the programs to process gaussian integer signal
US8325819B2 (en) 2006-10-12 2012-12-04 Qualcomm Incorporated Variable length coding table selection based on video block type for refinement coefficient coding
RU2470481C2 (en) * 2005-12-07 2012-12-20 Майкрософт Корпорейшн Feedback and framing between media coders and decoders
RU2487395C2 (en) * 2003-06-25 2013-07-10 Майкрософт Корпорейшн Media processor for organising multimedia data
RU2493651C2 (en) * 2008-07-11 2013-09-20 Фраунхофер-Гезелльшафт Цур Фердерунг Дер Ангевандтен Форшунг Е.Ф. Method of encoding symbols, method of decoding symbols, method of transmitting symbols from transmitter to receiver, encoder, decoder and system for transmitting symbols from transmitter to receiver
US8565314B2 (en) 2006-10-12 2013-10-22 Qualcomm Incorporated Variable length coding table selection based on block type statistics for refinement coefficient coding
US8599926B2 (en) 2006-10-12 2013-12-03 Qualcomm Incorporated Combined run-length coding of refinement and significant coefficients in scalable video coding enhancement layers
US8769686B2 (en) 2010-02-26 2014-07-01 Futurewei Technologies, Inc. System and method for securing wireless transmissions
RU2556465C2 (en) * 2010-10-01 2015-07-10 Квэлкомм Инкорпорейтед Entropy coding coefficients using joint context model
RU2580066C2 (en) * 2011-06-03 2016-04-10 Квэлкомм Инкорпорейтед Memory efficient context modelling
US9319700B2 (en) 2006-10-12 2016-04-19 Qualcomm Incorporated Refinement coefficient coding based on history of corresponding transform coefficient values
US9432696B2 (en) 2014-03-17 2016-08-30 Qualcomm Incorporated Systems and methods for low complexity forward transforms using zeroed-out coefficients
US9516345B2 (en) 2014-03-17 2016-12-06 Qualcomm Incorporated Systems and methods for low complexity forward transforms using mesh-based calculations
RU2608464C2 (en) * 2012-09-28 2017-01-18 Телефонактиеболагет Лм Эрикссон (Пабл) Device, method and network server for detecting data structures in data stream
RU2612597C1 (en) * 2013-06-28 2017-03-09 Интел Корпорейшн Processors, methods, systems and commands with packed data elements predication
RU2693651C1 (en) * 2009-05-29 2019-07-03 Мицубиси Электрик Корпорейшн Image encoding device, image decoding device, image encoding method and image decoding method
RU2709656C2 (en) * 2015-06-10 2019-12-19 Гурулоджик Микросистемс Ой Encoder, decoder and method using modal symbols
RU2765993C2 (en) * 2017-06-15 2022-02-07 Сони Корпорейшн Transmission device, receiving device, transmission method, receiving method and information carrier

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2311705B (en) * 1995-08-31 1998-04-15 Ricoh Kk Method and apparatus for compressing arbitrary data
US5654703A (en) * 1996-06-17 1997-08-05 Hewlett-Packard Company Parallel data compression and decompression
US5963716A (en) * 1996-12-02 1999-10-05 Hewlett-Packard Company Bi-directional data stream decompression
US6222468B1 (en) * 1998-06-04 2001-04-24 Ricoh Company, Ltd. Adaptive coding with adaptive speed
KR100921033B1 (en) 2001-11-22 2009-10-08 파나소닉 주식회사 A method for coding a coefficients of an uncoded frequency component
KR20040098060A (en) * 2002-04-08 2004-11-18 가부시키가이샤 에이팅구 Network game method, network game terminal, and server
US7346832B2 (en) * 2004-07-21 2008-03-18 Qualcomm Incorporated LDPC encoding methods and apparatus
US7395490B2 (en) * 2004-07-21 2008-07-01 Qualcomm Incorporated LDPC decoding methods and apparatus
KR100818268B1 (en) * 2005-04-14 2008-04-02 삼성전자주식회사 Apparatus and method for audio encoding/decoding with scalability
KR100717587B1 (en) * 2006-07-05 2007-05-15 주식회사 대우일렉트로닉스 Method and apparatus for detecting optical information and optical information processing apparatus
CN101247496B (en) * 2007-02-13 2012-10-10 华晶科技股份有限公司 Method for dynamically regulating image frame
KR100842042B1 (en) 2007-07-16 2008-06-30 충남대학교산학협력단 A method for code-blocks encryption which enables dynamic decryption of encrypted executable code
CN102055483B (en) * 2009-10-29 2013-05-08 鸿富锦精密工业(深圳)有限公司 Entropy decoding device
KR101631944B1 (en) 2009-10-30 2016-06-20 삼성전자주식회사 Method and apparatus for entropy encoding and entropy decoding for accelarting video decoding
EP2362657B1 (en) * 2010-02-18 2013-04-24 Research In Motion Limited Parallel entropy coding and decoding methods and devices
CN103119849B (en) * 2010-04-13 2017-06-16 弗劳恩霍夫应用研究促进协会 Probability interval partition encoding device and decoder
US8761240B2 (en) * 2010-07-13 2014-06-24 Blackberry Limited Methods and devices for data compression using context-based coding order
KR101676477B1 (en) * 2010-07-21 2016-11-15 삼성전자주식회사 Method and apparatus lossless encoding and decoding based on context
US8650456B2 (en) * 2010-09-08 2014-02-11 Marvell World Trade Ltd. Decoder based data recovery
CN102457284B (en) * 2010-10-29 2014-09-03 池勇潮 Digital data compression/decompression method and system
JP5570437B2 (en) * 2011-01-12 2014-08-13 三菱電機株式会社 Entropy encoding device, entropy decoding device, entropy encoding method, and entropy decoding method
PL2768145T3 (en) 2011-01-14 2016-07-29 Ge Video Compression Llc Entropy encoding and decoding scheme
EP2764692B1 (en) * 2011-10-06 2020-08-26 Fraunhofer Gesellschaft zur Förderung der angewandten Forschung e.V. Entropy coding buffer arrangement
JP2013214832A (en) * 2012-03-30 2013-10-17 Fujitsu Ltd Compression and decompression system, compression device, decompression device, compression and decompression method, and compression program and decompression program
CN105828083A (en) * 2015-01-06 2016-08-03 中兴通讯股份有限公司 Method and device for decoding data streams
WO2017193281A1 (en) 2016-05-10 2017-11-16 华为技术有限公司 Data transmission method, data receiving method, transmission apparatus, and receiving apparatus
WO2017197358A1 (en) * 2016-05-13 2017-11-16 Intel Corporation Polar code construction and encoding
CN107623524B (en) * 2017-07-01 2020-07-31 中山大学 Hardware-based Huffman coding method and system
CN111384963B (en) * 2018-12-28 2022-07-12 上海寒武纪信息科技有限公司 Data compression/decompression device and data decompression method
US11184021B2 (en) 2019-03-15 2021-11-23 Samsung Electronics Co., Ltd. Using predicates in conditional transcoder for column store
TWI825305B (en) * 2019-04-16 2023-12-11 南韓商三星電子股份有限公司 Transcoder and method and article for transcoding
CN110635807B (en) * 2019-08-05 2022-10-21 湖南遥昇通信技术有限公司 Data coding method and decoding method
CN112383313B (en) * 2020-10-10 2023-08-04 中科驭数(北京)科技有限公司 Parallel data decoding device and method

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3394352A (en) * 1965-07-22 1968-07-23 Electronic Image Systems Corp Method of and apparatus for code communication
CA1291820C (en) * 1986-09-15 1991-11-05 William B. Pennebaker Probability estimation based on decision history
CA1291821C (en) * 1986-09-15 1991-11-05 Glen G. Langdon, Jr. Arithmetic coding encoder and decoder system
US5097261A (en) * 1989-11-22 1992-03-17 International Business Machines Corporation Data compression for recording on a record medium
EP0442548B1 (en) * 1990-01-30 1995-08-02 Laboratoires D'electronique Philips S.A.S. Variable length coding and decoding devices for digital data
US5045852A (en) * 1990-03-30 1991-09-03 International Business Machines Corporation Dynamic model selection during data compression
KR950000286B1 (en) * 1992-05-28 1995-01-12 삼성전자 주식회사 Coding device and method for fax
US5475388A (en) * 1992-08-17 1995-12-12 Ricoh Corporation Method and apparatus for using finite state machines to perform channel modulation and error correction and entropy coding
US5272478A (en) * 1992-08-17 1993-12-21 Ricoh Corporation Method and apparatus for entropy coding
GB2272612B (en) * 1992-11-06 1996-05-01 Roke Manor Research Improvements in or relating to ATM signal processors
KR0134166B1 (en) * 1992-11-24 1998-04-22 모리시타 요이찌 Video signal recording apparatus and method thereof
US5381145A (en) * 1993-02-10 1995-01-10 Ricoh Corporation Method and apparatus for parallel decoding and encoding of data
US5583500A (en) * 1993-02-10 1996-12-10 Ricoh Corporation Method and apparatus for parallel encoding and decoding of data
US5414423A (en) * 1993-04-29 1995-05-09 International Business Machines Corporation Stabilization of probability estimates by conditioning on prior decisions of a given context

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2487395C2 (en) * 2003-06-25 2013-07-10 Майкрософт Корпорейшн Media processor for organising multimedia data
US9043200B2 (en) 2005-04-13 2015-05-26 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Adaptive grouping of parameters for enhanced coding efficiency
US7991610B2 (en) 2005-04-13 2011-08-02 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Adaptive grouping of parameters for enhanced coding efficiency
US7788106B2 (en) 2005-04-13 2010-08-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Entropy coding with compact codebooks
RU2470481C2 (en) * 2005-12-07 2012-12-20 Майкрософт Корпорейшн Feedback and framing between media coders and decoders
US8325819B2 (en) 2006-10-12 2012-12-04 Qualcomm Incorporated Variable length coding table selection based on video block type for refinement coefficient coding
US9319700B2 (en) 2006-10-12 2016-04-19 Qualcomm Incorporated Refinement coefficient coding based on history of corresponding transform coefficient values
US8565314B2 (en) 2006-10-12 2013-10-22 Qualcomm Incorporated Variable length coding table selection based on block type statistics for refinement coefficient coding
US8599926B2 (en) 2006-10-12 2013-12-03 Qualcomm Incorporated Combined run-length coding of refinement and significant coefficients in scalable video coding enhancement layers
US8300966B2 (en) 2006-11-14 2012-10-30 Nippon Telegraph And Telephone Corporation Image signal encoding method and decoding method, information source encoding method and decoding method, apparatuses therefor, programs therefor, and storage media which store the programs to process gaussian integer signal
RU2493651C2 (en) * 2008-07-11 2013-09-20 Фраунхофер-Гезелльшафт Цур Фердерунг Дер Ангевандтен Форшунг Е.Ф. Method of encoding symbols, method of decoding symbols, method of transmitting symbols from transmitter to receiver, encoder, decoder and system for transmitting symbols from transmitter to receiver
RU2693651C1 (en) * 2009-05-29 2019-07-03 Мицубиси Электрик Корпорейшн Image encoding device, image decoding device, image encoding method and image decoding method
US8769686B2 (en) 2010-02-26 2014-07-01 Futurewei Technologies, Inc. System and method for securing wireless transmissions
RU2556465C2 (en) * 2010-10-01 2015-07-10 Квэлкомм Инкорпорейтед Entropy coding coefficients using joint context model
RU2580066C2 (en) * 2011-06-03 2016-04-10 Квэлкомм Инкорпорейтед Memory efficient context modelling
RU2608464C2 (en) * 2012-09-28 2017-01-18 Телефонактиеболагет Лм Эрикссон (Пабл) Device, method and network server for detecting data structures in data stream
US9870502B2 (en) 2012-09-28 2018-01-16 Telefonaktiebolaget Lm Ericsson (Publ) Apparatus for, a method of, and a network server for detecting data patterns in a data stream
RU2612597C1 (en) * 2013-06-28 2017-03-09 Интел Корпорейшн Processors, methods, systems and commands with packed data elements predication
US9990202B2 (en) 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US10430193B2 (en) 2013-06-28 2019-10-01 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US10963257B2 (en) 2013-06-28 2021-03-30 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US11442734B2 (en) 2013-06-28 2022-09-13 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US9516345B2 (en) 2014-03-17 2016-12-06 Qualcomm Incorporated Systems and methods for low complexity forward transforms using mesh-based calculations
US9432696B2 (en) 2014-03-17 2016-08-30 Qualcomm Incorporated Systems and methods for low complexity forward transforms using zeroed-out coefficients
RU2709656C2 (en) * 2015-06-10 2019-12-19 Гурулоджик Микросистемс Ой Encoder, decoder and method using modal symbols
RU2765993C2 (en) * 2017-06-15 2022-02-07 Сони Корпорейшн Transmission device, receiving device, transmission method, receiving method and information carrier
US11297630B2 (en) 2017-06-15 2022-04-05 Sony Corporation Transmission apparatus, reception apparatus, transmission method, reception method, and recording medium

Also Published As

Publication number Publication date
DE19536401B4 (en) 2006-07-20
GB2293735B (en) 1997-10-22
GB9518375D0 (en) 1995-11-08
FR2725330B1 (en) 1999-01-22
CA2156889C (en) 1999-11-02
KR960012741A (en) 1996-04-20
FR2725330A1 (en) 1996-04-05
NL1001317A1 (en) 1996-04-01
JP3272580B2 (en) 2002-04-08
KR100240372B1 (en) 2000-01-15
CN1133512A (en) 1996-10-16
TW410311B (en) 2000-11-01
CN1136659C (en) 2004-01-28
NL1001317C2 (en) 1998-01-21
DE19536401A1 (en) 1996-04-04
GB2293735A (en) 1996-04-03
CA2156889A1 (en) 1996-03-31
JPH08116266A (en) 1996-05-07

Similar Documents

Publication Publication Date Title
RU2117388C1 (en) Data coding and decoding method and device
US5717394A (en) Method and apparatus for encoding and decoding data
US5583500A (en) Method and apparatus for parallel encoding and decoding of data
JP3238143B2 (en) Data compression apparatus and method
US5659631A (en) Data compression for indexed color image data
US6819271B2 (en) Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6885319B2 (en) System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US5710562A (en) Method and apparatus for compressing arbitrary data
US5381145A (en) Method and apparatus for parallel decoding and encoding of data
US5150430A (en) Lossless data compression circuit and method
US6829695B1 (en) Enhanced boolean processor with parallel input
US5410671A (en) Data compression/decompression processor
CN114556956A (en) Low latency encoding using bypass sub-streams and entropy encoded sub-streams
RU95116587A (en) METHOD AND DEVICE FOR DATA CODING AND DECODING
EP0443255A2 (en) Method and apparatus for carrying-over control in arithmetic entropy coding
GB2306279A (en) Apparatus for decoding data
US6507877B1 (en) Asynchronous concurrent dual-stream FIFO
US5058137A (en) Lempel-Ziv decoder
US10340945B2 (en) Memory compression method and apparatus
US6621428B1 (en) Entropy codec for fast data compression and decompression
US5488366A (en) Segmented variable length decoding apparatus for sequentially decoding single code-word within a fixed number of decoding cycles
JP3230933B2 (en) Data decompression device, data decompression method, decoding device, decoding method, encoding device, and entropy decoder
CN1430746A (en) Apparatus having cache for storing and providing decoded information and method of doing the same
US5657016A (en) Variable length decoder with one of N length indicator
CA2273144C (en) Apparatus and system for decoding data

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20080930