RU2117388C1 - Data coding and decoding method and device - Google Patents
Data coding and decoding method and device Download PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/436—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Abstract
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
Для декодирования КМ 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
В одном варианте осуществления изобретения каждый из декодирующих блоков 205A, 205B, 205C и т.д. обеспечивается данными для группы контекстов. Каждый из декодирующих блоков в декодирующем устройстве 205 обеспечивается кодированными данными для каждого контекстного элемента дискретизации в его группе контекстов из входного буфера 204. Используя эти данные, каждый декодирующий блок 205A, 205B, 205C и т.д. формирует декодированные данные для его группы контекстных элементов. Контекстная модель не требуется для связывания кодированных данных с конкретной группой контекстных элементов. In one embodiment, each of the
Декодирующее устройство 205 посылает декодированные данные в накопитель декодированных данных 207 (например, 207A, 207B, 207C и т.д.). Отметим, что накопитель декодированных данных 207 может хранить промежуточные данные, которые не являются ни кодированными, ни некодированными, типа счетов прогонов. В этом случае накопитель декодированных данных 207 запоминает данные в сжатой, но не в закодированной статистическим кодом форме. The
Работая независимо, контекстная модель 206 подсоединена для приема ранее декодированных данных из накопителя декодированных данных 207 (то есть 207A, 207B, 207C и т.д.) в ответ на сигналы обратной связи, которые она посылает в накопитель декодированных данных 207. Поэтому существуют две независимые цепи обратной связи; одна между декодирующим устройством 205 и входным буфером 204, а вторая между контекстной моделью 206 и накопителем декодированных данных 207. Поскольку большая цепь обратной связи устранена, декодеры в декодирующем устройстве 205 (например, 205A, 205B, 205C и т.д.) способны декодировать связанные с ними кодовые слова, как только они принимают их из входного буфера 204. Operating independently, the
Контекстная модель обеспечивает участок памяти системы кодирования и делит набор данных (например, изображения) на различные категории (например, контекстные элементы кодирования данных) на основе запоминающего устройства. В настоящем изобретении контекстные элементы считаются независимыми упорядоченными наборами данных. В одном варианте осуществления каждая группа контекстных элементов кодированных данных имеет свою собственную модель оценки вероятности, а каждый контекстный элемент имеет свое собственное состояние (где модели оценки вероятности разделяются). Следовательно, каждый контекстный элемент кодированных данных может использовать иную модель оценки вероятности и/или генератор последовательности двоичных разрядов. 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.
КМ 214 делит поток данных на разные контексты таким же образом, как обычная КМ, и посылает множество потоков в параллельные аппаратные средства кодирования. Отдельные контексты или группы контекстов направляются в раздельные модули оценки вероятности (МОВ) 215-217 и генераторы последовательности бит (ГПБ) 218-219. Каждый из ГПБ 218-220 дает на выходе поток кодированных данных.
На фиг. 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
Показанная на фиг.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,
Для соответствующих настоящему изобретению параллельных систем декодирования существуют многочисленные реализации. В одном варианте осуществления потоки кодированных данных, соответствующие многочисленным контекстным элементам кодированных данных, могут перемежаться в один поток, упорядоченный запросами различных кодеров. В одном варианте осуществления настоящего изобретения кодированные данные упорядочиваются таким образом, что каждый кодер постоянно получает данные, даже если кодированные данные подаются на декодер в одном потоке. Следует отметить, что настоящее изобретение оперирует со всеми типами данных, включая видеоданные. 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
В другом варианте осуществления изобретения порядок, в котором последующий набор перемежаемых слов (например, кодовое слово, начинающееся с кодового слова 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
Использование действительного декодера в качестве разработчика модели для потока данных учитывает все варианты построения и задержки при создании перемежаемого потока. Это не приводит к увеличению стоимости дуплексных систем, имеющих как кодирующие, так и декодирующие устройства. Следует отметить, что это можно обобщить для любого параллельного набора информационных слов переменной длины (или разных размеров), которые употребляются в детерминированном порядке. 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
При декодировании, если первый двоичный разряд в кодовом потоке представляет собой 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
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
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
Модель оценки вероятности, используемая Лангдоном, исследует первый двоичный разряд каждого кодового слова для определения, выше или ниже вероятность источника текущей оценки (см. работу Дж.Дж.Лангдона "Адаптивный алгоритм кодирования длины прогона", Бюллетень технических открытий 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,
Настоящее изобретение позволяет получить более сложную оценку вероятности, чем простое увеличение или уменьшение к на 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
Следует отметить, что для более низких вероятностей включено больше состояний с одним и тем же 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
Если таблица состояний симметричная, как показанная на фиг.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
Кодирующее устройство 602 включает в себя контекстную модель (КМ), механизм оценки вероятности (MOB) и генератор последовательности бит (ГПБ). Контекстная модель и MOB (механизм оценки вероятности) в кодирующем устройстве 602 по существу идентичны элементам в декодирующем устройстве (за исключением направления потока данных). Генератор двоичных разрядов кодирующего устройства 602 аналогичен генератору двоичных разрядов декодирующего устройства и описывается ниже. Результат кодирования кодирующим устройством 602 представляет собой выходной сигнал из нуля или более двоичных разрядов, которые отображают исходные данные. В одном варианте осуществления изобретения выходной сигнал генератора последовательности бит, кроме того, включает в себя один или больше управляющих сигналов. Эти управляющие сигналы обеспечивают цепь управляющего воздействия на данные в последовательности двоичных разрядов. В одном варианте осуществления изобретения информация кодовых слов может содержать в себе индикацию начала прогона и индикацию окончания прогона, кодовое слово и индекс, идентифицирующий счет прогонов (как относящихся к контексту или к классу вероятности) для кодового слова. Ниже описан один вариант осуществления соответствующего настоящему изобретению генератора последовательности бит.
Переупорядочивающий блок 606 принимает двоичные разряды и управляющие сигналы, вырабатываемые генератором последовательности бит (если он вообще имеется) кодера 602, и вырабатывает кодированные данные. В одном варианте осуществления изобретения выходные кодированные данные переупорядочивающего блока 606 содержат в себе поток слов с чередованием. The
В одном варианте осуществления изобретения переупорядочивающий блок 606 выполняет две функции. Переупорядочивающий блок 606 перемещает кодовые слова с конца прогонов, создаваемых кодирующим устройством, в начало прогонов, как это требуется для декодирующего устройства, и объединяет кодовые слова переменной длины в слова с чередованием, имеющие фиксированную длину, и передает их на выход в надлежащем порядке, требуемом для декодирующего устройства. In one embodiment, the
В переупорядочивающем блоке 606 используется временная переупорядочивающая память 607. В одном варианте осуществления изобретения, где кодирование осуществляется на автоматизированном рабочем месте, емкость временной памяти переупорядочивания может составлять более 100 мегабайтов. В соответствующей настоящему изобретению сбалансированной системе временная память переупорядочивания 607 имеет значительно меньшую емкость (например, приблизительно 1 килобайт) и является постоянной. Таким образом, в одном варианте осуществления изобретения кодирование в реальном масштабе времени осуществляется с использованием постоянного объема памяти, даже если это увеличивает память, необходимую декодирующему устройству или для скорости передачи бит (например, когда вывод осуществляется до завершения прогона). Соответствующее настоящему изобретению декодирующее устройство способно определять действия ограниченной памяти переупорядочивающего блока, используя, например, неявную, явную сигнализацию или сигнализацию внутри потока (как описывается ниже). Переупорядочивающий блок 606 имеет ограниченную память, используемую для переупорядочивания, но "необходимая" память не ограничена. Необходимо учитывать как влияние ограниченной памяти в отношении окончания прогона с целью начала очереди прогона, так и в отношении переупорядочивания перемежаемых слов. In the
В одном варианте осуществления изобретения соответствующая настоящему изобретению кодирующая система (и соответствующая декодирующая система) осуществляет кодирование (или декодирование), используя единственную интегральную микросхему. В другом варианте осуществления изобретения единственная интегральная схема содержит в себе соответствующую настоящему изобретению систему кодера, включая ее кодирующее и декодирующее устройства и память. Для обеспечения кодирования может быть дополнительно использовано отдельное внешнее запоминающее устройство. Многокристальный модуль или интегральная схема может содержать как аппаратные средства кодирования-декодирования, так и запоминающее устройство. 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
Память 702 подсоединена к генератору двоичных разрядов 701 и содержит счет прогонов для данного класса вероятности. Во время генерации двоичных разрядов генератор двоичных разрядов 701 считывает из запоминающего устройства 702, используя индекс (например, класс вероятности). После считывания из памяти 702 генератор двоичных разрядов 701 осуществляет вырабатывание двоичных разрядов следующим образом. Во-первых, если счет прогонов равен нулю, выдается сигнал запуска 711, индицирующий начало прогона. Затем, если некодированный двоичный разряд равен МВС, то формируется сигнал окончания 712, указывающий на окончание прогона. Кроме того, если некодированный двоичный разряд равен наименее вероятному символу (МВС), то формируется выходное кодовое слово 714 для того, чтобы показать, что кодовое слово является кодовым словом "1N" и счет прогонов очищается, например устанавливается на ноль (поскольку это конец прогона). Если некодированный двоичный разряд не равен МВС, то счет прогонов получает положительное приращение, а проверка определяет, равен ли счет прогонов максимальному счету прогонов для кода. Если это так, то выдается сигнал окончания 712, выходной сигнал кодового слова 714 устанавливается на ноль, а счет прогонов очищается (например, счет прогонов устанавливается на ноль). Если в результате проверки определяется, что число прогонов не равно максимальному значению для кода, то счет прогонов получает положительное приращение. Отметим, что индексирующий сигнал 713 соответствует классу вероятности, принимаемому в качестве входного сигнала. The
В настоящем изобретении срабатывание кодовых слов 1N осуществляется так, что их длину можно определять без какой-либо дополнительной информации. Табл. 12 иллюстрирует кодовые слова "1N", представляющие кодовые слова R3(2) для декодирующего и кодирующего устройств. Декодирующее устройство ожидает, что двоичный разряд "1" в кодовом слове "1N" будет МВС и что часть счета N оказывается в надлежащем порядке БВС...МВС. В порядке декодирования кодовое слово переменной длины не может отличаться от нулевого заполнения без знания того, какой конкретный код использован. В порядке кодирования кодовое слово реверсируется, и положение старшего разряда "1" показывает длину кодовых слов "1N". Для генерирования кодовых слов в порядке кодирования дополнение значения счета должно быть изменено на противоположное. Это можно выполнить путем реверсирования 13-разрядного счета и затем смещения его так, чтобы совместить его с МВС. Как описывается подробно ниже, блок компоновки двоичных разрядов реверсирует кодовые слова обратно, соответственно порядку декодирования. Однако это реверсирование кодовых слов не вызывает усложнения блока компоновки двоичных разрядов 606, поскольку он должен осуществлять сдвиг любым путем. In the present invention, the triggering of the
Для кодов 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
В этой схеме используются два конвейерных каскада. Во время работы первого конвейерного каскада счет получает положительное приращение, класс вероятности расширяется и выполняется вычитание и сравнение длинных кодовых слов 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
В целях переупорядочивания для любого декодирующего устройства можно использовать "поисковое" декодирующее устройство, в котором декодирующее устройство включено в состав кодирующего устройства и обеспечивает запросы данных в том порядке, в котором кодовые слова будут необходимы для действительного декодирующего устройства. Для поддержки "поискового" декодирующего устройства можно осуществлять независимое переупорядочивание счетов прогонов для каждого потока. Для декодирующих устройств, которые легко можно смоделировать, в целях обеспечения возможности переупорядочивания можно использовать очереди с множеством отметок времени или единую объединенную очередность. В одном варианте осуществления изобретения переупорядочивание каждого кодового слова может выполняться с использованием очередеподобной структуры данных и независимо от использования множества потоков кодированных данных. Ниже приводится описание способа осуществления переупорядочивания. 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
Блок переупорядочивания счета прогонов 801 и блок компоновки двоичных разрядов 802 более подробно описаны ниже. Run
Блок переупорядочивания счета прогонов. 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
Как показано на фиг. 12, запоминающее устройство указателя 901 подсоединено для приема входного сигнала индекса 713 и вырабатывает адресный выходной сигнал, который подается на один вход мультиплексора 902. Два других входа мультиплексора 902 подсоединены для приема адреса в форме головного указателя из головного счетчика 903 и адреса в форме хвостового указателя из хвостового счетчика 904. Выходным сигналом мультиплексора 902 является адрес, подаваемый в запоминающее устройство кодовых слов 908 и используемый для обращения к нему. As shown in FIG. 12, a
Входной сигнал индекса 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
Для повторения цикла обработки входной сигнал индекса 713 идентифицирует прогон. В одном варианте осуществления изобретения индекс указывает один из 25 классов вероятности. В таком случае для представления индекса необходимо пять двоичных разрядов. Отметим, что если используется множество банков данных для классов вероятности, то для определения конкретного банка данных могут потребоваться дополнительные двоичные разряды. В одном варианте осуществления изобретения входной сигнал индекса идентифицирует класс вероятности для счета прогонов. Входной сигнал кодовых слов 714 представляет собой кодовое слово, когда происходит окончание прогона, а в противном случае "не имеет значения". Входной сигнал запуска 711 и входной сигнал окончания 712 являются управляющими сигналами, которые указывают, начинается ли, заканчивается ли прогон или и то и другое. Прогон начинается и заканчивается в одно и то же время, когда прогон состоит из единственного некодированного двоичного разряда. To repeat the processing cycle, the input of
Переупорядочивающий блок счета прогонов 801 переупорядочивает счеты прогонов, вырабатываемые генератором двоичных разрядов в ответ на его входные сигналы. Запоминающее устройство кодовых слов 908 запоминает кодовые слова во время переупорядочивания. В одном варианте осуществления изобретения запоминающее устройство кодовых слов 908 больше, чем количество счетов прогонов, которые могут быть активированы в одно и то же время. Это ведет к лучшему уплотнению. Если запоминающее устройство кодовых слов меньше, чем количество счетов прогонов, которые могут быть активированы в одно и то же время, то это действительно может ограничивать количество активированных счетов прогонов количеством, которое может храниться в памяти. В системе, которая обеспечивает хорошее уплотнение, часто получается, что когда накапливаются данные для одного кодового слова с длинным счетом прогонов, то начинаются (возможно, также и оканчиваются) множество кодовых слов с короткими счетами прогонов. Это требует наличия большой памяти для исключения вытеснения длинного прогона до его полного завершения. The reordering unit of the
Запоминающее устройство указателя 901 запоминает адреса местоположений памяти кодовых слов для классов вероятности, которые находятся в середине прогона, и адресует запоминающее устройство кодовых слов 908 в режиме произвольной выборки. Запоминающее устройство указателей 901 имеет ячейку запоминающего устройства для адреса в запоминающем устройстве кодового слова 908 для каждого класса вероятности, который может быть в середине прогона. После того, как прогон завершится для конкретного класса вероятности, адрес, запомненный в запоминающем устройстве указателя 901 для этого класса вероятности, используется для выборки из запоминающего устройства кодовых слов 908, и завершенное кодовое слово записывается в запоминающее устройство кодовых слов 908 в этой ячейке. До этого времени эта ячейка в запоминающем устройстве кодовых слов 908 содержит недействительный элемент. Таким образом, запоминающее устройство указателя 901 запоминает местоположение ошибочного кодового слова для каждого счета прогона. The
Головной счетчик 903 и хвостовой счетчик 904 обеспечивают также адреса для доступа в запоминающее устройство кодовых слов 908. Использование головного счетчика 903 и хвостового счетчика 904 позволяет адресовать запоминающее устройство кодовых слов 908 в качестве очереди или кольцевого буфера (например, запоминающее устройство обратного магазинного типа). Хвостовой счетчик 904 содержит адрес следующей имеющейся ячейки в запоминающем устройстве кодовых слов 908 для разрешения введения кодового слова в запоминающее устройство кодовых слов 908. Головной счетчик 903 содержит адрес в запоминающем устройстве кодовых слов 908 следующего подлежащего выведению кодового слова. Другими словами, головной счетчик 903 содержит адрес запоминающего устройства кодовых слов следующего кодового слова, подлежащего аннулированию из запоминающего устройства кодовых слов 908. Местоположение каждого возможного индекса (например, класса вероятности) в запоминающем устройстве указателя 901 используется для запоминания, где находился хвостовой указатель 904, когда был запущен прогон, чтобы в это местоположение в запоминающем устройстве кодовых слов 908 можно было поместить надлежащее кодовое слово при окончании прогона. The
Управляющий модуль 909 вырабатывает сигнал достоверности в качестве части данных, запомненных в запоминающем устройстве кодовых слов 908 для того, чтобы показать, правильно ли запомнено содержимое данных кодовых слов или нет. Например, если двоичный разряд достоверности имеет логический уровень "1", то ячейка запоминающего устройства кодовых слов содержит достоверные данные. Однако если двоичный разряд достоверности представляет логический "0", то ячейка запоминающего устройства кодовых слов содержит недостоверные данные. Модуль выявления достоверности определяет, содержит ли ячейка в запоминающем устройстве правильное кодовое слово каждый раз, когда кодовое слово считывается из запоминающего устройства кодовых слов 908. В одном варианте осуществления изобретения модуль выявления достоверности 906 определяет, имеется ли в ячейке запоминающего устройства правильное кодовое слово или конкретный неверный код. The
Когда запускается новый прогон, содержимое неверных данных вводится в запоминающее устройство кодовых слов 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
Когда прогон запущен, индекс прогона запоминается в запоминающем устройстве кодовых слов 908, так что, если запоминающее устройство кодовых слов 908 заполнено, а прогон еще не завершен, индекс используется вместе с сигналом 804 для установления в исходное состояние соответствующего счетчика прогонов. В дополнение к запоминанию кодовых слов или индексов в запоминающем устройстве кодовых слов 908 один двоичный разряд используется для указания, который из этих двух типов данных запоминается. When the run is started, the run index is stored in the
Если нет запуска или окончания прогона, переупорядочивающий блок счета прогонов простаивает. Если произведен запуск прогона и нет окончания прогона и если запоминающее устройство заполнено, то из запоминающего устройства кодовых слов 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
Если имеется окончание прогона и нет запуска прогона, то адрес, хранящийся в запоминающем устройстве указателя 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
Если имеются запуск прогона и окончание прогона (то есть прогон начинается и заканчивается в одно и то же время), а память заполнена, то из запоминающего устройства кодовых слов 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
В настоящем изобретении переупорядочивающий блок счета прогонов 801 может выдавать кодовые слова в различные моменты времени. В одном варианте осуществления изобретения кодовые слова могут выдаваться, когда они верные или неверные. Кодовые слова могут выдаваться, когда они неверные, если существует состояние заполнения памяти, а прогон не завершен. Кроме того, неверные кодовые слова могут выдаваться для поддержания минимальной скорости (то есть для управления скоростью). Неверные кодовые слова могут выдаваться также для выключения из работы запоминающего устройства кодовых слов 908, когда все данные подверглись переупорядочиванию счета прогонов или когда в результате операции установки в исходное состояние переупорядочивающий блок счета прогонов переходит к середине запоминающего устройства кодовых слов 908. Отметим, что в таком случае декодирующее устройство должно быть уведомлено о том, что кодирующее устройство работает таким образом. In the present invention, the reordering unit of the
Как описано выше, кодовое слово выдается всякий раз, когда заполняется запоминающее устройство кодовых слов 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
Используя переупорядочивающий блок счета прогонов 801, кодовое слово выдается при первом считывании значения (например, данных) из запоминающего устройства кодовых слов 908 по адресу, определяемому головным указателем 903. Выводом кодовых слов управляет и координирует логическая схема управляющего устройства. Модуль выявления достоверности 906 осуществляет проверку с целью определения, является ли значение кодовым словом. Другими словами, модуль выявления достоверности 906 определяет, верное ли кодовое слово. В одном варианте осуществления изобретения модуль выявления достоверности 906 определяет достоверность любого содержимого путем проверки двоичного разряда достоверности, запомненного с каждым входным сообщением. Если значение является кодовым словом (то есть кодовое слово верное), то значение выдается как кодовое слово. С другой стороны, если значение не является кодовым словом (то есть кодовое слово неверное), то может быть выдано любое кодовое слово, которое имеет прогон символом БВС, по меньшей мере такой же длинный, как текущий счет прогонов. Кодовое слово "0" является одним кодовым словом, которое пока правильно представляет текущий прогон и может быть выдано. После осуществления выдачи головной указатель 903 получает положительное приращение для следующей ячейки в запоминающем устройстве кодовых слов 908. В качестве альтернативы, использование "1N" с самыми короткими возможными длинами прогона позволяет декодирующему устройству проверять, вытеснено ли только кодовое слово до выпуска МВС. Using the reordering block of the
В одном варианте осуществления изобретения переупорядочивающий блок счета прогонов 801 работает с периодом времени двух циклов синхронизации. В первом цикле синхронизации входные сигналы принимаются в переупорядочивающий блок счета прогонов 801. Во втором цикле синхронизации происходит вывод сигнала из запоминающего устройства кодовых слов 908. In one embodiment of the invention, the reordering block of the
Хотя кодовые слова могут выводиться всякий раз, когда головной указатель 903 адресует правильное кодовое слово, может оказаться желательным в некоторых реализациях выдавать на выход кодовое слово только тогда, когда заполнен буфер. Это вызывает фиксированную задержку в системе в единицах количества кодовых слов вместо переменной задержки. Если запоминающее устройство 908 способно удерживать заранее установленное количество кодовых слов между моментом времени, когда прогон запускается и вводится и когда выводится, задержка составляет это количество кодовых слов, поскольку вывод не производится, пока оно не заполнится. Таким образом, существует постоянная задержка в кодовых словах. Отметим, что задержка переупорядочивания все еще остается переменной в других местах, например, в количестве кодированных или первоначальных данных. Позволяя запоминающему устройству 908 заполняться до осуществления вывода, на выходе вырабатывается кодовое слово за один цикл. Although codewords may be output whenever the
Отметим, что если ячейка запоминающего устройства кодовых слов маркируется как неверная, то можно использовать неиспользованные двоичные разряды для запоминания идентификации, для какого это счета прогона (то есть запоминается в ней контекстный элемент кодированного сигнала или класс вероятности, которые должны заполнять эту ячейку). Эта информация полезна для манипулирования в случае, когда память заполнена. В частности, информацию можно использовать для указания генератора двоичных разрядов, который не закончил кодовое слово для этой конкретной длины прогона, которое теперь должно быть закончено. В таком случае принимается решение вывести первое кодовое слово, которое может появиться из-за состояния заполненной памяти. Таким образом, когда система устанавливает в исходное состояние счетчик прогонов, информация, выраженная через генераторы двоичных разрядов и счеты прогонов, указывает, когда система начнет все сначала. 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
Если запоминающее устройство кодовых слов 908 многопортовое (например, двухпортовое), эту конструкцию можно конвейеризировать для оперирования одним кодовым словом за один цикл синхронизации. Поскольку с большого количества портов можно осуществлять доступ к любой ячейке в запоминающем устройстве кодовых слов 908, в ячейке запоминающего устройства кодовых слов можно записывать, например, когда запоминается неверная информация или кодовое слово, в то время как другой участок можно считывать, например, когда кодовое слово выводится. Отметим, что в таком случае мультиплексоры могут быть модифицированы для обеспечения множества шин данных и адресов. If the
Всякий раз, когда кодирующее устройство дает на выходе кодовое слово "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
Функционирование переупорядочивающего блока счета прогонов 1000 очень похоже на функционирование переупорядочивающего блока счета прогонов, основанного на оценках вероятности. Если начинается новый прогон, то неверное содержимое, включающее в себя контекстный элемент кодированного сигнала, записывается в запоминающее устройство кодовых слов 1008 по адресу, указанному хвостовым указателем 1003. После этого адрес хвостового указателя 1003 запоминается в запоминающем устройстве указателя 1001 по адресу контекстного элемента кодированного сигнала текущего счета прогонов. Затем хвостовой указатель 1003 получает положительное приращение. При завершении указатель в запоминающем устройстве указателя 1001, соответствующий счету прогонов, считывается из запоминающего устройства указателя 1001, а кодовое слово параллельно записывается в запоминающее устройство кодовых слов 1008 в ячейке, указанной этим указателем. Если не происходит ни запуск, ни окончание прогона и если указанная адресом головного указателя 1002 ячейка в запоминающем устройстве кодовых слов 1008 не содержит неверных данных, то адресуемое головным указателем кодовое слово считывается и выводится. Затем головной указатель 1002 получает приращение. В том случае, если прогон начинается и заканчивается в одно и то же время, кодовое слово записывается в запоминающее устройство кодовых слов 1008 по адресу, указанному хвостовым указателем 1003, и после этого хвостовой указатель 1003 получает приращение. The functioning of the reordering block of the
Подобно этому, когда прогон заканчивается и соответствующий адрес в запоминающем устройстве указателя 1001 и адрес в головном счетчике 1002 одни и те же, кодовое слово может быть выведено немедленно, а значение в головном счетчике 1002 может получить приращение без обращения к запоминающему устройству кодовых слов 1008. Similarly, when the run ends and the corresponding address in the
Для систем счета прогонов "с помощью контекста" каждый контекст требует ячейку памяти в запоминающем устройстве указателя 1001, так что емкость запоминающего устройства состояния генератора последовательности бит (ГПБ) и модуля оценки вероятности (MOB) можно увеличить с целью обеспечения этой памяти. Емкость запоминающего устройства указателя 1001 равна емкости, необходимой для адреса запоминающего устройства кодовых слов. For context-assisted run counting systems, each context requires a memory location in the
Количество ячеек в запоминающем устройстве кодовых слов 1008 может быть выбрано разработчиком при конкретной реализации. Ограниченная емкость этой памяти снижает эффективность уплотнения, так что существует компромисс между стоимостью и уплотнением. Емкость запоминающего устройства кодовых слов определяется размером самого большого кодового слова плюс один двоичный разряд для указания достоверности-недостоверности. The number of cells in the
Для иллюстрации переупорядочивания будет представлен пример использования кода 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
В ответ на данные, соответствующие двоичному разряду номер 2, головной счетчик сохраняет указание на первую ячейку памяти (поскольку не было вывода, вызывающего приращение). Поскольку данные соответствуют второму контексту, то есть контексту 1, следующая ячейка запоминающего устройства кодовых слов назначается кодовому слову в качестве ячейки 1 запоминающего устройства кодовых слов, указываемой хвостовым указателем, а в ячейку записываются неверные данные. Адрес, то есть ячейка 1 кодового слова, записывается в ячейку запоминающего устройства указателя, соответствующую контексту 1. То есть, адрес второй ячейки запоминающего устройства кодового слова записывается в ячейку 1 запоминающего устройства указателя. После этого хвостовой указатель получает приращение. In response to the data corresponding to bit
В ответ на данные, соответствующие двоичным разрядам номер 3, переупорядочивающий блок простаивает, поскольку прогон не запускается и не оканчивается. In response to the data corresponding to
В ответ на соответствующие двоичному разряду номер 4 данные для контекста 1 указывается окончание прогона. Поэтому в ячейку запоминающего устройства кодовых слов, назначенную для контекста 1, записывается кодовое слово "101" (ячейка 1 запоминающего устройства кодовых слов), как указывает ячейка запоминающего устройства указателя для контекста 1. Головной и хвостовой указатели остаются теми же самыми, а значение в ячейке запоминающего устройства указателя для контекста 1 не будет использоваться снова, поэтому оно "безразлично". In response to the corresponding
В ответ на данные, соответствующие двоичному разряду номер 5, переупорядочивающий блок не занят, поскольку нет ни запуска, ни окончания прогона. In response to the data corresponding to the
В ответ на данные, соответствующие двоичному разряду номер 6, происходит тот же тип операций, который описан выше для двоичного разряда номер 2. In response to the data corresponding to the
В ответ на данные, соответствующие двоичному разряду номер 7, происходит окончание прогона кодового слова для контекста 0. В этом случае в ячейку запоминающего устройства кодовых слов (ячейка 0 запоминающего устройства кодовых слов) записывается кодовое слово "0", как указано ячейкой запоминающего устройства указателя для контекста 0 (ячейка 0 запоминающего устройства указателя). После этого значение в ячейке запоминающего устройства указателя не будет снова использоваться, так что оно оказывается "безразличным". Кроме того, ячейка запоминающего устройства кодового слова, обозначаемая головным указателем, содержит верные данные. Поэтому верные данные выводятся, а головной указатель получает приращение. Приращение головного указателя обуславливает указание им на другую ячейку запоминающего устройства кодовых слов, содержащую верное кодовое слово. Следовательно, это кодовое слово выводится, а головной указатель снова получает приращение. Отметим, что в этом примере кодовые слова выводятся тогда, когда они оказываются готовыми, в противоположность случаю, когда запоминающее устройство кодовых слов полностью заполнено. In response to the data corresponding to bit
Обработка некодированных двоичных разрядов продолжается в соответствии с приведенным выше описанием. Отметим, что ячейки запоминающего устройства кодовых слов не назначаются для использования конкретных контекстов, так что кодовые слова из любого контекста могут запоминаться в данной ячейке запоминающего устройства кодовых слов на всем протяжении кодирования файла данных. 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
Как показано на фиг. 14, блок компоновки двоичных разрядов 802 включает в себя компонующую логическую схему 1101, счетчик потоков 1102, запоминающее устройство 1103, хвостовые указатели 1104 и головной счетчик 1105. As shown in FIG. 14, the
Компонующая логическая схема 1101 подсоединена для приема кодовых слов и подсоединена к счетчику потоков 1102. Счетчик потоков 1102 также подсоединен к запоминающему устройству 1103. К запоминающему устройству 1103, кроме того, подсоединены хвостовые указатели 1104 и головной счетчик 1105. A
Счетчик потоков 1102 отслеживает перемежаемый поток, с которым связано текущее входное кодовое слово. В одном варианте осуществления изобретения счетчик потоков 1102 повторно считает потоки от 0 до N-1, где N - количество потоков. После того, как счетчик потоков 1102 достигнет величины N-1, он снова начинает считать с 0. В одном варианте осуществления изобретения счетчик потоков 1102 является двухразрядным счетчиком и считает от 0 до 3 (для четырех перемежаемых потоков). В этом варианте осуществления изобретения счетчик потоков устанавливается в ноль (например, посредством общего сброса в исходное состояние). A
Компонующая логическая схема 1101 объединяет текущее входное кодовое слово с предыдущими входными кодовыми словами для формирования перемежаемых кодовых слов. Длина каждого из кодовых слов может меняться. Поэтому компонующая логическая схема 1101 компонует эти кодовые слова переменной длины в слова фиксированной длины. Созданные с помощью компонующей логической схемы 1101 перемежаемые кодовые слова выводятся в запоминающее устройство 1103 по порядку и хранятся в запоминающем устройстве 1103 до надлежащего времени для их вывода. В одном варианте осуществления изобретения запоминающее устройство 1103 представляет собой статистическое запоминающее устройство с произвольной выборкой (СЗУПВ) или регистровый файл с шестьюдесятью четырьмя 16-разрядными словами. The
Перемежаемые слова запоминаются в запоминающем устройстве 1103. В настоящем изобретении емкость запоминающего устройства 1103 достаточно большая для манипулирования словами в двух случаях. Один случай нормальной работы, когда один перемежаемый поток имеет кодовые слова минимальной длины, а другие перемежаемые потоки имеют кодовые слова максимальной длины. Этот первый случай требует 3•13=39 ячеек памяти. Другой случай представляет собой случай инициализации, где опять один поток имеет кодовые слова минимальной длины, или короткие кодовые слова, а другие потоки имеют кодовые слова максимальной длины, или длинные кодовые слова. Для второго случая, хотя достаточно 2•3•13= 78 ячеек памяти, работа модуля MOB позволяет теснее связывать 56-ю ячейками. The interleaved words are stored in the
Переупорядочение выполняет запоминающее устройство 1003 совместно со счетчиком потоков 1102 и хвостовыми указателями 1104. Счетчик потоков 1102 указывает текущий поток кодового слова, принимаемого запоминающим устройством 1103. Каждый из перемежаемых потоков связан по меньшей мере с одним хвостовым указателем. Хвостовые указатели 1104 и головной счетчик 1105 осуществляют переупорядочивание кодовых слов. Причина, по которой нужно иметь два хвостовых указателя на поток, следует из слова чередования N, запрашиваемого декодирующим устройством, когда данные в перемежаемом слове N-1 содержат запуск следующего кодового слова. Один хвостовой указатель определяет ячейку в запоминающем устройстве 1103 для запоминания следующего перемежаемого слова из данного перемежаемого потока. Другой хвостовой указатель определяет ячейку в запоминающем устройстве для запоминания слова с чередованием после следующего такого слова. Это позволяет определить ячейку слова N с чередованием, когда время запроса декодером слова N-1 с чередованием известно. В одном варианте осуществления изобретения указатели представляют собой восемь 6-разрядных регистров (два хвостовых указателя на поток). Reordering is performed by the
В одном варианте осуществления изобретения в начале кодирования хвостовые указатели 1104 устанавливаются так, что первые восемь слов с чередованием (два из каждого потока) запоминаются в запоминающем устройстве 1103 в последовательности по одному из каждого потока. После инициализации всякий раз, когда компонующее логическое устройство 1101 начинает новое слово с чередованием для конкретного кодового потока, "следующий" хвостовой указатель устанавливают на значение "после следующего" хвостового указателя, а хвостовой указатель "после следующего" для кодового потока устанавливают на следующую имеющуюся ячейку памяти. Таким образом, для каждого потока имеются два хвостовых указателя. В другом варианте осуществления изобретения для каждого потока используют только один хвостовой указатель, и он указывает, где следующее перемежаемое слово следует запоминать в запоминающем устройстве 1103. In one embodiment, at the beginning of the coding, the
Головной счетчик 1105 используется для определения ячейки памяти для вывода следующего слова с чередованием из блока компоновки двоичных разрядов 802. В описываемом варианте осуществления изобретения головной счетчик 1105 содержит 6-разрядный счетчик, который получает приращение для вывода всего слова с чередованием сразу. The
Запоминающее устройство 1103 в дополнение к использованию его для переупорядочивания можно также использовать в качестве буфера обратного магазинного типа (FIFO) между кодирующим устройством и каналом. Может оказаться желательным иметь запоминающее устройство с большей емкостью, чем требуется для переупорядочивания, поэтому для останова кодирующего устройства можно использовать сигнал почти заполненного FIFO, если канал не может поддерживать кодирующее устройство. Кодирующее устройство типа один двоичный разряд на цикл не может генерировать одно слово с чередованием за цикл. Когда кодирующее устройство хорошо согласовано с каналом, канал не принимает слово с чередованием на каждый цикл, и поэтому необходима некоторая FIFO-буферизация. Например, канал, который может принимать 16-разрядное слово с чередованием каждые 32 тактовых цикла, может представлять собой хорошо согласованный вариант для эффективного расширения полосы пропускания 2:1 или больше.
Блок-схема компонующей логической схемы показана на фиг. 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
В одном варианте осуществления изобретения кодовые слова вводятся в 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
На основании текущего значения накапливающего сумматора сдвигающее устройство 1203 совмещает текущее кодовое слово так, чтобы оно надлежащим образом следовало за любыми предыдущими кодовыми словами в этом слове с чередованием. Таким образом, данные в кодирующем устройстве сдвигаются в порядок декодирования. Выходной сигнал сдвигающего устройства 1203 составляет 28 двоичных разрядов, что соответствует случаю, когда 13-разрядное кодовое слово должно добавляться к 15 двоичным разрядам в текущем слове с чередованием так, чтобы двоичные разряды из текущего кодового слова оканчивались в старших 12 двоичных разрядах из 28 выводимых двоичных разрядов. Отметим, что сдвигающее устройство 1203 работает без обратной связи и, следовательно, его можно конвейеризировать. В одном варианте осуществления изобретения сдвигающее устройство 1203 представляет собой многорегистровое циклическое сдвиговое устройство. Based on the current value of the accumulating adder, the
Регистры 1205 запоминают двоичные разряды в текущих словах с чередованием. В одном варианте осуществления изобретения 16-разрядный регистр для каждого перемежаемого потока удерживает предыдущие двоичные разряды текущего слова с чередованием.
Вначале кодовое слово потока принимается сдвигающим устройством 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
Управление мультиплексором 1204 и выводом слова с чередованием включает выдачу сигнала завершения из накапливающего сумматора. В одном варианте осуществления изобретения мультиплексор 1204 содержит шестнадцать мультиплексоров 2:1, четыре из которых имеют один вход, который всегда равен нулю. Controlling the
Настоящее изобретение обеспечивает многочисленные варианты осуществления переупорядочивания данных. Например, в системе со множеством кодовых потоков кодовые потоки должны переупорядочиваться в перемежаемые слова, как показано на фиг. 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
Каждый поток кодированных данных имеет блок переупорядочивания счета прогонов, содержащий блок переупорядочивания счета прогонов 801, изображенный на фиг. 11. Каждый блок компоновки двоичных разрядов объединяет кодовое слово переменной длины в слова с чередованием, имеющие фиксированную длину, возможно 8, 16 или 32 двоичных разряда в слове. Каждый блок компоновки двоичных разрядов содержит регистры и сдвигающую схему, как описано выше. Декодирующее устройство 2504 содержит полное операционное декодирующее устройство (включая ГПБ, MOB и КМ), которое имеет доступ к перемежающимся словам из всех блоков компоновки двоичных разрядов (либо по отдельным шинам, как показано на фиг. 32, либо через общую шину). Всякий раз, когда декодирующее устройство 2504 выбирает слово с чередованием с одного из блоков компоновки двоичных разрядов, это слово передается в кодовом потоке. Поскольку декодирующее устройство в конце приема требует данные в таком же порядке, как у идентичного поискового декодирующего устройства, перемежаемые слова передаются в надлежащем порядке. Each encoded data stream has a run count reordering unit comprising a run
Кодирующее устройство вместе с поисковым декодирующим устройством может быть приемлемым для использования в полудуплексной системе, поскольку поисковое декодирующее устройство также можно использовать, как нормальное декодирующее устройство. Преимущество использования метода поискового декодирующего устройства заключается в его применимости для любых детерминированных декодирующих устройств. В альтернативных решениях, описываемых ниже, независимо от поискового декодирующего устройства используются более простые модели декодирующего устройства для снижения стоимости аппаратного оборудования. Для декодирующих устройств, которые декодируют множество кодовых слов в одном и том же тактовом цикле, моделирование декодирующего устройства с использованием меньшего объема аппаратных средств, чем само декодирующее устройство, может оказаться невозможным, что неизбежно влечет за собой использование поискового декодирующего устройства. Как будет описано ниже, существуют более простые модели декодирующих устройств, которые декодируют самое большее только одно кодовое слово за цикл. 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
В этом варианте осуществления изобретения поисковое декодирующее устройство заменяется простым сравнением, которое определяет, какой из блоков компоновки двоичных разрядов 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
Ниже представлено краткое описание этапов использования множества очередей с временными метками. Описание понятно для специалистов в данной области техники. Здесь представлены операции кодирующего устройства. Для случая, когда прогон начинается и заканчивается с помощью одного и того же кодового слова, упрощение не произведено. Операции можно проверить для каждого кодированного символа (хотя на практике не все проверки необходимо выполнять). Предположим, что перемежаемые слова имеют размер 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
В случае произвольных потоков запоминающее устройство переупорядочивания счета прогонов запоминает идентификацию перемежаемого потока для каждого кодового слова. Каждый перемежаемый поток имеет свой собственный головной указатель. Когда блоку компоновки двоичных разрядов требуется больше данных, используется соответствующий головной указатель для выборки такого количества кодовых слов, которое необходимо для формирования нового перемежаемого слова. Это может включать в себя просмотр большого количества ячеек памяти кодовых слов для определения, какие из них являются частью надлежащего потока. В качестве альтернативы это может повлечь за собой просмотр запоминающего устройства кодовых слов в отношении дополнительных полей для выполнения связного списка. 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)
В системе 1400 кодированные данные 1410 поступают на вход структуры обратного магазинного типа 1401, упорядочиваются и перемежаются. Структура обратного магазинного типа 1401 содержит данные в надлежащем порядке. Потоки подаются на декодирующие устройства 1402. Декодирующие устройства 1402 запрашивают данные из этих потоков в последовательном и детерминированном порядке. Хотя порядок, в котором декодирующие устройства 1402 требуют кодированные данные, нетривиальный, он не произволен. С помощью упорядочивания кодовых слов в таком порядке в кодирующем устройстве вместо декодирующего устройства кодированные данные могут перемежаться в единый поток. В другом варианте осуществления изобретения кодированные данные 1410 могут содержать единственный поток неперемежаемых данных, где данные для каждого контекстного элемента кодированного сигнала, класса контекста и класса вероятности добавляются в поток данных. В этом случае структуру обратного магазинного типа 1401 заменяют на область памяти, предназначенную для приема всех кодированных данных прежде, чем направить данные дальше в декодирующие устройства 1402, так что данные могут быть сегментированы надлежащим образом. In system 1400, encoded
Когда кодированные данные 1410 приняты структурой обратного магазинного типа 1401, контекстная модель 1404 определяет текущий контекстный сборник. В одном варианте осуществления изобретения контекстная модель 1404 определяет текущий контекстный сборник, основываясь на предыдущих элементах изображения и (или) двоичных разрядах. Хотя это не показано, но при контекстной модели 1404 может быть включена линейная буферизация. Линейная буферизация обеспечивает необходимые данные, или шаблон, с помощью которого контекстная модель 1404 определяет текущий контекстный сборник. Например, там, где контекст основан на значениях элементов изображения в окрестности текущего элемента изображения, линейная буферизация может использоваться для хранения значений тех элементов изображения в окрестностях, которые используются для обеспечения специального контекста. When the encoded
В ответ на контекстный сборник система декодирующего устройства 1400 выбирает состояние декодирования из запоминающего устройства 1403 для текущего контекстного сборника. В одном варианте осуществления изобретения состояние декодера включает в себя состояние модуля оценки вероятности (МОВ) и состояние генератора двоичных разрядов. Состояние МОВ определяет, какой код надлежит использовать для декодирования новых кодовых слов. Состояние генератора двоичных разрядов поддерживает запись двоичных разрядов в текущем прогоне. Состояние для декодирующих устройств 1402 обеспечивается из запоминающего устройства 1403 в ответ на адрес, обеспечиваемый контекстной моделью 1404. Адрес выбирает ячейку в запоминающем устройстве 1403, которая хранит информацию, соответствующую контекстному сборнику. In response to the contextual collector, the decoding system 1400 selects a decoding state from the
После выбора из запоминающего устройства 1403 состояние декодирующего устройства для контекстного сборника система 1400 определяет следующий неуплотненный двоичный разряд и обрабатывает состояние декодирующего устройства. Затем декодирующие устройства 1402 декодируют новое кодовое слово, если это необходимо, и (или) обновляют счет прогонов. Если необходимо, то обновляется состояние МОВ, а также состояние генерации двоичных разрядов. После этого декодирующие устройства 1402 записывают новое состояние кодирующего устройства в запоминающее устройство 1403. After selecting the state of the decoding device for the context collector from the
На фиг. 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
Сдвигающая логическая схема 1431 сдвигает данные из потока кодовых данных. На основании входных кодированных данных и входного сигнала режима логическая схема генерирования двоичных разрядов 1432 вырабатывает декодированные данные для контекстной модели. Логическая схема "новое значение к" 1433 также использует сдвиг данных и входной сигнал состояния для вырабатывания новой величины к. В данном варианте осуществления изобретения логическая схема "новое значение к" 1433 использует состояние МОВ и первый разряд кодированных данных для вырабатывания нового значения к. На основании нового значения к логическая схема кодирования по шаблону 1437 вырабатывает шаблон R1Z для следующего кодового слова. Шаблон R1Z для следующего кодового слова посылается в логическую схему декодирования 1439 и логическую схему обновления счета прогонов 1441. The biasing
Логическая схема обновления МОВ 1434 обновляет состояние МОВ. В одном варианте осуществления изобретения состояние МОВ обновляется с использованием текущего состояния. Откорректированное состояние посылается в запоминающее устройство. Логическая схема новых кодовых слов 1435 определяет, нужно ли новое кодовое слово. Логическая схема состояния МОВ для кода 1436 определяет код для декодирования с использованием входного состояния 1442. Код вводится в логическую схему расширения 1438 для вырабатывания максимальной длины прогона текущего шаблона и величины расщепления R3. Логическая схема декодирования 1439 декодирует кодовое слово для производства выходного сигнала счета прогонов. Мультиплексор 1440 выбирает либо выходной сигнал логической схемы декодирования 1439, либо входной сигнал режима 1442 для логической схемы обновления счета прогонов 1441. Логическая схема обновления счета прогонов 1441 обновляет счет прогонов. The
Соответствующая настоящему изобретению система декодирования 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
На первой ступени определяется текущий контекстный сборник (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
На начальной стадии структура обратного магазинного типа и регистры 1461 и 1462 заполнены данными, а в блоке управления 1465 установлено действительное состояние триггера. Всякий раз, когда появляется запрос, блок управления 1465 обеспечивает данные в соответствии с логикой, показанной в табл. 17. At the initial stage, the inverse store-type structure and
На фиг. 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
Регистры 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
Что касается R-кодов, то размерный блок кодовых слов 1611 определяет, присутствует ли кодовое слово "0" или "1N", и, если этим кодовым словом является "1N", то как много двоичных разрядов после символа "1" являются частью текущего кодового слова. Размерный блок, обеспечивающий такую же функцию, был описан фиг. 15. Для других кодов в технике хорошо известно определение размера кодового слова. As for R-codes, the dimensional block of
Сдвигающее устройство 1600 включает в себя устройство обратного магазинного типа, состоящее из четырех регистров, три из которых имеют мультиплексированные входы. Каждый из регистров 1607-1610 предназначен для размещения по меньшей мере одного кодового слова, так что длина регистров и мультиплексоров составляет 13 двоичных разрядов для размещения самого длинного возможного кодового слова. С каждым регистром связан также один управляющий мультивибратор (не показан), который показывает, содержит ли конкретный регистр кодовое слово или он ожидает подачи кодового слова от многорегистрового циклического сдвигового устройства 1606. The
Устройство обратного магазинного типа никогда не бывает пустым. Можно использовать только одно кодовое слово за тактовый цикл и за временной цикл можно сдвигать одно кодовое слово. Задержка на выполнение сдвига компенсируется, поскольку система заранее запускает четыре кодовых слова. Как только каждое кодовое слово будет сдвинуто для обеспечения совмещения выходных кодированных данных, другие кодовые слова в регистрах 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
Многорегистровое циклическое сдвиговое устройство 1606, вычислительное устройство размера кодовых слов 1611 и выбранный накапливающий сумматор 1612 манипулируют сдвигом переменной длины. Накапливающий сумматор 1612 имеет четыре регистра, по одному для каждого потока кодированных данных, каждый из которых содержит выравненное текущее кодовое слово для каждого потока данных. Накапливающий сумматор 1612 представляет собой четырехразрядный накапливающий сумматор, используемый для управления многорегистровым циклическим сдвиговым устройством 1606. Накапливающий сумматор 1612 осуществляет приращение своего значения на значение входного сигнала, поступающего из размерного блока кодовых слов 1611. Когда накапливающий сумматор 1612 переполняется (например, каждый раз, когда счет сдвига равен 16 или больше), регистры 1601-1604 тактируются для сдвигания. Каждый другой сдвиг на 16 разрядов вызывает запрос нового 32-разрядного слова из устройства обратного магазинного типа. Входной сигнал накапливающего сумматора 1611 характеризует собой размер кодового слова, который определяется текущим кодом и первым одним или двумя разрядами текущего кодового слова. Отметим, что в некоторых вариантах осуществления изобретения регистры 1601-1604 должны инициализироваться кодированными данными до начала декодирования. A multi-register
Когда система запрашивает кодовое слово, регистры в устройстве обратного магазинного типа тактируются так, что кодовые слова перемещаются к выходу. Когда многорегистровое циклическое сдвиговое устройство 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
В этом варианте осуществления изобретения сигнал следующего кодового слова из генератора двоичных разрядов принимается до принятия решения на переключение потоков. 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
Логическое устройство, использующее кодовое слово, делится на две части: логическое устройство предварительной обработки кодовых слов и логическое устройство обработки кодовых слов. Два идентичных конвейерных блока предварительной обработки 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
Память и контекстные модели вне кристалла. 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
Логическая схема выбора 1706 позволяет использовать либо внешнюю контекстную модель, либо внутреннюю контекстную модель (например, контекстную модель нулевого порядка 1703, контекстную модель 1704, контекстную модель 1705). Логическая схема выбора 1706 позволяет внутреннюю часть нулевого порядка контекстной модели 1703 использовать, даже когда используется внешняя контекстная модель 1701. Контекстная модель нулевого порядка 1703 обеспечивает один двоичный разряд или больше, в то время как внешний кристалл контекстной модели 1701 обеспечивает оставшуюся часть. Например, непосредственно предшествующие двоичные разряды могут представлять обратную связь и возвращаться обратно из контекстной модели нулевого порядка 1703, тогда как предшествующие двоичные разряды идут во внешнюю контекстную модель 1701. Таким образом, критическая по времени информация остается на кристалле. Это устраняет задержку на передачу информации вне кристалла для последних сформированных двоичных разрядов. The
На фиг. 25 представлена блок-схема одной системы с внешней контекстной моделью 1801, внешним запоминающим устройством 1803 и кристаллом кодирующего устройства 1802. Некоторые адресные линии запоминающего устройства приводятся в действие внешней контекстной моделью 1801, тогда как другие приводятся в действие контекстной моделью "нулевого порядка" в кристалле кодирующего устройства 1802. То есть, контекст из только что прошедшего цикла декодирования приводится в действие контекстной моделью нулевого порядка. Это дает возможность кристаллу декодирующего устройства обеспечивать информацию контекста из только что прошедшего цикла с минимальной задержкой передачи информации. Кристалл контекстной модели 1802 опережает остальную часть информации, использующую двоичные разряды, декодированные более давно в прошлом, тем самым допуская задержку в передаче информации. Во многих случаях контекстная информация из только что прошедшего цикла характеризует собой состояние Маркова нулевого порядка, а контекстная информация из более отдаленного прошлого представляет состояние Маркова более высокого порядка. Показанный на фиг. 25 вариант осуществления изобретения устраняет задержку передачи информации, неизбежную при осуществлении модели нулевого порядка во внешнем кристалле контекстной модели 1802. Однако здесь все еще может быть определение контекстного элемента с целью задержки генерируемых двоичных разрядов, обусловленной кристаллом декодирующего устройства 1802 и запоминающим устройством 1803. In FIG. 25 is a block diagram of one system with an
Следует отметить, что можно использовать другую архитектуру запоминающего устройства. Например, можно использовать систему с контекстной моделью и запоминающим устройством на одном кристалле, а кодирующее устройство - на другом кристалле. Кроме того, система может включать в себя кристалл кодирующего устройства с внутренним запоминающим устройством, которое используется для некоторых контекстов и внешнее запоминающее устройство, которое используется с другими контекстами. 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
Под действием кодированных данных на входе контекстной модели 1901 на ее выходе появляется контекстный элемент. Элемент кодированного сигнала контекста используется в качестве адреса для обращения в запоминающее устройство 1902 на основании элемента кодированного сигнала контекста для получения вероятностного состояния, которое принимается модулем преобразования состояния МОВ в код 1903, который под действием вероятностного состояния вырабатывает класс вероятности. Затем класс вероятности используется в качестве адреса для обращения в запоминающее устройство 1904 для получения счета прогонов. После этого счет прогонов используется генератором двоичных разрядов 1905 для вырабатывания декодированных данных. Under the influence of encoded data at the input of the
В одном варианте осуществления изобретения запоминающее устройство 1902 представляет собой память объемом 1024•7 двоичных разрядов (1024 - число различных контекстов), тогда как запоминающее устройство 1904 представляет собой память 25•14 двоичных разрядов (25 - число различных счетов прогонов). In one embodiment,
Поскольку состояние генератора двоичных разрядов (счетов прогонов и т.д. ) связано с классами вероятности, а не с элементами кодированных сигналов контекста, имеется дополнительная конвейерная задержка перед тем, как двоичный разряд будет представлен для использования контекстной модели. Из-за того, что обновление состояния генератора двоичных разрядов занимает множество тактовых циклов (задержка на повторное обращение к памяти состояния генератора двоичных разрядов), для каждого класса вероятности будет использовано множество состояний генератора двоичных разрядов. Например, если конвейер занимает шесть тактовых циклов, то память состояний генератора двоичных разрядов имеет шесть входных сообщений на класс вероятности. Для выбора надлежащей ячейки памяти используется счетчик. Даже при большом количестве входных сообщений на класс вероятности размер памяти обычно бывает меньше, чем количество контекстов. Память может быть реализована либо в виде множества банков данных статистического запоминающего устройства с произвольной выборкой, либо в виде многопортового регистрового файла. 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
В декодирующем устройстве имеется счетчик для каждой вероятности. Когда новое кодовое слово используется для запуска прогона, в счетчик загружается 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
В исходном положении каждый указатель, назначенный потоку, указывает начало страницы памяти, а свободный указатель - на следующую имеющуюся страницу памяти. Кодированные данные из конкретного потока запоминаются в ячейке памяти, адресованной соответственным указателем. Затем указатель получает приращение для следующей ячейки памяти. 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
Контекстная модель 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
Если необходимо получить желательное быстродействие, то для обеспечения требуемой быстроты декодирования данных можно осуществить предварительное декодирование одного или больше двоичных разрядов. В некоторых вариантах осуществления изобретения во избежание необходимости обновления большого счета прогонов каждый тактовый цикл осуществляется расчленение как кодирования кодовых слов, так и подсчета прогонов для данных кодов. 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
Блок коротких прогонов 2101 подсоединен для приема разблокирующего сигнала и кодового слова (0... 2) в качестве входных сигналов для генератора двоичных разрядов, а также сигнала "все нули" (на фиг. 28 "все единицы") и сигнала "нулевой счет" (указывающего счет нуля) из блока длинных прогонов 2102. В ответ на эти входные сигналы блок коротких прогонов 2101 выдает декодированный двоичный разряд и индикацию следующего сигнала, которая сигнализирует, что необходимо новое кодовое слово. Блок коротких прогонов 2101 вырабатывает также сигнал разблокирования счета, сигнал загрузки счета и сигнал максимального счета для блока длинных прогонов 2102. Блок длинных прогонов 2102 подсоединен также для приема кодового слова (к... 3) в качестве входного сигнала для генератора двоичных разрядов. The
Блок коротких прогонов 2101 манипулирует прогонами длиной вплоть до 4 и подобен генератору двоичных разрядов R2(2). В одном варианте осуществления изобретения блок коротких прогонов 2101 одинаковый для всех кодов R2(к>2). Назначение блока длинных прогонов 2102 заключается в определении, когда необходимо выводить последний из 1-4 двоичных разрядов прогона. Блок длинных прогонов 2102 имеет входы, логическую схему И и счетчик, размер которого изменяется с изменением к. The
Один вариант осуществления блока счета длинных прогонов 2102 показан на фиг. 29. Блок длинных прогонов 2102 содержит логическую схему И 2201, подсоединенную для приема кодового слова (к...3), и выдает сигнал "все единицы" в виде логической "1", если все двоичные разряды в кодовом слове представляют собой единицы, тем самым показывая, что кодовое слово представляет собой кодовое слово "1N" и что счет прогонов меньше 4. Логическая схема НЕ 2202 также подсоединена для приема кодового слова и инвертирует его. Выход логической схемы НЕ 2202 подсоединен к одному входу счетчика двоичных разрядов 2203. Счетчик двоичных разрядов 2203, кроме того, подсоединен для приема сигнала разблокирования счета, сигнала загрузки счета и сигнала максимума счета. В ответ на входные сигналы счетчик двоичных разрядов 2203 генерирует сигнал нулевого счета. One embodiment of the long
В одном варианте осуществления изобретения счетчик 2203 представляет собой счетчик к-2 разрядов и используется для разрыва счетов длинных прогонов на прогоны из четырех БВС и, возможно, некоторого остатка. Сигнал разблокирования счета показывает, что выведены четыре символа БВС и счетчик должен получить отрицательное приращение. Сигнал загрузки счета используется при декодировании кодовых слов "1N" и вызывает загрузку счетчика дополнением двоичных разрядов кодового слова от к до 3. Сигнал максимума счета используется при декодировании кодовых слов "0" и загружает счетчик их максимальным значением. Выходной сигнал нулевого счета индицирует, когда показание счетчика равно нулю. In one embodiment of the invention, the
Один вариант осуществления изобретения блока счета коротких прогонов 2101 показан на фиг. 30. Блок счета коротких прогонов содержит модуль управления 2301, двухразрядный счетчик 2302 и трехразрядный счетчик 2303. Модуль управления 2301 принимает разблокирующий сигнал, кодовое слово (0...2) и сигналы "все единицы" и "нулевой счет" с блока длинных прогонов. Двухразрядный счетчик используется для счета четырехразрядных прогонов символов БВС, являющихся частью более длинных прогонов. Счетчик R2(2) и двоичный разряд МВС (в сумме три двоичных разряда) 2303 используются для вырабатывания в конце прогона 1-4 двоичных разрядов. Разблокирующий входной сигнал указывает, что на выходе двоичных разрядов должен вырабатываться двоичный разряд. Нулевой счет поступает на вход, когда не подтверждены индикации, что прогон четырех символов БВС должен быть выдан. Всякий раз, когда счетчик БВС 2302 достигает нуля, формируется выходной сигнал разблокирования счета. Когда формируется входной сигнал нулевого счета, то либо используется счетчик R2(2) МВС, либо декодируется новое кодовое слово и формируется следующий выходной сигнал. One embodiment of the short
Когда декодируется новое кодовое слово, выполняемые действия определяются вводом кодового слова. Если на входе имеется кодовое слово "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
С точки зрения системы количество кодов должно быть небольшим для хорошей работы системы, обычно 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
Значение в регистре 2402 дополняется с каждым выполнением операции декодирования (то есть с каждым набором данных, а не с каждым декодированным двоичным разрядом). Логическая схема ИСКЛЮЧАЮЩЕЕ ИЛИ 2403 сравнивает достоверность каждой выбранной ячейки памяти со значением регистра для определения, достоверна ли выбранная ячейка памяти для данной операции декодирования. Это осуществляют с использованием логической схемы ИСКЛЮЧАЮЩЕЕ ИЛИ 2403, проверяя, совпадает ли двоичный разряд инициализированного состояния с надлежащим состоянием в регистре 2402. Если данные в запоминающем устройстве 2401 не достоверны, логическая схема управления 2404 вызывает пропускание данных логической схемой преобразования состояния в код и вместо этого использование начального состояния МОВ. Это выполняется с использованием мультиплексора 2408. Когда в запоминающее устройство записывается новое состояние МОВ, инициализированный двоичный разряд устанавливается на текущее значение регистра, так что при новом обращении это значение будет считаться достоверным. The value in
Каждое содержимое запоминающего устройства элементов контекста должно иметь свой двоичный разряд инициализированного состояния, установленный на текущее значение регистра до того, как может начаться другая операция декодирования. Счетчик 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.
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
Отметим, что для каждой таблицы после приема определенного количества символов БВС декодирующее устройство выходит из режимов быстрого адаптирования. В желаемом варианте осуществления изобретения после выхода из режимов быстрой адаптации не существует механизма возвращения в них, за исключением повторного запуска процесса декодирования. В других вариантах осуществления таблицу состояний можно разработать так, чтобы повторно входить в эти режимы быстрой адаптации посредством обеспечения возможности более быстрого адаптирования, настоящее изобретение дает возможность декодирующему устройству быстрее вступить в более асимметричные коды, извлекая тем самым возможную пользу из улучшенного уплотнения. Отметим, что быструю адаптацию можно устранить для конкретной таблицы путем изменения содержимого таблицы для текущего состояния 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
Для всех этих таблиц данные для каждого состояния представляют код для этого состояния, следующего состояния при положительной коррекции (вверх) и следующего состояния при отрицательной коррекции (вниз). Звездочками указаны состояния, когда символы БВС должны измениться при отрицательной коррекции. 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
Соответствующая настоящему изобретению параллельная система применима также для обеспечения более эффективной пропускной способности из-за умеренно быстрых каналов, подобных цифровой сети связи с интеграцией служб и комплексными услугами (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
Соответствующая настоящему изобретению система представляет собой переходный вариант для части кодирующего устройства статистического кода телевизионной системы, работающей в реальном масштабе времени, подобной стандартам телевидения высокой четкости (ТВВЧ) и телевидения группы экспертов по движущемуся изображению (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
В то время как множество изменений и модификаций настоящего изобретения несомненно должны быть очевидны специалистам в данной области техники после прочтения описания, должно быть ясно, что конкретный вариант осуществления изобретения, показанный и описанный с помощью иллюстраций, не предназначен для того, чтобы считать его в качестве ограничения. Следовательно, ссылки на детали предпочтительного варианта осуществления изобретения не предназначены для ограничения объема формулы изобретения, в которой перечисляются только особенности, которые рассматриваются в виде сущности изобретения. 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)
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)
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)
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)
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 |
-
1995
- 1995-08-24 CA CA002156889A patent/CA2156889C/en not_active Expired - Fee Related
- 1995-09-07 GB GB9518375A patent/GB2293735B/en not_active Expired - Fee Related
- 1995-09-07 TW TW084109370A patent/TW410311B/en not_active IP Right Cessation
- 1995-09-29 JP JP25379295A patent/JP3272580B2/en not_active Expired - Fee Related
- 1995-09-29 CN CNB951172328A patent/CN1136659C/en not_active Expired - Fee Related
- 1995-09-29 NL NL1001317A patent/NL1001317C2/en not_active IP Right Cessation
- 1995-09-29 FR FR9511521A patent/FR2725330B1/en not_active Expired - Fee Related
- 1995-09-29 RU RU95116587A patent/RU2117388C1/en not_active IP Right Cessation
- 1995-09-29 DE DE19536401A patent/DE19536401B4/en not_active Expired - Fee Related
- 1995-09-30 KR KR1019950033942A patent/KR100240372B1/en not_active IP Right Cessation
Cited By (27)
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 |