DE19536401A1 - Method and device for encoding and decoding data - Google Patents

Method and device for encoding and decoding data

Info

Publication number
DE19536401A1
DE19536401A1 DE19536401A DE19536401A DE19536401A1 DE 19536401 A1 DE19536401 A1 DE 19536401A1 DE 19536401 A DE19536401 A DE 19536401A DE 19536401 A DE19536401 A DE 19536401A DE 19536401 A1 DE19536401 A1 DE 19536401A1
Authority
DE
Germany
Prior art keywords
code
data
memory
bit
code word
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE19536401A
Other languages
German (de)
Other versions
DE19536401B4 (en
Inventor
Edward L Schwartz
Michael J Gormish
James D Allen
Martin Boliek
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Publication of DE19536401A1 publication Critical patent/DE19536401A1/en
Application granted granted Critical
Publication of DE19536401B4 publication Critical patent/DE19536401B4/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

The invention provides an encoder for use in a data compression system having a decoder for decoding information generated by the encodor. The encoder 600 includes a reorder unit 606 that generates 8 coded data stream 608 in response to the codeword information 604 from the coder 602. The reorder unit comprises a run count reorder unit 801 for arranging codewords into a decoding order and a bit pack unit 802 to combine variable length codeword 803 into fixed length interleaved words 805 and to output them in an order required by the decoder. Reorder unit 801 moves codewords from the end of runs as created by the encoder to the beginning of runs as needed by the decoder. The decoder is delay tolerant. <IMAGE>

Description

Die Erfindung betrifft Verfahren und eine Einrichtung zum Codie­ ren und Decodieren von Daten und betrifft insbesondere das Ge­ biet der Datenkompressions- und -Dekompressionssysteme; darüber hinaus betrifft die Erfindung ein Verfahren und eine Einrichtung zum parallelen Codieren und Decodieren von Daten in Kompres­ sions/Dekompressionssystemen.The invention relates to methods and a device for coding Ren and decoding of data and relates in particular to Ge offers data compression and decompression systems; about that the invention also relates to a method and a device for parallel coding and decoding of data in compresses sions / decompression systems.

Heutzutage wird Datenkompression in großem Umfang insbesondere zum Speichern und Übertragen großer Datenmengen verwendet. Beim Stand der Technik sind verschiedene Datenkompressionstechniken bekannt, welche in zwei breite Kategorien eingeteilt werden kön­ nen, nämlich ein verlustbehaftetes und ein verlustfreies Codie­ ren. Verlustbehaftetes Codieren schließt ein Codieren ein, wel­ ches auf den Verlust von Information hinausläuft, so daß es kei­ ne Garantie für eine einwandfreie Rekonstruktion der ursprüngli­ chen bzw. Originaldaten gibt. Bei verlustfreier Kompression wird alle Information wieder erhalten und die Daten werden in einer Weise komprimiert, die eine einwandfreie Rekonstruktion zuläßt.Nowadays, data compression is particularly widespread used to store and transfer large amounts of data. At the Various data compression techniques are state of the art known, which can be divided into two broad categories NEN, namely a lossy and a lossless Codie Ren. Lossy coding includes coding, which It boils down to the loss of information so it doesn't ne guarantee for a perfect reconstruction of the original Chen or original data there. With lossless compression all information is received again and the data is stored in one Compressed in a way that allows a perfect reconstruction.

Bei verlustfreier Kompression werden eingegebene Symbole in aus­ gegebene Codewörter umgesetzt. Wenn die Kompression erfolglich ist, werden die Codewörter in weniger Bits dargestellt als die Anzahl eingegebener Symbole. Verlustfreie Codiermethoden enthal­ ten Wörterbuchmethoden des Codierens (z. B. Lempel-Ziv), ein Lauflängencodieren, ein enumeratives Codieren und ein Entropie-Codieren.With lossless compression, symbols entered in are off given code words implemented. If the compression is successful the code words are represented in fewer bits than that Number of symbols entered. Contain lossless coding methods dictionary methods of coding (e.g. Lempel-Ziv)  Run length coding, enumerative coding and one Entropy coding.

Entropie-Codieren besteht aus einem verlustfreien Codierverfah­ ren, bei welchem versucht wird, Daten nahe bei der Entropie-Grenze mit Hilfe bekannter oder geschätzter Symbolwahrschein­ lichkeiten zu komprimieren. Entropie-Codes enthalten Huffman-Codes, arithmetische Codes und binäre Entropie-Codes. Binäre Entropie-Codierer sind verlustfreie Codierer, welche nur auf binäre (ja/nein) Entscheidungen wirken, die oft als das wahr­ scheinlichste Symbol (MPS) und das am wenigsten wahrscheinliche Symbol (LPS) ausgedrückt sind. Beispiel von binären Entropie-Co­ dierern enthalten IBM′s Q-Coder und einen Coder, der als der B-Coder bezeichnet ist. (Bezüglich mehr Information zu dem B-Coder siehe US Patent Nr. 5,272,478 mit dem Titel "Verfahren und Einrichtung zum Entropie-Codieren" (J.D. Allen), einge­ reicht am 21. Dezember 1993 von der Anmelderin der vorliegenden Erfindung. Siehe ebenfalls M.J. Gormisch and J.D. Allen, "Fini­ te State Machine Binary Entropy Coding", Abstract in Proc. Data Compression Conference, 30. March 1993, Snowbird, UT, S. 449.) Der B-Coder ist ein binärer Entropie-Coder, welcher einen end­ lichen Automaten zur Kompression benutzt.Entropy coding consists of a lossless coding process which tries to get data close to the Entropy limit with the help of known or estimated symbol probabilities ways to compress. Entropy codes contain Huffman codes, arithmetic codes and binary entropy codes. Binary Entropy encoders are lossless encoders that are only based on binary (yes / no) decisions act that are often considered true most likely symbol (MPS) and the least likely Symbol (LPS) are expressed. Example of binary entropy co These include IBM’s Q coder and a coder that is the B-coder is designated. (For more information on that B-coder, see US Patent No. 5,272,478 entitled "Method and Entropy Coding Device "(J.D. Allen) filed on December 21, 1993 by the applicant of the present Invention. See also M.J. Gormisch and J.D. Allen, "Fini State Machine Binary Entropy Coding ", abstract in Proc. Data Compression Conference, March 30, 1993, Snowbird, UT, p. 449.) The B coder is a binary entropy coder, which has an end automaton used for compression.

Fig. 33 zeigt ein Blockdiagramm eines bekannten Kompressions- und Dekompressionssystems mit einem binären Entropie-Coder. Zum Codieren werden Daten in ein Textmodell (CM) 101 eingegeben, welches die eingegebene Daten in einen Satz oder Folge von Bi­ närentscheidungen übersetzt, und ein Kontextfach (context bin) für jede Entscheidung schafft. Sowohl die Folge an binären Ent­ scheidungen als auch deren zugeordnete Kontextfächer werden von dem Kontextmodell 101 an den Wahrscheinlichkeitsbewertungs- oder Schätz-(PE)Modul 102 abgegeben. Der PE-Modul 102 erhält jedes Textfach und erzeugt eine Wahrscheinlichkeitsbewertung für jede binäre Entscheidung. Die tatsächliche Wahrscheinlich­ keitsbewertung wird üblicherweise durch eine Klasse darge­ stellt, die als P-Klasse bezeichnet ist. Jede P-Klasse wird für einen Wahrscheinlichkeitsbereich verwendet. Der PE-Modul 102 bestimmt auch, ob die binäre Entscheidung (das Ergebnis) in dem wahrscheinlicheren Zustand ist oder nicht (d. h. ob die Ent­ scheidung dem MPS entspricht). Ein Bitstromgenerator (BG-)Modul 103 erhält die Wahrscheinlichkeitsbewertung (d. h. die P-Klasse) und die Feststellung, ob die binäre Entscheidung wahrscheinlich ist oder nicht, als Eingangssignale. Dementsprechend erzeugt der BG-Modul 103 einen komprimierten Datenstrom, der null oder mehr Bits abgibt, um die ursprünglichen eingegebenen Daten dar­ zustellen. Fig. 33 shows a block diagram of a known compression and decompression system with a binary entropy encoder. For coding, data is entered into a text model (CM) 101 , which translates the entered data into a set or sequence of binary decisions, and creates a context bin for each decision. Both the sequence of binary decisions and their associated context subjects are delivered by the context model 101 to the probability assessment or estimation (PE) module 102 . The PE module 102 receives each text subject and generates a probability score for each binary decision. The actual probability rating is usually represented by a class called the P class. Each P class is used for a probability range. The PE module 102 also determines whether or not the binary decision (the result) is in the more likely state (ie, whether the decision corresponds to the MPS). A bitstream generator (BG) module 103 receives the probability rating (ie, the P class) and the determination of whether the binary decision is likely or not as input signals. Accordingly, the BG module 103 generates a compressed data stream that outputs zero or more bits to represent the original input data.

Zum Codieren schafft das Kontextmodell 104 ein Kontextfach an dem PE-Modul 105, der die Wahrscheinlichkeitsklasse (P-Klasse) an dem BG-Modul 107 auf der Basis des Kontextfachs schafft. Der BG-Modul 106 ist vorgesehen, um die Wahrscheinlichkeitsklasse aufzunehmen. Entsprechend der Wahrscheinlichkeitsklasse und den komprimierten Daten kehrt der BG-Modul 106 auf ein Bit zurück, welches darstellt, ob die binäre Entscheidung (d. h. das Ereig­ nis) in dem wahrscheinlichsten Zustand ist. Der PE-Modul 105 empfängt das Bit, aktualisiert die Wahrscheinlichkeitsbewertung auf der Basis des empfangenen Bits und gibt das Ergebnis an das Kontextmodell 104 zurück. Das Kontextmodell 104 erhält das zu­ rückgebrachte Bit und verwendet es, um die ursprünglichen Daten zu erzeugen und um das Kontextfach für die nächste binäre Ent­ scheidung zu aktualisieren.For coding, the context model 104 creates a context subject on the PE module 105 , which creates the probability class (P class) on the BG module 107 based on the context subject. The BG module 106 is provided to accommodate the probability class. According to the probability class and the compressed data, the BG module 106 returns to a bit which represents whether the binary decision (ie the event) is in the most likely state. The PE module 105 receives the bit, updates the probability score based on the received bit, and returns the result to the context model 104 . The context model 104 receives the bit to be returned and uses it to generate the original data and to update the context bin for the next binary decision.

Eine Schwierigkeit bei Decodierern, die binäre Entropie-Codes verwenden, wie IBM′s Q-Coder und B-Coder, besteht darin, daß sie langsam sind, selbst wenn sie in Hardware ausgeführt sind. Diese Betriebsweise erfordert eine einzige große langsame Rück­ kopplungsschleife. Um den Decodierprozeß neu darzustellen, ver­ wendet das Kontextmodell früher decodierte Daten, um einen Kon­ text zu erzeugen. Der Wahrscheinlichkeitsbewertungsmodul be­ nutzt den Kontext, um eine Wahrscheinlichkeitsklasse zu erzeu­ gen. Der Bitstrom-Generator verwendet die Wahrscheinlichkeits­ klasse und die komprimierten Daten, um zu bestimmen, ob das nächste Bit das wahrscheinliche oder unwahrscheinliche Ergebnis ist. Der Wahrscheinlichkeits-Bewertungsmodul benutzt das wahr­ scheinliche/unwahrscheinliche Ergebnis, um ein Ergebnisbit zu erzeugen (und um die Wahrscheinlichkeitsbewertung für den Kon­ text zu aktualisieren). Das Ergebnisbit wird von dem Kontextmo­ dell verwendet, um die Entwicklung von früheren Daten zu aktua­ lisieren. Alle diese Schritte sind zum Decodieren eines einzi­ gen Bits erforderlich. Da das Kontextmodell auf das Ergebnisbit warten muß, um dessen Entwicklung zu aktualisieren, bevor es den nächsten Kontext schaffen kann, muß das Decodieren des nächsten Bits warten. Es sollte vermieden werden, darauf zu war­ ten, daß die Kopplungsschleife vor einem Decodieren des näch­ sten Bits vervollständigt ist. Mit anderen Worten, es sollte möglichst mehr als ein Bit oder ein Codewort zu einer bestimm­ ten Zeit decodiert werden, um die Geschwindigkeit zu erhöhen, mit welcher komprimierte Daten decodiert werden.A difficulty with decoders that use binary entropy codes use, like IBM's Q-Coder and B-Coder, is that they are slow, even if they are executed in hardware. This mode of operation requires a single large slow return coupling loop. To redraw the decoding process, ver the context model applies previously decoded data to a con to generate text. The probability assessment module be uses the context to create a probability class The bitstream generator uses the probability class and the compressed data to determine if that  next bit the likely or improbable result is. The probability assessment module uses the true apparent / improbable result to a result bit generate (and the probability rating for the con update text). The result bit is derived from the context mo dell used to update the development of previous data lize. All of these steps are for decoding one bits required. Since the context model is based on the result bit must wait to update its development before it can create the next context, the decoding of the wait next bits. It should be avoided feeling too that the coupling loop before decoding the next most bits is completed. In other words, it should if possible, more than one bit or one code word for a specific one decoded to increase the speed, with which compressed data is decoded.

Eine weitere Schwierigkeit bei Decodierern mit binären Entro­ pie-Codes besteht darin, daß Daten veränderlicher Länge verar­ beitet werden müssen. In den meisten Fällen haben die zu codie­ renden Code-Worte variable Längen. Andererseits codieren andere Systeme Symbole variabler Länge (uncodierte Daten). Bei einem Verarbeiten der Daten variabler Länge müssen die Daten auf einen Bitpegel verschoben werden, um die korrekten, nächsten Daten für die Decodier- oder Codieroperation zu schaffen. Diese Bitpegel-Manipulationen an dem Datenstrom können eine kostspie­ lige und/oder langsame Hardware und/oder Software erfordern. Ferner muß bei herkömmlichen Systemen dieses Verschieben in zeitkritischen Rückkopplungsschleifen vorgenommen werden, wel­ che die Leistungsfähigkeit des Decodierers begrenzen. Es würde also vorteilhaft sein, die Bitpegel-Manipulation des Daten­ stroms aus zeitkritischen Rückkopplungsschleifen zu entfernen, so daß eine Parallelität angewendet werden könnte, um die Ge­ schwindigkeit zu erhöhen.Another difficulty with decoders with binary entro Pie codes consist of data of variable length must be processed. In most cases they have to be coded code words of variable lengths. On the other hand, others code Systems symbols of variable length (uncoded data). At a Processing the data of variable length must include the data one bit level shifted to the correct next one To create data for the decoding or coding operation. These Bit level manipulations on the data stream can be costly some and / or slow hardware and / or software. Furthermore, in conventional systems this shifting in time-critical feedback loops are made, wel limit the performance of the decoder. It would so be advantageous to the bit level manipulation of the data remove current from time-critical feedback loops, so that parallelism could be applied to the Ge increase speed.

Die Erfindung schafft ein verlustfreies Kompressions- und De­ kompressionssystem. Die Erfindung schafft auch einen Realzeit-Co­ dierer und einen Realzeit-Decodierer, welche Daten parallel codieren bzw. decodieren. Der Codierer und der Decodierer der Erfindung erzeugen ein ausgeglichenes, paralleles Entropie-Sy­ stem, welches sowohl ein Real zeit-Codieren als auch ein Real­ zeit-Decodieren in einer preiswerten, sehr schnellen Hardware durchführt.The invention creates a lossless compression and de  compression system. The invention also creates a real time co dierer and a real-time decoder, which data in parallel encode or decode. The encoder and decoder of the Invention create a balanced, parallel entropy sy stem, which is both a real time coding and a real time decoding in an inexpensive, very fast hardware carries out.

Gemäß der Erfindung ist dies bei Verfahren und Einrichtungen zum Codieren von Daten nach Anspruch 1, 8, 28, 49, 55, 88, 94 und 98 erreicht. Ferner ist dies bei Verfahren und Einrichtun­ gen zum Decodieren von Daten nach Anspruch 62, 65, 71, 76, 89, 93, 97, 99, 101, 105, 106, 108 und 117 erreicht. Vorteilhafte Weiterbildungen sind Gegenstand von auf einen der vorherigen Ansprüche unmittelbar oder mittelbar rückbezogenen Ansprüche.According to the invention, this is the case with methods and devices for encoding data according to claim 1, 8, 28, 49, 55, 88, 94 and reached 98. This is also the case with procedures and equipment gene for decoding data according to claim 62, 65, 71, 76, 89, 93, 97, 99, 101, 105, 106, 108 and 117 reached. Beneficial Further training is the subject of one of the previous ones Claims directly or indirectly related claims.

Somit sind Verfahren und Einrichtungen zum Dekomprimieren und Komprimieren von Daten geschaffen. Die Erfindung schafft einen Codierer für eine Verwendung in einem Kompressionssystem, das einen Decodierer zum Codieren von mittels des Codierers erzeug­ ter Information hat. Der Codierer der Erfindung schließt einen Coder zum Erzeugung von Codewort-Information entsprechend Daten ein. Der Codierer schließt auch eine Umordnungseinheit ein, die einen codierten Datenstrom entsprechend der Codewort-Informa­ tion von dem Coder erzeugt. Die Umordnungseinheit weist eine Durchlaufzähl-Umordnungseinheit, um Codewörter in einer Deco­ dierreihenfolge anzuordnen, und eine Bitpackeinheit auf, um Co­ dewörter variabler Länge zu verschachtelten Worten fester Länge zu verknüpfen und um die verschachtelten Worte fester Länge in einer von dem Decodierer geforderten Reihenfolge abzugeben.Thus, methods and devices for decompressing and Compress data created. The invention creates one Encoder for use in a compression system, the generate a decoder for coding by means of the encoder ter has information. The encoder of the invention includes one Encoder for generating code word information corresponding to data on. The encoder also includes a reordering unit that an encoded data stream according to the codeword informa tion generated by the encoder. The reordering unit has one Pass count shuffling unit to code words in a deco the order and a bit pack unit to Co words of variable length to nested words of fixed length to link and around the nested words of fixed length in in an order required by the decoder.

Nachfolgend wird die Erfindung anhand von bevorzugten Ausfüh­ rungsformen unter Bezugnahme auf die anliegenden Zeichnungen im einzelnen beschrieben. Es zeigen: The invention is based on preferred embodiments tion forms with reference to the accompanying drawings in described. Show it:  

Fig. 1A ein Blockdiagramm eines Codiersystems gemäß der Erfin­ dung; FIG. 1A according to the dung OF INVENTION a block diagram of an encoding system;

Fig. 1B ein Blockdiagramm einer Ausführungsform eines Codiersy­ stems gemäß der Erfindung; 1B is a block diagram of an embodiment of a Codiersy stems according to the invention.

Fig. 1C ein Blockdiagramm einer Ausführungsform des Decodiersy­ stems der Erfindung, welches Kontextfächer parallel ver­ arbeitet; Fig. 1C is a block diagram of an embodiment of the decoding system of the invention, which context subjects processes in parallel;

Fig. 1D ein Blockdiagramm einer Ausführungsform des Decodiersy­ stems der Erfindung, welches Wahrscheinlichkeitsklassen parallel verarbeitet; Fig. 1D is a block diagram of an embodiment of the Decodiersy stems of the invention which processes probability classes parallel;

Fig. 2 einen nicht-verschachtelten Codestrom der Erfindung; Figure a non-interleaved code stream of the invention. 2;

Fig. 3 eine Ausführungsform des verschachtelten Codestroms, der beispielsweise von einem Datensatz abgeleitet ist; Fig. 3 shows an embodiment of the interleaved code stream, which is for example derived from a data set;

Fig. 4 ein Beispiel einer Wahrscheinlichkeits-Bewertungstabelle und eines Bitstrom-Generators für den R-Coder der Erfin­ dung; Fig. 4 shows an example of a probability evaluation table and a bit stream generator for the R-coder of the invention;

Fig. 5 ein Blockdiagramm einer Ausführungsform eines Codierers der Erfindung; Fig. 5 is a block diagram of an embodiment of an encoder of the invention;

Fig. 6 ein Blockdiagramm einer Ausführungsform eines Bitgenera­ tors der Erfindung; Fig. 6 is a block diagram of an embodiment of a bit generator of the invention;

Fig. 7 ein Blockdiagramm einer Ausführungsform einer Umord­ nungseinheit der Erfindung; Fig. 7 is a block diagram of an embodiment of a Umord-drying unit of the invention;

Fig. 8 ein Blockdiagramm einer Ausführungsform der Durchlauf­ zähl-Umordnungseinheit der Erfindung; Fig. 8 is a block diagram of an embodiment of the run count reorder unit of the invention;

Fig. 9 ein Blockdiagramm einer weiteren Ausführungsform einer Ablaufzähl-Umordnungseinheit der Erfindung; Fig. 9 is a block diagram of another embodiment of a flow counter reordering unit of the invention;

Fig. 10 ein Blockdiagramm einer Ausführungsform einer Bit­ packungseinheit der Erfindung; FIG. 10 is a block diagram of an embodiment of a bit packing unit of the invention;

Fig. 11 ein Blockdiagramm einer Ausführungsform einer Packlogik der Erfindung; FIG. 11 is a block diagram of an embodiment of a packing logic of the invention;

Fig. 12 ein Blockdiagramm eines Codier-Bitgenerators der Erfin­ dung; Fig. 12 is a block diagram of an encoding bit generator of the invention;

Fig. 13A ein Blockdiagramm einer Ausführungsform des Decodiersy­ stems der Erfindung; FIG. 13A is a block diagram of an embodiment of the Decodiersy stems of the invention;

Fig. 13B ein Blockdiagramm eines Decodierers der Erfindung; FIG. 13B is a block diagram of a decoder of the invention;

Fig. 13C ein Blockdiagramm einer Ausführungsform der FIFO-Struk­ tur der Erfindung; FIG. 13C is a block diagram of one embodiment of the FIFO structural structure of the invention;

Fig. 14A eine Ausführungsform einer Decodier-Pipeline der Erfin­ dung; FIG. 14A is an embodiment of a decoding pipeline ESTABLISHING THE OF INVENTION;

Fig. 14B eine Ausführungsform eines Decodierers der Erfindung; FIG. 14B is an embodiment of a decoder of the invention;

Fig. 15A ein Blockdiagramm einer Ausführungsform einer Schiebe­ einheit der Erfindung; FIG. 15A is a block diagram of an embodiment of a shift unit of the invention;

Fig. 15B ein Blockdiagramm einer weiteren Ausführungsform einer Schiebeeinheit der Erfindung; FIG. 15B is a block diagram of another embodiment of a shift unit of the invention;

Fig. 16 ein Blockdiagramm eines Systems mit einem externen Kon­ textmodell; FIG. 16 is a block diagram of a system with an external con text model;

Fig. 17 ein Blockdiagramm eines anderen Systems mit einem exter­ nen Kontextmodell; Figure 17 is a block diagram of another system with an external context model.

Fig. 18 ein Blockdiagramm einer Ausführungsform eines Decodie­ rers der Erfindung; FIG. 18 is a block diagram of an embodiment of a Decodie RERS of the invention;

Fig. 19 ein Blockdiagramm einer Ausführungsform eines Decodie­ rers mit separaten Bitgeneratoren; FIG. 19 is a block diagram of an embodiment of a Decodie RERS with separate bit generators;

Fig. 20 ein Blockdiagramm einer Ausführungsform eines Bitgenera­ tors der Erfindung; FIG. 20 is a block diagram of an embodiment of a Bitgenera tors of the invention;

Fig. 21 ein Blockdiagramm einer Ausführungsform einer langen Durchlaufeinheit der Erfindung; Figure 21 is a block diagram of one embodiment of a long pass unit of the invention;

Fig. 22 ein Blockdiagramm einer Ausführungsform einer kurzen Durchlaufeinheit der Erfindung; FIG. 22 is a block diagram of an embodiment of a short processing unit of the invention;

Fig. 23 ein Blockdiagramm einer Ausführungsform einer Initiali­ sierungs- und Steuerlogik der Erfindung; FIG. 23 is a block diagram of an embodiment of a Initiali sierungs- and control logic of the invention;

Fig. 24 ein Blockdiagramm einer Ausführungsform von Umordnungs­ daten mit Hilfe eines "Snooper"-Codierer; FIG. 24 is a block diagram of one embodiment of shuffling data using a "Snooper"encoder;

Fig. 25 ein Blockdiagramm einer weiteren Ausführungsform einer Umordnungseinheit; FIG. 25 is a block diagram of another embodiment of a shuffling unit;

Fig. 26 ein Blockdiagramm einer weiteren Ausführungsform einer Umordnungseinheit mit Hilfe einer gemischten Schlange (merged queue); Fig. 26 is a block diagram of another embodiment of a rearrangement with the aid of a mixed queue (queue merged);

Fig. 27 ein Blockdiagramm eines Systems großer Bandbreite, das die Erfindung benutzt; Fig. 27 is a block diagram of a wide bandwidth system using the invention;

Fig. 28 ein Blockdiagramm eines Bandbreiten-Anpassungssystems, welches die Erfindung benutzt; FIG. 28 is a block diagram of a bandwidth adaptation system that uses the invention;

Fig. 29 ein Blockdiagramm eines Realzeit-Videosystems gemäß der Erfindung; FIG. 29 is a block diagram of a real-time video system according to the invention;

Fig. 30 eine Ausführungsform eines Speichers für codierte Daten der Erfindung; Fig. 30 shows an embodiment of a memory for coded data of the invention;

Fig. 31 ein Zeitdiagramm des Decodiervorgangs der Erfindung; Figure 31 is a timing diagram of the decoding process of the invention;

Fig. 32 einen Graphen eines Codiererwirkungsgrades gegenüber einer MPS-Wahrscheinlichkeit der Erfindung, und Fig. 32 is a graph of Codiererwirkungsgrades compared to an MPS probability of the invention, and

Fig. 33 ein Blockdiagramm eines herkömmlichen binären Entropie-Codierers und -Decodierers. Figure 33 is a block diagram of a conventional binary entropy encoder and decoder.

Nunmehr wird ein Verfahren und eine Einrichtung zum parallelen Codieren und Decodieren von Daten beschrieben. In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten angegeben, wie beispielsweise eine spezielle Anzahl von Bits, eine Anzahl von Codierer, spezifische Wahrscheinlichkeiten, Datentypen, usw., um ein genaues Verständnis der bevorzugten Ausführungsfor­ men der Erfindung zu schaffen. Für den Fachmann ist selbstver­ ständlich, daß die vorliegende Erfindung auch ohne diese spezi­ fischen Details in der Praxis ausgeführt werden kann. Ebenso sind bekannte Schaltungen in Blockdiagrammform nicht im einzel­ nen dargestellt, um das Verständnis der Erfindung nicht unnötig zu erschweren.Now a method and a device for parallel Encoding and decoding of data described. In the following Many specific details are given in the description, such as a specific number of bits, a number of encoders, specific probabilities, data types, etc. to have a thorough understanding of the preferred embodiment to create men of the invention. For the specialist is self-ver It is understood that the present invention speci fishing details can be carried out in practice. As well are not known circuits in block diagram form in detail NEN illustrated to make the understanding of the invention unnecessary to complicate.

Einige Teile der detaillierten Beschreibung, welche folgen, sind in Form von Algorithmen und symbolischen Darstellungen von Operationen an Datenbits in einem Computer-Speicher dargestellt. Diese algorithmischen Beschreibungen und Darstellungen sind die Mittel, die von Fachleuten auf dem Datenverarbeitungsgebiet ver­ wendet werden, um den Inhalt ihrer Arbeit anderen Fachleuten möglichst effektiv zu übermitteln. Ein Algorithmus wird hier und im allgemeinen als eine in sich widerspruchfreie Folge von Schritten betrachtet, die zu einem gewünschten Ergebnis führen. Die Schritte sind solche, welche physikalische Verarbeitungen von physikalischen Größen erfordern. Üblicherweise, obwohl nicht notwendigerweise, nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die gespeichert, übertragen, ver­ knüpft, verglichen oder auf andere Weise verarbeitet werden kön­ nen. Es hat sich immer, prinzipiell aus Gründen einer gemeinsa­ men Anwendung als günstig erwiesen, auf diese Signale als Bits Werte, Elemente, Symbole, Zeichen, Terme, Zahlen o. ä. zu verwei­ sen.Some parts of the detailed description that follow are in the form of algorithms and symbolic representations of Operations on data bits are shown in computer memory. These algorithmic descriptions and representations are the Means used by data processing professionals applied to the content of their work other professionals to be transmitted as effectively as possible. An algorithm is here and generally as a self - contradicting sequence of Consider steps that lead to a desired result. The steps are those that involve physical processing of physical quantities. Usually, though not necessarily, these sizes take the form of electrical ones  or magnetic signals that are stored, transmitted, ver ties, compared or can be processed in any other way nen. It has always been, principally for reasons of commonality Men application proved to be favorable on these signals as bits To refer to values, elements, symbols, characters, terms, numbers or similar sen.

Es sollte jedoch bedacht werden, daß alle diese und ähnliche Terme den entsprechenden physikalischen Größen zuzuordnen sind und nur bequeme Bezeichnungen sind, die bei diesen Größen ange­ wendet werden. Wenn es nicht speziell ausgeführt wird oder sonst aus den folgenden Erörterungen offensichtlich wird, weisen über­ all in der Erfindung Erläuterungen, die Begriffe verwenden, wie, "Verarbeiten" oder "Berechnen" oder "Rechnen" oder "Bestimmen" oder "Anzeigen" o.a., auf die Funktion und Prozesse eines Compu­ tersystems oder einer ähnlichen elektronischen Berechnungsvor­ richtung hin, welche Daten, welche als physikalische, (elektro­ nische) Größen in den Computersystem-Registern und -Speichern dargestellt sind, bearbeitet und in andere Daten umformt, welche in ähnlicher Weise als physikalische Größen in den Rechensystem-Speichern oder -registern oder anderen derartigen Informations­ speicher-Übertragungs- oder Anzeigevorrichtungen dargestellt sind.However, it should be borne in mind that all of these and similar Terms are to be assigned to the corresponding physical quantities and only convenient terms are given in these sizes be applied. If it's not done specifically or otherwise is apparent from the following discussions all in the invention explanations using terms such as "Process" or "Calculate" or "Calculate" or "Determine" or "display" or the like, on the function and processes of a compu systems or a similar electronic calculation direction, which data, which as physical, (electro niche) sizes in the computer system registers and memories are shown, edited and converted into other data, which similarly as physical quantities in the computer system memories or registers or other such information memory transmission or display devices are.

Die Erfindung betrifft auch eine Einrichtung zum Durchführen der Operationen. Diese Einrichtung kann speziell für die gefor­ derten Zwecke ausgeführt werden, oder sie kann einen Universal­ rechner aufweisen, der selektiv durch ein in dem Computer ge­ speichertes Programm aktiviert oder rekonfiguriert wird. Die hier dargestellten Algorithmen und Anzeigen sind nicht spezi­ fisch auf einen speziellen Computer oder eine andere Einrichtung bezogen. Verschiedene Universalrechner können mit Programmen entsprechend den hier wiedergegebenen Lehren verwendet werden, oder es kann sich als vorteilhaft erweisen, eine noch mehr spe­ zialisierte Einrichtung auszuführen, um die verschiedenen Ver­ fahrensschritte durchzuführen. Die geforderte Struktur einer Vielzahl dieser Geräte ergibt sich aus der nachstehenden Be­ schreibung. Außerdem wird die Erfindung nicht bezüglich irgend­ einer speziellen Programmiersprache beschrieben. Vielmehr können eine Vielzahl von Programmiersprachen verwendet werden, um die Lehren der Erfindung, wie sie nachstehend beschrieben ist, aus­ zuführen.The invention also relates to a device for performing of operations. This facility can be specially designed for the gefor other purposes, or it can be a universal Have computer that selectively by a ge in the computer saved program is activated or reconfigured. The The algorithms and displays shown here are not speci fish on a special computer or other device based. Various universal computers can be used with programs are used in accordance with the teachings presented here, or it may prove beneficial to have one more specialized to run the various Ver carry out driving steps. The required structure of a  Many of these devices result from the following Be spelling. In addition, the invention is not related to any described in a special programming language. Rather you can a variety of programming languages are used to control the Teach the invention as described below respectively.

Paralleles Entropie-CodierenParallel entropy coding

Die Erfindung schafft ein paralleles Entropie-Codiersystem. Das System weist einen Codierer und einen Decodierer auf. In einer Ausführungsform führt der Codierer ein Codieren bei Daten in Realzeit durch. In ähnlicher Weise führt in einer Ausführungs­ form der Decodierer der Erfindung ein Decodieren bei Daten in Realzeit durch. Der Realzeit-Codierer und der Realzeit-Decodie­ rer bilden zusammen ein ausgeglichenes Codiersystem.The invention provides a parallel entropy coding system. The System has an encoder and a decoder. In a In one embodiment, the encoder performs encoding on data Real time through. Similarly, in an execution form the decoder of the invention a decoding of data in Real time through. The real-time encoder and real-time decoding Together they form a balanced coding system.

Die Erfindung schafft ein System, welches verlustfrei codierte Daten parallel decodiert. Die Daten werden parallel decodiert mit Hilfe von mehreren Decodier-Ressourcen. Jede der mehreren Decodier-Ressourcen ist Daten (z. B. Codewörtern) aus dem zu de­ codierenden Datenstrom zugeordnet. Die Zuordnung des Datenstroms kommt unterwegs (on the fly) vor, wobei die Decodier-Ressourcen Daten gleichzeitig decodieren, um dadurch den Datenstrom paral­ lel zu decodieren. Um die Datenzuordnung in einer Weise zu er­ möglichen, welche eine wirksame Verwendung der Decodier-Res­ sourcen ermöglicht, wird der Datenstrom geordnet. Dies wird als Parallelverarbeiten des Datenstroms bezeichnet. Das Ordnen von Daten läßt es zu, daß jede Decodierressource irgendwelche oder alle codierten Daten decodiert, ohne auf ein Rückkoppeln von dem Kontextmodell zu warten.The invention creates a system which encodes losslessly Data decoded in parallel. The data is decoded in parallel with the help of several decoding resources. Each of the several Decoding resources is data (e.g. code words) from the de assigned coding data stream. The allocation of the data stream occurs on the fly, using the decoding resources Decode data at the same time, thereby making the data stream paral lel to decode. To get the data mapping in a way possible, which an effective use of the decoding Res enables the data stream to be ordered. this will referred to as parallel processing of the data stream. The order of data allows each decoding resource to have any or decoded all encoded data without feedback to wait from the context model.

In Fig. 1A ist ein Decodiersystem der Erfindung ohne die her­ kömmliche langsame Rückkopplungsschleife dargestellt. Ein Einga­ bepuffer 204 erhält codierte Daten (d. h. Code-Worte), und ein Rückkopplungssignal von einem Decodierer 205 und liefert codier­ te Daten in einer vorherbestimmten Reihenfolge (z. B. Kontext­ fach-Reihenfolge) an den Decodierer 205 der Erfindung, welcher die codierten Daten decodiert. Der Decodierer 205 enthält mehre­ re Decodierer (z. B. 205A, 205B, 205C, usw.). Figure 1A shows a decoding system of the invention without the conventional slow feedback loop. An input buffer 204 receives encoded data (ie, code words) and a feedback signal from a decoder 205 and provides encoded data in a predetermined order (e.g. contextual order) to the decoder 205 of the invention, which encodes the Data decoded. Decoder 205 includes multiple decoders (e.g., 205 A, 205 B, 205 C, etc.).

In einer Ausführungsform liefert jeder der Decodierer 205A, 205B, 205C, usw. Daten für eine Gruppe von Kontexten. Jeder der Decodierer in dem Decodierer 205 liefert codierte Daten für je­ des Kontextfach in seiner Gruppe von Kontexten von einem Einga­ bepuffer 204 aus. Mit Hilfe dieser Daten erzeugt jeder Decodie­ rer 205A, 205B, 205C usw. die decodierten Daten für jede Gruppe von Kontextfächern. Das Kontextmodell ist nicht erforderlich, um codierte Daten einer bestimmten Gruppe von Kontextfächern zuzu­ ordnen.In one embodiment, each of the decoders 205 A, 205 B, 205 C, etc. provides data for a group of contexts. Each of the decoders in decoder 205 provides encoded data for each context bin in its group of contexts from an input buffer 204 . With the help of this data, each decoder 205 A, 205 B, 205 C etc. generates the decoded data for each group of context subjects. The context model is not required to assign coded data to a specific group of context subjects.

Die decodierten Daten werden von dem Decodierer 205 an einen Speicher 207 für decodierte Daten (z. B. 207A, 207B, 207C, usw.) abgegeben. Hierbei kann der Speicher 207 Zwischendaten spei­ chern, die weder codierte noch uncodierte Daten sind, wie Durch­ laufzählwerte (run counts). In diesem Fall speichert der Spei­ cher 207 Daten in einer kompakten, jedoch nicht entropie-codier­ ten Form.The decoded data is output from decoder 205 to a memory 207 for decoded data (e.g. 207 A, 207 B, 207 C, etc.). Here, the memory 207 can store intermediate data that is neither encoded nor uncoded data, such as run counts. In this case, memory 207 stores data in a compact but not entropy-encoded form.

Ein unabhängig arbeitendes Kontextmodell 206 ist vorgesehen, um die vorher decodierten Daten aus dem Speicher 207 (d. h. 207A, 207B, 207C, usw.) entsprechend einem Rückkopplungssignal zu speichern, das er an den Speicher 207 abgibt. Folglich existie­ ren zwei unabhängige Rückkopplungsschleifen, eine zwischen dem Decodierer 205 und dem Puffer 204 und eine zweite zwischen dem Kontextmodell 206 und dem Speicher 207. Da die große Rückkopp­ lungsschleife beseitigt ist, sind die Decodierer in dem Codierer 205 (z. B. 205A, 205B, 205C, usw.) in der Lage, ihre zugeordneten Codewörter zu decodieren, sobald sie von dem Puffer 205 empfan­ gen werden.An independently operating context model 206 is provided to store the previously decoded data from memory 207 (ie 207 A, 207 B, 207 C, etc.) in accordance with a feedback signal that it outputs to memory 207 . As a result, there are two independent feedback loops, one between decoder 205 and buffer 204 and a second between context model 206 and memory 207 . Since the large feedback loop is eliminated, the decoders in encoder 205 (e.g., 205 A, 205 B, 205 C, etc.) are able to decode their associated code words as soon as they are received by buffer 205 become.

Das Kontextmodell schafft den Speicherteil des Codiersystems und teilt einen Datensatz (z. B. ein Bild) auf verschiedene Ka­ tegorien (z. B. Kontextfächer) basierend auf dem Speicher auf. In der Erfindung werden die Kontextfächer als unabhängig geordnete Datensätze betrachtet. In einer Ausführungsform hat jede Gruppe von Kontextfächern ihr eigenes Wahrscheinlichkeits-Bewertungsmo­ dell und jedes Kontextfach hat seinen eigenen Zustand (wobei Wahrscheinlichkeits-Bewertungsmodelle gemeinsam benutzt werden). Daher könnte jedes Kontextfach ein anderes Wahrscheinlichkeits-Be­ wertungsmodell und/oder einen anderen Bitstrom-Generator benut­ zen. Folglich sind die Daten geordnet oder parallel verarbeitet, und Daten aus dem Datenstrom sind den einzelnen Codierern zum Codieren zugeordnet.The context model creates the memory part of the coding system and divides a data record (e.g. an image) into different channels categories (e.g. context subjects) based on memory. In  According to the invention, the context subjects are ordered independently Considered records. In one embodiment, each group has of context subjects their own probability assessment mo dell and each context subject has its own state (where Probability assessment models are shared). Therefore, each context subject could have a different probability valuation model and / or another bitstream generator Zen. So the data is ordered or processed in parallel, and data from the data stream are used for the individual encoders Coding assigned.

Parallelität dem klassischen Entropie-Codiermodell hinzufügenAdd parallelism to the classic entropy coding model

Um den Datenstrom parallel anzuordnen, können die Daten gemäß einem Kontext, einer Wahrscheinlichkeit, einem Tiling, einer Co­ dewort-Folge (basierend auf Codewörtern) usw. aufgeteilt werden. Das Umordnen des codierten Datenstroms ist unabhängig von der Parallelität eine Methode, die verwendet wird, um Daten oder die Wahrscheinlichkeit in einem anderen Punkt parallel anzuordnen. Ein Parallel-Codiererteil eines Codiersystems der Erfindung, dem Daten zugeführt worden sind, die durch ein Kontextmodell (CM) differenziert worden sind, ist in Fig. 1B dargestellt.In order to arrange the data stream in parallel, the data can be divided according to a context, a probability, a tiling, a code word sequence (based on code words) etc. Rearranging the encoded data stream, regardless of parallelism, is a method used to parallel data or probability in another point. A parallel encoder portion of an encoding system of the invention that has been supplied with data that has been differentiated by a context model (CM) is shown in FIG. 1B.

In Fig. 1B weist der context-abhängige Parallel-Codierteil ein Kontextmodell (CM) 214, Wahrscheinlichkeits-Bewertungsmodule (PEMs) 215 bis 217 und Bitstrom-Generatoren (BGs) 218 bis 220 auf. Das Kontextmodell 214 ist vorgesehen, um codierte Eingabe­ daten aufzunehmen und ist auch mit den PE-Modulen 215 bis 217 verbunden, die wiederum mit Bitstrom-Generatoren 218 bis 220 verbunden sind, welche Codeströme 1, 2 bzw. 3 abgeben. Jedes PEM- und BG-Paar weist einen Coder auf. Daher ist der Parallel-Co­ dierer mit drei Codern dargestellt. Obwohl nur drei parallele Coder dargestellt sind, kann irgendeine Anzahl Coder verwendet werden.In FIG. 1B, the context-dependent parallel coding part has a context model (CM) 214 , probability assessment modules (PEMs) 215 to 217 and bitstream generators (BGs) 218 to 220 . The context model 214 is provided to receive coded input data and is also connected to the PE modules 215 to 217 , which in turn are connected to bitstream generators 218 to 220 , which emit code streams 1 , 2 and 3 , respectively. Each PEM and BG pair has a coder. Therefore, the parallel encoder is shown with three encoders. Although only three parallel encoders are shown, any number of encoders can be used.

Das Kontextmodell 214 teilt einen Datenstrom in verschiedene Kontexte auf dieselbe Weise wie ein herkömmliches Kontextmodell auf und gibt die mehreren Ströme an die parallelen Hardware-Co­ dier-Ressourcen ab. Individuelle Kontexte oder Gruppen von Kon­ texten sind auf gesonderte Wahrscheinlichkeitsbewerter (PEMs) 215 bis 217 und Bitgeneratoren (BGs) 218 bis 220 gerichtet, die jeweils einen codierten Strom abgeben.The context model 214 divides a data stream into different contexts in the same way as a conventional context model and delivers the multiple streams to the parallel hardware coding resources. Individual contexts or groups of contexts are directed to separate probability evaluators (PEMs) 215 to 217 and bit generators (BGs) 218 to 220 , each of which emits an encoded stream.

Fig. 1C ist ein Blockdiagramm einer Ausführungsform des Deco­ dierteils des Decodiersystems der Erfindung. In Fig. 1C ist ein kontext-abhängiger Parallel-Decodierer mit BGs 221 bis 223, PEMs 224 bis 226 und einem CM 227 dargestellt. Codeströme 1 bis 3 sind mit BGs 221 bis 223 verbunden, die auch mit PEMs 224 bis 226 verbunden sind. Die PEMs 224 bis 226 sind auch mit dem CM 227 verbunden, welches die rekonstruierten Eingangsdaten abgibt. Die Eingabe stammt aus mehreren Codeströmen, die als Codeströme 1 bis 3 dargestellt sind. Ein Codestrom ist jedem PEM und BG zu­ geordnet. Jeder der Bitstromgeneratoren (BG) 221 bis 223 bringt ein Bit zurück, welches darstellt, ob die binäre Entscheidung in einem wahrscheinlicheren Zustand ist, welchen die PEMs 224 bis 226 benutzen, um decodierte Bits (z. B. die binäre Entscheidung) zurückzuleiten. Jeder der PEMs 224 bis 226 ist einem der BGs 221 bis 223 zugeordnet, wodurch angezeigt wird, welcher Code zu be­ nutzen ist, einen Datenstrom aus dem eingegebenen Codestrom zu erzeugen. Das CM 227 erzeugt einen decodierten Datenstrom, um die decodierten Bits von den Datenstrom-Generatoren in der rich­ tigen Reihenfolge auszuwählen, um dadurch die ursprünglichen Da­ ten wieder zu erzeugen. Folglich erhält das CM 227 das dekompri­ mierte Datenbit von dem entsprechenden PEM und BG, welche tat­ sächlich die Daten in die ursprüngliche Reihenfolge umordnen. Die Steuerung für diese Ausführung fließt in der umgekehrten Richtung des Datenstroms. Die BG und PEM können Daten decodie­ ren, bevor sie das CM 227 benötigt, und zwar ein oder mehr Bits im voraus. Andererseits kann das CM 227 ein Bit von einem BG und einem PEM anfordern (aber nicht erhalten), und dann ein oder mehr Bits von anderen BGs und PEMs anfordern, bevor das anfangs angeforderte Bit verwendet wird. Fig. 1C is a block diagram of an embodiment of the decoding part of the decoding system of the invention. In Fig. 1C is a context-dependent parallel decoder BGs 221 to 223, PEMs 224-226 and presented to a CM 227th Code streams 1 through 3 are connected to BGs 221 through 223 , which are also connected to PEMs 224 through 226 . The PEMs 224 to 226 are also connected to the CM 227 , which delivers the reconstructed input data. The input comes from several code streams, which are shown as code streams 1 to 3 . A code stream is assigned to each PEM and BG. Each of the bit stream generators (BG) 221 through 223 returns a bit that represents whether the binary decision is in a more likely state that PEMs 224 through 226 use to return decoded bits (e.g., the binary decision). Each of the PEMs 224 to 226 is assigned to one of the BGs 221 to 223 , which indicates which code is to be used to generate a data stream from the input code stream. The CM 227 generates a decoded data stream to select the decoded bits from the data stream generators in the correct order, thereby recreating the original data. As a result, the CM 227 receives the decompressed data bit from the corresponding PEM and BG, which actually reorder the data in the original order. The control for this execution flows in the reverse direction of the data stream. The BG and PEM can decode data before the CM 227 needs it, one or more bits in advance. On the other hand, the CM 227 may request (but not receive) a bit from a BG and a PEM, and then request one or more bits from other BGs and PEMs before using the initially requested bit.

Die in Fig. 1C dargestellte Konfiguration ist entsprechend aus­ gelegt, um den PEM und den BG eng zu koppeln. Der IBM Q-Codie­ rer ist ein gutes Beispiel eines Codierers mit einem eng gekop­ pelten PEM und BG. Örtliche Rückkopplungsschleifen zwischen die­ sen beiden Komponenten sind keine grundlegende Begrenzung bei der Systemausführung. Bei einer anderen Auslegung könnte der PEM die Daten differenzieren und sie an parallele BG-Einheiten abge­ ben. Folglich würde es nur ein CM und PEM sein, und der BG wird unterteilt. Eine adaptives Huffmann-Codieren und ein endliches Zustands-(finite state machine)Codieren könnte auf diese Weise verwendet werden.The configuration shown in Fig. 1C is designed accordingly to closely couple the PEM and the BG. The IBM Q encoder is a good example of an encoder with a tightly coupled PEM and BG. Local feedback loops between these two components are not a fundamental limitation in system execution. In a different design, the PEM could differentiate the data and deliver it to parallel BG units. As a result, it would only be a CM and PEM, and the BG will be divided. Adaptive Huffmann coding and finite state machine coding could be used in this way.

Ein ähnliches Decodiersystem, das den PEM benutzt, um die Daten zu differenzieren und sie an parallele BGs zu senden, ist in Fig. 1D dargestellt. In diesem Fall werden Wahrscheinlichkeits­ klassen parallel behandelt und jeder Bitstrom-Generator ist einer spezifischen Wahrscheinlichkeitsklasse zugeordnet und er­ hält Kenntnis von dem Ergebnis. In Fig. 1D sind die codierten Da­ tenströme 1 bis 3 an einen von mehreren Bitstrom-Generatoren (z. B. BG 232, 233, 234, usw.) gekoppelt, welche verbunden sind, um sie aufzunehmen. Jeder der Bitstrom-Generatoren ist mit dem PEM 235 verbunden, der wiederum mit dem CM 236 verbunden ist. In dieser Konfiguration decodiert jeder der Bitstrom-Generatoren codierte Daten, und die Decodierergebnisse werden von dem PEM 235 (statt von dem CM 236) ausgewählt. Jeder der Bitstrom-Gene­ ratoren erhält codierte Daten von einer Quelle, die einer Wahr­ scheinlichkeitsklasse zugeordnet ist, (d. h. wobei die codierten Daten von irgendeinem Kontextfach sein können). Der PEM 235 wählt die Bitstrom-Generatoren mit Hilfe einer Wahrscheinlich­ keitsklasse aus. Die Wahrscheinlichkeitsklasse wird durch das Kontextfach vorgeschrieben, das durch das CM 236 vorgesehen ist. Auf diese Weise werden decodierte Daten durch paralleles Verar­ beiten von Wahrscheinlichkeitsklassen erzeugt.A similar decoding system that uses the PEM to differentiate the data and send it to parallel BGs is shown in Figure 1D. In this case, probability classes are treated in parallel and each bitstream generator is assigned to a specific probability class and it is aware of the result. In Fig. 1D, the encoded data streams 1 through 3 are coupled to one of a plurality of bit stream generators (e.g., BG 232 , 233 , 234 , etc.) which are connected to receive them. Each of the bitstream generators is connected to the PEM 235 , which in turn is connected to the CM 236 . In this configuration, each of the bitstream generators decodes encoded data and the decoding results are selected by the PEM 235 (rather than the CM 236 ). Each of the bitstream generators receives encoded data from a source associated with a probability class (ie, where the encoded data may be from any contextual subject). The PEM 235 selects the bitstream generators using a probability class. The probability class is prescribed by the context subject provided by CM 236 . In this way, decoded data are generated by parallel processing of probability classes.

Es existieren zahlreiche Ausführungen von den parallelen Co­ diersystemen der Erfindung. In einer Ausführungsform können die codierten Datenströme, die den mehreren Kontextfächern entspre­ chen, in einen Strom verschachtelt werden, welcher durch die An­ forderungen der verschiedenen Codierer geordnet ist. In einer Ausführungsform der Erfindung werden die codierten Daten so ge­ ordnet, daß jeder Codierer ständig mit Daten beliefert wird, ob­ wohl die codierten Daten dem Decodierer in einem Strom zugeführt werden. Die vorliegende Erfindung arbeitet mit allen Datentypen, einschließlich Bilddaten.There are numerous versions of the parallel Co diersystemen of the invention. In one embodiment, the  encoded data streams that correspond to the multiple context subjects be nested in a stream, which by the An requirements of the various encoders. In a Embodiment of the invention, the encoded data is so ge orders that each encoder is constantly supplied with data whether probably the coded data supplied to the decoder in one stream will. The present invention works with all data types, including image data.

Mit Hilfe kleiner einfacher Codierer, die preiswert in inte­ grierten Schaltungen unterteilt sein können, können codierte Da­ ten schnell parallel decodiert werden. In einer Ausführungsform sind die Codierer in Hardware mit Hilfe feldprogrammierbarer Ga­ te-Array-(FPGA-)Chips oder mit Hilfe eines anwendungsspezifi­ schen integrierten Schaltungs-(ASIC-)Chips ausgeführt. Die Kom­ bination von Parallelität und einfachen Bitstrom-Generatoren er­ möglicht das Decodieren von codierten Daten mit Geschwindigkei­ ten, die über denjenigen herkömmlicher Decodierer liegen, wobei der Kompressionswirkungsgrad der herkömmlichen Decodiersysteme erhalten bleibt oder überschritten wird.With the help of small simple coders that are inexpensive in inte ized circuits can be divided, coded Da can be quickly decoded in parallel. In one embodiment are the encoders in hardware using field programmable Ga Te array (FPGA) chips or with the help of an application-specific Integrated circuit (ASIC) chips executed. The Com combination of parallelism and simple bitstream generators enables decoding of encoded data with speed ten over that of conventional decoders, where the compression efficiency of conventional decoding systems is retained or exceeded.

Kanal-Ordnen von mehreren DatenströmenChannel ordering of multiple data streams

Es gibt viele Ausführungsergebnisse und Probleme, welche eine Systemausführung beeinflussen. Einige von diesen werden nachste­ hend erwähnt. Jedoch verwenden die in Fig. 1B und 1C (und 1D) dargestellten Ausführungsformen die Mehrfachcode-Ströme. Systeme mit parallelen Kanälen, die dieser Ausführungsform angepaßt wer­ den könnten, sind denkbar: Mehrere Telefonleitungen, mehrere Köpfe von einer Platteneinheit, usw. In einigen Anwendungen ist nur ein Kanal verfügbar oder passend. Statt dessen kann, wenn mehrere Kanäle gefordert werden, eine schlechte Nutzung der Bandbreite wegen der speziellen Art der einzelnen Codeströme vorliegen.There are many execution results and problems that affect system execution. Some of these are mentioned below. However, the embodiments shown in Figures 1B and 1C (and 1D) use the multi-code streams. Systems with parallel channels that could be adapted to this embodiment are conceivable: multiple telephone lines, multiple heads from a disk unit, etc. In some applications only one channel is available or suitable. Instead, if multiple channels are requested, bandwidth usage may be poor due to the particular nature of the individual code streams.

In einer Ausführungsform sind die Codeströme konzentriert und werden aneinanderhängend zu dem Decodierer abgegeben. Ein Ver­ teilerkopf enthält Zeiger zu der anfänglichen Bitstelle jedes Stroms. Fig. 2 stellt eine Ausführungsform der Anordnung dieser Daten dar. In Fig. 2 zeigen drei Zeiger 301 bis 303 die Ausgangs­ stelle in dem konzentrierten Code von Codeströmen 1, 2 bzw. 3 an. Die vollständige, komprimierte Datendatei ist in einem Puffer an dem Decodierer verfügbar. Erforderlichenfalls werden die Code­ wörter von der richtigen Stelle aus über den richtigen Zeiger wieder aufgefunden. Der Zeiger wird dann auf das nächste Code­ wort in diesem Codestrom aktualisiert.In one embodiment, the code streams are concentrated and are delivered contiguously to the decoder. A distribution header contains pointers to the initial bit location of each stream. Fig. 2 shows an embodiment of the arrangement of this data. In Fig. 2, three pointers 301 to 303 indicate the starting point in the concentrated code of code streams 1, 2 and 3 respectively. The complete, compressed data file is available in a buffer on the decoder. If necessary, the code words are retrieved from the right place using the right pointer. The pointer is then updated to the next code word in this code stream.

Dieses Verfahren erfordert einen ganzen codierten Rahmen, der in dem Decodierer und für praktische Zwecke in dem Codierer zu speichern ist. Wenn ein Realzeitsystem oder ein weniger gestör­ ter (bursty) Datenfluß erforderlich ist, dann können zwei Rah­ menpuffer für ein Anstauen (banking) sowohl an dem Codierer als auch an dem Decodierer verwendet werden.This method requires an entire coded frame that in the decoder and for practical purposes in the encoder too save is. If a real time system or less disturbed ter (bursty) data flow is required, then two frames menpuffer for accumulation (banking) both on the encoder and can also be used on the decoder.

Datenreihenfolge bezüglich Codewort-ReihenfolgeData order regarding code word order

Ein Decodierer decodiert Codewörter in einer vorgegebenen de­ terministischen Reihenfolge. Bei parallelem Codieren ist die Reihenfolge der Anforderungen an den Codestrom deterministisch. Folglich genügt, wenn die Codewörter von parallelen Codeströmen in der richtigen Reihenfolge an dem Codierer verschachtelt wer­ den, ein einziger Codestrom. Die Codewörter werden dann an den Decodierer in derselben Reihenfolge auf einer "Just-in-Time"-Ba­ sis. An dem Decodierer bestimmt ein Modell des Decodierers die Codewort-Reihenfolge und packt die Codewörter in einen einzigen Strom. Dieses Modell kann ein aktueller Decodierer sein.A decoder decodes code words in a predetermined de terminological order. With parallel coding this is Order of the requirements for the code stream deterministic. Consequently, it suffices if the code words from parallel code streams nested in the correct order on the encoder that, a single code stream. The code words are then sent to the Decoders in the same order on a just-in-time base sis. A model of the decoder determines the on the decoder Code word order and packs the code words into a single one Electricity. This model can be a current decoder.

Eine Schwierigkeit beim Übergeben der Daten an die parallelen Decodierelemente ergibt sich, wenn Daten variable Längen haben. Ein Herausnehmen eines Stroms von Codewörtern variabler Länge erfordert eine Bit-Schiebeeinheit, um die Codewörter auszurich­ ten. Bitschiebeeinheiten sind oft teuer und/oder langsam, wenn sie in Hardware ausgeführt sind. Die Steuerung der Bit-Schiebe­ einheit hängt von der Größe des speziellen Codewortes ab. Diese Steuerung einer Rückkopplungsschleife verhindert, daß ein Ver­ schieben variabler Längen schnell durchgeführt wird. Die Wirk­ samkeit, mehreren Decodierern einen einzigen Strom zuzuführen, kann nicht realisiert werden, wenn der Prozeß, den Strom nicht zu packen in einer einzigen Bit-Schiebeeinheit durchgeführt wird, die nicht schnell genug ist, um die mehreren Decodierer zu versorgen.A difficulty in passing the data to the parallel ones Decoding elements result when data have variable lengths. Taking out a stream of variable length code words requires a bit shifter to align the code words Bit shifters are often expensive and / or slow when they are executed in hardware. The control of the bit shift unit depends on the size of the special code word. These  Controlling a feedback loop prevents a ver push variable lengths is done quickly. The effect ease of supplying a single stream to several decoders, can not be realized if the process, the current is not to pack done in a single bit shifter that is not fast enough to accommodate the multiple decoders supply.

Bei der Lösung, die in der Erfindung angeboten ist, wird das Problem, die codierten Daten auf die parallelen Codierer zu ver­ teilen, von der Ausrichtung der Codewörter variabler Längen für ein Decodieren abgetrennt. Die Codewörter in jedem unabhängigen Datenstrom werden in Worte fester Länge gepackt, sogenannte ver­ schachtelte Worte. An dem Decodiererende des Kanals können diese verschachtelten Worte auf die parallelen Decodierereinheiten mit Hilfe schnell arbeitender, fest verdrahteter Datenleitungen und einer einfachen Steuerschaltung verteilt werden.With the solution offered in the invention, this is Problem of ver the encoded data on the parallel encoder divide from the alignment of the variable length code words for a decoding separated. The code words in each independent Data streams are packed in words of fixed length, so-called ver nested words. At the decoder end of the channel, these can interleaved words onto the parallel decoder units Help of fast working, hard wired data lines and a simple control circuit can be distributed.

Es ist passend, eine verschachtelte Wortlänge größer zu haben als die maximale Wortlänge, so daß zumindest genug Bits, um ein Codewort zu vervollständigen, in jedem verschachteltem Wort ent­ halten sind. Die verschachtelten Worte können dann viele Code­ wörter und Teile von Codewörtern enthalten. Fig. 3 veranschau­ licht an einem Beispiel das Verschachteln eines Satzes paralle­ ler Codeströme.It is appropriate to have an interleaved word length greater than the maximum word length so that at least enough bits to complete a code word are included in each interleaved word. The interleaved words can then contain many code words and contain parts of code words. Fig. 3 illustrates an example of the nesting of a set of parallel code streams.

Diese Worte werden entsprechend der Anforderung an den Decodie­ rer verschachtelt. Jeder unabhängige Decodierer erhält ein gan­ zes verschachteltes Wort. Die Bit-Schiebeoperation wird nunmehr lokal an jedem Decodierer vorgenommen, wodurch die Parallelität des Systems aufrecht erhalten wird. In Fig. 3 ist das erste Code­ wort in jedem verschachtelten Wort, das niedrigste verbleibende Codewort in dem Satz. Beispielsweise kommen die ersten ver­ schachtelten Worte von einem Codestrom 1, welcher mit dem nie­ drigsten Codewort (d. h. #1) beginnt. Hierauf folgt das erste verschachtelte Wort im Codestrom 2 und dann das erste verschach­ telte Wort in Codestrom 3. Jedoch ist das nächst niedrige Code­ wort, das nicht vollständig in einem bereits geordneten, ver­ schachtelten Wort enthalten ist, #7. Folglich ist das nächste Wort in dem Strom das zweite verschachtelte Wort des Codestroms 2.These words are interleaved according to the decoder request. Each independent decoder receives a whole nested word. The bit shift operation is now performed locally on each decoder, thereby maintaining the parallelism of the system. In Fig. 3, the first code word is in each interleaved word, the lowest remaining code word in the sentence. For example, the first interlaced words come from a code stream 1 , which begins with the never third code word (ie # 1). This is followed by the first nested word in code stream 2 and then the first nested word in code stream 3 . However, the next lower code word that is not fully contained in an already nested word is # 7. Thus the next word in the stream is the second interleaved word of code stream 2 .

In einer anderen Reihenfolge basiert die Reihenfolge, in wel­ cher der spätere Satz verschachtelter Wörter (z. B. das Codewort, das mit Codewort #8 in Strom 1 beginnt, das Codewort, das mit #7 in Strom 2 beginnt, das Codewort, das mit Code #11 in Strom 3 beginnt) in den verschachtelten Codestrom eingesetzt sind, auf dem ersten Codewort des vorherigen Satzes verschachtelter Wörter (z. B. das Codewort, das mit dem Codewort #1 in Strom 1 beginnt, das Codewort, das mit dem Codewort #2 in Strom 2 beginnt, das Codewort, das mit dem Codewort #4 in Strom 3 beginnt) und sie werden von dem verschachtelten Wort aus in dem ersten Codewort mit der niedrigsten Zahl bis zu dem verschachtelten Wort mit dem ersten Codewort mit der höchsten Zahl geordnet. Folglich ist in diesem Fall, da das verschachtelte Wort, das mit dem Codewort #1 beginnt, das erste war, das nächste verschachtelte Wort im Strom 1 das erste der zweiten Gruppe von verschachtelten Wörtern, die in den verschachtelten Strom einzusetzen sind, worauf das näch­ ste verschachtelte Wort in dem Strom 2 und das nächste ver­ schachtelte Wort in dem Strom 3 folgt. Nachdem die zweite Gruppe verschachtelter Worte in den verschachtelten Strom eingesetzt ist, würde das nächste verschachtelte Wort im Strom 2 das näch­ ste verschachtelte Wort sein, das in den Strom eingesetzt worden ist, da das Codewort #7 das niedrigste Codewort des zweiten Sat­ zes von verschachtelten Worten ist (worauf das Codewort #8 im Strom 1 und dann das Codewort #11 im Strom 3 folgt).In a different order, the order in which the later set of interleaved words (e.g., the code word that begins with code word # 8 in stream 1 , the code word that begins with # 7 in stream 2 , the code word that is based on begins with code # 11 in stream 3 ) in the nested code stream, on the first code word of the previous set of nested words (e.g., the code word that begins with code word # 1 in stream 1 , the code word that begins with the Codeword # 2 begins in stream 2 , the codeword that begins with codeword # 4 in stream 3 ) and they go from the interleaved word in the first codeword with the lowest number to the interleaved word with the first codeword with the highest Ordered number. Thus, in this case, since the interleaved word beginning with code word # 1 was the first, the next interleaved word in stream 1 is the first of the second group of interleaved words to be inserted in the interleaved stream, followed by the next most nested word in stream 2 and the next interlaced word in stream 3 follows. After the second group of interleaved words is inserted into the interleaved stream, the next interleaved word in stream 2 would be the next interleaved word that was inserted into the stream, since code word # 7 is the lowest codeword of the second sentence of interleaved Words is (followed by code word # 8 in stream 1 and then code word # 11 in stream 3 ).

Das Verwenden des aktuellen Decoders als das Modell für den Da­ tenstrom ist verantwortlich für die Ausführungswahl und Verzöge­ rung, um den verschachtelten Strom zu erzeugen. Es ergeben sich keine großen Kosten für Duplex-Systeme, die sowohl Codierer als auch Decodierer haben. Dies kann auf jeden parallelen Satz von Datenworten unterschiedlicher Länge (oder unterschiedlicher Größe) verallgemeinert werden, die in einer der deterministi­ schen Reihenfolge verarbeitet werden.Using the current decoder as the model for the Da tenstrom is responsible for the design choice and delays to generate the nested stream. Surrender no big cost for duplex systems that are both coders also have decoders. This can apply to any parallel set of Data words of different lengths (or different  Size) are generalized in one of the deterministi order are processed.

Code-Typen und Bitstrom-Generatoren für paralleles DecodierenCode types and bitstream generators for parallel decoding

Bei der Erfindung könnten vorhandene Codierer, wie Q-Coder oder B-Coder, als die Bitstrom-Erzeugungselemente verwendet werden, welche parallel angeordnet sind. Jedoch können auch andere Codes und Codierer verwendet werden. Die Codierer und ihre zugeordne­ ten Codes, die bei der vorliegenden Erfindung verwendet worden sind, sind einfache Codierer.In the invention, existing encoders such as Q-Coder or B coder used as the bitstream generating elements which are arranged in parallel. However, other codes can and encoders can be used. The encoders and their assigned th codes used in the present invention are simple encoders.

Bei der Erfindung bietet ein Verwenden von einem Bitstrom-Gene­ rator mit einem einfachen Code statt eines komplexen Codes, wie dem arithmetischen Code, welcher von dem Q-Coder verwendet wor­ den ist, oder die Codes mit mehreren Zuständen, die von dem B-Coder verwendet worden sind, Vorteile. Ein einfacher Code ist vorteilhaft, da die Hardware-Ausführung viel schneller und ein­ facher ist, und erfordert weniger Silizium als ein komplexer Code.In the invention, using one bitstream provides genes rator with a simple code instead of a complex code like the arithmetic code used by the Q coder is, or the multi-state codes provided by the B coders have been used, advantages. A simple code is advantageous because the hardware execution is much faster and one is thinner and requires less silicon than a complex one Code.

Ein weiterer Vorteil der Erfindung besteht darin, daß der Co­ dier-Wirkungsgrad verbessert werden kann. Ein Code, welcher eine endliche Menge einer Zustandsinformation verwendet, kann nicht fehlerlos den Shannon-Entropie-Grenzwert für jede Wahrschein­ lichkeit treffen. Bekannte in Hardware ausgeführte Codes, bei welchen ein einziger Bitstrom-Generator mehrere Wahrscheinlich­ keiten oder Kontexte behandeln kann, haben Beschränkungen, wel­ che den Codier-Wirkungsgrad verringern. Ein Beheben der Be­ schränkungen, die für mehrere Kontexte oder Wahrscheinlichkeits­ klassen notwendig sind, ermöglicht das Benutzen von Codes, die näher an den Shannon-Entropie-Grenzwert herankommen.Another advantage of the invention is that the Co The efficiency can be improved. A code which is a cannot use finite amount of state information error-free the Shannon entropy limit for each probability meet. Known codes executed in hardware, at which a single bitstream generator likely or contexts have limitations, which reduce the coding efficiency. Resolving the Be constraints that apply to multiple contexts or probability classes are necessary, allows the use of codes that get closer to the Shannon entropy limit.

R-CodesR codes

Der Code (und Codierer), der bei einer Ausführungsform der Er­ findung verwendet ist, wird als R-Code bezeichnet. R-Codes sind adaptive Codes, die eine veränderliche Anzahl von identischen Eingabesymbolen in ein Codewort umsetzen. In einer Ausführungs­ form werden die R-Codes parametriert, so daß viele verschiedene Wahrscheinlichkeiten mit einer einzigen Decodiererausführung be­ handelt werden können. Darüber hinaus können die R-Codes der Er­ findung durch eine einfache sehr schnelle Hardware decodiert werden.The code (and encoder) used in one embodiment of the Er is used is referred to as the R code. R codes are adaptive codes that have a variable number of identical  Convert input symbols into a code word. In an execution form the R codes are parameterized so that many different Probabilities with a single decoder design can be traded. In addition, the R codes of the Er finding decoded by simple, very fast hardware will.

In der Erfindung werden die R-Codes von einem R-Codierer ver­ wendet, um ein Codieren oder Decodieren durchzuführen. In einer Ausführungsform ist ein R-Codierer ein Bitstrom-Generator, der mit einem Wahrscheinlichkeits-Bewertungsmodul kombiniert ist. Beispielsweise könnte in Fig. 33 ein R-Codierer die Kombination aus einem Wahrscheinlichkeits-Bewertungsmodul 102 und einem Bit­ strom-Generator 103 und die Kombination eines Wahrscheinlich­ keits-Bewertungsmoduls 105 mit einem Bitstrom-Generator 106 ent­ halten.In the invention, the R codes are used by an R encoder to perform coding or decoding. In one embodiment, an R encoder is a bitstream generator that is combined with a probability assessment module. For example, in FIG. 33, an R-encoder could include the combination of a probability assessment module 102 and a bit stream generator 103 and the combination of a probability assessment module 105 with a bit stream generator 106 .

Codewörter stellen Durchläufe des wahrscheinlichsten Symbols (MPS) dar. Ein MPS stellt das Ergebnis einer binären Entschei­ dung mit mehr als 50% Wahrscheinlichkeit dar. Andererseits stellt das am wenigsten wahrscheinliche Symbol (LPS) das Ergeb­ nis einer binären Entscheidung mit weniger als 50% Wahrschein­ lichkeit dar. Wenn zwei Ergebnisse gleich wahrscheinlich sind, ist es nicht wichtig, welches mit MPS oder LPS bezeichnet ist, solange sowohl der Codierer als auch der Decodierer dieselbe Be­ zeichnung vornehmen. Die sich ergebende Bitfolge in der kompri­ mierten Datei ist in Tabelle 1 für einen vorgegebenen Parameter dargestellt, auf den als MAXRUN verwiesen ist.Code words represent runs of the most likely symbol (MPS). An MPS represents the result of a binary decision with a probability of more than 50%. On the other hand the least likely symbol (LPS) represents the result a binary decision with less than 50% probability if two results are equally probable, it doesn't matter which one is MPS or LPS, as long as both the encoder and the decoder have the same loading make drawing. The resulting bit sequence in the kompri mated file is in Table 1 for a given parameter to which reference is made as MAXRUN.

Tabelle table

Biterzeugungs-Codieren Bit generation coding

Um zu codieren, wird die Anzahl MPSs in einem Durchlauf mittels eines einfachen Zählers gezählt. Wenn dieser Zählwert gleich dem MAXRUN-Zählwert ist, wird ein 0 Codewort in den Codestrom abge­ geben, und der Zähler wird zurückgesetzt. Wenn ein LPS angetrof­ fen wird, dann wird eine 1, auf welche die Bits N folgen, welche eindeutig die Anzahl an MPS-Symbolen vor dem LPS beschreiben, in den Codestrom eingebracht. (Hierbei gibt es viele Möglichkeiten, die N Bits zuzuteilen, um die Durchlauflänge zu beschreiben.) Wieder wird der Zähler zurückgesetzt. Die Anzahl an Bits, die für N erforderlich sind, hängt von dem Wert von MAXRUN ab. Es könnte auch ein Einser-(1′s)Komplement der Codewörter verwendet werden.To encode, the number of MPSs in one pass is calculated using counted by a simple counter. If this count is equal to that MAXRUN count value, a 0 code word is added to the code stream and the counter is reset. When an LPS is encountered then a 1, followed by bits N, which clearly describe the number of MPS symbols in front of the LPS, in introduced the code stream. (There are many options here Allocate the N bits to describe the pass length.) The counter is reset again. The number of bits that required for N depends on the value of MAXRUN. It could also use a ones (1′s) complement of the code words will.

Um zu decodieren, wenn das erste Bit in dem Codestrom 0 ist, wird der Wert von MAXRUN in dem MPS-Zähler abgelegt, und die LPS-Anzeige wird gelöscht. Dann wird das 0 Bit weggeworfen. Wenn das erste Bit eine 1 ist, dann werden die folgenden Bits ge­ prüft, um die Bits N zu extrahieren, und der entsprechende Zähl­ wert (N) wird in dem MPS-Zähler gesetzt, und der LPS-Indikator wird gesetzt. Dann werden die Codestrom-Bits, welche das 1N Co­ dewort enthalten, weggeworfen.To decode when the first bit in the code stream is 0, the value of MAXRUN is stored in the MPS counter, and the LPS display is deleted. Then the 0 bit is thrown away. If the first bit is a 1, then the following bits are ge checks to extract bits N and the corresponding count value (N) is set in the MPS counter, and the LPS indicator is set. Then the code stream bits, which the 1N Co word included, thrown away.

R-Codes werden entsprechend den Vorgaben in Tabelle 1 erzeugt. Die Definition eines vorgegebenen R-Codes Rx(k) wird durch MAX- RUN festgelegt, beispielsweise:R codes are generated in accordance with the specifications in Table 1. The definition of a given R code Rx (k) is defined by MAX RUN set, for example:

MAXRUN für Rx(k) = x * 2k-1 MAXRUN for Rx (k) = x * 2 k-1

folglich gilt:therefore:

MAXRUN für R2(k) = 2 * 2k-1
MAXRUN für R3(k) = 3 * 2k-1
usw.
MAXRUN for R2 (k) = 2 * 2 k-1
MAXRUN for R3 (k) = 3 * 2 k-1
etc.

R-Codes sind eine Untergruppe von Golomb-Codes. Zu beachten ist, daß Rice-Codes nur R2(⚫) Codes benutzen. Die R-Codes der Erfindung lassen die Verwendung sowohl von R2(k) und R3(k) Codes zu und erforderlichenfalls andere Rn(k) Codes. In einer Ausfüh­ rungsform werden R2(k) und R3(k) verwendet. Rn existiert für n = 2 und n ist gleich einer ungeraden Zahl (z. B. R2, R3, R5, R7, R9, R11, R13, R15). In einer Ausführungsform wird für den R2(k) Code der Durchlaufzählwert r in N codiert; der Durchlaufzählwert r wird in k Bits beschrieben, so daß 1N dargestellt wird mit (k+1) Bits. Ebenso können in einer Ausführungsform für einen R3(k) Code die Bits N 1Bit enthalten, um anzuzeigen, ob n < 2(k-1) oder n 2(k-1), und entweder (k-1) oder k Bits um den Durchlaufzählwert r anzuzeigen, so daß die Veränderliche N dar­ gestellt wird durch insgesamt k bzw. (k+1) Bits. In anderen Aus­ führungsformen könnte das 1′s-Komplement von N in dem Codewort verwendet werden. In diesem Fall zielt das MPS darauf, Code­ ströme mit vielen 0′en zu erzeugen, oder LPS zielt darauf ab, Codeströme mit vielen 1′en zu erzeugen.R codes are a subset of Golomb codes. It should be noted that Rice codes only use R2 (⚫) codes. The R codes of the invention allow the use of both R2 (k) and R3 (k) codes and other Rn (k) codes if necessary. In one embodiment, R2 (k) and R3 (k) are used. Rn exists for n = 2 and n is equal to an odd number (e.g. R2, R3, R5, R7, R9, R11, R13, R15). In one embodiment, the pass count r is encoded in N for the R2 (k) code; the run count r is described in k bits, so that 1N is represented with (k + 1) bits. Likewise, in one embodiment for an R3 (k) code, the bits may include N 1 bits to indicate whether n <2 (k-1) or n 2 (k-1) , and either (k-1) or k bits around to display the pass count r so that the variable N is represented by a total of k or (k + 1) bits. In other embodiments, the 1′s complement of N could be used in the code word. In this case, the MPS aims to generate code streams with many 0's, or LPS aims to generate code streams with many 1's.

Tabellen 2 bis 5 veranschaulichen einige effiziente R-Codes, die bei einer Ausführungsform der Erfindung verwendet worden sind. Es sollte beachtet werden, daß andere Lauflängencodes in der Erfindung ebenfalls verwendet werden können. Ein Beispiel eines alternativen Lauflängencodes für R2(2) ist in Tabelle 6 dargestellt. Die Tabellen 7 und 8 zeigen Beispiele der Codes, die in einer Ausführungsform verwendet worden sind. Tables 2 through 5 illustrate some efficient R codes which have been used in one embodiment of the invention are. It should be noted that other run length codes in the invention can also be used. An example an alternative run length code for R2 (2) is in Table 6 shown. Tables 7 and 8 show examples of the codes that have been used in one embodiment.  

Tabelle 2 - R2(0) Table 2 - R2 (0)

Tabelle 3 - R2(1) Table 3 - R2 (1)

Tabelle 4 - R3(1) Table 4 - R3 (1)

Tabelle 5 - R2(2) Table 5 - R2 (2)

Tabelle 6 - Alternativer R2(2) Table 6 - Alternative R2 (2)

Tabelle 7 - Alternativer R3(2) Code Table 7 - Alternative R3 (2) code

Tabelle 8 - Ein anderer Alternativer R2(2) Code Table 8 - Another Alternative R2 (2) Code

Wahrscheinlichkeits-Bewertungsmodell für R-CodesProbability evaluation model for R codes

In einer Ausführungsform führt der R2(0) Code kein Codieren durch: Eine Eingabe von 0 wird in eine 0 codiert, und eine Ein­ gabe von 1 wird in eine 1 codiert (oder umgekehrt) und ist opti­ mal für Wahrscheinlichkeiten gleich 50%. Der R2(1) Code der be­ vorzugten Ausführungsform ist optimal für Wahrscheinlichkeiten nahe bei 0,707 (d. h. 70,7%), und der R3(1) Code ist optimal für die 0,794 Wahrscheinlichkeit (79,4%). Der R2(2) Code ist optimal für die 0,841 Wahrscheinlichkeit (84,1%). Tabelle 7 veranschau­ licht den nahezu optimalen Lauflängencode, wobei der Wahrschein­ lichkeits-Versatz durch folgende Gleichung festgelegt ist:
Wahrscheinlichkeits-Versatz = -log₂ (LPS)
In one embodiment, the R2 (0) code does not encode: an input of 0 is encoded into a 0, and an input of 1 is encoded into a 1 (or vice versa) and is optimal for probabilities equal to 50%. The R2 (1) code of the preferred embodiment is optimal for probabilities close to 0.707 (ie 70.7%) and the R3 (1) code is optimal for the 0.794 probability (79.4%). The R2 (2) code is optimal for the 0.841 probability (84.1%). Table 7 illustrates the almost optimal run length code, the probability offset being determined by the following equation:
Probability offset = -log₂ (LPS)

Tabelle 9 Table 9

Die Codes sind nahezu optimal, so daß der Wahrscheinlichkeits-Bereich, wie durch den Wahrscheinlichkeits-Versatz angezeigt ist, den Raum verhältnismäßig gleichmäßig bedeckt, selbst wenn die optimalen Wahrscheinlichkeiten nicht so viel in den höheren k Werten als in den niedrigen k Werten differenzieren.The codes are almost optimal, so that the probability range, as indicated by the probability offset is covering the room relatively evenly, even if the optimal probabilities not so much in the higher ones Differentiate k values than in the low k values.

Nunmehr wird auf die Wahrscheinlichkeit Bezug genommen, bei welcher ein R-Code optimal ist. In der Tat trifft nur R2(2) die Entropie-Kurve. Eine reale Betrachtung zeigt für welchen Wahr­ scheinlichkeitsbereich ein ganz bestimmter R-Code besser ist als alle R-Codes in einer vorgegebenen Klasse. Die folgenden Tabel­ len sehen die Wahrscheinlichkeitsbereiche für die Klasse von R2 Codes und für die Klasse von R2 und R3 Codes vor.Reference is now made to the probability at which is an optimal R code. In fact, only R2 (2) hits that Entropy curve. A real view shows for which truth range of probabilities a certain R code is better than all R codes in a given class. The following table len see the probability ranges for the class of R2 Codes and for the class of R2 and R3 codes before.

Für die Klasse von R2 Codes von 0 bis 12 gelten die Bereiche in Tabelle 10 unten. Wenn beispielsweise nur R2 Codes verwendet werden, ist R2(0) der beste, wenn 0,50 Wahrscheinlichkeit 0,6180 ist. Genauso ist R2(1) der beste, wenn gilt 0,6180 Wahrscheinlichkeit 0, 7862.The ranges in apply to the class of R2 codes from 0 to 12 Table 10 below. For example, if only R2 codes are used R2 (0) is the best if 0.50 probability is 0.6180  is. Likewise, R2 (1) is the best if 0.6180 applies Probability 0.7862.

Tabelle 10 - R2 Codes von 0 bis 12 Table 10 - R2 codes from 0 to 12

Für die Klasse von R2 und R3 Codes sind die Lösungen in Tabelle 11 unten angegeben. Wenn beispielsweise R2 und R3 Codes verwen­ det werden, ist R2(1) der beste, wenn gilt: 0,6180 Wahrschein­ lichkeit 0,7549. The solutions for the class of R2 and R3 codes are in table 11 given below. For example, if R2 and R3 use codes R2 (1) is the best if: 0.6180 probability possibility 0.7549.  

Tabelle 11 - R2 und R3 Codes Table 11 - R2 and R3 codes

Längen weniger als oder gleich 13 Bits Lengths less than or equal to 13 bits

Ein R2(k) für ein festes k wird ein Spurlängencode genannt. Je­ doch ist ein festes k nur der beste für einen Wahrscheinlich­ keitsbereich. Es ist zu beachten, daß, wenn nahe einer optimalen Wahrscheinlichkeit codiert wird, ein R-Code gemäß der Erfindung eine 0 und 1N-Codewörter mit etwa gleicher Frequenz verwendet. An R2 (k) for a fixed k is called a track length code. Each but a fixed k is only the best for a probable one range. It should be noted that when close to an optimal one Probability is encoded, an R code according to the invention uses a 0 and 1N code words with approximately the same frequency.  

Mit anderen Worten, in der einen Hälfte der Zeit gibt der R-Co­ dierer der Erfindung einen Code ab, und in der anderen Hälfte der Zeit gibt der R-Codierer den anderen Code ab. Durch Überprü­ fen der Anzahl von 0 und 1N Codewörter kann eine Feststellung getroffen werden, ob der beste Code zu verwenden ist. Das heißt, wenn zu viele 1N Codewörter ausgegeben werden, dann wird die Durchlauflänge zu lang; andererseits wird, wenn zu viele 0 Code­ wörter ausgegeben werden, die Durchlauflänge zu kurz.In other words, in half the time the R-Co a code from the invention, and in the other half time the R encoder gives the other code. By checking The number of 0 and 1N codewords can be a determination whether the best code is to be used. This means, if too many 1N code words are output, then the Pass length too long; on the other hand, if too many 0 code words are output, the run length too short.

Das Wahrscheinlichkeits-Bewertungsmodell, das von Langdon ver­ wendet worden ist, prüft das erste Bit jedes Codeworts, um zu bestimmen, ob die Quellen-Wahrscheinlichkeit über oder unter dem aktuellen Voranschlag liegt (Siehe G.G. Langdon, "An Adaptive Run-Length Coding Algorithm", IBM Technical Disclosure Bulletin, Vol. 26, Nr. 7B, Dezember 1983). Basierend auf dieser Feststel­ lung wird k erhöht oder erniedrigt. Wenn beispielsweise ein Co­ dewort, das MPS anzeigt, gesehen wird, ist der Wahrscheinlich­ keits-Voranschlag zu niedrig. Daher wird gemäß Langdon k um 1 für jedes 0 Codewort erhöht. Wenn ein Codewort, das weniger als MAXRUN MPS anzeigt, worauf ein LPS (z. B. 1N Codewort) folgt, ge­ sehen wird, ist der Wahrscheinlichkeits-Voranschlag zu hoch. Folglich wird gemäß Langdon k um 1 für jedes 1N Codewort ernie­ drigt.The probability evaluation model, which Langdon ver has been used, the first bit of each code word checks to determine whether the source probability is above or below that current estimate is (See G.G. Langdon, "An Adaptive Run-Length Coding Algorithm, "IBM Technical Disclosure Bulletin, Vol. 26, No. 7B, December 1983). Based on this finding k is increased or decreased. For example, if a Co The word that indicates MPS is likely to be seen Quotation too low. Therefore according to Langdon k by 1 increased for every 0 code word. If a code word that is less than MAXRUN MPS indicates what an LPS (e.g. 1N code word) follows will see, the probability estimate is too high. Hence, according to Langdon, k is increased by 1 for each 1N code word drigt.

Die vorliegende Erfindung läßt eine komplexere Wahrscheinlich­ keits-Bewertung zu als das einfacher Erhöhen oder Verringern von k um 1 bei jedem Codewort. Die Erfindung enthält einen Wahr­ scheinlichkeits-Bewertungsmodulzustand, welcher den zu benutzen­ den Code festlegt. Viele Zuständen können denselben Code verwen­ den. Codes werden Zuständen mit Hilfe einer Zustandstabelle zu­ geordnet.The present invention leaves a more complex likelihood rate rating than simply increasing or decreasing k by 1 for each code word. The invention contains a truth Probability assessment module state which to use sets the code. Many states can use the same code the. Codes become states using a state table orderly.

In einer Ausführungsform der Erfindung ändert der Wahrschein­ lichkeits-Voranschlag jedes abgegebene Codewort. Folglich erhöht oder erniedrigt der Wahrscheinlichkeits-Bewertungsmodul den Wahrscheinlichkeits-Voranschlag in Abhängigkeit davon, ob ein Codewort mit einer 0 oder einer 1 beginnt. Wenn beispielsweise ein "0" Codewort ausgegeben wird, kommt es zu einem Erhöhen des Voranschlags der MPS-Wahrscheinlichkeit. Wenn dagegen ein "1" Co­ dewort ausgegeben wird, wird der Voranschlag der MPS-Wahrschein­ lichkeit erniedrigt.In one embodiment of the invention, the probability changes Estimation of each code word submitted. Hence increased or the probability assessment module lowers the Probability estimate depending on whether a  Codeword begins with a 0 or a 1. If, for example If a "0" code word is output, the Estimation of the MPS probability. If, on the other hand, a "1" Co When the word is output, the estimate becomes the MPS probability decreased.

Der bekannte Langdon-Codierer verwendete nur R2(k) Codes und erhöhte oder erniedrige k für jedes Codewort. Die Erfindung da­ gegen verwendet R2(k) und R3(k) Codes in Verbindung mit der Zustandstabelle, um die Adaptionsrate auf die Anwendung abstim­ men zu können. Das heißt, wenn es eine kleine Menge stationärer Daten ist, muß die Adaption schneller sein, um auf ein optimales Codieren hinauszulaufen, und wenn es eine größere Menge statio­ närer Daten gibt, kann die Adaptionszeit länger sein, so daß das Codieren gewählt werden kann, um eine bessere Kompression bei dem Rest der Daten zu erreichen. Wo eine variable Anzahl an Zu­ standsänderungen vorkommen kann, können spezifische Anwendungs-Kenn­ werte auch die Adaptionsrate beeinflussen. Wegen der Art der R-Codes ist die Bewertung für R-Codes einfach und erfordert we­ nig Hardware, während sie sehr leistungsfähig ist. In Fig. 32 ist dies durch einen Graphen veranschaulicht, in welchem der Codier­ wirkungsgrad (die Codelänge, nomiert bezüglich der Entropie) ge­ genüber einer MPS-Wahrscheinlichkeit aufgetragen ist. Fig. 32 zeigt, wie einige der R-Codes der Erfindung den Wahrscheinlich­ keitsraum bedecken. Als ein Beispiel zeigt Fig. 32, daß für eine MPS-Wahrscheinlichkeit von annähernd 0,55 der Wirkungsgrad des R2(0) Codes 1,01 des Entropie-Grenzwerts (oder 1% schlechter als dieser) ist. Im Gegensatz hierzu hat der R2(1) Code einen Wir­ kungsgrad von 1,09 des Entropie-Grenzwerts (oder 9% schlechter als dieser). Dieses Beispiel zeigt, daß ein Verwenden des fal­ schen Codes für diesen speziellen Fall geringer Wahrscheinlich­ keit einen Verlust von 8% im Codier-Wirkungsgrad bewirkt.The known Langdon encoder used only R2 (k) codes and increased or decreased k for each code word. The invention, however, uses R2 (k) and R3 (k) codes in conjunction with the status table in order to be able to match the adaptation rate to the application. That is, if there is a small amount of stationary data, the adaptation must be faster in order to result in an optimal coding, and if there is a larger amount of stationary data, the adaptation time can be longer, so that the coding can be chosen, to get better compression on the rest of the data. Where a variable number of changes in state can occur, specific application parameters can also influence the adaptation rate. Because of the nature of the R codes, the evaluation for R codes is simple and requires little hardware, while being very powerful. This is illustrated in FIG. 32 by a graph in which the coding efficiency (the code length, nominated with respect to the entropy) is plotted against an MPS probability. Figure 32 shows how some of the R codes of the invention cover the probable space. As an example, Fig. 32 shows that for an MPS probability of approximately 0.55, the efficiency of the R2 (0) code is 1.01 of the entropy threshold (or 1% worse than this). 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 in this particular case is less likely to cause an 8% loss in coding efficiency.

Die Eingliederung der R3(k) Codes ermöglicht es, mehr Wahr­ scheinlichkeitsraum mit einer größeren Effizienz abzudecken. Eine beispielsweise Wahrscheinlichkeits-Bewertungszustandstabel­ le gemäß der Erfindung ist in Fig. 5 dargestellt. Die Tabelle in Fig. 5 zeigt sowohl einen Zustandszähler als auch den Code, wel­ cher jedem der separaten Zustände der Tabelle zugeordnet ist. Die Tabelle enthält sowohl positive wie negative Zustände. Die Tabelle hat 37 positive Zustände und 37 negative Zustände, ein­ schließlich der Nullzustände. Die negativen Zustände bedeuten ein anderes MPS als die negativen Zustände. In einer Ausfüh­ rungsform können die negativen Zustände verwendet werden, wenn MPS 1 ist, und die positiven Zustände können verwendet werden, wenn MPS 0 ist oder umgekehrt. Die in Fig. 5 dargestellte Tabelle ist nur ein Beispiel; andere Tabellen können mehr oder weniger Zustände und eine andere Zustandszuordnung haben.The inclusion of the R3 (k) codes makes it possible to cover more probabilities with greater efficiency. An example of a probability evaluation status table le according to the invention is shown in FIG. 5. The table in Figure 5 shows both a state counter and the code associated with each of the separate states of the table. The table contains both positive and negative states. The table has 37 positive states and 37 negative states, including the zero states. The negative states mean a different MPS than the negative states. In one embodiment, the negative states can be used when MPS is 1 and the positive states can be used when MPS is 0 or vice versa. The table shown in Fig. 5 is only an example; other tables can have more or less states and a different state assignment.

Anfangs befindet sich der Codierer im Zustand 0, welcher der R2(0) Code (d. h. kein Code) für den Wahrscheinlichkeitsvoran­ schlag ist, welcher gleich 0,50 ist. Nachdem jedes Codewort ver­ arbeitet ist, wird der Zustandszähler in Abhängigkeit von dem ersten Bit des Codeworts in- bzw. dekrementiert. In einer Aus­ führungsform erhöht ein Codewort von 0 die Größe des Speichers. Daher wird durch jedes Codewort eine Änderung in dem Zustand bei dem Zustandszähler vorgenommen. Mit anderen Worten, der Wahr­ scheinlichkeits-Bewertungsmodul ändert den Zustand. Jedoch kön­ nen aufeinanderfolgende Zustände demselben Code zugeordnet wer­ den. In diesem Fall wird die Wahrscheinlichkeitsbewertung ohne ein Ändern von Codes bei jedem Codewort erreicht. Mit anderen Worten, der Zustand wird für jedes Codewort geändert; jedoch wird der Zustand zu bestimmten Zeiten in dieselben Wahrschein­ lichkeiten abgebildet. Beispielsweise verwenden alle Zustände 5 bis -5 den R2(0) Code, während die Zustände 6 bis 11 und -6 bis -11 den R2(1) Code benutzen. Mit Hilfe der Zustandstabelle der Erfindung kann eine Wahrscheinlichkeitsbewertung in einer nicht­ linearen Weise bei demselben Codierer bleiben.Initially, the encoder is in state 0, which is the R2 (0) code (i.e. no code) for the probability advance beat, which is equal to 0.50. After each code word ver is working, the state counter is dependent on the first bit of the code word incremented or decremented. In an out In the embodiment, a code word of 0 increases the size of the memory. Therefore, each code word causes a change in the state the status counter. In other words, the truth Probability assessment module changes state. However, consecutive states are assigned to the same code the. In this case, the probability rating is without a change of codes achieved for each code word. With others Words, the state is changed for each code word; however the condition becomes the same probability at certain times depicted. For example, all states use 5 to -5 the R2 (0) code, while states 6 to 11 and -6 to -11 use the R2 (1) code. Using the state table of the Invention cannot do a probability assessment in one stay with the same encoder linearly.

Zu erwähnen ist noch, daß mehr Zustände mit demselben R-Code für die niedrigen Wahrscheinlichkeiten eingeschlossen sind, und zwar deswegen, da der Verlust an Wirkungsgrad, wenn der falsche Code bei niedrigen Wahrscheinlichkeiten verwendet wird, groß ist. Die Art der Lauflängen-Codezustandstabelle besteht darin zwischen Zuständen nach jedem Codewort zu übertragen. In einer Zustandstabelle, die ausgelegt ist, um Codes mit jeder Zustands­ änderung zu ändern, wenn zwischen Zuständen bei den niedrigen Wahrscheinlichkeiten gewechselt wird, wechselt der Code zwischen einem Code, welcher sehr nahe bei dem Entropie-Wirkungsgrad-Grenzwert ist und einem Code, welcher weit von dem Entropie-Wir­ kungsgrad-Grenzwert weg ist. Folglich kann sich ein Nachteil (in Form der Anzahl von codierten Datenbits) in dem Übergang zwi­ schen Zuständen ergeben. Herkömmliche Wahrscheinlichkeits-Bewer­ tungsmodule, wie der Langdon-Wahrscheinlichkeits-Bewertungsmodul verliert seine Wirksamkeit wegen dieses Nachteils.It should also be mentioned that more states with the same R code for the low probabilities are included, and This is because the loss of efficiency if the wrong one  Code used at low probabilities is great is. The type of run length code state table is this to transfer between states after each code word. In a State table that is designed to hold codes with any state change to change when between states at low Probabilities is changed, the code alternates between a code that is very close to the entropy efficiency limit and a code that is far from the entropy-we efficiency limit is gone. As a result, a disadvantage (in Form of the number of coded data bits) in the transition between conditions. Conventional probability evaluators tion modules, such as the Langdon probability assessment module loses its effectiveness because of this disadvantage.

In den Lauflängencodes höherer Wahrscheinlichkeit ist der Nach­ teil, der sich bei dem falschen Code ergibt, nicht so groß. Folglich werden in der Erfindung zusätzliche Zustände zu den niedrigeren Wahrscheinlichkeiten hinzugefügt, so daß die Ände­ rungen beim Schwanken zwischen den zwei korrekten Codes erhöht werden, wodurch die Codierunzulänglichkeit geringer wird.In the run length codes, the probability is higher part that results from the wrong code is not that big. Consequently, additional states become the in the invention added lower probabilities so that the changes increased when fluctuating between the two correct codes become, whereby the coding inadequacy is reduced.

In bestimmten Ausführungsformen kann der Codierer einen anfäng­ lichen Wahrscheinlichkeits-Bewertungszustand haben. Mit anderen Worten, die Codierer könnten in einem vorherbestimmten Zustand, beispielsweise dem Zustand 18, beginnen. In einer Ausführungs­ form könnte eine andere Zustandstabelle verwendet werden, so daß einige Zustände für die wenigen ersten Symbole verwendet würden, um eine schnelle Adaption zuzulassen, und eine zweite Zustands­ tabelle könnte für die verbleibenden Symbole für eine langsame Adaption verwendet werden, um ein Feinabstimmen der Wahrschein­ lichkeitsbewertung zu ermöglichen. Auf diese Weise kann der Co­ dierer imstande sein, früher einen wirksameren Code in dem Co­ dierprozeß zu benutzen. In einer anderen Ausführungsform könnte der Codestrom einen anfänglichen Wahrscheinlichkeitsvoranschlag für jeden Kontext spezifizieren. In einer Ausführungsform werden die Inkremente oder Dekremente nicht gemäß einer festen Zahl (z. B. 1) gemacht. Statt dessen kann der Wahrscheinlichkeits-Be­ wertungszustand durch eine veränderliche Zahl entsprechend der Menge an bereits angetroffenen Daten oder der Änderung in den Daten (deren Stabilität) inkrementiert werden. Beispiele solcher Tabellen befinden sich in den nachstehend beschriebenen Tabellen 21 bis 25.In certain embodiments, the encoder may initially likelihood assessment state. With others Words, the encoders could be in a predetermined state, state 18, for example. In an execution another state table could be used so that some states would be used for the few first symbols to allow quick adaptation and a second state Table could be slow for the remaining symbols Adaption used to fine-tune the probability enable evaluation of In this way, the Co be able to use more effective code in the Co to use the process. In another embodiment, could the code stream an initial probability estimate specify for each context. In one embodiment the increments or decrements are not a fixed number  (e.g. 1). Instead, the probability Be status by a variable number corresponding to the Amount of data already encountered or the change in the Data (whose stability) are incremented. Examples of such Tables are in the tables described below 21 to 25.

Wenn die Zustandstabelle symmetrisch ist, wie die beispielhaf­ te Tabelle der Fig. 4 zeigt, muß nur eine Hälfte davon (ein­ schließlich des Nullzustands) gespeichert oder in Hardware aus­ geführt werden. In einer Ausführungsform wird die Zustandszahl in einer Vorzeichengröße-(Einser-)Komplementform gespeichert, um die Symmetrie auszunutzen. Auf diese Weise kann die Tabelle be­ nutzt werden, indem der Absolutwert der Einser-Komplement-Zahl genommen wird, um den Zustand zu bestimmen und um das Vorzeichen zu überprüfen, um dadurch zu bestimmen, ob MPS eine 1 oder eine 0 ist. Dies ermöglicht die Hardware, die zum In- und Dekremen­ tieren des zu reduzierenden Zustands benötigt wird, da der Abso­ lutwert des Zustands verwendet wird, um die Tabelle zu indexie­ ren, und die Berechnung des Absolutwerts von Einsen-Komplement­ zahlen ist trivial. In einer anderen Ausführungsform kann bezüg­ lich eines größeren Hardware-Wirkungsgrads eine Zustandstabelle durch eine fest verdrahtete oder programmierbare Zustandsein­ richtung ersetzt werden. Ein fest verdrahteter Zustand, um einen Umsetzer zu codieren, ist eine Ausführung der Zustandstabelle.If the state table is symmetrical, as the exemplary table of FIG. 4 shows, only half of it (including the zero state) has to be stored or executed in hardware. In one embodiment, the state number is stored in a sign size (ones) complement form to take advantage of the symmetry. In this way, the table can be used by taking the absolute value of one's complement number to determine the state and to check the sign, thereby determining whether MPS is a 1 or a 0. This enables the hardware needed to increment and decrement the state to be reduced since the absolute value of the state is used to index the table and the calculation of the absolute value of ones complement numbers is trivial. In another embodiment, a state table can be replaced by a hard-wired or programmable state device with respect to greater hardware efficiency. A hard wired state to encode a converter is an execution of the state table.

Überblick über das ausgeglichene parallele Entropie-Codiersy­ stemOverview of the balanced parallel entropy coding system stem

Die Erfindung schafft ein ausgeglichenes paralleles Entropie-Codier­ system, welches sowohl ein Realzeit-Codieren als auch ein Realzeit-Decodieren einschließt, was in einer sehr schnel­ len/preiswerten Hardware durchgeführt worden ist. Die vorliegen­ de Erfindung kann in zahlreichen verlustfreien Codieranwendungen verwendet werden, einschließlich einer Realzeit-Kompression/De­ kompression von Daten auf beschreibbaren Bildplatten oder magne­ tischen Platten, einer Realzeit-Kompression/Dekompression von Computer-Netzdaten, einer Realzeit-Kompression/Dekompression von Bilddaten in einem komprimierten Rahmenspeicher in einem Multi­ funktionsgerät (z. B. Kopierer, Faksimilegerät, Scanner, Printer, usw.) und einer Realzeit-Kompression/Dekompression von Tondaten; allerdings ist die Erfindung hierauf nicht beschränkt.The invention provides a balanced parallel entropy coding system, which is both a real-time coding and a Real-time decoding includes what's in a very fast len / inexpensive hardware has been performed. The present de Invention can be used in numerous lossless coding applications can be used, including real-time compression / De compression of data on recordable discs or magne tables, a real-time compression / decompression of  Computer network data, a real-time compression / decompression of Image data in a compressed frame memory in a multi functional device (e.g. copier, facsimile device, scanner, printer, etc.) and real-time compression / decompression of sound data; however, the invention is not limited to this.

Ein Spezifizieren der Leistung des Codierers erfordert eine ge­ wisse Aufmerksamkeit. Es ist einfach, einen Codierer auszulegen, der eine gewisse Rate für die ursprünglichen Daten erreicht, die in einen ausreichend schnellen codierten Datenkanal eingegeben sind. In vielen Anwendungsfällen ist es jedoch das Ziel bei dem Codierer, den codierten Datenkanal effizient zu nutzen. Eine co­ dierte Datenkanal-Benutzung wird durch die maximale Burst-Rate des Original-Daten-Interface, durch die Codiergeschwindigkeit und die an den Daten erreichte Kompression 99999 00070 552 001000280000000200012000285919988800040 0002019536401 00004 99880eingeengt. Die Wir­ kung dieser Effekte muß über einige lokale Datenmengen berück­ sichtigt werden, welche von der Bufferung in dem Codierer ab­ hängt. Es ist wünschenswert, einen Codierer zu haben, der den codierten Datenkanal effizient nutzt, während die Codierge­ schwindigkeit und eine hohe Kompression erhalten bleibt und die maximale Burst-Rate sich noch einstellt.Specifying the performance of the encoder requires a ge know attention. It's easy to design an encoder which reaches a certain rate for the original data that entered into a sufficiently fast coded data channel are. In many applications, however, the goal is with the Encoder to use the encoded data channel efficiently. A co Data channel usage is determined by the maximum burst rate of the original data interface, through the coding speed and the compression achieved on the data is restricted to 99999 00070 552 001000280000000200012000285919988800040 0002019536401 00004 99880. The We These effects must be reflected in some local data which depends on the buffering in the encoder hangs. It is desirable to have an encoder that can uses the encoded data channel efficiently while encoding speed and high compression is maintained and the maximum burst rate is still set.

Im folgenden wird der Codierer der Erfindung beschrieben. Ein Decodierer, der in Verbindung mit dem Codierer verwendet werden kann, wird ebenfalls beschrieben.The encoder of the invention will now be described. On Decoder used in conjunction with the encoder can also be described.

Realzeit-Codieren bei der vorliegenden ErfindungReal time coding in the present invention

Fig. 5 ist ein Blockdiagramm des Codiersystems der Erfindung. In einer Ausführungsform führt der Codierer der Erfindung ein Realzeit-Codieren durch. In Fig. 5 schließt das Codiersystem 600 einen Codierer 602 ein, der mit einem Kontext-(CM-) und einem Zustandspeicher 603 verbunden ist, um codierte Information in Form von Codewort-Information 604 entsprechend den Originaldaten 601 zu erzeugen. Eine Codewort-Information 604 erzeugt eine Um­ ordnungseinheit 606 in Zusammenwirken mit einem Umordnungsspei­ cher 607, einen codierten Datenstrom 608. Hierbei ist das Co­ diersystem 600 nicht auf ein Arbeiten mit Codewörtern begrenzt und kann in anderen Ausführungsformen auf diskreten analogen Wellenformen, Bitmustern variabler Länge, Kanalsymbolen, Alpha­ beten, Ereignissen, usw. im Rahmen der Lehren der Erfindung ar­ beiten. Figure 5 is a block diagram of the coding system of the invention. In one embodiment, the encoder of the invention performs real-time coding. In Fig. 5, the coding system 600 includes an encoder 602, with a context (CM) and a state memory 603 is connected, corresponding to coded information in the form of code word information 604 to generate the original data six hundred and first A codeword information 604 generates a coding unit 606, in cooperation with a reordering memory 607 , a coded data stream 608 . Here, the coding system 600 is not limited to working with code words and, in other embodiments, may operate on discrete analog waveforms, variable length bit patterns, channel symbols, alpha, events, etc. within the teachings of the invention.

Der Codierer 602 schließt ein Kontextmodell (CM), eine Wahr­ scheinlichkeits-Bewertungseinrichtung (PEM) und einen Bitstrom-Ge­ nerator (BG) ein. Das Kontextmodell und die Wahrscheinlich­ keits-Bewertungseinrichtung (PEM) in dem Codierer 602 sind (ab­ gesehen von der Richtung des Datenflusses) im wesentlichen iden­ tisch mit den entsprechenden Einheiten in dem Decodierer. Der Bitgenerator des Codierers 602 entspricht dem Decoder-Bitgenera­ tor und wird unten beschrieben. Das Ergebnis des Codierens mit­ tels des Codierers 602 ist das Ausgangssignal in Form von null oder mehr Bits, welche die Originaldaten darstellen. In einer Ausführungsform schließt das Ausgangssignal des Bitstrom-Genera­ tors auch ein oder mehrere Steuersignale mit ein. Diese Steuer­ signale schaffen einen Steuerweg zu den Daten in dem Bitstrom. In einer Ausführungsform kann die Codewort-Information einen Durchlaufanzeigestart, ein Ende einer Durchlaufanzeige, ein Co­ dewort und einen Index aufweisen, welcher den Durchlaufzählwert (der von der Kontext- oder Wahrscheinlichkeitsklasse ist) für das Codewort identifiziert. Eine Ausführungsform des Bit-Genera­ tors der Erfindung wird nachstehend beschrieben.Encoder 602 includes a context model (CM), a probability assessor (PEM), and a bitstream generator (BG). The context model and the probability estimator (PEM) in the encoder 602 (apart from the direction of the data flow) are essentially identical to the corresponding units in the decoder. The bit generator of encoder 602 corresponds to the decoder bit generator and is described below. The result of coding by encoder 602 is the output signal in the form of zero or more bits representing the original data. In one embodiment, the output signal of the bitstream generator also includes one or more control signals. These control signals create a control path to the data in the bit stream. In one embodiment, the code word information may include a pass indicator start, an end of a pass indicator, a codeword, and an index that identifies the pass count (which is of the context or probability class) for the codeword. An embodiment of the bit generator of the invention is described below.

Die Umordnungseinheit 606 nimmt die Bits und Steuersignale auf, die von dem Bitstromgenerator (wenn überhaupt) des Decodierers 602 erzeugt worden sind, und erzeugt codierte Daten. In einer Ausführungsform weisen die codierten Daten, die von der Umord­ nungseinheit 606 abgegeben worden sind, einen Strom von ver­ schachtelten Worten auf. Eine Ausführungsform führt die Umord­ nungseinheit 606 zwei Funktionen durch, und zwar bewegt sie Co­ dewörter von dem Ende von Durchläufen, wie sie von dem Codierer erzeugt worden sind, zu dem Beginn von Durchläufen, erforderli­ chenfalls durch den Decodierer und kombiniert Codewörter variab­ ler Länge mit verschachtelten Worten fester Länge und gibt sie in der richtigen Reihenfolge aus, die von dem Decodierer gefor­ dert wird.The reordering unit 606 receives the bits and control signals generated by the bit stream generator (if any) of the decoder 602 and generates encoded data. In one embodiment, the encoded data provided by reordering unit 606 comprises a stream of interleaved words. In one embodiment, reordering unit 606 performs two functions, moving code words from the end of runs generated by the encoder to the start of runs, if necessary by the decoder, and combining variable length code words interleaved fixed length words and outputs them in the correct order as required by the decoder.

Die Umordnungseinheit 606 benutzt zeitweilig einen Umordnungs­ speicher 607. In einer Ausführungsform, in welcher ein Codieren an einem Arbeitsplatz durchgeführt wird, kann der Umordnungs­ speicher 607 über 100 Megabytes groß sein. In dem ausgeglichenen System der Erfindung ist der Umordnungsspeicher 607 viel kleiner (z. B. annähernd 1 Kbyte) und fest vorgegeben. Folglich wird in einer Ausführungsform ein Realzeit-Codieren mit Hilfe eines Speichers fester Größe durchgeführt, selbst wenn dies den Spei­ cher vergrößert, der von dem Decodierer gefordert ist, oder die Bitrate zunimmt (wenn beispielsweise ein Ausgangssignal vor der Beendigung eines Durchlaufs gemacht wird). Der Decodierer der Erfindung ist in der Lage, die Wirkungen des begrenzten Spei­ chers der Umordnungseinheit mit Hilfe beispielsweise einer im­ pliziten, expliziten oder im Strom liegenden Signalgebung (wie unten noch beschrieben wird) zu bestimmen. Die Umordnungseinheit 606 hat einen endlichen Speicher, der für ein Umordnen verfügbar ist; jedoch ist der "benötigte" Speicher nicht gebunden. Sowohl die Wirkung eines begrenzten Speichers für ein Durchlaufende bis zum Beginn einer Durchlaufschlange und für ein Umordnen von ver­ schachtelten Worten muß berücksichtigt werden.The reordering unit 606 temporarily uses a reordering memory 607 . In an embodiment in which coding is performed at a work station, reordering memory 607 can be over 100 megabytes in size. In the balanced system of the invention, reorder memory 607 is much smaller (e.g., approximately 1 Kbyte) and fixed. Thus, in one embodiment, real time encoding is performed using a fixed size memory, even if this increases the memory required by the decoder or the bit rate increases (for example, if an output signal is made before a run is completed). The decoder of the invention is capable of determining the effects of the reorder unit's limited memory using, for example, explicit, explicit, or stream signaling (as will be described below). Reordering unit 606 has finite memory available for reordering; however, the "required" memory is not tied up. Both the effect of limited memory for a pass end to the start of a pass queue and for reordering of nested words must be considered.

In einer Ausführungsform führt das Codiersystem (und das ent­ sprechende Decodiersystem) der Erfindung das Codieren (oder De­ codieren) mit Hilfe eines einzigen integrierten Schaltungschips durch. In einer anderen Ausführungsform enthält eine einzige in­ tegrierte Schaltung das Codiersystem der Erfindung, einschließ­ lich dessen Codierer, Decodierer und Speichers. Ein separater externer Speicher kann hinzugefügt werden, um das Codieren zu unterstützen. Ein Multichip-Modul oder eine integrierte Schal­ tung können sowohl die Codier/Decodier-Hardware und den Speicher enthalten. In one embodiment, the coding system (and ent speaking decoding system) of the invention encoding (or De encoding) using a single integrated circuit chip by. In another embodiment, a single one contains in integrated circuit including the coding system of the invention Lich its encoder, decoder and memory. A separate one external memory can be added to encode support. A multichip module or an integrated scarf device can encode / decode hardware and memory contain.  

Mit dem Codiersystem der Erfindung kann versucht werden, die effektive Bandbreite um bis zu einem Faktor N zu erhöhen. Wenn die erreichte Kompression geringer als N:1 ist, dann wird der codierte Datenkanal voll ausgenutzt, jedoch ist die erreichte effektive Bandbreitenzunahme nur gleich der Kompressionsrate. Wenn die erreichte Kompression größer als N:1 ist, dann ist die effektive Bandbreite erreicht, wobei eine zusätzliche Bandbreite beschreibbar ist. In beiden Fällen muß die erreichte Kompression über einem örtlichen Bereich der Daten liegen, welche durch den in dem Codiersystem vorhanden Pufferwert festgelegt ist.The coding system of the invention can be used to try the effective bandwidth by up to a factor N to increase. If the compression achieved is less than N: 1, then the coded data channel is fully used, but the reached effective bandwidth increase only equal to the compression rate. If the compression achieved is greater than N: 1, then it is effective bandwidth reached, with an additional bandwidth is writable. In both cases, the compression achieved over a local area of the data, which are determined by the buffer value present in the coding system is defined.

Der Bitgenerator für den Codierer der ErfindungThe bit generator for the encoder of the invention

Fig. 6 zeigt eine Ausführungsform des Codierer-Bitgenerators der Erfindung. Der Bitgenerator 701 ist vorgesehen, um eine Wahr­ scheinlichkeitsklasse und ein uncodiertes Bit (z. B. eine MPS- oder LPS-Anzeige) als Eingänge aufzunehmen. Entsprechend den Eingangssignalen gibt der Bitgenerator 701 mehrere Signale ab. Zwei der Ausgangssignale sind Steuersignale, welche den Start des Starts und des Endes eines Durchgangs (wobei jedes Codewort einen Durchgang darstellt), ein Startsignal 711 bzw. ein End­ signal 712 darstellen. Es ist möglich, einen Durchlauf gleich­ zeitig zu starten und zu beenden. Wenn ein Durchlauf startet oder endet, weist ein "Index" Ausgangssignal 713 eine Anzeige der Wahrscheinlichkeitsklasse (oder des Kontextes) für das unco­ dierte Bit auf. In einer Ausführungsform stellt ein Index-Aus­ gangssignal 713 eine Kombination der Wahrscheinlichkeitsklasse für das Bit und eine Bankidentifizierung für Systeme dar, in welchen jede Wahrscheinlichkeitsklasse in mehreren Speicherbän­ ken repliziert wird. Ein Codewort-Ausgang 714 wird verwendet, um ein Codewort von dem Bitgenerator 701 aus zugeben, wenn ein Durchgang endet. Figure 6 shows an embodiment of the encoder bit generator of the invention. Bit generator 701 is provided to receive a probability class and an uncoded bit (e.g., an MPS or LPS display) as inputs. The bit generator 701 outputs a plurality of signals in accordance with the input signals. Two of the output signals are control signals which represent the start of the start and end of a pass (each code word representing a pass), a start signal 711 and an end signal 712, respectively. It is possible to start and end a run at the same time. When a run starts or ends, an "index" output 713 has an indication of the probability class (or context) for the uncoded bit. In one embodiment, an index output signal 713 represents a combination of the probability class for the bit and bank identification for systems in which each probability class is replicated in multiple memory banks. A code word output 714 is used to output a code word from the bit generator 701 when a pass ends.

Ein Speicher 702 ist mit dem Bitgenerator 701 verbunden und enthält den Durchgangszählwert für eine gegebene Wahrscheinlich­ keitsklasse. Während einer Biterzeugung liest der Bitgenerator 701 aus dem Speicher 702 mit Hilfe des Index (z. B. die Wahr­ scheinlichkeitsklasse). Nach einem Lesen des Speichers 702 führt der Bitgenerator 701 eine Biterzeugung auf folgende Weise durch. Zuerst wird, wenn der Durchlaufzählwert gleich null ist, ein Startsignal 711 geltend gemacht, um den Start eines Durchgangs anzuzeigen. Wenn das uncodierte Bit gleich dem LPS ist, dann wird das Endsignal 712 geltend gemacht, um das Ende des Durch­ laufs anzuzeigen. Wenn das uncodierte Bit gleich einem LPS ist, wird der Codewort-Ausgang 714 gesetzt, um anzuzeigen, daß das Codewort ein 1N-Codewort ist, und der Durchlaufzählwert wird ge­ löscht, z. B. null gesetzt (da es das Ende des Durchlaufs ist). Wenn das uncodierte Bit nicht gleich dem LPS ist, dann wird der Durchlaufzählwert inkrementiert und durch eine Prüfung wird be­ stimmt, wenn der Durchlaufzählwert gleich dem maximalen Zählwert für den Code ist. Wenn dem so ist, wird das Endsignal 712 gel­ tend gemacht, der Codewort-Ausgang 714 wird auf null gesetzt, und der Durchlaufzählwert wird gelöscht (z. B. der Zählwert wird auf null gesetzt). Wenn bei der Prüfung festgestellt wird, daß der Durchlaufzählwert nicht gleich dem Maximum für den Code ist, dann wird der Durchlaufzählwert inkrementiert. Das Indexsignal 713 stellt die Wahrscheinlichkeitsklasse dar, die als ein Ein­ gangssignal erhalten worden ist.A memory 702 is connected to bit generator 701 and contains the pass count for a given probability class. During bit generation, the bit generator 701 reads from the memory 702 using the index (e.g. the probability class). After reading the memory 702 , the bit generator 701 performs bit generation in the following manner. First, when the pass count is zero, a start signal 711 is asserted to indicate the start of a pass. If the uncoded bit is equal to the LPS, then the end signal 712 is asserted to indicate the end of the run. If the uncoded bit is equal to an LPS, code word output 714 is set to indicate that the code word is a 1N code word and the pass count is cleared, e.g. B. set to zero (since it is the end of the pass). If the uncoded bit is not equal to the LPS, then the pass count is incremented and a check is made to determine if the pass count equals the maximum count for the code. If so, the end signal 712 is asserted, the code word output 714 is set to zero, and the pass count is cleared (e.g., the count is set to zero). If the check determines that the pass count is not the maximum for the code, then the pass count is incremented. Index signal 713 represents the probability class that has been received as an input signal.

In der Erfindung wird die Erzeugung von 1N Codewörter durchge­ führt, so daß deren Länge ohne eine zusätzliche Information be­ stimmt werden kann. Tabelle 12 veranschaulicht 1N Codewort-Dar­ stellungen von R3(2) Codewörtern für den Decodierer und Codie­ rer. Der Decodierer erwartet, daß das "1" Bit in einem "1N" Co­ dewort das niedrigstwertige Bit (LSB) ist, und daß der "N" Zähl­ wertanteil in der richtigen MSB . . . LSB-Reihenfolge vorliegt. In dem Decodierer kann das Codewort veränderlicher Länge nicht von einem Nullauffüllen unterschieden werden ohne zu wissen, welcher spezieller Code verwendet wird. In dem Codierer wird das Codewort umgekehrt, und die Position des höchstwertigen "1" Bits zeigt die Länge von "1N" Codewörtern an. Um Codewörter in einer Codie­ rer-Reihenfolge zu erzeugen, muß das Komplement des Zählwerts umgekehrt werden. Dies kann erreicht werden durch Umkehren des 13 Bit-Zählwerts und durch dessen Verschieben, so daß es zu dem niedrigstwertigen Bit (LSB) ausgerichtet ist. Wie im einzelnen nachstehend noch beschrieben wird, kehrt die Bit-Packeinheit die Codewörter in die Decodierer-Reihenfolge um. Jedoch hat diese Umkehr von Codewörtern keine erhöhte Komplexität der Bitpackein­ heit 606 zur Folge, da sie ein Schieben irgendwie durchführen muß.In the invention, the generation of 1N code words is performed so that their length can be determined without additional information. Table 12 illustrates 1N code word representations of R3 (2) code words for the decoder and encoder. The decoder expects the "1" bit in a "1N" codeword to be the least significant bit (LSB) and the "N" count portion in the correct MSB. . . LSB order is present. In the decoder, the variable length code word cannot be distinguished from zero padding without knowing which specific code is used. In the encoder, the code word is reversed and the position of the most significant "1" bit indicates the length of "1N" code words. To generate codewords in an encoder order, the complement of the count must be reversed. This can be accomplished by inverting the 13-bit count and shifting it so that it is aligned with the least significant bit (LSB). As will be described in more detail below, the bit packer reverses the code words into the decoder order. However, this reversal of code words does not result in increased complexity of the bit pack unit 606 since it must somehow perform a push.

Tabelle 12 Table 12

"2N"-Codewort-Darstellungen für R3(2) Codewörter "2N" code word representations for R3 (2) code words

Für R3 Codes erfordert ein Erzeugen von "N" Codewörtern auch, daß das Bit, das auf die "1" folgt, anzeigt, ob ein kurzer oder ein langer Zählwert vorliegt.For R3 codes, generating "N" code words also requires that the bit following the "1" indicates whether a short or there is a long count.

Durch Verwenden mehrerer Speicherbänke ermöglicht die Erfindung ein Pipelining. Beispielsweise kommt im Falle eines Speichers mit mehreren Anschlüssen eine Leseoperation für einen Speicher für ein uncodiertes Bit vor, während eine Leseoperation an dem Speicher für das vorherige uncodierte Bit vorkommt. The invention enables the use of several memory banks a pipelining. For example, in the case of a memory multi-port read operation for a memory for an uncoded bit during a read operation on the Memory for the previous uncoded bit occurs.  

Ein Altera AHDL-Abtast-AusführungAn Altera AHDL scanning version

Eine Ausführungsform des Codierer-Bitgenerators der Erfindung weist ein FPGA auf. Die Ausführung behandelt alle R2- und R3-Codes bis zu R2(12). Der AHDL-(Altera-Hardware-Beschreibungs-Sprach-)Quellencode ist unten aufgelistet.An embodiment of the encoder bit generator of the invention has an FPGA. The execution covers all R2 and R3 codes up to R2 (12). The AHDL (Altera Hardware Description Language) source code is listed below.

Die Auslegung weist mehrere Teile auf, wie in Fig. 12 darge­ stellt ist. Zuerst ist "ENCBG" 1301 der Hauptteil der Auslegung, welche die Logik hat, um den Start, das Ende und die Fortsetzung von Durchgängen zu behandeln. Zweitens wird "KEXPAND" 1302 ver­ wendet, um die Wahrscheinlichkeitsklasse auf die maximale Lau­ flänge, eine Maske variabler Länge und die Länge des ersten lan­ gen Codeworts für R3-Codes auszudehnen. "KEXPAND" 1303 ist iden­ tisch mit der Decodier-Funktion mit demselben Namen. Drittens nimmt der "LPSCW" 1304 teil an einem Zählwert und einer Informa­ tion über die Wahrscheinlichkeitsklasse in Form von Eingangswer­ ten und erzeugt das richtige "1N" Codewort.The design has several parts, as shown in Fig. 12 is Darge. First, "ENCBG" 1301 is the main part of the design that has the logic to handle the start, end, and continuation of passes. Second, "KEXPAND" 1302 is used to extend the probability class to the maximum run length, a variable length mask and the length of the first long code word for R3 codes. "KEXPAND" 1303 is identical to the decoding function with the same name. Third, the "LPSCW" 1304 takes part in a count and information about the probability class in the form of input values and generates the correct "1N" code word.

Die Ausführung verwendet zwei Pipeline-Stufen. Während der er­ sten Pipeline-Stufe wird der Zählwert inkrementiert, die Wahr­ scheinlichkeitsklasse wird ausgedehnt, und eine Subtraktion und ein Vergleich für lange R3 Codewörter wird durchgeführt. Alle übrigen Operationen werden während der zweiten Pipeline-Stufe durchgeführt.The execution uses two pipeline stages. During the he Most pipeline stage increments the count, the true Probability class is expanded, and a subtraction and a comparison for long R3 code words is made. All remaining operations will take place during the second pipeline stage carried out.

Die Umordnungseinheit der ErfindungThe reordering unit of the invention

Fig. 7 ist ein Blockdiagramm einer Ausführungsform der Umord­ nungseinheit. In Fig. 8 weist die Umordnungseinheit 6 eine Durch­ gangszähl-Umordnungseinheit 801 und eine Bitpackungseinheit 802 auf. Die Umordnungseinheit 801 bewegt Codewörter von dem Ende von Durchläufen, wie sie von dem Codierer erzeugt worden sind, zu dem Anfang von Durchläufen, wie sie von dem Decodierer benö­ tigt werden, während die Bitpackungseinheit 802 Codewörter vari­ abler Länge in verschachtelten Worten fester Länge zusammenfaßt und sie in der richtigen Reihenfolge abgibt, die von dem Deco­ dierer gefordert ist. Fig. 7 is a block diagram of an embodiment of the Umord-drying unit. In FIG. 8, the reordering unit 6 has a through count reordering unit 801 and a bit pack unit 802 . The reordering unit 801 moves code words from the end of runs as generated by the encoder to the start of runs as required by the decoder, while the bit packer unit 802 summarizes variable length code words into nested fixed-length words and delivers them in the correct order as required by the decoder.

Ein "Snooper"-Decodierer kann verwendet werden, um einen Deco­ dierer umzuordnen, wobei ein Decodierer in dem Codierer enthal­ ten ist, und schafft Anforderungen von Daten in einer Reihenfol­ ge, in welcher die Codewörter für den tatsächlichen Decodierer benötigt werden. Um einen "Snooper"-Decodierer zu stützen, kann ein Umordnen von Durchlaufzählwerten unabhängig für jeden Strom durchgeführt werden. Für Decodierer, die leicht modelliert wer­ den können, können mehrere Zeitstempel-(time stamped)Schlangen oder eine einzige Mischschlange (merged queue) verwendet werden, um ein Umordnen zuzulassen. In einer Ausführungsform kann ein Umordnen jedes Codeworts mit Hilfe einer schlangenförmigen Da­ tenstruktur erreicht werden und ist unabhängig von dem Verwenden von mehreren codierten Datenströmen. Wie das Umordnen durchge­ führt werden kann, wird nachstehend noch beschrieben.A "snooper" decoder can be used to make a deco reorder, with a decoder included in the encoder is, and creates requests for data in order in which the code words for the actual decoder are needed. To support a "snooper" decoder, can rearranging pass counts independently for each stream be performed. For decoders who are easily modeled can, multiple time stamped queues can or a single merged queue can be used, to allow reordering. In one embodiment, a Rearrange each code word using a snake-shaped da structure and is independent of the use of several coded data streams. How to rearrange can be performed, will be described below.

Die erste Umordnungsoperation, die in dem Codierer durchgeführt wird, besteht darin, jeden der Durchlaufwerte umzuordnen, so daß der Durchlaufwert am Anfang des Durchlaufs spezifiziert ist, (wenn der Decodierer für ein Decodieren notwendig ist). Dieses Umordnen ist erforderlich, da der Codierer nicht bis zum Ende eines Durchlaufs feststellen kann, was ein Durchlaufzählwert (und ein Codewort) ist. Folglich wird der sich ergebende Durch­ laufzählwert, der beim Codieren erzeugt worden ist, umgeordnet, so daß der Decodierer in der Lage ist, die Durchlaufzählwerte zurück in den Datenstrom richtig zu decodieren.The first reordering operation performed in the encoder is to rearrange each of the pass values so that  the run value is specified at the start of the run, (if the decoder is necessary for decoding). This Rearranging is required because the encoder doesn't finish of a pass can determine what a pass count (and a code word). Hence the resulting through reordered run count value that was generated during coding, so that the decoder is able to read the pass counts decode back into the data stream correctly.

In Fig. 7 weist die Umordnungseinheit 606 der Erfindung eine Durchlaufzähl-Umordnungseinheit 801 und eine Bitpackungseinheit 802 auf. Die Umordnungseinheit 804 ist vorgesehen, um mehrere Eingangssignale aufzunehmen, welche ein Startsignal 711, ein Endsignal 712, ein Indexsignal 713 und ein Codewort 714 enthal­ ten. Diese Signale werden im einzelnen in Verbindung mit der Durchlaufzähl-Umordnungseinheit der Fig. 8 beschrieben. Entspre­ chend den Eingangssignalen erzeugt die Umordnungseinheit 801 ein Codewort 803 und ein Signal 804. Das Signal 804 zeigt an, wann der Durchzählwert zurückzusetzen ist. Das Codewort 803 wird von der Bitpackungseinheit 802 aufgenommen. Entsprechend dem Code­ wort 803 erzeugt die Bitpackungseinheit 802 verschachtelte Worte 805. Die Umordnungseinheit 801 und die Bitpackungseinheit 802 werden später noch im einzelnen beschrieben.In Fig. 7, the reordering unit 606 of the invention has a pass count reordering unit 801 and a bit packing unit 802 . The reordering unit 804 is arranged to receive a plurality of input signals, which include a start signal 711 , an end signal 712 , an index signal 713 and a code word 714. These signals are described in detail in connection with the run count reordering unit of FIG. 8. According to the input signals, the reordering unit 801 generates a code word 803 and a signal 804 . Signal 804 indicates when the counting value is to be reset. The code word 803 is received by the bit packing unit 802 . According to the code word 803 , the bit packing unit 802 generates nested words 805 . The reordering unit 801 and the bit pack unit 802 will be described in detail later.

Durchlaufzählwert-UmordnungseinheitPass count shuffling unit

Wie vorstehend beschrieben, erhält der Decodierer Codewörter zu dem Zeitpunkt, wenn der Anfang der Daten, die durch das Codewort codiert worden sind, gebraucht wird. Jedoch kennt der Codierer nicht die Identität des Codeworts bis zum Ende der Daten, die durch das Codewort codiert worden sind.As described above, the decoder obtains code words the time when the beginning of the data by the code word have been encoded. However, the encoder knows not the identity of the code word until the end of the data have been encoded by the code word.

Ein Blockdiagramm einer Ausführungsform der Durchlaufzählwert-Um­ ordnungseinheit 801 wird anhand von Fig. 8 beschrieben. Die be­ schriebene Ausführungsform paßt sich vier verschachtelten Strö­ men an, wobei jedes verschachtelte Wort 16 Bits ist, und die Co­ dewörter sich in der Länge von 1 bis 13 Bits ändern. In einen solchen Fall kann die Umordnungseinheit 300 im Pipeline-System verarbeitet werden, um alle Ströme zu behandeln. Ferner wird ein Codierer, welcher Durchlaufzählwerte Wahrscheinlichkeitsklassen zuordnet, verwendet, so daß die maximale Anzahl an Durchlauf­ zählwerten, die zu irgendeinem Zeitpunkt aktiv sein kann, klein ist, und sie wird bei dieser Ausführungsform mit 25 angenommen. Die Erfindung ist nicht auf vier verschachtelte Ströme, ver­ schachtelte Worte mit 16 Bits oder Codewortlängen von 1 bis 13 Bits beschränkt und kann für mehr oder weniger Ströme mit ver­ schachtelten Worten von mehr oder weniger als 16 Bits und für Codewort-Längen verwendet werden, die sich von 1 Bit bis über 13 Bits erstrecken.A block diagram of one embodiment of the run count reordering unit 801 is described with reference to FIG. 8. The described embodiment adapts to four interleaved streams, each interleaved word being 16 bits, and the codewords changing in length from 1 to 13 bits. In such a case, the reordering unit 300 can be processed in the pipeline system to handle all streams. Furthermore, an encoder that maps run counts to probability classes is used so that the maximum number of run counts that may be active at any given time is small, and is assumed to be 25 in this embodiment. The invention is not limited to four interleaved streams, interleaved words with 16 bits or code word lengths from 1 to 13 bits and can be used for more or fewer streams with interleaved words of more or less than 16 bits and for code word lengths that extend from 1 bit to over 13 bits.

In Fig. 8 ist ein Zeigerzähler 901 vorgesehen, um ein Indexein­ gangssignal 713 aufzunehmen und erzeugt ein Adressen-Ausgangs­ signal, das mit einem Eingang eines Multiplexer (MUX) 902 ver­ bunden ist. Zwei weitere Eingänge des MUX 902 sind vorgesehen, um eine Adresse in Form eines Kopfzeigers von einem Kopfzähler 903 und eine Adresse in Form eines Nachlauf-(tail-)Zeigers von einem Nachlaufzähler 905 aufzunehmen. Das Ausgangssignal des MUX 902 ist eine Adresse, die für ein Zugreifen auf einen Codewort-Speicher 908 verwendet wird.In Fig. 8, a pointer counter 901 is provided to receive an index input signal 713 and generates an address output signal which is connected to an input of a multiplexer (MUX) 902 . Two further inputs of the MUX 902 are provided to receive an address in the form of a head pointer from a head counter 903 and an address in the form of a tail pointer from a tail counter 905 . The output of the MUX 902 is an address that is used to access a code word memory 908 .

Ein Indexeingangssignal 713 ist auch als ein Eingang an dem MUX 905 vorgesehen. Ein weiterer Eingang des MUX 905 ist an das Co­ dewort-Eingangssignal 719 gekoppelt. Der Ausgang des MUX 905 ist mit einem Eingang eines Gültigkeitsmoduls 906 und einem Datenbus 907 verbunden. Der Datenbus 907 ist mit einem Codewort-Speicher 908 und einem Eingang des MUX 905 verbunden. Ebenso ist mit dem Datenbus 907 ein Ausgang eines Steuermoduls 909 verbunden. Ein Starteingangssignal 711 und ein Endeingangssignal 712 sind vor­ gesehen, um Eingänge an dem Steuermodul 909 zu trennen. Die Aus­ gangssignale des Gültigkeitsmoduls 906 weisen das Codewort-Aus­ gangssignal 803 und das Signal 809 auf (Fig. 7). Die Umordnungs­ einheit 801 weist auch eine Steuerlogik auf (die nicht darge­ stellt ist um die Erfindung nicht unverständlich werden zu las­ sen), um die Operationen der verschiedenen Komponenten der Um­ ordnungseinheit 801 zu koordinieren.An index input signal 713 is also provided as an input to the MUX 905 . Another input of the MUX 905 is coupled to the codeword input signal 719 . The output of the MUX 905 is connected to an input of a validity module 906 and a data bus 907 . The data bus 907 is connected to a code word memory 908 and an input of the MUX 905 . An output of a control module 909 is also connected to the data bus 907 . A start input signal 711 and an end input signal 712 are provided to separate inputs on the control module 909 . The output signals of the validity module 906 have the code word output signal 803 and the signal 809 ( FIG. 7). The reordering unit 801 also includes a control logic (not provide Darge to the invention are not to obscure las sen) for the operations of the various components of the order ordering unit to coordinate eight hundred and first

Um es zu wiederholen, ein Indexeingangssignal 713 identifiziert einen Durchlauf. In einer Ausführungsform zeigt der Index eine von 25 Wahrscheinlichkeitsklassen an. In einem solchen Fall wer­ den fünf Bits benötigt, um den Index darzustellen. Wenn mehrere Anordnungen (banks) von Wahrscheinlichkeitsklassen verwendet werden, dann können zusätzliche Bits erforderlich sein, um die spezielle Anordnung zu spezifizieren. In einer Ausführungsform identifiziert das Indexeingangssignal die Wahrscheinlichkeits­ klasse für den Durchlaufzählwert. Ein Codewort-Eingangssignal 714 ist das Codewort, wenn das Ende eines Durchlaufs eintritt und es sonst ein "don′t care" wird. Starteingangssignale 711 und Endeingangssignale 712 sind Steuersignale, welche anzeigen, ob ein Durchlauf beginnt, endet, oder beides. Ein Durchlauf beginnt oder endet zu derselben Zeit, wenn der Durchlauf aus einem ein­ zigen uncodierten Bit besteht.To repeat, an index input 713 identifies a pass. In one embodiment, the index displays one of 25 probability classes. In such a case, who needs the five bits to represent the index. If multiple arrays (banks) of probability classes are used, additional bits may be required to specify the particular array. In one embodiment, the index input signal identifies the probability class for the pass count. A codeword input signal 714 is the codeword when the end of a run occurs and it otherwise becomes "don't care". Start input signals 711 and end input signals 712 are control signals that indicate whether a run begins, ends, or both. A run begins or ends at the same time when the run consists of a single uncoded bit.

Die Umordnungseinheit 801 ordnet die Durchlaufzählwerte, die von dem Bitgenerator erzeugt worden sind, entsprechend ihren Eingangssignalen um. Ein Codewortspeicher 908 speichert Codewör­ ter während des Umordnens. In einer Ausführungsform ist der Co­ dewortspeicher 908 größer als die Zahl der Durchlaufzählwerte, die zu einer bestimmten Zeit aktiv sein können. Dies führt zu einer besseren Kompression. Wenn der Codewortspeicher kleiner ist als die Anzahl an Durchlaufzählwerten, die zu einer bestimm­ ten Zeit aktiv sein können, würde dies tatsächlich die Anzahl an aktiven Durchlaufzählwerten auf eine Zahl begrenzen, die in dem Speicher gehalten sein könnte. In einem System, das eine gute Verdichtung schafft, kommt es oft vor, daß, während Daten für ein Codewort mit einem langen Durchlaufzählwert akkumuliert wer­ den, viele Codewörter mit kurzen Durchlaufzählwerten starten (oder auch vielleicht enden). Dies erfordert einen großen Spei­ cher, um ein Herausdrängen des langen Durchlaufs zu vermeiden, bevor er beendet ist. The shuffling unit 801 shuffles the pass counts generated by the bit generator according to their input signals. A code word memory 908 stores code words during reordering. In one embodiment, code memory 908 is greater than the number of pass counts that may be active at a particular time. This leads to better compression. Indeed, if the code word memory is less than the number of pass counts that may be active at any given time, this would limit the number of active pass counts to a number that could be held in memory. In a system that provides good compression, it often happens that while data is being accumulated for a code word with a long pass count, many code words start (or maybe end) with short pass counts. This requires a large memory to avoid pushing out the long run before it is finished.

Der Zeigerspeicher 901 speichert Adressen für Codewort-Spei­ cherstellen für Wahrscheinlichkeitsklassen, die in der Mitte ei­ nes Durchlaufs sind, und adressiert einen Codewortspeicher 908 in der Art eines direkten Zugriffs. Der Zeigerspeicher 901 hat eine Speicherstelle für die Adresse in dem Codewortspeicher 908 für jede Wahrscheinlichkeitsklasse, die in der Mitte eines Durchlaufs sein kann. Sobald ein Durchlauf für eine ganz be­ stimmte Wahrscheinlichkeitsklasse beendet ist, wird die Adresse, die in dem Zeigerspeicher 901 für diese Wahrscheinlichkeitsklas­ se gespeichert ist, verwendet, um auf einem Codewortspeicher 908 zuzugreifen, und das beendete Codewort wird an dieser Stelle in den Codewortspeicher 908 geschrieben. Bis zu diesem Zeitpunkt enthielt diese Stelle in dem Codewortspeicher 908 einen ungülti­ gen Eintrag. Folglich speichert der Zeigerspeicher 901 die Stel­ le des ungültigen Codeworts für jeden Durchlaufzählwert.Pointer memory 901 stores addresses for codeword locations for probability classes that are in the middle of a pass and addresses a codeword memory 908 in the manner of a direct access. Pointer memory 901 has a location for the address in code word memory 908 for each probability class, which may be in the middle of a pass. Once a run is completed for all be true probability class, the address stored in the pointer memory 901 for this probability Klas se, used to access a code word memory 908, and the finished code word is written at this point in the code word memory 908 . Up to this point, this location in the code word memory 908 contained an invalid entry. Thus, pointer memory 901 stores the position of the invalid code word for each pass count.

Der Kopfzähler 903 und der Nachlaufzähler 904 erzeugen auch Adressen, um auf den Codewortspeicher 908 zuzugreifen. Mit Hilfe der Zähler 903 und 904 kann der Codewortspeicher 908 als eine Schlange oder ein Kreispuffer (z. B. ein FIFO-Speicher). Der Nachlaufzähler 904 enthält die Adresse der nächsten verfügbaren Stelle in dem Codewortspeicher 908, um das Einfügen eines Code­ worts in den Speicher 908 zuzulassen. Der Kopfzähler 903 enthält die Adresse im Speicher 908 des nächsten auszugebenden Code­ worts. Mit anderen Worten, der Kopfzähler 903 enthält die Code­ wort-Speicheradresse des nächsten Codeworts, das aus dem Spei­ cher 908 zu löschen ist. Eine Stelle für jeden möglichen Index (z. B. einer Wahrscheinlichkeitsklasse) im Zeigerspeicher 901 wird verwendet, um sich daran zu erinnern, wo der Nachlaufzähler 904 war, als ein Durchlauf gestartet wurde, so daß das richtige Codewort an dieser Stelle des Codewortspeichers 908 plaziert werden kann, wenn der Durchlauf endet.The head counter 903 and the lag counter 904 also generate addresses to access the code word memory 908 . Using counters 903 and 904 , code word memory 908 can be a queue or a circular buffer (e.g., a FIFO memory). The follow-up counter 904 contains the address of the next available location in the code word memory 908, allowing for the insertion of a code word in the memory 908th The head counter 903 contains the address in the memory 908 of the next code word to be output. In other words, the head counter 903 contains the code word memory address of the next code word to be deleted from the memory 908 . A location for each possible index (e.g., a probability class) in pointer memory 901 is used to remember where the lag counter 904 was when a run was started so that the correct codeword places the codeword memory 908 at that location can be when the run ends.

Ein Steuermodul 903 erzeugt ein gültiges Signals als Teil der Daten, die in dem Codewortspeicher 908 gespeichert sind, um an­ zuzeigen, ob ein Eintrag gültige Speicherwortdaten speichert oder nicht. Wenn beispielsweise das gültige Bit auf einer logi­ schen 1 liegt, dann enthält die Codewort-Speicherstelle gültige Daten. Wenn jedoch das gültige Bit auf logisch 0 ist, dann ent­ hält die Codewort-Speicherstelle ungültige Daten. Ein Gültig­ keitsmodul 905 stellt fest, wenn eine Speicherstelle ein gülti­ ges Codewort enthält, jedesmal wenn ein Codewort aus dem Spei­ cher 809 gelesen wird. In einer Ausführungsform fühlt der Gül­ tigkeitsmodul 907, ob die Speicherstelle ein gültiges Codewort oder ein spezieller ungültiger Code ist.A control module 903 generates a valid signal as part of the data stored in code word memory 908 to indicate whether or not an entry stores valid memory word data. For example, if the valid bit is a logic 1, then the code word location contains valid data. However, if the valid bit is at logic 0, then the code word location contains invalid data. A validity module 905 determines if a memory location contains a valid code word each time a code word is read from the memory 809 . In one embodiment, the validity module 907 senses whether the memory location is a valid code word or a special invalid code.

Wenn ein neuer Durchlauf startet, wird ein ungültiger Datenein­ trag in den Codewortspeicher 908. Der ungültige Dateneintrag wirkt als ein Platzhalter in dem Datenstrom, der in dem Speicher 908 gespeichert ist, so daß das Codewort für den Durchlauf in dem Speicher an der richtigen Stelle gespeichert werden kann, um ein richtiges Ordnen sicherzustellen (um den Decodierer zu mo­ dellieren), wenn der Durchlauf beendet ist. In einer Ausfüh­ rungsform schließt der ungültige Dateneintrag den Index über den MUX 905 und eine ungültige Anzeige, (z. B. ein ungültiges Bit) von dem Steuermodul 909 ein. Die Adresse im Codewortspeicher 908, an welcher der ungültige Eintrag gespeichert ist, wird von einem Nachlaufzeiger 904 eingegeben und anschließend in dem Zei­ gerspeicher 901 als ein Rest der Stelle für den Durchlaufzähl­ wert in dem Codewortspeicher 908 gespeichert. Der Rest der Da­ ten, der zwischen dem Kopfzeiger 903 und dem Nachlaufzeiger 904 im Speicher 908 vervollständig Durchlaufzählwerte (z. B. ungeord­ nete Durchlaufzählwerte). Die maximale Anzahl an ungültigen Speicherstellen ist 0 bis |-1, wobei | die Anzahl der Durch­ laufzählwerte ist. Wenn ein Codewort am Ende eines Durchlaufs vollständig ist, wird der Durchlaufzählwert im Speicher 908 mit der Adresse, die in dem Zeigerspeicher 901 gespeichert ist, ge­ füllt.When a new run starts, an invalid data entry is made in the code word memory 908 . The invalid data entry acts as a placeholder in the data stream stored in memory 908 , so that the pass code word can be stored in memory in the correct location to ensure proper ordering (to model the decoder) when the run is finished. In one embodiment, the invalid data entry includes the index via the MUX 905 and an invalid indication (e.g., an invalid bit) from the control module 909 . The address in code word memory 908 where the invalid entry is stored is entered by a trailing pointer 904 and then stored in pointer memory 901 as a remainder of the location for the pass count in code word memory 908 . The rest of the data completed between the head pointer 903 and the trailing pointer 904 in memory 908 completes run counts (e.g., disordered run counts). The maximum number of invalid memory locations is 0 to | -1, where | is the number of cycle counts. When a code word is complete at the end of a pass, the pass count in memory 908 is filled with the address stored in pointer memory 901 .

Wenn ein Durchlauf startet, wird der Index für den Durchlauf im Speicher 908 gespeichert, so daß wenn der Speicher 908 voll ist, der Durchlauf jedoch noch nicht beendet ist, der Index in Ver­ bindung mit dem Signal 804 verwendet wird, um den entsprechenden Durchlaufzähler zurückzusetzen. Zusätzlich zum Speicher von Co­ dewörtern und Indizes im Speicher 908 wird ein Bit, das als das "gültige" Bit bezeichnet wird, verwendet, um anzuzeigen, welche von diesen Datenarten gespeichert wird.When a run starts, the index for the run is stored in memory 908 so that when memory 908 is full but the run is not yet complete, the index in conjunction with signal 804 is used to reset the corresponding run counter . In addition to storing codewords and indexes in memory 908 , a bit referred to as the "valid" bit is used to indicate which of these types of data is stored.

Wenn ein Durchlauf nicht startet oder endet, ist die Durchlauf­ zählwert-Umordnungseinheit leer. Wenn ein Durchlauf startet und ein Durchlauf nicht endet, und wenn der Speicher voll ist, dann wird ein Codewort vom Speicher 908 abgegeben. Das Codewort, das abgegeben wird, ist das Codewort, das an der Adresse gespeichert worden ist, die in dem Kopfzeiger 903 für diese Wahrscheinlich­ keitsklasse enthalten ist. Wenn dann ein Durchlauf startet und ein Durchlauf nicht endet, wird (unabhängig davon, ob der Spei­ cher voll ist) das Indexeingangssignal 713 in den Speicher 908 über den MUX 903 an der durch den Nachlaufzeiger 904 bestimmten Adresse eingeschrieben. Der Nachlaufzeiger 904 wird dann in den Nachlaufspeicher 903 an eine Adresse geschrieben, welche durch die Daten in dem Indexeingangssignal 713 bestimmt sind (z. B. an der Stelle in dem Zeigerspeicher 901 für die Wahrscheinlich­ keitsklasse). Nach dem Schreiben des Nachlaufzeigers 904 wird der Nachlaufzeiger 904 inkrementiert.If a run does not start or end, the run count shuffling unit is empty. If a run starts and a run does not end, and if the memory is full, then a code word is output from memory 908 . The code word that is delivered is the code word that has been stored at the address contained in the head pointer 903 for this probability class. Then, when a run starts and a run does not end, (regardless of whether the Spei is cher full) is written, the index input signal 713 to the memory 908 via MUX 903 to the position determined by the trailing pointer 904 address. Trailing pointer 904 is then written to trailing memory 903 at an address determined by the data in index input signal 713 (e.g., at the location in pointer memory 901 for the probability class). After the trailing pointer 904 is written, the trailing pointer 904 is incremented.

Wenn ein Durchlauf endet und ein Durchlauf nicht startet, dann wird die Adresse, die in dem Zeigerspeicher 901 entsprechend dem Index (der Wahrscheinlichkeitsklasse) gespeichert ist, ausgele­ sen und als die Stelle in dem Codewortspeicher verwendet, um das vervollständigte Wort in dem Codewort-Eingangssignal 714 zu speichern.If a run ends and a run does not start, then the address stored in pointer memory 901 corresponding to the index (probability class) is read out and used as the location in the code word memory to include the completed word in the code word input 714 store.

Wenn ein Durchlauf startet und ein Durchlauf endet (d. h. ein Durchlauf gleichzeitig sowohl beginnt als auch endet) und wenn der Speicher voll ist, dann wird ein Codewort von dem Speicher 908 aus abgegeben. Wenn ein Durchlauf startet und ein Durchlauf endet, wird (unabhängig davon, ob der Speicher voll ist) das Co­ dewort-Eingangssignal 714 in den Speicher 908 an der durch den Nachlaufzeiger 904 festgelegten Adresse geschrieben. Der Nach­ laufzeiger 904 wird dann inkrementiert, um die nächste verfügba­ re Stelle zu erhalten (z. B. er wird um 1 inkrementiert).When a run starts and a run ends (ie, a run both starts and ends at the same time) and when the memory is full, a code word is output from the memory 908 . When a run starts and a run ends, regardless of whether the memory is full, the code word input 714 is written into the memory 908 at the address specified by the tracking pointer 904 . The trailing pointer 904 is then incremented to obtain the next available location (e.g., it is incremented by 1).

In der Erfindung kann eine Umordnungseinheit 801 Codewörter zu verschiedenen Zeiten ausgeben. In einer Ausführungsform können Codewörter ausgegeben werden, wenn sie gültig oder ungültig sind. Codewörter können ausgegeben werden, wenn sie gültig sind, wenn ein Zustand vorliegt, daß der Speicher voll ist, und ein Durchlauf nicht vollständig durchgeführt ist. Ungültige Codewör­ ter können auch ausgegeben werden, um eine minimale Rate (d. h. für eine Ratensteuerung) aufrechtzuerhalten. Ebenso können un­ gültige Codewörter ausgegeben werden, um den Codewortspeicher 908 auszugleichen, wenn alle Daten einer Durchlaufzählwert-Um­ ordnung unterzogen worden sind, oder wenn eine Durchlaufzähl­ wert-Umordnungseinheit in die Mitte eines Codewortspeichers 908 als Ergebnis einer Rücksetzoperation springt. In einem solchen Fall muß der Decodierer merken, daß der Codierer in dieser Weise arbeitet.In the invention, a reordering unit 801 can output code words at different times. In one embodiment, code words can be output if they are valid or invalid. Code words can be output if they are valid, if there is a state that the memory is full and a pass has not been completed. Invalid codewords can also be issued to maintain a minimum rate (ie, for rate control). Likewise, invalid code words may be issued to equalize code word memory 908 when all data has been subjected to a run count reordering or when a run count reordering unit jumps to the center of a code word store 908 as a result of a reset operation. In such a case, the decoder must realize that the encoder works in this way.

Wie vorstehend beschrieben, wird ein Codewort ausgegeben, wenn der Codewortspeicher 908 voll ist. Sobald der Speicher voll ist, wird, wenn eine Eingabe (d. h. ein Starten eines neuen Code­ worts) in den Speicher 908 gemacht wird, ein Ausgangssignal von dem Speicher 908 abgegeben. Ein Aktualisieren auf einen Eintrag bewirkt nicht ein Ausgangssignal von dem Speicher 908, wenn ein Zustand vorliegt, daß der Speicher voll ist. Das heißt, die Be­ endigung eines Durchlaufs, auf den das Schreiben des sich erge­ benden Codeworts in eine vorher zugeteilte Speicherstelle folgt bewirkt nicht, daß bei vollem Speicher ein Ausgangssignal er­ folgt. Ebenso kann, wenn ein Durchlauf endet und die entspre­ chende Adresse im Zeigerspeicher 901 und die Adresse in dem Kopfzähler 903 dieselben sind, das Codewort unmittelbar abgege­ ben werden und und der Kopfzähler 903 kann dann inkrementiert werden, ohne auf den Codewortspeicher 908 zuzugreifen. In einer Ausführungsform kommt es zu einem Zustand, daß der Speicher voll ist, wenn der Nachlaufzeiger 904 gleich dem Kopfzeiger 903 ist, nachdem der Nachlaufzeiger inkrementiert worden ist. Folglich gleicht, sobald der Nachlaufzeiger 904 inkrementiert worden ist, die Steuerlogik in der Umordnungseinheit 801 den Nachlaufzeiger 904 in den Kopfzeiger 903, und wenn sie dieselben sind, legt die Steuerlogik fest, daß der Codewortspeicher 908 voll ist, und daß ein Codewort ausgegeben werden sollte. In einer anderen Ausfüh­ rungsform können Codewörter ausgegeben werden, bevor der Spei­ cher voll ist. Wenn beispielsweise der Teil der Schlange, wel­ cher durch den Kopf adressiert worden ist, gültige Codewörter enthält, wird er ausgegeben. Dies erfordert, daß der Anfang der Schlange wiederholt zu prüfen ist, um den Zustand der Codewörter darin zu bestimmen. Der Codewortspeicher 908 wird am Ende eines Datei-Codierens geleert.As described above, a code word is output when the code word memory 908 is full. Once the memory is full, when an input (ie, a new code word is started) to the memory 908 , an output signal is output from the memory 908 . Updating to an entry does not produce an output from memory 908 when there is a condition that the memory is full. That is, the completion of a run followed by the writing of the resulting code word in a previously allocated memory location does not cause an output signal to follow when the memory is full. Likewise, when a run ends and the corresponding address in pointer memory 901 and the address in head counter 903 are the same, the code word can be immediately given and the head counter 903 can then be incremented without accessing code word memory 908 . In one embodiment, a state occurs that the memory is full when the tail pointer 904 is equal to the head pointer 903 after the tail pointer has been incremented. Thus, once the trailing pointer 904 has been incremented, the control logic in the reordering unit 801 is equal to the trailing pointer 904 in the header pointer 903 , and if they are the same, the control logic determines that the code word memory 908 is full and that a code word should be output . In another embodiment, code words can be output before the memory is full. For example, if the part of the queue addressed by the header contains valid code words, it is output. This requires that the beginning of the queue be checked repeatedly to determine the state of the code words therein. Code word memory 908 is cleared at the end of file encoding.

Von der Umordnungseinheit 801 wird ein Codewort ausgegeben, in­ dem zuerst ein Wert (z. B. ein Datenwert) von dem Speicher 908 an einer Adresse gelesen wird, welche durch den Kopfzeiger 903 spezifiziert ist. Das Ausgeben von Codewörtern wird mit Hilfe der Steuerlogik gesteuert und koordiniert. Der Gültigkeitsmodul 906 führt eine Überprüfung durch, um zu bestimmen, wenn der Wert ein Codewort ist. Mit anderen Worten, der Gültigkeitsmodul 906 bestimmt, ob das Codewort gültig ist. In einer Ausführungsform stellt der Gültigkeitsmodul 906 die Gültigkeit eines Eintrags durch Überprüfen des Gültigkeitsbits fest, das bei jedem Eintrag gespeichert worden ist. Wenn der Wert ein Codewort ist (d. h. das Codewort gültig ist), dann wird der Wert als ein Codewort ausge­ geben. Wenn dagegen der Wert nicht ein Codewort ist, d. h. das Codewort ungültig ist), dann kann irgendein Codewort ausgegeben werden, welches einen Durchlauf von MPSs hat, der zumindest so­ lang wie der aktuelle Durchlaufzählwert ist. Das "0" Codewort ist ein Codewort, das korrekt insoweit den aktuellen Durchlauf darstellt und kann ausgegeben werden. Nachdem die Ausgabe durch­ geführt worden ist, wird der Kopfzeiger 903 auf die nächste Stelle im Codewortspeicher 908 inkrementiert. Andererseits kann mit Hilfe von "1N" mit den kürzesten zulässigen Durchlauflängen der Decodier nur prüfen, ob ein Codewort vor einem Abgeben eines LPS herausgedrückt worden ist.A code word is output by the reordering unit 80 in which a value (eg a data value) is first read from the memory 908 at an address specified by the head pointer 903 . The output of code words is controlled and coordinated using the control logic. The validity module 906 checks to determine if the value is a code word. In other words, the validity module 906 determines whether the code word is valid. In one embodiment, the validation module 906 determines the validity of an entry by checking the validity bit that has been stored for each entry. If the value is a code word (ie the code word is valid), then the value is output as a code word. On the other hand, if the value is not a code word (ie the code word is invalid), then any code word can be output that has a pass of MPSs that is at least as long as the current pass count. The "0" code word is a code word that correctly represents the current run and can be output. After the output is done, the head pointer 903 is incremented to the next position in the code word memory 908 . On the other hand, with the aid of "1N" with the shortest permissible throughput lengths, the decoder can only check whether a code word has been pressed out before an LPS is issued.

In einer Ausführungsform arbeitet die Umordnungseinheit 801 mit zwei Taktzyklen. In dem ersten Taktzyklus werden Eingänge in die Umordnungseinheit 801 aufgenommen. In dem zweiten Taktzyklus kommt ein Ausgang an dem Codewortspeicher 908 vor.In one embodiment, reordering unit 801 operates on two clock cycles. In the first clock cycle, inputs are added to reordering unit 801 . In the second clock cycle, an output occurs at code word memory 908 .

Obwohl Codewörter ausgegeben werden können, wenn ein Kopfzeiger 903 ein gültiges Codewort adressiert, kann es bei einigen Aus­ führungen wünschenswert sein, nur ein Codewort auszugeben, wenn der Puffer voll ist. Dies bewirkt, daß das System eine fest vor­ gegebene Verzögerung in Form einer Anzahl von Codewörtern statt einer veränderlichen Verzögerung hat. Wenn der Speicher 908 eine vorbestimmte Anzahl Codewörter halten kann, ist zwischen dem Zeitpunkt, an welchem ein Durchlauf startet und eingegeben wird und wenn er ausgegeben wird, die Verzögerung die Anzahl Codewör­ ter ist, seit ein Ausgang nicht gemacht worden ist, bis er voll ist. Folglich gibt es eine konstante Verzögerung in den Codewör­ tern. Die Umordnungsverzögerung ist noch mit anderen Maßnahmen veränderlich, beispielsweise hinsichtlich der Menge an codierten oder ursprünglichen Daten. Wenn ein Speicher 908 vor dem Erzeu­ gen eines Ausgangssignals aufgefüllt wird, wird durch das Aus­ gangssignal ein Codewort pro Zyklus erzeugt.Although code words may be output when a head pointer 903 addresses a valid code word, in some implementations it may be desirable to output only one code word when the buffer is full. This causes the system to have a fixed delay in the form of a number of code words instead of a variable delay. If memory 908 can hold a predetermined number of code words, between the time a pass starts and is entered and when it is issued, the delay is the number of code words since an output has not been made until it is full . Hence there is a constant delay in the codewords. The reordering delay can be modified with other measures, for example with regard to the amount of encoded or original data. If a memory 908 is filled before generating an output signal, one code word is generated per cycle by the output signal.

Wenn eine Codewort-Speicherstelle als ungültig markiert ist, können die unbenutzten Codes verwendet werden, um Identifizie­ rung zu speichern, für welchen Durchlaufzählwert dies ist (d. h. die Kontextfach- oder Wahrscheinlichkeitsklasse, welche die Stelle füllen muß, wird dort gespeichert). Diese Information ist brauchbar, um den Fall zu behandeln, bei welchem der Speicher voll ist. Insbesondere kann die Information dazu verwendet wer­ den, dem Bitgenerator anzuzeigen, daß ein Codewort für diese spezielle Lauflänge nicht beendet wurde, und daß sie nun beendet werden muß. In einem solchen Fall wird ein Entscheidung getrof­ fen, um ein ungültiges Codewort aus zugeben, welches infolge des Zustands, das der Speicher voll ist, aufgetreten sein kann. Folglich zeigt, wenn das System den Durchlaufzähler zurücksetzt, die Information an, wenn hinsichtlich Bitgeneratoren und Durch­ laufzählwerten, das System wieder anzufangen beginnt.If a codeword location is marked as invalid, the unused codes can be used to identify for which run count this is (i.e. the context subject or probability class that the Must be filled there is saved there). This information is useful to handle the case where the memory is full. In particular, the information can be used for who to indicate to the bit generator that a code word for this special run length has not ended, and that it has now ended must become. In such a case, a decision will be made  to output an invalid code word which is the result of the State that the memory is full may have occurred. Therefore, when the system resets the pass counter, the information on when regarding bit generators and by run counts, the system begins to restart.

Bezüglich der Indexeingabe kann aus Pipelining-Gründe, wenn Bänke von Wahrscheinlichkeitsklassen verwendet werden, der Index eine Bankidentifizierung enthalten. Das heißt, es kann mehrere Durchlaufzählwerte für eine ganz bestimmte Wahrscheinlichkeits­ klasse geben. Beispielsweise können zwei Durchlaufzählwerte für den 80%-Code verwendet werden, wenn erst der eine und dann der andere verwendet wird.Regarding the entry of the index, for pipelining reasons, if Banks of probability classes are used, the index contain a bank identification. That means there can be several Pass counts for a specific probability give great. For example, two pass counts for the 80% code should be used if only one and then the other is used.

Da die Codewörter veränderliche Länge haben, müssen die im Speicher 908 in einer Weise gespeichert werden, daß ihre Länge festzustellen ist. Obwohl es möglich sein würde, die Größe ex­ plizit zu speichern, würde dieses Wort die Speichernutzung mini­ mieren. Für R-Codes kann ein Wert null im Speicher ein Einbit "0" Codewort anzeigen, und die "1N" Codewörter können gespei­ chert werden, so daß ein Prioritätscodierer verwendet werden kann, um die Länge für das erste "1" Bit zu bestimmen.Since the code words are of variable length, they must be stored in memory 908 in such a way that their length can be determined. Although it would be possible to save the size explicitly, this word would minimize memory usage. For R codes, a zero value in memory can indicate a one-bit "0" codeword and the "1N" codewords can be stored so that a priority encoder can be used to determine the length for the first "1" bit.

Wenn der Speicher 908 einer mit mehreren Eingängen (z. B. zwei Eingängen ist) kann diese Ausführung im Pipeline-System verar­ beitet werden, um ein Codewort pro einem Taktzyklus zu behan­ deln. Da auf eine Stelle Speicher 908 Zugriff von mehreren Ein­ gängen sein könnte, kann eine Stelle im Speicher 908 beschrieben werden, wie wenn ein ungültiges Codewort zu speichern ist, wäh­ rend ein anderer Teil gelesen werden kann, wie wenn ein Codewort ausgegeben wird. In einem solchen Fall sind Multiplexer zu mul­ tiplizieren, um die Daten- und Adressenbusse zu stützen.If memory 908 is one with multiple inputs (e.g., two inputs), this execution can be pipelined to handle one code word per one clock cycle. Since a location in memory 908 could be accessed by multiple inputs, a location in memory 908 can be described as if an invalid code word is to be stored, while another part can be read, such as if a code word is output. In such a case, multiplexers are to be multiplied to support the data and address buses.

Wenn jedoch der Codierer ein "0" Codewort abgibt, und einen Durchlaufzähler rücksetzt, da der Codewortspeicher voll ist, muß der Decodierer dasselbe tun. Dies erfordert, daß der Decodierer die Codierer-Codewortspeicher-Schlange modelliert. Wie dies durchgeführt wird, wird weiter unten erläutert.However, if the encoder outputs a "0" code word and one Run counter resets because the code word memory is full the decoder do the same. This requires that the decoder  the encoder code word store queue is modeled. Like this is explained below.

Um Leistung in CMOS-Implementierungen zu sparen, können Zähler für "|N" Codewörter wirksam gemacht werden, wenn "0" Codewörter für ungültige Durchläufe ausgegeben werden. Das heißt, da ein zu decodierendes "1N" Codewort gültig ist, während nur ein "0" Co­ dewort ungültig sein kann.To save performance in CMOS implementations, counters can for "| N" codewords can be made effective if "0" codewords are issued for invalid runs. That means there too decoding "1N" code word is valid, while only a "0" Co word may be invalid.

Alternative Ausführungsform, die auf Kontext basiertAlternative context based embodiment

Fig. 9 ist ein Blockdiagramm für eine andere Ausführungsform einer Durchlaufzählwert-Umordnungseinheit, welche Daten umord­ net, welche gemäß einem Kontext (was einer Wahrscheinlichkeits­ klasse entgegengesetzt ist) empfangen worden sind. Die Umord­ nungseinheit 1000 führt eine Umordnung mit Hilfe der R-Codes durch. In Fig. 9 enthält die Einheit 1000 einen Zeigerspeicher 1001, einen Kopfzähler 1002, einen Nachlaufzähler 1003, einen Datenmultiplexer (MUX) 1004, ein Adressen-MUX 1005, einen Län­ genberechnungsblock 1006, einen Gültigkeitsfühlblick 1007 und einen Codewortspeicher 1008. Der Speicher 1008 speichert Code­ wörter während des Umordnens. Der Speicher 101 speichert Adres­ sen für Codewort-Speicherstellen für Kontextfächer, die in der Mitte eines Durchlaufs liegen. Durch die Zähler 1002 und 1003 kann ein Codewortspeicher 1008 als eine Schlange oder ein Krei­ spuffer und zusätzlich in der Art eines direkten Zugriffs durch den Zeigerspeicher 101 adressiert werden. Für R-Codes kann ein Speichern eines Nullwertes im Speicher ein Einbit "0" Codewort anzeigen, und die "1N" Codewörter können gespeichert werden, so daß ein Prioritätscodierer verwendet werden kann, um die Länge von dem ersten "1" Bit zu bestimmen. Ein Längenberechnungsblock oder -Modul 1008 arbeitet wie ein Prioritätscodierer. ( Falls an­ dere Codes variabler Länge verwendet würden, würde es speicher­ effizienter sein, ein "1" Bit hinzuzufügen, um den Start des Co­ deworts zu addieren, als log₂ Bits hinzuzufügen, um explizit die Länge zu speichern.) Die Umordnungseinheit 1000 weist eine "Backstage"-Steuerlogik auf, um die Komponenten 1001 bis 1008 zu koordinieren und zu steuern. Fig. 9 is a block diagram for another embodiment of a pass count reordering which data which have been received in accordance with a context umord net (which is opposite to a probability class). The rearrangement unit 1000 performs rearrangement using the R codes. In FIG. 9, unit 1000 includes a pointer memory 1001 , a head counter 1002 , a tracking counter 1003 , a data multiplexer (MUX) 1004 , an address MUX 1005 , a length calculation block 1006 , a validity lookup 1007 and a code word memory 1008 . Memory 1008 stores code words during the reordering. Memory 101 stores addresses for codeword locations for context bins that are in the middle of a pass. Through the counters 1002 and 1003 , a code word memory 1008 can be addressed as a queue or a circular buffer and additionally in the manner of a direct access through the pointer memory 101 . For R codes, storing a zero value in memory may indicate a one bit "0" code word, and the "1N" code words may be stored so that a priority encoder can be used to determine the length from the first "1" bit. A length calculation block or module 1008 operates like a priority encoder. (If other variable length codes were used, it would be more efficient to add a "1" bit to add the start of the code word than to add log 2 bits to store the length explicitly.) The reordering unit 1000 has one "Backstage" control logic to coordinate and control components 1001 through 1008 .

Die Arbeitsweise der Umordnungseinheit 1000 ist sehr ähnlich der Umordnungseinheit, die auf Wahrscheinlichkeits-Voranschlägen basiert. Wenn ein neuer Durchlauf startet, dann wird ein ungül­ tiger Eintrag, welcher das Kontextfach einschließt, in den Code­ wortspeicher 1008 an der Adresse geschrieben, welche durch den Nachlaufzeiger 1003 angezeigt ist. Eine Adresse des Nachlaufzei­ gers 1003 wird dann in dem Zeigerspeicher 1001 an der Adresse des Kontextfaches des aktuellen Durchlaufzählwerts gespeichert. Der Nachlaufzähler 1003 wird dann inkrementiert. Wenn ein Durchlauf endet, wird der Zeiger in dem Zeigerzähler 1001, welcher dem Durchlaufzählwert entspricht, aus dem Zeiger 1001 gelesen, und das Codewort wird parallel in den Codewortspeicher 1008 an einer durch den Zeiger festgelegten Stelle geschrieben. Wenn ein Durchlauf weder startet noch endet und wenn eine Stelle im Code­ wortspeicher 1008, welche durch die Adresse des Kopfzeigers 1004 bestimmt ist, nicht ungültige Daten enthält, wird das durch den Kopfzeiger adressierte Codewort eingelesen und ausgegeben. Der Kopfzeiger 1004 wird dann inkrementiert. Für den Fall, daß ein Durchlauf gleichzeitig sowohl beginnt und endet, wird das Code­ wort in den Codewortspeicher 1008 an der durch den Nachlaufzei­ ger 1003 bestimmten Adresse geschrieben und dann wird der Nach­ laufzeiger 1003 inkrementiert.The operation of the reordering unit 1000 is very similar to the reordering unit, which is based on probability estimates. When a new run starts, an invalid entry including the contextual subject is written into the code word memory 1008 at the address indicated by the trailing pointer 1003 . An address of the trailing pointer 1003 is then stored in the pointer memory 1001 at the address of the context bin of the current pass count. The lag counter 1003 is then incremented. When a pass ends, the pointer in the pointer counter 1001 corresponding to the pass count is read from the pointer 1001 , and the code word is written in parallel to the code word memory 1008 at a location specified by the pointer. If a run neither starts nor ends and if a position in the code word memory 1008 , which is determined by the address of the head pointer 1004 , does not contain invalid data, the code word addressed by the head pointer is read in and output. The head pointer 1004 is then incremented. In the event that a run both simultaneously begins and ends, the code word in the code word memory 1008 at the ger by the Nachlaufzei 1003 specific address written and then the post is run pointer 1003 increments.

In ähnlicher Weise kann, wenn ein Durchlauf endet und die ent­ sprechende Adresse im Zeigerspeicher 1001 und die Adresse im Kopfzähler 1002 dieselben sind, das Codewort unmittelbar ausge­ geben, und der Wert im Kopfzähler 1002 kann inkrementiert wer­ den, ohne auf den Codewortspeicher 1008 zurückzugreifen.Similarly, when a run ends and the corresponding address in pointer memory 1001 and the address in header counter 1002 are the same, the code word can be output immediately, and the value in header counter 1002 can be incremented without resorting to code word memory 1008 .

Für Durchlaufzählwert "Kontext"-Systeme fordert jeder Kontext eine Speicherstelle im Zeigerspeicher 1001, so daß die Breite des BG- und PEM-Zustandsspeicher erweitert werden kann, um die­ sen Speicher zu implementieren. Die Breite des Zeigerspeichers 1001 ist gleich der Größe, die für eine Codewort-Speicheradresse benötigt wird. Die Anzahl Stellen im Codewortspeicher 1008 kann durch den Entwickler in einer ganz bestimmten Implementierung gewählt werden. Die begrenzte Größe dieses Speichers verringert den Kompressionswirkungsgrad, so daß es ein Kosten/Kompressions­ abwägen (trade-off) ist. Die Breite des Codewortspeichers ist gleich der Größe des größten Codeworts plus einem Bit für eine Gültig/Ungültig-Anzeige.For run count "context" systems, each context requests a memory location in pointer memory 1001 so that the width of the BG and PEM state memory can be expanded to implement this memory. The width of the pointer memory 1001 is equal to the size required for a code word memory address. The number of digits in code word memory 1008 can be selected by the developer in a very specific implementation. The limited size of this memory reduces compression efficiency so that it is trade-off cost / compression. The width of the code word memory is equal to the size of the largest code word plus one bit for a valid / invalid display.

Ein Beispiel mit dem R2(2) Code, das in Tabelle 13 dargestellt ist, wird verwendet, um einen Umordnen zu veranschaulichen. Ta­ belle 14 zeigt die umzuordnenden Daten (0 = MPS, wahrscheinliche res Symbol; 1 = LPS, weniger wahrscheinliches Symbol), die als Kontext bezeichnet sind. Es gibt nur zwei Kontexte. Die unco­ dierte Bitanzahl zeigt Zeit in uncodierten Bit-Taktzyklen an. Start und Ende von Durchläufen werden angezeigt, und Codewörter werden am Ende von Durchläufen dargestellt.An example with the R2 (2) code shown in Table 13 is used to illustrate reordering. Ta belle 14 shows the data to be reordered (0 = MPS, probable res symbol; 1 = LPS, less likely symbol) that as Context. There are only two contexts. The unco The number of bits indicates time in uncoded bit clock cycles. Start and end of runs are displayed, and code words are shown at the end of runs.

Tabelle 13 - R2(2) Code Table 13 - R2 (2) code

Tabelle 14 Table 14

Beispiele von zu codierenden Daten Examples of data to be encoded

Die Umordnungsoperation für die beispielshaften Daten ist in Tabelle 15 dargestellt. Ein Codewortspeicher für vier Stellen 0 bis 3 wird verwendet, welcher groß genug ist, um in diesem Bei­ spiel nicht überzulaufen. Jede Zeile zeigt den Zustand des Sy­ stems nach einer Operation, welche entweder der Durchlaufstart oder das Durchlaufende für einen bestimmten Kontext oder die Ausgabe eines Codeworts ist. Ein "x" wird verwendet, um Spei­ cherstellen anzuzeigen, die "don′t care" sind. Für einige unco­ dierte Bits startet weder ein Durchlauf noch endet er, so daß die Umordnungseinheit leer ist. Für codierte Bits, die Durchläu­ fe beenden, können ein oder mehr Codewörter ausgegeben werden, welche mehrere Änderungen in dem Systemzustand bewirken können. The reordering operation for the exemplary data is in Table 15 shown. A four-digit code word memory 0 to 3 is used, which is large enough in this case don't overflow. Each line shows the state of the Sy stems after an operation, which is either the start of the run or the end-to-end for a particular context or the Is output of a code word. An "x" is used to save to display jobs that are "don't care". For some unco dated bits neither starts nor ends, so that the reordering unit is empty. For coded bits that pass end, one or more code words can be output, which can cause several changes in the system state.  

Tabelle 15 Table 15

Beispiel von Umordnungsoperationen Example of reordering operations

In Tabelle 15 werden die Kopf- und Nachlaufzeiger auf null ini­ tialisiert, was anzeigt, daß nichts in dem Codewortspeicher (z. B. der Schlange) enthalten ist.In Table 15, the head and tail pointers are set to zero ini tialized, indicating that nothing in the code word memory  (e.g. the snake) is included.

Der Zeigerspeicher ist mit zwei Speicherstellen dargestellt, und zwar eine für jeden Kontext. Jede Stelle hat "don′t care" Werte vor einer Bitzahl 1. Der Codewortspeicher ist mit einer Tiefe von vier Codewörtern dargestellt, die alle Anfangs "don′t care"-Werte sind.The pointer memory is shown with two memory locations, one for each context. Every job has "don’t care" Values before a number of bits 1. The code word memory is with a Depth represented by four code words, all of which don't start care "values.

Entsprechend den für die Bitzahl 1 erhaltenen Daten verbleibt dem Kopfzeiger ein Zielen auf die Codewortspeicherstelle 0. Da der Decodierer Daten erwartet, wird die nächste verfügbare Code­ wortspeicherstelle, 0, dem Codewort zugeteilt und ein ungültiger Wert wird in die Speicherstelle 0 geschrieben. Da der Kontext null ist, wird die Adresse der Codewortspeicherstelle, die dem Codewort zugeordnet ist, in eine Zeigerspeicherstelle für den Null-Kontext (Zeigerspeicherstelle 0) geschrieben. Folglich wird eine "0" an der Zeigerspeicherstelle 0 gespeichert. Der Nach­ laufzeiger wird auf die nächste Codewortspeicherstelle 1 inkre­ mentiert.According to the data obtained for the number of bits 1 remains the head pointer is aimed at the code word storage location 0. Da the decoder expects data, the next available code word memory location, 0, assigned to the code word and an invalid Value is written to location 0. Because the context is zero, the address of the code word location corresponding to the Is assigned to a pointer memory location for the Zero context (pointer storage location 0) written. Consequently a "0" is stored in pointer memory location 0. The night running pointer is incremented to the next code word storage location 1 mented.

Entsprechend den Daten die der Bitzahl 2 entsprechen, bleibt der Zeiger auf die erste Speicherstelle ausgerichtet (da dort kein Ausgang gewesen ist, der zu inkrementieren ist). Da die Da­ ten dem zweiten Kontext, Kontext 1 Kontext entsprechen, wird die nächste Codewortspeicherstelle dem Codewort als Codewort­ speicherstelle 1 zugeteilt, wie durch den Nachlaufzeiger ange­ zeigt ist, und ein ungültiger Wert wird in die Stelle geschrie­ ben. Die Adresse, Codewortstelle 1, wird in die Zeigerspeicher­ stelle geschrieben, die dem Kontext 1 entspricht. Das heißt, die Adresse der zweiten Codewort-Speicherstelle wird in die Zeiger­ speicherstelle 1 geschrieben. Der Nachlaufzeiger wird dann in­ krementiert.According to the data corresponding to the number of bits 2 remains the pointer is aligned with the first memory location (since there there has been no exit to increment). Because the Da ten the second context, context 1 context the next code word storage location the code word as a code word allocated memory location 1, as indicated by the trailing pointer shows, and an invalid value is shouted into the place ben. The address, code word position 1, is in the pointer memory position that corresponds to context 1. That is, the The address of the second code word location is in the pointer location 1 written. The trailing pointer is then in incremented.

Entsprechend den Daten, die der Bitzahl 3 entsprechen, ist die Umordnungseinheit leer, da ein Durchlauf nicht startet oder en­ det. According to the data corresponding to the number of bits 3, the Reordering unit empty because a run does not start or end det.  

Entsprechend den Daten, die der Bitzahl 4 entsprechen, wird ein Ende eines Durchlauf für Kontext 1 angezeigt. Daher wird das Codewort "101" in die dem Kontext 1 zugeteilte Codewortspeicher­ stelle geschrieben (Codewortspeicherstelle 1), wie durch die Zeigerspeicherstelle für Kontext 1 angezeigt ist. Die Kopf- und Nachlaufzeiger bleiben dieselben, und der Wert in der Zeiger­ speicherstelle für Kontext 1 wird nicht wieder verwendet; so ist er "don′t care".According to the data corresponding to the number of bits 4 an end of a run for context 1 is displayed. Therefore, it will Code word "101" in the code word memory allocated to context 1 place written (code word location 1), as by the Pointer location for context 1 is displayed. The head and Trailing pointers remain the same, and the value in the pointer Context 1 location is not reused; so is he "don't care".

Entsprechend den Daten, die der Bitzahl 5 entsprechen, ist die Umordnungseinheit leer, da ein Durchlauf nicht startet oder en­ det. Entsprechend den Daten, die der Bitzahl 6 entsprechen, kommt derselbe Typ Operationen wie vorstehend beschrieben für Bit 2 vor.According to the data corresponding to the number of bits 5, the Reordering unit empty because a run does not start or end det. According to the data corresponding to the number of bits 6, the same type of operations as described above come for Bit 2 before.

Entsprechend den Daten, die einer Bitzahl 7 entsprechen, kommt das Ende des Durchlaufs für das Codewort für Kontext 0 vor. In diesem Fall wird das Codewort "0" in die Codewort-Speicherstelle geschrieben (Codewort-Speicherstelle 0), wie durch die Zeiger­ speicherstelle für Kontext 0 angezeigt ist (Zeigerspeicherstelle 0). Dann wird der Wert an der Zeigerspeicherstelle wieder nicht verwendet, so daß er ein "don′t care" Wert ist. Ebenso enthält die Codewort-Speicherstelle, welche durch den Kopfzeiger be­ stimmt ist, gültige Daten. Daher werden die gültigen Daten aus­ gegeben und der Kopfzeiger wird inkrementiert. Durch ein Inkre­ mentieren des Kopfspeichers wird auf eine andere Codewort-Spei­ cherstelle gezeigt, die ein gültiges Codewort enthält. Folglich wird dieses Codewort ausgegeben und der Kopfzeiger wird wieder inkrementiert. In diesem Beispiel werden Codewörter ausgegeben, wenn sie in Ordnung sind, was im Gegensatz dazu steht, wenn der Codewortspeicher vollständig voll ist.According to the data corresponding to a bit number 7, the end of the pass for the code word for context 0 occurs. In this case, the code word "0" is written into the code word storage location (code word storage location 0), as indicated by the pointer storage location for context 0 (pointer storage location 0). Then the value at the pointer storage location is not used again, so that it is a "don't care" value. The code word storage location, which is determined by the head pointer, likewise contains valid data. Therefore, the valid data is output and the head pointer is incremented. By incrementing the head memory, a pointer is made to another code word storage location which contains a valid code word. As a result, this code word is output and the head pointer is incremented again. In this example, code words are output if they are OK, which is in contrast when the code word memory is completely full.

Ein Verarbeiten der uncodierten Bits kommt entsprechend der vorstehenden Beschreibung ständig vor. Die Codewortspeicherstel­ len werden nicht mit Hilfe ganz bestimmter Kontexte zugänglich gemacht, so daß Codewörter von einem der Kontext aus an einer ganz bestimmten Codewortspeicherstelle während des Codierens einer Datendatei gespeichert werden können.The uncoded bits are processed in accordance with above description constantly before. The code word storage location len are not accessible with the help of very specific contexts made so that code words from one of the context to one  very specific code word location during encoding a data file can be saved.

Die Bit-PackungseinheitThe bit pack unit

Eine Bitpackungseinheit ist in Fig. 3 dargestellt, in welcher Daten, die von der Umordnungseinheit vor und nach einem Bit­ packen verarbeitet worden sind, dargestellt sind. In Fig. 3 sind 16 Codewörter variabler Länge dargestellt, die mit 1 bis 16 nu­ meriert sind, um die Verwendungsreihenfolge durch den Decodierer anzuzeigen. Jedes Codewort ist einem von drei codierten Strömen zugeteilt. Die Daten in jedem codierten Strom werden in Worte fester Länge gebrochen, die verschachtelte Worte genannt werden. (Hierbei kann ein einziges Codewort variabler Länge in zwei ge­ schachtelte Worte gebrochen werden). In diesem Beispiel werden die geschachtelten Worte in einem einzigen geschachtelten Strom angeordnet, so daß die Ordnung in dem ersten Codewort veränder­ licher Länge (oder einem partiellen Codewort) in einem ganz be­ stimmten verschachtelten Wort die Ordnung des verschachtelten Wort festlegt. Andere Arten von Ordnungskriterien können durch­ geführt werden. Der Vorteil des Schachtelns von mehreren codier­ ten strömen besteht darin, daß ein einziger codierter Datenkanal zum Übertragen von Daten verwendet werden kann, und daß ein Ver­ schieben variabler Länge für jeden Strom parallel oder in einer Pipeline durchgeführt werden kann.A bit packing unit is shown in FIG. 3, in which data which have been processed by the reordering unit before and after packing a bit are shown. In Fig. 3, 16 variable length code words are shown which are numbered from 1 to 16 to indicate the order of use by the decoder. Each code word is assigned to one of three coded streams. The data in each encoded stream is broken down into fixed length words called nested words. (Here, a single code word of variable length can be broken down into two nested words). In this example, the interleaved words are arranged in a single interleaved stream so that the order in the first variable length code word (or a partial code word) in a particular interleaved word determines the order of the interleaved word. Other types of ordering criteria can be performed. The advantage of nesting multiple encoded streams is that a single encoded data channel can be used to transmit data, and variable length shifting can be performed in parallel or in a pipeline for each stream.

Die Bitpackungseinheit 802 der Erfindung erhält die Codewörter variabler Länge von der Durchlaufzähl-Umordnungseinheit 803 und packt sie in verschachtelte Worte. Die Einheit 802 weist eine Logik, um das Behandeln von Codewörtern variabler Länge durchzu­ führen, und eine Umordnungseinheit für eine gemischte Schlange (merged queue) auf, um verschachtelte Worte fester Länge in der richtigen Reihenfolge auszugeben. In einer Ausführungsform wer­ den die Codewörter von der Umordnungseinheit in einer Rate von bis zu einem Codewort pro Taktzyklus erhalten. Ein Blockdiagramm einer Ausführungsform der Bitpackungseinheit 802 ist in Fig. 10 dargestellt. In der folgenden Ausführungsform werden vier ver­ schachtelte Ströme verwendet, wobei jedes verschachtelte Wort 16 Bit ist; die Codewörter ändern sich in der Länge von 1 bis 13 Bits. In einer Ausführungsform ist eine einzige Bitpackungsein­ heit in Pipelineform vorgesehen, um alle Ströme zu behandeln. Wenn die Einheit 802 der Erfindung einen Speicher mit zwei An­ schlüssen (oder eine Registerdatei) verwendet, kann sie ein ver­ schachteltes Wort pro Taktzyklus abgeben. Dies kann schneller sein als gefordert wird, um den Rest des Codierers aufrechtzuer­ halten.The bit packing unit 802 of the invention receives the variable length code words from the pass count shuffling unit 803 and packs them into nested words. Unit 802 has logic to handle variable length code words and a merged queue reorder unit to output fixed length nested words in the correct order. In one embodiment, the code words are received by the reordering unit at a rate of up to one code word per clock cycle. A block diagram of one embodiment of bit packer 802 is shown in FIG. 10. In the following embodiment, four interleaved streams are used, each interleaved word being 16 bits; the code words change in length from 1 to 13 bits. In one embodiment, a single bit pack unit is provided in pipeline form to handle all streams. If unit 802 of the invention uses two port memory (or a register file), it can deliver one interleaved word per clock cycle. This can be faster than is required to maintain the rest of the encoder.

In Fig. 10 weist die Bitpackeinheit 802 eine Packungslogik 1101, einen Stromzähler 1102, einen Speicher 1103, Nachlaufzeiger 1104 und einen Kopfzähler 1105 auf. Die Packungslogik 1101 ist vorge­ sehen, um die Codewörter aufzunehmen und ist mit dem Stromzähler 1102 verbunden, welcher auch mit dem Speicher 1103 verbunden ist. Ebenso ist der Speicher 1103 mit Nachlaufzeigern 1104 und Kopfzählern 1105 verbunden.In Fig. 10, 802 has the Bitpackeinheit on a packing logic 1101 a current meter 1102 a memory 1103, caster pointer 1104 and a head counter 1105th The packaging logic 1101 is provided to accommodate the code words and is connected to the electricity meter 1102 , which is also connected to the memory 1103 . Memory 1103 is also connected to tracking pointers 1104 and head counters 1105 .

Der Stromzähler 1102 hält die Spur des verschachtelten Stroms, welchem das akutelle eingegebene Codewort zugeordnet ist. In einer Ausführungsform zählt der Stromzähler 1102 wiederholt die Ströme von 0 bis N-1, wobei N die Anzahl der Ströme ist. Sobald ein Stromzähler 1102 N-1 erreicht, beginnt er wieder von null an zu zählen. In einer Ausführungsform ist der Stromzähler 1102 ein Zweibit-Zähler und zählt von 0 bis 3 (für vier verschachtelte Ströme). In einer Ausführungsform initialisiert der Stromzähler 1102 auf null (z. B. über ein globales Zurücksetzen).The current counter 1102 keeps track of the interleaved current to which the currently entered code word is assigned. In one embodiment, the electricity meter 1102 repeatedly counts the currents from 0 to N-1, where N is the number of currents. As soon as an electricity meter reaches 1102 N-1, it starts counting again from zero. In one embodiment, the electricity counter 1102 is a two-bit counter and counts from 0 to 3 (for four interleaved currents). In one embodiment, the electricity meter 1102 initializes to zero (e.g. via a global reset).

Die Packungslogik 1101 mischt das aktuelle eingegebene Codewort mit vorher eingegebenen Codewörtern, um verschachtelte Codewör­ ter zu bilden. Die Länge jedes der Codewörter kann sich ändern. Daher packt die Packungslogik 1101 diese Codewörter veränderli­ cher Länge in Wörter fester Länge. Die verschachtelten Codewör­ ter, die von der Packungslogik 1101 erzeugt worden sind, werden an den Speicher 1103 geordnet abgegeben und werden in dem Spei­ cher 1103 bis zu dem richtigen Zeitpunkt gespeichert, um sie ab­ zugeben. In einer Ausführungsform ist der Speicher 1103 ein sta­ tischer Randomspeicher (SRAM) oder eine Registerdatei mit 64 16 Bit-Wörtern.Packing logic 1101 mixes the currently entered code word with previously entered code words to form interleaved code words. The length of each of the code words can change. Therefore, packaging logic 1101 packs these variable length code words into fixed length words. The interleaved codewords generated by the packaging logic 1101 are output to the memory 1103 in order and are stored in the memory 1103 until the correct time to be output. In one embodiment, memory 1103 is a static random access memory (SRAM) or a register file with 64 16 bit words.

Die verschachtelten Wörter sind in dem Speicher 1103 gespei­ chert. In der Erfindung ist die Größe des Speichers 1103 groß genug, um zwei Fälle zu behandeln. Ein Fall ist der normale Be­ triebsfall, bei welchem ein verschachtelter Strom Codewörter mi­ nimaler Länge hat und die anderen verschachtelten Ströme Code­ wörter maximaler Länge haben. Dieser erste Fall erfordert (3×3 = 39) Speicherstellen. Der andere Fall ist der Initialisierungs­ fall, bei welchem wiederum ein Strom kurze Codewörter oder sol­ che minimaler Länge hat und die anderen lange Codewörter oder solche maximaler Länge haben. Für den zweiten Fall bei welchen (2×3×13 = 76) Speicherstellen ausreichend sind, läßt der Be­ trieb des PEM eine dichtere Grenze (bound) von 76 zu.The interleaved words are stored in memory 1103 . In the invention, the size of memory 1103 is large enough to handle two cases. One case is the normal operating case where one interleaved stream has minimum length codewords and the other interleaved streams have maximum length codewords. This first case requires (3 × 3 = 39) storage locations. The other case is the initialization case, in which again a stream has short code words or such a minimum length and the other long code words or such a maximum length. For the second case in which (2 × 3 × 13 = 76) memory locations are sufficient, the operation of the PEM allows a denser limit (bound) of 76.

Der Speicher 1103 in Zusammenarbeit mit dem Stromzähler 1102 und die Nachlaufzeiger 1104 führen ein Umordnen durch. Der Stromzähler 1102 zeigt einen aktuellen Strom eines vom Speicher 1103 empfangenden Codeworts auf. Jeder verschachtelte Strom ist zumindestens einem Nachlaufzeiger zugeordnet. Nachlaufzeiger 1104 und der Kopfzähler 1105 führen ein Umordnen der Codewörter durch. Der Grund für zwei Nachlaufzeiger pro Strom folgt aus einem Verschachteln des Worts N, was von dem Decodierer gefor­ dert wird, wenn Daten in einem verschachtelten Wort N-1 den Start des nächsten Codeworts enthalten. Ein Nachlaufzeiger be­ stimmt die Stelle in dem Speicher 1103, um das nächste verschach­ telte Worte aus einem vorgegebenen verschachtelten Strom zu speichern. Der andere Nachlaufzeiger bestimmt die Stelle im Speicher, um das verschachtelte Wort nach dem nächsten einen zu speichern. Hierdurch kann die Stelle eines verschachtelten Wor­ tes N spezifiziert werden, wenn der Decodierer-Anforderungszeit­ punkt des verschachtelten Wortes N-1 bekannt ist. In einer Aus­ führungsform sind die Zeiger acht 6 Bit-Register (zwei Nachlauf­ zeiger pro Strom). The memory 1103 in cooperation with the electricity meter 1102 and the trailing pointers 1104 carry out a rearrangement. The current counter 1102 shows a current current of a code word received from the memory 1103 . Each nested stream is assigned to at least one tracking pointer. Tracking pointer 1104 and head counter 1105 rearrange the code words. The reason for two tracking pointers per stream results from interleaving of the word N, which is required by the decoder when data in an interleaved word N-1 contains the start of the next code word. A tail pointer determines the location in memory 1103 to store the next interleaved word from a given interleaved stream. The other trailing pointer determines the location in memory to store the nested word after the next one. This enables the location of an interleaved word N to be specified when the decoder request time of the interleaved word N-1 is known. In one embodiment, the pointers are eight 6-bit registers (two tracking pointers per stream).

In einer Ausführungsform sind beim Codierstart die Nachlaufzei­ ger 1104 so gesetzt, daß die ersten acht verschachtelten Worte (zwei aus jedem Strom) in dem Speicher 1103 nacheinander eines von jedem Strom gespeichert werden. Nach einer Initialisierung wird jedesmal, wenn die Packungslogik 1101 ein neues verschach­ teltes Wort für einen ganz bestimmten Codestrom beginnt, der "nächste" Nachlaufzeiger auf einen Wert des "übernächsten" Nach­ laufspeichers des Codestroms wird auf die nächste verfügbare Speicherstelle gesetzt. Folglich gibt es zwei Nachlaufzeiger für jeden Strom. In einer anderen Ausführungsform wird nur ein Nach­ laufzeiger für jeden Strom verwendet und er zeigt an, wo das nächste verschachtelte Wort in dem Speicher 1203 zu speichern ist.In one embodiment, at encoding start, the trailing pointers 1104 are set such that the first eight interleaved words (two from each stream) are stored in the memory 1103 one by one from each stream. After initialization, each time the packing logic 1101 a new verschach teltes word for a very specific code stream begins, the "next" follow-up pointer to a value of "the next" after running memory of the code stream is set to the next available memory location. Hence there are two wake pointers for each stream. In another embodiment, only one tracking pointer is used for each stream and indicates where the next interleaved word is to be stored in memory 1203 .

Der Kopfspeicher 1105 wird verwendet, um die Speicherstelle des nächsten verschachtelten Worts festzulegen, um es von der Bit­ packeinheit 802 auszugeben. In der beschriebenen Ausführungsform weist der Kopfzähler 1105 einen 6 Bit-Zähler auf, der inkremen­ tiert wird, um ein ganzes verschachteltes Wort zu einer bestimm­ ten Zeit abzugeben.Header memory 1105 is used to determine the location of the next interleaved word to be output from bit packer 802 . In the described embodiment, the head counter 1105 has a 6 bit counter that is incremented to deliver an entire interleaved word at a particular time.

Der Speicher 1103, der zusätzlich zum Umordnen zu verwenden ist, kann auch als eine FIFO-Pufferung zwischen dem Codierer und dem Kanal verwendet werden. Es kann wünschenswert sein, diesen Speicher zu haben, der größer als das ist, was für ein Umordnen erforderlich ist, so daß ein FIFO-Meist-Voll-Signal verwendet werden kann, um den Codierer "zu füttern" (stall), wenn der Ka­ nal mit dem Codierer nicht Schritt halten kann. Ein Einbit-Pro-Zyklus-Co­ dierer kann nicht ein verschachteltes Wort pro Zyklus er­ zeugen. Wenn ein Codierer gut an einen Kanal angepaßt ist, kann der Kanal nicht ein verschachteltes Wort bei jedem Zyklus auf­ nehmen, und es ist eine gewisse FIFO-Pufferung notwendig. Bei­ spielsweise würde ein Kanal, der ein verschachteltes 16 Bit-Wort alle 32 Zyklen annehmen kann, eine gut angepaßte Auslegung für eine effektive Bandbreiten-Expansion von 2 : 1 sein, wenn die Kom­ pression 2 : 1 oder größer war.The memory 1103 to be used in addition for reordering can also be used as a FIFO buffering between the encoder and the channel. It may be desirable to have this memory larger than what is required for reordering so that a FIFO mostly full signal can be used to "stall" the encoder when the Cannot keep up with the encoder. A one bit per cycle encoder cannot generate one interleaved word per cycle. If an encoder is well matched to a channel, the channel cannot accept an interleaved word on every cycle and some FIFO buffering is necessary. For example, a channel that can take a nested 16 bit word every 32 cycles would be a well-matched design for an effective bandwidth expansion of 2: 1 if the compression was 2: 1 or greater.

Die Packungslogik der ErfindungThe packaging logic of the invention

Ein Blockdiagramm der Packungslogik ist in Fig. 11 dargestellt. In Fig. 11 weist die Packungslogik 1101 eine Größeneinheit 1201, einen Satz Akkumulatoren 1202, eine Schiebeeinheit 1203, einen MUX 1204, einen Satz Register 1205 und eine ODER-Logik 1206 auf. Die Größeneinheit 1201 ist vorgesehen, um Codewörter aufzunehmen und ist mit Akkumulatoren 1202 verbunden. Die Akkumulatoren so­ wohl die Codewörter sind an die Schiebeeinheit 1203 gekoppelt. Die Schiebeeinheit 1203 ist mit dem MUX 1204 und der ODER-Logik 1206 verbunden. Der MUX 1204 ist auch mit Registern 1205 und einem Ausgang der ODER-Logik 1206 verbunden. Die Register sind auch mit der ODER-Logik 1206 verbunden.A block diagram of the packaging logic is shown in FIG. 11. In FIG. 11, the packaging logic 1101 has a size unit 1201 , a set of accumulators 1202 , a slide unit 1203 , a MUX 1204 , a set of registers 1205 and an OR logic 1206 . The size unit 1201 is provided to accommodate code words and is connected to accumulators 1202 . The accumulators as well as the code words are coupled to the shift unit 1203 . The shift unit 1203 is connected to the MUX 1204 and the OR logic 1206 . MUX 1204 is also connected to registers 1205 and an output of OR logic 1206 . The registers are also connected to OR logic 1206 .

In einer Ausführungsform werden Codewörter an einen 13 Bit Bus mit nicht verwendeten genullten Bits eingegeben. Diese genullten nicht benutzten Bits sind den "1" in "1N" Codewörtern benach­ bart, so daß ein Prioritätscodierer in der Größeneinheit 1201 verwendet werden kann, um die Länge der "1N" Codewörter zu be­ stimmen und um eine Größe für "0" Codewörter zu erzeugen.In one embodiment, code words are input to a 13 bit bus with zero bits not used. These zeroed unused bits are adjacent to the "1" in "1N" codewords, so a priority encoder in size unit 1201 can be used to determine the length of the "1N" codewords and a size for "0" codewords to create.

Akkumulatoren 1202 weisen mehrere Akkumulatoren auf, nämlich einen für jeden verschachtelten Strom. Der Akkumulator für jeden verschachtelten Strom erhält eine Aufzeichnung der Anzahl Bits, die bereits in dem aktuellen verschachtelten Wort sind. In einer Ausführungsform weist jeder Akkumulator einen 4 Bit Addierer (mit Übertrag) und ein 4 Bit Register auf, das für jeden Strom verwendet wird. In einer Ausführungsform ist der Ausgang des Ad­ dierers der Ausgang des Akkumulators. In einer anderen Ausfüh­ rungsform ist der Ausgang des Registers der Ausgang des Akkumu­ lators. Mit Hilfe der Größe der Codewörter, die in der Größe­ neinheit 1201 aufgenommen worden sind, belegen die Akkumulatoren die Anzahl von zu verschiebenden Bits fest, um das aktuelle Co­ dewort in dem Register zu verketten, welches das aktuelle ver­ schachtelte Wort für diesen Strom enthält. Accumulators 1202 have multiple accumulators, one for each nested stream. The accumulator for each interleaved stream receives a record of the number of bits that are already in the current interleaved word. In one embodiment, each accumulator has a 4-bit adder (with carry) and a 4-bit register that is used for each stream. In one embodiment, the output of the ad dierers is the output of the accumulator. In another embodiment, the output of the register is the output of the accumulator. With the help of the size of the code words which have been recorded in the size unit 1201 , the accumulators determine the number of bits to be shifted in order to concatenate the current code word in the register which contains the current interleaved word for this stream.

Basierend auf dem aktuellen Wert des Akkumulators richtet die Schiebeeinheit das aktuelle Wort aus, so daß es irgendwelchen vorherigen Codewörtern in das verschachtelte Wort folgt. Folg­ lich werden Daten in dem Codierer in der Decodierer-Reihenfolge verschoben. Der Ausgang der Schiebeeinheit 1203 sind 28 Bits, welche den Fall behandeln, bei welchem ein 13 Bit Codewort an 15 Bits in dem aktuellen verschachtelten Wort angehängt werden muß, so daß Bits von dem aktuellen Codewort bis in die höheren 12 Bits der 28 auszugebenden Bits enden. Hierbei arbeitet die Schiebeeinheit 1203 ohne Rückkopplung, und kann folglich im Pi­ pelinesystem verarbeitet werden. In einer Ausführungsform weist die Schiebeeinheit 1203 eine Tonnen-(barrel)Schiebeeinheit auf.Based on the current value of the accumulator, the shifter aligns the current word so that it follows any previous code words in the nested word. As a result, data in the encoder is shifted in the decoder order. The output of the shifter 1203 is 28 bits, dealing with the case where a 13 bit code word must be appended to 15 bits in the current interleaved word so that bits from the current code word end into the higher 12 bits of the 28 bits to be output . Here, the sliding unit 1203 works without feedback, and can therefore be processed in the pipeline system. In one embodiment, push unit 1203 has a barrel push unit.

Register 1205 speichern Bits in den aktuellen verschachtelten Wörtern. In einer Ausführungsform hält ein 16 Bit Register für jeden verschachtelten Strom vorherige Bits in dem aktuellen ver­ schachtelten Wort.Registers 1205 store bits in the current nested words. In one embodiment, a 16 bit register holds previous bits in the current interleaved word for each interleaved stream.

Anfangs wird ein Codewort eines Stroms von der Schiebeeinheit 1203 erhalten, während eine Größeneinheit 1201 die Größe des Co­ deworts an dem Akkumulator anzeigt, welcher dem Strom ent­ spricht. Der Akkumulator hat einen Anfangswert von 0, der über ein globales Rücksetzen gesetzt worden ist. Da der Akkumulator­ wert null ist, wird das Codewort nicht verschoben und wird dann mit Hilfe der ODER-Logik 1206 geODERt, wobei der Inhalt des Re-gisters dem Strom entspricht. Jedoch müssen in einigen Ausfüh­ rungsformen 1N Codewörter verschoben werden, um sogar bei dem Start eines verschachtelten Wortes richtig ausgerichtet zu sein. Dies Register kann bei null initiiert werden, und deutlich ist das Ergebnis der ODER-Operation, das Codewort in die am weite­ sten rechts liegenden Bitpositionen des Ausgangssignals der ODER-Logik 1206 zu setzen, und werden über MUX 1204 zu dem Regi­ ster für ein Speichern bis zu dem nächsten Codewort von dem Strom rückgekoppelt. Folglich arbeitet anfangs die Schiebeein­ heit 1203 als ein Durchgang. Die Anzahl Bits in dem ersten Code­ wort werden nunmehr in dem Akkumulator gespeichert. Bei Empfang des nächsten Codeworts für diesen Strom wird der Wert in dem Akkumulator an die Schiebeeinheit 1203 abgegeben, und das Code­ wort wird nach links zu der Anzahl Bits für ein Kombinieren mit irgendwelchen vorher eingegebenen Bits in dem verschachtelten Wort verschoben. Nullen werden in den anderen Bitpositionen in dem verschobenen Wort plaziert. Bits aus dem Register, die dem Strom entsprechen, werden mit Bits aus der Schiebeeinheit 1203 mit Hilfe der ODER-Logik 1206 verschoben. Wenn der Akkumulator eine Übertragsanzeige (z. B. ein Signal) erzeugt, dann sind mehr Bits erforderlich, um das aktuelle verschachtelte Wort zu ver­ vollständigen, und die Daten, die sich aus der ODER-Operation ergeben, werden über den MUX 1204 in das Register zurückgeret­ tet. In einer Ausführungsform weist der MUX 1204 einen 2 : 1 Mul­ tiplexer auf. Wenn der Akkumulator einen Übertrag erzeugt, sind die 16 Bits der geODERten Daten von der ODER-Logik 1206 ein vollständiges verschachteltes Wort und werden dann ausgegeben. Der MUX 1204 bewirkt, daß das Register mit irgendwelchen zusätz­ lichen (z. B. den oberen 12 Bits der 28 Bits, die von der Schie­ beeinheit 1203 ausgegeben worden sind, nach den ersten 16 gela­ den wird, und füllt den Rest mit Nullen auf.Initially, a code word of a current is obtained from the shift unit 1203 , while a size unit 1201 indicates the size of the code word on the accumulator which corresponds to the current. The accumulator has an initial value of 0, which has been set via a global reset. Since the accumulator value is zero, the code word is not shifted and is then OR'd using OR logic 1206 , the content of the register corresponding to the current. However, in some embodiments, 1N code words must be shifted to be properly aligned even at the start of a nested word. This register can be initiated at zero, and clearly the result of the OR operation is to set the code word in the rightmost bit positions of the output of OR logic 1206 and become the register for storage via MUX 1204 fed back to the next code word from the stream. Accordingly, the pusher unit 1203 initially operates as one pass. The number of bits in the first code word are now stored in the accumulator. Upon receipt of the next code word for this stream, the value in the accumulator is delivered to the shifter 1203 and the code word is shifted left to the number of bits for combining with any previously entered bits in the interleaved word. Zeros are placed in the other bit positions in the shifted word. Bits from the register that correspond to the current are shifted with bits from shift unit 1203 using OR logic 1206 . When the accumulator generates a carry indication (e.g., a signal), more bits are required to complete the current interleaved word, and the data resulting from the OR operation is transferred to the MUX 1204 Register reset. In one embodiment, the MUX 1204 has a 2: 1 multiplexer. When the accumulator produces a carry, the 16 bits of the ORED data from OR logic 1206 is a complete interleaved word and is then output. The MUX 1204 causes the register to be loaded with any additional information (e.g., the top 12 bits of the 28 bits output by the shifter 1203 after the first 16 and fills the rest with zeros) .

Die Steuerung wird sowohl für den MUX 1204 als auch für das Ausgeben des verschachtelten Wortes weist das Übertragsignal von dem Akkumulator auf. In einer Ausführungsform weist der Multi­ plexer 1204 sechzehn 12 : 1 Multiplexer mit vier davon, mit einem Eingangswert, der immer null ist.The control for both the MUX 1204 and for outputting the interleaved word has the carry signal from the accumulator. In one embodiment, multiplexer 1204 has sixteen 12: 1 multiplexers, four of which have an input value that is always zero.

Umordnungs-OptionenReorder options

Die Erfindung schafft viele Optionen zum Durchführen des Umord­ nens an den Daten. Beispielsweise müssen in einem System mit mehreren Codeströmen die Codeströme in verschachtelten Worten umgeordnet werden, wie in Fig. 3 dargestellt ist. Die Erfindung schafft daher zahlreiche Wege, um ein Umordnen in verschachtelte Wort zu erreichen.The invention provides many options for performing data rearrangement. For example, in a system with multiple code streams, the code streams must be rearranged in nested words, as shown in FIG. 3. The invention therefore provides numerous ways to achieve reordering in nested words.

Ein Verfahren zum Umordnen von Daten in verschachtelten Worten besteht darin, einen sogenannten Snooper-Decoder zu verwenden, wie er in Fig. 24 dargestellt ist. In Fig. 24 sind mehrere Durch­ laufzählwert-Umordnungseinheiten 2501A-n vorgesehen, um Code­ wort-Information zusammen mit dem Codewortstrom aufzunehmen. Je­ de Einheit erzeugt einen Codewort-Ausgangswert und einen Größen­ ausgangswert. Eine gesonderte Bitpackungs-Logikeinheit (1101), wie Bitpackungseinheiten 2502A-n sind vorgesehen, um die Code­ wort- und Größenausgangswerte von einem der Umordnungseinheiten 2501A-n aufzunehmen. Bitpackungs-Logikeinheiten 2502A-n geben verschachtelte Worte ab, welche sowohl dem MUX 2503 als auch dem Decodierer 2504 zugeführt werden. Der Decodierer 2504 schafft ein Auswählsteuersignal, das von dem MUX 2503 erhalten wird und zeigt dem MUX 2503 an, welches verschachtelte Wort in den Code­ strom abzugeben ist.One method of reordering data into nested words is to use a so-called Snooper decoder, as shown in FIG. 24. In Fig. 24, a plurality of run count shuffling units 2501 A-n are provided to receive code word information together with the code word stream. Each unit generates a code word output value and a size output value. A separate bit pack logic unit ( 1101 ), such as bit pack units 2502 A-n, are provided to receive the code word and size output values from one of the reordering units 2501 A-n. Bit pack logic units 2502 A-n deliver interleaved words which are supplied to both MUX 2503 and decoder 2504 . The decoder 2504 provides a selection control signal received from the MUX 2503 and indicates to the MUX 2503 which interleaved word is to be put into the code stream.

Jeder codierte Datenstrom hat eine Durchlaufzählwert-Umord­ nungseinheit, die eine Durchlaufzählwert-Umordnungseinheit 801 in Fig. 7 aufweist. Jede Bitpackeinheit kombiniert Codewörter va­ riabler Länge zu Verknüpfungsworten fester Länge, beispielsweise 8, 16 oder 32 Bit pro Wort. Jede Bitpackeinheit enthält Register und eine Schiebeschaltung, wie vorstehend beschrieben ist. Der Decodierer 2504 weist einen voll betriebsfähigen Decodierer (einschließlich BG, PEM und CM) auf, welcher Zugriff auf ver­ schachtelte Worte von allen Bitpackeinheiten (entweder auf sepa­ raten Bussen, wie in Fig. 24 dargestellt, oder über einen gemein­ samen Bus) hat. Wenn der Decodierer 2504 ein verschachteltes Wort einer der Bitpackeinheiten gewählt hat, wird dieses Wort in den Codestrom übertragen. Da der Decodierer auf der Empfangssei­ te die Daten in derselben Reihenfolge wie der identische Snoo­ per-Decodierer anfordert, werden die verschachtelten Wörter in der richtigen Reihenfolge übertragen.Each encoded data stream has a pass count shuffling unit which has a pass count shuffling unit 801 in FIG. 7. Each bit pack unit combines variable length code words into fixed length logic words, for example 8, 16 or 32 bits per word. Each bit pack unit contains registers and a shift circuit as described above. Decoder 2504 has a fully operational decoder (including BG, PEM and CM) which has access to interleaved words from all bit pack units (either on separate buses, as shown in Fig. 24, or via a common bus). If decoder 2504 has selected an interleaved word from one of the bit pack units, that word is transferred to the code stream. Since the decoder on the receiving side requests the data in the same order as the identical snoop decoder, the interleaved words are transmitted in the correct order.

Ein Codierer mit einem Snooper-Decodierer kann in einem halben Duplex-System attraktiv sein, da der Snooper-Decodierer auch als ein normaler Decodierer verwendet werden kann. Ein Vorteil die­ ser Snooper-Decodiererlösung ist die Anwendbarkeit hinsichtlich eines termininistischen Codierers. Alternative Lösungen, die nachstehend noch besprochen werden, ohne eine Abhängigkeit von einem Snooper-Decodierer verwenden einfachere Modelle des Deco­ dierers, um die Hardwarekosten zu verringern. Für die Decodie­ rer, welche mehrere Codewörter in demselben Taktzyklus decodie­ ren, kann ein Modellieren des Decodierers mit weniger Hardware als ein Decodierer selbst nicht möglich sein, was die Verwendung eines Snooper-Decodierers nötig macht. Wie nachstehend noch be­ schrieben wird, existieren für Decodierer, die nur meistens ein Codewort pro Zyklus decodieren, einfachere Modelle.An encoder with a Snooper decoder can be done in half Duplex system will be attractive because the Snooper decoder also works as a normal decoder can be used. An advantage that This Snooper decoder solution is applicability regarding  of a terministic encoder. Alternative solutions that to be discussed below without dependency on a Snooper decoder use simpler models of the Deco dierers to reduce hardware costs. For the decode rer, which decode several code words in the same clock cycle ren, modeling the decoder with less hardware as a decoder itself it may not be possible to use what a Snooper decoder. As below is written exist for decoders, which are mostly only one Decode code word per cycle, simpler models.

Eine andere Technik, um Daten für in pipelineart verbundene De­ codierersysteme umzuordnen, die meistens ein Codewort pro Takt­ zyklus decodieren, basieren auf der Tatsache, daß die einzige Information, die zum Modellieren der Decoder-Anforderungen für codierte Daten benötigt wird, darin besteht, die Reihenfolge der Codewörter zu kennen (wobei alle Codewörter in Betracht zu zie­ hen sind, und nicht die Codewörter für jeden codierten Daten­ strom unabhängig hiervon). Wenn eine Zeitmarke jedem Codewort zugeordnet wird, wenn sie die Durchlaufzählwert-Umordnungsein­ heit einstellt, bis, welches bitgepackte verschachtelte Wort die älteste ihm zugeordnete Zeitmarke hat, das nächste auszugebende verschachtelte Codewort.Another technique to collect data for pipeline-type De reorder coding systems, mostly one code word per clock cycle decode are based on the fact that the only one Information needed to model the decoder requirements for encoded data is needed, is the order of the Know code words (taking all code words into consideration hen, and not the code words for each encoded data current regardless of this). If a timestamp each code word is assigned when it is the run count reordering sets until what bit-packed nested word the the oldest time stamp assigned to it has the next one to be issued nested code word.

Eine beispielhafte Codiererumordnungseinheit ist in Form ei­ nes Blockdiagramms in Fig. 25 dargestellt. In Fig. 25 ist das Co­ diersystem dasselbe, wie es in Fig. 24 beschrieben ist, außer daß eine Zeitmarken-Information für jede Durchlaufzählwert-Umord­ nungseinheit 2501A-1 erhalten wird. Diese Zeitmarkeninformation wird auch zu Bitpackeinheiten 2502A-1 weiter befördert. Bit­ packeinheiten 2502A-n sehen verschachtelte Wörter an dem MUX 2503 und deren zugeordnete Zeitmarken an der Logik 2601 vor. Die Logik 2601 schafft ein Steuersignal am MUX 2503, um das ver­ schachtelte Wort auszuwählen, das in den Codestrom abzugeben ist. An exemplary encoder reordering unit is shown in the form of a block diagram in FIG. 25. In Fig. 25, the coding system is the same as that described in Fig. 24, except that time stamp information is obtained for each pass count shuffling unit 2501 A-1. This time stamp information is also forwarded to bit pack units 2502 A-1. Bit pack units 2502 A-n provide nested words on the MUX 2503 and their associated time stamps on the logic 2601 . Logic 2601 creates a control signal on MUX 2503 to select the interleaved word to be delivered into the code stream.

In dieser Ausführungsform ist der Snooper-Codierer durch einen einfachen Vergleicher ersetzt, welcher festlegt, welche von den Bitpackeinheiten 2502A-n ein Codewort (oder einen Teil eines Co­ deworts) mit der ältesten Zeitmarke hat. Ein derartiges System erscheint am MUX 2503 in Form von mehreren Schlangen mit Zeit­ marken. Die Logik 2601 wählt einfach zwischen verschiedenen Schlangen. Die Logik jeder der Einheiten 2503A-n ändert sich nur leicht (von einer Umordnungseinheit 801 aus), um eine Zeitmarke zu schreiben, wenn ein Durchlauf startet. Jede Umordnungseinheit 2501A-n ist ausgestattet, um die Zeitmarke in dem Codewortspei­ cher zu speichern. Ein Speichern von Zeitmarken mit genug Bits, um jedes Codewort in dem codierten Datenstrom aufzuzählen, ist ausreichend, jedoch in einigen Ausführungsformen können we­ niger Bits verwendet werden.In this embodiment, the Snooper encoder is replaced by a simple comparator, which determines which of the bit pack units 2502 A-n has a code word (or part of a code word) with the oldest time stamp. Such a system appears on the MUX 2503 in the form of several queues with time stamps. Logic 2601 simply chooses between different queues. The logic of each of the units 2503 A-n changes only slightly (from a reordering unit 801 ) to write a timestamp when a run starts. Each reordering unit 2501 A-n is equipped to store the timestamp in the code word memory. Storing timestamps with enough bits to enumerate each code word in the encoded data stream is sufficient, but fewer bits may be used in some embodiments.

Die Schritte, die in Verbindung mit mehreren Schlangen mit Zeitmarken verwendet sind, werden nachstehend kurz beschrieben. Diese Schritte sind die Codiereroperation. Keine Vereinfachung ist für die Fälle vorgesehen, wenn ein Durchlauf mit demselben Codewort sowohl startet als auch endet. Die Operationen können für jedes codierte Symbol überprüft werden (obwohl in der Pra­ xis nicht alle Prüfungen durchgeführt werden müssen). Verschach­ telte Worte werden als 32 Bit hinsichtlich der Größe angenommen.The steps associated with having multiple snakes Time stamps used are briefly described below. These steps are the encoder operation. No simplification is intended for cases when a run with the same Codeword both starts and ends. The operations can checked for each coded symbol (although in Pra xis not all tests have to be carried out). Chess words are assumed to be 32 bits in size.

Die Decodiereroperationen sind ähnlich, obwohl die Codewörter nicht in der Schlange gesichert werden müssen. Es ist noch not­ wendig, die Zeitmarke der Codewörter in der Schlange zu sichern.The decoder operations are similar, although the code words do not need to be secured in line. It is still necessary nimble to save the timestamp of the code words in line.

Die Funktion der Zeitmarken, die vorstehend erläutert ist, wird verwendet, um die Ordnungsinformation der Codewörter zu spei­ chern. Eine äquivalente Art, dasselbe Konzept auszudrücken er­ gibt sich durch das Verwenden einer einzigen Schlange für alle Codewörter, d. h. eine vermischte Schlange. In dem gemischten Schlangensystem, wie es in Fig. 26 dargestellt ist, wird eine einzige Durchlaufzählwert-Umordnungseinheit 2701 für alle ver­ schachtelten Ströme verwendet. Die Umordnungseinheit 2701 er­ zeugt Codewort-Größen- und Stromausgangswerte an Bitpackeinhei­ ten 2502A-n, die verschachtelte Worte an den MUX 2503 und Posi­ tionsinformation an die Logik 2702 abgeben, welche MUX 2503 signalisiert, verschachtelte Worte als Teil des Codestroms abzu­ geben.The function of the time stamps explained above is used to store the order information of the code words. An equivalent way of expressing the same concept is to use a single queue for all code words, ie a mixed queue. In the mixed queue system as shown in Fig. 26, a single pass count shuffling unit 2701 is used for all interlaced streams. The reordering unit 2701 generates codeword size and current output values at bit pack units 2502 A-n, which output interleaved words to the MUX 2503 and position information to the logic 2702 , which MUX 2503 signals to output interleaved words as part of the code stream.

Für beliebige Ströme speichert der Umordnungsspeicher einen verschachtelten Strom ID für jedes Codewort. Jeder verschachtel­ te Strom hat seinen eigenen Kopfzeiger. Wenn eine Bitpackeinheit mehr Daten benötigt, wird der entsprechende Kopfzeiger verwen­ det, um so viele Codewörter abzurufen, wie benötigt werden, um ein neues verschachteltes Wort zu bilden. Dies kann ein Nachse­ hen an vielen Codewort-Speicherstellen sein, um festzustellen, welche Teile des richtigen Stroms sind. Alternativ hierzu kann dies ein Nachsehen in dem Codewortspeicher für zusätzliche Fel­ der einschließen, um eine verknüpfte Liste durchzuführen.The reordering memory stores one for any streams interleaved stream ID for each code word. Everyone nest te Strom has its own head pointer. If a bit pack unit  the corresponding head pointer is used det to retrieve as many code words as are needed to to form a new nested word. This can be a night be in many code word locations to determine what parts of the right stream are. Alternatively, you can this is a look-up in the code word store for additional fields Include the to make a linked list.

Eine andere Methode, um Ströme gemäß der Erfindung zu ver­ schachteln, benutzt eine gemischte Schlange mit einer festen Stromzuweisung. Diese Methode benutzt einen einzigen Nachlauf­ zeiger, wie im Fall der gemischten Schlange, so daß keine Zeit­ marken erforderlich sind. Ebenso werden mehrere Kopfzeiger in dem vorherigen Fall verwendet, so daß es keinen Overhead gibt, um die Daten von einem ganz bestimmten Strom abzugeben. Um dies zu erreichen, wird die Zuweisung von Codeworten zu verschachtel­ ten Strömen entsprechend der folgenden Vorgabe für N Ströme durchgeführt: Ein Codewort M wird einem Strom M Modulo (mod) N zugewiesen. Verschachtelte Ströme können Codewörter aus irgend­ einem Kontextfach oder einer Wahrscheinlichkeitsklasse gemäß dieser Methode haben. Wenn die Anzahl an Strömen eine Potenz von zwei ist, können M mod N berechnet werden, indem einige der hö­ herwertigen Bits weggeworfen werden. Beispielsweise soll der Co­ dewort-Umordnungsspeicher mit 12 Bits adressiert werden und es sollen vier verschachtelte Ströme verwendet werden. Der Nach­ laufzeiger ist 12 Bit lang, und die zwei niedrigstwertigen Bits identifizieren den codierten Strom für das nächste Codewort. Vier Kopfzeiger mit 10 Bits sind jeweils implizit jeder der vier möglichen Kombinationen der zwei niedrigstwertigen Bits zugewie­ sen. Sowohl die Nachlauf- als auch die Kopfzeiger werden als normale binäre Zähler inkrementiert.Another method of verifying currents in accordance with the invention nest, use a mixed snake with a fixed one Power allocation. This method uses a single wake pointer, as in the case of the mixed snake, so no time brands are required. Likewise, several head pointers are in the previous case, so there’s no overhead, to deliver the data from a very specific stream. To do this to achieve, the assignment of code words is too nested th currents according to the following specification for N currents carried out: A code word M is a current M modulo (mod) N assigned. Nested streams can contain code words from any according to a context subject or a probability class have this method. If the number of currents is a power of two, M mod N can be calculated by some of the heights significant bits are thrown away. For example, the Co word reorder memory can be addressed with 12 bits and there four nested streams are to be used. The night run pointer is 12 bits long, and the two least significant bits identify the encoded stream for the next code word. Four 10-bit head pointers are implicitly each of the four possible combinations of the two least significant bits sen. Both the trailing and the head pointers are as normal binary counters incremented.

In dem Decodierer hat die Schiebeeinheit Register, um ver­ schachtelte Wörter zu speichern. Die Schiebeeinheit stellt ent­ sprechend ausgerichtete codierte Daten in dem Bitgenerator dar. Wenn der Bitgenerator einige codierte Daten verwendet, infor­ miert er die Schiebeeinheit. Die Schiebeeinheit präsentiert ord­ nungsgemäß ausgerichtete Daten aus dem nächsten verschachtelten Strom. Wenn die Anzahl codierter Datenströme N ist, hat die Schiebeeinheit N-1 Taktzyklen, um die verwendeten Daten heraus­ zuschieben, und um vielleicht ein anderes verschachteltes Code­ wort anzufordern, bevor dieser spezielle verschachtelte Strom wieder verwendet wird.In the decoder, the shifter has registers to ver save nested words. The sliding unit disfigures correspondingly aligned coded data in the bit generator. If the bit generator uses some encoded data, infor  he lubricates the sliding unit. The sliding unit presents ord properly nested data from the next Electricity. If the number of encoded data streams is N, the Shifter N-1 clock cycles to get the data used out slide in, and maybe some other nested code word to request before this special nested stream is used again.

Der Decodierer der ErfindungThe decoder of the invention

Die Erfindung weist einen Decodierer auf, welcher den Realzeit- Codierer mit einem begrenzten Umordnungsspeicher stützt. In einer Ausführungsform enthält der Decodierer reduzierte Spei­ cheranforderungen und eine Komplexität, an dem ein Durchlauf­ zählwert für jede Wahrscheinlichkeitsklasse statt jedes Kontext­ fach erhalten bleibt.The invention has a decoder which real-time Encoder with a limited reorder memory supports. In In one embodiment, the decoder contains reduced memory requirements and a complexity at which a run count for each probability class instead of each context remains intact.

Eine Ausführungsform des Decodierersystems der ErfindungAn embodiment of the decoder system of the invention

Fig. 13A stellt ein Blockdiagramm einer Ausführungsform des De­ codierer-Hardware-Systems der Erfindung dar. In Fig. 13A weist das Decodierersystem 1400 eine FIFO-Struktur 1401, Decodierer 1402, einen Speicher 1403 und ein Kontextmodell 1404 auf. Der Decodierer 1402 schließt mehrere Decodierer ein. Codierte Daten 1410 werden von der FIFO-Struktur 1401 aufgenommen, welche die codierten Daten an den Decodierer 1402 abgibt. Die Decodierer 1402 sind mit dem Speicher 1403 und dem Kontextmodell 1404 ver­ bunden. Das Kontextmodell 1404 ist auch mit dem Speicher 1403 verbunden. An einem Ausgang des Kontextmodells 1404 werden die decodierten Daten 1411 abgegeben. FIG. 13A illustrates a block diagram of an embodiment of the de-coder hardware system of the invention. In Fig. 13A, the decoder system 1400 displays a FIFO structure 1401 decoder 1402, a memory 1403, and a context model 1404. Decoder 1402 includes multiple decoders. Coded data 1410 is received by FIFO structure 1401 , which outputs the coded data to decoder 1402 . Decoders 1402 are connected to memory 1403 and context model 1404 . The context model 1404 is also connected to the memory 1403 . The decoded data 1411 is output at an output of the context model 1404 .

Im System 1400 werden die codierten Daten 1410, welche in die FIFO-Struktur 1401 eingegeben werden, geordnet und verschach­ telt. Die FIFO-Struktur 1401 enthält Daten in der richtigen Rei­ henfolge. Die Ströme werden an die Codierer 1402 abgegeben. Die Decodierer 1402 fordern von diesen Ströme in einer seriellen und deterministischen Reihenfolge. Obwohl die Reihenfolge, in wel­ cher Decodierer 1402 die codierten Daten anfordern, nicht-trivi­ al ist, ist sie nicht willkürlich. Durch Ordnen der Codewörter in dieser Reihenfolge in dem Codierer, statt in dem Decodierer, können codierte Daten in einem einzigen Strom verschachtelt wer­ den. In einer anderen Ausführungsform könne codierte Daten 1410 einen einzigen Strom nicht-verschalteter Daten aufweisen, wobei Daten für jedes Kontextfach, jede Kontextklasse oder Wahrschein­ lichkeitsklasse an den Datenstrom angehängt werden. In diesem Fall wird der FIFO 1410 durch einen Speicherbereich 1410 er­ setzt, um alle decodierten Daten aufzunehmen, bevor die Daten an die Decodierer 1402 weitergegeben werden, so daß die Daten rich­ tig segmentiert werden können.In system 1400 , encoded data 1410 , which is input to FIFO structure 1401 , is ordered and interleaved. FIFO structure 1401 contains data in the correct order. The currents are delivered to encoder 1402 . Decoders 1402 request these currents in a serial and deterministic order. Although the order in which decoder 1402 requests the encoded data is non-trivial, it is not arbitrary. By ordering the code words in this order in the encoder instead of in the decoder, encoded data can be interleaved in a single stream. In another embodiment, encoded data 1410 may include a single stream of non-interconnected data, with data for each context subject, context class, or probability class appended to the data stream. In this case, the FIFO 1410 is replaced by a memory area 1410 to hold all the decoded data before the data is passed to the decoder 1402 so that the data can be properly segmented.

Wenn die codierten Daten 1410 von dem FIFO 1401 aufgenommen werden, bestimmt das Kontextmodell 1404 das aktuelle Kontext­ fach. In einer Ausführungsform bestimmt das Kontextmodell 1404 das aktuelle Kontextfach auf der Basis von vorherigen Pixel und/oder Bits. Obwohl es nicht dargestellt ist, kann eine Zei­ lenpufferung für das Kontextmodell 1404 enthalten sein. Die Zei­ lenpufferung schafft die notwendigen Daten oder die Form (tem­ plate), wobei das Kontextmodell 1404 das aktuelle Kontextfach festlegt. Beispielsweise kann, wenn das Kontextmodell auf Pixel­ werten in der Nähe des aktuellen Pixels basiert, eine Zeilenpuf­ ferung verwendet werden, um die Pixelwerte dieser Pixel in der Nähe zu speichern, die verwendet werden, um den spezifischen Kontext zu schaffen.When the encoded data 1410 is received by the FIFO 1401 , the context model 1404 times determines the current context. In one embodiment, the context model 1404 determines the current context subject based on previous pixels and / or bits. Although not shown, row buffering for context model 1404 may be included. The line buffering creates the necessary data or the form (tem plate), with the context model 1404 specifying the current context subject. For example, if the context model is based on pixel values near the current pixel, row buffering can be used to store the pixel values of those nearby pixels that are used to create the specific context.

Entsprechend dem Kontextfach fragt das Decodiersystem 1400 den Decodierzustand von dem Speicher 1403 für das aktuelle Kontext­ fach ab. In einer Ausführungsform liest der Decodiererzustand den Wahrscheinlichkeitsbewertungs-Modul-(PM)Zustand und den Bit­ generator-Zustand ein. Der PEM Zustand bestimmt, welcher Code zu verwenden ist, um neue Codewörter zu decodieren. Der Bitgenera­ torzustand hält eine Aufzeichnung der Bits in dem laufenden Durchlauf aufrecht. Der Zustand ist an Decodierern 1402 vom Speicher 1403 aus entsprechend einer durch das Kontextmodell 1404 geschaffenen Adresse vorgesehen. Die Adresse greift auf eine Stelle im Speicher 1403 zu, welche die dem Kontextmodell entsprechende Information speichert.Corresponding to the context subject, the decoding system 1400 queries the decoding state from the memory 1403 for the current context subject. In one embodiment, the decoder state reads the probability assessment module (PM) state and the bit generator state. The PEM state determines which code to use to decode new code words. The bit generator state maintains a record of the bits in the current pass. The state is provided on decoders 1402 from memory 1403 in accordance with an address created by context model 1404 . The address accesses a location in memory 1403 which stores the information corresponding to the context model.

Sobald der Decodierzustand für das aktuelle Kontextfach vom Speicher 1403 aus abgefragt worden ist, legt das System 1400 das nächste umkomprimierte Bit fest und verarbeitet den Decodierer­ zustand. Decodierer 1402 decodieren dann erforderlichenfalls das neue Codewort und/oder Aktualisieren den Durchlaufzählstand. Der PEM-Zustand wird erforderlichenfalls aktualisiert, ebenso wie der Biterzeugungszustand. Die Decodierer 1403 schreiben dann den neuen Codierzustand in den Speicher 1403.Once the decode state for the current context bin has been queried from memory 1403 , system 1400 sets the next recompressed bit and processes the decoder state. Decoders 1402 then decode the new code word and / or update the pass count if necessary. The PEM state is updated as necessary, as is the bit generation state. Decoders 1403 then write the new encoding state to memory 1403 .

Fig. 13B stellt eine Ausführungsform der Erfindung dar. In Fig. 14B weist der Decodierer eine Schiebelogik 1431, eine Bitgenera­ tor-Logik 1432, eine "Neue-k"-Logik 1433, eine PEM-Aktualisier-Logik 1434, eine neue Codewort-Logik 1435, eine PEM-Zustand-Ca­ che-Logik 1436, eine Codier-Masken-Logik 1437, eine Codier-MaxPL, Masken- und R3 Split-Expansionslogik 1438, eine Decodier­ logik 1439, einen Multiplexer 1440 und eine Durchlaufzählwert-Ak­ tualisierlogik 1441 auf. Die Schiebelogik 1431 ist vorgesehen, um den codierten Dateneingang 1443 sowie den Zustandseingang 1442 (vom Speicher) anzunehmen. Das Ausgangssignal der Schiebe­ logik 1431 ist auch als Eingang an der Biterzeugungslogik 1432, der "Neu-k"-Erzeugungslogik 1433 und der PEM-Aktualisierlogik 1432 vorgesehen. Die Biterzeugungslogik 1432 ist ebenfalls vor­ gesehen, um den Zustandseingang 1442 anzunehmen und erzeugt den decodierten Datenausgangswert an dem Kontextmodell. Die "Neu-k"-Logik 1433 erzeugt ein Ausgangssignal, das an einen Eingang der Codier-Masken-Logik 1437 angelegt wird. Die PEM-Aktualisierlogik 1434 wird auch an einen Zustandseingang 1432 angelegt und er­ zeugt das Zustands-Ausgangssignal (am Speicher). Der Zustands­ eingang 1442 wird auch an Eingänge der Neu-Codierwort-Logik 1435 und der PEM-Zustands-Codierlogik 1436 angelegt. Der Ausgang der Logik 1436 wird von der Expansionslogik 1438 aufgenommen. Der Ausgang der Expansionslogik 1438 ist mit der Decodierlogik 1539 und auch mit der Aktualisierlogik 1441 verbunden. Der andere Eingang an der Decodierlogik ist mit dem Ausgang der Codier-Ma­ skenlogik 1437 verbunden. Der Ausgang der Decodierlogik 1439 ist mit einem Eingang des MUX 1440 verbunden. Der andere Eingang des MUX 1440 ist mit dem Zustandseingang 1442 verbunden. Der Aus­ wähleingang des MUX 1440 ist mit dem Ausgang der neuen Codewort-Logik 1435 verbunden. Der Ausgang des MUX 1440, der Expansions­ logik 1438 und der Logik 1437 sind mit Eingängen der Aktuali­ sierlogik 1441 verbunden. Der Ausgang der Logik 1441 ist in dem Zustandsausgangssignal zum Speicher eingeschlossen. FIG. 13B illustrates one embodiment of the invention. In FIG. 14B, the decoder includes shift logic 1431 , bit generator logic 1432 , "new-k" logic 1433 , PEM update logic 1434 , new code word Logic 1435 , PEM state cache logic 1436 , encoding mask logic 1437 , encoding MaxPL, mask and R3 split expansion logic 1438 , decoding logic 1439 , multiplexer 1440, and run count update logic 1441 . Sliding logic 1431 is provided to accept coded data input 1443 and state input 1442 (from memory). The output signal of the shift logic 1431 is also provided as an input to the bit generation logic 1432 , the "new-k" generation logic 1433 and the PEM update logic 1432 . Bit generation logic 1432 is also provided to accept state input 1442 and generates the decoded data output value on the context model. The "new-k" logic 1433 generates an output signal which is applied to an input of the coding mask logic 1437 . The PEM update logic 1434 is also applied to a state input 1432 and it generates the state output signal (on the memory). Status input 1442 is also applied to inputs of re-encode word logic 1435 and PEM status encode logic 1436 . The logic 1436 output is received by expansion logic 1438 . The output of expansion logic 1438 is connected to decode logic 1539 and also to update logic 1441 . The other input to the decoding logic is connected to the output of the encoding mask logic 1437 . The output of decoding logic 1439 is connected to an input of MUX 1440 . The other input of the MUX 1440 is connected to the state input 1442 . The selection input of the MUX 1440 is connected to the output of the new code word logic 1435 . The output of the MUX 1440 , the expansion logic 1438 and the logic 1437 are connected to inputs of the update logic 1441 . The output of logic 1441 is included in the state output to memory.

Die Schiebelogik 1431 verschiebt Daten aus dem Codedatenstrom. Basierend auf dem codierten Dateneingang und dem Zustandseingang erzeugt die Logik 1432 codierte Daten an dem Kontextmodell. Die Logik 1433 verwendet auch die hineingeschobenen Daten und den Zustandseingang, um einen neuen Wert von k zu erzeugen. In einer Ausführungsform verwendet die Logik 1431 den PEM-Zustand und das erste Bit von codierten Daten, um den neuen Wert von k zu erzeu­ gen. Basierend auf den neuen k Wert erzeugt die Logik 1437 eine RLZ-Maske für das nächste Codewort. Die RLZ-Maske für das näch­ ste Codewort wird dann an die Decodierlogik 1439 und an die Ak­ tualisierlogik 1441 abgegeben.Shift logic 1431 shifts data from the code stream. Based on the encoded data input and the state input, logic 1432 generates encoded data on the context model. Logic 1433 also uses the inserted data and state input to generate a new value of k. In one embodiment, logic 1431 uses the PEM state and the first bit of encoded data to generate the new value of k. Based on the new k value, logic 1437 generates an RLZ mask for the next code word. The RLZ mask for the next code word is then provided to the decoding logic 1439 and to the updating logic 1441 .

Die Logik 1434 aktualisiert den PEM-Zustand. In einer Ausfüh­ rungsform wird der PEM-Zustand mit Hilfe des vorliegenden Zu­ stands aktualisiert. Der aktuelle Zustand wird dann an den Spei­ cher abgegeben. Die neue Codewort-Logik 1431 bestimmt, ob ein neues Codewort benötigt wird. Die PEM-Logik 1436 bestimmte den Code zum Decodieren mit Hilfe des Zustandseingangs 1442. Der Code wird in die Expansionslogik 1438 eingegeben, um die maxima­ le Lauflänge, die aktuelle Maske und einen R3-Splitwert zu erzeu­ gen. Die Logik 1439 decodiert das Codewort, um ein Durchlauf­ zählwert-Ausgangssignal zu erzeugen. Der MUX 1440 wählt entweder das Ausgangssignal von der Decodierlogik 1439 oder die Zustands­ eingabe 1442 an der Logik 1441, welche den Durchlaufzählwert aktualisiert. Logic 1434 updates the PEM state. In one embodiment, the PEM state is updated using the present state. The current status is then transferred to the memory. The new code word logic 1431 determines whether a new code word is needed. PEM logic 1436 determined the code for decoding using state input 1442 . The code is entered into the expansion logic 1438, Gene To erzeu the maxima le run length, the current mask and a R3-split value. The logic 1439 decodes the code word to a run count to generate output signal. The MUX 1440 selects either the output signal from the decoding logic 1439 or the status input 1442 at the logic 1441 , which updates the run count.

Das Decodiersystem 1400 einschließlich des Decodierers 1430 der Erfindung arbeitet in einer Pipeline-Art. In einer Ausführungs­ form bestimmt das Decodiersystem 1400 der Erfindung Kontextfä­ cher, bewertet Wahrscheinlichkeiten, decodiert Codewörter und erzeugt Bits für Durchlaufzählwert jeweils in einer Pipeline-Art. In einer Ausführungsform der Pipeline-Struktur des Deco­ diersystems ist in Fig. 14A dargestellt. In Fig. 14A ist eine Aus­ führungsform des Pipeline-Decodierprozesses der Erfindung in sechs mit den Ziffern 1 bis 6 numerierten Stufen dargestellt.The decoding system 1400 including the decoder 1430 of the invention operates in a pipeline manner. In one embodiment, the decoding system 1400 of the invention determines context bins, evaluates probabilities, decodes code words, and generates bits for pass count in a pipeline manner, respectively. In one embodiment of the pipeline structure of the decoding system is shown in Fig. 14A. In Fig. 14A is an off guide form the pipelined decoding process of the invention in six with the digits 1 to 6 numbered stages shown.

In der ersten Stufe wird das aktuelle Kontextfach bestimmt (1501). In der zweiten Stufe kommt, nachdem das Kontextfach be­ stimmt worden ist, ein Speichereinlesen vor (1402), wobei der aktuelle Decodierzustand für das Kontextfach vom Speicher abge­ fragt wird. Wie vorstehend bereits ausgeführt, schließt der De­ codierzustand den PEM- und den Bitgenerator-Zustand ein.In the first stage, the current context subject is determined ( 1501 ). In the second stage, after the context compartment has been determined, a memory read-in occurs ( 1402 ), the current decoding state for the context compartment being queried from the memory. As previously stated, the decode state includes the PEM and bit generator states.

In der dritten Stufe des Pipeline-Decodierprozesses der Erfin­ dung wird ein dekomprimiertes Bit erzeugt (1503). Dadurch ist ein Bit an dem Kontextmodell verfügbar. Zwei weitere Operationen passieren während der dritten Stufe. Der PEM-Zustand wird in einen Codetyp (1504) umgesetzt, und es wird bestimmt, ob ein neues Codewort in der dritten Stufe decodiert werden muß (1505).In the third stage of the pipeline decoding process of the invention, a decompressed bit is generated ( 1503 ). This makes one bit available on the context model. Two more operations happen during the third stage. The PEM state is converted to a code type ( 1504 ) and it is determined whether a new code word needs to be decoded in the third stage ( 1505 ).

Während der vierten Stufe verarbeitet das Decodiersystem ein Codewort und/oder aktualisiert den Durchlaufzählwert (1506). Mehrere Suboperationen sind beim Verarbeiten eines Codewortes und beim Aktualisieren des Durchlaufzählwerts involviert. Bei­ spielsweise wird ein Codewort decodiert, um den nächsten Durch­ laufzählwert festzulegen, oder der Durchlaufzählwert wird für das aktuelle Codewort aktualisiert (1506). Erforderlichenfalls werden, wenn neue Codeworte decodiert werden, mehrere codierte Daten von dem Eingangs-FIFO abgefragt. Eine weitere Subopera­ tion, die in der vierten Stufe vorkommt, ist das Aktualisieren des PEM-Zustands (1507). Zuletzt wird in der vierten Stufe der Decodier-Pipeline der neue PEM-Zustand verwendet, um zu bestim­ men, was das Lauflängen-Null-Codewort (das später noch beschrie­ ben wird) für den nächsten Code ist, wenn der Durchlaufzählwert des aktuellen Codeworts null ist (1508). Während der fünften Stufe der Decodier-Pipeline der Erfindung wird der Decodiererzu­ stand zusammen mit einem aktualisierten PEM-Zustand in den Spei­ cher geschrieben (1509), und das Verschieben beginnt für das nächste Codewort (1510). In der sechsten Stufe ist das Verschie­ ben zu dem nächsten Codewort beendet (1510).During the fourth stage, the decoding system processes a code word and / or updates the pass count ( 1506 ). Several sub-operations are involved in processing a code word and updating the pass count. For example, a code word is decoded to determine the next pass count, or the pass count is updated for the current codeword ( 1506 ). If necessary, when new code words are decoded, multiple encoded data are interrogated by the input FIFO. Another sub-operation that occurs in the fourth stage is the update of the PEM state ( 1507 ). Finally, in the fourth stage of the decoding pipeline, the new PEM state is used to determine what the runlength zero code word (described later) for the next code is when the pass count of the current code word is zero is ( 1508 ). During the fifth stage of the decoding pipeline of the invention, the decoder state is written ( 1509 ) along with an updated PEM state, and the shifting begins for the next code word ( 1510 ). In the sixth stage, the shifting to the next code word is finished ( 1510 ).

Das Pipeline-Codieren der Erfindung beginnt tatsächlich mit einer Entscheidung, ob der Decodierprozeß zu starten ist. Diese Feststellung basiert darauf, ob es genug Daten gibt, um den De­ codierer der Erfindung darzustellen. Wenn nicht genug Daten von der FIFO vorliegen, bleibt das Decodiersystem stecken (stalled). In einem anderen Fall kann das Decodiersystem stecken bleiben, wenn decodierte Daten an eine periphere Einrichtung abgegeben werden, die nicht in der Lage ist, die Daten, die von dem Deco­ dierer abgegeben worden sind, aufzunehmen, wie sie erzeugt wer­ den. Beispielsweise kann, wenn der Decodierer eine Abgabe an ein Video-Display-Interface und der ihm zugeordneten Videoschaltung vorsieht, das Video zu langsam sein, so daß der Decodierer ange­ halten werden muß, um ein Video einholen zu können.The pipeline coding of the invention actually begins with a decision as to whether to start the decoding process. These Determination is based on whether there is enough data to de to represent the encoder of the invention. If not enough data from If the FIFO is present, the decoding system remains stalled. In another case, the decoding system can get stuck, when decoded data is given to a peripheral device that is unable to view the data from the deco which have been given to record how they are created the. For example, if the decoder makes a delivery to a Video display interface and the video circuit assigned to it intends the video to be too slow so that the decoder is indicated must be stopped in order to be able to obtain a video.

Sobald die Entscheidung getroffen worden ist, den Decodierpro­ zeß zu starten, wird das akutelle Kontextfach durch das Kontext­ modell bestimmt. Bei der Erfindung wird das aktuelle Kontextfach durch Überprüfen der vorherigen Daten festgestellt. Solche vor­ herigen Daten können in Zeilenpuffer gespeichert werden und kön­ nen Daten von der aktuellen Zeile und/oder vorherigen Zeilen enthalten, beispielsweise in einem Kontextmodell für ein vorge­ gebenes Bit. Bits von Zeilenpuffer(n) können mit Hilfe eines Mo­ dells (template) bezüglich der vorherigen Daten ausgelegt wer­ den, so daß das Kontextfach für die aktuellen Daten dementspre­ chend ausgewählt wird, ob die vorherigen prüfenden Daten zu dem Modell passen. Diese Zeilenpuffer enthalten Bitschiebe-Register. Ein Muster kann für jede Bitebene eines n Bitbildes verwendet werden.Once the decision has been made, the decoder pro The current context subject is started by the context model determined. In the invention, the current context subject determined by checking the previous data. Such before Data can be stored in line buffers and can data from the current line and / or previous lines included, for example in a context model for a pre given bit. Bits of line buffer (s) can be saved using a Mo dells (template) based on the previous data den, so that the context subject for the current data accordingly is selected accordingly whether the previous checking data for the Model fit. These line buffers contain bit shift registers. A pattern can be used for each bit level of an n bit image  will.

In einer Ausführungsform wird das Kontextfach dadurch gewählt, daß eine Adresse an einen Speicher während der nächsten Pipeli­ ne-Stufe abgegeben wird. Die Adresse kann eine vorherbestimmte Anzahl Bits, wie beispielsweise 3 Bits enthalten, um die Bitebe­ ne zu identifizieren. Mit Hilfe von drei Bits kann die Bitposi­ tion in Pixeldaten identifiziert werden. Die Form, die verwendet wird, um den Kontext zu bestimmen, kann auch als ein Teil der Adresse dargestellt werden. Die Bits, die verwendet werden, um die Bitebene zu identifizieren und die Bits, die die Form iden­ tifizieren, können kombiniert werden, um eine Adresse für eine spezifische Stelle im Speicher zu erzeugen, welcher die Zu­ standsinformation für das durch diese Bits festgelegte Kontext­ fach enthält. Beispielsweise kann durch Benutzen von drei Bits, um die Bitposition in einem ganz bestimmten Pixel zu bestimmen, und durch Verwenden der zehn vorherigen Bits in derselben Posi­ tion in jeder der vorherigen Pixel in dem Modell eine 13 Bit Kontext-Adresse erzeugt werden.In one embodiment, the context subject is chosen by that an address to a store during the next pipeli ne level is given. The address can be a predetermined one Number of bits, such as 3 bits included, around the bit ne to identify. With the help of three bits, the bit posi tion in pixel data. The shape that uses to determine the context can also be part of the Address. The bits that are used to identify the bit level and the bits that iden the form tify can be combined to one address for one to generate a specific location in the memory, which the Zu status information for the context defined by these bits compartment contains. For example, by using three bits, to determine the bit position in a particular pixel, and by using the previous ten bits in the same position tion in each of the previous pixels in the model is a 13 bit Context address are generated.

Mit Hilfe der Adresse, die mittels des Kontextmodells erzeugt worden ist, wird auf den Speicher (z. B. RAM) zugegriffen, um die Zustandsinformation zu erhalten. Der Zustand enthält den PEM-Zu­ stand. Der PEM-Zustand schließt den aktuellen Wahrscheinlich­ keitsvoranschlag ein. Da mehr als ein Zustand denselben Code be­ nutzen, schließt der PEM-Zustand eine Wahrscheinlichkeitsklasse oder eine Codebestimmung ein, jedoch nicht einen Index in einer Tabelle, wie beispielsweise die in Fig. 4 dargestellte Tabelle. Wenn eine Tabelle, wie die in Fig. 4 verwendet wird, schafft der PEM-Zustand das wahrscheinlichste Symbol (MPS) als ein Mittel, um zu identifizieren, ob der aktuelle PEM-Zustand auf der posi­ tiven oder negativen Seite der Tabelle angeordnet ist. Der Bit­ erzeugungszustand kann den Zählwert und eine Anzeige enthalten, ob ein LPS vorhanden ist. In einer Ausführungsform ist auch der MPS-Wert für den aktuellen Durchlauf eingeschlossen, um das nächste Codewort zu decodieren. In der Erfindung wird der Bitge­ neratorzustand im Speicher gespeichert, um den für die Durch­ laufzähler erforderlichen Platz zu verringern. Wenn die Platzko­ sten in dem System für jeden Kontext niedrig sind, muß der Bit­ erzeugungszustand nicht im Speicher gespeichert werden.The memory (e.g. RAM) is accessed with the aid of the address which was generated by means of the context model in order to obtain the status information. The state contains the PEM state. The PEM state includes the current probability estimate. Because more than one state uses the same code, the PEM state includes a probability class or code determination, but not an index in a table, such as the table shown in FIG. 4. If a table such as that used in Fig. 4, the PEM state creates the most likely symbol (MPS) as a means to identify whether the current PEM state is on the positive or negative side of the table. The bit generation state may include the count and an indication of whether an LPS is present. In one embodiment, the MPS value for the current pass is also included to decode the next code word. In the invention, the bit generator state is stored in memory in order to reduce the space required for the flow counter. If the space cost in the system is low for each context, the bit generation state need not be stored in memory.

Sobald die vierte Stufe beendet worden ist, werden ein neuer Bitgeneratorzustand und ein PEM-Zustand in den Speicher ge­ schrieben. Ebenso wird in der fünften Stufe der codierte Daten­ strom mit den nächsten Codewort verschoben. Die Schiebeoperation ist in der sechsten Stufe beendet.Once the fourth stage has been completed, a new one will be created Bit generator state and a PEM state in the memory wrote. Likewise, in the fifth stage, the encoded data current shifted with the next code word. The sliding operation is finished in the sixth stage.

In Fig. 13C ist ein Blockdiagramm einer Ausführungsform einer FIFO-Struktur 1401 der Erfindung dargestellt, anhand welcher eine verschachtelte Wortpufferung für zwei Decodierer erläutert wird. Eine Anzahl Decodierer kann mit Hilfe der Lehren der Er­ findung unterstützt werden. Wie dargestellt, sind die eingegebe­ nen Daten und der FIFO breit genug, um zwei verschachtelte Worte zu halten. FIFO 1401 weist ein FIFO 1460, Register 1461 und 1462, MUXs 1463 und 1464 und einen Steuerblock 1465 auf. Die zwei eingegebenen Codewörter werden als die eingegebenen ver­ schachtelten Wörter verwendet. Eingänge an MUX 1463 sind mit den Ausgängen von Registern 1461 und 1462 verbunden. Der Steuerblock 1465 ist vorgesehen, um Steuersignale an FIFO 1460, Registern 1461 und 1462 und an den MUXs 1463 und 1464 zu schaffen. Ver­ schachtelte Worte sind die Ausgabedaten (Ausgabedatenwert 1 und 2), die an zwei Decodierern vorgesehen sind. Jeder Decodierer verwendet ein Anforderungssignal umanzuzeigen, daß das aktuelle Wort verwendet worden ist und ein neues Wort als nächstes benö­ tigt wird. Die Anforderungssignale von den Decodierern werden an Eingänge des Steuerblocks 1465 angelegt. Der Steuerblock 1465 gibt auch ein FIFO-Anforderungssignal ab, um mehr Daten aus dem Speicher anzufordern. FIG. 13C shows a block diagram of an embodiment of a FIFO structure 1401 of the invention, by means of which an interleaved word buffering for two decoders is explained. A number of decoders can be supported using the teachings of the invention. As shown, the data entered and the FIFO are wide enough to hold two interleaved words. FIFO 1401 has a FIFO 1460 , registers 1461 and 1462 , MUXs 1463 and 1464 and a control block 1465 . The two code words entered are used as the input nested words. Inputs on MUX 1463 are connected to the outputs of registers 1461 and 1462 . Control block 1465 is provided to provide control signals to FIFO 1460 , registers 1461 and 1462 and to MUXs 1463 and 1464 . Interlaced words are the output data (output data value 1 and 2) which are provided on two decoders. Each decoder uses a request signal to indicate that the current word has been used and that a new word is needed next. The request signals from the decoders are applied to inputs of control block 1465 . Control block 1465 also issues a FIFO request signal to request more data from memory.

Anfangs werden der FIFO und Register 1461 und 1462 mit Daten gefüllt, und es wird ein gültiges Flip-Flop in der Steuereinheit 1465 gesetzt. Jedesmal wenn eine Anforderung kommt, erzeugt der Steuerblock 1465 die Daten gemäß der in Tabelle 16 wiedergegebe­ nen Logik.Initially, the FIFO and registers 1461 and 1462 are filled with data and a valid flip-flop is set in the control unit 1465 . Whenever a request comes in, control block 1465 generates the data according to the logic shown in Table 16.

Tabelle 16 Table 16

Fig. 14B stellt eine andere Konzeptansicht des Decodierers der Erfindung dar. In Fig. 14B werden (codierte) Daten variabler Län­ ge in einen Codierer eingegeben. Der Decodierer gibt (decodier­ te) Daten fester Länge ab. Die abgegebenen Daten werden als eine verzögerte Rückkopplung gekoppelt, welche als eine Eingabe in den Decodierer aufgenommen wird. In dem Decodierer der Erfindung basiert ein Verschieben variabler Länge, die beim Decodieren verwendet wird, ab decodierten Daten, die nach einer gewissen Verzögerung verfügbar sind. Die Rückkopplungsverzögerung verrin­ gert den Durchsatz in die bezüglich einer Verzögerung toleranten Decodierer nicht. Fig. 14B illustrates another conceptual view of the decoder of the invention. In Fig. 14B, (encoded) variable length data is input to an encoder. The decoder outputs (decoded) data of fixed length. The output data is coupled as a delayed feedback which is received as an input to the decoder. In the decoder of the invention, variable length shifting used in decoding is based on decoded data that is available after a certain delay. The feedback delay does not reduce the throughput in the delay tolerant decoders.

Die eingegebenen Daten variabler Länge werden in verschachtelte Worte fester Länge unterteilt, wie in Verbindung mit Fig. 3 be­ schrieben ist. Der Decodierer benutzt die Worte fester Länge, wie nachstehend in Verbindung mit Fig. 15 beschrieben wird. Der Decodierer und ein Verzögern modelliert ein Pipeline-Decoder, wie er in Verbindung mit Fig. 14 und 32 beschrieben wird, oder mehrere parallele Decodierer, wie sie in Verbindung mit Fig. 1A bis 1D beschrieben sind. Folglich schafft die Erfindung einen bezüglich einer Verzögerung toleranten Decodierer. Die bezüglich einer Verzögerung toleranten Decodierer der Erfindung ermögli­ chen ein paralleles Handhaben von Daten variabler Länge.The input variable length data is divided into nested words of fixed length, as described in connection with Fig. 3 be. The decoder uses the fixed length words as described below in connection with FIG. 15. The decoder and delay models a pipeline decoder, as described in connection with FIGS. 14 and 32, or several parallel decoders, as described in connection with FIGS. 1A to 1D. Thus, the invention provides a delay tolerant decoder. The delay tolerant decoders of the invention enable parallel handling of variable length data.

Herkömmliche Decodierer (z. B. Huffman-Decodierer) sind nicht immer verzögerungstolerant. Information, die aus einem Decodie­ ren aller vorherigen Codeworte bestimmt wird, ist erforderlich, um die Verschiebung variabler Länge durchzuführen, die notwendig ist, um das nächste Codewort zu decodieren. Andererseits schafft die Erfindung verzögerungstolerante Decodierer.Conventional decoders (e.g. Huffman decoders) are not always tolerant of delays. Information from a decode all previous code words is determined, is required to perform the variable length shift that is necessary is to decode the next code word. On the other hand creates the invention delay-tolerant decoders.

Verschieben in dem DecodiersystemMoving in the decoding system

Der Decodierer der Erfindung schafft eine Schiebelogik, um die verschachtelten Worte in dem richtigen Bitgenerator für ein De­ codieren zu verschieben. Die Verschiebeeinheit der Erfindung er­ fordert kein besonderen Typ von Anfangszeichen "Kontext" ("by context") oder von "Wahrscheinlichkeits"-("by probability"-)Pa­ rallelismus. Es wird ein Codierer angenommen, welcher ein Code­ wort M dem Strom M mod N (M%N in der C-Sprache) zuteilt, wobei N die Anzahl Ströme ist. In der Erfindung werden codierte Daten aus dem aktuellen Strom dargestellt, bis ein Codewort angefor­ dert wird. Nur dann werden die Daten auf den nächsten Strom ge­ schaltet.The decoder of the invention provides shift logic to the nested words in the correct bit generator for a de to postpone coding. The displacement unit of the invention does not require a special type of start character "context" ("by context ") or" probability "-" Pa parallelism. An encoder is assumed, which is a code word M assigns the current M mod N (M% N in the C language), where N the number of streams is. In the invention, encoded data from the current stream until a code word is requested is changed. Only then will the data be transferred to the next stream switches.

Fig. 15 veranschaulicht eine Ausführungsform der Schiebeeinheit für den Decodierer der Erfindung. Die Schiebeeinheit 1600 ist für vier Datenströme ausgelegt. Dies läßt vier Taktzyklen für jede Schiebeoperation zu. Die verschachtelten Worte haben 16 Bits und das längste Codewort hat 13 Bits. In Fig. 15 weist die Schiebeeinheit 1600 vier Register 1601 bis 1604, die vorgesehen sind, um Eingänge von den verschachtelten codierten Daten aufzu­ nehmen. Die Ausgänge der jeweiligen Register 1601 bis 1604 sind als Eingangssignale an MUX 1605 vorgesehen. Der Ausgang von MUX 1605 ist mit dem Eingang einer Tonnen- bzw. Trommel-(barrel)-Schiebe­ einheit 1606 verbunden. Der Ausgangswert der Schiebeein­ heit 1606 ist auch als Eingangswert an einem Register 1706, an MUX & Register 1608 bis 1610 und einer Größeneinheit 1611 vorge­ sehen. Der Ausgang der Größeneinheit 1611 ist mit einem Akku­ mulator 1612 verbunden. Ein Ausgang des Akkumulators 1612 ist an die Schiebeeinheit 1606 rückgekoppelt. Ein Ausgang des Registers 1607 ist als ein Eingang an MUX & Register 1608 vorgesehen. Ein Ausgang von MUX & Register 1608 ist als ein Eingang an MUX & Re­ gister 1309 vorgesehen. Ein Ausgang von MUX & Register ist als ein Eingang an MUX & Register 1610 vorgesehen. Der Ausgangswert von MUX & Register 1610 ist der ausgerichtete codierte Daten­ wert. In einer Ausführungsform sind die Register 1601 bis 1604 16 Bit Register, die Schiebeeinheit 1606 ist eine 16 Bit bis 13 Bit-Schiebeeinheit und der Akkumulator 1612 ist ein 4 Bit-Akku­ mulator. Figure 15 illustrates one embodiment of the shift unit for the decoder of the invention. The slide unit 1600 is designed for four data streams. This allows four clock cycles for each shift operation. The interleaved words have 16 bits and the longest code word has 13 bits. In Fig. 15, the shift unit 1600 has four registers 1601 to 1604 which are provided to receive inputs from the interleaved coded data. The outputs of the respective registers 1601 to 1604 are provided as input signals to MUX 1605 . The output of MUX 1605 is connected to the input of a barrel or barrel sliding unit 1606 . The output value of the sliding unit 1606 is also provided as an input value on a register 1706 , on MUX & registers 1608 to 1610 and a size unit 1611 . The output of the size unit 1611 is connected to a battery mulator 1612 . An output of the accumulator 1612 is fed back to the sliding unit 1606 . An output of register 1607 is provided as an input to MUX & register 1608 . An output from MUX & Register 1608 is provided as an input to MUX & Register 1309 . An output from MUX & Register is provided as an input to MUX & Register 1610 . The output value from MUX & Register 1610 is the aligned encoded data value. In one embodiment, the registers 1601 to 1604 are 16 bit registers, the shift unit 1606 is a 16 bit to 13 bit shift unit and the accumulator 1612 is a 4 bit accumulator.

Die Register 1601 bis 1604 nehmen 16 Bit Worte von dem FIFO auf und geben sie an die Schiebeeinheit 1601 ein. Zumindest 32 Bits der uncodierten Daten sind immer an der Schiebeeinheit 1606 vor­ gesehen. Die vier Register 1601 bis 1604 werden initialisiert, um mit zwei 16 Bit Worten von codierten Daten zu beginnen. Somit gibt es immer zumindest ein neues Codewort, das für jeden Strom verfügbar ist.Registers 1601 through 1604 receive 16 bit words from the FIFO and input them to shift unit 1601 . At least 32 bits of the uncoded data are always seen on the shift unit 1606 . The four registers 1601 through 1604 are initialized to begin with two 16 bit words of encoded data. Thus there is always at least one new code word that is available for every stream.

Für R-Codes bestimmt die Codewort-Größeneinheit 1611, ob ein "0" oder "1N"-Codewort vorhanden ist, und wenn es ein "1N"-Code­ wort ist, wieviele Bits nach der "1" Teil des aktuellen Codewor­ tes sind. Die Größeneinheit, welche für dieselbe Funktion vorge­ sehen ist, wurde bereits in Verbindung mit Fig. 11 beschrieben. Für andere Codes ist ein Bestimmen der Größe eines Codeworts be­ kannt.For R codes, code word size unit 1611 determines whether there is a "0" or "1N" code word, and if it is a "1N" code word, how many bits after the "1" are part of the current code word . The size unit, which is provided for the same function, has already been described in connection with FIG. 11. For other codes, determining the size of a code word is known.

Die Schiebeeinheit 1600 weist einen FIFO, der aus vier Regi­ stern besteht, von welchen drei Multiplex-Eingänge haben. Jedes Register der Register 1607 bis 1610 hält zumindest ein Codewort, so daß die Breite der Register und die Multiplexer 13 Bits ist, um das längstmögliche Codewort unterzubringen. Jedes Register hat auch ein ihm zugeordnetes (nicht dargestelltes) Steuer-Flip-Flop, das anzeigt, wenn ein ganz bestimmtes Register ein Code­ wort enthält, oder wenn es auf die Schiebeeinheit 1606 wartet, um ein Codewort zu schaffen.The shift unit 1600 has a FIFO, which consists of four registers, three of which have multiplex inputs. Each register of registers 1607 through 1610 holds at least one code word so that the width of the registers and the multiplexers is 13 bits to accommodate the longest possible code word. Each register also has an associated control flip-flop (not shown) that indicates when a particular register contains a code word or when it is waiting for shift unit 1606 to create a code word.

Der FIFO ist niemals leer. Nur ein Wort kann pro Taktzyklus verwendet werden, und nur ein Codewort kann pro Taktzyklus ver­ schoben werden. Die Verzögerung, um das Verschieben durchzufüh­ ren, wird kompensiert, da das System vier Codeworte vorher star­ tet. Wenn jedes Codewort hingeschoben wird, um ausgerichtete co­ dierte Datenausgang zu sein, werden die anderen Codewörter in den Registern 1607 bis 1610 nach unten verschoben. Wenn das Co­ dewort links in dem FIFO im Register 1620 gespeichert ist, be­ wirkt die Schiebeeinheit 1606, daß Codeworte aus Registern 1601 bis 1604 über den MUX 1605 ausgelesen werden, um die Register 1607 bis 1609 zu füllen. Der FIFO kann entsprechend ausgelegt werden, um das Register 1607 wieder mit dem nächsten Codewort zu füllen, sobald dessen Codewort in das Register 1608 verschoben ist.The FIFO is never empty. Only one word can be used per clock cycle, and only one code word can be shifted per clock cycle. The delay to perform the move is compensated for because the system starts four code words beforehand. When each codeword is shifted to be aligned coded data output, the other codewords in registers 1607 through 1610 are shifted down. If the codeword on the left is stored in the FIFO in the register 1620 , the shift unit 1606 causes code words from registers 1601 to 1604 to be read out via the MUX 1605 in order to fill the registers 1607 to 1609 . The FIFO can be designed accordingly to fill the register 1607 again with the next code word as soon as its code word has been moved into the register 1608 .

Die Schiebeeinheit 1606, ein Codewort-Größenkalkulator 1611 und eine Akkumulator-Auswähleinheit 1612 behandeln das Verschieben variabler Länge. Der Akkumulator 1216 hat vier Register, eines für jeden codierten Datenstrom, welche das Ausrichten des ak­ tuellen Codeworts für jeden Datenstrom enthalten. Der Akkumula­ tor 1214 ist ein 4 Bit Akkumulator, der zum Steuern der Schiebe­ einheit 1606 verwendet wird. Der Akkumulator 1612 erhöht seinen Wert um den Wert, der von der Codewort-Größeneinheit 1611 einge­ geben worden ist. Wenn der Akkumulator 1612 überläuft (z. B. je­ desmal dann, wenn der Schiebezählwert 16 oder größer ist), wer­ den die Register 1601 bis 1604 taktgesteuert verschoben. Jede andere 16 Bit Verschiebung bewirkt, daß ein neues 32 Bit Wort von dem FIFO angefordert wird. Der Eingangswert am Akkumulator 1611 ist die Größe d 62981 00070 552 001000280000000200012000285916287000040 0002019536401 00004 62862es Codeworts, welches durch den aktuellen Code und das erste eine oder die ersten zwei Bits des aktuellen Codeworts bestimmt wird. Bei einigen Ausführungsformen müssen die Register 1601 bis 1604 mit den codierten Daten initialisiert wer­ den, bevor das Decodieren beginnen kann.The shift unit 1606 , a codeword size calculator 1611 and an accumulator selection unit 1612 handle variable length shifting. The accumulator 1216 has four registers, one for each encoded data stream, which contain the alignment of the current code word for each data stream. The accumulator gate 1214 is a 4 bit accumulator that is used to control the sliding unit 1606 . The accumulator 1612 increases its value by the value that has been entered by the code word size unit 1611 . If the accumulator 1612 overflows (e.g. each time the shift count is 16 or greater), who shifted the registers 1601 to 1604 under clock control. Any other 16 bit shift causes a new 32 bit word to be requested from the FIFO. The input value at the accumulator 1611 is the size d 62981 00070 552 001000280000000200012000285916287000040 0002019536401 00004 62862es code word, which is determined by the current code and the first one or the first two bits of the current code word. In some embodiments, the registers must be initialized 1601 to 1604 with the encoded data who, before decoding may begin.

Wenn ein Codewort von dem System angefordert wird, werden die Register in dem FIFO taktgesteuert, so daß Codewörter in der Richtung des Ausgangs bewegt werden. Wenn die Schiebeeinheit 1601 bereit ist, um ein neues Codewort zu liefern, wird es in das erste leere Register in dem FIFO gemultiplext.When a code word is requested by the system, the registers in the FIFO are clocked so that code words are moved in the direction of the output. When shift unit 1601 is ready to deliver a new code word, it is multiplexed into the first empty register in the FIFO.

In dieser Ausführungsform wird das nächste Codewortsignal in dem Bitgenerator empfangen, bevor die Entscheidung, Ströme zu schalten, getroffen wird. Wenn nicht garantiert werden kann, daß das nächste Codewortsignal von dem Bitgenerator vor der Ent­ scheidung empfangen wird, Ströme zu schalten, kann ein voraus­ schauendes System, beispielsweise eines, das in Fig. 15B darge­ stellt ist, verwendet werden. In Fig. 15B ist ein Schieberegister 1620, bei welchem ein Vorausschauen angewendet ist, in Form ei­ nes Blockdiagramms dargestellt. Die Schiebeeinheit 1620 weist eine Schiebeeinheit 1600 auf, welche Ausgangssignale der aktuel­ len codierten Daten und die nächsten codierten Daten erzeugt. Die aktuellen codierten Daten werden an einen Eingang einer Co­ dewort vorverarbeitenden Logikeinheit 1621 und an einen Eingang einer Codewort-Verarbeitungseinheit 1622 angelegt. Die nächsten codierten Daten werden an einen Eingang einer Codewort vorverar­ beitenden Logikeinheit 1622 angelegt. Ausgänge von den beiden Logikeinheiten 1621 und 1622 werden an Eingänge eines MUX 1623 angelegt. Der Ausgang von MUX 1623 ist mit einem anderen Eingang einer Codewort-Verarbeitungslogik 1624 verbunden. In this embodiment, the next code word signal is received in the bit generator before the decision to switch currents is made. If the next codeword signal cannot be guaranteed to be received by the bit generator prior to deciding to switch currents, a predictive system, such as one shown in Figure 15B, can be used. In Fig. 15B is a shift register 1620, in which a look ahead is applied, shown ei nes in block diagram form. The shift unit 1620 has a shift unit 1600 , which generates output signals of the current encoded data and the next encoded data. The current coded data are applied to an input of a code word preprocessing logic unit 1621 and to an input of a code word processing unit 1622 . The next encoded data is applied to an input of a code word preprocessing logic unit 1622 . Outputs from the two logic units 1621 and 1622 are applied to inputs of a MUX 1623 . The output of MUX 1623 is connected to another input of code word processing logic 1624 .

Die Logik, welche das Codewort verwendet, ist in zwei Teile un­ terteilt, eine Codewort-Vorverarbeitungslogik und eine Codewort-Ver­ arbeitungslogik. Zwei identische Pipeline-Vorverarbeitungs­ einheiten 1621 und 1622 arbeiten, bevor der verschachtelte Strom verschoben werden kann. Eine der Vorverarbeitungseinheiten 1621 und 1622 erzeugt die richtige Information, wenn der Strom ge­ schaltet wird, und die andere erzeugt die Information, wenn der Strom nicht geschaltet wird. Wenn der Strom geschaltet wird, wird das Ausgangssignal bei der richtigen Codewort-Vorverarbei­ tung vom Multiplexer 1623 zu der Codewort-Verarbeitungslogik 1624 gemultiplext, welche die Operation mit dem richtigen Code­ wort beendet.The logic using the code word is divided into two parts, a code word preprocessing logic and a code word processing logic. Two identical pipeline preprocessing units 1621 and 1622 operate before the nested stream can be shifted. One of the preprocessing units 1621 and 1622 generates the correct information when the power is switched, and the other generates the information when the power is not switched. When the power is switched, the output signal at the correct code word preprocessing is multiplexed from the multiplexer 1623 to the code word processing logic 1624 , which ends the operation with the correct code word.

Off-Chip-Speicher und KontextmodellOff-chip memory and context model

In einer Ausführungsform kann es erwünscht sein, viele Chips für externe Speicher- oder externe Kontextmodelle zu verwenden. In diesen Ausführungsformen ist es erwünscht, die Verzögerung zwischen einem Erzeugen eines Bits und dem Zurverfügunghaben des Bits, das an dem Kontextmodell verfügbar ist, zu verringern, wo­ bei mehrere integrierte Schaltungen verwendet werden.In one embodiment, it may be desirable to have many chips to be used for external storage or external context models. In these embodiments, it is desirable to use the delay between generating a bit and having the Decrease where available bits on the context model can be used with multiple integrated circuits.

Fig. 16 zeigt ein Blockdiagramm einer Ausführungsform eines Sy­ stems sowohl mit einem externen Kontextmodell-Chip 1701 als auch einem Codiererchip 1702 mit einem Speicher für jeden Kontext. Hierbei sind nur die Einheiten dargestellt, die für das Kontext­ modell in dem Codierchip relevant sind; hierbei enthält das Co­ dierchip 1702 eine Biterzeugung, eine Wahrscheinlichkeitsbewer­ tung usw. In Fig. 16 weist das Codierchip 1702 ein Kontextmodell 1703 nullter Ordnung, Kontextmodelle 1704 und 1705, eine Aus­ wähllogik 1706, eine Speichersteuerung 1707 und einen Speicher 1708 auf. Das Kontextmodell 1703 nullter Ordnung und die Kon­ textmodelle 1704 und 1705 erzeugen Ausgangssignale, welche an Eingänge der Auswähllogik 1706 angelegt werden. Ein weiterer Ausgang der Auswähllogik 1706 ist mit einem Ausgang des externen Kontextmodellchips 1701 verbunden. Der Ausgang der Logik 1706 ist mit einem Eingang des Speichers 1708 verbunden. Mit einem Eingang des Speichers 1708 ist auch ein Ausgang der Speicher­ steuerung 1707 verbunden. Fig. 16 shows a block diagram of an embodiment of a Sy stems both with an external context model chip 1701 and a Codiererchip 1702 of a memory for each context. Only the units that are relevant for the context model in the coding chip are shown here; Here, the coding chip 1702 contains a bit generation, a probability evaluation, etc. In FIG. 16, the coding chip 1702 has a zero-order context model 1703 , context models 1704 and 1705 , a selection logic 1706 , a memory controller 1707 and a memory 1708 . The zero order context model 1703 and the context models 1704 and 1705 generate output signals which are applied to inputs of the selection logic 1706 . Another output of the selection logic 1706 is connected to an output of the external context model chip 1701 . The output of logic 1706 is connected to an input of memory 1708 . An output of the memory controller 1707 is also connected to an input of the memory 1708 .

Über die Auswähllogik 1706 kann entweder ein externes Kontext­ modell oder ein internes Kontextmodell (z. B. das Kontextmodell 1703 nullter Ordnung, das Kontextmodell 1704 und 1705) verwendet werden. Über die Auswähllogik 1706 kann der interne Nullord­ nungsteil des Kontextmodells 1703 verwendet werden, selbst wenn das externe Kontextmodell 1701 verwendet wird. Das Kontextmodell 1703 nullter Ordnung schafft ein Bit oder mehr, während das ex­ terne Kontextmodell Chips 1701 den Rest erzeugt. Beispielsweise können die unmittelbar vorhergehenden Bits rückgekoppelt und von dem Kontextmodell 1703 wieder aufgefunden werden, während vorhe­ rige Bits in das externe Kontextmodell 1701 gehen. Auf diese Weise bleibt zeitkritische Information auf dem Chip. Hierdurch ist eine Off-Chip-Kommunikationsverzögerung für gerade erzeugte Bits ausgeschlossen.Via the selection logic 1706 , either an external context model or an internal context model (e.g. the zero order context model 1703 , the 1704 and 1705 context models) can be used. Via the selection logic 1706 , the internal zero order part of the context model 1703 can be used even if the external context model 1701 is used. The zero order context model 1703 creates one bit or more, while the external chips 1701 context model generates the rest. For example, the immediately preceding bits can be fed back and found again by the context model 1703 , while previous bits go into the external context model 1701 . In this way, time-critical information remains on the chip. This precludes an off-chip communication delay for bits that have just been generated.

Fig. 17 ist ein Blockdiagramm eines Systems mit einem externen Kontextmodell, einem externen Speicher 1803 und einem Codierchip 1802. In Fig. 17 werden einige Speicheradressenleitungen von dem externen Kontextmodell 1801 angesteuert, während andere von dem Kontextmodell "nullter Ordnung" in dem Codierchip 1802 angesteu­ ert werden. Das heißt, der Kontext von dem unmittelbar vorherge­ henden Codierzyklus wird von dem Kontextmodell nullter Ordnung angesteuert. Dadurch kann der Codierchip die Kontextinformation von dem unmittelbar vorausgehenden Zyklus mit einer minimalen Übertragungsverzögerung schaffen. Das Kontextmodellchip 1802 geht dem Rest der Kontextinformation voraus, die Bits verwendet, die nur in dem früheren Zyklus decodiert worden sind, und daher eine Übertragungsverzögerung berücksichtigt. In vielen Fällen ist die Kontextinformation von dem unmittelbar vorhergehenden Zyklus ein Markov-Zustand nullter Ordnung, und die Kontextinfor­ mation von weiteren in dem vorherigen Zyklus ist ein Markov-Zu­ stand höherer Ordnung. Die in Fig. 17 dargestellte Ausführungs­ form beseitigt eine Übertragungsverzögerung, die bei einem Aus­ führen dem-Modell nullter Ordnung in dem externen Kontextmodell­ chip 1802 anhaftet. Jedoch kann es noch eine Kontextfach-Bestim­ mung mit einer biterzeugten Verzögerung infolge des Decodier­ chips 1802 und des Speichers 1803 geben. Fig. 17 is a block diagram of a system with an external context model, an external memory 1803 and an encoder chip 1802nd In Fig. 17, some memory address lines from the external context model 1801 are driven, while other "zero-order" are ert angesteu in the encoder chip 1802 by the context model. That is, the context from the immediately preceding coding cycle is driven by the context model of the zero order. This allows the encoding chip to provide context information from the immediately preceding cycle with a minimal transmission delay. The context model chip 1802 precedes the rest of the context information, which uses bits that have only been decoded in the previous cycle, and therefore takes into account a transmission delay. In many cases the context information from the immediately preceding cycle is a zero order Markov state and the context information from others in the previous cycle is a higher order Markov state. The embodiment shown in FIG. 17 eliminates a transmission delay that is inherent in a zero order execution chip 1802 in the external context model. However, there may still be a context bin determination with a bit generated delay due to decode chip 1802 and memory 1803 .

Zu beachten ist, daß auch eine andere Speicherarchitektur ver­ wendet werden werden könnte. Beispielsweise kann ein Chip mit dem Kontextmodell und einem Speicher auf einem Chip und dem Co­ dierer auf einem anderen Chip verwendet werden. Ebenso kann ein System ein Codierchip mit einem internen Speicher, welcher für einige Kontexte verwendet wird, und einen externen Speicher auf­ weisen, welcher für andere Kontexte verwendet wird.It should be noted that another memory architecture ver could be applied. For example, a chip with the context model and a memory on a chip and the Co used on another chip. Likewise, a System a coding chip with an internal memory, which for some contexts is used and external storage is on indicate which is used for other contexts.

Bitgeneratoren mit einem SpeicherBit generators with one memory

Fig. 18 zeigt einen Decodierer mit einem Pipeline-Bitgenerator mit Speicher. In Fig. 18 weist der Decodierer 1900 ein Kontextmo­ dell 1901, einen Speicher 1902, einen PEM Zustand-Codier-Block 1903, einen Pipeline-Bitgenerator 1905, einen Speicher 1904 und eine Schiebeeinheit 1906 auf. Der Eingang des Kontextmodells 1901 weist die decodierten Daten von dem Pipeline-Bitstromgene­ rator 1905 auf. An den Eingängen der Schiebeeinheit 1906 werden die codierten Daten erhalten. Der Ausgang des Kontextmodells 1901 ist mit einem Eingang am Speicher 1902 verbunden. Der Aus­ gang des Speichers 1902 ist mit dem PEM-Block 1903 verbunden. Das Ausgangssignal des PEM-Blocks 1903 und die ausgerichteten codierten Daten am Ausgang der Schiebeeinheit 1906 werden an Eingänge des Bitgenerators 1905 angelegt. Der Speicher 1904 ist ebenfalls durch einen zweiseitig gerichteten Bus mit dem Bitge­ nerator 1905 verbunden, und der Ausgang des Bitgenerators 1905 sind die decodierten Daten. Figure 18 shows a decoder with a pipeline bit generator with memory. In Fig. 18, decoder 1900 includes context model 1901 , memory 1902 , PEM state coding block 1903 , pipeline bit generator 1905 , memory 1904, and shift unit 1906 . The input of the context model 1901 has the decoded data from the pipeline bit stream generator 1905 . The coded data is received at the inputs of the sliding unit 1906 . The output of the context model 1901 is connected to an input at the memory 1902 . The output of the memory 1902 is connected to the PEM block 1903 . The output signal of PEM block 1903 and the aligned encoded data at the output of shift unit 1906 are applied to inputs of bit generator 1905 . Memory 1904 is also connected to bit generator 1905 by a bidirectional bus, and the output of bit generator 1905 is the decoded data.

Das Kontextmodell 1904 gibt ein Kontextfach entsprechend co­ dierten Daten an seinen Eingängen ab. Das Kontextmodell wird als eine auf dem Kontextfach basierende Adresse für einen Zugriff auf den Speicher 1902 verwendet, um einen Wahrscheinlichkeitszu­ stand zu erhalten. Der Wahrscheinlichkeitszustand wird von dem PEM-Modul 1903 erhalten, welcher die Wahrscheinlichkeitsklasse entsprechend den Wahrscheinlichkeitszustand erzeugt. Die Wahr­ scheinlichkeitsklasse wird dann als eine Adresse für einen Zu­ griff auf den Speicher 1904 verwendet, um den Durchlaufzählwert zu erhalten; dieser wird dann von dem Bitgenerator 1905 verwen­ det, um die decodierten Daten zu erzeugen.The context model 1904 delivers a context subject correspondingly coded data at its inputs. The context model is used as an address based on the context bin for accessing the memory 1902 to obtain a probability state. The probability state is obtained from the PEM module 1903 , which generates the probability class according to the probability state. The probability class is then used as an address to access memory 1904 to obtain the run count; this is then used by bit generator 1905 to generate the decoded data.

In einer Ausführungsform weist der Speicher 1902 einen (1024×7 Bit) Speicher auf (wobei 1024 die Anzahl von verschiedenen Kontexten ist), während der Speicher 1404 einen (25×14 Bit) Speicher aufweist (wobei 25 die Anzahl von verschiedenen Durch­ laufzählwerten ist).In one embodiment, memory 1902 has (1024 x 7 bits) memory (where 1024 is the number of different contexts) while memory 1404 has (25 x 14 bits) memory (where 25 is the number of different run counts ).

Da Bitgeneratorzustände (Durchlaufzählwerte, usw.), Wahrschein­ lichkeitsklassen, nicht Kontextfächern, zugeordnet sind, gibt es eine zusätzliche Pipeline-Verzögerung bevor ein Bit an dem Kon­ textmodell verfügbar ist. Da ein Aktualisieren eines Bitgenera­ tor-Zustands mehrere Taktzyklen dauert (der Bitgenerator-Zu­ standsspeicher bewirkt eine Verzögerung) werden mehrere Bitgene­ rator-Zustände für jede Geschwindigkeitsklasse verwendet. Wenn beispielsweise die Pipeline sechs Taktzyklen ist, dann hat der Bitgenerator-Zustandsspeicher sechs Einträge pro Wahrscheinlich­ keitsklasse. Der Zähler wird verwendet, um die richtige Spei­ cherstelle auszuwählen. Selbst mit mehreren Einträgen pro Wahr­ scheinlichkeitsklasse ist die Größe des Speichers üblicherweise kleiner als die Anzahl an Kontexten. Der Speicher kann entweder mit mehreren Bänken von SRAM oder mit einer mehrtourigen Regi­ sterdatei ausgeführt sein.Since bit generator states (pass counts, etc.), probability classes, not contextual subjects, exist an additional pipeline delay before a bit on the con text model is available. Because updating a Bitgenera gate state takes several clock cycles (the bit generator closes state memory causes a delay) are several bit genes rator states used for each speed class. If For example, if the pipeline is six clock cycles, then the Bit generator state memory six entries per probable class. The counter is used to ensure the correct memory selection. Even with multiple entries per truth Probability class is usually the size of the memory less than the number of contexts. The store can either with several banks from SRAM or with a multi-tour regi must be executed.

Da ein Durchlaufzählwert mehreren Kontexten zugeordnet werden kann, muß eine Ausführungsform den Wahrscheinlichkeitsbewer­ tungszustand von einem oder mehreren Kontexten erweitern. In einer Ausführungsform wird der PEM-Zustand des Kontextes, wel­ cher ein Durchlaufende bewirkt, aktualisiert. Statt ein Lesen, Modifizieren oder Schreiben eines Durchlaufzählwerts anzufor­ dern, bevor er wieder gelesen werden kann, kann ein Durchlauf­ zählwert wieder verwendet werden, sobald das Modifizieren abge­ schlossen ist.Because a pass count is assigned to multiple contexts one embodiment, the probability evaluator Expand the state of one or more contexts. In In one embodiment, the PEM state of context, wel cher causes a continuous end, updated. Instead of reading Modify or write a pass count a pass can be done before it can be read again  count value can be used again as soon as the modification is canceled is closed.

Fig. 31 veranschaulicht ein Zeitsteuerdiagramm einer Decodiero­ peration in einer Ausführungsform der Erfindung. In Fig. 32 ist eine Decodieroperation mit drei Zyklen beschrieben. Signalnamen sind in der linksseitigen Spalte des Zeitsteuerdiagramms aufge­ listet. Die Gültigkeit eines Signals während irgendeinen Zyklus ist mit einem Strich während des Zyklusses (oder einem Teil da­ von) bezeichnet. In bestimmten Fällen ist die Einheit oder Lo­ gik, die für ein Erzeugen des Signals oder ein Anlegen des gül­ tigen Signals anspricht, bei der gültigen Signalanzeige in einem gestrichelt wiedergegebenen Block dargestellt. Jeweils sind die spezifischen Elemente und Einheiten, die dargestellt sind, eben­ falls vorgesehen. Fig. 31 illustrates a timing diagram of a Decodiero peration in an embodiment of the invention. In Fig. 32, a decoding operation is described with three cycles. Signal names are listed in the left-hand column of the timing diagram. The validity of a signal during any cycle is indicated by a dash during the cycle (or part of it). In certain cases, the unit or logic that responds to generating the signal or applying the valid signal is shown in a block shown in dashed lines in the valid signal display. In each case, the specific elements and units that are shown are also provided, if provided.

Ein Teil des Signals, das sich in einen anderen Zyklus er­ streckt, zeigt die Gültigkeit des Signals nur für diesen Zeitab­ schnitt, in welchem das Signal dargestellt ist, das sich in den anderen Zyklus erstreckt. Es sind bestimmte Signale dargestellt, die gesondert für mehr als einen Zyklus gültig sind. Ein Exem­ plar davon ist das Temp-Durchlaufzählsignal, welches an einer Stelle am Ende des zweiten Zyklus gültig ist, und dann wieder während des dritten Zyklus. Dies zeigt an, daß das Signal nur am Ende des Zyklus zu registrieren ist. Eine Liste von Abhängigkei­ ten ist ebenfalls in Tabelle 17 unten dargestellt, welche die Abhängigkeiten für denselben oder vorherigen Taktzyklus zu dem augenblicklichen Zeitpunkt wiedergibt, welchen das Signal als gültig spezifiziert. Part of the signal that is in another cycle stretches, shows the validity of the signal only for this time cut, in which the signal is shown, which is in the extends another cycle. Certain signals are shown which are valid separately for more than one cycle. An exem Plar of it is the Temp-through counting signal, which at one Place is valid at the end of the second cycle, and then again during the third cycle. This indicates that the signal is only on At the end of the cycle. A list of dependencies ten is also shown in Table 17 below, which is the Dependencies for the same or previous clock cycle on that represents the instant of the signal valid specified.  

Tabelle 17 Table 17

Implizites SignalisierenImplicit signaling

In einigen Ausführungsformen muß der Decodierer in den endli­ chen Umordnungspuffer des Codierers modellieren. In einer Aus­ führungsform wird dieses Modellieren mit einem impliziten Signa­ lisieren erreicht. Wie vorher bereits hinsichtlich des Codierers erläutert, wird, wenn ein Codewort in dem Codierer gestartet wird, Raum in dem entsprechenden Puffer für das Codewort in der Reihenfolge reserviert, in welcher die Codewörter auf dem Kanal plaziert werden sollten. Wenn der letzte Platz in einem Puffer für ein neues Codewort reserviert ist, dann werden einige Code­ wörter in den komprimierten Bitstrom plaziert, ob sie nun voll­ ständig bestimmt worden sind oder nicht.In some embodiments, the decoder in the endli Model the reorder buffer of the encoder. In an out This modeling is implemented with an implicit signa lize achieved. As before with regard to the encoder is explained when a code word is started in the encoder will, space in the corresponding buffer for the code word in the Reserved order in which the code words on the channel should be placed. If the last place in a buffer is reserved for a new code word, then some code words placed in the compressed bitstream whether they are full have been constantly determined or not.

Wenn ein partielles Codewort beendet werden muß, kann ein Code­ wort gewählt werden, welches kurz ist und korrekt die insoweit empfangenen Symbole spezifiziert. Beispielsweise kann in einem R-Codiersystem, wenn es notwendig ist, ein Codewort für eine Reihe von 100 MPSs in einem Durchlaufcode mit 128 maximalen Lauflängen vorzeitig zu vervollständigen, das Codewort für 128 MPSs verwendet werden, da dieses korrekt die ersten 100 Symbole spezifiziert.If a partial code word needs to be terminated, a code word, which is short and the correct one received symbols specified. For example, in one R coding system, if necessary, a code word for one Row of 100 MPSs in a pass code with 128 maximum To complete run lengths prematurely, the code word for 128 MPSs are used because this correctly matches the first 100 symbols specified.

Andererseits kann ein Codewort, das 100 MPSs spezifiziert, auf die ein LPS folgt, verwendet werden. Wenn das Codewort vervoll­ ständigt worden ist, wird es aus dem Umordnungspuffer entfernt und dem Codestrom hinzugefügt. Hierdurch können vorher vervoll­ ständigte Codewörter in dem Codestrom plaziert werden. Wenn ein Erzwingen der Vervollständigung eines partiellen Codeworts zu einem Entfernen eines Codeworts aus dem vollem Puffer führt, dann kann ein Codieren fortdauern. Wenn ein Puffer noch voll ist, dann muß das nächste Codewort wieder vervollständigt und dem Codestrom hinzugefügt werden. Dieser Prozeß dauert an, bis der Puffer, welcher voll war, nicht mehr länger voll ist. Der Decodierer kann den Codierer für implizites Signalisieren model­ lieren, wobei ein Zähler für jede Bitgenerator-Zustandsinforma­ tions-Speicherstelle verwendet wird. On the other hand, a code word that specifies 100 MPSs can be that follows an LPS can be used. When the code word completes it is removed from the reorder buffer and added to the code stream. This allows you to complete beforehand constant code words are placed in the code stream. When a Force the completion of a partial code word too removing a code word from the full buffer, then coding may continue. If a buffer is still full then the next code word must be completed and be added to the code stream. This process continues until the buffer that was full is no longer full. Of the Decoder can model the encoder for implicit signaling a counter for each bit generator state information tion storage location is used.  

In einer Ausführungsform hat jeder Durchlaufzähler (Wahrschein­ lichkeitsklasse in diesem Beispiel) einen Zähler, welcher die­ selbe Größe wie die Kopf- oder Nachlaufzähler in den Codierern (z. B. 6 Bits) ist. Jedesmal wenn ein neuer Durchlauf gestartet wird (eines neues Codewort abgefragt wird), wird der entspre­ chende Zählwert mit der Größe des Codewort-Speichers geladen. Je­ desmal wenn ein Durchlauf gestartet wird (ein neues Codewort ab­ gefragt wird) werden alle Zähler dekrementiert. Irgendein Zäh­ ler, welcher null erreicht, bewirkt, daß der entsprechende Durchlaufzählstand gelöscht wird (und das vorhandene LPS ge­ löscht wird).In one embodiment, each pass counter (probability class in this example) a counter which contains the same size as the head or trailing counters in the encoders (e.g. 6 bits). Every time a new run is started is (a new code word is queried), the corresponding The corresponding count value is loaded with the size of the code word memory. Each whenever a run is started (a new code word from all counters are decremented. Some toughness The one who reaches zero causes the corresponding one Pass count is deleted (and the existing LPS ge is deleted).

Optionen für ein Signalisieren für endlichen SpeicherSignaling options for finite memory

Ein Realzeit-Codieren in der Erfindung erfordert, daß der Deco­ dierer Durchläufe von MPSs behandelt, auf die nicht ein LPS for­ dert und die nicht die maximale Lauflänge sind. Dies kommt vor, wenn der Codierer einen Durchlauf von MPSs beginnt, aber nicht einen genug begrenzten Umordnungsspeicher hat, um zu warten, bis der Durchlauf abgeschlossen wird. Diese Bedingung erfordert, daß ein neues Codewort zu decodieren ist, und das nächste Mal dieses Kontextfach verwendet wird; dieser Zustand muß dem Decodierer signalisiert werden. Drei mögliche Wege, um den Decodierer zu modifizieren, werden nachstehend beschrieben.Real time coding in the invention requires that the deco ters runs of MPSs that are not addressed by an LPS for and which are not the maximum run length. This happens when the encoder starts to run MPSs, but not has a sufficiently limited reorder space to wait for the run is completed. This condition requires that is to decode a new code word, and next time this Context subject is used; this condition must go to the decoder be signaled. Three possible ways to get the decoder modify are described below.

Wenn der Puffer voll ist, muß der Durchlaufzählwert für das Kontextfach oder die Wahrscheinlichkeitsklasse, das bzw. die herausgezwungen ist, zurückgesetzt werden. Um dies wirksam durchzuführen, ist ein Speichern des Kontextfaches oder der Wahrscheinlichkeitsklasse in dem Codewortspeicher nützlich. Da dies nur bei Durchläufen benötigt wird, die noch nicht ein zuge­ ordnetes Codewort haben, kann der Speicher, welcher zum Spei­ chern des Codeworts verwendet ist, gemeinsam benutzt werden. In einigen System können, statt ein unvollständiges Wort herauszu­ zwingen, Bits in die Kontext/Wahrscheinlichkeitsklasse des (oder irgendein) Codeworts gezwungen werden, das in dem Puffer nicht abgefertigt ist, wenn der Puffer voll ist. Der Decodierer stellt dies fest und benutzt das entsprechende (falsche) Kontextfach oder die entsprechende Wahrscheinlichkeitsklasse.If the buffer is full, the pass count for that Context subject or probability class, that is forced to be reset. To make this effective is to save the context subject or the Probability class useful in the code word store. There this is only required for runs that have not yet been added orderly codeword, the memory which is used for storage chern of the code word is used to be shared. In some system, instead of extracting an incomplete word force bits into the context / probability class of (or any) code word that is not forced in the buffer is cleared when the buffer is full. The decoder provides  this is fixed and uses the corresponding (wrong) context subject or the corresponding probability class.

Bei einem Imstrom-Signalisieren werden Codeworte verwendet, um dies dem Decodierer zu signalisieren. In einer Ausführungsform werden die R2(k)- und R3(k)-Codedefinitionen geändert, um nicht- maximale Lauflängen von MPS zu erhalten, auf die nicht ein LPS folgt. Dies kann dadurch durchgeführt werden, daß ein Bit dem Codewort hinzugefügt wird, das mit der niedrigsten Wahrschein­ lichkeit auftreten sollte. Dies ermöglicht eine eindeutig deco­ dierbare Vorsilbe für die nicht-maximalen Lauflängen-Zählwerte. Tabelle 18 zeigt einen Ersatz für R2(2) Codes, was ein im Strom-Signalisieren gestattet. Die Nachteile dieser Methode sind, daß die R-Code-Decodierlogik geändert werden muß, und daß es Kompressionskosten jedesmal gibt, wenn das Codewort mit der geringsten Wahrscheinlichkeit auftritt.In the case of in-stream signaling, code words are used to to signal this to the decoder. In one embodiment the R2 (k) and R3 (k) code definitions are changed to not- to get maximum run lengths of MPS on which not an LPS follows. This can be done by assigning a bit to the Codeword is added that has the lowest probability should occur. This enables a clear deco adjustable prefix for the non-maximum run length counts. Table 18 shows a replacement for R2 (2) codes, which is an im Current signaling allowed. The disadvantages of this method are that the R code decoding logic needs to be changed and that there are compression costs every time the code word with the least likelihood occurs.

Tabelle 18 Table 18

In einigen Ausführungsformen führt der Decodierer ein implizi­ tes Signalisieren mit Hilfe von Zeitmarken durch. Ein Zähler hält eine Spur der aktuellen "Zeit" durch Inkrementieren jedes­ mal dann, wenn ein Codewort gefordert wird. Wenn jedoch ein Co­ dewort gestartet ist, wird die aktuelle "Zeit" in einem dem Co­ dewort zugeordneten Speicher gesichert. Nachdem das erste Mal ein Codewort verwendet ist, wird der entsprechende gespeichert "Zeit"-Wert plus der Größe des Codierer-Umordnungspuffers mit der aktuellen "Zeit" verglichen. Wenn die aktuelle "Zeit" größer ist, wird ein implizites Signal erzeugt, so daß ein neues Code­ wort gefordert wird. Folglich ist der begrenzte Umordnungsspei­ cher in dem Codierer simuliert worden. In einer Ausführungsform werden genug Bits für "Zeit"-Werte verwendet, so daß alle Code­ worte aufgezählt werden können.In some embodiments, the decoder implicitly signaling with the help of time stamps. A counter keeps track of the current "time" by incrementing each sometimes when a code word is required. However, if a co dewort is started, the current "time" in a Co  saved memory. After the first time If a code word is used, the corresponding one is saved "Time" value plus the size of the encoder reorder buffer with compared to the current "time". If the current "time" is greater an implicit signal is generated so that a new code word is required. Hence the limited reorganization game simulated in the encoder. In one embodiment enough bits are used for "time" values so that all code words can be enumerated.

Um den erforderlichen Speicher zu reduzieren, wird die Anzahl an Bits, welche für die Zeitmarken verwendet werden, auf einem Minimum gehalten. Wenn die Zeitmarken eine kleine Anzahl Bits benutzen, so daß Zeitwerte wieder verwendet werden, muß aufge­ paßt werden, daß alle alten Zeitmarken vermerkt sind, bevor der Zähler Wiederbenutzungszeiten startet. Hierbei soll N die Größe der Anzahl Adressenbits für Schlange oder den Bitgenerator-Zu­ standsspeicher sein. Zeitmarken mit (N+1) Bits können verwendet werden. Der Bitgenerator-Zustandsspeicher muß mehrere Zugriffe haben, vielleicht zwei Lese- und zwei Schreib-Zugriffe pro deco­ dierten Bit. Ein Zähler wird verwendet, um zyklisch den Bitgene­ rator-Zustandsspeicher zu durchlaufen, indem einmal für jedes decodierte Bit inkrementiert wird. Eine Speicherstelle, die zu alt ist, wird gelöscht, so daß ein neues Codewort abgefragt wird, wenn es in Zukunft gebraucht wird. Dies garantiert, daß alle Zeitmarken überprüft werden, bevor irgendein Zeitwert wie­ der benutzt wird.To reduce the memory required, the number of bits used for the time stamps on one Kept to a minimum. If the timestamps a small number of bits use so that time values are used again, must be used be made sure that all old time stamps are noted before the Reuse times counter starts. Here N is the size the number of address bits for queue or the bit generator close stand memory. Time stamps with (N + 1) bits can be used will. The bit generator state memory must have multiple accesses have maybe two reads and two writes per deco dated bit. A counter is used to cycle the bit genes to go through rator state memory by once for each decoded bit is incremented. A storage location that too old is deleted, so that a new code word is queried will when it is needed in the future. This guarantees that all time stamps are checked before any time value like that is used.

Wenn der Bitgenerator-Zustandsspeicher kleiner als die Schlange ist, kann die Zählrate (der Zeitmarken-Zähler) und die erforder­ liche Speicherbandbreite reduziert werden, und zwar deswegen, da jede Zeitmarke (eine pro Bitgenerator-Zustandsspeicher) nur ein­ mal bezüglich der Anzahl Zyklen geprüft werden muß, die erfor­ derlich sind, um die ganze Schlange zu benutzen. Auch kann ein Speichern der Zeitmarken in einem anderen Speicher die geforder­ te Speicherbandbreite verringern. In einem System, was "0" Code­ worte für partielle Durchläufe verwendet, brauchen Zeitmarken für "1N" Codeworte nicht geprüft zu werden. In einem System, das "1N"-Codeworte für partielle Durchläufe benutzt, ist nur die Zeitmarke zu prüfen, bevor ein LPS erzeugt wird.If the bit generator state memory is smaller than the queue the count rate (the timestamp counter) and the required memory bandwidth can be reduced, because: each timestamp (one per bit generator state memory) only one times must be checked with regard to the number of cycles required are necessary to use the whole snake. Also one can Store the timestamps in another memory as required Reduce the memory bandwidth. In a system what "0" code  words used for partial runs need time stamps not to be checked for "1N" code words. In a system that "1N" code words used for partial runs is just that Check the time stamp before an LPS is generated.

In einigen Ausführungsformen wird ein implizites Signalisieren mit einer Schlange während eines Decodierens durchgeführt. Das Verfahren kann in einem halben Duplexsystem brauchbar sein, in welchem die Hardware für ein Codieren während des Decodierens verfügbar ist. Die Wirkung der Schlange ist meistens dieselbe wie während des Codieren. Wenn ein neues Codewort gefordert wird, wird dessen Index in der Schlange plaziert und als ungül­ tig markiert. Wenn die Daten von einem Codewort abgeschlossen sind, wird deren Schlangeneintrag als gültig markiert. Wenn Da­ ten aus der Schlange genommen werden, um Raum für neue Codewör­ ter zu schaffen, wird, wenn die herausgenommenen Daten als un­ gültig markiert sind, die Bitgenerator-Zustandsinformation von diesem Index aus gelöscht. Diese Löschoperation kann erfordern, daß der Bitgenerator-Zustandsspeicher eine zusätzliche Schreib­ operation unterstützen kann.In some embodiments, implicit signaling performed with a queue during decoding. The Process may be useful in a half duplex system which is the hardware for coding during decoding is available. The effect of the snake is mostly the same like during coding. When a new code word is requested the index is placed in the queue and is considered invalid marked. When the data is completed by a code word the queue entry is marked as valid. If there were taken out of line to make room for new codewords ter will create if the extracted data as un are marked as valid, the bit generator status information from deleted this index from. This delete operation may require that the bit generator state memory has an additional write operation can support.

Explizites Signalisieren teilt dagegen einen Pufferüberlauf in Form von verdichteten Daten mit. Ein Beispiel hierfür ist, ein zusätzliches Kontextfach zu haben, das einmal für jedes normale Kontextfach-Decodieren oder einmal für jedes Codewort verwendet wird, das decodiert wird. Bits, die aus dem zusätzlichen Kon­ textfach decodiert worden sind, zeigen an, wenn der Zustand auf­ tritt, bei welchem ein neues Codewort benötigt wird, und ein neues Codewort muß für das entsprechende normale Kontextfach de­ codiert werden. In diesem Fall müssen die Codeworte für diesen speziellen Kontext richtig umgeordnet werden. Da die Benutzung dieses Kontextes eine Funktion von etwas Bekanntem bezüglich der Umordnungseinheit ist (üblicherweise wird es nur einmal für je­ des Codewort verwendet), kann der Speicher, der erforderlich ist, um den zusätzlichen Kontext umzuordnen, begrenzt oder im­ plizit modelliert werden. Ebenso können die möglichen Codes für diesen zusätzlichen Kontext begrenzt werden.In contrast, explicit signaling divides a buffer overflow Form of compressed data with. An example of this is a to have an additional context subject that is once for every normal Context box decoding or used once for each code word that is decoded. Bits resulting from the additional con Text decoded indicate if the state is up occurs in which a new code word is required, and new code word must de for the corresponding normal context subject be encoded. In this case, the code words for this correct context to be rearranged. Because the use this context, a function of something known about the Reordering unit (usually it is only once for each of the codeword used), the memory required is to rearrange the additional context, limited or in be modeled explicitly. Likewise, the possible codes for  limit this additional context.

Ein implizites Signalisieren modelliert den begrenzten Codie­ rer-Puffer, wenn decodiert wird, um ein Signal zu erzeugen, das anzeigt, daß ein neues Codewort decodiert werden muß. In einer Ausführungsform wird eine Zeitmarke für jeden Kontext erhalten. In einer Ausführungsform wird der Umordnungspuffer endlicher Größe des Codierers direkt modelliert. In einem halben Duplexsy­ stem kann, da die Codierer-Umordnungsschaltung während des Deco­ dierens verfügbar ist, diese verwendet werden, um die Signale für den Decodierer zu erzeugen.Implicit signaling models the limited code rer buffer when decoded to produce a signal that indicates that a new code word has to be decoded. In a Embodiment will get a timestamp for each context. In one embodiment, the reorder buffer becomes finer Size of the encoder modeled directly. Half a duplex stem, since the encoder reordering circuit during deco which is available, these are used to transmit the signals to generate for the decoder.

Wie genau ein implizites Signalisieren erreicht wird, hängt von den Einzelheiten ab, wie der Codierer den vollen Pufferzustand erkennt und behandelt. Bei einem System mit einer gemischten Schlange mit fester Zuordnung kann das Verwenden von mehreren Kopfzeigern Wahlmöglichkeiten zulassen, was "Puffer voll" bedeu­ tet. Bei einer entsprechenden Auslegung des Decodierers kann ein entsprechendes Modell bemessen werden.How exactly implicit signaling is achieved depends on the details of how the encoder fully buffers recognizes and treats. In a mixed system Fixed assignment snake can use multiple Allow pointers to choose what "buffer full" means tet. With a corresponding design of the decoder, a corresponding model can be dimensioned.

Im folgenden wird eine Codierer-Operation beschrieben, und ein Modell für ein Benutzen durch den Codierer bei einer gemischten Schlange mit einer fest Stromzuordnung, parallel zu einem Wahr­ scheinlichkeitssystem. Für dieses Beispiel soll der Umordnungs­ puffer 256 Stellen haben, es sollen vier Verschachtelungsströme verwendet werden, und jedes Wort soll 16 Bit sein. Wenn der Puf­ fer 256 Einträge enthält, muß ein Eintrag zu einem Bitpacker (z. B. einer Bitpackeinheit) abgegeben werden, bevor der Eintrag für das 257-te Codewort in der Schlange plaziert werden kann. Einträge können erforderlichenfalls früher herausgezwungen wer­ den. In einigen System erfordert ein Entfernen des ersten Ein­ trags in dem Puffer ein Entfernen von genug Bits, um ein ganzes verschateltes Codewort zu vervollständigen. Wenn daher 1 Bit Co­ dewörter möglich sind, kann ein Entfernen eines Codeworts 0 auch ein Entfernen von Codewörtern 4, 8, 12, . . . 52, 56, 60 für ver­ schachtelte 16 Bitwörter erfordern. Um sicherzustellen, daß alle diese Puffereingaben gültige Einträge haben, kann ein Erzwingen eines aufzufüllenden Eintrags, da der Speicher voll ist, an Adressen 64, 192 von der Stelle aus durchgeführt werden, an wel­ cher ein neues Wort eingegeben wird (256-16×4 = 192).An encoder operation will now be described, and a model for use by the encoder in a mixed queue with a fixed current allocation, parallel to a probability system. For this example, the reorder buffer should have 256 digits, four interleaving streams should be used, and each word should be 16 bits. If the buffer contains 256 entries, an entry must be submitted to a bit packer (e.g., a bit pack unit) before the entry for the 257th code word can be placed in the queue. If necessary, entries can be forced out earlier. In some systems, removing the first entry in the buffer requires removing enough bits to complete an entire scrambled code word. If 1-bit code words are therefore possible, removing a code word 0 can also remove code words 4, 8, 12,. . . 52, 56, 60 require for interleaved 16 bit words. To ensure that all of these buffer entries have valid entries, enforcing an entry to be filled, since the memory is full, can be performed at addresses 64, 192 from the point at which a new word is entered (256-16 × 4 = 192).

In dem Decodierer gibt es einen Zähler für jede Wahrscheinlich­ keit. Wenn ein neues Codewort verwendet wird, um einen Durchlauf zu starten, wird der Zähler mit 192 geladen. Wenn zu irgendeinem Zeitpunkt ein neues Codewort bei irgendeiner Wahrscheinlichkeit verwendet wird, werden alle Zähler dekrementiert. Wenn irgendein Zähler null erreicht, wird die Lauflänge für diese Wahrschein­ lichkeit null gesetzt (und das vorhandene LPS-Flag wird ge­ löscht).In the decoder there is a counter for every probability speed. When a new code word is used to make a pass to start, the counter is loaded with 192. If to any Time a new code word at any probability all counters are decremented. If any When counter reaches zero, the run length for this probability set to zero (and the existing LPS flag is set deletes).

Es kann vorteilhaft sein, mehrere RAM Bänke (einen mehrtourigen Speicher, eine Simulation mit einem schnellen Speicher, usw.) zu verwenden, und zwar eine Bank für jeden codierten Datenstrom. Dadurch können alle Bitpackeinheiten Daten gleichzeitig aufneh­ men, so daß ein Lesen mehreren Codewörtern für einen ganz be­ stimmten Strom ein Lesen bei anderen Strömen nicht behindern.It can be advantageous to have several RAM banks (one multi-speed Memory, a simulation with a fast memory, etc.) too use one bank for each encoded data stream. This allows all bit pack units to record data at the same time men, so that a reading of several code words for a whole be agreed current did not hinder reading at other currents.

In anderen Systemen müssen mehrere Bitpackeinheiten sich für einen einzigen Speicher auf der Basis einer Codewort-Reihenfolge entscheiden, wie sie in dem Puffer gespeichert ist. In diesen Systemen kann ein Entfernen eines Antrags aus einem Puffer ein verschachteltes Wort nicht vervollständigen. Jede Biteinheit nimmt üblicherweise einen Bruchteil eines verschachtelten Wortes infolge auf. Jede Bitpackeinheit nimmt zumindest eine Anzahl Bits auf, die gleich der kürzesten Codewortlängen sind (z. B. 1 Bit) und höchstens eine Anzahl Bits, die gleich der größten Co­ dewortlänge sind (z. B. 13 Bits). Verschachtelte Worte können nicht abgegeben werden, bis die vollständig sind und müssen in der Initialisierungsreihenfolge abgegeben werden. In diesem Bei­ spiel kann eine Bitpackeinheit zum Puffern 13 verschachtelte Worte haben; dies ist die maximale Anzahl an verschachtelten Worten, die mit Codewörtern maximaler Länge vervollständigt wer­ den können, während ein anderer Strom ein anstehendes verschach­ teltes Wort hat, das Codewörter minimaler Länge aufnimmt.In other systems, several bit pack units have to be used for a single memory based on a code word order decide how it is stored in the buffer. In these Systems can remove an application from a buffer Do not complete the nested word. Every bit unit usually takes a fraction of a nested word as a result of. Each bit pack unit takes at least one number Bits that are equal to the shortest code word lengths (e.g. 1 bit) and at most a number of bits that are equal to the largest Co word length are (e.g. 13 bits). Nested words can not be submitted until the are complete and must be in in the order of initialization. In this case a bit pack unit for buffering 13 can be nested Have words; this is the maximum number of nested ones Words that are completed with maximum length codewords  that can while another stream is chess pending has a word that contains code words of minimal length.

Ein System, in welchem jedes Codewort zwei Schreibvorgänge und einen Lesevorgang bei einem Speicher erfordert, kann weniger er­ wünscht für eine Hardware-Ausführung sein, als ein System, wel­ ches zwei Schreib- und zwei Lesevorgänge durchführt. Wenn dies für das beispielhafte System mit vier Strömen gewünscht wurde, könnten Bitpackeinheiten 1 und 2 gemeinsam einen Speicherlesezy­ klus und Bitpackeinheiten 1 und 3 gemeinsam einen anderen Lese­ zyklus (oder irgendeine andere beliebige Kombination) benutzen. Obwohl dies die Größe der benötigen Pufferung nicht reduzieren würde, würde es eine höhere Transferrate in der Bitpackeinheit zulassen. Dies kann es den Bitpackeinheiten ermöglichen, die Ka­ pazität des codierten Datenkanals besser auszunutzen.A system in which each code word requires two writes and one read to memory may be less desirable for hardware execution than a system which performs two writes and two reads. If so desired for the exemplary four stream system, bit pack units 1 and 2 could share a memory read cycle and bit pack units 1 and 3 together use another read cycle (or any other combination). Although this would not reduce the amount of buffering required, it would allow a higher transfer rate in the bit packer. This can allow the bit pack units to better utilize the capacity of the encoded data channel.

Systeme mit einem Speicher fester GrößeSystems with a fixed size memory

Ein Vorteil eines Systems, das mehrere Bitgenerator-Zustände hoher Wahrscheinlichkeitsklasse hat, besteht darin, daß das Sy­ stem ein verlustbehaftetes Codieren stützen kann, wenn ein Spei­ cher fester Größe überläuft. Dies kann bei einer Bildkompression für einen Rahmenpuffer und andere Anwendungsfälle brauchbar sein, die jedoch nur eine begrenzte Menge codierter Daten spei­ chern.One advantage of a system that has multiple bit generator states has a high probability class is that the Sy can support lossy coding when a memory Fixed size overflows. This can be the case with image compression usable for a frame buffer and other applications that only store a limited amount of encoded data chern.

Für Systeme mit einem Speicher fester Größe, werden die mehre­ ren Bitgeneratorzustände für jede Wahrscheinlichkeit jeweils einem Teil der Daten zugeordnet. Beispielsweise könnten jeweils acht Zustände einer ganz bestimmten Bitebene für acht Bitdaten zugewiesen werden. In diesem Fall wird eine Schiebeeinheit jedem Teil der Daten zugeordnet, im Unterschied zu Schiebeeinheiten, die nacheinander das nächste Codewort erzeugen. Zu beachten ist, daß die Daten nicht durch eine Bitebene geteilt werden müssen. Ebenso wird in dem Codierer kein Verschachteln durchgeführt; je­ der Teil der Daten wird einfach bitgepackt. Ein Speicher wird jedem Teil der Daten zugeordnet. For systems with a fixed size memory, the multiple ren bit generator states for each probability assigned to part of the data. For example, each eight states of a very specific bit level for eight bit data be assigned to. In this case, a pushing unit is used by everyone Part of the data assigned, unlike sliding units, which successively generate the next code word. It should be noted that the data does not have to be divided by a bit level. Likewise, no interleaving is carried out in the encoder; ever the part of the data is simply bit packed. A memory will assigned to every part of the data.  

Eine Speicherverwaltung für codierte Daten ist für Systeme dar­ gestellt, die alle Daten in einem Speicher fester Größe spei­ chern, und für Systeme, die Daten an einen Kanal mit einer maxi­ mal zulässigen Bandbreite übertragen. In diesen beiden Systemen ist eine maßvolle Verschlechterung in einem verlustbehafteten System erwünscht. Verschiedene Datenströme werden für Daten mit unterschiedlicher Wichtigkeit verwendet, so daß wenige wichtige Ströme gespeichert oder nicht übertragen werden können, wenn nicht eine ausreichende Speichermöglichkeit oder Bandbreite ver­ fügbar ist.Memory management for encoded data is for systems which stores all data in a fixed size memory chern, and for systems that data to a channel with a maxi times allowed bandwidth. In these two systems is a moderate deterioration in a lossy System wanted. Different data streams are used for data used different importance so that few important Streams can be stored or not transmitted if insufficient storage capacity or bandwidth is available.

Wenn ein Speicher verwendet wird, müssen die codierten Daten so gespeichert werden, daß auf sie zugegriffen werden kann, so daß weniger wichtige Datenströme weggeworfen werden können, ohne daß die Möglichkeit verloren geht, wichtige Datenströme zu decodie­ ren. Da codierte Daten eine variable Länge haben, kann eine dy­ namische Speicherzuteilung verwendet werden. Fig. 30 zeigt bei­ spielsweise eine dynamische Speicher-Zuordnungseinheit für drei codierte Datenströme. Eine Registerdatei 3100 (oder ein anderer Speicher) hält einen Zeiger für jeden Datenstrom plus einen wei­ teren Zeiger, um die nächste freie Speicherstelle anzuzeigen. Der Speicher 3101 ist in Seiten fester Größe unterteilt.If memory is used, the encoded data must be stored so that it can be accessed so that less important data streams can be discarded without losing the ability to decode important data streams. Because encoded data is of variable length , dynamic memory allocation can be used. Fig. 30 shows at play, a dynamic memory allocation unit for three coded streams. A register file 3100 (or other memory) holds a pointer for each data stream plus another pointer to indicate the next free location. Memory 3101 is divided into fixed size pages.

Anfangs zeigt jeder Zeiger, der einem Strom zugeordnet ist, auf den Beginn einer Speicherseite, und der freie Zeiger auf die nächste verfügbare Speicherseite. Codierten Daten aus einem ganz bestimmten Strom werden an einer Speicherstelle gespeichert, die durch den entsprechenden Zeiger adressiert ist. Der Zeiger wird dann auf die nächste Speicherstelle inkrementiert.Initially, each pointer that is associated with a stream points to the beginning of a memory page, and the free pointer to the next available memory page. Coded data from a whole certain electricity are stored in a storage location that is addressed by the corresponding pointer. The pointer will then incremented to the next storage location.

Wenn der Zeiger das Maximum für die aktuelle Seite erreicht, ergibt sich das folgende. Die Adresse des Startes der nächsten freien Seite (die in dem freien Zeiger gespeichert ist) wird mit der aktuellen Seite gespeichert. (Entweder ein Teil des codierten Datenspeichers oder ein gesonderter Speicher oder eine Register­ datei könnten verwendet werden). Der aktuelle Zeiger wird auf die nächste freie Seite gesetzt und dann inkrementiert. Diese Aktionen ordnen eine neue Speicherseite einem ganz bestimmten Strom zu und schaffen Verbindungen, daß die Zuordnungsreihenfol­ ge während des Decodierens festgestellt werden kann.When the pointer reaches the maximum for the current page, the following results. The address of the start of the next free page (which is stored in the free pointer) is marked with the current page. (Either part of the coded Data storage or a separate memory or a register file could be used). The current pointer turns to  the next free page is set and then incremented. These Actions assign a new memory page to a specific one Power and create connections that the assignment order ge can be determined during decoding.

Wenn alle Seiten in dem Speicher verwendet sind und es mehr Da­ ten aus einem Datenstrom gibt, kann eines von drei Dingen getan werden. In allen drei Fällen wird ein Speicher, der dem am wenig­ sten wichtigen Datenstrom zugeordnet ist, wieder einem wichtige­ ren Datenstrom zugeordnet werden und es werden keine Daten mehr des am wenigsten wichtigen Datenstroms gespeichert.When all the pages in the memory are used and there is more da out of a data stream, one of three things can be done will. In all three cases, a memory that is the least most important data stream is assigned to an important one ren data stream and there will be no more data of the least important data stream.

Erstens wird einfach die Seite, die gerade von dem am wenigsten wichtigsten Strom benutzt, den wichtigeren Daten zugeordnet. Da die typischen Entropie-Codierer interne Zustandsinformation be­ nutzen, gehen alle der am wenigsten wichtigen Daten verloren, die vorher in dieser Seite gespeichert sind.First, it will just be the site that is least of the least main stream used, assigned to the more important data. There the typical entropy encoder be internal state information use, all of the least important data is lost, previously saved on this page.

Zweitens, die Seite, die gerade von dem am wenigsten wichtigen Strom verwendet wird, wird einfach dem wichtigeren Datenstrom zugeordnet. Im Unterschied zu dem vorherigen Fall wird der Zei­ ger auf das Ende der Seite gesetzt und da wichtigere Daten auf die Seite geschrieben werden, wird der entsprechende Zeiger de­ krementiert. Dies hat den Vorteil, daß die am wenigsten wichti­ gen Daten am Anfang der Seite erhalten werden, wenn der wichti­ gere Datenstrom nicht die gesamte Seite erfordert.Second, the side that is of the least important When electricity is used, it simply becomes the more important data stream assigned. Unlike the previous case, the Zei put on the bottom of the page and since more important data the page will be written, the corresponding pointer will de incremented. This has the advantage that the least important data at the top of the page can be obtained if the important data stream does not require the entire page.

Drittens statt die aktuelle Seite mit den am wenigsten wichti­ gen Daten wieder zuzuordnen, wird irgendeine Seite von am wenig­ sten wichtigen Daten wieder zugeordnet. Dies macht es erforder­ lich, daß die codierten Daten für alle Seiten unabhängig vonein­ ander zu codieren sind, wodurch die erreichte Kompression ver­ ringert wird. Dies macht es auch erforderlich, daß die uncodier­ ten Daten, die dem Start/Anfang aller Seiten entsprechen, iden­ tifiziert werden. Da eine von am wenigsten wichtigen Daten weg­ geworfen werden kann, ist eine größere Flexibilität im Hinblick auf eine vertretbare Verschlechterung bei verlustbehaftetem Co­ dieren verfügbar. Die dritte Alternative kann insbesondere in einem System attraktiv sein, das eine fest Kompressionsrate über Bereiche des Bildes erreicht. Eine spezifizierte Anzahl von Speicherseiten kann einem Bereich des Bildes zugeordnet werden. Ob weniger wichtige Daten zurückgehalten werden oder nicht, kann von der Kompression abhängen, die in dem speziellen Bereich er­ reicht ist. (Der Speicher, der einem Bereich zugeordnet ist, kann nicht vollständig ausgenutzt werden, wenn eine verlustfreie Kompression gefordert wird, die weniger als die zugeordnete Speichermenge benötigt). Ein Erreichen einer festen Kompres­ sionsrate in einem Bereich des Bildes kann einen beliebigen Zu­ griff auf die Bildbereich unterstützen.Third, instead of the current page with the least important To relocate data, either side of the least most important data reassigned. This makes it necessary Lich that the encoded data for all pages independently are to be coded otherwise, whereby the compression achieved ver is wrestled. This also requires that the uncoder data that corresponds to the start / start of all pages be certified. Because one of the least important data is gone can be thrown is greater flexibility in terms  for a reasonable deterioration in lossy Co available. The third alternative can in particular be attractive to a system that has a fixed compression rate above Areas of the image reached. A specified number of Memory pages can be assigned to an area of the image. Whether less important data is retained or not can depend on the compression in the particular area he is enough. (The memory allocated to an area cannot be fully exploited if a lossless Compression is required that is less than the associated one Amount of memory required). Reaching a firm compress Sionsrate in an area of the image can be any Zu reached to support the image area.

Die Fähigkeit, Daten in jede Seite von beiden Enden aus zu schreiben, kann genutzt werden, um den gesamten in dem System verfügbaren Speicherraum besser zu nutzen. Wenn alle Seiten zu­ geordnet sind, kann eine Seite, die ausreichend freien Raum an Ende hat, für eine Benutzung von dem Ende aus zugeordnet werden. Die Möglichkeit, beide Enden einer Seite zu nutzen, muß gegenü­ ber den Kosten ausgeglichen sein, eine Spur zu der Stelle zu halten, zu der die zwei Datentypen passen (dies ist schwierig für den Fall, daß eine der Datentypen nicht wichtig war und ein­ fach darüber geschrieben werden könnte).The ability to get data into each side from both ends write can be used to represent the whole in the system make better use of available storage space. If all sides too are ordered, a page that has sufficient free space End has to be allocated for use from the end. The ability to use both ends of a page must be compared Be balanced over the cost, track to the spot too hold that the two types of data match (this is difficult in case one of the data types was not important and a could be written about it).

Nunmehr wird ein System betrachtet, bei welchem Daten in einem Kanal übertragen statt in einem Speicher gespeichert werden. Speicherseiten fester Größe werden verwendet, aber es wird nur eine Seite pro Strom benötigt. (Oder vielleicht zwei, wenn sie nach der Ping-Pong-Methode benötigt werden, um eine Pufferung für den Kanal zu schaffen, so daß, während die eine beschrieben wird, die andere für ein Ausgeben ausgelesen wird). Wenn eine Speicherseite voll ist, wird sie an den Kanal übertragen, und die Speicherstelle kann wieder benutzt werden, sobald die Seite übertragen ist. In einigen Anwendungsfällen kann die Seitengröße des Speichers die Größe von Datenpaketen, die in dem Kanal ver­ wendet worden sind, oder ein Vielfaches einer Paketgröße sein.Now consider a system in which data in one Channel transmitted instead of being stored in a memory. Fixed size memory pages are used, but only one side per stream needed. (Or maybe two if they are According to the ping-pong method, buffering is required to create for the channel so that while the one described the other is read out for output). When a Memory page is full, it is transferred to the channel, and the location can be used again as soon as the page is transferred. In some use cases, the page size of the memory the size of data packets that ver in the channel  have been used, or a multiple of a packet size.

In einigen Übertragungssystemen, beispielweise ATM (asynchroner Transfermode) können Prioritäten Paketen zugeordnet werden. ATM hat zwei Prioritätspegel, einen vorrangigen und einen sekundä­ ren. Sekundäre Pakete werden nur übertragen, wenn ausreichend Bandbreite verfügbar ist. Ein Schwellenwert kann verwendet wer­ den, um zu bestimmen, welche Ströme vorrangig sind und welche sekundär sind. Eine andere Methode würde darin bestehen, einen Schwellenwert an dem Codierer zu benutzen, um Ströme nicht zu übertragen, welche weniger wichtig als ein Schwellenwert waren.In some transmission systems, for example ATM (asynchronous Transfer mode) can be assigned to priority packages. ATM has two priority levels, a priority and a secondary ren. Secondary packets are only transmitted if sufficient Bandwidth is available. A threshold can be used to determine which streams are priority and which are secondary. Another method would be one To use threshold on the encoder so as not to receive currents which were less important than a threshold.

Gesonderte Bitgeneratoren für jeden CodeSeparate bit generators for each code

Fig. 19 ist ein Blockdiagramm eines Systems mit gesonderten Bit­ generatoren für jeden Code. In Fig. 19 weist das Decodiersystem 2000 ein Kontextmodell 2001, einen Speicher 2002, einen PEM-Zu­ stand-Codier-Block 2003, einen Decodierer 2004, Bitgeneratoren 2005A-n und eine Scheibeeinheit 2006 auf. Der Ausgang des Kon­ textmodells 2001 ist mit einem Eingang des Speichers 2002 ver­ bunden. Der Ausgang des Speichers 2002 ist mit einem Eingang des PEM-Blocks 2003 verbunden. Der Ausgang des Blocks 2003 ist mit einem Eingang des Decodierers 2004 verbunden. Der Ausgang des Decodierers 2004 ist als ein Freigeben für Bitgeneratoren 2005A-n vorgesehen. Bitgeneratoren 2005A-n sind vorgesehen, um codierte Daten aufzunehmen, die von der Schiebeeinheit 2006 ab­ gegeben worden sind. Figure 19 is a block diagram of a system with separate bit generators for each code. In Fig. 19 in 2000, the decoding system, a context model 2001, a memory 2002, a PEM to stand-coding block 2003, a decoder 2004, bit generators 2005 A-n and a disk unit for 2006. The output of the context model 2001 is connected to an input of the memory 2002 . The output of the memory 2002 is connected to an input of the PEM block 2003 . The output of block 2003 is connected to an input of decoder 2004 . The output of the decoder 2004 is provided as an enable for bit generators 2005 A-n. Bit generators 2005 A-n are provided to receive coded data which have been output by the shift unit 2006 .

Das Kontextmodell 2001, der Speicher 2002 und der PEM-Block 2003 arbeiten ähnlich wie ihre Gegenstücke in Fig. 18. Das Kon­ textmodell 2001 erzeugt ein Kontextfach. Der Speicher 2002 gibt einen Wahrscheinlichkeitszustand auf der Basis des Kontextfaches ab. Der Wahrscheinlichkeitszustand wird von dem PEM-Block 2003 aufgenommen, welcher eine Wahrscheinlichkeitsklasse für jeden Wahrscheinlichkeitszustand erzeugt. Der Decodierer 2004 gibt einen der Bitgeneratoren 2005A-n zum Codieren der Wahrschein­ lichkeitsklasse frei. (Der Decodierer 2004 ist eine M auf 2M-De­ codierschaltung, die einem (74×138 3 : 8) Decodierer entspricht, welcher bekannt ist - und nicht ein Entropie-Codier-Decodierer ist). Da jeder Code einen gesonderten Bitgenerator hat, können einige Bitgeneratoren Codes und nicht R-Codes verwenden. Insbe­ sondere kann ein Code für Wahrscheinlichkeiten nahe 60% verwen­ det werden, um den Wahrscheinlichkeitsraum zwischen R2(0) und R2(1) besser abdecken zu können. Beispielsweise zeigt Tabelle 19 einen derartigen Code.The context model 2001 , the memory 2002 and the PEM block 2003 work similarly to their counterparts in FIG. 18. The context model 2001 creates a context subject. The memory 2002 outputs a probability state based on the context subject. The probability state is recorded by the PEM block 2003 , which generates a probability class for each probability state. The decoder 2004 enables one of the bit generators 2005 A-n to encode the probability class. (The decoder 2004 is an M to 2 M -De coding circuit which corresponds to a (74 × 138 3: 8) decoder which is known - and is not an entropy coding decoder). Since each code has a separate bit generator, some bit generators can use codes and not R codes. In particular, a code for probabilities close to 60% can be used to better cover the probability space between R2 (0) and R2 (1). For example, Table 19 shows such a code.

Tabelle 19 Table 19

Um die gewünschte Geschwindigkeit zu erreichen, kann erforder­ lichenfalls ein Vor-Decodieren von einem oder mehreren Bits durchgeführt werden, um zu garantieren, daß decodierte Daten schnell verfügbar sind. In einigen Ausführungsformen werden, um die Notwendigkeit zu vermeiden, einen großen Durchlaufzählwert bei jedem Taktzyklus zu aktualisieren, sowohl das Codewort-Deco­ dieren als auch das Durchlaufzählen für lange Codes aufgeteilt.To achieve the desired speed, may require If necessary, pre-decoding one or more bits be performed to guarantee that decoded data are quickly available. In some embodiments, to avoid the need for a large pass count to update every clock cycle, both the codeword deco dieren as well as the pass count for long codes.

Der Bitegenerator für R2(0) Codes ist unkompliziert. Ein Code­ wort ist erforderlich, jedesmal wenn ein Bit angefordert wird. Das generierte Bit ist einfach das Codewort (XORed mit dem MPS).The bit generator for R2 (0) codes is straightforward. A code word is required every time a bit is requested. The generated bit is simply the code word (XORed with the MPS).

Codes für kurze Lauflängen, beispielsweise R2(1), R3(1), R2(2) und R3(2) werden auf die folgende Weise behandelt. Alle Bits in einem Codewort werden decodiert und in einer Zustandseinrichtung gespeichert, welche einen kleinen Zähler (1, 2 bzw. 3 Bits) und ein LPS Bit. Der Zähler und das LPS-Bit arbeiten als ein R-Code Decodierer.Codes for short run lengths, e.g. R2 (1), R3 (1), R2 (2) and R3 (2) are treated in the following manner. All bits in a code word are decoded and in a state device  stored, which is a small counter (1, 2 or 3 bits) and an LPS bit. The counter and the LPS bit operate as an R code Decoder.

Für längere Codes, wie R2(k) und R3(k) für k < 2 werden Bitgene­ ratoren in zwei Einheiten unterteilt, wie in Fig. 20 dargestellt ist. In Fig. 20 ist eine Bitgeneratorstruktur für R2(k) Codes für k < 2 mit einer Einheit 2101 für einen kurzen Durchlauf und einer Einheit 2102 für einen langen Durchlauf dargestellt. Obwohl die Struktur bei R2(k < 2) verwendet wird, ist deren Arbeitsweise ähn­ lich wie bei R3(k < 2) Codes (und ist dem Fachmann geläufig).For longer codes, such as R2 (k) and R3 (k) for k <2, bit generators are divided into two units, as shown in FIG. 20. In Fig. 20 a Bitgeneratorstruktur for R2 (k) code is shown for k <2, with a unit 2101 for a short pass, and a unit 2102 for a long run. Although the structure is used for R2 (k <2), its operation is similar to that of R3 (k <2) codes (and is known to those skilled in the art).

Die Einheit 2101 für einen kurzen Durchlauf ist vorgesehen, um ein Freigabesignal und ein Codewort [0 . . . 2] als Eingangswerte in den Bitgenerator und ein Signal von "allen Nullen" und ein Zäh­ lerstand-null-Signal (das einen Zählerstand null anzeigt), die beide von der Einheit 2102 für langen Durchlauf stammen, aufzu­ nehmen. Dementsprechend gibt an diesen Eingängen die Einheit 2101 ein decodiertes Bit und eine Anzeige für das nächste Signal ab, wodurch signalisiert wird, daß ein neues Codewort benötigt wird. Die Einheit 2101 erzeugt auch ein Zählwert-Freigabesignal, ein Zählerladesignal und ein Signal "Zählwert max" an die Ein­ heit 2102 für einen langen Durchlauf. Die Einheit 2102 ist auch vorgesehen, um Codeworte [k . . . 3] als einen Eingang an den Bitge­ nerator aufzunehmen.The short pass unit 2101 is provided to generate an enable signal and a code word [0. . . 2] as input values to the bit generator and a signal from "all zeros" and a count zero signal (indicating a zero count), both of which come from the long pass unit 2102 . Accordingly, at these inputs, unit 2101 outputs a decoded bit and an indication of the next signal, thereby signaling that a new code word is required. Unit 2101 also generates a count enable signal, a counter load signal, and a "count max" signal to unit 2102 for a long run. Unit 2102 is also provided to convert code words [k. . . 3] as an input to the bit generator.

Die Einheit 2102 behandelt Durchläufe bis zu einer Länge von 4 und entspricht einem R2(2) Bitgenerator. In einer Ausführungs­ form ist die Einheit 2101 dieselbe für alle R2(k < 2) Codes. Der Zweck der Einheit 2102 für einen langen Durchlauf besteht darin, zu bestimmen, wann die letzten 1 bis 4 Bits des Durchlaufs abzu­ geben sind. Die Einheit 2102 hat Eingänge, eine UND-Logik und einen Zähler, welche in der Größe mit k variieren.Unit 2102 handles runs up to a length of 4 and corresponds to an R2 (2) bit generator. In one embodiment, unit 2101 is the same for all R2 (k <2) codes. The purpose of the long pass unit 2102 is to determine when to deliver the last 1 to 4 bits of the pass. Unit 2102 has inputs, AND logic, and a counter, which vary in size with k.

Eine Ausführung der Zählwerteinheit 2102 für einen langen Durchlauf ist in Fig. 21 dargestellt. In Fig. 21 weist die Einheit 2102 eine UND-Logik 2201 auf, die vorgesehen ist, um das Code­ wort [k . . . 3] aufzunehmen, und gibt ein Signal "alles Einsen" als eine logische 1 ab, wenn alle Bits in dem Codewort 1′en sind, um dadurch anzuzeigen, daß das aktuelle Codewort ein 1N Codewort ist, und daß der Durchlaufzählwert kleiner als 4 ist. Ebenso ist eine Nicht-Logik 2202 vorgesehen, um das Codewort aufzunehmen und um es zu invertieren. Der Ausgang der Nicht-Logik 2202 ist mit einem Eingang eines Bitzählers 2203 verbunden. Der Bitzähler 2203 und das Zählwert-Freigabesignal, das Zähler-Ladesignal und das Signal "Zählwert max" auf. Entsprechend den Eingangssignalen erzeugt der Bitzähler 2203 ein Signal "Zählwert null".An embodiment of the count unit 2102 for a long run is shown in FIG. 21. In Fig. 21, unit 2102 has AND logic 2201 which is provided to code word [k. . . 3], and outputs a "all ones" signal as a logical 1 when all bits in the code word are 1 's, thereby indicating that the current code word is a 1N code word and that the pass count is less than 4 . A non-logic 2202 is also provided to receive the code word and to invert it. The output of non-logic 2202 is connected to an input of a bit counter 2203 . The bit counter 2203 and the count value enable signal, the counter load signal and the "count value max" signal. In accordance with the input signals, the bit counter 2203 generates a "count zero" signal.

In einer Ausführungsform ist der Zähler 2003 ein k-2 Bitzähler und wird verwendet, um lange Durchlauf-Zählwerte in Durchläufe von vier MPSs und möglicherweise einen gewissen Rest zu brechen. Das Zählwert-Freigabesignal zeigt an, daß vier MPSs abgegeben worden sind, und der Zähler dekremiert werden sollte. Das Zäh­ ler-Ladesignal wird verwendet, wenn "1N" Codeworte decodiert werden, und der Zähler mit dem Komplement von Codewort-Bits k durch 3 zu laden ist. Das Signal "Zählwert max." wird verwendet, wenn "0" Codeworte decodiert werden und lädt den Zähler mit dem Maximalwert. Das Ausgangssignal "Zählwert null" zeigt an, wenn der Zähler null ist.In one embodiment, counter 2003 is a k-2 bit counter and is used to break long run counts into runs of four MPSs and possibly some remainder. The count enable signal indicates that four MPSs have been delivered and the counter should be decremated. The counter load signal is used when "1N" code words are decoded and the counter is to be loaded with the complement of code word bits k by 3. The signal "count value max." is used when "0" code words are decoded and loads the counter with the maximum value. The output signal "count value zero" indicates when the counter is zero.

Eine Ausführungsform der Zähleinheit 2102 für einen kurzen Durchlauf ist in Fig. 22 dargestellt. Fig. 22 enthält die Zählein­ heit eines Steuermoduls 2301, einen 2 Bit Zähler 2302 und einen 3 Bit Zähler 2303. Der Steuermodul 2301 erhält das Freigabe­ signal (das Codewort [0 . . . 2], und alle Einsen und Signale "Zähl­ wert null" von der langen Durchlauf-Zählwerteinheit. Der 2 Bit Zähler wird verwendet, um vier Bit Durchläufe von MPSs zu zäh­ len, die ein Teil von längeren Durchläufen sind. Ein AR(2) Zäh­ ler und ein LPS Bit (3 Bits insgesamt) 2303 werden verwendet, um die 1 bis 4 Bits am Ende eines Durchlaufs zu erzeugen. Das Frei­ gabe-Eingangssignal zeigt an, daß ein Bit an dem Bitausgang er­ zeugt werden sollte. Das Eingangssignal "Zählwert null" zeigt, wenn es nicht geltend gemacht ist, an, daß ein Durchlauf von vier MPSs abgegeben werden sollte. Wenn jedoch der MPS-Zähler 2302 null erreicht, wird das Zählwert-Freigabe-Ausgangssignal geltend gemacht. Wenn das Eingabesignal "Zählwert null" geltend gemacht wird, wird entweder das R2(2) Zähler, das LPS, verwendet oder es wird ein neues Codewort decodiert, und das nächste Aus­ gangssignal wird geltend gemacht.An embodiment of the short pass counting unit 2102 is shown in FIG. 22. Fig. 22 contains the Zählein integral of a control module 2301, a 2-bit counter 2302 and a 3-bit counter 2303rd The control module 2301 receives the enable signal (the code word [0... 2], and all ones and signals "count zero" from the long pass count unit. The 2 bit counter is used to count four bit passes of MPSs An AR (2) counter and an LPS bit (3 bits in total) 2303 are used to generate the 1 to 4 bits at the end of a run, and the enable input signal indicates that a bit at the bit output should be generated The "count zero" input signal, if not asserted, indicates that a pass of four MPSs should be issued, however, when the MPS counter 2302 reaches zero If the "count zero" input signal is asserted, either the R2 (2) counter, the LPS, is used or a new code word is decoded and the next output signal is asserted.

Wenn das neue Codewort decodiert wird, werden die durchgeführ­ ten Aktionen durch den Codeworteingang bestimmt. Wenn der Ein­ gang ein "0"-Codewort ist, wird der MPS Zähler 2302 verwendet, und der Ausgang "Zählwert max." wird geltend gemacht. Für "1N" Codeworte, werden die ersten drei Bits des Codewortes in den R282) Zähler und LPS 2303 geladen, und das Zählerlade-Ausgangs­ signal wird geltend gemacht. Wenn alle eingegebenen Einsen gel­ tend gemacht werden, dann werden der R2(2) Zähler und LPS 2303 verwendet, um Bits zu erzeugen. Andernfalls wird der MPS-Zähler verwendet, bis das Eingangssignal für den Zählwert null geltend gemacht wird.When the new code word is decoded, the actions performed are determined by the code word input. If the input is a "0" code word, the MPS counter 2302 is used and the output "Count value max." is asserted. For "1N" code words, the first three bits of the code word are loaded into the R282) counter and LPS 2303 , and the counter load output signal is asserted. If all entered 1's are asserted, then the R2 (2) counter and LPS 2303 are used to generate bits. Otherwise, the MPS counter is used until the zero count input signal is asserted.

Von einer Systemperspektive aus gesehen, müßte die Anzahl Co­ des klein für das System sein, um gut zu arbeiten, üblicherweise 25 oder weniger. Die Größe des Multiplexers, der für Bit- und das nächste Codewort betreffende Ausgänge benötigt wird, und der Decodierer zum Freigeben eines ganz bestimmten Bitgenerators muß für eine schnelle Operation begrenzt werden. Ebenso muß das Co­ dewort von der Schiebeeinheit nicht zu hoch für einen hoch­ schnellen Betrieb sein.From a system perspective, the number of Co small for the system to work well, usually 25 or less. The size of the multiplexer used for bit and the next code word related outputs are needed, and the Decoder to release a specific bit generator must be limited for quick surgery. The Co deword from the sliding unit not too high for one high fast operation.

Gesonderte Bitgeneratoren für jeden Code erlauben eine Pipeli­ ne-Verarbeitung. Wenn alle Codewörter aus mindestens drei Bits resultierten, könnte eine Verarbeitung von Codewörtern in zwei Zyklen statt in einem in Form einer Pipeline vorgenommen werden. Hierdurch kann die Geschwindigkeit des Decodierers verdoppelt werden, wenn die Bitzähler ein Begrenzungsteil des Systems wa­ ren. Ein Weg, um dies zu erreichen, besteht darin, daß auf das Codewort mit einer Lauflänge null (das Codewort zeigt genau ein LPS an) ein Bit folgt, welches das nächste uncodierte Bit ist. Diese könnten als RN(k)+1 Codes bezeichnet werden, und würden immer zumindest zwei Bits codieren. R2(0) Codewörter und viel­ leicht einige der anderen kurzen Codewörter brauchen für eine entsprechende Geschwindigkeit nicht mit einer Pipeline verbunden zu sein.Separate bit generators for each code allow a pipeli ne processing. If all code words consist of at least three bits could result in code word processing in two Cycles instead of being made in a pipeline. This can double the speed of the decoder if the bit counter is a limiting part of the system wa One way to achieve this is to rely on the  Code word with a run length of zero (the code word shows exactly one LPS on) is followed by a bit, which is the next uncoded bit. These could and would be called RN (k) +1 codes always code at least two bits. R2 (0) code words and a lot easily need some of the other short code words for one appropriate speed not connected to a pipeline to be.

Gesonderte Bitgeneratoren eignen sich selbst für eine Verwen­ dung in Verbindung einem impliziten Signalisieren. Ein implizi­ tes Signalisieren für einen Codieren mit einem endlichen Spei­ cher kann auf folgende Weise erreicht werden. Jeder Bitgenerator hat einen Zähler, der die Größe einer Schlangenadresse, bei­ spielsweise 9 Bits hat, wenn eine Schlange mit einer Größe 512 verwendet wird. Jedesmal, wenn ein neues Codewort von einem Bit­ generator verwendet wird, wird der Zähler mit dem maximalen Wert geladen. Jedesmal wenn ein Bitgenerator ein Codewort anfordert, werden die Zähler für alle Bitgeneratoren dekrementiert. Jedes­ mal wenn ein Zähler null erreicht, wird der entsprechende Bitge­ nerator-Zustand gelöscht (beispielsweise der MPS-Zähler, der R2(2) Zähler und LPS sowie der Zähler für einen langen Durch­ laufzählwert werden gelöscht). Da ein Löschen vorkommen kann, selbst wenn ein ganz bestimmter Bitgenerator nicht freigegeben wird, gibt es keine Schwierigkeiten mit verbrauchten Zählwerten.Separate bit generators are even suitable for use in connection with an implicit signaling. An implicit signaling for coding with a finite memory cher can be achieved in the following ways. Any bit generator has a counter that is the size of a queue address for example, has 9 bits if a queue is 512 in size is used. Every time a new code word of one bit generator is used, the counter with the maximum value loaded. Whenever a bit generator requests a code word, the counters are decremented for all bit generators. Each when a counter reaches zero, the corresponding bitge nerator state cleared (for example, the MPS counter, the R2 (2) counter and LPS as well as the counter for a long through run count are deleted). Since deletion can occur even if a very specific bit generator is not released there are no problems with used up counts.

Speicher-Initialisierung für jedes KontextfachMemory initialization for each context subject

In Fällen, wo ein Speicher für jedes Kontextfach eine Wahr­ scheinlichkeits-Bewertungsinformation erhält, kann eine zusätz­ liche Speicherbandbreite gefordert werden, um den Decodierer (z. B. den Speicher) sehr schnell zu initialisieren. Ein schnelles Initialisieren des Decodierers kann ein Problem sein, wenn der Decodierer viele Kontexte hat, und sie alle gelöscht werden müs­ sen. Wenn der Decodierer viele Kontexte (1K oder mehr) unter­ stützt und der Speicher nicht global gelöscht werden kann, würde eine unannehmbare große Zahl von Taktzyklen erforderlich sein, um den Speicher zu löschen. In cases where a memory is true for each context subject probability evaluation information, an additional memory bandwidth required to the decoder (e.g. the memory) to initialize very quickly. A quick one Initializing the decoder can be a problem if the Decoder has many contexts and they all need to be deleted sen. If the decoder has many contexts (1K or more) under supports and the memory could not be deleted globally an unacceptable large number of clock cycles may be required to to clear the memory.  

Um Kontexte schnell zu löschen, verwenden einige Ausführungs­ formen der Erfindung ein zusätzliches Bit, das hier als das ini­ tialisierte Zustandsbit bezeichnet wird, das mit jedem Kontext gespeichert wird. Folglich wird ein zusätzliches Bit in dem PEM-Zustand (z. B. 8 Bits) für jeden Kontext gespeichert.To quickly delete contexts, use some execution form the invention an additional bit, which here as the ini tialized status bit is referred to that with any context is saved. As a result, an additional bit in the PEM state (e.g. 8 bits) saved for each context.

Der Speicher für jedes Kontextfach und die Initialisierungs-Steuer­ logik sind in Fig. 23 dargestellt. In Fig. 23 ist ein Kon­ textspeicher 2401 mit einem Register 2402 verbunden. In einer Ausführungsform weist das Register 2402 ein eins Bit Register auf, welches den aktuellen richtigen Zustand für das initiali­ sierte Zustandsfach anzeigt. Das Register 2402 ist mit einem Eingang einer XOR-Logik 2403 verbunden. Ein anderer Eingang an der XOR-Logik 2403 ist mit einem Ausgang gespeichert der mit 2401 verbunden ist. Der Ausgang der XOR-Logik 2403 ist das gül­ tige Signal und mit einem Eingang einer Steuerlogik 2404 verbun­ den. Andere Eingänge der Steuerlogik 2404 sind mit dem Ausgang des Zählers 2405 und dem nächsten Kontextfachsignal verbunden. Der Ausgang der Steuerlogik 2404 ist mit Wähleingängen von MUXs 2406 bis 2407 und mit einem Eingang eines Zählers 2405 verbun­ den. Ein anderer Ausgang der Steuerlogik 2404 ist mit dem Wähl­ eingang von MUX 2408 verbunden. Die Eingänge von MUX 2406 sind mit dem Ausgang eines Zählers 2405 und der Kontextfach-Anzeige verbunden. Der Ausgang von MUX 2406 ist mit dem Speicher 2401 verbunden. Die Eingänge von MUX 2407 sind mit den neuen PEM-Zu­ stand und Null verbunden. Der Ausgang von MUX 2407 ist mit Ein­ gang des Speichers 2401 und der anfängliche PEM-Zustand ist mit dem Eingang von MUX 2408 verbunden. Der Ausgang von MUX 2408 ist das PEM-Zustands-Ausgangssignal.The memory for each context bin and the initialization control logic are shown in FIG. 23. In Fig. 23, a text memory 2401 Kon is connected to a register 2402nd In one embodiment, register 2402 has a one bit register that indicates the current correct state for the initialized state compartment. Register 2402 is connected to an input of XOR logic 2403 . Another input on XOR logic 2403 is stored with an output connected to 2401. The output of the XOR logic 2403 is the valid signal and connected to an input of a control logic 2404 . Other inputs to control logic 2404 are connected to the output of counter 2405 and the next context bin signal. The output of control logic 2404 is connected to dial inputs from MUXs 2406 to 2407 and to an input of a counter 2405 . Another output of control logic 2404 is connected to the dial input of MUX 2408 . The inputs of MUX 2406 are connected to the output of a counter 2405 and the context tray display. The output of MUX 2406 is connected to memory 2401 . The inputs of MUX 2407 are connected to the new PEM status and zero. The output of MUX 2407 is connected to an input of memory 2401 and the initial PEM state is connected to the input of MUX 2408 . The output of MUX 2408 is the PEM state output signal.

Der Wert im Register 2402 vervollständigt jede Decodieropera­ tion (d. h. jeder Satz, nicht jedes decodierte Bit). Die XOR-Lo­ gik 2403 vergleicht die Gültigkeit der zugegriffenen Speicher­ stelle mit dem Registerwert, um zu bestimmen, ob die zugegriffe­ ne Speicherstelle für diese Decodieroperation gültig ist. Dies wird mit Hilfe der XOR-Logik 2403 erreicht, um das initialisier­ te Zustandsbit zu dem richtigen Zustand im Register 2402 paßt. Wenn Daten im Speicher 2401 nicht gültig sind, dann bewirkt die Steuerlogik 2404, daß die Daten bei dem Zustand an der Codierlo­ gik zu ignorieren sind und daß statt dessen der anfängliche PEM-Zustand zu verwenden ist. Dies wird mit Hilfe von MUX 2403 er­ reicht. Wenn ein neuer PEM-Zustand in den Speicher geschrieben wird, wird das initialisierte Bit auf den aktuellen Wert des Re­ gisters gebracht, so daß es als gültig betrachtet wird, wenn wieder zugegriffen wird.The value in register 2402 completes every decode operation (ie, every set, not every decoded bit). The XOR logic 2403 compares the validity of the accessed location with the register value to determine whether the accessed location is valid for this decoding operation. This is accomplished using XOR logic 2403 to match the initialized status bit to the correct status in register 2402 . If data in memory 2401 is not valid, control logic 2404 causes the data to be ignored in the state at the coding logic and the initial PEM state to be used instead. This is achieved with the help of MUX 2403 . When a new PEM state is written into memory, the initialized bit is brought up to the current value of the register so that it is considered valid when it is accessed again.

Jeder Kontextfach-Speichereintrag muß ein initialisiertes Zu­ standsbit sein, das auf den aktuellen Wert des Registers ge­ bracht ist, bevor eine andere Decodieroperation beginnen kann. Der Zähler 2405 durchläuft alle Speicherstellen, um sicherzu­ stellen, daß sie initialisiert sind. Wenn jedoch ein Kontextfach verwendet wird, aber dessen PEM-Zustand nicht aktualisiert ist, kann der nicht-benutzte Schreizyklus verwendet werden, um die Speicherstelle, auf die in dem Zähler 2405 gezeigt worden ist, zu testen oder zu aktualisieren. Nachdem eine Decodieroperation beendet ist, werden, wenn der Zähler 2405 den Maximalwert nicht erreicht hat, die restlichen Kontexte initialisiert, bevor die nächste Operation beginnt. Die folgende Logik wird verwendet, um eine Operation zu steuern:Each context bin memory entry must be an initialized state bit that is brought up to the current value of the register before another decoding operation can begin. Counter 2405 cycles through all of the memory locations to ensure that they are initialized. However, if a context bin is used but its PEM state is not updated, the unused estimation cycle can be used to test or update the memory location pointed to by counter 2405 . After a decode operation is completed, if counter 2405 has not reached the maximum value, the remaining contexts are initialized before the next operation begins. The following logic is used to control an operation:

PEM mit schneller AdaptionPEM with fast adaptation

Der in der vorliegenden Erfindung verwendete PEM kann ein Adap­ tionsschema enthalten, um eine schnellere Adaption unabhängig von der verfügbaren Datenmenge zu ermöglichen. Vorliegende Erfin­ dung kann das Decodieren ermöglichen, um anfangs schneller zu adaptieren und um langsamer zu adaptieren, wenn mehr Daten ver­ fügbar sind, und zwar als eine Einrichtung, um einen genaueren Vorschlag bzw. Schätzwert zu schaffen. Ferner kann der PEM in einer feldprogrammierbaren Wörteranordnung (FPGA) zu oder einer ASIC-Implementierung einer PEM-Zustandstabelle/Einrichtung fest­ gelegt sein.The PEM used in the present invention can be an Adap tion scheme included for faster adaptation independently of the amount of data available. Present inven dung can enable decoding to start faster adapt and to adapt more slowly when more data ver are available as a facility to be more precise To create a proposal or an estimate. Furthermore, the PEM in a field programmable word arrangement (FPGA) to or a ASIC implementation of a PEM state table / facility be laid.

Die nachstehenden Tabellen 20 bis 25 beschreiben eine Anzahl von Wahrscheinlichkeitsbewertungszustandseinrichtungen. Einige Tabellen benutzen nicht R3 Codes oder benutzen nicht lange Co­ des, um die Hardwarekosten zu verringern. Alle Tabellen, außer der Tabelle 20 verwenden spezielle schnelle "Adaptier"-Zustände, die verwendet werden, um bei Kodierstart schnell zu adaptieren, bis das erste LPS vorkommt. Diese schnellen Adaptionszustände sind initialisiert in den Tabellen dargestellt. Beispielsweise ist in Tabelle 21, wenn ein Decodieren beginnt, der aktuelle Zu­ stand ein Zustand 0. Wenn ein MPS vorkommt, geht der Decodierer auf Zustand 35 über. Solange MPSs vorkommen, geht der Decodierer von dem Zustand 35 aus, schließlich geht er auf den Zustand 28 über. Wenn zu irgendeinem Zeitpunkt ein LPS vorkommt, geht der Decodierer ausgehend von den schnellen Adaptierzuständen auf einen Zustand über, welcher den korrekten Wahrscheinlichkeitszu­ stand für die Daten darstellt, die insoweit erhalten worden sind.Tables 20 to 25 below describe a number of probability assessment state facilities. Some Tables do not use R3 codes or do not use co for long to reduce hardware costs. All tables except of Table 20 use special fast "adapt" states,  which are used to adapt quickly when coding starts, until the first LPS occurs. These fast adaptation states are shown initialized in the tables. For example in Table 21, when decoding begins, is the current Zu was a state 0. If an MPS occurs, the decoder goes to state 35 above. The decoder goes as long as MPSs occur from state 35, finally it goes to state 28 about. If there is an LPS at any time, it will go Decoder based on the fast adaptation states a state that indicates the correct probability represents the data received so far are.

Für jede Tabelle geht, nachdem eine bestimmte Zahl MPSs erhal­ ten worden ist, der Decodierer von schnellen Adaptierzuständen aus. In der gewünschten Ausführungsform gibt es, da die schnel­ len Adaptierzustände angeregt worden sind, keinen Mechanismus, um auf diese zurückzugehen, außer der Codierprozeß wird wieder gestartet. In anderen Ausführungsformen kann die Zustandstabelle entsprechend ausgelegt werden, um diese schnellen Adaptierzu­ stände wieder einzugeben, um eine schnellere Adaption zuzulas­ sen. Bei der Erfindung ist es für den Decodierer möglich, schneller die mehr versetzten Codes zu erreichen, um dadurch möglicherweise eine verbesserte Kompression zu gewinnen. Die schnelle Adaption kann für eine ganz bestimmte Tabelle durch Än­ dern des Tabelleneintrags für einen aktuellen Zustand 0 besei­ tigt werden, so daß die Tabelle nur auf einen Zustand nach oben oder nach unten in Abhängigkeit von den eingegebenen Daten über­ geht.For each table goes after a certain number of MPSs are received has been the decoder of fast adaptation states out. In the desired embodiment there is because the quick len adaptation states have been stimulated, no mechanism, to go back to this unless the coding process is back started. In other embodiments, the state table be designed accordingly in order to adapt these rapidly to be entered again to allow a faster adaptation sen. In the invention, it is possible for the decoder to to reach the more staggered codes faster, thereby possibly gain improved compression. The quick adaption for a specific table can be done by changing of the table entry for a current state 0 be made so that the table only goes up one state or down depending on the data entered goes.

Für alle Tabellen sind die Daten für jeden Zustand der Code für diesen Zustand der nächste Zustand bei einem positiven aktuellen Wert und der nächste Zustand bei einem negativen aktuellen Wert (unten). Sternchen zeigen Zustände an, bei welchen das MPS auf einen negativen aktuellen Wert geändert werden muß. For all tables, the data for each state is the code for this state is the next state with a positive current one Value and the next state if the current value is negative (below). Asterisks indicate conditions in which the MPS appears a negative current value must be changed.  

Tabelle 20 Table 20

Tabelle 21 Table 21

Tabelle 22 Table 22

Tabelle 23 Table 23

Tabelle 24 Table 24

Tabelle 25 Table 25

Ein Addieren einer schnellen Addition zu einer Wahrscheinlich­ keitsbewegung hilft nur bei dem Codierstart. Andere Methoden können angewendet werden, um eine Adaption während des Codierens zu verbessern, wenn die statistischen Wert eines Kontextfaches sich schneller ändern als die vorher beschriebenen PEM-Zustands­ tabellen folgen können.Adding a quick addition to a probable Movement only helps when coding starts. Other methods can be applied to an adaptation during coding improve when the statistical value of a contextual subject change faster than the previously described PEM states tables can follow.

Eine Methode, um eine schnelle Adaption während des Codierens zu erhalten, besteht darin, einen Beschleunigungsterm zu dem ak­ tuellen PEM-Zustandswert hinzuzufügen. Diese Beschleunigung könnte in einer PEM-Zustandstabelle untergebracht sein, indem jeder Code eine konstante Anzahl Mal (z. B. 8) wiederholt wird. Dann kann ein Beschleunigungsterm M (z. B. eine positive ganze Zahl) hinzugefügt oder von dem augenblicklichen Zustand, wenn er aktualisiert ist, subtrahiert werden. Wenn M 1 ist, arbeitet das System genauso wie eins ohne eine Beschleunigung und es kommt zu der langsamsten Adaption. Wenn M größer als 1 ist, kommt es zu einer schnelleren Adaption. Anfangs kann M auf ir­ gendeinen Wert größer als 1 gesetzt werden, um anfangs eine schnelle Adaption zu schaffen.A method for quick adaptation during coding to obtain an acceleration term to the ak add the current PEM state value. This acceleration could be placed in a PEM state table by each code is repeated a constant number of times (e.g. 8). Then an acceleration term M (e.g. a positive whole Number) added or from the current state when it updated, subtracted. If M is 1, work the system just like one without an acceleration and it comes to the slowest adaptation. If M is greater than 1, there is a faster adaptation. Initially, M can refer to ir set a value greater than 1 to initially one to create fast adaptation.

Eine Methode der Erfindung, den Wert von M zu aktualisieren, basiert auf der Anzahl aufeinanderfolgender Codewörter. Wenn beispielsweise eine vorherbestimmte Anzahl Codewörter nacheinan­ der aufgetreten ist, dann wird der Wert von M erhöht. Wenn bei­ spielsweise vier aufeinanderfolgende Codewörter "0" "0" "0" "0" oder "1N" "1N" "1N" "1N" sind, dann wird der Wert von M erhöht. Da­ fegen kann ein Schaltmuster zwischen "0" und "1N" Codewörtern verwendet werden, um den Wert von M zu erniedrigen. Wenn bei­ spielsweise vier aufeinanderfolgende Codewörter "0" "1N" "0" "1N" oder "1N" "0" "1N" "0" sind, dann wird der Wert von M erniedrigt.One method of the invention to update the value of M is based on the number of successive code words. If for example, a predetermined number of code words in succession that has occurred, the value of M is increased. If at for example four successive code words "0" "0" "0" "0" or "1N" "1N" "1N" "1N", then the value of M is increased. There can sweep a switching pattern between "0" and "1N" code words used to decrease the value of M. If at for example four successive code words "0" "1N" "0" "1N" or "1N" "0" "1N" "0", the value of M is decreased.

Bei einem anderen Beschleunigungsverfahren werden Zustandsta­ bellen verwendet, in welchen jeder Code S-mal wiederholt wird, wobei S eine positive ganze Zahl ist. S ist ein inverser Be­ schleunigungsparameter. Wenn S eins ist, ist die Adaption schnell, und wenn S größer ist, wird die Adaption langsamer. Der Wert von S kann anfangs auf 1 eingestellt werden, um anfangs eine schnelle Adaption zu erhalten. Mit Hilfe eines ähnlichen Verfahrens eines der vorstehend beschriebenen kann der Wert von S aktualisiert werden, wenn vier aufeinanderfolgende Codeworte "0" "0" "0" "0" oder "1N" "1N" "1N" "1N" sind. In einem solchen Fall wird der Wert von S erniedrigt. Im Gegensatz hierzu wird, wenn vier aufeinanderfolgende Codeworte "0" "1N" "0" "1N" oder "1N" "0" "1N" "0" sind, der Wert von S erhöht.In another acceleration method, state states barking in which each code is repeated S times, where S is a positive integer. S is an inverse Be acceleration parameters. If S is one, it is adaptation  fast, and if S is larger, the adaptation slows down. Of the The value of S can initially be set to 1 to initially to get a quick adaptation. With the help of a similar one Method of any of the above may have the value of S be updated when four consecutive code words "0" "0" "0" "0" or "1N" "1N" "1N" "1N". In one In this case, the value of S is reduced. In contrast, if four successive code words "0" "1N" "0" "1N" or "1N" "0" "1N" "0", the value of S increases.

Die Definition von aufeinanderfolgenden Codeworten kann mehrere Bedeutungen habe. In einem "Kontext"-("by context"-)System kön­ nen aufeinanderfolgende Codeworte auf aufeinanderfolgende Code­ worte in einem Kontextfach hinweisen. In einem "Wahrscheinlich­ keit"-System können aufeinanderfolgende Codeworte auf aufeinan­ derfolgende Codeworte in einer Wahrscheinlichkeitsklasse hinwei­ sen. Andererseits können in jedem System aufeinanderfolgende Co­ deworte auf Codeworte global hinweisen (ohne Rücksicht auf ein Kontextfach oder eine Wahrscheinlichkeitsklasse). Für diese drei Beispiel und die Speicherbits, die erforderlich sind, um eine Codewörter-Historie zu erhalten, 3× Anzahl von Kontextfächern, 3× Anzahl von Wahrscheinlichkeitsklassen bzw. 3. Ein Aufrech­ terhalten einer Beschleunigung für jedes Kontextfach kann die beste Adaption schaffen. Da ein schlechtes Verfolgen oft auf eine globale Änderung in den uncodierten Daten zurückzuführen ist, kann ein globales Bestimmen einer Beschleunigung auch eine gute Adaption schaffen.The definition of successive code words can be several Have meanings. In a "context" system, successive code words on successive code indicate words in a context subject. In a "Probably speed "system can consecutive code words on each other the following code words in a probability class sen. On the other hand, successive Co dewords to code words globally (regardless of a Context subject or a probability class). For these three Example and the memory bits required to make one Obtain code word history, 3 × number of context subjects, 3 × number of probability classes or 3. One offsetting The acceleration can be maintained for each context subject create the best adaptation. Because bad tracking often occurs attributed to a global change in the uncoded data global determination of an acceleration can also be a create good adaptation.

System-AnwendungenSystem applications

Ein Erfolg irgendeines Kompressionssystems besteht darin, Spei­ cheranforderungen für einen Datensatz zu verringern. Das paral­ lele System der Erfindung kann für eine Anwendung als Ersatz dienen, die laufend durch ein verlustfreies Codiersystem vollge­ füllt worden ist, und kann bei Systemen angewendet werden, die mit Ton, Text, Datenbasen, Computer oder anderen digitalen Da­ ten, Signalen oder Symbolen arbeiten. Beispielsweise schließen verlustfreie Codiersysteme eine Faksimile-Kompression, eine Da­ tenbasis-Kompression, eine Kompression von grafischen Bitmap-Bildern und eine Kompression von Transformations-Koeffizienten in Bildkompressions-Standards, wie JPEG und MPEG ein. Die Erfin­ dung ermöglicht eine kleine effiziente Hardware-Implementierung und relativ schnelle Software-Implementierung, so daß es dadurch eine gute Wahl selbst für Anwendungen gibt, die keine hohe Ge­ schwindigkeit erfordern.One success of any compression system is Spei reduce the requirements for a record. The paral The system of the invention can be used as a replacement serve that continuously through a lossless coding system has been filled, and can be applied to systems that with sound, text, databases, computers or other digital data signals, or symbols. For example, close  lossless coding systems a facsimile compression, a da ten basis compression, a compression of graphic bitmap images and compression of transformation coefficients in image compression standards such as JPEG and MPEG. The Erfin dung enables a small efficient hardware implementation and relatively quick software implementation so it does a good choice even for applications that do not have high Ge require speed.

Der tatsächliche Vorteil, den die Erfindung gegenüber dem Stand der Technik hat, ist die Möglichkeit eines Betriebs mit sehr ho­ hen Geschwindigkeit, insbesondere beim Decodieren. Auf diese Weise können mit Hilfe der Erfindung kostspielige hochschnelle Kanäle voll genutzt werden, wie hochschnelle Computernetze, Sa­ telliten und terrestriche Funkkanäle. Fig. 28 stellt ein derarti­ ges System dar, bei welchem Funkdaten oder ein hochschnelles Computernetz Daten an einen Decodiersystem 2801 liefert, welches die Daten paralle decodiert, um Ausgangsdaten zu erzeugen. Eine aktuelle Hardware-Entropie (wie der Q-Coder) würden den Durch­ satz dieser Systeme verlangsamen. Alle diese Systeme sind bei hohen Kosten so ausgelegt, eine hohe Bandbreite zu haben. Es ist kontraproduktiv, einen Decoder mit langsamen Durchgang zu haben. Das parallel arbeitende System dem Erfindung paßt nicht nur diese hohen Bandbreiten an, sondern es erhöht tatsächlich die effektive Bandbreite, da die Daten in komprimierter Form über­ tragen werden können.The actual advantage that the invention has over the prior art is the ability to operate at very high speeds, particularly when decoding. In this way, expensive high-speed channels, such as high-speed computer networks, satellites and terrestrial radio channels, can be fully used with the aid of the invention. Fig. 28 illustrates such a system in which radio data or a high-speed computer network provides data to a decoding system 2801 , which decodes the data in parallel to produce output data. Current hardware entropy (like the Q-Coder) would slow the throughput of these systems. All of these systems are designed to have a high bandwidth at high cost. It is counterproductive to have a slow pass decoder. The parallel system of the invention not only adapts these high bandwidths, but actually increases the effective bandwidth since the data can be transmitted in a compressed form.

Das parallel arbeitende System der Erfindung ist auch anwend­ bar, um eine effektive Bandbreite außerhalb mäßig schnellen Ka­ nälen, wie ISDN, CD-ROM und SCSI zu erhalten. Ein derartiges Bandbreiten-Anpassungssystem ist in Fig. 28 dargestellt, bei wel­ chem Daten von Quellen, wie ein DC-ROM, Ethernet, einem schmalen Computer Standard-Interface (SCSI) oder einer anderen ähnlichen Quelle werden an ein Decodiersystem 2901 angekoppelt, welches die Daten empfängt und decodiert, um ein Ausgangssignal zu er­ zeugen. Diese Kanäle sind noch schneller als einige aktuelle Co­ dierer. Oft werden diese Kanäle verwendet, um eine Datenquelle zu bedienen, die mehr Bandbreite erfordert als der Kanal hat, wie ein Realzeit-Video oder auf Computer basierende Multimedien-Systeme. Das System der Erfindung kann die Rolle einer Bandbrei­ ten-Anpassung durchführen.The parallel system of the invention is also applicable to obtain effective bandwidth outside moderately fast channels such as ISDN, CD-ROM and SCSI. Such a bandwidth adjustment system is shown in Fig. 28, in which data from sources such as DC-ROM, Ethernet, a narrow computer standard interface (SCSI), or other similar source are coupled to a decoding system 2901 which the Receives and decodes data to produce an output signal. These channels are even faster than some current encoders. These channels are often used to serve a data source that requires more bandwidth than the channel, such as real-time video or computer-based multimedia systems. The system of the invention can perform the role of bandwidth adjustment.

Das System der Erfindung ist eine ausgezeichnete Wahl für einen Entropie-Codiererteil eines Realzeit-Videosystems ähnlich dem Hochauflösungs-Fernsehsystem (HDTV) und den MPEG-Video-Stan­ dards. Ein derartiges System ist in Fig. 29 dargestellt. In Fig. 29 weist das Realzeit-Videosystem ein Decodiersystem 3001 auf, welches mit komprimierten Bilddaten arbeitet. Das System 3001 decodiert die Daten und gibt sie an einen verlustbehafteten Decodierer 3002 ab. Der verlustbehaftete Decodierer könnte der Transformations-Farbumsetz- und Subsampling-Teil eines HDTV- oder MPEG-Decodierers. Der Monitor 3003 kann ein Fernseh- oder Video-Monitor sein.The system of the invention is an excellent choice for an entropy encoder portion of a real time video system similar to the high definition television (HDTV) system and the MPEG video standards. Such a system is shown in FIG. 29. In Fig. 29, the real-time video system has a decoding system 3001 which works with compressed image data. The system 3001 decodes the data and delivers it to a lossy decoder 3002 . The lossy decoder could be the transform color conversion and subsampling part of an HDTV or MPEG decoder. Monitor 3003 can be a television or video monitor.

Folglich sind ein Verfahren und eine Einrichtung zum parallelen Decodieren und Codieren von Daten beschrieben worden.Consequently, a method and a device for parallel Decoding and encoding of data have been described.

Claims (121)

1. Verfahren zum Codieren eines Datenstroms, welches die Schritte aufweist:
Erzeugen von den Datenstrom darstellender Codewort-Information entsprechend dem Datenstrom, wobei die Codewort-Information eine Anzahl Codewörter aufweist und wobei ferner mehrere Code­ wörter aus Daten des parallel zu verarbeitenden Datenstroms er­ zeugt werden, und
Erzeugen von codierten Daten entsprechend der Codewort-Informa­ tion, wobei der Schritte, Erzeugen codierter Daten, jeweils die Anzahl Codewörter in der auszugebenden Codewort-Information aufweist, so daß die Reihenfolge von auszugebenden Codewörtern auf dem Beginn des Teils des durch jedes Codewort dargestellten Datenstroms basiert.
1. A method for coding a data stream, which comprises the steps:
Generating code word information representing the data stream corresponding to the data stream, the code word information comprising a number of code words and furthermore a plurality of code words being generated from data of the data stream to be processed in parallel, and
Generating coded data according to the codeword information, the step of generating coded data each having the number of codewords in the codeword information to be output so that the order of the codewords to be output is based on the beginning of the part of the data stream represented by each codeword .
2. Verfahren nach Anspruch 1, bei welchem jedes der Anzahl Co­ dewörter am Anfang jedes Durchlaufs ausgegeben wird.2. The method of claim 1, wherein each of the number of Co words is output at the beginning of each run. 3. Verfahren nach Anspruch 1, bei welchem der Schritt, Erzeugen von codierten Daten ein Kombinieren von Codewörtern variabler Länge in Datenstrukturen fester Länge aufweist.3. The method of claim 1, wherein the step of generating of coded data combining variable codewords Has length in data structures of fixed length. 4. Verfahren nach Anspruch 3, bei welchem jede der Datenstruk­ turen fester Länge ein verschachteltes Wort aufweist.4. The method of claim 3, wherein each of the data structure doors of fixed length has a nested word. 5. Verfahren nach Anspruch 4, bei welchem codierte Daten ausge­ geben werden, so daß Codewörter in decodierter Reihenfolge ge­ ordnet sind.5. The method of claim 4, wherein encoded data out are given so that code words in decoded order are arranged. 6. Verfahren nach Anspruch 1, bei welchem Codewörter geordnet werden. 6. The method of claim 1, in which code words are ordered will.   7. Verfahren nach Anspruch 1, bei welchem der Schritt, Erzeugen von Codewort-Information, die Schritte aufweist:
Erzeugen des Wahrscheinlichkeitszustandes eines Codewortes; Auswählen eines Biterzeugungscodes, der auf dem Wahrscheinlich­ keitszustand basiert, und
Zugreifen auf einen Speicher, um einen der Wahrscheinlichkeits­ klasse zugeordneten Durchlaufzählwert zu erhalten.
7. The method of claim 1, wherein the step of generating codeword information comprises the steps of:
Generating the probability state of a code word; Selecting a bit generation code based on the probability state and
Access memory to obtain a pass count associated with the probability class.
8. Codiersystem zum Codieren eines Datenstroms, mit einem Codierer, der zum Aufnehmen des Datenstroms vorgesehen ist, um Codewort-Information einschließlich Codewörtern zu er­ zeugen, und wobei ferner mehrere Codewörter von dem Codierer aus parallel zu verarbeitenden Daten erzeugt werden, und einer Umordnungseinheit, die mit dem Codierer verbunden ist, um codierte Daten entsprechend der Codewort-Information zu erzeu­ gen, wobei die Umordnungseinheit Codewörter, die von dem Codie­ rer erzeugt worden sind, in einer Decodierer-Reihenfolge umord­ net, so daß die Reihenfolge von auszugebenden Codewörtern auf dem Beginn eines Teils des durch jedes Codewort dargestellten Datenstroms basiert.8. Coding system for coding a data stream, with an encoder, which is provided for recording the data stream is to get code word information including code words testify, and further comprising a plurality of code words from the encoder are generated from data to be processed in parallel, and a reordering unit connected to the encoder to to generate encoded data according to the codeword information gene, the reordering code words derived from the code rer have been generated in a decoder order net, so that the order of code words to be output the beginning of part of that represented by each code word Data stream based. 9. Codiersystem nach Anspruch 7, bei welchem die Umordnungsein­ heit die Codewörter in einer solchem Weise speichert, um Code­ wortgröße anzuzeigen.The encoding system of claim 7, wherein the reordering is unit stores the code words in such a way to code word size. 10. Codiersystem nach Anspruch 9, bei welchem 1N Codewörter so umgeordnet werden, daß das höchstwertige "1" Bit die Länge je­ des Codeworts anzeigt.10. Coding system according to claim 9, wherein 1N code words so rearranged that the most significant "1" bit the length each of the code word. 11. Codiersystem nach Anspruch 8, bei welchem die Umordnungs­ einheit aufweist:
zumindest eine Durchlaufzähl-Umordnungseinheit, um jedes der Anzahl Codewörter in der Codewort-Information am Anfang jedes Durchlaufs zu erzeugen, und
zumindest eine Bitpackeinheit, um Codewörtervariabler Länge in Datenstrukturen fester Länge zu kombinieren.
11. Coding system according to claim 8, wherein the reordering unit comprises:
at least one pass count shuffling unit to generate each of the number of code words in the code word information at the beginning of each pass, and
at least one bit pack unit to combine variable length code words in fixed length data structures.
12. Codiersystem nach Anspruch 11, bei welchem jede der Daten­ strukturen fester Länge ein verschachteltes Wort aufweist.12. The encoding system of claim 11, wherein each of the data structures of fixed length has a nested word. 13. Codiersystem nach Anspruch 8, bei welchem die Umordnungs­ einheit die Codewörter ordnet.13. The coding system of claim 8, wherein the reordering unit arranges the code words. 14. Codiersystem nach Anspruch 13 mit einem Speicher, der mit der Umordnungseinheit verbunden ist, um Codewörter in einer Reihenfolge zu speichern.14. Coding system according to claim 13 with a memory which with the reordering unit is connected to code words in a Save order. 15. Codiersystem nach Anspruch 8, bei welchem der Codierer auf­ weist:
ein Kontextmodell;
einen Wahrscheinlichkeits-Bewertungsmodul, der mit dem Kontext­ modell verbunden ist, und
eine Bitgeneratorstruktur, die mit dem Wahrscheinlichkeits-Be­ wertungsmodul verbunden ist, um ein Codewort entsprechend den Datenstrom zu erzeugen.
15. The coding system of claim 8, wherein the encoder comprises:
a contextual model;
a probability assessment module associated with the context model, and
a bit generator structure connected to the probability evaluation module to generate a code word corresponding to the data stream.
16. Codiersystem nach Anspruch 15, bei welchem der Codierer ferner einen Speicher aufweist, der eine Anzahl von Durchlauf­ zählwerten speichert, und bei welchem der Speicher mit Hilfe von Wahrscheinlichkeitsklassen von der Wahrscheinlichkeits-Be­ wertungseinheit aus zugegriffen hat, um eine der Anzahl Durch­ laufzählwerte an dem Bitgenerator für ein Ausgeben als Teil der Codewort-Information vorzusehen.16. The coding system of claim 15, wherein the encoder further comprises a memory that has a number of passes saves count values, and with which the memory with the help of probability classes from the probability rating unit of evaluation has been accessed by one of the number Run counts on the bit generator for output as part of the Provide code word information. 17. Codiersystem nach Anspruch 15, bei welchem die Bitgenera­ tor-Struktur aufweist:
einen Bitgenerator, um Codewort-Information entsprechend einem Index und einer MPS/LPS-Anzeige zu schaffen, und
einen mit dem Bitgenerator verbundenen Speicher, um einen Durchlaufzählwert an dem Bitgenerator vorzusehen, wobei der Bitgenerator den Speicher basierend auf dem Index liest und eine Bitgeneration basierend auf Daten durchführt, die aus dem Lesen des Speichers erhalten worden sind.
17. The coding system according to claim 15, wherein the bit generator structure comprises:
a bit generator to provide code word information corresponding to an index and an MPS / LPS display, and
a memory connected to the bit generator for providing a pass count to the bit generator, the bit generator reading the memory based on the index and performing bit generation based on data obtained from reading the memory.
18. Codiersystem nach Anspruch 17, bei welchem die Codewort-In­ formation ein erstes Signal, das anzeigt, ob die MPS/LPS-Anzei­ ge den Start eines Durchlaufs aufweist, ein zweites Signal, das anzeigt, ob die MPS/LPS-Anzeige das Ende eines Durchlaufs auf­ weist, und ein ausgegebenes Codewort aufweist.18. Coding system according to claim 17, wherein the codeword-in formation a first signal that indicates whether the MPS / LPS display ge has the start of a run, a second signal that indicates whether the MPS / LPS indicator indicates the end of a run points, and has an output code word. 19. Codiersystem nach Anspruch 11, bei welchem die Bitpack-Lo­ gik verschachtelte Wörter ordnet, um den codierten Datenstrom als verschachtelte Ströme zu erzeugen, die entsprechend einem N-ten vorherigen Codewort in jedem verschachtelten Wort jedes Strom geordnet sind.19. Coding system according to claim 11, wherein the Bitpack-Lo gik maps nested words to the encoded data stream as generating nested streams that correspond to one Nth previous code word in each nested word each Electricity are ordered. 20. Codiersystem nach Anspruch 11, bei welchem die Umordnungs­ einheit einen Snooper-Decodierer zum Auswählen verschachtelter Wörter aufweist, die in den Codestrom abgegeben worden sind.20. The coding system of claim 11, wherein the reordering a Snooper decoder to select nested ones Has words that have been delivered into the code stream. 21. Codiersystem nach Anspruch 20, bei welchem die Umordnungs­ einheit eine Anzahl Durchlaufzählwert-Umordnungseinheiten auf­ weist, die mit einer Anzahl Bitpackeinheiten verbunden sind, wobei jede der Anzahl Bitpackeinheiten verschachtelte Wörter erzeugt, und der Snooper-Codierer ein verschachteltes Wort aus der Anzahl verschachtelter Wörter als einen Ausgang in den Codestrom aufweist.21. The coding system of claim 20, wherein the reordering unit a number of run count reordering units points that are connected to a number of bit pack units, where each of the number of bit pack units nested words generated, and the Snooper encoder from a nested word the number of nested words as an exit into the Has code stream. 22. Codiersystem nach Anspruch 11, bei welchem die Codewort-In­ formation eine Zeitmarke enthält, und die Umordnungseinheit ferner Logik aufweist, um verschachtelte Worte basierend auf zugeordneten Zeitmarken abzugeben.22. Coding system according to claim 11, wherein the codeword-in formation contains a timestamp, and the reordering unit further comprises logic to interlace nested words to assign assigned time stamps. 23. Codiersystem nach Anspruch 22, bei welchem die Umordnungs­ einheit eine Anzahl Durchlaufzählwert-Umordnungseinheiten auf­ weist, die mit einer Anzahl Bitpackeinheiten verbunden sind, und bei welchem die Logik bewirkt, daß verschachtelte Worte ba­ sierend auf einer zugeordneten Zeitmarke abgegeben werden.23. The coding system of claim 22, wherein the reordering unit a number of run count reordering units points that are connected to a number of bit pack units, and where logic causes nested words ba based on an assigned time stamp. 24. Codiersystem nach Anspruch 23, bei welchem verschachtelte Worte basierend auf der ältesten Zeitmarke abgegeben werden.24. The encoding system of claim 23, wherein nested  Words are submitted based on the oldest timestamp. 25. Codiersystem nach Anspruch 11, bei welchem eine einzige Schlange Codewörter an eine Anzahl Bitpackeinheiten liefert, und bei welchem die Anzahl Bitpackeinheiten verschachtelte Wor­ te zum Ausgeben als Teil des Codestroms erzeugt.25. Encoding system according to claim 11, in which a single Queue delivers code words to a number of bit pack units, and where the number of bit pack units nested wor generated for output as part of the code stream. 26. Codiersystem nach Anspruch 25, bei welchem die einzige Schlange eine einzige Durchlaufzählwert-Umordnungseinheit ein­ schließt, und bei welcher Logik das nächste verschachtelte Wort zum Ausgeben als den Codestrom festlegt.26. The coding system of claim 25, wherein the only one Queued up a single run count reordering unit closes, and at what logic the next nested word set to output as the code stream. 27. Codiersystem nach Anspruch 11, bei welchem eine einzige Schlange Codewörter an eine einzige Bitpackeinheit liefert.27. The coding system of claim 11, wherein a single Queue provides code words to a single bit pack unit. 28. Codiersystem für ein Verwenden in einem Kompressionssystem mit einem Codierer zum Decodieren von Information, die von dem Codierer erzeugt worden ist, welches Codiersystem aufweist:
einen Codierer zum Erzeugen von Codewort-Information entspre­ chend Daten;
eine mit dem Codierer verbundene Umordnungseinheit, wobei die Umordnungseinheit einen codierten Datenstrom entsprechend der Codewort-Information erzeugt, die Umordnungseinheit eine Durch­ laufzählwert-Umordnungseinheit, um jedes Codewort am Anfang der Daten, die diesem entsprechen, anzuordnen, und eine Bitpackein­ heit aufweist, die vorgesehen ist, um Codewörter von der Durch­ laufzählwert-Umordnungseinheit zu erhalten, um Codewörter in eine Anzahl verschachtelter Worte fester Länge zu kombinieren und um die Anzahl verschachtelter Wörter fester Länge in einer von dem Decodierer geforderten Reihenfolge abzugeben.
28. Encoding system for use in a compression system with an encoder for decoding information generated by the encoder, which encoding system comprises:
an encoder for generating code word information corresponding to data;
a reordering unit connected to the encoder, the reordering unit generating an encoded data stream corresponding to the code word information, the reordering unit having a run count reordering unit to arrange each code word at the beginning of the data corresponding to it, and a bit pack unit provided is to obtain code words from the run count shuffling unit, to combine code words into a number of interleaved words of fixed length and to output the number of interleaved words of fixed length in an order required by the decoder.
29. Codiersystem nach Anspruch 28, bei welchem die Umordnungs­ einheit ferner einen Speicher aufweist, um Codewörter während des Umordnens zu speichern.29. The coding system of claim 28, wherein the reordering unit further comprises a memory for code words during of rearranging to save. 30. Codiersystem nach Anspruch 28, bei welchem der Codierer ferner ein Kontextmodell, einen Wahrscheinlichkeits-Bewertungs­ modul, der mit dem Kontext verbunden ist, und einen mit dem Wahrscheinlichkeits-Bewertungsmodul verbundenen Bitstromgenera­ tor aufweist.30. The coding system of claim 28, wherein the encoder  also a contextual model, a probability assessment module that is connected with the context and one with the Probability evaluation module connected bitstream genera gate has. 31. Codiersystem nach Anspruch 30, bei welchem die Durchlauf­ zählwert-Umordnungseinheit ferner aufweist:
einen ersten Speicher, um Codewörter zu speichern;
einen ersten Indikator und einen zweiten Indikator, um den er­ sten Speicher als eine Schlange zu adressieren, wobei der erste Indikator auf einen ersten Eintrag zeigt, der als ein Ausgang des ersten Speichers bestimmt worden ist, und der zweite Indi­ kator auf einen zweiten Eintrag zeigt, der als eine nächste verfügbare und nicht zugeordnete Speicherstelle in dem ersten Speicher bestimmt worden ist.
31. The coding system of claim 30, wherein the pass count shuffling unit further comprises:
a first memory for storing code words;
a first indicator and a second indicator to address the first memory as a queue, the first indicator pointing to a first entry determined as an output of the first memory and the second indicator pointing to a second entry which has been determined as a next available and unallocated location in the first memory.
32. Codiersystem nach Anspruch 31, mit einem Zeigerspeicher zum Speichern von Adresseninformation, die Stellen in dem ersten Speicher entspricht, der gegenwärtig zum Speichern von Codewör­ tern für jeden Index bestimmt worden ist.32. Coding system according to claim 31, with a pointer memory for Store address information, the digits in the first Corresponds to memory that is currently used to store codeword has been determined for each index. 33. Codiersystem nach Anspruch 32, bei welchem jeder Index eine Wahrscheinlichkeitsklasse anzeigt.33. The encoding system of claim 32, wherein each index is one Probability class. 34. Codiersystem nach Anspruch 32, bei welchem jeder Index zu­ mindest einen Kontext anzeigt.34. Encoding system according to claim 32, wherein each index to indicates at least one context. 35. Codiersystem nach Anspruch 28, bei welchem die Umordnungs­ einheit ferner eine Codewort-Speicher-Schlange zum Speichern von Codewörtern, einen Kopfzeiger, um zumindest ein Codewort für ein Ausgeben anzeigen, und einen Nachlaufzeiger aufweist, um zumindest eine Speicherstelle für ein Einsetzen von Codewörtern in die Codewortspeicher-Schlange anzuzeigen.35. Encoding system according to claim 28, wherein the reordering unit also a code word store queue for storage of code words, a head pointer to at least one code word for display an output and has a tracking pointer to at least one memory location for inserting code words to display in the code word store queue. 36. Codiersystem nach Anspruch 35, bei welchem jeder Codewort­ eintrag in die Codewort-Speicher-Schlange eine Gültigkeitsan­ zeige einschließt, und bei welchem ferner ein Codewort aus der Codewort-Speicher-Schlange abgegeben wird, wenn der Kopfspei­ cher die Adresse des Codeworts spezifiziert und die Gültig­ keitsanzeige für das Codewort dessen Gültigkeit anzeigt.36. Encoding system according to claim 35, wherein each code word entry in the code word storage queue  show includes, and in which also a code word from the Codeword memory queue is released when the head game specifies the address of the code word and the valid display for the code word shows its validity. 37. Codiersystem nach Anspruch 28, bei welchem die Bitpackein­ heit eine Bitpackungslogik aufweist, um Codewörter von der Um­ ordnungseinheit aufzunehmen und Codewörter in verschlüsselten Wörtern für eine Anzahl Ströme zu mischen.The coding system of claim 28, wherein the bit packs are one unit has bit-packing logic to separate code words from the order order unit and encoded codewords To mix words for a number of streams. 38. Codiersystem nach Anspruch 37, bei welchem die Bitpackungs-Logik ferner eine Anzahl Akkumulatoren und eine Anzahl Register aufweist, bei welcher jedes der Anzahl Register einem der An­ zahl Akkumulatoren und einem der Anzahl Ströme zugeordnet ist, wobei jedes Register zum Speichern eines verschachtelten Wortes für dessen zugeordneten Strom und jeder Akkumulator die nächste Stelle in den zugeordneten Registern zum Speichern eines ak­ tuellen Codeworts für den Strom anzeigt, so daß jedes Codewort für einen der Anzahl Ströme an den Inhalt des Registers ange­ hängt ist, das einem der Anzahl Ströme basierend auf dem Wert in dem zugeordneten Akkumulator, zugeordnet ist.38. Encoding system according to claim 37, wherein the bit-packing logic a number of accumulators and a number of registers , in which each of the number of registers one of the An number of accumulators and one is assigned to the number of currents, each register for storing a nested word for its assigned current and each accumulator the next one Place in the assigned registers for storing an ak indicates current code word for the stream, so that each code word for one of the number of streams attached to the contents of the register depends on one of the number of currents based on the value in the associated accumulator. 39. Codiersystem nach Anspruch 38, mit einer Schiebeeinheit, die mit der Anzahl Akkumulatoren verbunden ist, um Codewörter entsprechend zumindest einem Signal aus der Anzahl Akkumulato­ ren zu verschieben, wobei Codewörter zum Anhängen an Inhalte in einem der Anzahl Register verschoben werden, was auf dem Akku­ mulatorwert basiert, um Teile von zumindest zwei Codewörtern in jedes verschachtelte Wort zu packen.39. Coding system according to claim 38, with a sliding unit, which is associated with the number of accumulators to code words corresponding to at least one signal from the number of accumulators ren, whereby code words for appending to content in one of the number of registers is shifted to what's on the battery is based on parts of at least two code words in to pack every nested word. 40. Codiersystem nach Anspruch 37, mit einem Umordnungsspei­ cher, um verschachtelte Worte in einer durch den Decodierer be­ stimmten Reihenfolge zu speichern.40. Coding system according to claim 37, with a reordering to include nested words in one by the decoder agreed to save order. 41. Codiersystem nach Anspruch 40, mit einer Anzahl Zeiger, die einer Anzahl verschachtelter Datenströme entsprechen, wobei je­ der der Anzahl Zeiger eine Stelle in dem Umordnungsspeicher für das nächste verschachtelte Wort für jeden der Anzahl Ströme be­ stimmt.41. Encoding system according to claim 40, having a number of pointers correspond to a number of nested data streams, where each  the one number of pointers in the reorder memory for the next nested word for each of the number of streams Right. 42. Codiersystem nach Anspruch 28, mit einer Anzahl Durchlauf­ zählwert-Umordnungseinheiten, wobei jede der Durchlaufzählwert-Um­ ordnungseinheiten einem der codierten Datenströme zugeordnet ist, und ferner eine Anzahl Bitpackeinheiten zum Erzeugen ver­ schachtelter Wörter für jeden codierten Datenstrom und einen Decodierer aufweist, um die verschachtelten Wörter aus der An­ zahl Bitpackeinheiten als das codierte Ausgangssignal auszuwäh­ len.42. Coding system according to claim 28, with a number of passes count reordering units, each of the run count reordering order units assigned to one of the coded data streams and further a number of bit pack units to generate nested words for each encoded data stream and one Decoder has to get the nested words from the An Select bit pack units as the encoded output signal len. 43. Codiersystem nach Anspruch 28, mit einer Anzahl Durchlauf­ zählwert-Umordnungseinheiten, wobei jede der Durchlaufzählwert-Um­ ordnungseinheiten einem der codierten Datenströme zugeordnet ist, und eine Anzahl Codewörter und eine Zeitmarke erzeugt, die jedem der Anzahl Codewörter zugeordnet ist, und wobei ferner eine Anzahl Bitpackeinheiten zum Erzeugen von verschachtelten Wörtern für jeden codierten Datenstrom und eine Logik aufweist, um jedes der verschachtelten Wörter, basierend auf Zeitmarken von Codewörtern in jedem der verschachtelten Wörtern auszuwäh­ len.43. Coding system according to claim 28, with a number of passes count reordering units, each of the run count reordering order units assigned to one of the coded data streams and generates a number of code words and a time stamp that is associated with each of the number of code words, and further being a number of bit pack units to generate nested ones Words for each encoded data stream and logic, around each of the nested words based on timestamps of code words in each of the nested words len. 44. Codiersystem nach Anspruch 43, bei welchem die Logik das verschachtelte Wort auswählt, das ein Codewort mit der ältesten Zeitmarke enthält.44. Encoding system according to claim 43, wherein the logic selects nested word that is a code word with the oldest Includes timestamp. 45. Codiersystem nach Anspruch 28, bei welchem die Bitpackein­ heit eine Anzahl Bitpackeinheiten aufweist, die vorgesehen sind, um Codewörter aus einem einer Anzahl Ströme aufzunehmen, und ferner eine Logik aufweist, um verschachtelte Wörter für ein Ausgeben aus jedem der Anzahl Bitpackungseinheiten basie­ rend auf dem nächsten Strom auszuwählen.45. The encoding system of claim 28, wherein the bit packs are one unit has a number of bit pack units provided are to take codewords from one of a number of streams and further comprises logic to include nested words for outputting from each of the number of bit pack units rend to select on the next stream. 46. Codiersystem nach Anspruch 28, bei welchem die Umordnungs­ einheit ferner einen endlichen Speicher aufweist.46. Encoding system according to claim 28, wherein the reordering  unit also has a finite memory. 47. Codiersystem zum Verarbeiten von Daten, mit
einem Indexgenerator zum Erzeugen von Indizes auf der Basis der Daten, und
einer Zustandstabelle, die vorgesehen ist, um einen Wahrschein­ lichkeitsvoranschlag basierend auf den Indizes zu schaffen, wo­ bei die Zustandstabelle eine erste Anzahl Zustände und eine zweite Anzahl Zustände aufweist, wobei jeder der Zustände einem Code entspricht, und wobei ferner Übergänge zwischen verschie­ denen Codes, die der ersten Anzahl Zustände entsprechen, schnel­ ler auftreten, wenn zwischen den Zuständen in der ersten Anzahl Zustände übergegangen wird, als Zustände zwischen verschiedenen Codes, die der zweiten Gruppe Zustände entsprechen, wenn in der zweiten Anzahl Zustände übergegangen wird.
47. Coding system for processing data, with
an index generator for generating indexes based on the data, and
a state table which is provided to provide a probability estimate based on the indices, where the state table has a first number of states and a second number of states, each of the states corresponding to a code, and furthermore transitions between different codes, that correspond to the first number of states occur more quickly when transitioning between the states in the first number of states than states between different codes that correspond to the second group of states when transitioning in the second number of states.
48. Codiersystem nach Anspruch 47, bei welchem die erste Anzahl Zustände nur für eine vorherbestimmte Anzahl von Indizes ver­ wendet werden.48. Encoding system according to claim 47, wherein the first number Verify states only for a predetermined number of indexes be applied. 49. Codiersystem nach Anspruch 47, bei welchem die erste Anzahl Zustände nur für eine vorherbestimmte Anzahl von Indizes ver­ wendet werden, die anfangs die Zustandstabelle indexieren.49. Encoding system according to claim 47, wherein the first number Verify states only for a predetermined number of indexes are used, which initially index the state table. 50. Codiersystem nach Anspruch 47, bei welchem jeder der ersten Anzahl Zustände ein R2 Code zugeordnet ist.50. The encoding system of claim 47, wherein each of the first Number of states a R2 code is assigned. 51. Codiersystem nach Anspruch 48, bei welchem die erste Anzahl Zustände zumindest einen Übergang zu der zweiten Anzahl Zustän­ de einschließt, so daß die Zustandstabelle zu der zweiten An­ zahl Zuständen aus der ersten Anzahl Zustände nach der vorher­ bestimmten Anzahl von Indizes übergeht.51. Encoding system according to claim 48, wherein the first number States at least one transition to the second number of states de includes, so that the state table to the second to number of states from the first number of states after the previous one certain number of indexes. 52. Codiersystem nach Anspruch 47, bei welchem jede der ersten Anzahl Zustände einem verschiedenen Code zugeordnet ist. 52. The encoding system of claim 47, wherein each of the first Number of states is assigned to a different code.   53. Codiersystem nach Anspruch 47, bei welchem die Zustands­ tabelle von einem der ersten Anzahl Zustände auf einen der zweiten Anzahl Zustände entsprechend einem am wenigsten wahr­ scheinlichen Symbol übergeht.53. Encoding system according to claim 47, wherein the status table from one of the first number of states to one of the second number states corresponding to a least true apparent symbol. 54. Codiersystem nach Anspruch 47, bei welchem die Zustandsein­ richtung einen Zustand entsprechend einem wahrscheinlichsten Symbol erhöht.54. The encoding system of claim 47, wherein the states are towards a state most likely Symbol increased. 55. Codiersystem zum Verarbeiten von Daten, mit
einem Indexgenerator zum Erzeugen von Indizes auf der Basis der Daten, und
einer Zustandstabelle, die vorgesehen ist, um einen Wahrschein­ lichkeitsvoranschlag auf der Basis der Indizes zu schaffen, wo­ bei die Zustandstabelle eine Anzahl Zustände einschließt, wobei jeder der Zustände einem Code entspricht, und jeder Code in der Zustandstabelle eine vorherbestimmte Anzahl Mal wiederholt wird,
wobei ein Übergehen zwischen Zuständen der Zustandstabelle auf der Basis eines Beschleunigungsterms vorkommt, der modifizier­ bar ist, so daß eine erste Übergangsrate zwischen Zuständen während einer ersten Zeitperiode sich von einer zweiten Über­ gangsrate während einer zweiten Zeitperiode unterscheidet.
55. Coding system for processing data, with
an index generator for generating indexes based on the data, and
a state table provided to provide a probability estimate based on the indices, where the state table includes a number of states, each of the states corresponding to a code, and each code in the state table being repeated a predetermined number of times,
wherein a transition between states of the state table occurs based on an acceleration term that is modifiable so that a first transition rate between states during a first time period differs from a second transition rate during a second time period.
56. Codiersystem nach Anspruch 55, bei welchem aktualisierte Werte (updates) zu der Zustandstabelle ein Modifizieren des PEM-Zustands aufweisen, indem der Beschleunigungsterm inkremen­ tiert oder dekrementiert wird.56. Encoding system according to claim 55, wherein updated Values (updates) to the state table a modification of the Show PEM state by incrementing the acceleration term is decremented. 57. Codiersystem nach Anspruch 56, bei welchem keine adaptive Beschleunigung vorkommt, wenn der Beschleunigungsterm eine vor­ herbestimmte Zahl aufweist.57. Encoding system according to claim 56, in which no adaptive Acceleration occurs when the acceleration term occurs has a predetermined number. 58. Codiersystem nach Anspruch 56, bei welchem der Beschleuni­ gungsterm auf der Basis der Anzahl aufeinanderfolgender Code­ wörter aktualisiert wird. 58. Encoding system according to claim 56, wherein the acceleration gung term based on the number of consecutive codes words is updated.   59. Codiersystem nach Anspruch 58, bei welchem aufeinanderfol­ gende Codewörter aufeinanderfolgende Codewörter in einem Kon­ text aufweisen.59. Coding system according to claim 58, in which successive consecutive codewords in a con have text. 60. Codiersystem nach Anspruch 58, bei welchem aufeinanderfol­ gende Codewörter aufeinanderfolgende Codewörter in einer Wahr­ scheinlichkeitsklasse aufweisen.60. Coding system according to claim 58, in which successive code words consecutive code words in a true have probability class. 61. Codiersystem nach Anspruch 56, bei welchem der Beschleuni­ gungsterm basierend auf der Anzahl sich ändernder Codewörter aktualisiert wird.61. Encoding system according to claim 56, wherein the acceleration gung term based on the number of changing code words is updated. 62. Entropie-Decodierer zum Decodieren eines Datenstroms einer Anzahl von Codewörtern, mit
einer Anzahl Bitstromgeneratoren zum Aufnehmen des Datenstroms, und
einer Zustandstabelle, die mit der Anzahl Bitstromgeneratoren verbunden ist, um einen Wahrscheinlichkeitsvoranschlag an der Anzahl Bitstromgeneratoren zu schaffen, wobei die Anzahl Bit­ stromgeneratoren ein decodiertes Ergebnis für jedes Codewort in dem Datenstrom entsprechend dem Wahrscheinlichkeitsvoranschlag mit Hilfe eines Rn(k) Codes für mehrere Werte von n erzeugt, und wobei ferner die Zustandstabelle eine erste Anzahl Zustände und eine zweite Anzahl Zustände einschließt, wobei Übergänge zwi­ schen verschiedenen Codes in der ersten Anzahl Zustände schneller vorkommen, wenn ein Übergang in der ersten Anzahl Zu­ stände erfolgt, als Übergänge zwischen Codes, wenn in der zwei­ ten Anzahl Zustände übergegangen wird.
62. Entropy decoder for decoding a data stream of a number of code words, with
a number of bit stream generators for receiving the data stream, and
a state table associated with the number of bit stream generators to provide a probability estimate on the number of bit stream generators, the number of bit stream generators providing a decoded result for each code word in the data stream corresponding to the probability estimate using an Rn (k) code for multiple values of n, and the state table further includes a first number of states and a second number of states, with transitions between different codes in the first number of states occurring faster when there is a transition in the first number of states than transitions between codes when in the second number of states.
63. Entropie-Decodierer nach Anspruch 62, bei welchem die erste Anzahl Zustände jeweils einen R2(k) Code enthält.63. The entropy decoder of claim 62, wherein the first Number of states each contains an R2 (k) code. 64. Entropie-Decodierer nach Anspruch 62, bei welchem die erste Anzahl Zustände nur während einer Initialisierung verwendet werden. 64. The entropy decoder of claim 62, wherein the first Number of states used only during initialization will.   65. Entropie-Decodierer zum Decodieren eines Datenstroms einer Anzahl von Codewörtern, mit
einer Anzahl Bitstromgeneratoren zum Aufnehmen des Datenstroms, und
einer Zustandstabelle, die vorgesehen ist, um einen Wahrschein­ lichkeitsvoranschlag auf der Basis der Indizes vorzusehen, wo­ bei die Zustandstabelle eine Anzahl Zustände einschließt, wobei jeder der Zustände einem Code entspricht, und jeder Code in der Zustandstabelle eine wiederholte Anzahl Mal wiederholt wird,
wobei ein Übergehen zwischen Zuständen der Zustandstabelle auf der Basis eines Beschleunigungsterms vorkommt, welcher modifi­ zierbar ist, so daß eine erste Übergangsrate zwischen Zuständen während einer ersten Zeitperiode sich von einer zweiten Über­ gangsrate während einer zweiten Zeitperiode unterscheidet.
65. Entropy decoder for decoding a data stream of a number of code words, with
a number of bit stream generators for receiving the data stream, and
a state table which is provided to provide a probability estimate based on the indices, where the state table includes a number of states, each of the states corresponding to a code, and each code in the state table being repeated a number of times,
wherein a transition between states of the state table occurs on the basis of an acceleration term which can be modified so that a first transition rate between states during a first time period differs from a second transition rate during a second time period.
66. Codiersystem nach Anspruch 62, bei welchem jeder Code in der Zustandstabelle eine konstante Anzahl Mal wiederholt wird.66. The coding system of claim 62, wherein each code in the status table is repeated a constant number of times. 67. Codiersystem nach Anspruch 66, bei welchem aktualisierte Werte zu der Zustandstabelle ein Modifizieren des PEM-Zustands durch einen Beschleunigungsterm aufweisen.67. The coding system of claim 66, wherein updated Values to the state table modifying the PEM state by an acceleration term. 68. Codiersystem nach Anspruch 67, bei welchem eine nicht-adap­ tive Beschleunigung vorkommt, wenn der Beschleunigungsterm eine vorherbestimmte Zahl aufweist.68. Encoding system according to claim 67, wherein a non-adap tive acceleration occurs when the acceleration term is one has a predetermined number. 69. Codiersystem nach Anspruch 67, bei welchem der Beschleuni­ gungsterm auf der Basis der Anzahl aufeinanderfolgender Code­ wörter aktualisiert wird.69. Encoding system according to claim 67, wherein the acceleration gung term based on the number of consecutive codes words is updated. 70. Codiersystem nach Anspruch 67, bei welchem der Beschleuni­ gungsterm auf der Basis der Anzahl sich ändernder Codewörter aktualisiert wird.70. Encoding system according to claim 67, wherein the acceleration gung term based on the number of changing code words is updated. 71. Decodierer zum Decodieren einer Anzahl von verschachtelten Worten, mit
einer Schiebeeinheit zum Aufnehmen des Datenstroms und zum Ab­ geben richtig ausgerichteter codierter Daten;
einem Lauflängendecodierer, der mit der Schiebeeinheit verbun­ den ist, um die richtig ausgerichteten, codierten Daten als Co­ dewörter zum Bestimmen des Codewort-Typs aufzunehmen;
einem Wahrscheinlichkeits-Bewertungsmodul, welcher mit dem Lauflängen-Decodierer verbunden ist, um den Code für den Lauf­ längen-Decodierer zu bestimmen, so daß der Lauflängen-Decodie­ rer eine Lauflänge und eine Anzeige erzeugt, ob das LPS ent­ sprechend jedem Codewort vorgekommen ist,
wobei die Schiebeeinheit einen Schiebemechanismus variabler Länge aufweist, um Codewörter von dem Datenstrom aus zu ver­ schieben, und
einer Anzahl Register, die vorgesehen sind, um Codewörter aus dem Strom entsprechend dem Schiebemechanismus aufzunehmen, so daß ausgerichtete, codierte Daten als eine Reihe von Codewör­ tern abgegeben wird.
71. Decoder for decoding a number of interleaved words, with
a pushing unit for receiving the data stream and for delivering correctly aligned coded data;
a run length decoder connected to the shifter to receive the properly aligned, encoded data as codewords to determine the codeword type;
a probability assessment module connected to the run length decoder to determine the code for the run length decoder so that the run length decoder generates a run length and an indication of whether the LPS has occurred in accordance with each code word,
the pusher unit having a variable length pusher mechanism to pusher code words from the data stream, and
a number of registers which are provided to receive codewords from the stream according to the shifting mechanism so that aligned coded data is output as a series of codewords.
72. Decodierer nach Anspruch 71, bei welchem ein Teil der Regi­ ster verbunden ist, um Daten von anderen der Anzahl Register oder von dem Datenstrom aufzunehmen.72. Decoder according to claim 71, in which a part of the regi ster is connected to register data from others of the number or record from the data stream. 73. Decodierer nach Anspruch 71, bei welchem der Mechanismus variabler Länge eine Tonnen-(barrel)Schiebeeinheit aufweist, um Daten aus dem Datenstrom in die Anzahl Register zu verschieben.73. The decoder of claim 71, wherein the mechanism variable length has a barrel pushing unit to Move data from the data stream to the number of registers. 74. Decodierer nach Anspruch 71, bei welchem die Schiebeeinheit einen FIFO mit einer Anzahl Register aufweist, wobei jedes der Register Daten als einen Eingang von den verschachtelten co­ dierten Daten aufnimmt, und zumindest eines der Anzahl Register verbunden ist, um Codewörter von einem anderen der Anzahl Regi­ ster aufzunehmen.74. The decoder of claim 71, wherein the shift unit comprises a FIFO with a number of registers, each of the Register data as an input from the nested co dated data, and at least one of the number of registers is connected to code words from another of the number regi to record. 75. Decodierer nach Anspruch 71, bei welchem die Schiebeeinheit aufweist:
eine Anzahl Register, die vorgesehen ist, um Codewortdaten auf­ zunehmen, wobei jedes der ersten Anzahl Register mit einem ver­ schiedenartigen der Anzahl Ströme verbunden ist;
einem Multiplexer, der vorgesehen ist, um Codewortdaten aus je­ dem der ersten Anzahl Register als einen Eingang aufzunehmen und Codewörter aus einem der Anzahl Register zu einem bestimm­ ten Zeitpunkt abzugeben;
einer Tonnen-Schiebeeinheit, die mit dem Ausgang des Multiple­ xers verbunden ist, um Codewort-Daten von dem Multiplexer aus für ein Ausgeben als ausgerichtete codierte Daten zu verschie­ ben;
eine Logik, die mit der Schiebeeinheit verbunden ist, um eine Anzahl Bits anzuzeigen, um das Codewort zu verschieben, und einem FIFO mit einer Anzahl Register, die vorgesehen sind, um Codewörter von dem Multiplexer (1605) aufzunehmen, wobei der FIFO eine Anzahl Register enthält, wobei jedes der Anzahl Regi­ ster Daten als eine Eingabe von den verschachtelten codierten Daten aufnimmt, und zumindest eines der Anzahl Register verbun­ den ist, um Codewörter von einem anderen der Anzahl Register aufzunehmen.
75. The decoder of claim 71, wherein the shift unit comprises:
a number of registers arranged to receive code word data, each of the first number of registers being connected to a different one of the number of streams;
a multiplexer which is provided to receive code word data from each of the first number of registers as an input and to output code words from one of the number of registers at a specific time;
a barrel shifter connected to the output of the multiple xer for shifting code word data from the multiplexer for output as aligned encoded data;
logic connected to the shifter to indicate a number of bits to shift the code word and a FIFO with a number of registers arranged to receive code words from the multiplexer ( 1605 ), the FIFO a number of registers includes, each of the number of registers receiving data as an input from the interleaved encoded data, and at least one of the number of registers connected to receive code words from another of the number of registers.
76. Decodiersystem zum Decodieren von Daten, mit
einer FIFO-Struktur, die vorgesehen ist, um die Daten aufzuneh­ men;
einem Kontextmodell zum Vorsehen von Kontexten;
einem mit dem Kontextmodell verbundenen Speicher, um Datenin­ formation zu speichern, wobei der Speicher eine Zustandsinfor­ mation entsprechend jedem in dem Kontextmodell vorgesehenen Kontext schafft;
einer Anzahl Decodierer, die vorgesehen ist, um codierte Daten von der FIFO-Struktur aus und dem Speicher aufzunehmen, um Co­ dewörter, die von der FIFO-Struktur zugeführt worden sind, und Zustandsinformation aus dem Speicher zu decodieren, wobei die Anzahl Decodierer vorgesehen ist, so daß Durchlaufzählwerte für eine Anzahl Codes erzeugt werden können.
76. Decoding system for decoding data, with
a FIFO structure provided to receive the data;
a contextual model for providing contexts;
a memory connected to the context model for storing data information, the memory creating status information corresponding to each context provided in the context model;
a number of decoders arranged to receive encoded data from the FIFO structure and the memory to decode codewords supplied by the FIFO structure and status information from the memory, the number of decoders being provided so that run counts can be generated for a number of codes.
77. Decodiersystem nach Anspruch 76, bei welchem die FIFO-Struktur codierte Daten an die Anzahl Decodierer unabhängig von Kontext und wahrscheinlichkeitsklassen zuführt.77. The decoding system of claim 76, wherein the FIFO structure  encoded data to the number of decoders independently of context and probability classes. 78. Codiersystem nach Anspruch 76, bei welchem der Decodierer einen Speicher zum Speicher von Durchlaufzählwerten aufweist, und der Durchlaufzählwert-Speicher auf der Basis einer Wahr­ scheinlichkeitsklasse bewertbar ist.78. The encoding system of claim 76, wherein the decoder has a memory for storing run count values, and the pass count memory based on a true probability class is assessable. 79. Decodiersystem nach Anspruch 76, bei welchem die FIFO-Struktur Daten für zwei Decodierer schafft.79. The decoding system of claim 76, wherein the FIFO structure creates data for two decoders. 80. Decodiersystem nach Anspruch 76, bei welchem die FIFO-Struktur eine Anzahl Ausgangssignale, und zwar eines für jeden Decodierer, aufweist.80. The decoding system of claim 76, wherein the FIFO structure a number of output signals, one for each Decoder. 81. Decodiersystem nach Anspruch 80, bei welchem die FIFO-Struktur ein Paar Multiplexer und eine Steuerlogik zum Auswäh­ len des Multiplexerpaars aufweist, um sicherzustellen, daß ein Codewort für jeden Decodierer vorgesehen ist.81. The decoding system of claim 80, wherein the FIFO structure a pair of multiplexers and control logic for selection len of the multiplexer pair to ensure that a Codeword is provided for each decoder. 82. Decodiersystem nach Anspruch 81, bei welchem das Multiple­ xerpaar durch die Steuerlogik auf der Basis von Anforderungen ausgewählt wird, die von einem der Anzahl Decodierer erhalten worden sind.82. The decoding system of claim 81, wherein the multiple xerpaar through the control logic based on requirements is selected which is obtained from one of the number of decoders have been. 83. Codiersystem zum Codieren von eingegebenen Daten, mit
einer Codiereinheit, die vorgesehen ist, um die eingegebenen Daten zu empfangen, um codierte Daten in der Form einer Anzahl Ströme zu erzeugen, wobei codierte Daten zu dem einen der An­ zahl Ströme auf der Basis eines Satzes Kriterien zugeteilt sind, und
einem Speicher fester Größe, der mit der Codiereinheit verbun­ den ist, um die Anzahl Ströme von codierten Daten zu speichern, wobei die codierten Daten geringerer Wichtigkeit weggeworfen werden, wenn der Speicher fester Größe überläuft.
83. Coding system for coding input data, with
a coding unit which is provided to receive the input data, to generate coded data in the form of a number of streams, coded data being assigned to the one of the number of streams on the basis of a set of criteria, and
a fixed size memory connected to the encoding unit for storing the number of streams of encoded data, the less important encoded data being discarded when the fixed size memory overflows.
84. Codiersystem nach Anspruch 83, bei welchem der Speicher eine Anzahl Speicherbereiche aufweist, und codierte Daten, die in jedem der Anzahl Speicherbereiche gespeichert sind, codierte Daten mit einem unterschiedlichen Wichtigkeitspegel aufweisen.84. The encoding system of claim 83, wherein the memory has a number of storage areas and encoded data encoded in each of the number of storage areas Have data with a different level of importance. 85. Codiersystem nach Anspruch 84, bei welchem codierte Daten eines Wichtigkeitspegels in zumindest einem Speicherbereich des Speichers gespeichert sind, der codierte Daten auf einem ande­ ren Wichtigkeitspegel speichert.85. Encoding system according to claim 84, in which encoded data an importance level in at least one memory area of the Memory are stored, the encoded data on another stores its importance level. 86. Codiersystem nach Anspruch 85, bei welchem die codierten Daten des einen Wichtigkeitspegels codierte Daten des anderen Wichtigkeitspegels in dem zumindest einen Speicherbereich des Speichers überschreiben.86. Encoding system according to claim 85, in which the encoded Data of one level of importance encoded data of the other Importance level in the at least one memory area of the Overwrite memory. 87. Verfahren zum Initialisieren einer Anzahl Kontexte in einem System, welches Verfahren die Schritte aufweist:
Initialisieren der Anzahl Kontexte, wobei jeder der Kontexte basierend auf einem Zählerwert Zugriff hat;
Erhalten eines PEM-Zustandes des augenblicklichen Kontextes, wobei der Schritt, Erhalten, die Schritte aufweist:
Zugreifen auf eine Speicheranzeige für jeden Kontext, welcher den PEM-Zustand anzeigt;
Bestimmen, ob die zugegriffene Speicherstelle für eine aktuelle Operation gültig ist, indem die augenblickliche Kontextnummer mit dem Zählerwert verglichen wird, so daß die Daten als gültig festgelegt werden, wenn der Zählerwert anzeigt, daß die Stelle bereits initialisiert worden ist;
Verwenden eines anfänglichen PEM-Zustandes für den Kontext und Ignorieren eines augenblicklichen PEM-Zustandes für einen Kon­ text, wenn Daten der zugegriffenen Speicherstelle nicht gültig sind, und
Verwenden des aktuell zugeordneten PEM-Zustandes für den Kon­ text, wenn die Daten gültig sind.
87. A method of initializing a number of contexts in a system, the method comprising the steps of:
Initializing the number of contexts, each of the contexts having access based on a counter value;
Obtaining a PEM state of the current context, the step, obtaining, comprising the steps:
Accessing a memory indicator for each context that indicates the PEM state;
Determining whether the accessed memory location is valid for a current operation by comparing the current context number to the counter value so that the data is determined to be valid if the counter value indicates that the location has already been initialized;
Using an initial PEM state for the context and ignoring an instant PEM state for a context when data of the accessed location is not valid, and
Use the currently assigned PEM state for the context if the data is valid.
88. Verfahren nach Anspruch 87, welches den Schritt aufweist:
Schreiben eines neuen PEM-Zustandes, wenn sich der PEM-Zustand geändert hat.
88. The method of claim 87, comprising the step of:
Write a new PEM state if the PEM state has changed.
89. Decodierer zum Decodieren von eingegebenen Daten, mit
einem Kontextmodell, um ein Kontextfach zu schaffen;
einem Speicher, der mit dem Kontextmodell verbunden ist, um auf der Basis des Kontextfaches einen Wahrscheinlichkeitszustand zu schaffen;
eine mit dem Speicher verbundene Logik, um eine Wahrscheinlich­ keitsklasse auf der Basis des Wahrscheinlichkeitszustandes zu erzeugen;
einem Decodierer, der mit der Logik verbunden ist, um ein Frei­ gabesignal auf der Basis der Wahrscheinlichkeitsklasse zu er­ zeugen;
einer Anzahl Bitgeneratoren, die mit dem Decodierer verbunden sind und vorgesehen sind, um die codierten Daten aufzunehmen, wobei jeder der Anzahl Bitgeneratoren zumindestens einem ver­ schiedenen Code überlassen wird, wobei der Decodierer einen der Anzahl Bitgeneratoren auf der Basis der Wahrscheinlichkeits­ klasse freigibt, so daß der eine der Anzahl Bitstromgeneratoren die codierten Daten decodiert.
89. Decoder for decoding input data, with
a contextual model to create a contextual subject;
a memory connected to the context model to create a probability state based on the context subject;
logic connected to the memory to generate a probability class based on the probability state;
a decoder connected to the logic to generate an enable signal based on the probability class;
a number of bit generators connected to the decoder and provided to receive the encoded data, each of the number of bit generators being given at least one different code, the decoder enabling one of the number of bit generators based on the probability class, so that one of the number of bit stream generators decodes the encoded data.
90. Decodierer nach Anspruch 89, bei welchem zumindest einer der Anzahl Bitgeneratoren Daten mit Hilfe eines R-Codes decodiert, und zumindest einer der Anzahl Bitgeneratoren Daten mit einem Nicht-R-Code decodiert.90. The decoder of claim 89, wherein at least one of the Number of bit generators data decoded using an R code, and at least one of the number of bit generators data with one Non-R code decoded. 91. Decodierer nach Anspruch 89, bei welchem Bitgeneratoren für kurze Lauflängen als R-Code-Decodierer arbeiten.91. Decoder according to claim 89, wherein bit generators for short run lengths work as an R code decoder. 92. Decodierer nach Anspruch 89, bei welchem Bitgeneratoren für lange Lauflängen eine kurze Laufeinheit und eine lange Laufein­ heit aufweisen, wobei die kurze Laufeinheit Codes einer ersten vorherbestimmten Länge behandelt und die lange Laufeinheit ir­ gendwelche restlichen Bits behandelt und bestimmt, welche, wenn überhaupt, von den restlichen Bits auszugeben sind. 92. A decoder according to claim 89, wherein bit generators for long run lengths a short run unit and a long run unit, the short running unit codes a first treats predetermined length and the long running unit ir any remaining bits handled and determines which if to be output at all from the remaining bits.   93. Verfahren zum Decodieren von eingegebenen Daten, welches die Schritte aufweist:
Vorsehen eines Kontextfaches;
Zugreifen auf einen Speicher mit Hilfe eines Kontextfaches, um einen Wahrscheinlichkeitszustand zu erhalten;
Erzeugen einer Wahrscheinlichkeitsklasse auf der Basis des Wahrscheinlichkeitszustandes;
Freigeben einer der Anzahl Bitgeneratoren, wobei jede Anzahl Bitgeneratoren zumindest einem verschiedenen Code überlassen wird, so daß nur der eine verschiedenartige Code zum Decodieren verwendet wird, so daß der eine der Anzahl Bitgeneratoren die codierten Daten decodiert.
93. A method for decoding input data, comprising the steps of:
Provision of a context subject;
Accessing a memory using a context pocket to obtain a probability state;
Generating a probability class based on the probability state;
Enabling one of the number of bit generators, each number of bit generators being left to at least one different code, so that only one different code is used for decoding, so that one of the number of bit generators decodes the encoded data.
94. Codiersystem zum Codieren von eingegebenen Daten, mit
einem Kontextmodell, um ein Kontextfach vorzusehen;
einem mit dem Kontextmodell verbundenen Speicher, um einen Wahrscheinlichkeitszustand auf der Basis des Kontextfaches zu schaffen;
einer mit dem Speicher verbundenen Logik, um eine Wahrschein­ lichkeitsklasse auf der Basis des Wahrscheinlichkeitszustands zu erzeugen;
einem mit der Logik verbundenen Codierer, um ein Freigabesignal auf der Basis der Wahrscheinlichkeitsklasse zu erzeugen;
eine Anzahl Bitgeneratoren, die mit dem Decodierer verbunden sind und vorgesehen sind, um die eingegebenen Daten aufzuneh­ men, wobei jeder der Anzahl Bitgeneratoren zumindest einem ver­ schiedenen Code überlassen ist, wobei der Codierer einen der Anzahl Bitgeneratoren auf der Basis der Wahrscheinlichkeits­ klasse freigibt, so daß der eine der Anzahl Bitstromgeneratoren die eingegebenen Daten codiert.
94. Coding system for coding input data, with
a contextual model to provide a contextual subject;
a memory connected to the context model to create a probability state based on the context subject;
logic connected to the memory to generate a probability class based on the probability state;
an encoder connected to the logic to generate an enable signal based on the probability class;
a number of bit generators connected to the decoder and provided to receive the input data, each of the number of bit generators being left with at least one different code, the encoder releasing one of the number of bit generators based on the probability class, so that one of the number of bit stream generators encodes the input data.
95. Codierer nach Anspruch 94, bei welchem zumindest einer der Anzahl Bitgeneratoren Daten mit einem R-Code codiert und zumin­ dest einer Anzahl Bitgeneratoren Daten mit Hilfe eines Nicht-R-Codes codiert. 95. The encoder of claim 94, wherein at least one of the Number of bit generators data encoded with an R code and at least least a number of bit generator data using a Non-R codes encoded.   96. Codierer nach Anspruch 94, bei welchem Bitgeneratoren für kurze Lauflängen als R-Code-Codierer arbeiten.96. The encoder of claim 94, wherein bit generators for short run lengths work as an R code encoder. 97. Decodierer nach Anspruch 94, bei welchem Bitgeneratoren für lange Lauflängen eine kurze Laufeinheit und eine lange Laufein­ heit aufweisen, wobei die kurze Laufeinheit Codes einer ersten vorherbestimmten Länge behandelt und die lange Laufeinheit ir­ gendwelche restlichen Bits behandelt und bestimmt, welche, wenn überhaupt, von den restlichen Bits auszugeben sind.97. The decoder of claim 94, wherein bit generators for long run lengths a short run unit and a long run unit, the short running unit codes a first treats predetermined length and the long running unit ir any remaining bits handled and determines which if to be output at all from the remaining bits. 98. Verfahren zum Codieren von eingegebenen Daten, welches die Schritte aufweist:
Vorsehen eines Kontextfaches;
Zugreifen auf einen Speicher mit Hilfe des Kontextfaches, um einen Wahrscheinlichkeitszustand zu erhalten;
Erzeugen einer Wahrscheinlichkeitsklasse auf der Basis des Wahrscheinlichkeitszustands;
Freigeben einer eine Anzahl Bitgeneratoren, wobei jeder der An­ zahl Bitgeneratoren an zumindest einem verschiedenen Code dedi­ ziert, so daß nur der eine verschiedene Code zum Codieren ver­ sendet wird, so daß der eine der Anzahl Bitstromgeneratoren die eingegebenen Daten codiert.
98. A method for encoding input data, comprising the steps of:
Provision of a context subject;
Accessing a memory using the context pocket to obtain a probability state;
Generating a probability class based on the probability state;
Enable a number of bit generators, each of the number of bit generators dedi ced on at least one different code, so that only the one different code is sent for coding, so that one of the number of bit stream generators encodes the input data.
99. Verfahren zum Decodieren codierter Daten, die eine Anzahl Codewörter aufweisen, welches Verfahren die Schritte aufweist:
Laden eines Zählwerts in einen Zähler, der jedem Durchlaufzäh­ ler zugeordnet ist, wobei der Zählwert der Größe eines verwen­ deten Codewortspeichers während des Codierens entspricht, wenn ein neuer Durchlauf gestartet wird, wobei der Zählwert geladen wird, wenn ein neues Codewort für jeden Durchlaufzähler abgeru­ fen wird;
Dekrementieren des Zählwerts, jedesmal wenn ein Codewort abge­ rufen wird, und
Löschen des Bitgeneratorzustand, der dem neuen Codewort zuge­ ordnet ist, wenn der Zähler auf null dekrementiert.
99. A method of decoding encoded data having a number of code words, the method comprising the steps of:
Loading a count into a counter associated with each pass counter, the count corresponding to the size of a code word memory used during encoding when a new pass is started, the count being loaded when a new code word is fetched for each pass counter becomes;
Decrementing the count each time a code word is retrieved, and
Clear the bit generator state associated with the new code word when the counter decrements to zero.
100. Verfahren nach Anspruch 99, wobei jeder Durchlaufzähler einem PEM-Zustand entspricht.100. The method of claim 99, wherein each pass counter corresponds to a PEM state. 101. Verfahren nach Anspruch 99, bei welchem jeder Durchlauf­ zähler einem Kontextfach entspricht.101. The method of claim 99, wherein each pass counter corresponds to a context subject. 102. Verfahren zum Decodieren codierter Daten, die eine Anzahl Codewörter aufweisen, welches Verfahren die Schritte aufweist:
Inkrementieren eines Zählerwerts jedesmal, wenn ein Codewort angefordert wird, wobei der Zählerwert eine aktuelle Zeitanzei­ ge aufweist;
Speichern des Zählerwerts als eine gespeicherte Zeitanzeige, wenn ein erstes Codewort gestartet wird;
Vergleichen der gespeicherten Anzeige plus der Größe eines Co­ diererspeichers zu der aktuellen Zeitanzeige;
wobei der Bitgeneratorzustand für das erste Codewort gelöscht wird und ein zweites Codewort angefordert wird, wenn die ak­ tuelle Zeitanzeige größer ist als die gespeicherte Zeitanzeige plus der Größe des Codiererspeichers.
102. A method for decoding encoded data having a number of code words, which method comprises the steps:
Incrementing a counter value each time a code word is requested, the counter value having a current time display;
Storing the counter value as a stored time indication when a first code word is started;
Comparing the stored display plus the size of a encoder memory to the current time display;
wherein the bit generator state for the first code word is deleted and a second code word is requested if the current time display is larger than the stored time display plus the size of the encoder memory.
103. Verfahren nach Anspruch 102, bei welchem die gespeicherte Zeitanzeige eine Zeitmarke aufweist.103. The method of claim 102, wherein the stored Time display has a time stamp. 104. Verfahren nach Anspruch 102, bei welchem die gespeicherte Zeitanzeige für ein anschließendes Codewort wieder verwendet wird.104. The method of claim 102, wherein the stored Time display for a subsequent code word used again becomes. 105. Verfahren zum Decodieren decodierter Daten, die eine An­ zahl Codewörter aufweisen, welches Verfahren die Schritte auf­ weist:
Speichern eines Index, der einem Codewort entspricht, wobei der Index in einer Schlange gespeichert wird, und der Index gespei­ chert wird, wenn das Codewort angefordert wird;
Markieren des Eintrags des Index in der Schlange als ungültig;
Speichern des Codeworts in dem Eintrag und Markieren des Ein­ trags als gültig, wenn das Codewort vollständig ist;
Ausgeben von Daten aus der zu decodierenden Schlange, wobei das Codewort zum Decodieren abgegeben wird, wenn der Schlangenein­ trag gültig ist, und
Ausgeben von Daten aus dem Schlangeneintrag und Anzeigen, daß die Daten an den Decodierer ungültig sind, wenn der Schlangen­ eintrag als ungültig markiert ist, wenn Daten von der Schlange aus abgegeben werden, wobei die Bitgenerator-Zustandsinforma­ tion in dem Decodierer entsprechend empfangenen Daten aus der Schlange gelöscht wird, die ungültig markiert sind.
105. A method for decoding decoded data having a number of code words, which method comprises the steps of:
Storing an index corresponding to a code word, the index being stored in a queue, and the index being stored when the code word is requested;
Marking the entry of the index in the queue as invalid;
Storing the code word in the entry and marking the entry as valid when the code word is complete;
Outputting data from the queue to be decoded, the code word being provided for decoding when the queue entry is valid, and
Outputting data from the queue entry and indicating that the data is invalid to the decoder if the queue entry is marked invalid if data is being output from the queue, the bit generator state information in the decoder corresponding to data received from the Snake is deleted that are marked invalid.
106. Decodierer zum Decodieren codierter Daten, welcher Deco­ dierer aufweist:
einen Kontext-Modelliermechanismus zum Vorsehen von Kontexten, wobei der Kontextmodelliermechanismus eine Anzahl integrierter Schaltungen aufweist;
einen mit dem Kontext verbundenen Speicher, um Zustandsinforma­ tion zu speichern, wobei der Speicher Zustandsinformation ent­ sprechend jedem Kontext vorsieht, der von dem Kontextmodell vorgesehen ist, und
eine Anzahl Decodierer, die mit dem Speicher verbunden sind, um Codewörter mit Hilfe der Zustandsinformation aus dem Speicher zu decodieren, wobei die Anzahl Decodierer Codewörter mit Hilfe einer Anzahl R-Codes decodieren, wobei die Anzahl R-Codes zu­ mindest einen Nicht-Maximum-Längendurchlauf von wahrscheinlich­ sten Symbolen enthält, auf welche nicht ein am wenigsten wahr­ scheinliches Symbol folgt.
106. Decoder for decoding coded data, which decoder has:
a context modeling mechanism for providing contexts, the context modeling mechanism having a number of integrated circuits;
a context-related memory for storing state information, the memory providing state information corresponding to each context provided by the context model, and
a number of decoders connected to the memory for decoding code words from the memory using the status information, the number of decoders decoding code words using a number of R codes, the number of R codes being at least one non-maximum Length sweep of probably most symbols that are not followed by a least probable symbol.
107. Decodierer nach Anspruch 106, bei welchem Durchlaufzähl­ werte nicht maximaler Länge eine eindeutig decodierbare Vorsil­ be haben.107. The decoder of claim 106, wherein the pass count value a maximum decipherable prefix that can be uniquely decoded have. 108. System zum Decodieren eines Codestroms, der eine Anzahl Codewörter hat, wobei das System aufweist:
einen Kontex-Modelliermechanismus zum Vorsehen von Kontexten, wobei der Kontextmodelliermechanismus eine Anzahl integrierter Schaltungen aufweist;
einen mit dem Kontextmodell verbundenen Speicher zum Speichern von Zustandsinformationen, wobei der Speicher Zustandsinforma­ tion entsprechend jedem in dem Kontextmodell vorgesehenen Kon­ text vorsieht, und
eine Anzahl Decodierer, die mit dem Speicher verbunden sind, um Codewörter mit Hilfe der Zustandsinformation aus dem Speicher zu decodieren.
108. A code stream decoding system having a number of code words, the system comprising:
a context modeling mechanism for providing contexts, the context modeling mechanism having a number of integrated circuits;
a memory connected to the context model for storing status information, the memory providing status information corresponding to each context provided in the context model, and
a number of decoders connected to the memory for decoding code words from the memory using the status information.
109. System nach Anspruch 108, bei welchem der Kontext-Model­ liermechanismus zumindest ein Kontextmodell, das Kontexte von einer der Anzahl integrierter Schaltungen vorsieht, und zumin­ dest ein Kontextmodell aufweist, das Kontextmodelle von einer zweiten der Anzahl integrierter Schaltungen vorsieht.109. The system of claim 108, wherein the context model mechanism at least one context model, the contexts of one of the number of integrated circuits, and at least least has a context model, the context models of one second of the number of integrated circuits. 110. System nach Anspruch 109, bei welchem das zumindest eine Kontextmodell an der einen der Anzahl integrierter Schaltungen ein Kontextmodell nullter Ordnung aufweist.110. The system of claim 109, wherein the at least one Context model on one of the number of integrated circuits has a zero order context model. 111. System nach Anspruch 108, bei welchem Kontexte aus der An­ zahl integrierter Schaltungen direkt an dem Speicher vorgesehen sind.111. The system of claim 108, wherein contexts from the An number of integrated circuits provided directly on the memory are. 112. System nach Anspruch 108, bei welchem ein erster Teil ei­ nes ersten Kontextes von einer integrierten Schaltung vorgese­ hen wird und ein zweiter Teil des ersten Kontextes von einer zweiten integrierten Schaltung vorgesehen wird.112. The system of claim 108, wherein a first portion is egg nes first context of an integrated circuit and a second part of the first context of one second integrated circuit is provided. 113. Codiersystem nach Anspruch 17, bei welchem ein Bitgenera­ torzustand des Bitgenerators aktualisiert wird, und bei welchem ferner der Bitgenerator vor dem aktuellen Zustand, der in den Speicher zu schreiben ist, wieder verwendet wird.113. Encoding system according to claim 17, in which a bit generator gate state of the bit generator is updated, and at which also the bit generator before the current state, which in the Memory to be written is used again. 114. Codiersystem nach Anspruch 113, bei welchem der Bitgenera­ tor während der Modifizierstufe eines Lese-Modifizier-Schreib-Zyklus wieder verwendet wird. 114. The encoding system of claim 113, wherein the bit generator during the modification stage of a read-modify-write cycle is used again.   115. Codiersystem nach Anspruch 17, bei welchem der Bitgenera­ tor einen Durchlaufzählwert nicht-minimaler Länge erzeugt, wenn vor dem Schreiben ein aktueller Zustand an dem Speicher wieder verwendet wird.115. Encoding system according to claim 17, wherein the bit generator tor generates a non-minimal length pass count if a current state on the memory again before writing is used. 116. Codiersystem nach Anspruch 17, bei welchem der Bitgenera­ tor Daten mit Hilfe von R-Codes codiert, die so definiert sind, daß auf jede Lauflänge zumindest ein uncodiertes Bit folgt, so daß zwei Codewörter derselben Lauflänge niemals in einer Zeile decodiert werden.116. The encoding system of claim 17, wherein the bit generator data is encoded using R codes that are defined that at least one uncoded bit follows each run length, so that two code words of the same run length are never on one line be decoded. 117. System zum Decodieren eines Codestroms, das eine Anzahl Codewörter aufweist, mit
einem Kontext-Modelliermechanismus zum Vorsehen von Kontexten;
einem mit dem Kontextmodell verbundenen Speicher zum Speichern von Zustandsinformation, wobei der Speicher Zustandsinformation entsprechend jedem von dem Kontextmodell vorgesehenen Kontext schafft, und
einer Anzahl mit dem Speicher verbundener Decodierer zum Deco­ dieren von Codewörter mit Hilfe der Zustandsinformation aus dem Speicher, wobei zumindest einer der Anzahl Decodierer einen verzögerungstoleranten Decodierer aufweist.
117. System for decoding a code stream having a number of code words with
a context modeling mechanism for providing contexts;
a memory connected to the context model for storing status information, the memory creating status information corresponding to each context provided by the context model, and
a number of decoders connected to the memory for decoding code words with the aid of the status information from the memory, at least one of the number of decoders having a delay-tolerant decoder.
118. System nach Anspruch 115, bei welchem zumindest eine der Anzahl Decodierer ein Verschieben variabler Länge auf der Basis von decodierten Daten durchführt, die nach einer Verzögerung verfügbar sind.118. The system of claim 115, wherein at least one of the Number of decoders shift based on variable length of decoded data after a delay Are available. 119. System nach Anspruch 117, bei welchem jede der Anzahl De­ codierer Daten veränderlicher Länge als Eingangssignal auf­ weist.119. The system of claim 117, wherein each of the number De Encoder data of variable length as an input signal points. 120. System nach Anspruch 119, bei welchem die Anzahl Decodie­ rer eingegebene Daten veränderlicher Länge parallel decodieren. 120. The system of claim 119, wherein the number of decoders Decode input of variable length in parallel.   121. System nach Anspruch 117, bei welchem ein Ausgangssignal der Anzahl Decodierer in verschachtelte Worte fester Länge auf­ geteilt wird.121. The system of claim 117, wherein an output signal the number of decoders in nested words of fixed length is shared.
DE19536401A 1994-09-30 1995-09-29 Method and device for coding and decoding data Expired - Fee Related DE19536401B4 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US31611694A 1994-09-30 1994-09-30
US316116 1994-09-30

Publications (2)

Publication Number Publication Date
DE19536401A1 true DE19536401A1 (en) 1996-04-04
DE19536401B4 DE19536401B4 (en) 2006-07-20

Family

ID=23227538

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19536401A Expired - Fee Related DE19536401B4 (en) 1994-09-30 1995-09-29 Method and device for coding and decoding data

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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19732626C2 (en) * 1996-12-02 2002-08-01 Hewlett Packard Co Process for processing a compressed data stream
DE19925667B4 (en) * 1998-06-04 2005-12-22 Ricoh Co., Ltd. Adaptive coding with adaptive speed

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2311705B (en) * 1995-08-31 1998-04-15 Ricoh Kk Method and apparatus for compressing arbitrary data
US5654703A (en) * 1996-06-17 1997-08-05 Hewlett-Packard Company Parallel data compression and decompression
KR100992246B1 (en) 2001-11-22 2010-11-05 파나소닉 주식회사 Coding method and coding apparatus
EP1499096B1 (en) * 2002-04-08 2010-01-27 Kabushiki Kaisha Eighting Network game method, network game terminal, and server
US7555540B2 (en) * 2003-06-25 2009-06-30 Microsoft Corporation Media foundation media processor
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
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
KR100818268B1 (en) * 2005-04-14 2008-04-02 삼성전자주식회사 Apparatus and method for audio encoding/decoding with scalability
US7716551B2 (en) * 2005-12-07 2010-05-11 Microsoft Corporation Feedback and frame synchronization between media encoders and decoders
KR100717587B1 (en) * 2006-07-05 2007-05-15 주식회사 대우일렉트로닉스 Method and apparatus for detecting optical information and optical information processing apparatus
US9319700B2 (en) 2006-10-12 2016-04-19 Qualcomm Incorporated Refinement coefficient coding based on history of corresponding transform coefficient values
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
US8325819B2 (en) 2006-10-12 2012-12-04 Qualcomm Incorporated Variable length coding table selection based on video block type for refinement coefficient coding
US8565314B2 (en) 2006-10-12 2013-10-22 Qualcomm Incorporated Variable length coding table selection based on block type statistics for refinement coefficient coding
BRPI0718239B1 (en) 2006-11-14 2019-12-24 Nippon Telegraph & Telephone information source coding process, information source decoding process, information source coding apparatus and information source decoding 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
KR101226566B1 (en) * 2008-07-11 2013-01-28 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. Method for encoding a symbol, method for decoding a symbol, method for transmitting a symbol from a transmitter to a receiver, encoder, decoder and system for transmitting a symbol from a transmitter to a receiver
US8934548B2 (en) * 2009-05-29 2015-01-13 Mitsubishi Electric Corporation Image encoding device, image decoding device, image encoding method, and image decoding method
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
US8769686B2 (en) 2010-02-26 2014-07-01 Futurewei Technologies, Inc. System and method for securing wireless transmissions
PL2559166T3 (en) 2010-04-13 2018-04-30 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Probability interval partioning encoder and decoder
CA2799763A1 (en) * 2010-07-13 2012-01-19 Research In Motion 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
US8902988B2 (en) * 2010-10-01 2014-12-02 Qualcomm Incorporated Zero-out of high frequency coefficients and entropy coding retained coefficients using a joint context model
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
PT3349360T (en) 2011-01-14 2019-12-09 Ge Video Compression Llc Entropy encoding and decoding scheme
US8995523B2 (en) * 2011-06-03 2015-03-31 Qualcomm Incorporated Memory efficient context modeling
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
RU2608464C2 (en) * 2012-09-28 2017-01-18 Телефонактиеболагет Лм Эрикссон (Пабл) Device, method and network server for detecting data structures in data stream
US9990202B2 (en) 2013-06-28 2018-06-05 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
CN105828083A (en) * 2015-01-06 2016-08-03 中兴通讯股份有限公司 Method and device for decoding data streams
GB2539239B (en) * 2015-06-10 2017-10-04 Gurulogic Microsystems Oy Encoders, decoders and methods utilizing mode symbols
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
JP7027706B2 (en) * 2017-06-15 2022-03-02 ソニーグループ株式会社 Transmitter, receiver, transmission method, reception method and recording medium
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
US11139827B2 (en) 2019-03-15 2021-10-05 Samsung Electronics Co., Ltd. Conditional transcoding for encoded data
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

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5272478A (en) * 1992-08-17 1993-12-21 Ricoh Corporation Method and apparatus for entropy coding

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3394352A (en) * 1965-07-22 1968-07-23 Electronic Image Systems Corp Method of and apparatus for code communication
CA1291820C (en) * 1986-09-15 1991-11-05 William B. Pennebaker Probability estimation based on decision history
CA1291821C (en) * 1986-09-15 1991-11-05 Glen G. Langdon, Jr. Arithmetic coding encoder and decoder system
US5097261A (en) * 1989-11-22 1992-03-17 International Business Machines Corporation Data compression for recording on a record medium
EP0442548B1 (en) * 1990-01-30 1995-08-02 Laboratoires D'electronique Philips S.A.S. Variable length coding and decoding devices for digital data
US5045852A (en) * 1990-03-30 1991-09-03 International Business Machines Corporation Dynamic model selection during data compression
KR950000286B1 (en) * 1992-05-28 1995-01-12 삼성전자 주식회사 Coding device and method for fax
US5475388A (en) * 1992-08-17 1995-12-12 Ricoh Corporation Method and apparatus for using finite state machines to perform channel modulation and error correction and entropy coding
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5272478A (en) * 1992-08-17 1993-12-21 Ricoh Corporation Method and apparatus for entropy coding

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19732626C2 (en) * 1996-12-02 2002-08-01 Hewlett Packard Co Process for processing a compressed data stream
DE19925667B4 (en) * 1998-06-04 2005-12-22 Ricoh Co., Ltd. Adaptive coding with adaptive speed

Also Published As

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

Similar Documents

Publication Publication Date Title
DE19536401A1 (en) Method and device for encoding and decoding data
DE19635251C2 (en) Method and apparatus for compressing any data
DE4446072A1 (en) Method and device for parallel coding and decoding of data
DE19531049C2 (en) Data compression method and encoding device
DE69636150T2 (en) System for coding moving pictures, and system for variable length coding
DE19544761C2 (en) Method of compressing an entered symbol
DE19506164C2 (en) Method for compressing entered symbols into code words
DE4437790B4 (en) Method and apparatus for using finite state machines to perform channel modulation and error correction and entropy coding
DE19534943B4 (en) Device for compression using embedded small waves
DE19606178C2 (en) A method of compressing an array of pixel values and decompressing an array of pixel values from a compressed data set
DE19742417B4 (en) Apparatus and method for performing M-end machine-end-state entropy-coding or entropy-coding with a finite state machine
DE102009006389B4 (en) Hybrid random number generator
EP2109993B1 (en) Device and method for encoding a block of transformation coefficients
DE60128359T2 (en) RE-USE OF SOLID CHECKSUMINFORMATION IN DATA HEAD COMPRESSION
DE4314741A1 (en) Huffman decoder architecture for higher operating speed and reduced memory requirements
EP2489187B1 (en) Method for coding symbols from a digital image sequence
DE19534730B4 (en) Method for coding and decoding data
EP2068448B1 (en) Method and arrangement for arithmetic encoding and decoding with application of several tables
DE102006029326A1 (en) Adaptive video compression of a graphical user interface using application metadata
DE19958962A1 (en) Video coder for variable length code, has code generator delivering code information and code length information to bit packer, via buffers
DE102007020292A1 (en) Method for compressing data using run-length coding, in particular for medical image data
DE19900150B4 (en) Apparatus and method for encoding information with a finite state machine
DE60015755T2 (en) LOSS-FREE ADAPTIVE CODING OF DATA OF A FINAL ALPHABET
DE102011100936B4 (en) Techniques for storing and retrieving pixel data
DE19738917A1 (en) Bidirectional scanning system for video coefficients

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20140401