DE19536401B4 - Method and device for coding and decoding data - Google Patents

Method and device for coding and decoding data Download PDF

Info

Publication number
DE19536401B4
DE19536401B4 DE19536401A DE19536401A DE19536401B4 DE 19536401 B4 DE19536401 B4 DE 19536401B4 DE 19536401 A DE19536401 A DE 19536401A DE 19536401 A DE19536401 A DE 19536401A DE 19536401 B4 DE19536401 B4 DE 19536401B4
Authority
DE
Germany
Prior art keywords
data
memory
codeword
codewords
bit
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.)
Expired - Fee Related
Application number
DE19536401A
Other languages
German (de)
Other versions
DE19536401A1 (en
Inventor
Edward L. Menlo Park Schwartz
Michael J. Menlo Park Gormish
James D. Menlo Park Allen
Martin Menlo Park 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
    • 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
    • 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)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Image Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Verfahren zum Codieren eines Datenstroms, das folgendes umfasst:
a) ein eingehender Datenstrom wird in parallele Datenströme während der Codierung durch einen Entropiecodierer geteilt und es werden von dem Entropiecodierer Codewörter variabler Länge ausgegeben, wobei die Codewörter den geteilten Datenstrom darstellen;
b) die ausgegebenen Codewörter variabler Länge werden in einer Ordnung geordnet, die am Beginn eines jeden Codeworts festgehalten ist; und
c) die geordneten Codewörter variabler Länge werden in Codewörter fester Länge transformiert.
A method of encoding a data stream comprising:
a) an incoming data stream is split into parallel data streams during encoding by an entropy coder and variable length codewords are output from the entropy coder, the codewords representing the shared data stream;
b) the output variable length codewords are ordered in an order noted at the beginning of each codeword; and
c) the ordered variable length codewords are transformed into fixed length codewords.

Figure 00000001
Figure 00000001

Description

Die Erfindung betrifft Verfahren und eine Einrichtung zum Codieren und Decodieren von Daten und betrifft insbesondere das Gebiet der Datenkompressions- und -Dekompressionssysteme; darüber hinaus betrifft die Erfindung ein Verfahren und eine Einrichtung zum parallelen Codieren und Decodieren von Daten in Kompressions/Dekompressionssystemen.The The invention relates to methods and apparatus for coding and Decoding of data and in particular concerns the field of data compression and decompression systems; about that In addition, the invention relates to a method and a device for parallel coding and decoding of data in compression / 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önnen, nämlich ein verlustbehaftetes und ein verlustfreies Codieren. Verlustbehaftetes Codieren schließt ein Codieren ein, welches auf den Verlust von Information hinausläuft, so daß es keine Garantie für eine einwandfreie Rekonstruktion der ursprünglichen 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 will data compression in large Scope especially for storing and transferring large amounts of data used. The prior art discloses various data compression techniques which can be divided into two broad categories, namely one lossy and lossless coding. lossy Encoding closes coding, which results in the loss of information, so that it no guarantee for a perfect reconstruction of the original or original data gives. With lossless compression, all information is restored and the data is compressed in a way that is one perfect reconstruction permits.

Bei verlustfreier Kompression werden eingegebene Symbole in ausgegebene Codewörter umgesetzt. Wenn die Kompression erfolglich ist, werden die Codewörter in weniger Bits dargestellt als die Anzahl eingegebener Symbole. Verlustfreie Codiermethoden enthalten Wörterbuchmethoden des Codierens (z.B. Lempel-Ziv), ein Lauflängencodieren, ein enumeratives Codieren und ein Entropie-Codieren.at lossless compression will be entered symbols in output codewords implemented. If the compression is successful, the codewords in less bits than the number of symbols entered. lossless Coding methods include dictionary methods coding (e.g., Lempel-Ziv), a run-length coding, an enumerative Coding and entropy coding.

Entropie-Codieren besteht aus einem verlustfreien Codierverfahren, bei welchem versucht wird, Daten nahe bei der Entropie-Grenze mit Hilfe bekannter oder geschätzer Symbolwahrscheinlichkeiten 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 wahrscheinlichste Symbol (MPS) und das am wenigsten wahrscheinliche Symbol (LPS) ausgedrückt sind. Beispiel von binären Entropie-Codierern 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,47 A mit dem Titel "Verfahren und Einrichtung zum Entropie-Codieren" (J.D. Allen), eingereicht am 21. Dezember 1993 von der Anmelderin der vorliegenden Erfindung. Siehe ebenfalls M.J. Gormisch and J.D. Allen, "Finite 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 endlichen Automaten zur Kompression benutzt.Entropy coding consists of a lossless coding method in which attempts are made , data close to the entropy boundary using known or estimated symbol probabilities to compress. Entropy codes contain Huffman codes, arithmetic Codes and binary Entropy codes. binary Entropy encoders are lossless encoders which are only binary (yes / no) Decisions often act as the most likely symbol (MPS) and the least probable symbol (LPS). example from binary Entropy encoders contain IBM's Q coder and a coder referred to as the B coder. (Regarding more Information about the B-coder See US Patent No. 5,272,447 A entitled "Method and Apparatus for Entropy Coding" (J.D. Allen), filed on December 21, 1993 by the assignee of the present invention. See also M.J. Gormisch and J.D. Allen, "Finite 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 used a finite automaton for compression.

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 Binärentscheidungen übersetzt, und ein Kontextfach (context bin) für jede Entscheidung schafft. Sowohl die Folge an binären Entscheidungen 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 Wahrscheinlichkeitsbewertung wird üblicherweise durch eine Klasse dargestellt, 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 Entscheidung 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 darzustellen. 33 shows a block diagram of a known compression and decompression system with a binary entropy coder. To encode data into a text model (CM) 101 which translates the inputted 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 fans are of the context model 101 to the probability rating or estimation (PE) module 102 issued. The PE module 102 gets each text box and generates a probability score for each binary decision. The actual probability score is usually represented by a class called a 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 probable state (ie, whether the decision corresponds to the MPS). A bitstream generator (BG) module 103 receives the probability score (ie the P-class) and the determination of whether the binary decision is probable or not as inputs. Accordingly, the BG module generates 103 a compressed 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 Ereignis) 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 zurückgebrachte Bit und verwendet es, um die ursprünglichen Daten zu erzeugen und um das Kontextfach für die nächste binäre Entscheidung zu aktualisieren.The context model provides for coding 104 a context pocket on the PE module 105 , the probability class (P class) on the BG module 107 on the basis of the context. The BG module 106 is intended to accommodate the probability class. According to the probability class and the compressed data, the BG module returns 106 back to one bit representing whether the binary decision (ie the event) is in the most probable state. The PE module 105 receives the bit, updates the probability score based on the received bit, and passes the result to the context model 104 back. The context model 104 gets the returned bit 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ückkopplungsschleife. Um den Decodierprozeß neu darzustellen, verwendet das Kontextmodell früher decodierte Daten, um einen Kontext zu erzeugen. Der Wahrscheinlichkeitsbewertungsmodul benutzt den Kontext, um eine Wahrscheinlichkeitsklasse zu erzeugen. Der Bitstrom-Generator verwendet die Wahrscheinlichkeitsklasse und die komprimierten Daten, um zu bestimmen, ob das nächste Bit das wahrscheinliche oder unwahrscheinliche Ergebnis ist. Der Wahrscheinlichkeits-Bewertungsmodul benutzt das wahrscheinliche/unwahrscheinliche Ergebnis, um ein Ergebnisbit zu erzeugen (und um die Wahrscheinlichkeitsbewertung für den Kontext zu aktualisieren). Das Ergebnisbit wird von dem Kontextmodell verwendet, um die Entwicklung von früheren Daten zu aktualisieren. Alle diese Schritte sind zum Decodieren eines einzigen Bits erforderlich. Da das Kontextmodell auf das Ergebnisbit warten muss, um dessen Entwicklung zu aktualisieren, bevor es den nächsten Kontext schaffen kann, muss das Decodieren des nächsten Bits warten. Es sollte vermieden werden, darauf zu warten, dass die Kopplungsschleife vor einem Decodieren des nächsten Bits vervollständigt ist. Mit anderen Worten, es sollte möglichst mehr als ein Bit oder ein Codewort zu einer bestimmten Zeit decodiert werden, um die Geschwindigkeit zu erhöhen, mit welcher komprimierte Daten decodiert werden.A difficulty with decoders that use binary entropy codes, such as IBM's Q-coder and B coders are that they are slow, even if they are hardware-based. This mode of operation requires a single large slow feedback loop. To re-render the decoding process, the context model uses earlier decoded data to create a context. The probability evaluation module uses the context to generate a probability class. The bitstream generator uses the likelihood class and the compressed data to determine if the next bit is the likely or improbable result. The probabilistic evaluation module uses the probable / improbable result to generate a result bit (and to update the probability score for the context). The result bit is used by the context model to update the evolution of previous data. All of these steps are required to decode a single bit. Since the context model must wait for the result bit to update its evolution before it can create the next context, the decoding of the next bit must wait. It should be avoided to wait for the coupling loop to complete before decoding the next bit. In other words, more than one bit or one codeword should be decoded as much as possible at a particular time to increase the rate at which compressed data is decoded.

Eine weitere Schwierigkeit bei Decodierern mit binären Entropie-Codes besteht darin, dass Daten veränderlicher Länge verarbei werden müssen. In den meisten Fällen haben die zu codierenden 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 kostspielige und/oder langsame Hardware und/oder Software erfordern. Ferner muss bei herkömmlichen Systemen dieses Verschieben in zeitkritischen Rückkopplungsschleifen vorgenommen werden, welche die Leistungsfähigkeit des Decodierers begrenzen. Es würde also vorteilhaft sein, die Bitpegel-Manipulation des Datenstroms aus zeitkritischen Rückkopplungsschleifen zu entfernen, so dass eine Parallelität angewendet werden könnte, um die Geschwindigkeit zu erhöhen.A There is further difficulty with decoder with binary entropy codes in that data is more variable Length processed Need to become. In most cases the code words to be coded have variable lengths. On the other hand, code other systems variable length symbols (uncoded data). at For processing variable length data, the data must be at a bit level be moved to the correct next data for the decoder or to create a coding operation. These bit level manipulations on the data stream require expensive and / or slow hardware and / or software. Furthermore, in conventional Systems made this move in time-critical feedback loops which are the efficiency limit the decoder. It would So be beneficial, the bit level manipulation of the data stream from time-critical feedback loops so that parallelism could be applied to to increase the speed.

US 5,272 478 A , offenbart ein Verfahren und einen Apparat zum Entropiecodieren. Eine Zustandsmaschine wird dabei bereitgestellt, die eine Vielzahl von Zuständen hat. Jeder Zustand hat wenigstens ein Übergangspaar. Jedes Element des Übergangspaares umfasst Null oder mehr Bits, die für den kompakten Code, der ausgegeben werden soll, representativ sind, und die Identifikation des nächsten Zustands, zu dem vorzuschreiten ist. Das Übergangspaar spiegelt die Ausgabe einer "Ja"- und einer "Nein"-Antwort wieder, die mit der Wahrscheinlichkeit der Daten komprimiert zu werden in Zusammenhang steht und ob die Daten innerhalb dieser Wahrscheinlichkeit fallen. US 5,272,478 A discloses a method and apparatus for entropy coding. A state machine is provided which has a plurality of states. Each state has at least one transition pair. Each element of the transition pair comprises zero or more bits which are representative of the compact code to be output and the identification of the next state to be advanced. The transition pair reflects the output of a "yes" and a "no" response related to the probability of the data being compressed and whether the data falls within that probability.

Aus US 5,374,916 A ist ein Prozess zur automatischen elektronischen Identifikation von Datentypen bekannt. Dieser Prozess identifiziert den Datentyp eines Eingangsdatenstroms und wählt dann in Antwort auf den identifizierten Datentyp wenigstens ein Datenkompressionsverfahren aus einem Satz von Datenkompressionsverfahren aus, der ein optimales Kompressionsverhältnis für jenen bestimmten Datentyp bereitstellt. Dadurch wird das Kompressionsverhältnis für den Eingangsdatenstrom maximiert. Der Datenkompressionsprozess kann weiter die Rate der Kompression während der Datenkompression ändern.Out US 5,374,916 A is a process for the automatic electronic identification of data types known. This process identifies the data type of an input data stream and then, in response to the identified data type, selects at least one data compression method from a set of data compression methods that provides an optimal compression ratio for that particular data type. This maximizes the compression ratio for the input data stream. The data compression process may further change the rate of compression during data compression.

Aus US 5,045,852 A ist ein dynamisches Modell zum Auswählen während der Datenkompression bekannt. Wenigstens zwei Modelle laufen ab und werden verglichen und das Modell mit der besten Codierleistungsfähigkeit für einen Block komprimierter Daten wird ausgewählt.Out US 5,045,852 A For example, a dynamic model for selecting during data compression is known. At least two models expire and are compared, and the best coding performance model for a block of compressed data is selected.

Aus US 3,394,352 ist ein Verfahren für codierte Kommunikation bekannt. Die Anzahl der zu tragenden Symbole wird minimiert und folglich wird die Übertragungszeit reduziert. Hierzu wird der effizienteste Code bestimmt. Zu diesem Zweck werden die Symbole durch eine Vielzahl von Codierern verarbeitet und die codierte Darstellung der Symbole wird hinsichtlich der Zahl der Symbole gezählt.Out US 3,394,352 a method for coded communication is known. The number of symbols to be carried is minimized and consequently the transmission time is reduced. For this the most efficient code is determined. For this purpose, the symbols are processed by a plurality of encoders and the coded representation of the symbols is counted in terms of the number of symbols.

Aufgabe der Erfindung ist es ein Verfahren zum Codieren eines Datenstroms bereitzustellen, das eine schnellere Codierung eines Datenstroms erlaubt, ohne die herkömmlichen Übertragungswege zu modifizieren. Weiter soll ein entsprechendens Codiersystem, Decodiersystem, Codierer und Decodierer geschaffen werden.task The invention is a method of encoding a data stream to provide a faster encoding of a data stream allowed, without the traditional transmission paths to modify. Furthermore, a corresponding coding system, decoding system, Encoder and decoder are created.

Vorstehende Aufgabe wird durch die Gegenstände der Ansprüche 1, 8, 61, 70, 75, 86, 88, 92 und 105 gelöst. Weiter gehende Ausführungsformen gehen aus den üblichen Ansprüchen hervor.above Task is through the objects the claims 1, 8, 61, 70, 75, 86, 88, 92 and 105 solved. Further embodiments go out of the ordinary claims out.

Der Codierer und der Decodierer der Erfindung erzeugen ein ausgeglichenes, paralleles Entropie-System, welches sowohl ein Real zeit-Codieren als auch ein Realzeit-Decodieren in einer preiswerten, sehr schnellen Hardware durchführt.Of the Encoder and the decoder of the invention generate a balanced, parallel entropy system, which is both a real-time encoding as well as real-time decoding in a cheap, very fast Hardware performs.

Somit sind Verfahren und Einrichtungen zum Dekomprimieren und Komprimieren von Daten geschaffen. Ein Codierer hat für eine Verwendung in einem Kompressionssystem einen Decodierer zum Decodieren von mittels des Codierers erzeugter Information. Der Codierer der Erfindung schliesst einen Coder zum Erzeugung von Codewort-Information entsprechend Daten ein. Der Codierer schliesst auch eine Umordnungseinheit ein, die einen codierten Datenstrom entsprechend der Codewort-Information von dem Coder erzeugt. Die Umordnungseinheit weist eine Durchlaufzähl-Umordnungseinheit, um Codewörter in einer Decodierreihenfolge anzuordnen, und eine Bitpackeinheit auf, um Codewört 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.Consequently are methods and devices for decompressing and compressing created by data. An encoder has to be used in one Compression system a decoder for decoding by means of Encoder generated information. The encoder of the invention concludes a coder for generating codeword information accordingly Data. The encoder also includes a rearrangement unit, the one coded data stream corresponding to the codeword information generated by the coder. The rearrangement unit has a pass count rearrangement unit, around codewords in a decode order, and a bitpack unit on, to codewords variable length to join nested words of fixed length and around the interleaved fixed length words in one of the decoders to deliver the required order.

Nachfolgend wird die Erfindung anhand von bevorzugten Ausführungsformen unter Bezugnahme auf die anliegenden Zeichnungen im einzelnen beschrieben. Es zeigen:following the invention will be described with reference to preferred embodiments to the accompanying drawings described in detail. Show it:

1A ein Blockdiagramm eines Codiersystems gemäß der Erfindung; 1A a block diagram of a coding system according to the invention;

1B ein Blockdiagramm einer Ausführungsform eines Codiersystems gemäß der Erfindung; 1B a block diagram of an embodiment of a coding system according to the invention;

1C ein Blockdiagramm einer Ausführungsform des Decodiersystems der Erfindung, welches Kontextfächer parallel verarbeitet; 1C a block diagram of one embodiment of the decoding system of the invention, which processes context boxes in parallel;

1D ein Blockdiagramm einer Ausführungsform des Decodiersystems der Erfindung, welches Wahrscheinlichkeitsklassen parallel verarbeitet; 1D a block diagram of an embodiment of the decoding system of the invention, which processes probability classes in parallel;

2 einen nicht-verschachtelten Codestrom der Erfindung; 2 a non-interlaced code stream of the invention;

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

4 ein Beispiel einer Wahrscheinlichkeits-Bewertungstabelle und eines Bitstrom-Generators für den R-Coder der Erfindung; 4 an example of a probability evaluation table and a bitstream generator for the R-Coder of the invention;

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

6 ein Blockdiagramm einer Ausführungsform eines Bitgenerators der Erfindung; 6 a block diagram of an embodiment of a bit generator of the invention;

7 ein Blockdiagramm einer Ausführungsform einer Umordnungseinheit der Erfindung; 7 a block diagram of an embodiment of a rearrangement unit of the invention;

8 ein Blockdiagramm einer Ausführungsform der Durchlaufzähl-Umordnungseinheit der Erfindung; 8th a block diagram of one embodiment of the pass count reordering unit of the invention;

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

10 ein Blockdiagramm einer Ausführungsform einer Bitpackungseinheit der Erfindung; 10 a block diagram of an embodiment of a bit packing unit of the invention;

11 ein Blockdiagramm einer Ausführungsform einer Packlogik der Erfindung; 11 a block diagram of one embodiment of a packaging logic of the invention;

12 ein Blockdiagramm eines Codier-Bitgenerators der Erfindung; 12 a block diagram of a coding bit generator of the invention;

13A ein Blockdiagramm einer Ausführungsform des Decodiersystems der Erfindung; 13A a block diagram of an embodiment of the decoding system of the invention;

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

13C ein Blockdiagramm einer Ausführungsform der FIFO-Struktur der Erfindung; 13C a block diagram of an embodiment of the FIFO structure of the invention;

14A eine Ausführungsform einer Decodier-Pipeline der Erfindung; 14A an embodiment of a decoding pipeline of the invention;

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

15A ein Blockdiagramm einer Ausführungsform einer Schiebeeinheit der Erfindung; 15A a block diagram of an embodiment of a sliding unit of the invention;

15B ein Blockdiagramm einer weiteren Ausführungsform einer Schiebeeinheit der Erfindung; 15B a block diagram of another embodiment of a sliding unit of the invention;

16 ein Blockdiagramm eines Systems mit einem externen Kontextmodell; 16 a block diagram of a system with an external context model;

17 ein Blockdiagramm eines anderen Systems mit einem externen Kontextmodell; 17 a block diagram of another system with an external context model;

18 ein Blockdiagramm einer Ausführungsform eines Decodierers der Erfindung; 18 a block diagram of an embodiment of a decoder of the invention;

19 ein Blockdiagramm einer Ausführungsform eines Decodierers mit separaten Bitgeneratoren; 19 a block diagram of an embodiment of a decoder with separate bit generators;

20 ein Blockdiagramm einer Ausführungsform eines Bitgenerators der Erfindung; 20 a block diagram of an embodiment of a bit generator of the invention;

21 ein Blockdiagramm einer Ausführungsform einer langen Durchlaufeinheit der Erfindung; 21 a block diagram of an embodiment of a long pass unit of the invention;

22 ein Blockdiagramm einer Ausführungsform einer kurzen Durchlaufeinheit der Erfindung; 22 a block diagram of an embodiment of a short pass unit of the invention;

23 ein Blockdiagramm einer Ausführungsform einer Initialisierungs- und Steuerlogik der Erfindung; 23 a block diagram of one embodiment of an initialization and control logic of the invention;

24 ein Blockdiagramm einer Ausführungsform von Umordnungsdaten mit Hilfe eines "Snooper"-Codierer; 24 a block diagram of an embodiment of rearrangement data using a "snooper"encoder;

25 ein Blockdiagramm einer weiteren Ausführungsform einer Umordnungseinheit; 25 a block diagram of another embodiment of a rearrangement unit;

26 ein Blockdiagramm einer weiteren Ausführungsform einer Umordnungseinheit mit Hilfe einer gemischten Schlange (merged queue); 26 a block diagram of another embodiment of a reordering unit using a mixed queue (merged queue);

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

28 ein Blockdiagramm eines Bandbreiten-Anpassungssystems, welches die Erfindung benutzt; 28 a block diagram of a bandwidth adjustment system using the invention;

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

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

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

32 einen Graphen eines Codiererwirkungsgrades gegenüber einer MPS-Wahrscheinlichkeit der Erfindung, und 32 a graph of encoder efficiency versus MPS probability of the invention, and

33 ein Blockdiagramm eines herkömmlichen binären Entropie-Codierers und -Decodierers. 33 a block diagram of a conventional binary entropy coder 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ührungsformen der Erfindung zu schaffen. Für den Fachmann ist selbstverständlich, daß die vorliegende Erfindung auch ohne diese spezifischen Details in der Praxis ausgeführt werden kann. Ebenso sind bekannte Schaltungen in Blockdiagrammform nicht im einzelnen dargestellt, um das Verständnis der Erfindung nicht unnötig zu erschweren.Now discloses a method and apparatus for parallel coding and decoding data. In the following description a number of specific details are given, such as a special number of bits, a number of encoders, specific ones Probabilities, data types, etc., to get an accurate understanding of preferred embodiments to provide the invention. For the expert is of course that the present invention without these specific details in the Practice performed can be. Likewise, known circuits are in block diagram form not shown in detail in order not to complicate the understanding of the invention unnecessarily.

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 verwendet werden, um den Inhalt ihrer Arbeit anderen Fachleuten möglichst effektiv zu übermitteln. Ein Algorithmus wird hier und im allgemeinen als eine in sich wiederspruchfreie 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, verknüpft, verglichen oder auf andere Weise verarbeitet werden können. Es hat sich immer, prinzipiell aus Gründen einer gemeinsamen Anwendung als günstig erwiesen, auf diese Signale als Bits Werte, Elemente, Symbole, Zeichen, Terme, Zahlen o.ä. zu verweisen.Some portions of the detailed description which follow are presented in the form of algorithms and symbolic representations of operations on data bits in a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the content of their work to others skilled in the art. One Algorithm is here and generally considered to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical processing of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, linked, compared, or otherwise processed. It has always proven to be beneficial, principally for reasons of common application, to these signals as bits of values, elements, symbols, characters, terms, numbers, or the like. to refer.

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 angewendet werden. Wenn es nicht speziell ausgeführt wird oder sonst aus den folgenden Erörterungen offensichtlich wird, weisen überall in der Erfindung Erläuterungen, die Begriffe verwenden, wie, "Verarbeiten" oder "Berechnen" oder "Rechnen" oder "Bestimmen" oder "Anzeigen" o.ä., auf die Funktion und Prozesse eines Computersystems oder einer ähnlichen elektronischen Berechnungsvorrichtung hin, welche Daten, welche als physikalische, (elektronische) 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 Informationspeicher-Übertragungs- oder Anzeigevorrichtungen dargestellt sind.It However, it should be remembered that all these and similar Terms are assigned to the corresponding physical quantities and only convenient terms that are applied to these sizes. If it does not run specially will become apparent or otherwise evident from the following discussions throughout the invention explanations, use terms such as, "processing" or "calculating" or "calculating" or "determining" or "displaying" or similar, to which Function and processes of a computer system or similar electronic computing device, which data, which as physical, (electronic) sizes in the computer system registers and memories are displayed, edited and other data transformed, which in similar Way as physical quantities in the Computing system memories or registers or other such information storage transfer or display devices are shown.

Die Erfindung betrifft auch eine Einrichtung zum Durchführen der Operationen. Diese Einrichtung kann speziell für die geforderten Zwecke ausgeführt werden, oder sie kann einen Universalrechner aufweisen, der selektiv durch ein in dem Computer gespeichertes Programm aktiviert oder rekonfiguriert wird. Die hier dargestellten Algorithmen und Anzeigen sind nicht spezifisch 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 spezialisierte Einrichtung auszuführen, um die verschiedenen Verfahrensschritte durchzuführen. Die geforderte Struktur einer Vielzahl dieser Geräte ergibt sich aus der nachstehenden Beschreibung. Außerdem wird die Erfindung nicht bezüglich irgendeiner speziellen Programmiersprache beschrieben. Vielmehr können eine Vielzahl von Programmiersprachen verwendet werden, um die Lehren der Erfindung, wie sie nachstehend beschrieben ist, auszuführen.The The invention also relates to a device for carrying out the Operations. This device can be designed specifically for the required purposes, or it may comprise a general-purpose computer that selectively through activates or reconfigures a program stored in the computer becomes. The algorithms and displays shown here are not specifically to a specific computer or other device based. Different general purpose computers can work with programs accordingly used herein or it may prove to be an even more specialized facility perform, to perform the various process steps. The required structure a variety of these devices will be apparent from the following description. In addition, will not related to the invention any special programming language. Much more can A variety of programming languages are used to teach the lessons of the invention as described below.

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ührungsform der Decodierer der Erfindung ein Decodieren bei Daten in Realzeit durch. Der Realzeit-Codierer und der Realzeit-Decodierer bilden zusammen ein ausgeglichenes Codiersystem.The Invention provides a parallel entropy coding system. The system comprises an encoder and a decoder. In one embodiment leads the Encoders encode data in real time. In similar Way leads in one embodiment the decoder of the invention decodes data in real time by. The real-time coder and the real-time decoder form together 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 decodierenden Datenstrom zugeordnet. Die Zuordnung des Datenstroms kommt unterwegs (on the fly) vor, wobei die Decodier-Ressourcen Daten gleichzeitig decodieren, um dadurch den Datenstrom parallel zu decodieren. Um die Datenzuordnung in einer Weise zu ermöglichen, welche eine wirksame Verwendung der Decodier-Ressourcen 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 The invention provides a system which provides lossless coded data decoded in parallel. The data is decoded in parallel with help of several decoding resources. Each of the multiple decoding resources is Data (e.g., codewords) assigned from the data stream to be decoded. The assignment of the Data stream occurs on the fly, with the decoding resources Simultaneously decode data to thereby parallel the data stream to decode. To allow data mapping in a way which enables efficient use of the decoding resources becomes the data stream orderly. This is called parallel processing of the data stream. The ordering of data allows, that each Decoding resource decodes any or all encoded data, without on a feedback to wait for the context model.

In 1A ist ein Decodiersystem der Erfindung ohne die herkömmliche langsame Rückkopplungsschleife dargestellt. Ein Eingabepuffer 204 erhält codierte Daten (d.h. Code-Worte), und ein Rückkopplungssignal von einem Decodierer 205 und liefert codierte Daten in einer vorherbestimmten Reihenfolge (z.B. Kontextfach-Reihenfolge) an den Decodierer 205 der Erfindung, welcher die codierten Daten decodiert. Der Decodierer 205 enthält mehrere Decodierer (z,.B. 205A, 205B, 205C, usw).In 1A For example, a decoding system of the invention is shown without the conventional slow feedback loop. An input buffer 204 receives coded data (ie, code words) and a feedback signal from a decoder 205 and provides encoded data in a predetermined order (eg, context-bin order) to the decoder 205 of the invention which decodes the encoded data. The decoder 205 contains several decoders (z, .B. 205A . 205B . 205C , 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 jedes Kontextfach in seiner Gruppe von Kontexten von einem Eingabepuffer 204 aus. Mit Hilfe dieser Daten erzeugt jeder Decodierer 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 zuzuordnen.In one embodiment, each of the decoders provides 205A . 205B . 205C , etc. Data for a group of contexts. Each of the decoders in the decoder 205 returns encoded data for each context bin in its group of contexts from an input buffer 204 out. With the help of these data, each decoder generates 205A . 205B . 205C etc. the decoded data for each group of context fans. The context model is not required to map encoded data to a particular group of context fans.

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 speichern, die weder codierte noch uncodierte Daten sind, wie Durchlaufzählwerte (run counts). In diesem Fall speichert der Speicher 207 Daten in einer kompakten, jedoch nicht entropie-codierten Form.The decoded data is received from the decoder 205 to a memory 207 for decoded data (eg 207A . 207B . 207C , etc.). This can be the memory 207 Store intermediate data that is neither coded nor uncoded data, such as run counts. In this case, the memory stores 207 Data in a compact, but not entropy-coded 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 existieren 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ückkopplungsschleife 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 empfangen werden.An independently working context model 206 is provided to the previously decoded data from the memory 207 (ie 207A . 207B . 207C , etc.) in accordance with a feedback signal which it sends to the memory 207 emits. As a result, there are two independent feedback loops, one between the decoder 205 and the buffer 204 and a second between the context model 206 and the memory 207 , Since the large feedback loop is eliminated, the decoders are in the encoder 205 (eg 205A . 205B . 205C , etc) are able to decode their associated codewords as they come from the buffer 205 be received.

Das Kontextmodell schafft den Speicherteil des Codiersystems und teilt einen Datensatz (z.B. ein Bild) auf verschiedene Kategorien (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-Bewertungsmodell und jedes Kontextfach hat seinen eigenen Zustand (wobei Wahrscheinlichkeits-Bewertungsmodelle gemeinsam benutzt werden). Daher könnte jedes Kontextfach ein anderes wahrscheinlichkeits-Bewertungsmodell und/odereinen anderenBitstrom-Generator benutzen. 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 splits a record (e.g., a picture) of different categories (e.g. Context subjects) based on the memory up. In the invention, the context fans are called independently ordered records considered. In one embodiment has every group of context fans their own probability rating model and each context box has its own state (being probability assessment models to be shared). Therefore, every context box could be one another probability assessment model and / or use another bitstream generator. Consequently are the data is ordered or processed in parallel, and data from the Data streams are associated with the individual encoders for encoding.

Parallelität dem klassischen Entropie-Codiermodell hinzufügenParallelism the classic Add entropy coding model

Um den Datenstrom parallel anzuordnen, können die Daten gemäß einem Kontext, einer Wahrscheinlichkeit, einem Tiling, einer Codewort-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 1B dargestellt.In order to arrange the data stream in parallel, the data may be divided according to a context, a probability, a tiling, a codeword sequence (based on codewords), etc. Reordering the encoded data stream, regardless of parallelism, is one method used to arrange data or probability in parallel in another point. A parallel coder portion of an encoding system of the invention to which data has been supplied that has been differentiated by a context model (CM) is shown in FIG 1B shown.

In 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 Eingabedaten 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-Codierer mit drei Codern dargestellt. Obwohl nur drei parallele Coder dargestellt sind, kann irgendeine Anzahl Coder verwendet werden.In 1B the context-dependent parallel encoding part has a context model (CM) 214 , Probability Assessment Modules (PEMs) 215 to 217 and bitstream generators (BGs) 218 to 220 on. The context model 214 is intended to receive coded input data and is also compatible with the PE modules 215 to 217 connected, in turn, with bitstream generators 218 to 220 are connected, which code streams 1, 2 and 3 deliver. Each PEM and BG pair has a coder. Therefore, the parallel encoder is shown with three coders. Although only three parallel coders are shown, any number of coders may 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-Codier-Ressourcen ab. Individuelle Kontexte oder Gruppen von Kontexten 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 splits a data stream into different contexts in the same way as a conventional context model and delivers the multiple streams to the parallel hardware encoding resources. Individual contexts or groups of contexts are based on separate Probability Assessors (PEMs) 215 to 217 and bit generators (BGs) 218 to 220 directed, each emit a coded stream.

1C ist ein Blockdiagramm einer Ausführungsform des Decodierteils des Decodiersystems der Erfindung. In 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 zugeordnet. 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 benutzen 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 richtigen Reihenfolge auszuwählen, um dadurch die ursprünglichen Daten wieder zu erzeugen. Folglich erhält das CM 227 das dekomprimierte Datenbit von dem entsprechenden PEM und BG, welche tatsä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 decodieren, 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. 1C Fig. 10 is a block diagram of one embodiment of the decoding portion of the decoding system of the invention. In 1C is a context-dependent parallel decoder with BGs 221 to 223 , PEMs 224 to 226 and a CM 227 shown. Code streams 1 to 3 are BGs 221 to 223 connected, which also with PEMs 224 to 226 are connected. The PEMs 224 to 226 are also with the CM 227 connected, which outputs 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 bitstream generators (BG) 221 to 223 returns a bit representing whether the binary decision is in a more probable state than the PEMs 224 to 226 to return decoded bits (eg the binary decision). Each of the PEMs 224 to 226 is one of the BGs 221 to 223 which indicates which code to use 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 to thereby regenerate the original data. Consequently, the CM gets 227 the decompressed data bit from the corresponding PEM and BG which actually reorder the data into the original order. The controller for this embodiment flows in the reverse direction of the data stream. The BG and PEM can decode data before using the CM 227 needed, and one or more bits in advance. On the other hand, the CM 227 request (but not receive) one 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 1C dargestellte Konfiguration ist entsprechend ausgelegt, um den PEM und den BG eng zu koppeln. Der IBM Q-Codierer ist ein gutes Beispiel eines Codierers mit einem eng gekoppelten PEM und BG. Örtliche Rückkopplungsschleifen zwischen diesen 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 abgeben. 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.In the 1C The configuration shown is designed to tightly couple the PEM and the BG. The IBM Q encoder is a good example of a coder with a tightly coupled PEM and BG. Local feedback loops between these two components are not a fundamental limitation in system design. In another interpretation, the PEM could differentiate the data and deliver it to parallel BG units. Consequently, it would only be a CM and PEM, and the BG will be divided. Adaptive Huffman 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 1D dargestellt. In diesem Fall werden Wahrscheinlichkeitsklassen parallel behandelt und jeder Bitstrom-Generator ist einer spezifischen Wahrscheinlichkeitsklasse zugeordnet und erhält Kenntnis von dem Ergebnis. In 1D sind die codierten Datenströ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-Generatoren erhält codierte Daten von einer Quelle, die einer Wahrscheinlichkeitsklasse 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 Wahrscheinlichkeitsklasse aus. Die Wahrscheinlichkeitsklasse wird durch das Kontextfach vorgeschrieben, das durch das CM 236 vorgesehen ist. Auf diese Weise werden decodierte Daten durch paralleles Verarbeiten von Wahrscheinlichkeitsklassen erzeugt.A similar decoding system that uses the PEM to differentiate the data and send it to parallel BGs is in FIG 1D shown. In this case, probability classes are handled in parallel and each bitstream generator is associated with a specific probability class and is aware of the result. In 1D are the coded data streams 1 to 3 to one of several bit stream generators (eg BG 232 . 233 . 234 , etc.), which are connected to receive them. Each of the bitstream generators is connected to the PEM 235 connected, in turn, with the CM 236 connected is. In this configuration, each of the bit stream generators decodes coded data, and the decoding results are received from the PEM 235 (instead of the CM 236 ). Each of the bit stream generators receives coded data from a source associated with a probability class (ie, where the coded data may be from any context box). The PEM 235 selects the bitstream generators using a likelihood class. The likelihood class is dictated by the context box provided by the CM 236 is provided. In this way, decoded data is generated by processing probability classes in parallel.

Es existieren zahlreiche Ausführungen von den parallelen Codiersystemen der Erfindung. In einer Ausführungsform können die codierten Datenströme, die den mehreren Kontextfächern entsprechen, in einen Strom verschachtelt werden, welcher durch die Anforderungen der verschiedenen Codierer geordnet ist. In einer Ausführungsform der Erfindung werden die codierten Daten so geordnet, daß jeder Codierer ständig mit Daten beliefert wird, obwohl die codierten Daten dem Decodierer in einem Strom zugeführt werden. Die vorliegende Erfindung arbeitet mit allen Datentypen, einschließlich Bilddaten.It There are numerous designs from the parallel coding systems of the invention. In one embodiment can the coded data streams, the several context fans to be nested in a stream which passes through the requirements of the different coders is ordered. In a embodiment According to the invention, the coded data are arranged so that each Coder constantly although the encoded data is supplied to the decoder fed in a stream become. The present invention works with all data types, including Image data.

Mit Hilfe kleiner einfacher Codierer, die preiswert in integrierten Schaltungen unterteilt sein können, können codierte Daten schnell parallel decodiert werden. In einer Ausführungsform sind die Codierer in Hardware mit Hilfe feldprogrammierbarer Gate-Array-(FPGA-)Chips oder mit Hilfe eines anwendungsspezifischen integrierten Schaltungs-(ASIC-)Chips ausgeführt. Die Kombination von Parallelität und einfachen Bitstrom-Generatoren ermöglicht das Decodieren von codierten Daten mit Geschwindigkeiten, die über denjenigen herkömmlicher Decodierer liegen, wobei der Kompressionswirkungsgrad der herkömmlichen Decodiersysteme erhalten bleibt oder überschritten wird.With Help small simple coders that are inexpensive in integrated Circuits can be subdivided, can be coded Data decoded quickly in parallel. In one embodiment are the encoders in hardware using Field Programmable Gate Array (FPGA) chips or with the help of an application specific integrated circuit (ASIC) chip executed. The combination of parallelism and simple bitstream generators allows the decoding of coded Data at speeds exceeding those of conventional Decoder lie, the compression efficiency of the conventional Decoding systems is maintained or exceeded.

Kanal-Ordnen von mehreren DatenströmenChannel ordering of several streams

Es gibt viele Ausführungsergebnisse und Probleme, welche eine Systemausführung beeinflussen. Einige von diesen werden nachstehend erwähnt. Jedoch verwenden die in 1B und 1C (und 1D) dargestellten Ausführungsformen die Mehrfachcode-Ströme. Systeme mit parallelen Kanälen, die dieser Ausführungsform angepaßt werden 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, use the in 1B and 1C (and 1D ) illustrated embodiments, the multiple 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 required, there may be poor bandwidth utilization 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. 2 stellt eine Ausführungsform der Anordnung dieser Daten dar. In 2 zeigen drei Zeiger 301 bis 303 die Ausgangsstelle 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 Codewörter von der richtigen Stelle aus über den richtigen Zeiger wieder aufgefunden. Der Zeiger wird dann auf das nächste Codewort in diesem Codestrom aktualisiert.In one embodiment, the code streams are concentrated and output contiguously to the decoder. A divider header contains pointers to the initial bit location of each stream. 2 represents an embodiment of the arrangement of this data. In 2 show three pointers 301 to 303 the output location in the lumped code of code streams 1, 2 and 3, respectively. The complete, compressed data file is available in a buffer at the decoder. If necessary, the codewords are retrieved from the correct location via the correct pointer. The pointer is then updated to the next codeword in this codestream.

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örter (bursty) Datenfluß erforderlich ist, dann können zwei Rahmenpuffer für ein Anstauen (banking) sowohl an dem Codierer als auch an dem Decodierer verwendet werden.This method requires a whole encoded frame to be used in the decoder and for practical purposes Purpose in the encoder is to save. If a real-time system or less bursty data flow is required, then two frame buffers may be used for banking both at the encoder and at the decoder.

Datenreihenfolge bezüglich Codewort-ReihenfolgeData order regarding codeword order

Ein Decodierer decodiert Codewörter in einer vorgegebenen deterministischen 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 werden, ein einziger Codestrom. Die Codewörter werden dann an den Decodierer in derselben Reihenfolge auf einer "Just-in-Time"-Basis. 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.One Decoder decodes codewords in a given deterministic order. In parallel Encoding is the order of the code stream requests deterministic. Consequently, if enough the codewords of parallel code streams be nested in the correct order on the encoder, a single code stream. The codewords are then sent to the decoder in the same order on a just-in-time basis. On the decoder determines Model the decoder the codeword order and pack the codewords into a single stream. This model can be a current decoder be.

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 auszurichten. Bitschiebeeinheiten sind oft teuer und/oder langsam, wenn sie in Hardware ausgeführt sind. Die Steuerung der Bit-Schiebeeinheit hängt von der Größe des speziellen Codewortes ab. Diese Steuerung einer Rückkopplungsschleife verhindert, daß ein Verschieben variabler Längen schnell durchgeführt wird. Die Wirksamkeit, mehreren Decodierern einen einzigenStrom 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 handing over The data to the parallel decoding elements is obtained when data variable lengths to have. Removing a stream of variable length codewords requires one Bit shift unit to the codewords align. Bit shift units are often expensive and / or slow, when running in hardware are. The control of the bit shift unit depends on the size of the particular one Codewords off. This control of a feedback loop prevents the existence Move variable lengths done quickly becomes. The effectiveness, multiple decoders a single stream supply, can not be realized if the process fails to grab the current is performed in a single bit shift unit that is not fast is enough to supply the multiple decoders.

Bei der Lösung, die in der Erfindung angeboten ist, wird das Problem, die codierten Daten auf die parallelen Codierer zu verteilen, 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 verschachtelte 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.at the solution, which is offered in the invention, the problem is coded Distribute data to the parallel encoders, from the alignment the codewords variable lengths for a Decoding separated. The codewords in each independent Data streams are packed into words of fixed length, so-called nested ones Words. At the decoder end of the channel, these can be nested Words on the parallel decoder units using fast-acting, hard-wired data lines and a simple control circuit 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 enthalten sind. Die verschachtelten Worte können dann viele Codewörter und Teile von Codewörtern enthalten. 3 veranschaulicht an einem Beispiel das Verschachteln eines Satzes paralleler Codeströme.It is convenient to have a nested word length greater than the maximum word length so that at least enough bits to complete a codeword are included in each nested word. The nested words may then contain many codewords and parts of codewords. 3 illustrates, by way of example, the nesting of a set of parallel code streams.

Diese Worte werden entsprechend der Anforderung an den Decodierer verschachtelt. Jeder unabhängige Decodierer erhält ein ganzes verschachteltes Wort. Die Bit-Schiebeoperation wird nunmehr lokal an jedem Decodierer vorgenommen, wodurch die Parallelität des Systems aufrecht erhalten wird. In 3 ist das erste Codewort in jedem verschachtelten Wort, das niedrigste verbleibende Codewort in dem Satz. Beispielsweise kommen die ersten verschachtelten Worte von einem Codestrom 1, welcher mit dem niedrigsten 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 Codewort, das nicht vollständig in einem bereits geordneten, verschachtelten Wort enthalten ist, #7.Folglich ist das nächste Wort in dem Strom das zweite verschachtelte Wort des Codestroms 2.These words are nested according to the request to the decoder. Each independent decoder gets a whole nested word. The bit shift operation is now performed locally on each decoder, thereby maintaining the system's parallelism. In 3 is the first codeword in each interleaved word, the lowest remaining codeword in the set. For example, the first interleaved words come from a code stream 1 which starts with the lowest codeword (ie, # 1). This is followed by the first interleaved word in code stream 2 and then the first interleaved word in code stream 3. However, the next low codeword that is not completely contained in an already ordered interleaved word is # 7. Consequently, the next word is in the Stream the second interleaved word of the code stream 2.

In einer anderen Reihenfolge basiert die Reihenfolge, in welcher 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ächste verschachtelte Wort in dem Strom 2 und das nächste verschachtelte 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ächste verschachtelte Wort sein, das in den Strom eingesetzt worden ist, da das Codewort #7 das niedrigste Codewort des zweiten Satzes von verschachtelten Worten ist (worauf das Codewort #8 im Strom 1 und dann das Codewort #11 im Strom 3 folgt).In another order is based on the order in which the latter Set of nested words (e.g., the codeword starting with codeword # 8 in stream 1, the Codeword starting with # 7 in stream 2, the codeword with code # 11 begins in stream 3) is inserted into the interleaved code stream are nested, on the first codeword of the previous sentence words (e.g., the codeword beginning with codeword # 1 in stream 1, the codeword starting with codeword # 2 in stream 2, the codeword, that begins with the codeword # 4 in stream 3) and they are from the nested word out in the first codeword with the lowest Number up to the nested word with the first codeword with the highest number orderly. Consequently, in this case, since the nested word, that begins with the codeword # 1, the first was, the next one nested Word in stream 1 the first of the second group of nested words, which are to be inserted into the nested stream, whereupon the next nested Word in the stream 2 and the next nested word in stream 3 follows. After the second group nested words inserted into the nested stream, that would be next nested word in stream 2 will be the next nested word which has been inserted into the stream since the codeword # 7 is the lowest The codeword of the second set of nested words is (what the codeword # 8 in stream 1 and then codeword # 11 in stream 3 follows).

Das Verwenden des aktuellen Decoders als das Modell für den Datenstrom ist verantwortlich für die Ausführungswahl und Verzögerung, 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 deterministischen Reihenfolge verarbeitet werden.The Use the current decoder as the model for the data stream is responsible for the execution choice and delay, to generate the interleaved stream. There are no results huge costs for Duplex systems that have both encoders and decoders. This can be different on every parallel set of data words Length (or different size) generalized be processed in one of the deterministic order become.

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 zugeordneten Codes die bei der vorliegenden Erfindung verwendet worden sind, sind einfache Codierer.at of the invention existing encoders, such as Q-coder or B-coder, as the bit-stream generating elements be used, which are arranged in parallel. However, too other codes and encoders are used. The encoders and theirs associated codes used in the present invention are simple encoders.

Bei der Erfindung bietet ein Verwenden von einem Bitstrom-Generator mit einem einfachen Code statt eines komplexen Codes, wie dem arithmetischen Code, welcher von dem Q-Coder verwendet worden 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 einfacher ist, und erfordert weniger Silizium als ein komplexer Code.at The invention provides for using a bitstream generator with a simple code instead of a complex code, like the arithmetic Code used by the Q-coder or the codes with multiple states, those from the B coder have been used, benefits. A simple code is advantageous because the hardware execution much faster and easier, and requires less silicon as a complex code.

Ein weiterer Vorteil der Erfindung besteht darin, daß der Codier-Wirkungsgrad verbessert werden kann. Ein Code, welcher eine endliche Menge einer Zustandsinformation verwendet, kann nicht fehlerlos den Shannon-Entropie-Grenzwert für jede Wahrscheinlichkeit treffen. Bekannte in Hardware ausgeführte Codes, bei welchen ein einziger Bitstrom-Generator mehrere Wahrscheinlichkeiten oder Kontexte behandeln kann, haben Beschränkungen, welche den Codier-Wirkungsgrad verringern. Ein Beheben der Beschränkungen, die für mehrere Kontexte oder Wahrscheinlichkeitsklassen notwendig sind, ermöglicht das Benutzen von Codes, die näher an den Shannon-Entropie-Grenzwert herankommen.One Another advantage of the invention is that the coding efficiency improves can be. A code which is a finite set of state information can not faultlessly set the Shannon entropy limit for each probability to meet. Known hardware executing codes in which a single bitstream generator multiple probabilities or contexts can handle, have restrictions, which reduce the coding efficiency. Fixing the restrictions the for several contexts or probability classes are necessary, allows using codes that are closer approach the Shannon entropy threshold.

R-CodesR-codes

Der Code (und Codierer), der bei einer Ausführungsform der Erfindung 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ührungsform werden die R-Codes parametriert, so daß viele verschiedene Wahrscheinlichkeiten mit einer einzigen Decodiererausführung behandelt werden können. Darüber hinaus können die R-Codes der Erfindung durch eine einfache sehr schnelle Hardware decodiert werden.Of the Code (and encoder) used in one embodiment of the invention is, is called R-code. R codes are adaptive codes that a changeable one Convert number of identical input symbols into a codeword. In one embodiment the R-codes are parameterized so that many different probabilities can be treated with a single decoder design. Furthermore can the R codes of the invention by a simple very fast hardware be decoded.

In der Erfindung werden die R-Codes von einem R-Codierer verwendet, 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 33 ein R-Codierer die Kombination aus einem Wahrscheinlichkeits-Bewertungsmodul 102 und einem Bitstrom-Generator 103 und die Kombination eines Wahrscheinlichkeits-Bewertungsmoduls 105 mit einem Bitstrom-Generator 106 enthalten.In the invention, the R codes are used by an R-coder to perform coding or decoding. In one embodiment, an R-coder is a bitstream generator combined with a probability weighting module. For example, in 33 an R-encoder is the combination of a probability weighting module 102 and a bitstream generator 103 and the combination of a probability rating module 105 with a bitstream generator 106 contain.

Codewörter stellen Durchläufe des wahrscheinlichsten Symbols (MPS) dar. Ein MPS stellt das Ergebnis einer binären Entscheidung mit mehr als 50% Wahrscheinlichkeit dar. Andererseits stellt das am wenigsten wahrscheinliche Symbol (LPS) das Ergebnis einer binären Entscheidung mit weniger als 50% Wahrscheinlichkeit 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 Bezeichnung vornehmen. Die sich ergebende Bitfolge in der komprimierten Datei ist in Tabelle 1 für einen vorgegebenen Parameter dargestellt, auf den als MAXRUN verwiesen ist.Put codewords runs the most likely symbol (MPS). An MPS produces the result a binary one Decision with more than 50% probability. On the other hand The least probable symbol (LPS) represents the result a binary one Decision with less than 50% probability. If two Results are equally likely, it does not matter which one with MPS or LPS, as long as both the encoder and also the decoder to make the same name. The resulting Bit sequence in the compressed file is in Table 1 for one given parameters, referred to as MAXRUN is.

Tabelle - Biterzeugungs-Codieren

Figure 00220001
Table - Biter Generation Coding
Figure 00220001

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 abgegeben, und der Zähler wird zurückgesetzt. Wenn ein LPS angetroffen 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 a run is counted by a simple counter. If this count equals the MAXRUN count, a 0 codeword is output to the code stream and the counter is reset. If an LPS is encountered, then a 1 followed by bits N which uniquely describe the number of MPS symbols before the LPS is injected into the code stream. (There are many ways to allocate the N bits to describe the pass length.) Again, the counter is reset. The number of bits required for N depends on the value of MAXRUN. One's (1's) complement of the codewords could also be used.

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 geprüft, um die Bits N zu extrahieren, und der entsprechende Zählwert (N) wird in dem MPS-Zähler gesetzt, und der LPS-Indikator wird gesetzt. Dann werden die Codestrom-Bits, welche das 1N Codewort enthalten, weggeworfen.Around to decode when the first bit in the code stream is 0, the Value of MAXRUN in the MPS counter and the LPS indicator is cleared. Then the 0 bit is thrown away. If the first bit is a 1, then the following bits are checked to get the Extract bits N, and the corresponding count (N) is set in the MPS counter, and the LPS indicator is set. Then the code stream bits, which contain the 1N codeword, 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:
MAXRUN für Rx(k) = x·2k-1
folglich gilt:
MAXRUN für R2 (k) = 2·2k-1
MAXRUN für R3 (k) = 3·2k-1
usw...
R codes are generated according to the specifications in Table 1. The definition of a given R code Rx (k) is defined by MAX-RUN, for example:
MAXRUN for Rx (k) = x * 2k -1
consequently:
MAXRUN for R2 (k) = 2 · 2 k-1
MAXRUN for R3 (k) = 3 x 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 dargestellt wird durch insgesamt k bzw. (k + 1) Bits. In anderen Ausführungsformen könnte das 1's-Komplement von N in dem Codewort verwendet werden. In diesem Fall zielt das MPS darauf „ Codeströ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. Note that Rice codes use only R2 (•) codes. The R codes of the invention allow the use of both R2 (k) and R3 (k) codes and, if necessary, other Rn (k) codes. In one embodiment, R2 (k) and R3 (k) are used. Rn exists for n = 2 and n is equal to an odd number (eg, R2, R3, R5, R7, R9, R11, R13, R15). In one embodiment, for the R2 (k) code, the pass count r is encoded in N; the pass count r is written in k bits so that 1N is represented with (k + 1) bits. Similarly, in one embodiment, for an R3 (k) code, bits N may contain 1Bit to indicate whether n <2 (k-1) or n≥2 (k-1) , and either (k-1) or k bits to indicate the pass count r, so that the variable N is represented by a total of k and (k + 1) bits, respectively. In other embodiments, the 1's complement of N could be used in the codeword. 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 FIGS. 2-5 illustrate some efficient R codes that are used in a embodiment of the invention have been used. It should be noted that others Run-length code can also be used in the invention. An example of an alternative Run-length code for R2 (2) is shown in Table 6. Tables 7 and 8 show examples of the codes, in one embodiment have been used.

Figure 00250001
Figure 00250001

Tabelle 8 - Ein anderer Alternativer R2 (2) Code

Figure 00260001
Table 8 - Another Alternative R2 (2) Code
Figure 00260001

Wahrscheinlichkeits-Bewertungsmodell für R-CodesProbability assessment 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 Eingabe von 1 wird in eine 1 codiert (oder umgekehrt) und ist optimal für Wahrscheinlichkeiten gleich 50%. Der R2 (1) Code der bevorzugten 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 veranschaulicht den nahezu optimalen Lauflängencode, wobei der Wahrscheinlichkeits-Versatz durch folgende Gleichung festgelegt ist:
Wahrscheinlichkeits-Versatz = -log2(LPS) Tabelle 9

Figure 00270001
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 optimally equal to 50% for probabilities. 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 near optimal runlength code, where the likelihood offset is determined by the following equation:
Probability Offset = -log 2 (LPS) Table 9
Figure 00270001

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 nearly optimal, so that the probability range, as by the probability offset is displayed, the space is covered relatively evenly, even if the optimal probabilities are not that much in the higher one k values differ as 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 Wahrscheinlichkeitsbereich ein ganz bestimmter R-Code besser ist als alle R-Codes in einer vorgegebenen Klasse. Die folgenden Tabellen sehen die Wahrscheinlichkeitsbereiche für die Klasse von R2 Codes und für die Klasse von R2 und R3 Codes vor.Now, reference is made to the probability that an R code is optimal. In fact, only R2 (2) hits the entropy curve. A real consideration shows for which probability range a very specific R-code is better than all R-codes in a given class. The following tables provide the probability ranges for the class of R2 codes and for the class of R2 and R3 codes.

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.For the class For R2 codes from 0 to 12, the ranges in Table 10 below apply. For example, if only R2 codes are used then R2 (0) is the best if 0.50 ≤ probability ≤ 0.6180. Similarly, R2 (1) is the best if 0.6180 ≤ Probability ≤ 0.7862.

Tabelle 10 - R2 Codes von 0 bis 12

Figure 00280001
Table 10 - R2 codes from 0 to 12
Figure 00280001

Für die Klasse von R2 und R3 Codes sind die Lösungen in Tabelle 11 unten angegeben. Wenn beispielsweise R2 und R3 Codes verwendet werden, ist R2 (1) der beste, wenn gilt: 0,6180 ≤ Wahrscheinlichkeit ≤ 0,7549.For the class of R2 and R3 codes are the solutions in Table 11 below. For example, if R2 and R3 codes R2 (1) is the best, if: 0.6180 ≤ Probability ≤ 0.7549.

Tabelle 11 - R2 und R3 Codes Längen weniger als oder gleich 13 Bits

Figure 00290001
Table 11 - R2 and R3 codes are lengths less than or equal to 13 bits
Figure 00290001

Ein R2(k) für ein festes k wird ein Spurlängencode genannt. Jedoch ist ein festes k nur der beste für einen Wahrscheinlichkeitsbereich. 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.One R2 (k) for a fixed k becomes a track length code called. However, a fixed k is only the best for a probability range. It should be noted that, when encoded near an optimal probability, an R-code according to the invention a 0 and 1N codewords used with approximately the same frequency.

Mit anderen Worten, in der einen Hälfte der Zeit gibt der R-Codierer 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 Durchlauf länge zu lang; andererseits wird, wenn zu viele 0 Codewörter ausgegeben werden, die Durchlauflänge zu kurz.With in other words, in one half In time, the R-coder of the invention outputs a code, and in the other half In time, the R-coder outputs the other code. By checking the Number of 0 and 1N codewords A statement can be made as to whether to use the best code is. That is, if too many 1N codewords are output, then the passage length becomes too long; on the other hand, when too many 0 codewords output, the run length too short.

Das Wahrscheinlichkeits-Bewertungsmodell, das von Langdon verwendet 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 Feststellung wird k erhöht oder erniedrigt. Wenn beispielsweise ein Codewort, das MPS anzeigt, gesehen wird, ist der Wahrscheinlichkeits-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, gesehen wird, ist der Wahrscheinlichkeits-Voranschlag zu hoch. Folglich wird gemäß Langdon k um 1 für jedes 1N Codewort erniedrigt.The Probability rating model used by Langdon has been tested the first bit of each codeword to determine if the source probability is above or below the current estimate (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. If, for example A code word indicating MPS is considered to be the Probability Estimate low. Therefore, according to Langdon k around 1 for every 0 codewords increased. If a codeword that reads less than MAXRUN MPS indicates what LPS (e.g., 1N codeword) is seen, is the Probability Estimate too high. Consequently, according to Langdon k around 1 for every 1N codeword is lowered.

Die vorliegende Erfindung läßt eine komplexere Wahrscheinlichkeits-Bewertung zu als das einfacher Erhöhen oder Verringern von k um 1 bei jedem Codewort. Die Erfindung enthält einen Wahrscheinlichkeits-Bewertungsmodulzustand, welcher den zu benutzenden Code festlegt. Viele Zuständen können denselben Code verwenden. Codes werden Zuständen mit Hilfe einer Zustandstabelle zugeordnet.The The present invention leaves a more complex probability rating to than simply increasing or Decrease k by 1 for each codeword. The invention includes a Probability score module state which is the one to use Code sets. Many states can use the same code. Codes become states using a state table assigned.

In einer Ausführungsform der Erfindung ändert der Wahrscheinlichkeits-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" Codewort ausgegeben wird, wird der Voranschlag der MPS-Wahrscheinlichkeit erniedrigt.In an embodiment of the invention changes the probability estimate of each delivered codeword. consequently elevated or the probability score module lowers the probability estimate dependent on whether a codeword starts with a 0 or a 1. If, for example a "0" code word is output becomes, it comes to an increase the estimate of the MPS probability. However, if a "1" code word is output, the Estimates of the MPS probability lowered.

Der bekannte Langdon-Codierer verwendete nur R2 (k) Codes und erhöhte oder erniedrige k für jedes Codewort. Die Erfindung dagegen verwendet R2(k) und R3 (k) Codes in Verbindung mit der Zustandstabelle, um die Adaptionsrate auf die Anwendung abstimmen 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 stationä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 Zustandsänderungen vorkommen kann, können spezifische Anwendungs-Kennwerte auch die Adaptionsrate beeinflussen. Wegen der Art der R-Codes ist die Bewertung für R-Codes einfach und erfordert wenig Hardware, während sie sehr leistungsfähig ist. In 32 ist dies durch einen Graphen veranschaulicht, in welchem der Codierwirkungsgrad (die Codelänge, nomiert bezüglich der Entropie) gegenüber einer MPS-Wahrscheinlichkeit aufgetragen ist. 32 zeigt, wie einige der R-Codes der Erfindung den Wahrscheinlichkeitsraum bedecken. Als ein Beispiel zeigt 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 Wirkungsgrad von 1,09 des Entropie-Grenzwerts (oder 9% schlechter als dieser). Dieses Beispiel zeigt, daß ein Verwenden des falschen Codes für diesen speziellen Fall geringer Wahrscheinlichkeit einen Verlust von 8% im Codier-Wirkungsgrad bewirkt.The well-known Langdon coder used only R2 (k) codes and increased or decreased k for each codeword. By contrast, the invention uses R2 (k) and R3 (k) codes in conjunction with the state table to match the adaptation rate to the application. That is, if it is a small amount of stationary data, the adaptation must be faster to result in optimal coding, and if there is a larger amount of stationary data, the adaptation time may be longer so that the coding can be chosen to to achieve better compression in the rest of the data. Where a variable number of state changes may occur, specific application characteristics may also affect the rate of adaptation. Because of the nature of the R codes, the rating for R codes is simple and requires little hardware while being very powerful. In 32 this is illustrated by a graph in which the coding efficiency (the code length, as registered with respect to entropy) is plotted against an MPS probability. 32 Figure 4 shows how some of the R codes of the invention cover the probability space. As an example shows 32 in that for an MPS probability of approximately 0.55, the efficiency of the R2 (0) code is 1.01 of the entropy limit (or 1% worse than this). In contrast, the R2 (1) code has an efficiency of 1.09 of the entropy limit (or 9% worse than this). This example shows that using the wrong code for this particular low probability case causes a loss of 8% in coding efficiency.

Die Eingliederung der R3(k) Codes ermöglicht es, mehr Wahrscheinlichkeitsraum mit einer größeren Effizient abzudecken. Eine beispielsweise Wahrscheinlichkeits-Bewertungszustandstabel le gemäß der Erfindung ist in 5 dargestellt. Die Tabelle in 5 zeigt sowohl einen Zustandszähler als auch den Code, welcher 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, einschließlich der Nullzustände. Die negativen Zustände bedeuten ein anderes MPS als die negativen Zustände. In einer Ausführungsform 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 5 dargestellte Tabelle ist nur ein Beispiel; andere Tabellen können mehr oder weniger Zustände und eine andere Zustandszuordnung haben.The incorporation of the R3 (k) codes makes it possible to cover more probability space with a greater efficiency. An example of a probability evaluation status bar according to the invention is shown in FIG 5 shown. The table in 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 zero states. The negative states mean another MPS than the negative states. In one embodiment, the negative states may be used when MPS is 1, and the positive states may be used when MPS is 0 or vice versa. In the 5 The table shown is just an example; other tables may have more or fewer states and a different state mapping.

Anfangs befindet sich der Codierer im Zustand 0, welcher der R2 (0) Code (d.h. kein Code) für den Wahrscheinlichkeitsvoranschlag ist, welcher gleich 0,50 ist. Nachdem jedes Codewort verarbeitet ist, wird der Zustandszähler in Abhängigkeit von dem ersten Bit des Codeworts in- bzw. dekrementiert. In einer Ausfü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 Wahrscheinlichkeits-Bewertungsmodul ändert den Zustand. Jedoch können aufeinanderfolgende Zustände demselben Code zugeordnet werden. 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 Wahrscheinlichkeiten 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 nichtlinearen Weise bei demselben Codierer bleiben.At first the encoder is in state 0 which is the R2 (0) code (i.e., no code) for the Probability Estimate is equal to 0.50. After each codeword is processed, the state counter in dependence is incremented or decremented by the first bit of the codeword. In a embodiment elevated a code word of 0 the size of the memory. Therefore, a change in the state is added by each codeword the state counter performed. In other words, the probability score module changes that Status. However, you can successive states be assigned to the same code. In this case, the probability rating without a change reached by codes at each codeword. In other words, the condition is for each codeword changed; however, at certain times, the condition becomes the same probabilities displayed. For example, all states 5 to -5 use the R2 (0) code, while the conditions 6 to 11 and -6 to -11 Use the R2 (1) code. With the help of the state table of the invention can do a probability assessment in a nonlinear way stay with the same encoder.

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-Wirkungsgrad-Grenzwert weg ist. Folglich kann sich ein Nachteil (in Form der Anzahl von codierten Datenbits) in dem Übergang zwischen Zuständen ergeben. Herkömmliche Wahrscheinlichkeits-Bewertungsmodule, wie der Langdon-Wahrscheinlichkeits-Bewertungsmodul verliert seine Wirksamkeit wegen dieses Nachteils.It should also be noted that more states are included with the same low-likelihood R-code, because the loss of efficiency when the wrong code is used at low probabilities is large. The type of runlength code state table is to transmit between states after each codeword. In a state table designed to change codes with each state change when switching between states at the low probabilities, the code switches between a code which is very close to the entropy efficiency limit and a code which is far is away from the entropy efficiency limit. Consequently, a disadvantage (in the form of the number of coded data bits) in the transition between Zu staged. Conventional probability assessment modules, such as the Langdon Probability Assessment Module, lose their effectiveness because of this disadvantage.

In den Lauflängencodes höherer Wahrscheinlichkeit ist der Nachteil, 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 Änderungen beim Schwanken zwischen den zwei korrekten Codes erhöht werden, wodurch die Codierunzulänglichkeit geringer wird.In the run length codes higher Probability is the downside to the wrong code not so great. Thus, in the invention, additional states become added lower probabilities, so that the changes in the waver between the two correct codes are raised, whereby the coding inadequacy becomes smaller.

In bestimmten Ausführungsformen kann der Codierer einen anfänglichen Wahrscheinlichkeits-Bewertungszustand haben. Mit anderen Worten, die Codierer könnten in einem vorherbestimmten Zustand, beispielsweise dem Zustand 18, beginnen. In einer Ausführungsform 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 Zustandstabelle könnte für die verbleibenden Symbole für eine langsame Adaption verwendet werden, um ein Feinabstimmen der Wahrscheinlichkeitsbewertung zu ermöglichen. Auf diese Weise kann der Codierer imstande sein, früher einen wirksameren Code in dem Codierprozeß 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. Stattdessen kann der Wahrscheinlichkeits-Bewertungszustand 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 have an initial one Have probability rating state. In other words, the coders could in a predetermined state, for example state 18, kick off. In one embodiment could another state table can be used so that some conditions for the few first symbols would be used for a quick adaptation admit, and a second state table could be for the remaining symbols for one slow adaptation can be used to fine-tune the probability score to enable. On this way, the encoder can be able to get a more effective code earlier to use in the encoding process. In another embodiment could the code stream is an initial one Probability estimate for specify each context. In one embodiment, the increments or decrements not according to one fixed number (e.g., 1). Instead, the probability assessment state through a changeable Number according to the amount of data already encountered or the change in the data (their stability) be incremented. Examples of such tables are in Tables 21 to 25 described below.

Wenn die Zustandstabelle symmetrisch ist, wie die beispielshafte Tabelle der 4 zeigt, muß nur eine Hälfte davon (einschließlich des Nullzustands) gespeichert oder in Hardware ausgefü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 benutzt 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 Dekrementieren des zu reduzierenden Zustands benötigt wird, da der Absolutwert des Zustands verwendet wird, um die Tabelle zu indexieren, und die Berechnung des Absolutwerts von Einsen-Komplementzahlen ist trivial. In einer anderen Ausführungsform kann bezüglich eines größeren Hardware-Wirkungsgrads eine Zustandstabelle durch eine fest verdrahtete oder programmierbare Zustandseinrichtung 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 example table of 4 shows that only half of it (including the zero state) needs to be saved or executed in hardware. In one embodiment, the state number is stored in a sign magnitude (one's) complement form to take advantage of the symmetry. In this way, the table can be used by taking the absolute value of the ones complement number to determine the state and to verify the sign, thereby determining whether MPS is a 1 or a 0. This allows for 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 computing the absolute value of ones complement number is trivial. In another embodiment, with respect to greater hardware efficiency, a state table may be replaced by a hardwired or programmable state device. A hardwired state to encode a converter is an implementation of the state table.

Überblick über das ausgeglichene parallele Entropie-CodiersystemOverview of the balanced parallel Entropy coding

Die Erfindung schafft ein ausgeglichenes paralleles Entropie-Codiersystem, welches sowohl ein Realzeit-Codieren als auch ein Realzeit-Decodieren einschließt, was in einer sehr schnellen/preiswerten Hardware durchgeführt worden ist. Die vorliegende Erfindung kann in zahlreichen verlustfreien Codieranwendungen verwendet werden, einschließlich einer Realzeit-Kompression/Dekompression von Daten auf beschreibbaren Bildplatten oder magnetischen Platten, einer Realzeit-Kompression/Dekompression von Computer-Netzdaten, einer Realzeit-Kompression/Dekompression von Bilddaten in einem komprimierten Rahmenspeicher in einem Multifunktionsgerä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 The invention provides a balanced parallel entropy coding system which Both real-time encoding and real-time decoding include what been done in a very fast / inexpensive hardware is. The present invention can be found in many lossless Encoding applications, including real-time compression / decompression data on recordable optical disks or magnetic disks, Real-time compression / decompression of computer network data, a Real-time compression / decompression of image data in a compressed Frame memory in a multifunction device (e.g., copier, facsimile machine, scanner, Printer, etc.) and real-time compression / decompression of sound data; however, the invention is not limited thereto.

Ein Spezifizieren der Leistung des Codierers erfordert eine gewisse 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 codierte Datenkanal-Benutzung wird durch die maximale Burst-Rate des Original-Daten-Interface, durch die Codiergeschwindigkeit und die an den Daten erreichte Kompression eingeengt. Die Wirkung dieser Effekte muß über einige lokale Datenmengen berücksichtigt werden, welche von der Bufferung in dem Codierer abhängt. Es ist wünschenswert, einen Codierer zu haben, der den codierten Datenkanal effizient nutzt, während die Codiergeschwindigkeit und eine hohe Kompression erhalten bleibt und die maximale Burst-Rate sich noch einstellt.One Specifying the performance of the encoder requires some Attention. It's easy to design a coder that has a certain rate for the originals Data is obtained in a sufficiently fast coded data channel are entered. In many applications, however, it is the goal at the encoder, to efficiently use the coded data channel. An encoded data channel usage is determined by the maximum burst rate of the original data interface, by the encoding speed and narrowed the compression achieved on the data. The effect of this Effects must about some taken into account local data volumes which depends on the buffering in the encoder. It is desirable to have an encoder that efficiently processes the encoded data channel uses while the coding 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.in the Next, the encoder of the invention will be described. A decoder, which can be used in conjunction with the encoder is also described.

Realzeit-Codieren bei der vorliegenden ErfindungReal-time encoding at of the present invention

5 ist ein Blockdiagramm des Codiersystems der Erfindung. In einer Ausführungsform führt der Codierer der Erfindung ein Realzeit-Codieren durch. In 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 Umordnungseinheit 606 in Zusammenwirken mit einem Umordnungsspeicher 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, Alphabeten, Ereignissen, usw. im Rahmen der Lehren der Erfindung arbeiten. 5 Figure 4 is a block diagram of the coding system of the invention. In one embodiment, the encoder of the invention performs real-time coding. In 5 closes the coding system 600 an encoder 602 one containing a context (CM) and state memory 603 connected to coded information in the form of codeword information 604 according to the original data 601 to create. A codeword information 604 creates a rearrangement unit 606 in cooperation with a reordering memory 607 , a coded data stream 608 , Here is the coding system 600 is not limited to working with codewords, and in other embodiments may operate on discrete analog waveforms, variable-length bit patterns, channel symbols, alphabets, events, etc. within the teachings of the invention.

Der Codierer 602 schließt ein Kontextmodell (CM), eine Wahrscheinlichkeits-Bewertungseinrichtung (PEM) und einen Bitstrom-Generator (BG) ein. Das Kontextmodell und die Wahrscheinlichkeits-Bewertungseinrichtung (PEM) in dem Codierer 602 sind (abgesehen von der Richtung des Datenflusses) im wesentlichen identisch mit den entsprechenden Einheiten in dem Decodierer. Der Bitgenerator des Codierers 602 entspricht dem Decoder-Bitgenerator und wird unten beschrieben. Das Ergebnis des Codierens mittels 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-Generators auch ein oder mehrere Steuersignale mit ein. Diese Steuersignale schaffen einen Steuerweg zu den Daten in dem Bitstrom. In einer Ausführungsform kann die Codewort-Information einen Durchlaufanzeigestart, ein Ende einer Durchlaufanzeige, ein Codewort 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-Generators der Erfindung wird nachstehend beschrieben.The encoder 602 includes a context model (CM), a probability estimator (PEM), and a bitstream generator (BG). The context model and the probability evaluator (PEM) in the encoder 602 are essentially identical to the corresponding units in the decoder (except for the direction of the data flow). The bit generator of the coder 602 corresponds to the decoder bit generator and will be described below. The result of coding by means of the encoder 602 is the output in the form of zero or more bits representing the original data. In one embodiment, the output of the bitstream generator also includes one or more control signals. These control signals provide a control path to the data in the bit stream. In one embodiment, the codeword information may include a scroll indicator start, an end of a scroll indicator, a codeword, and an index that identifies the pass count (which is from the context or probability class) for the codeword. An embodiment of the bit generator of the invention will be 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 Umordnungseinheit 606 abgegeben worden sind, einen Strom von verschachtelten Worten auf. Eine Ausführungsform führt die Umordnungseinheit 606 zwei Funktionen durch, und zwar bewegt sie Codewörter von dem Ende von Durchläufen, wie sie von dem Codierer erzeugt worden sind, zu dem Beginn von Durchläufen, erforderlichenfalls 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 gefordert wird.The rearrangement unit 606 picks up the bits and control signals from the bitstream generator (if any) of the decoder 602 have been generated and generates coded data. In one embodiment, the encoded data is from the rearrangement unit 606 a stream of nested words. One embodiment carries the rearrangement unit 606 performs two functions, namely, moves codewords from the end of iterations generated by the coder to the beginning of sweeps, if necessary by the decoder, and combines codewords of variable length with interleaved words of fixed length and outputs them in the correct order required by the decoder.

Die Umordnungseinheit 606 benutzt zeitweilig einen Umordnungsspeicher 607. In einer Ausführungsform, in welcher ein Codieren an einem Arbeitsplatz durchgeführt wird, kann der Umordnungsspeicher 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 Speicher 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 Speichers der Umordnungseinheit mit Hilfe beispielsweise einer impliziten, 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 verschachtelten Worten muß berücksichtigt werden.The rearrangement unit 606 temporarily uses a reordering memory 607 , In an embodiment in which coding is performed at a workstation, the reordering memory may 607 over 100 megabytes in size. In the balanced system of the invention, the reordering memory is 607 much smaller (eg 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 increases the bit rate (for example, if an output is made before the completion of a run). The decoder of the invention is capable of determining the effects of the reordering unit's limited memory by means of, for example, implicit, explicit or current signaling (as will be described below). The rearrangement unit 606 has a finite memory available for reordering; however, the "needed" memory is not bound. Both the effect of a finite memory for a trailing end to the beginning of a traversal queue and for reordering nested words must be considered.

In einer Ausführungsform führt das Codiersystem (und das entsprechende Decodiersystem) der Erfindung das Codieren (oder Decodieren) mit Hilfe eines einzigen integrierten Schaltungschips durch. In einer anderen Ausführungsform enthält eine einzige integrierte 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 Schaltung können sowohl die Codier/Decodier-Hardware und den Speicher enthalten.In an embodiment does that Coding system (and the corresponding decoding system) of the invention encoding (or decoding) using a single integrated Circuit chips through. In another embodiment, a contains single integrated circuit, the coding system of the invention, including its Encoder, decoder and memory. A separate external memory can be added to support coding. A multichip module or an integrated circuit can include both the encoding / decoding hardware and the memory.

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.With The coding system of the invention may attempt to reduce the effective Increase bandwidth by up to a factor of N When the compression reached is less than N: 1, then the coded data channel is fully exploited, however, the achieved effective bandwidth increase is only equal the compression rate. If the compression achieved is greater than N: 1, then the effective bandwidth is reached, with a additional bandwidth is writable. In both cases must the reached compression over a local one Area of the data, which by the present in the coding system Buffer value is set.

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

6 zeigt eine Ausführungsform des Codierer-Bitgenerators der Erfindung. Der Bitgenerator 701 ist vorgesehen, um eine Wahrscheinlichkeitsklasse 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 Endsignal 712 darstellen. Es ist möglich, einen Durchlauf gleichzeitig 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 uncodierte Bit auf. In einer Ausführungsform stellt ein Index-Ausgangssignal 713 eine Kombination der Wahrscheinlichkeitsklasse für das Bit und eine Bankidentifizierung für Systeme dar, in welchen jede Wahrscheinlichkeitsklasse in mehreren Speicherbänken repliziert wird. Ein Codewort-Ausgang 714 wird verwendet, um ein Codewort von dem Bitgenerator 701 auszugeben, wenn ein Durchgang endet. 6 shows an embodiment of the encoder bit generator of the invention. The bit generator 701 is intended to receive a probability class and an uncoded bit (eg, an MPS or LPS display) as inputs. The bit generator gives according to the input signals 701 several signals. Two of the output signals are control signals indicating the start of the start and the end of a pass (each codeword representing a pass), a start signal 711 or a final signal 712 represent. It is possible to start and stop a run at the same time. When a pass starts or ends, it has an "index" output signal 713 an indication of the probability class (or context) for the uncoded bit. In one embodiment, an index output signal 713 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 codeword output 714 is used to get a codeword from the bit generator 701 spend when a passage ends.

Ein Speicher 702 ist mit dem Bitgenerator 701 verbunden und enthält den Durchgangszählwert für eine gegebene Wahrscheinlichkeitsklasse. 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 Durchlaufs 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 gelö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 bestimmt, wenn der Durchlaufzählwert gleich dem maximalen Zählwert für den Code ist. Wenn dem so ist, wird das Endsignal 712 geltend 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 Eingangssignal erhalten worden ist.A store 702 is with the bit generator 701 and contains the pass count for a given probability class. During a bit generation the bit generator reads 701 from the store 702 with the help of the index (eg the probability class). After reading the memory 702 performs the bit generator 701 a biter production in the following manner. First, when the sweep count is zero, a start signal 711 asserted to indicate the start of a pass. If the uncoded bit is equal to the LPS, then the end signal will be 712 asserted to indicate the end of the run. If the uncoded bit is equal to an LPS, the codeword output becomes 714 is set to indicate that the codeword is a 1N codeword, and the pass count is cleared, eg 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 if the pass count equals the maximum count for the code. If so, the end signal becomes 712 asserted the codeword output 714 is set to zero and the pass count is cleared (eg the count is set to zero). If the test determines that the pass count is not equal to the maximum for the code, then the pass count is incremented. The index signal 713 represents the likelihood class that has been obtained as an input signal.

In der Erfindung wird die Erzeugung von 1N Codewörter durchgeführt, so daß deren Länge ohne eine zusätzliche Information bestimmt werden kann. Tabelle 12 veranschaulicht 1N Codewort-Darstellungen von R3 (2) Codewörtern für den Decodierer und Codierer. Der Decodierer erwartet, daß das "1" Bit in einem "1N" Codewort das niedrigstwertige Bit (LSB) ist, und daß der "N" Zählwertanteil 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 Codierer-Reiheinfolge 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 Bitpackeinheit 606 zur Folge, da sie ein Schieben irgendwie durchführen muß.In the invention, the generation of 1N codewords is performed so that their length can be determined without additional information. Table 12 illustrates 1N codeword representations of R3 (2) codewords 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 to be in the proper MSB ... LSB order. In the decoder, the variable length codeword can not be distinguished from zero padding without knowing which particular code is being used. In the coder, the codeword is reversed and the position of the most significant "1" bit indicates the length of "1N" codewords , In order to generate codewords in an encoder row in sequence, the complement of the count must be reversed. This can be achieved by reversing the 13-bit count and shifting it to align with the LSB. As will be described in detail below, the bit packing unit reverses the codewords in the decoder order. However, this reversal of codewords does not increase the complexity of the bitpack unit 606 because she has to somehow perform a push.

Tabelle 12 - ""2N"-Codewort-Darstellungen für R3 (2) Codewörter

Figure 00400001
Table 12 - "" 2N "codeword representations for R3 (2) codewords
Figure 00400001

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 also requires generating "N" codewords that this Bit following the "1" indicates whether a short or a long count is present.

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.By Using multiple memory banks allows the invention is a pipelining. For example, in case of one Multi-port memory a read operation for a memory for an uncoded bit before while a read operation on the memory for the previous uncoded Bit occurs.

Ein Altera AHDL-Abtast-AusführungAn Altera AHDL scan design

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.A embodiment The encoder bit generator of the invention has an FPGA. The Execution treated all R2 and R3 codes up to R2 (12). The AHDL (Altera Hardware Description Voice) source code is listed below.

Die Auslegung weist mehrere Teile auf, wie in 12 dargestellt 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 verwendet, um die Wahrscheinlichkeitsklasse auf die maximale Lauflänge, eine Maske variabler Länge und die Länge des ersten langen Codeworts für R3-Codes auszudehnen. "KEXPAND" 1303 ist identisch mit der Decodier-Funktion mit demselben Namen. Drittens nimmt der "LPSCW" 1304 teil an einem Zählwert und einer Information überdie Wahrscheinlichkeitsklasse in Form von Eingangswerten und erzeugt das richtige "1N" Codewort.The design has several parts, as in 12 is shown. First is "ENCBG" 1301 the bulk of the design having the logic to handle the start, finish, 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 decoder function with the same name. Third, the "LPSCW" takes 1304 takes part in a count value and information about the probability class in the form of input values and generates the correct "1N" codeword.

Die Ausführung verwendet zwei Pipeline-Stufen. Während der ersten Pipeline-Stufe wird der Zählwert inkrementiert, die Wahrscheinlichkeitsklasse 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 first pipeline stage the count is incremented, the probability class is extended, and a subtraction and a comparison for long R3 codewords is carried out. The rest Operations are during the second pipeline stage.

Figure 00410001
Figure 00410001

Figure 00420001
Figure 00420001

Figure 00430001
Figure 00430001

Figure 00440001
Figure 00440001

Figure 00450001
Figure 00450001

Figure 00460001
Figure 00460001

Figure 00470001
Figure 00470001

Die Umordnungseinheit der ErfindungThe rearrangement unit the invention

7 ist ein Blockdiagramm einer Ausführungsform der Umordnungseinheit. In 8 weist die Umordnungseinheit 6 eine Durchgangszä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 variabler Länge in verschachtelten Worten fester Länge zusammenfaßt und sie in der richtigen Reihenfolge abgibt, die von dem Decodierer gefordert ist. 7 Figure 13 is a block diagram of one embodiment of the rearrangement unit. In 8th the rearrangement unit 6 has a passage count rearrangement unit 801 and a bit packing unit 802 on. The rearrangement unit 801 moves codewords from the end of sweeps, as generated by the coder, to the beginning of sweeps, as needed by the decoder, while the bit packing unit 802 Combining variable-length codewords in interleaved fixed-length words and output them in the correct order required by the decoder.

Ein "Snooper"-Decodierer kann verwendet werden, um einen Decodierer umzuordnen, wobei ein Decodierer in dem Codierer enthalten ist, und schafft Anforderungen von Daten in einer Reihenfolge, 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 werden 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 Datenstruktur erreicht werden und ist unabhängig von dem Verwenden von mehreren codierten Datenströmen. Wie das Umordnen durchgeführt werden kann, wird nachstehend noch beschrieben.A "snooper" decoder can used to rearrange a decoder, a decoder is contained in the encoder and creates requests for data in an order in which the codewords are needed for the actual decoder. To support a "Snooper" decoder, you can a reordering of pass counts independently for each Electricity performed become. For Decoders that can be easily modeled can have multiple timestamps (time stamped) Snakes or a single merging queue used to allow reordering. In one embodiment can rearrange each codeword using a serpentine data structure be achieved and is independent by using multiple encoded data streams. As the reordering 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 Durchlaufzä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 shuffling operation performed in the encoder is to re-order each of the pass values so that the pass value is specified at the beginning of the pass (if the decoder for a Decoding is necessary). This reordering is required because the encoder can not determine until the end of a run, what a pass count (and a codeword) is. Consequently, the resulting pass count, which has been generated in the coding, rearranged so that the decoder in capable of the pass counts back to correctly decode into the data stream.

In 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 enthalten. Diese Signale werden im einzelnen in Verbindung mit der Durchlaufzähl-Umordnungseinheit der 8 beschrieben. Entsprechend 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 Codewort 803 erzeugt die Bitpackungseinheit 802 verschachtelte Worte 805. Die Umordnungseinheit 801 und die Bitpackungseinheit 802 werden später noch im einzelnen beschrieben.In 7 has the rearrangement unit 606 of the invention, a pass counter reordering unit 801 and a bit packing unit 802 on. The rearrangement unit 804 is provided to receive a plurality of input signals, which is a start signal 711 , a final signal 712 , an index signal 713 and a codeword 714 contain. These signals will be described in detail in connection with the pass count shuffling unit 8th described. The rearrangement unit generates according to the input signals 801 a codeword 803 and a signal 804 , The signal 804 indicates when to reset the count-through value. The codeword 803 is from the bitpacking unit 802 added. According to the code word 803 generates the bitpacking unit 802 nested words 805 , The rearrangement unit 801 and the bitpacking unit 802 will be described later in detail.

Durchlaufzählwert-UmordnungseinheitPass count shuffling

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 Indentität des Codeworts bis zum Ende der Daten, die durch das Codewort codiert worden sind.As described above the decoder codewords at the time when the beginning of the data by the codeword coded, is needed. However, the encoder does not know the identity of the codeword to the end of the data encoded by the codeword have been.

Ein Blockdiagramm einer Ausführungsform der Durchlaufzählwert-Umordnungseinheit 801 wird anhand von 8 beschrieben. Die beschriebene Ausführungsform paßt sich vier verschachtelten Strömen an, wobei jedes verschachtelte Wort 16 Bits ist, und die Codewö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 Durchlaufzä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, verschachtelte Worte mit 16 Bits oder Codewortlängen von 1 bis 13 Bits beschränkt und kann für mehr oder weniger Ströme mit verschachtelten 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 pass count shuffling unit 801 is determined by 8th described. The embodiment described adapts to four interleaved streams, each interleaved word 16 Bits, and the codewords vary in length from 1 to 13 bits. In such a case, the rearrangement unit 300 in the pipeline system to handle all streams. Further, an encoder which assigns pass classes to probability classes is used so that the maximum number of pass counts that can be active at any one time is small, and it becomes in this embodiment accepted at 25. The invention is not limited to four interleaved streams, interleaved 16-bit words or codeword lengths of 1 to 13 bits and may be used for more or fewer interlaced streams of more or less than 16 bits and for codeword lengths different from 1 bit to more than 13 bits.

In 8 ist ein Zeigerzähler 901 vorgesehen, um ein Indexeingangssignal 713 aufzunehmen und erzeugt ein Adressen-Ausgangssignal, das mit einem Eingang eines Multiplexer (MUX) 902 verbunden 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 8th is a pointer counter 901 provided to an index input signal 713 and generates an address output signal which is connected to an input of a multiplexer (MUX). 902 connected is. Two more inputs of the MUX 902 are intended to provide an address in the form of a header pointer from a header counter 903 and an address in the form of a tail pointer from a tracking counter 905 take. The output signal of the MUX 902 is an address used to access a codeword memory 908 is used.

Ein Indexeingangssignal 713 ist auch als ein Eingang an dem MUX 905 vorgesehen. Ein weiterer Eingang des MUX 905 ist an das Codewort-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 vorgesehen, um Eingänge an dem Steuermodul 909 zu trennen. Die Ausgangssignale des Gültigkeitsmoduls 906 weisen das Codewort-Ausgangssignal 803 und das Signal 809 auf (7). Die Umordnungseinheit 801 weist auch eine Steuerlogik auf (die nicht dargestellt ist um die Erfindung nicht unverständlich werden zu las sen), um die Operationen der verschiedenen Komponenten der Umordnungseinheit 801 zu koordinieren.An index input signal 713 is also as an input to the mux 905 intended. Another entrance of the MUX 905 is to the codeword input signal 719 coupled. The output of the MUX 905 is with an input of a validity module 906 and a data bus 907 connected. The data bus 907 is with a codeword memory 908 and an input of the MUX 905 connected. Likewise with the data bus 907 an output of a control module 909 connected. A start input signal 711 and an end input signal 712 are provided to inputs to the control module 909 to separate. The output signals of the validity module 906 have the codeword output 803 and the signal 809 on ( 7 ). The rearrangement unit 801 also has control logic (which is not shown so as not to obscure the invention) about the operations of the various components of the rearrangement unit 801 to coordinate.

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 werden 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 Wahrscheinlichkeitsklasse 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 einzigen uncodierten Bit besteht.To repeat, an index input signal 713 identifies a pass. In one embodiment, the index indicates one of 25 probability classes. In such a case, five bits are needed to represent the index. If multiple banks of probability classes are used then additional bits may be required to specify the particular arrangement. In one embodiment, the index input signal identifies the likelihood class for the pass count. A codeword input signal 714 is the codeword when the end of a run occurs and it becomes a "do not care" otherwise. Start input signals 711 and end input signals 712 are control signals which indicate whether a run begins, ends, or both. A pass begins or ends at the same time if the pass 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örter während des Umordnens. In einer Ausführungsform ist der Codewortspeicher 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 bestimmten 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 werden, viele Codewörter mit kurzen Durchlaufzählwerten starten (oder auch vielleicht enden). Dies erfordert einen großen Speicher, um ein Herausdrängen des langen Durchlaufs zu vermeiden, bevor er beendet ist.The rearrangement unit 801 orders the pass counts generated by the bit generator according to their input signals. A codeword memory 908 stores codewords during reordering. In one embodiment, the codeword memory is 908 greater than the number of pass counts that can be active at a particular time. This leads to a better compression. In fact, if the code word memory is less than the number of pass counts that can be active at a particular time, this would limit the number of active pass counts to a number that could be held in the memory. In a system that provides good compression, it often happens that while accumulating data for a long swept count codeword, many codewords start (or perhaps end) with short sweep counts. This requires a large memory to avoid forcing the long run out before it is finished.

Der Zeigerspeicher 901 speichert Adressen für Codewort-Speicherstellen für Wahrscheinlichkeitsklassen, die in der Mitte eines 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 bestimmte Wahrscheinlichkeitsklasse beendet ist, wird die Adresse, die in dem Zeigerspeicher 901 für diese Wahrscheinlichkeitsklasse 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ültigen Eintrag. Folglich speichert der Zeigerspeicher 901 die Stelle des ungültigen Codeworts für jeden Durchlaufzählwert.The pointer memory 901 stores addresses for codeword storage locations for probability classes that are in the middle of a run, and addresses a codeword memory 908 in the way of a direct access. The pointer memory 901 has a location for the address in the codeword memory 908 for every probability class that can be in the middle of a run. Once a pass is completed for a particular probability class, the address that is in the pointer memory becomes 901 stored for this probability class, used to access a codeword memory 908 access, and the terminated codeword is at this point in the codeword memory 908 written. Until then, this location contained in the codeword memory 908 an invalid entry. Consequently, the pointer memory stores 901 the location of the invalid codeword 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 Codeworts in den Speicher 908 zuzulassen. Der Kopfzähler 903 enthält die Adresse im Speicher 908 des nächsten auszugebenden Codeworts. Mit anderen Worten, der Kopfzähler 903 enthält die Codewort-Speicheradresse des nächsten Codeworts, das aus dem Speicher 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 codeword memory 908 access. With the help of the counter 903 and 904 may be the codeword memory 908 as a queue or a circular buffer (eg a FIFO memory). The tracking counter 904 contains the address of the next available location in the codeword memory 908 to insert a codeword into memory 908 permit. The head counter 903 contains the address in memory 908 of the next code word to be output. In other words, the head counter 903 contains the codeword memory address of the next codeword from the memory 908 is to delete. A location for each possible index (eg, a probability class) in the pointer store 901 is used to remember where the lag counter 904 was when a run was started so that the correct codeword at this point of the codeword memory 908 can be placed when the pass 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 logischen 1 liegt, dann enthält die Codewort-Speicherstelle gültige Daten. Wenn jedoch das gültige Bit auf logisch 0 ist, dann enthält die Codewort-Speicherstelle ungültige Daten. Ein Gültigkeitsmodul 905 stellt fest, wenn eine Speicherstelle ein gültiges Codewort enthält, jedesmal wenn ein Codewort aus dem Speicher 809 gelesen wird. In einer Ausführungsform fühlt der Gültigkeitsmodul 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 the codeword memory 908 are stored to indicate whether an entry stores valid memory word data or not. For example, if the valid bit is a logical 1, then the codeword location contains valid data. However, if the valid bit is at logic 0, then the codeword location contains invalid data. A validation module 905 detects when a memory location contains a valid codeword each time a codeword is out of memory 809 is read. In one embodiment, the validation module feels 907 whether the memory location is a valid codeword or a special invalid code.

Wenn ein neuer Durchlauf startet, wird ein ungültiger Dateneintrag 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 modellieren), wenn der Durchlauf beendet ist. In einer Ausführungsform 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 Zeigerspeicher 901 als ein Rest der Stelle für den Durchlaufzählwert in dem Codewortspeicher 908 gespeichert. Der Rest der Daten, der zwischen dem Kopfzeiger 903 und dem Nachlaufzeiger 904 im Speicher 908 vervollständig Durchlaufzählwerte (z.B. ungeordnete Durchlaufzählwerte). Die maximale Anzahl an ungültigen Speicherstellen ist 0 bis |–1, wobei| die Anzahl der Durchlaufzä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, gefüllt.When a new pass starts, an invalid data entry in the code word memory becomes 908 , The invalid data entry acts as a wildcard in the data stream stored in memory 908 is stored, so that the code word for the pass in the memory can be stored in the correct location to ensure proper ordering (to model the decoder) when the pass is completed. In one embodiment, the invalid data entry terminates the index via the MUX 905 and an invalid indication (eg, an invalid bit) from the control module 909 one. The address in the code word memory 908 at which the invalid entry is stored is from a trailer pointer 904 entered and then in the pointer memory 901 as a remainder of the location for the pass count in the codeword memory 908 saved. The rest of the data, between the head pointer 903 and the tracking pointer 904 In the storage room 908 complete pass counts (eg, unordered pass counts). The maximum number of invalid memory locations is 0 to | -1, where | the number of pass counts is. If a codeword is complete at the end of a pass, the pass count will be in memory 908 with the address in the pointer memory 901 is stored, filled.

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 Verbindung mit dem Signal 804 verwendet wird, um den entsprechenden Durchlaufzähler zurückzusetzen. Zusätzlich zum Speicher von Codewö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 in memory 908 stored so that when the memory 908 is full, but the run has not ended yet, the index in connection with the signal 804 is used to reset the corresponding pass counter. In addition to the memory of codewords and indexes in memory 908 For example, a bit called the "valid" bit is used to indicate which of these types of data is stored.

Wenn ein Durchlauf nicht startet oder endet, ist die Durchlaufzä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 Wahrscheinlichkeitsklasse enthalten ist. Wenn dann ein Durchlauf startet und ein Durchlauf nicht endet, wird (unabhängig davon, ob der Speicher 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 Wahrscheinlichkeitsklasse). Nach dem Schreiben des Nachlaufzeigers 904 wird der Nachlaufzeiger 904 inkrementiert.If a pass does not start or end, the pass count reorder unit is empty. When a pass starts and a pass does not end, and when the memory is full, then a codeword from the memory 908 issued. The codeword that is issued is the codeword that has been stored at the address in the header 903 is included for this probability class. Then, if a pass starts and a pass does not end, the index input signal will be (regardless of whether the memory is full) 713 in the store 908 over the mux 903 at the by the tracking pointer 904 enrolled in certain address. The tracking pointer 904 will then be in the lag memory 903 written to an address which is represented by the data in the index input signal 713 are determined (eg at the point in the pointer memory 901 for the probability class). After writing the tail pointer 904 becomes the trailer pointer 904 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, ausgelesen und als die Stelle in dem Codewortspeicher verwendet, um das vervollständigte Wort in dem Codewort-Eingangssignal 714 zu speichern.If a pass ends and a pass does not start then the address in the pointer memory becomes 901 is stored according to the index (probability class), read out and used as the location in the codeword memory to obtain the completed word in the codeword input signal 714 save.

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 Nachlaufzeiger 904 wird dann inkrementiert, um die nächste verfügbare Stelle zu erhalten (z. B. er wird um 1 inkrementiert).When one pass starts and one pass ends (ie one pass both starts and ends at the same time) and when the memory is full, then a codeword from the memory becomes 908 issued. When a pass starts and one pass ends (regardless of whether the memory is full) the codeword input signal 714 in the store 908 at the by the tracking pointer 904 written address. The tracking pointer 904 is then incremented to get the next available location (eg 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örter können auch ausgegeben werden, um eine minimale Rate (d.h. für eine Ratensteuerung) aufrechtzuerhalten. Ebenso können ungültige Codewörter ausgegeben werden, um den Codewortspeicher 908 auszugleichen, wenn alle Daten einer Durchlaufzählwert-Umordnung unterzogen worden sind, oder wenn eine Durchlaufzählwert-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 rearranging unit 801 Output code words at different times. In one embodiment, codewords may be output if they are valid or invalid. Codewords may be issued if they are valid, if there is a condition that the memory is full, and a pass is not completed. Invalid codewords may also be output to maintain a minimum rate (ie, rate control). Likewise, invalid codewords may be output to the codeword memory 908 when all data has undergone a pass count reordering, or when a pass count shuffling unit is placed in the middle of a code word memory 908 as a result of a reset operation jumps. In such a case, the decoder must remember that the encoder is operating 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 Codeworts) 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 Beendigung eines Durchlaufs, auf den das Schreiben des sich ergebenden Codeworts in eine vorher zugeteilte Speicherstelle folgt bewirkt nicht, daß bei vollem Speicher ein Ausgangssignal erfolgt. Ebenso kann, wenn ein Durchlauf endet und die entsprechende Adresse im Zeigerspeicher 901 und die Adresse in dem Kopfzähler 903 dieselben sind, das Codewort unmittelbar abgegeben werden und und der Kofpzä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ührungsform können Codewörter ausgegeben werden, bevor der Speicher voll ist. Wenn beispielsweise der Teil der Schlange, welcher 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 codeword is output when the codeword memory 908 is full. Once the memory is full, if an input (ie, starting a new code word) in the memory 908 is made, an output signal from the memory 908 issued. Refreshing to an entry does not cause an output signal from the memory 908 when there is a condition that the memory is full. That is, the completion of a pass following the writing of the resulting codeword into a previously allocated memory location does not cause an output signal to occur when the memory is full. Similarly, if a pass ends and the corresponding address in the pointer memory 901 and the address in the head counter 903 they are the same, the codeword is delivered immediately and the co-counter 903 can then be incremented without affecting the codeword memory 908 access. In one embodiment, there is a condition that the memory is full when the tracking pointer 904 equal to the head pointer 903 is after the tracking pointer has been incremented. Consequently, as soon as the trailing pointer equals 904 has been incremented, the control logic in the rearrangement unit 801 the tracking pointer 904 in the head pointer 903 and if they are the same, the control logic determines that the codeword memory 908 is full, and that a codeword should be issued. In another embodiment, codewords may be issued before the memory is full. For example, if the part of the queue addressed by the header contains valid codewords, it is output. This requires that the beginning of the queue be repeatedly tested to determine the state of the code words therein. The codeword memory 908 is emptied at the end of a file encoding.

Von der Umordnungseinheit 801 wird ein Codewort ausgegeben, indem zuerst ein Wert (z.B. ein Datenwert) von dem Spöeicher 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 ausgegeben. 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 solang 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 durchgefü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.From the rearrangement unit 801 A code word is output by first providing a value (eg, a data value) from the disc 908 is read at an address, which by the head pointer 903 is specified. The outputting of codewords is controlled and coordinated by means of the control logic. The validity module 906 performs a check to determine if the value is a codeword. In other words, the validity module 906 determines if the codeword is valid. In one embodiment, the validation module 906 determine the validity of an entry by checking the validity bit that has been stored with each entry. If the value is a codeword (ie the codeword is valid), then the value is output as a codeword. If, on the other hand, the value is not a codeword, ie the codeword is invalid), then any codeword may be output that has a pass of MPSs that is at least as long as the current sweep count. The "0" codeword is a codeword that correctly represents the current run and can be output. After the output has been performed, the head pointer will become 903 to the next place in the code word memory 908 incremented. On the other hand, with the help of "1N" with the shortest allowable run lengths of the decoder, it can only check if a codeword has been pushed out before giving out an LPS.

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, the rearrangement unit operates 801 with two clock cycles. In the first clock cycle, inputs to the reordering unit 801 added. In the second clock cycle, an output arrives at the codeword memory 908 in front.

Obwohl Codewörter ausgegeben werden können, wenn ein Kopfzeiger 903 ein gültiges Codewort adressiert, kann es bei einigen Ausführungen wünschenswert sein, nur ein Codewort auszugeben, wenn der Puffer voll ist. Dies bewirkt, daß das System eine fest vorgegebene 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örter ist, seit ein Ausgang nicht gemacht worden ist, bis er voll ist. Folglich gibt es eine konstante Verzögerung in den Codewörtern. 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 Erzeugen eines Ausgangssignals aufgefüllt wird, wird durch das Ausgangssignal ein Codewort pro Zyklus erzeugt.Although codewords can be output when a head pointer 903 addressed a valid codeword, it may be desirable in some embodiments to output only one codeword when the buffer is full. This causes the system to have a fixed delay in the form of a number of codewords rather than a variable delay. If the memory 908 is a predetermined number of codewords, is between the time at which a run starts and is input and when it is issued, the delay is the number of codewords since an output has not been made until it is full. Consequently, there is a constant delay in the codewords. The reordering delay is still variable with other measures, such as the amount of coded or original data. If a memory 908 is filled prior to generating an output signal, a code word per cycle is generated by the output signal.

Wenn eine Codewort-Speicherstelle als ungültig markiert ist, können die unbenutzten Codes verwendet werden, um Identifizierung 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 werden, 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 auszugeben, 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 Bitgenratoren und Durchlaufzählwerten, das System wieder anzufangen beginnt.If a codeword location is marked as invalid, the unused codes used to store identification, for which pass count this is (i.e., the context bin or probability class, which fill the place must, will stored there). This information is useful to the case to treat at which the memory is full. In particular, can the information is used to indicate to the bit generator the existence Codeword for this special run length was not finished, and that she now has to be ended. In such a case, a decision is made to invalidate a codeword due to the condition that the memory is full is, may have occurred. Consequently, when the system displays the Pass count resets the information if, in terms of bit generators and pass counts, the system starts to start again.

Bezüglich der Indexeingabe kann aus Pipelining-Gründe, wenn Bänke von Wahrscheinlichkeitsklassen verwendet werden, der Index eine Bankindentifizierung enthalten. Das heißt, es kann mehrere Durchlaufzählwerte für eine ganz bestimmte Wahrscheinlichkeitsklasse 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 Index input may be for pipelining reasons if banks of probability classes used, the index contain a bank identification. This means, it can have multiple pass counts for one give very specific probability class. For example, two Durchlaufzählwerte for the 80% code can be used if first 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 explizit zu speichern, würde dieses Wort die Speichernutzung minimieren. Für R-Codes kann ein Wert null 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 für das erste "1" Bit zu bestimmen.Since the codewords have variable length, they must be in memory 908 are stored in a way that their length is determined. Although it would be possible to explicitly save the size, this word would minimize memory usage. For R codes, a value of zero in memory may be a one-bit "0" Codeword and the "1N" codewords can be stored so that a priority coder 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 verarbeitet werden, um ein Codewort pro einem Taktzyklus zu behandeln. Da auf eine Stelle Speicher 908 Zugriff von mehreren Eingängen sein könnte, kann eine Stelle im Speicher 908 beschrieben werden, wie wenn ein ungültiges Codewort zu speichern ist, während ein anderer Teil gelesen werden kann, wie wenn ein Codewort ausgegeben wird. In einem solchen Fall sind Multiplexer zu multiplizieren, um die Daten- und Adressenbusse zu stützen.If the memory 908 one with multiple inputs (eg, two inputs), this implementation can be pipelined to handle one codeword per clock cycle. Because on one place memory 908 Access from multiple inputs could be a location in memory 908 can be described as if an invalid code word is to be stored, while another part can be read, as when a code word is output. In such a case, multiplexers must 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.If however, the encoder outputs a "0" codeword, and a pass counter resets, since the codeword memory is full, the decoder must do the same. This requires that the Decoder models the encoder codeword queue. As this is done will be 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" Codewort ungültig sein kann.Around To save performance in CMOS implementations, counters for "| N" codewords can be effective are made when "0" code words are issued for invalid runs become. This means, since a "1N" codeword to be decoded is valid, while only a "0" code word will be invalid can.

Alternative Ausführunasform, die auf Kontext basiertAlternative embodiment, based on context

9 ist ein Blockdiagramm für eine andere Ausführungsform einer Durchlaufzählwert-Umordnungseinheit, welche Daten umordnet, welche gemäß einem Kontext (was einer Wahrscheinlichkeitsklasse entgegengesetzt ist) empfangen worden sind. Die Umordnungseinheit 1000 führt eine Umordnung mit Hilfe der R-Codes durch. In 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ängenberechnungsblock 1006, einen Gültigkeitsfühlblick 1007 und einen Codewortspeicher 1008. Der Speicher 1008 speichert Codewörter während des Umordnens. Der Speicher 101 speichert Adressen 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 Kreispuffer 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 andere Codes variabler Länge verwendet würden, würde es speichereffizienter sein, ein "1" Bit hinzuzufügen, um den Start des Codeworts zu addieren, als log2 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. 9 Figure 13 is a block diagram for another embodiment of a pass count shuffling unit which rearranges data received according to a context (which is opposite to a probabilistic class). The rearrangement unit 1000 performs a rearrangement using the R codes. In 9 contains the unit 1000 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 sense of validity 1007 and a codeword memory 1008 , The memory 1008 stores codewords during reordering. The memory 101 stores addresses for codeword storage locations for context fans that are in the middle of a run. Through the counters 1002 and 1003 can be a codeword memory 1008 as a queue or a circular buffer and additionally in the manner of a direct access by the pointer memory 101 be addressed. For R codes, storing a zero value in memory may indicate a one-bit "0" codeword and the "1N" codewords may be stored so that a priority coder may be used to determine the length of the first "1" bit. A length calculation block or module 1008 works like a priority encoder. (If other variable-length codes were used, it would be more memory-efficient to add a "1" bit to add the start of the codeword, rather than adding 2 bits to log to explicitly store the length.) The Rearrangement Unit 1000 has a "backstage" control logic on the components 1001 to 1008 to coordinate and control.

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ültiger Eintrag, welcher das Kontextfach einschließt, in den Codewortspeicher 1008 an der Adresse geschrieben, welche durch den Nachlaufzeiger 1003 angezeigt ist. Eine Adresse des Nachlaufzeigers 1003 wird dann in dem Zeigerspeicher 101 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 Codewortspeicher 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 Codewort in den Codewortspeicher 1008 an der durch den Nachlaufzeiger 1003 bestimmten Adresse geschrieben und dann wird der Nachlaufzeiger 1003 inkrementiert.The operation of the rearrangement unit 1000 is very similar to the rearrangement unit based on probability estimates. When a new pass starts, then an invalid entry, which includes the context bin, becomes the codeword store 1008 written at the address, which by the tracking pointer 1003 is displayed. An address of the tail pointer 1003 will then be in the pointer memory 101 stored at the address of the context bin of the current pass count. The tracking counter 1003 is then incremented. When a pass ends, the pointer in the pointer counter becomes 1001 , which corresponds to the pass count, from the pointer 1001 read, and the codeword is parallel in the codeword memory 1008 written in a place specified by the pointer. If a pass neither starts nor ends and if there is a spot in the code word memory 1008 which is indicated by the address of the head pointer 1004 is determined, does not contain invalid data, the codeword addressed by the head pointer is read in and output. The head pointer 1004 is then incremented. In the event that a pass starts and ends at the same time, the codeword becomes the codeword memory 1008 at the by the tracking pointer 1003 written address and then the tracking pointer 1003 incremented.

In ähnlicher Weise kann, wenn ein Durchlauf endet und die entsprechende Adresse im Zeigerspeicher 1001 und die Adresse im Kopfzähler 1002 dieselben sind, das Codewort unmittelbar ausgegeben, und der Wert im Kopfzähler 1002 kann inkrementiert werden, ohne auf den Codewortspeicher 1008 zurückzugreifen.Similarly, if one pass ends and the corresponding address in the pointer memory 1001 and the address in the header 1002 they are the same, the codeword output immediately, and the value in the header 1002 can be incremented without going to the codeword memory 1008 recourse.

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 diesen 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/Kompressionsabwä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 pass count "context" systems, each context requests a location in the pointer store 1001 so that the width of the BG and PEM state memory can be extended to implement this memory. The width of the pointer memory 1001 is equal to the size needed for a codeword memory address. The number of digits in the code word memory 1008 can be chosen by the developer in a very specific implementation. The limited size of this memory reduces the com pression efficiency, so that it is a cost / compression trade-off. The width of the codeword memory is equal to the size of the largest codeword plus one bit for a valid / invalid indication.

Ein Beispiel mit dem R2 (2) Code, das in Tabelle 13 dargestellt ist, wird verwendet, um einen Umordnen zu veranschaulichen. Tabelle 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 uncodierte 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.One Example with the R2 (2) code shown in Table 13 is used to illustrate a reordering. Table 14 shows the data to be reordered (0 = MPS, probable res symbol, 1 = LPS, less probable symbol), which are referred to as context. There are only two contexts. The uncoded bit count shows time in uncoded bit clock cycles. Start and end of runs will be displayed, and codewords be at the end of runs shown.

Tabelle 13 - R2(2)Code

Figure 00600001
Table 13 - R2 (2) Code
Figure 00600001

Tabelle 14 - Beispiele von zu codierenden Daten

Figure 00610001
Table 14 - Examples of data to be encoded
Figure 00610001

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 Beispiel nicht überzulaufen. Jede Zeile zeigt den Zsutand des Systems 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 Speicherstellen anzuzeigen, die "don't care" sind. Für einige uncodierte Bits startet weder ein Durchlauf noch endet er, so daß die Umordnungseinheit leer ist. Für codierte Bits, die Durchläufe beenden, können ein oder mehr Codewörter ausgegeben werden, welche mehrere Änderungen in dem Systemzustand bewirken können.The shuffling operation for the example data is shown in Table 15. A codeword memory for four digits 0 through 3 is used, which is large enough not to overflow in this example. Each line shows the status of the system after an operation which is either the run start or run end for a particular context or the output of a codeword. An "x" is used to indicate memory locations that are "do not care". For some uncoded bits neither a run starts it still ends, so that the rearrangement unit is empty. For coded bits that terminate passes, one or more codewords may be output which may cause several changes in the system state.

Tabelle 15 - Beispiel von Umordnungsoperationen

Figure 00620001
Table 15 - Example of reordering operations
Figure 00620001

In Tabelle 15 werden die Kopf- und Nachlaufzeiger auf null initialisiert, was anzeigt, daß nichts in dem Codewortspeicher (z.B. der Schlange) enthalten ist.In Table 15 initializes the head and tail pointers to zero, which indicates that nothing is contained in the code word memory (e.g., the queue).

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.Of the Pointer memory is represented with two memory locations, namely one for every context. Every job has "do not care" values in front of you Bit number 1. The codeword memory is represented with a depth of four codewords, which are all initially "do not 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 Codewortspeicherstelle, 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 Nachlaufzeiger wird auf die nächste Codewortspeicherstelle 1 inkrementiert.According to the data obtained for the bit number 1, the head pointer remains aiming at the codeword storage location 0. Since the decoder expects data, the next available codeword storage location, 0, is assigned to the codeword and an invalid value is written into the memory location 0. Since the context is zero, the address of the codeword location associated with the codeword is written to a pointer location for the null context (pointer location 0). Consequently, a "0" is added to the pointer memory 0 stored. The tracking pointer is incremented to the next codeword memory location 1.

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 Daten dem zweiten Kontext, Kontext 1 Kontext entsprechen, wird die nächste Codewortspeicherstelle dem Codewort als Codewortspeicherstelle 1 zugeteilt, wie durch den Nachlaufzeiger angezeigt ist, und ein ungültiger Wert wird in die Stelle geschrieben. Die Adresse, Codewortstelle 1, wird in die Zeigerspeicherstelle geschrieben, die dem Kontext 1 entspricht. Das heißt, die Adresse der zweiten Codewort-Speicherstelle wird in die Zeigerspeicherstelle 1 geschrieben. Der Nachlaufzeiger wird dann inkrementiert.Corresponding the data corresponding to the number of bits 2, the pointer remains on the aligned first memory location (since there was no output is to be incremented). Since the data is the second context, context 1 context, the next codeword location will be the codeword assigned as a codeword storage location 1, as by the Trailing pointer is displayed and an invalid value is written to the digit. The address, codeword location 1, is placed in the pointer memory location written that corresponds to the context 1. That is, the Address of the second codeword memory location is in the pointer memory location 1 written. The tracking pointer is then incremented.

Entsprechend den Daten, die der Bitzahl 3 entsprechen, ist die Umordnungseinheit leer, da ein Durchlauf nicht startet oder endet.Corresponding the data corresponding to the bit number 3 is the rearrangement unit empty, as a pass does not start or end.

Entsprechend den Daten, die der Bitszahl 4 entsprechen, wird ein Ende eines Durchlauf für Kontext 1 angezeigt. Daher wird das Codewort "101" in die dem Kontext 1 zugeteilte Codewortspeicherstelle geschrieben (Codewortspeicherstelle 1), wie durch die Zeigerspeicherstelle für Kontext 1 angezeigt ist. Die Kopf- und Nachlaufzeiger bleiben dieselben, und der Wert in der Zeigerspeicherstelle für Kontext 1 wird nicht wieder verwendet; so ist er "don't care".Corresponding the data corresponding to the number of bits 4 becomes one end of a pass for context 1 is displayed. Therefore, the codeword becomes "101" in FIG the codeword location allocated to context 1 is written (Codeword location 1), as by the pointer location for context 1 is displayed. The head and tail pointers remain the same and the value in the pointer location for context 1 will not return used; so he is "do not care".

Entsprechend den Daten, die der Bitzahl 5 entsprechen, ist die Umordnungseinheit leer, da ein Durchlauf nicht startet oder endet. Entsprechend den Daten, die der Bitzahl 6 entsprechen, kommt derselbe Typ Operationen wie vorstehend beschrieben für Bit 2 vor.Corresponding the data corresponding to the number of bits 5 is the rearrangement unit empty, as a pass does not start or end. According to the Data corresponding to the bit number 6 comes the same type of operations as described above for Bit 2 ahead.

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 Zeigerspeicherstelle 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 bestimmt ist, gültige Daten. Daher werden die gültigen Daten ausgegeben und der Kopfzeiger wird inkrementiert. Durch ein Inkrementieren des Kopfspeichers wird auf eine andere Codewort-Speicherstelle 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.Corresponding the data corresponding to a bit number 7 comes the end of the pass for the codeword for context 0 ago. In this case, the codeword becomes "0" in the codeword storage location written (codeword storage location 0), as indicated by the pointer location for context 0 (pointer location 0). Then the value at the pointer memory location does not become again used so that he is a "do not care" value. As well contains the codeword storage location determined by the head pointer is, valid Dates. Therefore, the valid Data is output and the head pointer is incremented. Through a Incrementing the head store will be to another codeword location shown a valid Code word contains. Consequently, this codeword is output and becomes the head pointer again incremented. In this example, codewords are output if they are okay, which, in contrast, is when the Code word memory completely is full.

Ein Verarbeiten der uncodierten Bits kommt entsprechend der vorstehenden Beschreibung ständig vor. Die Codewortspeicherstellen werden nicht mit Hilfe ganz bestimmer 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.One Processing the uncoded bits comes according to the above Description constantly in front. The codeword storage locations are not completely determined Accessible to contexts made, so that codewords of one out of context at a very specific codeword location while encoding a data file.

Die Bit-PackungseinheitThe bit packing unit

Eine Bitpackungseinheit ist in 3 dargestellt, in welcher Daten, die von der Umordnungseinheit vor und nach einem Bitpacken verarbeitet worden sind, dargestellt sind. In 3 sind 16 Codewörter variabler Länge dargestellt, die mit 1 bis 16 numeriert 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 geschachtelte 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änderlicher Länge (oder einem partiellen Codewort) in einem ganz bestimmten verschachtelten Wort die Ordnung des verschachtelten Wort festlegt. Andere Arten von Ordnungskriterien können durchgeführt werden. Der Vorteil des Schachtelns von mehreren codierten strömen besteht darin, daß ein einziger codierter Datenkanal zum Übertragen von Daten verwendet werden kann, und daß ein Verschieben variabler Länge für jeden Strom parallel oder in einer Pipeline durchgeführt werden kann.A bit packing unit is in 3 in which data that has been processed by the reordering unit before and after a bitpacking are shown. In 3 There are shown 16 variable length codewords numbered 1 through 16 to indicate the order of use by the decoder. Each codeword is assigned to one of three coded streams. The data in each encoded stream is broken into fixed-length words called nested words. (In this case, a single codeword of variable length can be broken into two nested words). In this example, the nested words are placed in a single nested stream so that the order in the first variable length (or partial codeword) codeword in a particular nested word determines the order of the nested 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 transfer data, and variable-length shifting for each stream can be performed in parallel or in a pipeline.

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 durchzufü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 werden 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 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 Bitpackungseinheit in Pipelineform vorgesehen, um alle Ströme zu behandeln. Wenn die Einheit 802 der Erfindung einen Speicher mit zwei Anschlüssen (oder eine Registerdatei) verwendet, kann sie ein verschachteltes Wort pro Taktzyklus abgeben. Dies kann schneller sein als gefordert wird, um den Rest des Codierers aufrechtzuerhalten.The bitpacking unit 802 of the invention obtains the variable length codewords from the pass count reordering unit 803 and pack them into nested words. The unit 802 has a logic to perform the handling of variable length codewords, and a merged queue reordering unit to output fixed length interleaved words in the correct order. In one embodiment, the codewords are obtained from the reordering unit at a rate of up to one codeword per clock cycle. A block diagram of one embodiment of the bitpacking unit 802 is in 10 shown. In the following embodiment, four nested streams are used, each nested word being 16 bits; the codewords vary in length from 1 to 13 bits. In one embodiment, a single bitpacking unit is provided in pipeline form to handle all streams. If the unit 802 The invention uses a two-port memory (or a register file), it can output one interleaved word per clock cycle. This may be faster than required to maintain the remainder of the encoder.

In 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 vorgesehen, 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 10 indicates the bitpack unit 802 a packing logic 1101 , an electricity meter 1102 , a store 1103 , Tracking pointer 1104 and a head counter 1105 on. The packing logic 1101 is provided to receive the codewords and is connected to the electricity meter 1102 connected, which also with the memory 1103 connected is. Likewise is the memory 1103 with tracking pointers 1104 and head counters 1105 connected.

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 electricity meter 1102 holds the track of the interleaved stream to which the current input codeword is assigned. In one embodiment, the electricity meter counts 1102 repeats the streams from 0 to N-1, where N is the number of streams. As soon as an electricity meter 1102 When N reaches 1, it starts counting again from zero. In one embodiment, the electricity meter is 1102 a two-bit counter and counts from 0 to 3 (for four interleaved streams). In one embodiment, the electricity meter initializes 1102 to zero (eg via a global reset).

Die Packungslogik 1101 mischt das aktuelle eingegebene Codewort mit vorher eingegebenen Codewörtern, um verschachtelte Codewörter zu bilden. Die Länge jedes der Codewörter kann sich ändern. Daher packt die Packungslogik 1101 diese Codewörter veränderlicher Länge in Wörter fester Länge. Die verschachtelten Codewörter, die von der Packungslogik 1101 erzeugt worden sind, werden an den Speicher 1103 geordnet abgegeben und werden in dem Speicher 1103 bis zu dem richtigen Zeitpunkt gespeichert, um sie ab zugeben. In einer Ausführungsform ist der Speicher 1103 ein statischer Randomspeicher (SRAM) oder eine Registerdatei mit 64 16 Bit-Wörtern.The packing logic 1101 The current input codeword mixes with previously input codewords to form interlaced codewords. The length of each of the codewords may change. Therefore, the packing logic packs 1101 these codewords of variable length in words of fixed length. The nested codewords used by the packing logic 1101 are generated to the memory 1103 Ordered and placed in the store 1103 saved up to the right time to give it up. In one embodiment, the memory is 1103 static random access memory (SRAM) or 64-bit word register file.

Die verschachtelten Wörter sind in dem Speicher 1103 gespeichert. In der Erfindung ist die Größe des Speichers 1103 groß genug, um zwei Fälle zu behandeln. Ein Fall ist der normale Betriebsfall, bei welchem ein verschachtelter Strom Codewörter minimaler Länge hat und die anderen verschachtelten Ströme Codewörter maximaler Länge haben. Dieser erste Fall erfordert (3 × 3 = 39) Speicherstellen. Der andere Fall ist der Initialisierungsfall, bei welchem wiederum ein Strom kurze Codewörter oder solche 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 Betrieb des PEM eine dichtere Grenze (bound) von 76 zu.The nested words are in memory 1103 saved. In the invention, the size of the memory 1103 big enough to handle two cases. One case is the normal operation case where an interleaved stream has minimum length codewords and the other interleaved streams have codewords of maximum length. This first case requires (3 × 3 = 39) memory locations. The other case is the initialization case, where again one stream has short codewords or such minimum length and the others have long codewords or those of maximum length. For the second case, where (2 × 3 × 13 = 76) memory locations are sufficient, the operation of the PEM allows a closer 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 gefordert wird, wenn Daten in einem verschachtelten Wort N – 1 den Start des nächsten Codeworts enthalten. Ein Nachlaufzeiger bestimmt die Stelle in dem Speicher 1103, um das nächse verschachtelte 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 Wortes N spezifiziert werden, wenn der Decodierer-Anforderungszeitpunkt des verschachtelten Wortes N – 1 bekannt ist. In einer Ausführungsform sind die Zeiger acht 6 Bit-Register (zwei Nachlaufzeiger pro Strom).The memory 1103 in cooperation with the electricity meter 1102 and the trailing hands 1104 perform a reordering. The electricity meter 1102 shows a current flow from memory 1103 receiving codewords. Each nested stream is associated with at least one trail pointer. trailing pointer 1104 and the head counter 1105 perform a reordering of the codewords. The reason for two tracking pointers per stream follows from interleaving 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 tracking pointer determines the location in the memory 1103 to store the next nested words from a given nested stream. The other tracking pointer determines the location in memory to store the nested word after the next one. This allows the location of an interleaved word N to be specified when the decoder request timing 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 Nachlaufzeiger 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 verschachteltes Wort für einen ganz bestimmten Codestrom beginnt, der "nächste" Nachlaufzeiger auf einen Wert des "übernächsten" Nachlaufspeichers 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 Nachlaufzeiger 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, the tracking pointers are at the coding start 1104 set so that the first eight interleaved words (two from each stream) in memory 1103 one after the other from each stream. After an initialization is done every time the packing logic 1101 a new nested word for a particular code stream begins, the "next" trailing pointer to a value of the "after next" tail buffer of the code stream is set to the next available memory location. As a result, there are two trailing hands for each stream. In another embodiment, only one trail pointer is used for each stream and it indicates where the next nested word in the memory 1203 to save.

Der Kopfspeicher 1105 wird verwendet, um die Speicherstelle des nächsten verschachtelten Worts festzulegen, um es von der Bitpackeinheit 802 auszugeben. In der beschriebenen Ausführungsform weist der Kopfzähler 1105 einen 6 Bit-Zähler auf, der inkrementiert wird, um ein ganzes verschachteltes Wort zu einer bestimmten Zeit abzugeben.The head store 1105 is used to set the location of the next nested word to be used by the bitpack unit 802 issue. In the described embodiment, the head counter 1105 a 6-bit counter, which is incremented to deliver an entire interlaced 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 Kanal mit dem Codierer nicht Schritt halten kann. Ein Einbit-Pro-Zyklus-Codierer kann nicht ein verschateltes Wort pro Zyklus erzeugen. Wenn ein Codierer gut an einen Kanal angepaßt ist, kann der Kanal nicht ein verschachteltes Wort bei jedem Zyklus aufnehmen, und es ist eine gewisse FIFO-Pufferung notwendig. Beispielsweise 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 which is to be used in addition to rearrangement may also be used as FIFO buffering between the encoder and the channel. It may be desirable to have this memory which is larger than what is required for reordering so that a FIFO Most-Full signal may be used to "stall" the encoder when the Channel with the encoder can not keep up. A one bit per cycle encoder can not generate one bit word per cycle. If an encoder is well matched to a channel, the channel can not accommodate a nested word every cycle, and some FIFO buffering is necessary. For example, a channel that can accept a 16-bit interleaved word every 32 cycles would be a well-adapted design for an effective 2: 1 bandwidth expansion if the compression was 2: 1 or greater.

Die Packungslogik der ErfindungThe packing logic of invention

Ein Blockdiagramm der Packungslogik ist in 11 dargestellt. In 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 sowohl 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 packing logic is in 11 shown. In 11 has the packing logic 1101 a size unit 1201 , a set of accumulators 1202 , a sliding unit 1203 , a MUx 1204 , a set of registers 1205 and an OR logic 1206 on. The size unit 1201 is intended to record codewords and is equipped with accumulators 1202 connected. The accumulators both the codewords are to the sliding unit 1203 coupled. The sliding unit 1203 is with the mux 1204 and the OR logic 1206 connected. The MUX 1204 is also with registers 1205 and an output of the OR logic 1206 connected. The registers are also with the OR logic 1206 connected.

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 benachbart, so daß ein Prioritäscodierer in der Größeneinheit 1201 verwendet werden kann, um die Länge der "1N" Codewörter zu bestimmen und um eine Größe für "0" Codewörter zu erzeugen.In one embodiment, codewords are input to a 13-bit bus with unused zeroed bits. These zeroed unused bits are adjacent to the "1" in "1N" codewords so that a priority encoder is in the size unit 1201 can be used to determine the length of the "1N" codewords and to produce a size for "0" codewords.

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 Addierers der Ausgang des Akkumulators. In einer anderen Ausführungsform ist der Ausgang des Registers der Ausgang des Akkumulators. Mit Hilfe der Größe der Codewörter, die in der Größeneinheit 1201 aufgenommen worden sind, belegen die Akkumulatoren die Anzahl von zu verschiebenden Bits fest, um das aktuelle Codewort in dem Register zu verketten, welches das aktuelle verschachtelte Wort für diesen Strom enthält.batteries 1202 have several accumulators, one for each interleaved stream. The accumulator for each interleaved stream receives a record of the number of bits already in the current interleaved word. In one embodiment, each accumulator has a 4-bit adder (with carry) and a 4-bit register used for each stream. In one embodiment, the output of the adder 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 codewords, in the size unit 1201 The accumulators will determine the number of bits to shift to concatenate the current codeword in the register containing the current interleaved word for that 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. Folglich werden Daten in dem Codierer in der Decodierer-Reihenfolge verschoben. Der Ausgang der Schiebeeinheti 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 Pipelinesystem 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 to follow any previous codewords in the interleaved word. As a result, data in the encoder is shifted in the decoder order. The output of the sliding Einheti 1203 are 28 bits which deal with the case where a 13 bit codeword must be appended to 15 bits in the current interleaved word so that bits from the current codeword end up into the higher 12 bits of the 28 bits to be output. The sliding unit works here 1203 without feedback, and thus can be processed in the pipeline system. In one embodiment, the sliding unit 1203 a barrel shift 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 verschachtelten Wort.register 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 Codeworts an dem Akkumulator anzeigt, welcher dem Strom entspricht. Der Akkumulator hat einen Anfangswert von 0, der über ein globales Rücksetzen gesetzt worden ist. Da der Akkumulatorwert null ist, wird das Codewort nicht verschoben und wird dann mit Hilfe der ODER-Logik 1206 geODERt, wobei der Inhatl des REgisters dem Strom entspricht. Jedoch müssen in einigen Ausführungsformen 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 weitesten rechts liegenden Bitpositionen des Ausgangssignals der ODER-Logik 1206 zu setzen, und werden über MUX 1204 zu dem Register für ein Speichern bis zu dem nächsten Codewort von dem Strom rückgekoppelt. Folglich arbeitet anfangs die Schiebeeinheit 1203 als ein Durchgang. Die Anzahl Bits in dem ersten Codewort 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 Codewort 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 vervollständigen, und die Daten, die sich aus der ODER-Operation ergeben, werden über den MUX 1204 in das Register zurückgerettet. In einer Ausführungsform weist der MUX 1204 einen 2:1 Multiplexer 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ätzlichen (z.B. den oberen 12 Bits der 28 Bits, die von der Schiebeeinheit 1203 ausgegeben worden sind, nach den ersten 16 geladen wird, und füllt den Rest mit Nullen auf.Initially, a code word of a current from the shift unit 1203 get as a size unit 1201 indicates the size of the codeword 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 codeword will not be shifted and will then be using the OR logic 1206 where the contents of the register correspond to the stream. However, in some embodiments, 1N codewords 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 the codeword in the rightmost bit positions of the output of the OR logic 1206 to put, and are about MUX 1204 fed back to the register for storage up to the next codeword from the stream. Consequently, initially the shift unit operates 1203 as a passage. The number of bits in the first codeword are now stored in the accumulator. Upon receiving the next codeword for this stream, the value in the accumulator will be sent to the shifter 1203 and the codeword is left to the number of bits for combining with any previously entered bits in moved to the nested word. Zeros are placed in the other bit positions in the shifted word. Bits from the register that correspond to the stream will be bits from the shifter 1203 with the help of the OR logic 1206 postponed. If the accumulator generates a carry indication (eg, a signal), then more bits are required to complete the current interleaved word, and the data resulting from the OR operation is passed through the MUX 1204 rescued to the register. In one embodiment, the MUX 1204 a 2: 1 multiplexer. When the accumulator generates a carry, the 16 bits of the ORDERed data are from the OR logic 1206 a complete nested word and are then output. The MUX 1204 causes the register to be replaced with any additional (eg, the upper 12 bits of the 28 bits provided by the shift unit 1203 after the first 16 is loaded, and pad the remainder with zeroes.

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 Multiplexer 1204 sechzehn 12:1 Multiplexer mit vier davon, mit einem Eingangswert, der immer null ist.The controller will work for both the MUX 1204 as well as for outputting the interleaved word has the carry signal from the accumulator. In one embodiment, the multiplexer 1204 sixteen 12: 1 multiplexers with four of them, with an input value that is always zero.

Umordnungs-OptionenShuffling options

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

Ein Verfahren zum Umordnen von Daten in verschachtelten Worten besteht darin, einen sogenannten Snooper-Decoder zu verwenden, wie er in 24 dargestellt ist. In 24 sind mehrere Durchlaufzählwert-Umordnungseinheiten 2501A-n vorgesehen, um Codewort-Information zusammen mit dem Codewortstrom aufzunehmen. Jede Einheit erzeugt einen Codewort-Ausgangswert und einen Größenausgangswert. Eine gesonderte Bitpackungs-Logikeinheit (1101), wie Bitpackungseinheiten 2502A-n sind vorgesehen, um die Codewort- 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 Codestrom abzugeben ist.One method for reordering data in nested words is to use a so-called snooper decoder as described in US Pat 24 is shown. In 24 are multiple pass count reordering units 2501A-n provided to receive codeword information together with the codeword stream. Each unit generates a codeword output value and a magnitude output value. A separate bitpack logic unit ( 1101 ), such as bit packing units 2502A-n are provided to receive the codeword and magnitude output values from one of the reordering units 2501A-n. Bitpackungs logic units 2502A-n make nested words, which are both the MUX 2503 as well as the decoder 2504 be supplied. The decoder 2504 creates a select control signal from the MUX 2503 is received and shows the mux 2503 which nested word is to be output to the code stream.

Jeder codierte Datenstrom hat eine Durchlaufzählwert-Umordnungseinheit, die eine Durchlaufzählwert-Umordnungseinheit 801 in 7 aufweist. Jede Bitpackeinheit kombiniert Codewörter variabler 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 verschachtelte Worte von allen Bitpackeinheiten (entweder auf separaten Bussen, wie in 24 dargestellt, oder über einen gemeinsamen 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 Empfangsseite die Daten in derselben Reihenfolge wie der identische Snooper-Decodierer anfordert, werden die verschachtelten Wörter in der richtigen Reihenfolge übertragen.Each encoded data stream has a pass count shuffle unit which is a pass count shuffle unit 801 in 7 having. Each bitpack unit combines variable length codewords into fixed length codewords, for example 8, 16 or 32 bits per word. Each bitpack unit includes registers and a shift circuit as described above. The decoder 2504 has a fully operational decoder (including BG, PEM, and CM) which can access nested words from all bitpack units (either on separate buses, as in FIG 24 represented, or via a common bus). If the decoder 2504 has selected a nested word of one of the bitpack units, that word is transferred into the code stream. Since the decoder on the receiving side requests the data in the same order as the identical snooper 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 dieser 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 Decodierers, um die Hardwarekosten zu verringern. Für die Decodierer, welche mehrere Codewörter in demselben Taktzyklus decodieren, 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 beschrieben wird, existieren für Decodierer, die nur meistens ein Codewort pro Zyklus decodieren, einfachere Modelle.One Encoder with a snooper decoder can work in half a duplex system be attractive, since the snooper decoder also as a normal Decoder can be used. An advantage of this snooper decoder solution is the applicability to a termininistic coder. Alternative solutions, which will be discussed below without dependence from a snooper decoder use simpler models of the decoder, to reduce hardware costs. For the decoders, which are several codewords in the same clock cycle, modeling the decoder not be possible with less hardware than a decoder itself, which requires the use of a Snooper decoder. As follows is still described exist for decoders, which only mostly decode one codeword per cycle, simpler models.

Eine andere Technik, um Daten für in pipelineart verbundene Decodierersysteme umzuordnen, die meistens ein Codewort pro Taktzyklus 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 ziehen sind, und nicht die Codewörter für jeden codierten Datenstrom unabhängig hiervon). Wenn eine Zeitmarke jedem Codewort zugeordnet wird, wenn sie die Durchlaufzählwert-Umordnungseinheit einstellt, bis, welches bitgepackte verschachtelte Wort die älteste ihm zugeordnete Zeitmarke hat, das nächste auszugebende verschachtelte Codewort.Another technique for rearranging data for pipelined decoder systems, which usually decode one codeword per clock cycle, is based on the fact that the only information needed to model the decoder requirements for coded data is to change the order of the codecs Knowing codewords (taking into account all codewords, not the codewords for each coded datastream independently). If a timestamp is assigned to each codeword, if it sets the swept count reordering unit, which bit-packed nested word the oldest timestamp associated with it has the next interleaved codeword to be output.

Ein einbeispielhafte Codiererumordnungseinheit ist in Form eines Blockdiagramms in 25 dargestellt. In 25 ist das Codiersystem dasselbe, wie es in 24 beschrieben ist, außer daß eine Zeitmarken-Information für jede Durchlaufzählwert-Umordnungseinheit 2501A-1 erhalten wird. Diese Zeitmarkeninformation wird auch zu Bitpackeinheiten 2502A-1 weiter befördert. Bitpackeinheiten 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 verschachtelte Wort auszuwählen, das in den Codestrom abzugeben ist.An exemplary encoder rearranging unit is shown in block diagram form in FIG 25 shown. In 25 the encoding system is the same as it is in 24 except that timestamp information is provided for each pass count reorder unit 2501A-1 is obtained. This timestamp information also becomes bitpacking units 2502A-1 further promoted. Bitpackeinheiten 2502A-n see nested words on the MUX 2503 and their associated timestamps to the logic 2601 in front. The logic 2601 creates a control signal at the MUX 2503 to select the nested word to be output in 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 Codeworts) mit der ältesten Zeitmarke hat. Ein derartiges System erscheint am MUX 2503 in Form von mehreren Schlangen mit Zeitmarken. 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 Codewortspeicher 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 weniger Bits verwendet werden.In this embodiment, the snooper encoder is replaced by a simple comparator which determines which of the bitpack units 2502A-n has a codeword (or part of a codeword) with the oldest timestamp. Such a system appears on the MUX 2503 in the form of several snakes with timestamps. The logic 2601 simply choose between different snakes. The logic of each of the units 2503A-n changes only slightly (from a rearrangement unit 801 off) to write a timestamp when a run starts. Each rearrangement unit 2501A-n is equipped to store the timestamp in the codeword memory. Storing timestamps with enough bits to enumerate each codeword in the encoded data stream is sufficient, however, in some embodiments fewer bits may be used.

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 Praxis nicht alle Prüfungen durchgeführt werden müssen). Verschachtelte Worte werden als 32 Bit hinsichtlich der Größe angenommen.The Steps associated with multiple timestamped queues are briefly described below. These steps are the encoder operation. No simplification is provided for the cases when a run starts with the same codeword as well ends. The operations can be for each coded symbol to be checked (although in practice not all tests have to be carried out). nested Words are assumed to be 32 bits in size.

Figure 00740001
Figure 00740001

Figure 00750001
Figure 00750001

Die Decodiereroperationen sind ähnlich, obwohl die Codewörter nicht in der Schlange gesichert werden müssen. Es ist noch notwendig, die Zeitmarke der Codewörter in der Schlange zu sichern.The Decoder operations are similar, although the codewords do not need to be secured in line. It is still necessary the timestamp of the codewords secure in the queue.

Die Funktion der Zeitmarken, die vorstehend erläutert ist, wird verwendet, um die Ordnungsinformation der Codewörte rzu speichern. Eine äquivalente Art, dasselbe Konzept auszudrücken ergibt sich durch das Verwenden einer einzigen Schlange für alle Codewörter, d.h. eine vermischte Schlange. In dem gemischten Schlangensystem, wie es in 26 dargestellt ist, wird eine einzige Durchlaufzählwert-Umordnungseinheit 2701 für alle verschachtelten Ströme verwendet. Die Umordnungseinheit 2701 erzeugt Codewort-Größen- und Stromausgangswerte an Bitpackeinheiten 2502A-n, die verschachtelte Worte an den MUX 2503 und Positionsinformation an die Logik 2702 abgeben, welche MUX 2503 signalisiert, verschachtelte Worte als Teil des Codestroms abzugeben.The function of the timestamps explained above is used to store the order information of the codeword r. An equivalent way of expressing the same concept is by using a single queue for all codewords, ie a merged snake. In the mixed snake system, as in 26 is a single pass count shuffle unit 2701 used for all nested streams. The rearrangement unit 2701 generates codeword size and current output values on bitpack units 2502A-n , the nested words to the mux 2503 and position information to the logic 2702 submit which MUX 2503 signals to output nested words as part of the code stream.

Für beliebige Ströme speichert der Umordnungsspeicher einen verschachtelten Strom ID für jedes Codewort. Jeder verschachtelte Strom hat seinen eigenen Kopfzeiger. Wenn eine Bitpackeinheit mehr Daten benötigt, wird der entsprechende Kopfzeiger verwendet, um so viele Codewörter abzurufen, wie benötigt werden, um ein neues verschachteltes Wort zu bilden. Dies kann ein Nachsehen 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 Felder einschließen, um eine verknüpfte Liste durchzuführen.For any streams The reordering memory stores a nested stream ID for each Code word. Each nested stream has its own head pointer. When a bitpack unit needs more data, the corresponding one becomes Header used to retrieve as many codewords as needed to to form a new interlaced word. This can be a mistake be at many codeword storage locations to determine which ones Are parts of the right stream. Alternatively, this may be Look in the code word memory for additional fields to include a linked one List.

Eine andere Methode, um Ströme gemäß der Erfindung zu verschachteln, benutzt eine gemischte Schlange mit einer festen Stromzuweisung. Diese Methode benutzt einen einzigen Nachlaufzeiger, wie im Fall der gemischten Schlange, so daß keine Zeitmarken 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 verschachtelten 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 irgendeinem 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 Codewort-Umordnungsspeicher mit 12 Bits adressiert werden und es sollen vier verschachtelte Ströme verwendet werden. Der Nachlaufzeiger 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 zugewiesen. Sowohl die Nachlauf- als auch die Kopfzeiger werden als normale binäre Zähler inkrementiert.A other method to currents according to the invention to nest, use a mixed snake with a solid one Current assignment. This method uses a single tracking pointer, as in the case of the mixed queue, so no time stamps required are. Likewise, multiple headers are used in the previous case so that it There is no overhead to the data from a very specific stream leave. To achieve this, the assignment of codewords corresponding to nested currents the following default for N streams carried out: A codeword M is assigned to a stream M modulo (mod) N. nested streams can codewords from any context or probability class according to this Have method. If the number of streams is a power of two, can M mod N are calculated by throwing away some of the higher order bits become. For example, the codeword reordering memory with 12 bits are addressed and four nested streams are used become. The tracking pointer is 12 bits long, and the two least significant ones Bits identify the encoded stream for the next codeword. Four head pointer with 10 bits each are implicitly each of the four possible ones Combinations of the two least significant bits assigned. Either the trailing and the head pointers are incremented as normal binary counters.

In dem Decodierer hat die Schiebeeinheit Register, um verschachtelte Wörter zu speichern. Die Schiebeeinheit stellt entsprechend ausgerichtete codierte Daten in dem Bitgenerator dar. Wenn der Bitgenerator einige codierte Daten verwendet, infor miert er die Schiebeeinheit. Die Schiebeeinheit präsentiert ordnungsgemäß 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 herauszuschieben, und um vielleicht ein anderes verschachtelts Codewort anzufordern, bevor dieser spezielle verschachtelte Strom wieder verwendet wird.In At the decoder, the shift unit has registers to nested words save. The sliding unit provides aligned accordingly encoded data in the bit generator. If the bit generator has some encoded data, it informs the sliding unit. The Sliding unit presented properly aligned Data from the next nested electricity. If the number of encoded data streams is N, has the sliding unit N - 1 Clock cycles to push out the data used, and maybe one to request another nested codeword before that special one nested power is reused.

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 Speicheranforderungen und eine Komplexität, an dem ein Durchlaufzählwert für jede Wahrscheinlichkeitsklasse statt jedes Kontextfach erhalten bleibt.The The invention comprises a decoder comprising the real-time coder with a supports limited rearrangement storage. In one embodiment contains the decoder reduces memory requirements and complexity in which a pass count for every Probability class is preserved instead of every context box.

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

13A stellt ein Blockdiagramm einer Ausführungsform des Decodierer-Hardware-Systems der Erfindung dar. In 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 verbunden. Das Kontextmodell 1404 ist auch mit dem Speicher 1403 verbunden. An einem Ausgang des Kontextmodells 1404 werden die decodierten Daten 1411 abgegeben. 13A FIG. 4 illustrates a block diagram of one embodiment of the decoder hardware system of the invention. In FIG 13A has the decoder system 1400 a FIFO structure 1401 , Decoder 1402 , a store 1403 and a context model 1404 on. The decoder 1402 includes several decoders. Coded data 1410 be from the FIFO structure 1401 which encoded data is sent to the decoder 1402 emits. The decoder 1402 are with the memory 1403 and the context model 1404 connected. The context model 1404 is also with the memory 1403 connected. At an exit of the context model 1404 become the decoded data 1411 issued.

Im System 1400 werden die codierten Daten 1410, welche in die FIFO-Struktur 1401 eingegeben werden, geordnet und verschachtelt. Die FIFO-Struktur 1401 enthält Daten in der richtigen Reihenfolge. 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 welcher 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 werden. 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 Wahrscheinlichkeitsklasse an den Datenstrom angehängt werden. In diesem Fall wird der FIFO 1410 durch einen Speicherbereich 1410 ersetzt, um alle decodierten Daten aufzunehmen, bevor die Daten an die Decodierer 1402 weitergegeben werden, so daß die Daten richtig segmentiert werden können.In the system 1400 become the coded data 1410 which are in the FIFO structure 1401 be entered, ordered and nested. The FIFO structure 1401 contains data in the correct order. The streams are sent to the encoders 1402 issued. The decoder 1402 demand from these streams in a serial and deterministic order. Although the order in which decoder 1402 the coded data Request is non-trivial, it is not arbitrary. By ordering the codewords in that order in the encoder, rather than in the decoder, coded data can be interleaved in a single stream. In another embodiment, coded data 1410 have a single stream of unconnected data, with data appended to the data stream for each context bin, context class or likelihood class. In this case, the FIFO 1410 through a storage area 1410 replaced to record all decoded data before sending the data to the decoder 1402 be passed 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 Kontextfach. 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 Zeilenpufferung für das Kontextmodell 1404 enthalten sein. Die Zeilenpufferung schafft die notwendigen Daten oder die Form (template), wobei das Kontextmodell 1404 das aktuelle Kontextfach festlegt. Beispielsweise kann, wenn das Kontextmodell auf Pixelwerten in der Nähe des aktuellen Pixels basiert, eine Zeilenpufferung verwendet werden, um die Pixelwerte dieser Pixel in der Nähe zu speichern, die verwendet werden, um den spezifischen Kontext zu schaffen.If the coded data 1410 from the FIFO 1401 be recorded, determines the context model 1404 the current context field. In one embodiment, the context model determines 1404 the current context box based on previous pixels and / or bits. Although not shown, a line buffering may be used for the context model 1404 be included. The line buffering provides the necessary data or form (template), using the context model 1404 sets the current context tray. For example, if the context model is based on pixel values near the current pixel, line buffering may be used to store nearby the pixel values of those 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 Kontextfach ab. In einer Ausführungsform liest der Decodiererzustand den Wahrscheinlichkeitsbewertungs-Modul-(PM)Zustand und den Bitgenerator-Zustand ein. Der PEM Zustand bestimmt, welcher Code zu verwenden ist, um neue Codewörter zu decodieren. Der Bitgeneratorzustand 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.The decoding system asks for the context box 1400 the decode state of the memory 1403 for the current context tray. In one embodiment, the decoder state reads in the probability evaluation module (PM) state and the bit generator state. The PEM state determines which code to use to decode new codewords. The bit generator state maintains a record of the bits in the current run. The state is on decoders 1402 from the store 1403 out according to one through the contextual model 1404 provided address provided. The address accesses a location in the memory 1403 to, 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 Decodiererzustand. 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 tray from memory 1403 has been queried from, sets the system 1400 the next decompressed bit and processing the decoder state. decoder 1402 then, if necessary, decode the new codeword and / or update the pass count. The PEM state is updated if necessary, as well as the bit generation state. The decoder 1403 then write the new encoding state to memory 1403 ,

13B stellt eine Ausführungsform der Erfindung dar. In 14B weist der Decodierer eine Schiebelogik 1431, eine Bitgenerator-Logik 1432, eine "Neue-k"-Logik 1433, eine PEM-Aktualisier-Logik 1434, eine neue Codewort-Logik 1435, eine PEM-Zustand-Cache-Logik 1436, eine Codier-Masken-Logik 1437, eine Codier-MaxPL, Masken- und R3 Split-Expansionslogik 1438, eine Decodierlogik 1439, einen Multiplexer 1440 und eine Durchlaufzählwert-Aktualisierlogik 1441 auf. Die Schiebelogik 1431 ist vorgesehen, um den codierten Dateneingang 1443 sowie den Zustandseingang 1442 (vom Speicher) anzunehmen. Das Ausgangssignal der Schiebelogik 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 vorgesehen, 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 erzeugt das Zustands-Ausgangssignal (am Speicher). Der Zustandseingang 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 expansinslogik 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-Maskenlogik 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 Auswähleingang des MUX 1440 ist mit dem Ausgang der neuen Codewort-Logik 1435 verbunden. Der Ausgang des MUX 1440, der Expansionslogik 1438 und der Logik 1437 sind mit Eingängen der Aktualisierlogik 1441 verbunden. Der Ausgang der Logik 1441 ist in dem Zustandsausgangssignal zum Speicher eingeschlossen. 13B represents an embodiment of the invention. In 14B the decoder has a shift logic 1431 , a bit generator logic 1432 , a "new k" logic 1433 , a PEM update logic 1434 , a new codeword logic 1435 , a PEM state cache logic 1436 , a coding mask logic 1437 , a Coding MaxPL, Mask and R3 split expansion logic 1438 , a decoding logic 1439 , a multiplexer 1440 and a pass count updating logic 1441 on. The sliding logic 1431 is provided to the coded data input 1443 as well as the state input 1442 (from memory) to accept. The output signal of the shift logic 1431 is also an input to the biter generation logic 1432 , the "new-k" generation logic 1433 and the PEM update logic 1432 intended. The biter generation logic 1432 is also provided to the state input 1442 and generates the decoded data output value at the context model. The "new k" logic 1433 generates an output signal to an input of the encoding mask logic 1437 is created. The PEM update logic 1434 is also sent to a state input 1432 created and generates the state output signal (memory). The state input 1442 also gets to inputs of the re-encode word logic 1435 and the PEM state encoding logic 1436 created. The output of the logic 1436 is from the expansinslogik 1438 added. The exit of the expansion logic 1438 is with the decoding logic 1539 and also with the updating logic 1441 connected. The other input to the decode logic is at the output of the encoder mask logic 1437 connected. the output of the decoding logic 1439 is with an input of the mux 1440 connected. The other entrance of the MUX 1440 is with the state input 1442 connected. The selection input of the MUX 1440 is with the output of the new codeword logic 1435 connected. The output of the MUX 1440 , the expansion logic 1438 and the logic 1437 are with inputs of the update logic 1441 connected. The output of the logic 1441 is included in the state output to the 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 erzeugen. 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ächste Codewort wird dann an die Decodierlogik 1439 und an die Aktualisierlogik 1441 abgegeben.The sliding logic 1431 moves data from the code stream. Based on the coded data input and the state input, the logic generates 1432 encoded data on the context model. The logic 1433 also uses the data shifted in and the state input to produce a new value of k. In one embodiment, the logic uses 1431 the PEM state and the first bit of encoded data to produce the new value of k. Based on the new k value generates the logic 1437 an RLZ mask for the next codeword. The RLZ mask for the next codeword is then sent to the Decoding logic 1439 and the updating logic 1441 issued.

Die Logik 1434 aktualisiert den PEM-Zustand. In einer Ausführungsform wird der PEM-Zustand mit Hilfe des vorliegenden Zustands aktualisiert. Der aktuelle Zustand wird dann an den Speicher 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 maximale Lauflänge, die akuelle Maske und einen R3-Splitwert zu erzeugen. Die Logik 1439 decodiert das Codewort, um ein Durchlaufzählwert-Ausgangssignal zu erzeugen. Der MUX 1440 wählt entweder das Ausgangssignal von der Decodierlogik 1439 oder die Zustandseingabe 1442 an der Logik 1441, welche den Durchlaufzählwert aktualisiert.The logic 1434 updates the PEM state. In one embodiment, the PEM state is updated using the present state. The current state is then delivered to the memory. The new codeword logic 1431 determines if a new codeword is needed. The PEM logic 1436 determined the code for decoding using the state input 1442 , The code becomes the expansion logic 1438 entered to generate the maximum run length, the current mask and an R3 split value. The logic 1439 decodes the codeword to produce a pass count output. The MUX 1440 either selects the output from the decode logic 1439 or the state input 1442 at the logic 1441 which updates the pass count.

Das Decodiersystem 1400 einschließlich des Decodierers 1430 der Erfindung arbeitet in einer Pipeline-Art. In einer ausführungsform 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 Decodiersystems ist in 14A dargestellt. In 14A ist eine Ausfü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 The invention works in a pipeline fashion. In one embodiment, the decoding system determines 1400 In the invention, context fans evaluate probabilities, decode codewords, and generate bits for pass count each in a pipelined manner. In one embodiment, the pipeline structure of the decoding system is in 14A shown. In 14A For example, one embodiment of the pipeline decoding process of the invention is shown in six levels numbered 1 through 6.

In der ersten Stufe wird das aktuelle Kontextfach bestimmt (1501). In der zweiten Stufe kommt, nachdem das Kontextfach bestimmt worden ist, ein Speichereinlesen vor (1402), wobei der aktuelle Decodierzustand für das Kontextfach vom Speicher abgefragt wird. Wie vorstehend bereits ausgeführt, schließt der Decodierzustand den PEM- und den Bitgenerator-Zustand ein.In the first stage, the current context box is determined ( 1501 ). In the second stage, after the context box has been determined, a memory read occurs ( 1402 ), wherein the current decode state for the context tray is retrieved from the memory. As stated above, the decode state includes the PEM and bit generator states.

In der dritten Stufe des Pipeline-Decodierprozesses der Erfindung 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 ). As a result, one bit is available on the context model. Two more operations happen during the third stage. The PEM state is converted into a code type ( 1504 ), and it is determined whether a new codeword must be decoded in the third stage ( 1505 ).

Während der vierten Stufe verarbeiter 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. Beispielsweise wird ein Codewort decodiert, um den nächsten Durchlaufzählwert festzulegen, oder der Durchlaufzählwert wird für das akuelle Codewort akualisiert (1506). Erforderlichenfalls werden, wenn neue Codeworte decodiert werden, mehrere codierte Daten von dem Eingangs-FIFO abgefragt. Eine weitere Suboperation, 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 beschrieben 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 Decodiererzustand zusammen mit einem aktualisierten PEM-Zustand in den Speicher geschrieben (1509), und das Verschieben beginnt für das nächste Codewort (1510). In der sechsten Stufe ist das Verschieben zu dem nächsten Codewort beendet (1510).During the fourth stage, the decoding system processes a codeword and / or updates the pass count (FIG. 1506 ). Several sub-operations are involved in processing a codeword and updating the pass count. For example, a codeword is decoded to set the next pass count, or the pass count is updated for the current codeword ( 1506 ). If necessary, when new codewords are decoded, multiple coded data is polled from the input FIFO. Another sub-operation occurring in the fourth stage is updating the PEM state ( 1507 ). Lastly, in the fourth stage of the decode pipeline, the new PEM state is used to determine what the runlength zero codeword (to be described later) is for the next code when the sweep count of the current codeword is zero ( 1508 ). During the fifth stage of the decoding pipeline of the invention, the decoder state is written into memory along with an updated PEM state ( 1509 ), and shifting begins for the next codeword ( 1510 ). In the sixth stage, the shift to the next codeword is completed ( 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 Decodierer 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 Decodierer abgegeben worden sind, aufzunehmen, wie sie erzeugt werden. 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 angehalten werden muß, um ein Video einholen zu können.The Pipeline coding of the invention actually begins with a decision whether the decoding process too start is. This statement is based on whether there is enough data to represent the decoder of the invention. If not enough Data from the FIFO, the decoding system gets stuck (Stalled). In another case, the decoding system may get stuck remain when decoded data is submitted to a peripheral facility which is unable to receive the data from the decoder have been submitted to record how they are generated. For example can if the decoder is a delivery to a video display interface and the video circuit assigned to it, the video is too slow be so that the Decoder must be stopped to get a video.

Sobald die Entscheidung getroffen worden ist, den Decodierprozeß zu starten, wird das akutelle Kontextfach durch das Kontextmodell bestimmt. Bei der Erfindung wird das aktuelle Kontextfach durch Überprüfen der vorherigen Daten festgestellt. Solche vorherigen Daten können in Zeilenpuffer gespeichert werden und können Daten von der aktuellen Zeile und/oder vorherigen Zeilen enthalten, beispielsweise in einem Kontextmodell für ein vorgegebenes Bit. Bits von Zeilenpuffer(n) können mit Hilfe eines Modells (template) bezüglich der vorherigen Daten ausgelegt werden, so daß das Kontextfach für die aktuellen Daten dementsprechend 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. As soon as the decision has been made to start the decoding process, the current context is determined by the context model. In the invention, the current context subject is checked by checking the previous data detected. Such previous data can be found in Line buffers can be stored and can take data from the current one Line and / or previous lines, for example in one Context model for a given bit. Bits of line buffer (s) can be constructed using a model (template) regarding the previous data, so that the context box for the current Data selected accordingly will, whether the previous examining Data matches the model. These line buffers contain bit shift registers. A pattern can be for every bit plane of a n bit image can be used.

In einer Ausführungsform wird das Kontextfach dadurch gewählt, daß eine Adresse an einen Speicher während der nächsten Pipeline-Stufe abgegeben wird. Die Adresse kann eine vorherbestimmte Anzahl Bits, wie beispielsweise 3 Bits enthalten, um die Bitebene zu identifizieren. Mit Hilfe von drei Bits kann die Bitposition 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 identifizieren, können kombiniert werden, um eine Adresse für eine spezifische Stelle im Speicher zu erzeugen, welcher die Zustandsinformation für das durch diese Bits festgelegte Kontextfach enthält. Beispielsweise kann durch Benutzen von drei Bits, um die Bitposition in einem ganz bestimmten Pixel zu bestimmen, und durch Verwenden der zen vorherigen Bits in derselben Position in jeder der vorherigen Pixel in dem Modell eine 13 Bit Kontext-Adresse erzeugt werden.In one embodiment, the context tray is selected by providing an address to a memory during the next pipeline stage. The address may contain a predetermined number of bits, such as 3 bits, to identify the bit-plane. With the help of three bits, the bit position in pixel data can be identified. The form used to determine the context can also be represented as part of the address. The bits used to identify the bit-plane and the bits identifying the shape can be combined to generate an address for a specific location in memory that contains the state information for the context slot specified by those bits. For example, by using three bits to determine the bit position in a particular pixel and by using the zen previous bits in the same position in each of the previous pixels in the model, a 13 bit context address can be 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-Zustand. Der PEM-Zustand schließt den aktuellen Wahrscheinlichkeitsvoranschlag ein. Da mehr als ein Zustand denselben Code benutzen, schließt der PEM-Zustand eine Wahrscheinlichkeitsklasse oder eine Codebestimmung ein, jedoch nicht einen Index in einer Tabelle, wie beispielsweise die in 4 dargestellte Tabelle. Wenn eine Tabelle, wie die in 4 verwendet wird, schafft der PEM-Zustand das wahrscheinlichste Symbol (MPS) als ein Mittel, um zu identifizieren, ob der aktuelle PEM-Zustand auf der positiven oder negativen Seite der Tabelle angeordnet ist. Der Biterzeugungszustand 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 Durchlaufzähler erforderlichen Platz zu verringern. Wenn die Platzkosten in dem System für jeden Kontext niedrig sind, muß der Biterzeugungszustand nicht im Speicher gespeichert werden.With the help of the address generated by the context model, the memory (eg RAM) is accessed to obtain the state information. Of the. State contains the PEM state. The PEM state includes the current probabilistic estimate. Since more than one state uses the same code, the PEM state includes a probability class or a code determination, but not an index in a table, such as those in 4 shown table. If a table, like the one in 4 is used, the PEM state provides the most probable symbol (MPS) as a means to identify whether the current PEM state is located on the positive or negative side of the table. The bit generation state may include the count value and an indication of whether an LPS is present. In one embodiment, the current pass MPS value is also included to decode the next codeword. In the invention, the bit generator state is stored in the memory to reduce the space required for the flow counters. If the space cost in the system is low for each context, then the biter generation state need not be stored in memory.

Sobald die vierte Stufe beeendet worden ist, werden ein neuer Bitgeneratorzustand und ein PEM-Zustand in den Speicher geschrieben. Ebenso wird in der fünften Stufe der codierte Datenstrom mit den nächsten Codewort verschoben. Die Schiebeoperation ist in der sechsten Stufe beendet.As soon as the fourth stage has been turned on, become a new bit generator state and a PEM state written to memory. Likewise, in the fifth Stage the coded data stream with the next codeword shifted. The shift operation is completed in the sixth stage.

In 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 Erfindung unterstützt werden. Wie dargestellt, sind die eingegebenen 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 verschachtelten 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. Verschachtelte 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.In 13C is a block diagram of one embodiment of a FIFO structure 1401 of the invention, based on which a nested word buffering for two decoder is explained. A number of decoders may be supported by the teachings of the invention. As shown, the input data and the FIFO are wide enough to hold two interlaced words. FIFO 1401 has a FIFO 1460 , Register 1461 and 1462 , MUXs 1463 and 1464 and a control block 1465 on. The two input codewords are used as the input nested words. Inputs to MUX 1463 are with the outputs of registers 1461 and 1462 connected. The control block 1465 is provided to control signals to FIFO 1460 , Registers 1461 and 1462 and at the muxs 1463 and 1464 to accomplish. Nested words are the output data (output data 1 and 2) provided to two decoders. Each decoder uses a request signal to indicate that the current word has been used and a new word is needed next. The request signals from the decoders are sent to inputs of the control block 1,465 created. The control block 1465 Also outputs a FIFO request signal to request more data from the 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 wiedergegebenen Logik. Tabelle 16

Figure 00850001

  • *X bedeutet "dont' care"
Initially, the FIFO and registers 1461 and 1462 filled with data, and it becomes a valid flip-flop in the control unit 1465 set. Each time a request comes, the control block generates 1,465 the data according to the logic shown in Table 16. Table 16
Figure 00850001
  • * X means "do not care"

14B stellt eine andere Konzeptansicht des Decodierers der Erfindung dar. In 14B werden (codierte) Daten variabler Länge in einen Codierer eingegeben. Der Decodierer gibt (decodierte) 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 verringen den Durchsatz in die bezüglich einer Verzögerung toleranten Decodierer nicht. 14B FIG. 4 illustrates another conceptual view of the decoder of the invention 14B For example, variable length (encoded) data is input to an encoder. The decoder outputs (decoded) fixed length data. The output data is coupled as a delayed feedback, which is taken as an input to the decoder. In the decoder of the invention, variable-length shifting used in decoding is based on decoded data available after a certain delay. The feedback delay does not reduce the throughput to the delay tolerant decoder.

Die eingegebenen Daten variabler Länge werden in verschachtelte Worte fester Länge unterteilt, wie in Verbindung mit 3 beschrieben ist. Der Decodierer benutzt die Worte fester Länge, wie nachstehend in Verbindung mit 15 beschrieben wird. Der Decodierer und ein Verzögern modelliert ein Pipeline-Decoder, wie er in Verbindung mit 14 und 32 beschrieben wird, oder mehrere parallele Decodierer, wie sie in Verbindung mit 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öglichen ein paralleles Handhaben von Daten variabler Länge.The inputted variable length data is divided into interleaved fixed length words, as in connection with 3 is described. The decoder uses the fixed length words as described below in connection with 15 is described. The decoder and a delay model a pipeline decoder as used in conjunction with 14 and 32 or several parallel decoders, as used in conjunction with 1A to 1D are described. Thus, the invention provides a delay tolerant decoder. The delay tolerant decoders of the invention allow variable length data to be handled in parallel.

Herkömmliche Decodierer (z.B. Huffman-Decodierer) sind nicht immer verzögerungstolerant. Information, die aus einem Decodieren 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 delay tolerant. Information resulting from decoding all previous code words is required to perform the variable-length displacement, the is necessary to the next Code word to decode. On the other hand, the invention provides delay tolerant Decoder.

Verschieben in dem DecodiersystemMove in the decoding system

Der Decodierer der Erfindung schafft eine Schiebelogik, um die verschachtelten Worte in dem richtigen Bitgenerator für ein Decodieren zu verschieben. Die Verschiebeeinheit der Erfindung erfordert kein besonderen Typ von Anfangszeichen "Kontext" ("by context") oder von "Wahrscheinlichkeits"-("by probability"-)Parallelismus. Es wird ein Coderer angenommen, welcher ein Codewort 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 angefordert wird. Nur dann werden die Daten auf den nächsten Strom geschaltet.Of the Decoder of the invention provides a shift logic to the interleaved Move words in the right bit generator for decoding. The shifting unit of the invention does not require a special type initial characters "by context" or "probability" - parallelism. A coder is assumed which transmits a codeword M to the stream M mod N (M% N in C language), where N is the number of streams. In the invention, coded data is represented from the current stream, until a codeword is requested. Only then will the data be on the next Power switched.

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 15 weist die Schiebeeinheit 1600 vier Register 1601 bis 1604, die vorgesehen sind, um Eingänge von den verschachtelten codierten Daten aufzunehmen. 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)-Schiebeeinheit 1606 verbunden. Der Ausgangswert der Schiebeeinheit 1606 ist auch als Eingangswert an einem Register 1706, an MUX & Register 1608 bis 1610 und einer Größeneinheit 1611 vorgesehen. Der Ausgang der Größeneinheit 1611 ist mit einem Akkumulator 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 & Register 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 Datenwert. 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-Akkumulator. 15 Figure 1 illustrates an embodiment of the shift unit for the decoder of the invention. The sliding unit 1600 is designed for four data streams. This leaves four clock cycles for each shift operation to. The nested words have 16 bits and the longest code word has 13 bits. In 15 has the sliding unit 1600 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 as inputs to MUX 1605 intended. The output of MUX 1605 is with the entrance of a barrel barrel unit 1606 connected. The output value of the sliding unit 1606 is also an input to a register 1706 , to MUX & Register 1608 to 1610 and a size unit 1611 intended. The output of the size unit 1611 is with an accumulator 1612 connected. An output of the accumulator 1612 is to the sliding unit 1606 fed back. An output of the register 1607 is as an input to MUX & Register 1608 intended. An output from MUX & Register 1608 is as an input to MUX & Register 1309 intended. An output of MUX & Register is as an input to MUX & Register 1610 intended. The output value of MUX & Register 1610 is the aligned encoded data value. In one embodiment, the registers are 1601 to 1604 16 bit register, 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 vorgesehen. 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.The registers 1601 to 1604 pick up 16-bit words from the FIFO and give them to the shifter 1601 one. At least 32 Bits of the uncoded data are always at the shift unit 1606 intended. The four registers 1601 to 1604 are initialized to begin with two 16-bit words of coded data. Thus, there is always at least one new codeword available for each stream.

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

Die Schiebeeinheit 1600 weist einen FIFO, der aus vier Registern 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 Codewort enthält, oder wenn es auf die Schiebeeinheit 1606 wartet, um ein Codewort zu schaffen.The sliding unit 1600 has a FIFO consisting of four registers, three of which have multiplexed inputs. Each register of registers 1607 to 1610 holds at least one codeword so that the width of the registers and the multiplexers 13 Bits is to accommodate the longest possible codeword. Each register also has a control flip-flop (not shown) associated with it, which indicates when a particular register contains a codeword or when it is on the shift unit 1606 waiting to create a codeword.

Der FIFO ist niemals leer. Nur ein Wort kann pro Taktzyklus verwendet werden, und nur ein Codewort kann pro Taktzyklus verschoben werden. Die Verzögerung, um das Verschieben durchzuführen, wird kompensiert, da das System vier Codeworte vorher startet. Wenn jedes Codewort hingeschoben wird, um ausgerichtete codierte Datenausgang zu sein, werden die anderen Codewörter in den Registern 1607 bis 1610 nach unten verschoben. Wenn das Codewort links in dem FIFO im Register 1620 gespeichert ist, bewirkt 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 codeword can be shifted per clock cycle. The delay to perform the move is compensated because the system starts four code words in advance. As each codeword is shifted to be aligned coded data output, the other codewords become in the registers 1607 to 1610 moved down. If the codeword is left in the FIFO in the register 1620 is stored, causes the sliding unit 1606 that code words from registers 1601 to 1604 over the mux 1605 be read out to the registers 1607 to 1609 to fill. The FIFO can be designed to match the register 1607 to fill again with the next codeword as soon as its codeword in the register 1608 is moved.

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 aktuellen Codeworts für jeden Datenstrom enthalten. Der Akkumulator 1214 ist ein 4 Bit Akkumulator, der zum Steuern der Schiebeeinheit 1606 verwendet wird. Der Akkumulator 1612 erhöht seinen Wert um den Wert, der von der Codewort-Größeneinheit 1611 eingegeben worden ist. Wenn der Akkumulator 1612 überläuft (z.B. je desmal dann, wenn der Schiebezähltwert 16 oder größer ist), werden 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 des Codeworts, welches durch den aktuellen Code und das erste eine oder die ersten zwei Bits des aktuellen Codworts bestimmt wird. Bei einigen Ausführungsformen müssen die Register 1601 bis 1604 mit den codierten Daten initialisert werden, bevor das Decodieren beginnen kann.The sliding unit 1606 , a codeword size calculator 1611 and an accumulator selection unit 1612 handle the variable length move. The accumulator 1216 has four registers, one for each coded data stream, which contain the alignment of the current codeword for each data stream. The accumulator 1214 is a 4-bit accumulator used to control the sliding unit 1606 is used. The accumulator 1612 increases its value by the value of the codeword size unit 1611 has been entered. If the accumulator 1612 overflows (eg ever so, if the shift count 16 or larger), the registers become 1601 to 1604 shifted clock-controlled. 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 of the codeword determined by the current code and the first one or the first two bits of the current codeword. In some embodiments, the registers 1601 to 1604 are initialized with the encoded data before decoding can 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 codeword is requested by the system, the registers in the FIFO are clocked so that codewords are moved in the direction of the output. When the sliding unit 1601 is ready to supply a new codeword, 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 Entscheidung empfangen wird, Ströme zu schalten, kann ein vorausschauendes System, beispielsweise eines, das in 15B dargestellt ist, verwendet werden. In 15B ist ein Schieberegister 1620, bei welchem ein Vorausschauen angewendet ist, in Form eines Blockdiagramms dargestellt. Die Schiebeeinheit 1620 weist eine Schiebeeinheit 1600 auf, welche Ausgangssignale der aktuellen codierten Daten und die nächsten codierten Daten erzeugt. Die aktuellen codierten Daten werden an einen Eingang einer Codewort vorverarbeitenden Logikeinheit 1621 und an einen Eingang einer Codewort-Verarbeitungseinheit 1622 angelegt. Die nächsten codierten Daten werden an einen Eingang einer Codewort vorverarbeitenden 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 codeword signal is received in the bit generator before the decision to switch streams is made. If it can not be guaranteed that the next codeword signal will be received by the bit generator prior to the decision to switch streams, a look-ahead system, such as one shown in FIG 15B is shown used. In 15B is a shift register 1620 , in which a look ahead is applied, shown in the form of a block diagram. The sliding unit 1620 has a sliding unit 1600 which produces outputs of the current encoded data and the next encoded data. The current coded data is sent to an input of a code word preprocessing logic unit 1621 and to an input of a codeword processing unit 1622 created. The next coded data is sent to an input of a code word preprocessing logic unit 1622 created. Outputs from the two logic units 1621 and 1622 be to inputs of a mux 1623 created. The output of MUX 1623 is with another input of codeword processing logic 1624 connected.

Die Logik, welche das Codewort verwendet, ist in zwei Teile unterteilt, eine Codewort-Vorverarbeitungslogik und eine Codewort-Verarbeitungslogik. Zwei identische Pipeline-Vorverarbeitungseinheiten 1621 und 1622 arbeiten, bevor der verschachtelte Strom verschoben werden kann. Eine der Vorverarbeitungseinheiten 1621 und 1622 erzeugt die richtige Information, wenn der Strom geschaltet 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-Vorverarbeitung vom Multiplexer 1623 zu der Codewort-Verarbeitungslogik 1624 gemultiplext, welche die Operation mit dem richtigen Codewort beendet.The logic using the codeword is divided into two parts, codeword preprocessing logic and codeword processing logic. Two identical pipeline preprocessing units 1621 and 1622 work before the nested stream can be moved. 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 will be output from the multiplexer at the correct codeword preprocessing 1623 to the codeword processing logic 1624 which terminates the operation with the correct codeword.

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, wobei mehrere integrierte Schaltungen verwendet werden.In an embodiment it may be desired be, many chips for to use external storage or external context models. In these embodiments is it desirable the delay between generating a bit and having it available of the bit available on the context model, where several integrated circuits are used.

16 zeigt ein Blockdiagramm einer Ausführungsform eines systems 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 Kontextmodell in dem Codierchip relevant sind; hierbei enthält das Codierchip 1702 eine Biterzeugung, eine Wahrscheinlichkeitsbewertung usw. In 16 weist das Codierchip 1702 ein Kontextmodell 1703 nullter Ordnung, Kontextmodelle 1704 und 1705, eine Auswähllogik 1706, eine Speichersteuerung 1707 und einen Speicher 1708 auf. Das Kontextmodell 1703 nullter Ordnung und die Kontextmodelle 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 Speichersteuerung 1707 verbunden. 16 Figure 12 shows a block diagram of one embodiment of a system with both an external context model chip 1701 as well as an encoder chip 1702 with a memory for every context. Here, only the units that are relevant to the context model in the encoding chip are shown; this contains the coding chip 1702 a bit generation, a probabilistic evaluation, etc. In 16 has the coding chip 1702 a context model 1703 zeroth order, context models 1704 and 1705 , a selection logic 1706 , a memory controller 1707 and a memory 1708 on. The context model 1703 zeroth order and the context models 1704 and 1705 generate output signals which are applied to inputs of the selection logic 1706 be created. Another output of the selection logic 1706 is with an output of the external context model chip 1701 connected. The output of the logic 1706 is with an input of the memory 1708 connected. With an input of the memory 1708 is also an output of the memory controller 1707 connected.

Über die Auswähllogik 1706 kann entweder ein externes Kontextmodell 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 Nullordnungsteil 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 externe 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 vorherige 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.About the selection logic 1706 can either be an external context model or an internal context model (eg the context model 1703 zeroth order, the context model 1704 and 1705 ) be used. About the selection logic 1706 can be the internal zero-order part of the context model 1703 be used even if the external context model 1701 is used. The context model 1703 zeroth order creates one bit or more while the external context model chips 1701 the rest is generated. For example, the immediately preceding bits may be fed back and from the context model 1703 be found again while previous bits in the external context model 1701 walk. In this way, time-critical information remains on the chip. As a result, an off-chip communication delay for just generated bits is excluded.

17 ist ein Blockdiagramm eines Systems mit einem externen Kontextmodell, einem externen Speicher 1803 und einem Codierchip 1802. In 17 werden einige Speicheradressenleitungen von dem externen Kontextmodell 1801 angesteuert, während andere von dem Kontextmodell "nullter Ordnung" in dem Codierchip 1802 angesteuert werden. Das heißt, der Kontext von dem unmittelbar vorhergehenden 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 Kontextinformation von weiteren in dem vorherigen Zyklus ist ein Markov-Zustand höherer Ordnung. Die in 17 dargestellte Ausführungsform beseitigt eine Übertragungsverzögerung, die bei einem Aus führen dem Modell nullter Ordnung in dem externen Kontextmodellchip 1802 anhaftet. Jedoch kann es noch eine Kontextfach-Bestimmung mit einer biterzeugten Verzögerung infolge des Decodierchips 1802 und des Speichers 1803 geben. 17 Figure 12 is a block diagram of a system with an external context model, external memory 1803 and a coding chip 1802 , In 17 become some memory address lines from the external context model 1801 while others are "zero-order" in the encoding chip 1802 be controlled. That is, the context of the immediately preceding encoding cycle is driven by the zero order context model. This allows the encoder chip to provide the context information from the immediately preceding cycle with a minimum transfer delay. The context model chip 1802 precedes the remainder 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 of others in the previous cycle is a higher order Markov state. In the 17 The illustrated embodiment eliminates a transmission delay that results in an out-of-order model in the external context model chip 1802 adheres. However, there may still be a context-bin determination with a bit-generated delay due to the decode chip 1802 and the memory 1803 give.

Zu beachten ist, daß auch eine andere Speicherarchitektur verwendet werden werden könnte. Beispielsweise kann ein Chip mit dem Kontextmodell und einem Speicher auf einem Chip und dem Codierer 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 aufweisen, welcher für andere Kontexte verwendet wird.To Note that too another memory architecture could be used. For example can a chip with the context model and a memory on one Chip and the encoder can be used on another chip. As well For example, a system can use a coding chip with an internal memory for some Contexts is used and have an external memory, which for other contexts is used.

Bitgeneratoren mit einem SpeicherBit generators with one Storage

18 zeigt einen Decodierer mit einem Pipeline-Bitgenerator mit Speicher. In 18 weist der Decodierer 1900 ein Kontextmodell 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-Bitstromgenerator 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 Ausgang 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 Bitgenerator 1905 verbunden, und der Ausgang des Bitgenerators 1905 sind die decodierten Daten. 18 shows a decoder with a pipeline bit generator with memory. In 18 points the decoder 1900 a context model 1901 , a store 1902 , a PEM state-coding block 1903 , a pipeline bit generator 1905 , a store 1904 and a sliding unit 1906 on. The input of the context model 1901 indicates the decoded data from the pipeline bitstream generator 1905 on. At the entrances of the sliding unit 1906 the coded data is obtained. The outcome of the contextual model 1901 is with an input at the store 1902 connected. The output of the memory 1902 is with the PEM block 1903 connected. The output of the PEM block 1903 and the aligned coded data at the output of the shifter 1906 be to inputs of the bit generator 1905 created. The memory 1904 is also by a bidirectional bus with the bit generator 1905 connected, and the output of the bit generator 1905 are the decoded data.

Das Kontextmodell 1904 gibt ein Kontextfach entsprechend codierten 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 Wahrscheinlichkeitszustand zu erhalten. Der Wahrscheinlichkeitszustand wird von dem PEM-Modul 1903 erhalten, welcher die Wahrscheinlichkeitsklasse entsprechend den Wahrscheinlichkeitszustand erzeugt. Die Wahrscheinlichkeitsklasse wird dann als eine Adresse für einen Zugriff auf den Speicher 1904 verwendet, um den Durchlaufzählwert zu erhalten; dieser wird dann von dem Bitgenerator 1905 verwendet, um die decodierten daten zu erzeugen.The context model 1904 returns a context tray corresponding to encoded data at its inputs. The context model is called a context-based address for access to memory 1902 used to obtain a probabilistic state. The probability state is from the PEM module 1903 which generates the probability class according to the probability state. The likelihood class is then considered an address for accessing the memory 1904 used to get the pass count; this is then from the bit generator 1905 used 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 Durchlaufzählwerten ist).In one embodiment, the memory 1902 a (1024 × 7 bit) memory (where 1024 is the number of different contexts) while the memory is being stored 1404 has a (25 × 14 bit) memory (where 25 is the number of different pass counts).

Da Bitgeneratorzustände (Durchlaufzählwerte, usw), Wahrscheinlichkeitsklassen, nicht Kontextfächern, zugeordnet sind, gibt es eine zusätzliche Pipeline-Verzögerung bevor ein Bit an dem Kontextmodell verfügbar ist. Da ein Aktualisieren eines Bitgenerator-Zustands mehrere Taktzyklen dauert (der Bitgenerator-Zustandsspeicher bewirkt eine Verzögerung) werden mehrere Bitgenerator-Zustände für jede Geschwindigkeitsklasse verwendet. Wenn beispielsweise die Pipeline sechs Taktzyklen ist, dann hat der Bitgenerator-Zustandsspeicher sechs Einträge pro Wahrscheinlichkeitsklasse. der Zähler wird verwendet, um die richtige Speicherstelle auszuwählen. Selbst mit mehreren Einträgen pro Wahrscheinlichkeitsklasse 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 Registerdatei ausgeführt sein.There Bitgeneratorzustände (Durchlaufzählwerte, etc), probability classes, not context fans, are assigned it's an extra Pipeline delay before a bit is available on the context model. As an update a bit generator state lasts several clock cycles (the bit generator state memory causes a delay) become several bit generator states for every Speed class used. For example, if the pipeline is six clock cycles, then the bit generator state memory six entries per probability class. the counter is used to select correct memory location. Even with multiple entries per probability class, the size of the memory is usually less than the number of contexts. The memory can either with several benches SRAM or with a multi-pass register file.

Da ein Durchlaufzählwert mehreren Kontexten zugeordnet werden kann, muß eine Ausführungsform den Wahrscheinlichkeitsbewertungszustand von einem oder mehreren Kontexten erweitern. In einer Ausführungsform wird der PEM-Zustand des Kontextes, welcher ein Durchlaufende bewirkt, aktualisiert. Statt ein Lesen, Modifizieren oder Schreiben eines Durchlaufzählwerts anzufordern, bevor er wieder gelesen werden kann, kann ein Durchlauf zählwert wieder verwendet werden, sobald das Modifizieren abgeschlossen ist.There a pass count can be assigned to multiple contexts, an embodiment must the probability evaluation state from one or more contexts. In one embodiment becomes the PEM state of the context which causes a pass end updated. Instead of reading, modifying or writing one Durchlaufzählwerts Again, a pass count can be requested before it can be reread be used as soon as the modification is completed.

31 veranschaulicht ein Zeitsteuerdiagramm einer Decodieroperation in einer Ausführungsform der Erfindung. In 32 ist eine Decodieroperation mit drei Zyklen beschrieben. Signalnamen sind in der linksseitigen Spalte des Zeitsteuerdiagramms aufgelistet. Die Gültigkeit eines Signals während irgendeinen Zyklus ist mit einem Strich während des Zyklusses (oder einem Teil davon) bezeichnet. In bestimmten Fällen ist die Einheit oder Logik, die für ein Erzeugen des Signals oder ein Anlegen des gültigen Signals anspricht, bei der gültigen Signalanzeige in einem gestrichelt wiedergegebenen Block dargestellt. Jeweils sind die spezifischen Elemente und Einheiten, die dargestellt sind, ebenfalls vorgesehen. 31 Fig. 12 illustrates a timing diagram of a decoding operation in an embodiment of the invention. In 32 For example, a three-cycle decoding operation is described. 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 (or part of) the cycle. In certain cases, the unit or logic responsive to generating the signal or applying the valid signal is shown in the dashed block in the valid signal display. In each case, the specific elements and units shown are also provided.

Ein Teil des Signals, das sich in einen anderen Zyklus erstreckt, zeigt die Gültigkeit des Signals nur für diesen Zeitabschnitt, 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 Exemplar 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ängigkeiten 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. Tabelle 17

Figure 00950001

  • * CM = Textmodell, SH = Schiebeeinheit, BS = Bit Generator, PEM = Wahrscheinlichkeitsbewertungsmodul
  • ** [italics} bedeutet Abhängigkeiten von vorherigem Taktzyklus
  • ✝✝ In einer Ausführungsform wird die meiste kombinatorische Logik für ein Aktualisieren des PEM Zustands in dem "PEM-Tabellen"-Schritt durchgeführt; "PEM-Aktualisieren" ist einfach eine Multiplexoperation
A portion of the signal that extends into another cycle shows the validity of the signal only for that period of time, in which the signal is shown that extends into the other cycle. Certain signals are shown which are valid separately for more than one cycle. An example of this is the temp swept count signal, which is valid at one location at the end of the second cycle, and then again during the third cycle. This indicates that the signal is to be registered only at the end of the cycle. A list dependencies is also shown in Table 17 below, which depicts the dependencies for the same or previous clock cycle at the instant that the signal specifies as valid. Table 17
Figure 00950001
  • * CM = text model, SH = shift unit, BS = bit generator, PEM = probability evaluation module
  • ** [italics] means dependencies from previous clock cycle
  • In one embodiment, most combinatorial logic is performed for updating the PEM state in the "PEM Table"step; PEM update is simply a multiplex operation

Implizites SignalisierenImplicit signaling

In einigen Ausführungsformen muß der Decodierer in den endlichen Umordnungspuffer des Codierers modellieren. In einer Ausführungsform wird dieses Modellieren mit einem impliziten Signalisieren 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 Codewörter in den komprifmierten Bitstrom plaziert, ob sie nun vollständig bestimmt worden sind oder nicht.In some embodiments, the decoder must model in the coder's finite reorder buffer. In one embodiment, this modeling is achieved with implicit signaling. As previously explained with respect to the coder, when a codeword is started in the coder, space in the corresponding buffer is reserved for the codeword in the order in which the codewords should be placed on the canal. If the last slot in a buffer is reserved for a new codeword then some codewords are placed in the compressed bitstream, whether or not they have now been completely determined.

Wenn ein partielles Codewort beendet werden muß, kann ein Codewort 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 Codwort für 128 MPSs verwendet werden, da dieses korrekt die ersten 100 Symbole spezifiziert.If a partial codeword must be terminated, a codeword can be selected, which is short and correctly specifies the symbols received so far. For example, in an R-coding system, if necessary, a codeword for a series of 100 MPSs in a pass code with 128 maximum run lengths prematurely to complete, the code word for 128 MPSs are used, since this correctly the first 100 symbols specified.

Andererseits kann ein Codewort, das 100 MPSs spezifiziert, auf die ein LPS folgt, verwendet werden. Wenn das Codewort vervollständigt worden ist, wird es aus dem Umordnungspuffer entfernt und dem Codestrom hinzugefügt. Hierdurch können vorher vervollstä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 modellieren, wobei ein Zähler für jede Bitgenerator-Zustandsinformations-Speicherstelle verwendet wird.on the other hand can a codeword specifying 100 MPSs followed by an LPS, be used. When the codeword has been completed, it will turn off removed from the reorder buffer and added to the code stream. hereby can previously completed codewords be placed in the code stream. If forcing the completion of a partial codeword for removing a codeword leads to the full buffer, then coding can continue. If a buffer is still full, then the next codeword has to be completed again and added to the code stream become. This process lasts until the buffer that was full is no longer full is. The decoder may signal the encoder for implicit signaling model using a counter for every Bitgenerator state information storage location is used.

In einer Ausführungsform hat jeder Durchlaufzähler (Wahrscheinlichkeitsklasse in diesem Biespiel) einen Zähler, welcher dieselbe 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 entsprechende Zählwert mit der Größe des Codewort-Speiches geladen. Jedesmal wenn ein Durchlauf gestartet wird (ein neues Codewort abgefragt wird) werden alle Zähler dekrementiert. Irgendein Zähler, welcher null erreicht, bewirkt, daß der entsprechende Durchlaufzählstand gelöscht wird (und das vorhandene LPS gelöscht wird).In an embodiment every run counter has (Probability class in this Biespiel) a counter, which the same size as the Heading or tracking counter in the encoders (e.g., 6 bits). Every time a new pass is started (a new code word is queried), the corresponding count with the size of the codeword memory loaded. Every time a run is started (a new codeword is queried) are all counters decremented. Any counter, which reaches zero, causes the corresponding pass count deleted is deleted (and the existing LPS becomes).

Optionen für ein Signalisieren für endlichen SpeicherOptions for signaling for finite Storage

Ein Realzeit-Codieren in der Erfindung erfordert, daß der Decodierer Durchläufe von MPSs behandelt, auf die nicht ein LPS fordert 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.One Real-time coding in the invention requires the decoder to make runs of MPSs that are not challenged by an LPS and not the ones that are treated maximum run length are. This happens when the encoder passes through MPSs starts but does not have a enough limited reordering memory, to wait until the run is completed. This condition requires that one new code word to decode, and next time this context box is used; this condition must be signaled to the decoder. Three possible Ways to modify the decoder will be 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 zugeordnetes Codewort haben, kann der Speicher, welcher zum Speichern des Codeworts verwendet ist, gemeinsam benutzt werden. In einigen System können, statt ein unvollständiges Wort herauszuzwingen, 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 must pass count for the Context tray or the probability class that is forced out is reset become. To do this effectively, is a store of the context bin or the probability class useful in the codeword memory. Because this only on runs needed which does not yet have an associated codeword, the memory, which is used to store the codeword, shared become. In some system, instead of an incomplete one Word out bits in the context / likelihood class of the (or any) codeword being forced in the buffer not cleared when the buffer is full. The decoder notice this and use the appropriate (wrong) context box 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 nichtmaximale 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 Wahrscheinlichkeit auftreten sollte. Dies ermöglicht eine eindeutig decodierbare 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.at In a stream signaling, codewords are used to do this signal to the decoder. In one embodiment, the R2 (k) - and R3 (k) code definitions changed, by non-maximum run lengths from MPS that is not followed by an LPS. This can be done carried out be that one bit added to the codeword which should occur with the lowest probability. This allows a uniquely decodable prefix for the non-maximum run-length counts. Table 18 shows a replacement for R2 (2) codes, which allows one to signal in the stream. The disadvantages This method is that the R-code decoding logic changed must become, and that it There are compression costs every time the codeword is the least Probability occurs.

Tabelle 18

Figure 00980001
Table 18
Figure 00980001

In einigen Ausführungsformen führt der Decodierer ein implizites Signalisieren mit Hilfe von Zeitmarken durch. Ein Zähler hält eine Spur der aktuellen "Zeit" durch Inkrementieren jedesmal dann, wenn ein Codewort gefordert wird. Wenn jedoch ein Codewort 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 Codewort gefordert wird. Folglich ist der begrenzte Umordnungsspeicher in dem Codierer simuliert worden. In einer Ausführungsform werden genug Bits für "Zeit"-Werte verwendet, so daß alle Codeworte aufgezählt werden können.In some embodiments leads the Decoder an implicit signaling by means of timestamps by. A counter holds one Track the current "time" by incrementing every time a codeword is required. If, however, a Codeword is started, the current "time" is in saved to the Co dewort memory. After that The first time a codeword is used, the corresponding stored "time" value plus the size of the coder rearrangement buffer is stored compared with the current "time". If the current "time" is greater, an implicit signal is generated so that a new code word is required becomes. Consequently, the limited reordering memory is in the encoder been simulated. In one embodiment if enough bits are used for "time" values, so that everyone Code words enumerated can be.

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ß aufgepaß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-Zustandsspeicher 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 decodierten Bit. Ein Zähler wird verwendet, um zyklisch den Bitgenerator-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 wieder benutzt wird.Around reduce the required memory, the number of bits, which for The timestamps used are kept to a minimum. If the timestamps use a small number of bits so that time values to be used again, must be watched that all Old timestamps are noted before the meter re-uses starts. Here, N is the size of the number Address bits for Queue or the bit generator state memory. timestamps with (N + 1) bits be used. The bit generator state memory must have several Have accesses, maybe two read and two write requests per decoded bit. A counter is used to cyclically grant the bit generator state memory go through once for each decoded bit is incremented. A storage location that is too old, will be deleted, so that one new code word is queried, if it is needed in the future. This guarantees that everyone Checking timestamps, before any time value is used again.

Wenn der Bitgenerator-Zustandsspeicher kleiner als die Schlange ist, kann die Zählrate (der Zeitmarken-Zähler) und die erforderliche Speicherbandbreite reduziert werden, und zwar deswegen, da jede Zeitmarke (eine pro Bitgenerator-Zustandsspeicher) nur einmal bezüglich der Anzahl Zyklen geprüft werden muß, die erforderlich sind, um die ganze Schlange zu benutzen. Auch kann ein Speichern der Zeitmarken in einem anderen Speicher die geforderte 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, can the count rate (the timestamp counter) and the required memory bandwidth can be reduced because of each timestamp (one per bit generator state memory) only once the number of cycles tested must become, which are needed to use the whole snake. Also can storing the time stamps in another memory the required Reduce memory bandwidth. In a system, which uses "0" partial-word code words do not need timestamps for "1N" codewords checked to become. In a system, the "1N" codewords for partial runs is used only to check the timestamp before generating an LPS becomes.

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ültig markiert. Wenn die Daten von einem Codewort abgeschlossen sind, wird deren Schlangeneintrag als gültig markiert. Wenn Daten aus der Schlange genommen werden, um Raum für neue Codewörter zu schaffen, wird, wenn die herausgenommenen Daten als ungültig markiert sind, die Bitgenerator-Zustandsinformation von diesem Index aus gelöscht. Diese Löschoperation kann erfordern, daß der Bitgenerator-Zustandsspeicher eine zusätzliche Schreiboperation unterstützen kann.In some embodiments becomes an implicit signaling with a snake during one Decoding done. The method may be useful in half a duplex system, in which the hardware for a coding during of decoding available is. The effect of the snake is mostly the same as during the Coding. If a new codeword is required, its index becomes placed in the queue and marked as invalid. If the data are completed by a codeword, their snake entry as valid marked. When data is queued to allow room for new codewords create, if the removed data is marked as invalid are the bit generator state information from this index deleted. This deletion operation may require that Bitgenerator state memory may support an additional write operation.

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 Kontextfach decodiert worden sind, zeigen an, wenn der Zustand auftritt, bei welchem ein neues codewort benötigt wird, und ein neues Codewort muß für das entsprechende normale Kontextfach decodiert werden. In diesem Fall müssen die Codeworte für diesen speziellen Kontext richtig umgerodnet werden. Da die Benutzung dieses Kontextes eine Funktion von etwas Bekanntem bezüglich der Umordnungseinheit ist (üblicherweise wird es nur einmal für jedes Codewort verwendet), kann der Speicher, der erforderlich ist, um den zusätzlichen Kontext umzuordnen, begrenzt oder implizit modelliert werden. Ebenso können die möglichen Codes für diesen zusätzlichen Kontext begrenzt werden.Explicit signaling, on the other hand, reports a buffer overflow in the form of compressed data. An example of this is to have an additional context pocket used once for each normal context-bin decode or once for each codeword being decoded. Bits coming from the extra context box indicate when the condition is occurring at which a new codeword is needed, and a new codeword must be decoded for the corresponding normal context bin. In this case, the codewords for this particular context need to be properly redrawn. Since the use of this context is a function of anything known about the reordering unit (usually it is used only once for each codeword), the memory required to reorder the additional context can be limited or implicitly modeled. Likewise, the possible codes for this additional context may be limited.

Ein implizites Signalisieren modelliert den begrenzten Codierer-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 Duplexsystem kann, da die Codierer-Umordnungsschaltung während des Decodierens verfügbar ist, diese verwendet werden, um die Signale für den Decodierer zu erzeugen.One implicit signaling models the limited encoder buffer, when decoded to produce a signal indicating that a new one is being generated Codeword must be decoded. In one embodiment becomes a timestamp for get every context. In one embodiment, the reorder buffer becomes finite size of the encoder directly modeled. In a half duplex system, since the encoder rearranging circuit while of decoding available These are used to generate the signals 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" bedeutet. Bei einer entsprechenden Auslegung des Decodierers kann ein entsprechendes Modell bemessen werden.As exactly one implicit signaling is achieved depends on the details of how the encoder recognizes the full buffer state and treated. In a mixed snake system with Fixed allocation may involve the use of multiple head choices allow what "buffer full "means. With a corresponding design of the decoder, a corresponding Model are measured.

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 Wahrscheinlichkeitssystem. Für dieses Beispiel soll der Umordnungspuffer 256 Stellen haben, es sollen vier Verschachtelungsströme verwendet werden, und jedes Wort soll 16 Bit sein. Wenn der Puffer 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 werden. In einigen System erfordert ein Entfernen des ersten Eintrags in dem Puffer ein Entfernen von genug Bits, um ein ganzes verschateltes Codewort zu vervollständigen. Wenn daher 1 Bit Codewörter möglich sind, kann ein Entfernen eines Codeworts 0 auch ein Entfernen von Codewörtern 4, 8, 12, ... 52, 56, 60 für verschachtelte 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 welcher ein neues Wort eingegeben wird (256 – 16 × 4 = 192).The following describes an encoder operation, and a model for use by the encoder in a mixed queue with a fixed stream allocation, in parallel with a probability system. For this example, consider the reorder buffer 256 There should be four interleaving streams, and each word should be 16 bits. If the buffer 256 Contains entries, an entry must be made to a bitpacker (eg, a bitpack unit) before the entry for the 257th codeword 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 coded codeword. Therefore, if 1 bit codewords are possible, removal of a codeword 0 may also require removal of codewords 4, 8, 12, ... 52, 56, 60 for nested 16 bit words. To ensure that all of these buffer inputs have valid entries, since the memory is full, forcing an entry to be filled may be performed to addresses 64, 192 from the location where a new word is entered (256 - 16 x 4 = 192).

In dem Decodierer gibt es einen Zähler für jede Wahrscheinlichkeit. 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 Wahrscheinlichkeit null gesetzt (und das vorhandene LPS-Flag wird gelöscht).In The decoder has a counter for every Probability. If a new codeword is used to create a Run to start is the counter loaded with 192. If at any time a new codeword if any probability is used, all counters are decremented. If any counter reaches zero, the run length becomes for this Probability zero is set (and the existing LPS flag becomes deleted).

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 aufnehmen, so daß ein Lesen mehreren Codewörtern für einen ganz bestimmten Strom ein Lesen bei anderen Strömen nicht behindern.It may be beneficial to multiple RAM banks (a multi-speed memory, a simulation with a fast memory, etc.), and a bank for every coded data stream. This allows all bitpack units Record data simultaneously so that reading multiple codewords for one very particular current does 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 Codewortlä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 Beispiel 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 verschachteltes Wort hat, das Codewörter minimaler Länge aufnimmt.In other systems need several bit packing units for a single memory based on a codeword order decide how it is stored in the buffer. In these systems removing a request from a buffer may be a nested one Do not complete word. Each bit unit usually takes a fraction of a nested word due to. Each bitpack unit takes at least a number of bits equal to the shortest Codeword lengths are (e.g., 1 bit) and at most a number of bits equal to the largest codeword length (e.g., 13 bits). Nested words can not be delivered until the complete are and must be in the initialization order. In this example For example, a bitpack unit for buffering may have 13 nested words; this is the maximum number of nested words using codewords maximum length completed who can, while one other stream has a pending word pending, the codewords are min Length absorbs.

Ein System, in welchem jedes Codewort zwei Schreibvorgänge und einen Lesevorgang bei einem Speicher erfordert, kann weniger erwünscht für eine Hardware-Ausführung sein, als ein System, welches 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 Speicherlesezyklus und Bitpackeinheiten 1 und 3 gemeinsam einen anderen Lesezyklus (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 Kapazität des codierten Datenkanals besser auszunutzen.A system in which each codeword requires two writes and one read at a memory may be less desirable for a hardware implementation than a system that performs two writes and two reads. If this is the case for the exemplary four stream system If desired, bitpack units 1 and 2 could share a memory read cycle and bitpack units 1 and 3 could share a different read cycle (or any other combination). Although this would not reduce the size of the buffering required, it would allow a higher transfer rate in the bitpack unit. This may allow bitpack units to better utilize the capacity of the encoded data channel.

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

Ein Vorteil eines Systems, das mehrere Bitgenerator-Zustände hoher Wahrscheinlichkeitsklasse hat, besteht darin, daß das System ein verlustbehafetes Codieren stützen kann, wenn ein Speicher 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 speichern.One Advantage of a system that has multiple bit generator states higher Probability class, is that the system is lossy Support coding can if a memory of a fixed size overflows. This can be done with image compression for one However, frame buffers and other applications may be useful store only a limited amount of encoded data.

Für Systeme mit einem Speicher fester Größe, werden die mehreren 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; jeder Teil der Daten wird einfach bitgepackt. Ein Speicher wird jedem Teil der Daten zugeordnet.For systems with a memory of fixed size, be the multiple bit generator states for every probability each associated with a portion of the data. For example, each could eight states a very specific bit level for eight bit data to be assigned. In this case, a sliding unit becomes each Part of the data assigned, in contrast to sliding units, the one after the other Generate codeword. It should be noted that the data is not covered by a Bitebene must be shared. Likewise, no interleaving is performed in the encoder; everyone Part of the data is simply bit-packed. A memory becomes everyone Part of the data assigned.

Eine Speicherverwaltung für codierte Daten ist für Systeme dargestellt, die alle Daten in einem Speicher fester Größe speichern, und für Systeme, die Daten an einen Kanal mit einer maximal 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 verfügbar ist.A Memory management for coded data is for Systems that store all the data in a fixed-size memory, and for Systems that transmit data to a channel with a maximum allowed bandwidth. In these two systems is a moderate deterioration in a lossy system desired. Different data streams will be for data used with varying importance so that few important streams saved or not transferred can be if there is not enough memory or bandwidth 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 decodieren. Da codierte Daten eine variable Länge haben, kann eine dynamische Speicherzuteilung verwendet werden. 30 zeigt beispielsweise 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 weiteren Zeiger, um die nächste freie Speicherstelle anzuzeigen. Der Speicher 3101 ist in Seiten fester Größe unterteilt.When 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. Since coded data has a variable length, dynamic memory allocation can be used. 30 shows, for example, a dynamic memory allocation unit for three coded data streams. A register file 3100 (or other memory) holds one pointer for each data stream plus another pointer to indicate the next free memory location. The memory 3101 is divided into pages of fixed size.

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.At first Each pointer associated with a stream points to the beginning one memory page, and the free pointer to the next available memory page. Coded data from a very specific stream will be sent to one Memory location saved by the corresponding pointer is addressed. The pointer is then incremented to the next memory 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 akuellen Seite gespeichert.(Entweder ein Teil des codierten Datenspeichers oder ein gesonderter Speicher oder eine Registerdatei 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 Zuordnungsreihenfolge während des Decodierens festgestellt werden kann.If the pointer is the maximum for When the current page is reached, the following results. The address of the Start the next free page (which is stored in the free pointer) is with stored on the current page (either a part of the coded Data store or a separate store or register file could be used). The current pointer will be on the next free one Page set and then incremented. These actions arrange one new memory page to a very specific power and create connections, that the Assignment order during of the decoding can be determined.

Wenn alle Seiten in dem Speicher verwendet sind und es mehr Daten aus einem Datenstrom gibt, kann eines von drei Dingen getan werden. In allen drei Fällen wird ein Speicher, der dem am wenisten wichtigen Datenstrom zugeordnet ist, wieder einem wichtigeren Datenstrom zugeordnet werden und es werden keine Daten mehr des am wenigsten wichtigen Datenstroms gespeichert.If all pages in the memory are used and it gets more data out Given a data stream, one of three things can be done. In all three cases becomes a memory associated with the least important data stream is to be assigned to a more important data stream again and it No more data is stored on the least important data stream.

Erstens wird einfach die Seite, die gerade von dem am wenigsten wichtigesten Strom benutzt, den wichtigeren Daten zugeordnet. Da die typischen Entropie-Codierer interne Zustandsinformation benutzen, gehen alle der am wenigsten wichtigen Daten verloren, die vorher in dieser Seite gespeichert sind.First just becomes the page that is just the least important Power used, assigned to the more important data. Because the typical Entropy coders use internal state information, all go lost the least important data previously in this Page are stored.

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 Zeiger auf das Ende der Seite gesetzt und da wichtigere Daten auf die Seite geschrieben werden, wird der entsprechende Zeiger dekrementiert. Dies hat den Vorteil, daß die am wenigsten wichtigen Daten am Anfang der Seite erhalten werden, wenn der wichtigere Datenstrom nicht die gesamte Seite erfordert.Second, the page currently being used by the least important stream is simply assigned to the more important data stream. Unlike the previous case, the pointer is placed at the bottom of the page, and as more important data is written to the page, the corresponding pointer becomes decremented. This has the advantage of getting the least important data at the top of the page if the more important data stream does not require the entire page.

Drittens statt die aktuelle Seite mit den am wenigsten wichtigen Daten wieder zuzuordnen, wird irgendeine Seite von am wenigsten wichtigen Daten wieder zugeordnet. Dies macht es erforderlich, daß die codierten Daten für alle Seiten unabhängig voneinander zu codieren sind, wodurch die erreichte Kompression verringert wird. Dies macht es auch erforderlich, daß die uncodierten Daten, die dem Start/Anfang aller Seiten entsprechen, identifiziert werden. Da eine von am wenigsten wichtigen Daten weggeworfen werden kann, ist eine größere Flexibilität im Hinblick auf eine vertretbare Verschlechterung bei verlustbehaftetem Codieren 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 erreicht 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 Kompressionsrate in einem Bereich des Bildes kann einen beliebigen Zugriff auf die Bildbereich unterstützen.thirdly instead of the current page with the least important data again will allocate any page of least important data reassigned. This requires that the coded Data for all pages independent are to be coded from each other, which reduces the achieved compression becomes. This also requires that the uncoded data, the corresponding to the start / beginning of all pages. Since one of the least important data can be thrown away, is more flexibility in terms of a reasonable deterioration in lossy coding available. The third alternative may be particularly attractive in a system which achieves a fixed compression rate over areas of the image. A specified number of memory pages can be in one area be assigned to the image. Whether less important data withheld or not, may depend on the compression in the particular Area is reached. (The memory associated with an area is not complete be exploited when requiring lossless compression which requires less than the allocated amount of memory). One Achieving a fixed compression rate in an area of the image can support any access to 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 zugeordnet 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 einfach darüber geschrieben werden könnte).The Ability, To write data in each page from both ends can be used will improve the overall memory available in the system to use. If all pages are assigned, a page that can be has enough free space at the end for one use of the end from being assigned. The possibility, to use both ends of a page must be balanced against the cost be to keep a track to the point where the two data types fit (this is difficult for the case that one of the Data types was not important and could easily 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 is transmitted in a channel instead of being stored in a memory. Memory pages firmer To become size but only one page per stream is needed. (Or maybe two if needed after the ping-pong method to buffer for to create the channel, so that while one is written, the other is read out for output). When a memory page is full, it is transferred to the channel, and the storage location can be used again as soon as the page is transferred is. In some applications can change the page size of the memory the size of data packets, which have been used in the channel or be 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 werden, 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 Transfermode) can be Priority Packets be assigned. ATM has two priority levels, a priority one and a secondary one. secondary Packages are only transmitted if enough bandwidth available is. A threshold can be used to determine which ones streams are priority and which secondary are. Another method would be to use a threshold at the encoder, around streams not to transfer which were less important than a threshold.

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

19 ist ein Blockdiagramm eines Systems mit gesonderten Bitgeneratoren für jeden Code. In 19 weist das Decodiersystem 2000 ein Kontextmodell 2001, einen Speicher 2002, einen PEM-Zustand-Codier-Block 2003, einen Decodierer 2004, Bitgeneratoren 2005A-n und eine Scheibeeinheit 2006 auf. Der Ausgang des Kontextmodells 2001 ist mit einem Eingang des Speichers 2002 verbunden. 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 abgegeben worden sind. 19 Figure 12 is a block diagram of a system with separate bit generators for each code. In 19 has the decoding system 2000 a context model 2001 , a store 2002 , a PEM state coding block 2003 , a decoder 2004 , Bit generators 2005A-n and a disk unit 2006 on. The outcome of the contextual model 2001 is with an input of the memory 2002 connected. The output of the memory 2002 is with an input of the PEM block 2003 connected. The exit of the block 2003 is with an input of the decoder 2004 connected. The output of the decoder 2004 is as a sharing for bit generators 2005A-n intended. bit generators 2005A-n are provided to receive encoded data from the sliding unit 2006 have been delivered.

Das Kontextmodell 2001, der Speicher 2002 und der PEM-Block 2003 arbeiten ähnlich wie ihre Gegenstücke in 18. Das Kontextmodell 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 Wahrscheinlichkeitsklasse 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. Insbesondere kann ein Code für Wahrscheinlichkeiten nahe 60% verwendet 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 similar to their counterparts in 18 , The context model 2001 creates a context tray. The memory 2002 returns a probabilistic state based on the context bin. The probability state is from the PEM block 2003 which generates a probability class for each probability state. The decoder 2004 gives one of the bit generators 2005A-n for coding the probability class free. (The decoder 2004 is an M on 2 M -De coding circuit which corresponds to a (74 × 138 3: 8) decoder, which is known - and is not an entropy coding decoder). Because each code has a separate bit generator, some bit generators can use codes, not R codes. In particular, a code for probabilities close to 60% can be used to calculate the probability space between the two better cover R2 (0) and R2 (1). For example, Table 19 shows such a code.

Tabelle 19

Figure 01080001
Table 19
Figure 01080001

Um die gewünschte Geschwindigkeit zu erreichen, kann erforderlichenfalls 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-Decodieren als auch das Durchlaufzählen für lange Codes aufgeteilt.Around the desired To achieve speed, if necessary, a pre-decode be performed by one or more bits to guarantee that decoded Data is readily available. In some embodiments To avoid the need, add a large pass count update every clock cycle, both codeword decoding as well as the run count for long Split codes.

Der Bitegenerator für R2 (0) Codes ist unkompliziert.Ein Codewort ist erforderlich, jedesmal wenn ein Bit angefordert wird. Das generierte Bit ist einfach das Codewort (XORed mit dem MPS).Of the Bitegenerator for R2 (0) codes is straightforward. A codeword is required every time when a bit is requested. The generated bit is just that Codeword (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 a short time Run lengths For example, R2 (1), R3 (1), R2 (2), and R3 (2) become the following treated. All bits in a codeword are decoded and in one State device which has a small counter (1, 2 or 3 bits) and an LPS bit. The counter and the LPS bit work as an R-code decoder.

Für längere Codes, wie R2 (k) und R3(k) für k > 2 werden Bitgeneratoren in zwei Einheiten unterteilt, wie in 20 dargestellt ist. In 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 ähnlich 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 in 20 is shown. In 20 is a bit generator structure for R2 (k) codes for k> 2 with one unit 2101 for a short run and a unit 2102 shown for a long run. Although the structure is used at R2 (k> 2), its operation is similar to R3 (k> 2) codes (and is familiar 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ählerstand-null-Signal (das einen Zählerstand null anzeigt), die beide von der Einheit 2102 für langen Durchlauf stammen, aufzunehmen. 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 Einheit 2102 für einen langen Durchlauf. Die Einheit 2102 ist auch vorgesehen, um Codeworte [k ... 3] als einen Eingang an den Bitgenerator aufzunehmen.The unit 2101 for a short pass is provided to provide an enable signal and a codeword [0 .. 2] as inputs to the bit generator and a signal of "all zeros" and a count zero signal (indicating a count of zero), both of the unit 2102 for long run, record. Accordingly, there is the unit at these entrances 2101 a decoded bit and an indication of the next signal, thereby signaling that a new codeword is needed. The unit 2101 Also generates a count enable signal, a counter charge signal, and a "max count" signal to the unit 2102 for a long run. The unit 2102 is also provided to receive codewords [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ührungsform 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 abzugeben sind. Die Einheit 2102 hat Eingänge, eine UND-Logik und einen Zähler, welche in der Größe mit k variieren.The unit 2102 handles runs up to a length of 4 and corresponds to an R2 (2) bit generator. In one embodiment, the unit is 2101 same for all R2 (k> 2) codes. The purpose of the unit 2102 for a long pass is to determine when to spend the last 1 to 4 bits of the pass. The unit 2102 has inputs, an 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 21 dargestellt. In 21 weist die Einheit 2102 eine UND-Logik 2201 auf, die vorgesehen ist, um das Codewort [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 execution of the count unit 2102 for a long run is in 21 shown. In 21 indicates the unit 2102 an AND logic 2201 provided to receive the codeword [k ... 3], and outputs a signal "all ones" as a logical 1 when all the bits in the codeword are 1 ', thereby indicating that the current one Codeword is a 1N codeword, and that the pass count is less than 4. Likewise is a non-logic 2202 provided to receive the codeword and to invert it. The output of the non-logic 2202 is with an input of a bit counter 2203 connected. The bit counter 2203 and the count enable signal, the counter load signal and the "count max" signal. The bit counter generates according to the input signals 2203 a signal "count zero".

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ähler-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, the counter is 2003 a k-2 bit counter and is used to break long pass counts in runs of four MPSs and possibly some remainder. The count enable signal indicates that four MPSs have been issued and the counter should be decremented. The counter load signal is used when "1N" codewords are decoded and the counter with the complement of codeword bits k is to be loaded by 3. The signal "Count max." is used when "0" codewords are decoded and loads the counter with the maximum value. The output signal "count zero" indicates when the counter is zero.

Eine Ausführungsform der Zähleinheit 2102 für einen kurzen Durchlauf ist in 22 dargestellt. 22 enthält die Zähleinheit eines Steuermoduls 2301, einen 2 Bit Zähler 2302 und einen 3 Bit Zähler 2303. Der Steuermodul 2301 erhält das Freigabesignal (das Codewort [0 ... 2], und alle Einsen und Signale "Zählwert null" von der langen Durchlauf-Zählwerteinheit. Der 2 Bit Zähler wird verwendet, um vier Bit Durchläufe von MPSs zu zählen, die ein Teil von längeren Durchläufen sind. Ein AR(2) Zähler und ein LPS Bit (3 Bits ingesamt) 2303 werden verwendet, um die 1 bis 4 Bits am Ende eines Durchlaufs zu erzeugen. Das Freigabe-Eingangssignal zeigt an, daß ein Bit an dem Bitausgang erzeugt 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 de 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 Ausgangssignal wird geltend gemacht.An embodiment of the counting unit 2102 for a short run is in 22 shown. 22 contains the counting unit of a control module 2301 , a 2-bit counter 2302 and a 3-bit counter 2303 , The control module 2301 receives the enable signal (the codeword [0 ... 2], and all the "zero count" ones and signals from the long sweep count unit.) The 2-bit counter is used to count four bit sweeps of MPSs that are part of longer runs, one AR (2) counter and one LPS bit (3 bits total) 2303 are used to generate the 1 to 4 bits at the end of a run. The enable input signal indicates that a bit should be generated at the bit output. The input signal "count zero" indicates, if it is not asserted, that one pass of four MPSs should be issued. However, if de MPS counter 2302 reaches zero, the count enable output is asserted. When the input signal "count zero" is asserted, either the R2 (2) counter, the LPS, is used or a new codeword is decoded and the next output is asserted.

Wenn das neue Codewort decodiert wird, werden die durchgeführten Aktionen durch den Codeworteingang bestimmt. Wenn der Eingang 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-Ausgangssignal wird geltend gemacht. Wenn alle eingegebenen Einsen geltend 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 codeword is decoded, the actions taken are determined by the codeword input. If the input is a "0" codeword, the MPS counter becomes 2302 used, and the output "Count max." is asserted. For "1N" codewords, the first three bits of the codeword become the R282) counter and LPS 2303 and the counter charge output is asserted. If all input ones are asserted, then the R2 (2) counter and LPS become 2303 used to generate bits. Otherwise, the MPS counter is used until the zero count input signal is asserted.

Von einer Symstemperspektive aus gesehen, müßte die Anzahl Codes 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 Codewort von der Schiebeeinheit nicht zu hoch für einen hochschnellen Betrieb sein.From From a symmetrical perspective, the number of codes would be small for the System to work well, usually 25 or less. The size of the multiplexer, the for Bit and the next Code word related outputs needed and the decoder for enabling a particular bit generator must be for a quick Operation be limited. Likewise, the code word from the sliding unit does not have to too high for to be a high speed operation.

Gesonderte Bitgeneratoren für jeden Code erlauben eine Pipeline-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 waren. 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 vielleicht 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 allows pipeline processing. If all codewords off could result in processing of at least three bits codewords in two cycles instead of one in the form of a pipeline become. This can double the speed of the decoder be when the bit counter were a limiting part of the system. One way to achieve this is in that on the codeword with a run length zero (the codeword indicates exactly one LPS) follows a bit which the next uncoded bit is. These could are referred to as RN (k) + 1 codes, and would always be at least two bits encode. R2 (0) codewords and maybe some of the other short codewords need for an appropriate one Speed not to be connected to a pipeline.

Gesonderte Bitgeneratoren eignen sich selbst für eine Verwendung in Verbindung einem impliziten Signalisieren. Ein implizites Signalisieren für einen Codieren mit einem endlichen Speicher kann auf folgende Weise erreicht werden. Jeder Bitgenerator hat einen Zähler, der die Größe einer Schlangenadresse, beispielsweise 9 Bits hat, wenn eine Schlange mit einer Größe 512 verwendet wird. Jedesmal, wenn ein neues Codewort von einem Bitgenerator 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 drekrementiert. Jedesmal wenn ein Zähler null erreicht, wird der entsprechende Bitgenerator-Zustand gelöscht (beispielsweise der MPS-Zähler, der R2 (2) Zähler und LPS sowie der Zähler für einen langen Durchlaufzä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 themselves suitable for use in conjunction an implicit signaling. An implicit signaling for one Coding with a finite memory can be achieved in the following way become. Each bit generator has a counter the size of one Queue address, for example, has 9 bits if a queue used with a size 512 becomes. Every time a new codeword is used by a bit generator becomes, becomes the counter loaded with the maximum value. Every time a bit generator turns on Code word requests are the counters for all Bit generators are reduced in size. Every time a counter is zero reached, the corresponding bit generator state is deleted (for example, the MPS counter the R2 (2) counter and LPS and the counter for one long pass count will be deleted). As a deletion can happen even if a very specific bit generator does not is released, there is no difficulty with used up Counts.

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

In Fällen, wo ein Speicher für jedes Kontextfach eine Wahrscheinlichkeits-Bewertungsinformation erhält, kann eine zusätzliche Speicherbandbreite gefordert werden, um den Decodierer (z.B. den Speicher) sehr schnell zu initialiseren. Ein schnelles Initialisieren des Decodierers kann ein Problem sein, wenn der Decodierer viele Kontexte hat, und sie alle gelöscht werden müssen. Wenn der Decodierer viele Kontexte (1K oder mehr) unterstützt und der Speicher nicht global gelöscht werden kann, würde eine unanehmbare große Zahl von Taktzyklen erforderlich sein, um den Speicher zu löschen.In cases where a memory for each context pocket receives probability score information, additional memory bandwidth may be required to initialize the decoder (eg, memory) very quickly. Fast initializing the decoder can be a problem if the decoder has many contexts and they all need to be cleared. If the decoder has many contexts (1K or more) and the memory can not be erased globally, an unacceptable large number of clock cycles would be required to erase the memory.

Um Kontexte schnell zu löschen, verwenden einige Ausführungsformen der Erfindung ein zusätzliches Bit, das hier als das initialisierte 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.Around Quickly clear contexts, use some embodiments invention an extra bit, which is referred to here as the initialized status bit, the is saved with every context. Consequently, an additional Bit in the PEM state (e.g., 8 bits) for saved every context.

Der Speicher für jedes Kontextfach und die Initialisierungs-Steuerlogik sind in 23 dargestellt. In 23 ist ein Kontextspeicher 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 initialisierte 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ültige Signal und mit einem Eingang einer Steuerlogik 2404 verbunden. 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 verbunden. Ein anderer Ausgang der Steuerlogik 2404 ist mit dem Wähleingang 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-Zustand und Null verbunden. Der Ausgang von MUX 2407 ist mit Eingang 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 box and the initialization control logic are in 23 shown. In 23 is a context store 2401 with a register 2402 connected. In one embodiment, the register 2402 a one-bit register which indicates the current correct state for the initialized state partition. The registry 2402 is with an input of an XOR logic 2403 connected. Another input to the XOR logic 2403 is saved with an output with 2401 connected is. The output of the XOR logic 2403 is the valid signal and with an input of a control logic 2404 connected. Other inputs of the control logic 2404 are with the output of the counter 2405 and the next context switch signal. The output of the control logic 2404 is with dialing inputs from MUXs 2406 to 2407 and with an input of a counter 2405 connected. Another output of the control logic 2404 is with the dialing input of MUX 2408 connected. The inputs of MUX 2406 are with the output of a counter 2405 and the context-box ad. The output of MUX 2406 is with the store 2401 connected. The inputs of MUX 2407 are connected to the new PEM state and zero. The output of MUX 2407 is with input of the memory 2401 and the initial PEM state is with the input of MUX 2408 connected. The output of MUX 2408 is the PEM state output.

Der Wert im Register 2402 vervollständigt jede Decodieroperation (d.h. jeder Satz, nicht jedes decodierte Bit). Die XOR-Logik 2403 vergleicht die Gültigkeit der zugegriffenen Speicherstelle mit dem Registerwert, um zu bestimmen, ob die zugegriffene Speicherstelle für diese Decodieroperation gültig ist. Dies wird mit Hilfe der XOR-Logik 2403 erreicht, um das initialisierte 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 Codierlogik zu ignorieren sind und daß stattdessen der anfängliche PEM-Zustand zu verwenden ist. Dies wird mit Hilfe von MUX 2403 erreicht. Wenn ein neuer PEM-Zustand in den Speicher geschrieben wird, wird das initialisierte Bit auf den aktuellen Wert des Registers gebracht, so daß es als gültig betrachtet wird, wenn wieder zugegriffen wird.The value in the register 2402 completes every decode operation (ie, every set, not every decoded bit). The XOR logic 2403 compares the validity of the accessed memory location with the register value to determine if the accessed memory location is valid for that decoding operation. This is done using the XOR logic 2403 reached to return the initialized status bit to the proper state in the register 2402 fits. When data is in memory 2401 are not valid, then causes the control logic 2404 in that the data in the state are to be ignored on the coding logic and that the initial PEM state is to be used instead. This is done with the help of MUX 2403 reached. When a new PEM state is written to memory, the initialized bit is brought to the current value of the register so that it is considered valid when accessed again.

Jeder Kontextfach-Speichereintrag muß ein initialisiertes Zustandsbit sein, das auf den aktuellen Wert des Registers gebracht ist, bevor eine andere Decodieroperation beginnen kann. Der Zähler 2405 durchläuft alle Speicherstellen, um sicherzustellen, 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 verrwendet, um eine Operation zu steuern:

Figure 01150001
Each context-bin memory entry must be an initialized status bit that is brought to the current value of the register before another decode operation can begin. The counter 2405 iterates through all memory locations to make sure they are initialized. However, if a context tray is used but its PEM state is not updated, the unused write cycle may be used to store the memory location in the counter 2405 has been shown to test or update. After a decode operation is completed, if the 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:
Figure 01150001

PEM mit schneller AdaptionPEM with fast adaptation

Der in der vorliegenden Erfindung verwendete PEM kann ein Adaptionsschema enthalten, um eine schnellere Adaption unabhängig von der verfügbaren Datenmenge zu ermöglichen.Vorliegende Erfindung kann das Decodieren ermöglichen, um anfangs schneller zu adaptieren und um langesamer zu adaptieren, wenn mehr Daten verfü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/Einrichtungfestgelegt sein.Of the PEM used in the present invention may be an adaptation scheme included, for a faster adaptation regardless of the available amount of data to allow Invention may enable decoding to be faster at first adapt and slow down to adapt as more data becomes available, as a means to make a more precise proposal or estimated value to accomplish. Furthermore, the PEM may be in a field programmable word order (FPGA) to or an ASIC implementation of a PEM state table / device be.

Die nachstehenden Tabellen 20 bis 25 beschreiben eine Anzahl von Wahrscheinlichkeitsbewertungszustandseinrichtungen. Einige Tabellen benutzen nicht R3 Codes oder benutzen nicht lange Codes, 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 Zustand 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 Wahrscheinlichkeitszustand für die Daten darstellt, die insoweit erhalten worden sind.The Tables 20 to 25 below describe a number of probability score state devices. Some tables do not use R3 codes or use long Codes to reduce hardware costs. All tables except the Table 20 uses special fast "adapting" states that are used to adapt quickly at code start until the first LPS occurs. These fast adaptation states are initialized in the tables. For example in Table 21, when decoding begins, the current state a state 0. When an MPS occurs, the decoder goes to state 35 over. As long as MPSs occur, the decoder goes from state 35, finally goes he over to state 28. If at any time an LPS occurs, the decoder goes off starting from the fast adaptation states to a state over which represents the correct probability state for the data that have been obtained to that extent.

Für jede Tabelle geht, nachdem eine bestimmte Zahl MPSs erhalten worden ist, der Decodierer von schnellen Adaptierzuständen aus. In der gewünschten Ausführungsform gibt es, da die schnellen 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 Adaptierzustände wieder einzugeben, um eine schnellere Adaption zuzulassen. 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 Ändern des Tabelleneintrags für einen aktuellen Zustand 0 beseitigt werden, so daß die Tabelle nur auf einen Zustand nach oben oder nach unten in Abhängigkeit von den eingegebenen Daten übergeht.For each table goes after getting a certain number of MPSs that Decoder of fast Adaptierzuständen. In the desired embodiment there is no, since the fast Adaptierzustände have been stimulated Mechanism to go back to this except the coding process becomes started again. In other embodiments, the state table be designed according to these fast Adaptierzustände again to allow faster adaptation. In the invention is it for the decoder possible, faster to reach the more staggered codes, thereby possibly to gain improved compression. The fast adaptation can for a specific table by changing the table entry for one current state 0 are eliminated so that the table is only one State up or down depending on the entered Data passes.

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ß. Tabelle 20

Figure 01170001

  • * Schalten für MPS
Tabelle 21
Figure 01180001
  • * Schalten für MPS
Tabelle 22
Figure 01190001
  • * Schalten MPS
Tabelle 23
Figure 01200001
  • * Schalten MPS
Tabelle 24
Figure 01210001
  • * Schalten MPS
Tabelle 25
Figure 01220001
  • * Schalten MPS
For all tables, the data for each state is the code for that state, the next state for a positive current value and the next state for a negative current value (bottom). Asterisks indicate conditions where the MPS must be changed to a negative current value. Table 20
Figure 01170001
  • * Switching for MPS
Table 21
Figure 01180001
  • * Switching for MPS
Table 22
Figure 01190001
  • * Turn on MPS
Table 23
Figure 01200001
  • * Turn on MPS
Table 24
Figure 01210001
  • * Turn on MPS
Table 25
Figure 01220001
  • * Turn on MPS

Ein Addieren einer schnellen Addition zu einer Wahrscheinlichkeitsbewegung 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-Zustandstabellen folgen können.One Adding a fast addition to a probability move only helps with the coding start. Other methods can be applied to an adaptation during to improve the coding when the statistical value of a context tray change faster than the previously described PEM state tables can follow.

Eine Methode, um eine schnelle Adaption während des Codierens zu erhalten, besteht darin, einen Beschleunigungsterm zu dem aktuellen 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, sobtrahiert 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 irgendeinen Wert größer als 1 gesetzt werden, um anfangs eine schnelle Adaption zu schaffen.A Method to get a fast adaptation during encoding, It is an acceleration term to the current PEM state value add. This acceleration could be housed in a PEM state table by any code a constant number of times (e.g., 8) is repeated. Then one can Acceleration term M (e.g., a positive integer) is added or from the current state, when updated, so it is become. If M is 1, the system works the same as one without an acceleration and it comes to the slowest adaptation. If M greater than 1, there is a faster adaptation. At first M can any value greater than 1 to initially provide a 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 nacheinander aufgetreten ist, dann wird der Wert von M erhöht. Wenn beispielsweise vier aufeinanderfolgende Codewörter "0""0""0""0" oder "1N""1N""1N""1N" sind, dann wird der Wert von M erhöht. Dagegen kann ein Schaltmuster zwischen "0" und "1N" Codewörtern verwendet werden, um den Wert von M zu erniedrigen. Wenn beispielsweise vier aufeinanderfolgende Codewörter "0""1N""0""1N" oder "1N""0""1N""0" sind, dann wird der Wert von M erniedrigt.A Method of the invention to update the value of M based on the number of consecutive codewords. For example, if a predetermined number of codewords has occurred consecutively, then the value of M is increased. If for example, four consecutive code words "0" "0" "0" "0" or "1N" "1N" "1N" "1N", then the value of M is increased. In contrast, a switching pattern between "0" and "1N" codewords may be used to decrease the value of M. For example, if four successive codewords "0" "1N" "0" "1N" or "1N" "0" "1N" "0", then the value of M is lowered.

Bei einem anderen Beschleunigungsverfahren werden Zustandstabellen verwendet, in welchen jeder Code S-mal wiederholt wird, wobei S eine positive ganze Zahl ist. S ist ein inverser Beschleunigungsparameter. 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.at another acceleration method uses state tables in which each code is repeated S times, where S is a positive integer is. S is an inverse acceleration parameter. If S is one, the adaptation is fast, and when S is larger, the adaptation slows down. The value of S may initially be set to 1 to get a fast adaptation at first. With help a similar one Method of any of the above may be the value of S are updated when four consecutive codewords are "0" "0" "0" "0" or "1N" "1N" "1N" "1N". In such a Case, the value of S is lowered. In contrast, when four consecutive codewords "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önnen aufeinanderfolgende Codeworte auf aufeinanderfolgende Codeworte in einem Kontextfach hinweisen. In einem "Wahrscheinlichkeit"-System können aufeinanderfolgende Codeworte auf aufeinanderfolgende Codeworte in einer Wahrscheinlichkeitsklasse hinweisen. Andererseits können in jedem System aufeinanderfolgende Codeworte 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 Aufrechterhalten 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 consecutive codewords can have multiple meanings have. In a "context" system, successive ones can be used Codewords on consecutive codewords in a context box clues. In a "probability" system can be consecutive Codewords on consecutive codewords in a probability class clues. On the other hand, in each system successive codewords on codewords globally to point out (without consideration to a context or probability class). For this three examples and the memory bits required to make a Codewords history to get, 3 × number contextual subjects, 3 × number of probability classes or 3. Maintaining one Acceleration for every context compartment can create the best adaptation. As a bad Often track for a global change in the uncoded data, Global determination of acceleration can also be a good one Create adaptation.

System-AnwendungenSystem applications

Ein Erfolg irgendeines Kompressionssystems besteht darin, Speicheranforderungen für einen Datensatz zu verringern. Das parallele System der Erfindung kann für eine Anwendung als Ersatz dienen, die laufend durch ein verlustfreies Codiersystem vollgefüllt worden ist, und kann bei Systemen angewendet werden, die mit Ton, Text, Datenbasen, Computer oder anderen digitalen Daten, Signalen oder Symbolen arbeiten. Beispielsweise schließen verlustfreie Codiersysteme eine Faksimile-Kompression, eine Datenbasis-Kompression, eine Kompression von grafischen Bitmap-Bildern und eine Kompression von Transformations-Koeffizienten in Bildkompressions-Standards, wie JPEG und MPEG ein. Die Erfindung 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 Geschwindigkeit erfordern.One Success of any compression system is memory requirements for one Reduce the record. The parallel system of the invention may for one Application to serve as a substitute, running through a lossless Fully filled coding system and can be applied to systems that use sound, Text, databases, computers or other digital data, signals or symbols work. For example, lossless coding systems include a facsimile compression, a database compression, a compression graphical bitmap images and a compression of transform coefficients in image compression standards, like JPEG and MPEG. The invention enables a small efficient hardware implementation and relatively fast software implementation, so that's it a good choice for yourself There are applications that do not require high speed.

Der tatsächliche Vorteil, den die Erfindung gegenüber dem Stand der Technik hat, ist die Möglichkeit eines Betriebs mit sehr hohen Geschwindigkeit, insbesondere beim Decodieren. Auf diese Weise können mit Hilfe der Erfindung kostspielige hochschnelle Kanäle voll genutzt werden, wie hochschnelle Computernetze, Satelliten und terrestriche Funkkanäle. 28 stellt ein derartiges 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 Durchsatz 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 der Erfindung paßt nicht nur diese hohen Bandbreiten an, sondern es erhöht tatsächlich die effektive Bandbreite, da die Daten in komprimierter Form übertragen werden können.The actual advantage that the invention has over the prior art is the possibility of very high speed operation, especially in decoding. In this way, costly high-speed channels can be fully exploited with the aid of the invention, such as high-speed computer networks, satellites and terrestrial radio channels. 28 illustrates such a system in which radio data or a high-speed computer network data to a decoding system 2801 which parallels the data to produce output data. Current hardware entropy (such as the Q-Coder) would slow down 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 decoder with slow passage. The parallel system of the invention not only accommodates these high bandwidths, but actually increases the effective bandwidth since the data can be transmitted in compressed form.

Das parallel arbeitende System der Erfindung ist auch anwendbar, um eine effektive Bandbreite außerhalb mäßig schnellen Kanälen, wie ISDN, CD-ROM und SCSI zu erhalten. Ein derartiges Bandbreiten-Anpassungssystem ist in 28 dargestellt, bei welchem 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 erzeugen. 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 Bandbreiten-Anpassung durchführen.The parallel operating 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 in 28 shown where data from sources, such as a DC-ROM, Ethernet, a narrow computer standard interface (SCSI) or other similar source are sent to a decoding system 2901 which receives and decodes the data to produce an output signal. These channels are even faster than some current coders. Often, these channels are used to service a data source that requires more bandwidth than the channel has, such as real-time video or computer-based multimedia systems. The system of the invention can perform the role of bandwidth adaptation.

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-Standards. Ein derartiges System ist in 29 dargestellt. In 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 coder part of a real-time video system similar to the high-definition television system (HDTV) and MPEG video standards. Such a system is in 29 shown. In 29 the real-time video system has a decoding system 3001 on which works with compressed image data. The system 3001 decodes the data and passes it to a lossy decoder 3002 from. The lossy decoder could be the transform color conversion and subsampling part of an HDTV or MPEG decoder. The display 3003 can be a TV or video monitor.

Folglich sind ein Verfahren und eine Einrichtung zum parallelen Decodieren und Codieren von Daten beschrieben worden.consequently are a method and apparatus for parallel decoding and encoding data.

Claims (115)

Verfahren zum Codieren eines Datenstroms, das folgendes umfasst: a) ein eingehender Datenstrom wird in parallele Datenströme während der Codierung durch einen Entropiecodierer geteilt und es werden von dem Entropiecodierer Codewörter variabler Länge ausgegeben, wobei die Codewörter den geteilten Datenstrom darstellen; b) die ausgegebenen Codewörter variabler Länge werden in einer Ordnung geordnet, die am Beginn eines jeden Codeworts festgehalten ist; und c) die geordneten Codewörter variabler Länge werden in Codewörter fester Länge transformiert.Method for encoding a data stream, the comprising: a) an incoming data stream will be in parallel streams while the coding is divided by an entropy coder and it becomes from the entropy coder codewords variable length output, the codewords represent the shared data stream; b) the output codewords variable Be length ordered in an order held at the beginning of each codeword is; and c) become the ordered variable length code words in codewords fixed length transformed. Verfahren nach Anspruch 1, bei welchem jedes der Anzahl Codewörter am Anfang jedes Durchlaufs ausgegeben wird.The method of claim 1, wherein each of the Number of codewords is issued at the beginning of each pass. Verfahren nach Anspruch 1, bei welchem der Schritt des Erzeugens von codierten Daten ferner ein Kombinieren von Codewörtern variabler Länge in Datenstrukturen fester Länge aufweist.The method of claim 1, wherein the step generating coded data further combining variable codewords Length in Data structures of fixed length having. Verfahren nach Anspruch 3, bei welchem jede der Datenstrukturen fester Länge ein verschachteltes Wort aufweist.The method of claim 3, wherein each of the data structures fixed length has a nested word. Verfahren nach Anspruch 4, bei welchem codierte Daten derartig ausgegeben werden, dass Codewörter in einer Decodierungsordnung geordnet sind.The method of claim 4, wherein coded data are output such that codewords in a decoding order are ordered. Verfahren nach Anspruch 1, bei welchem Codewörter geordnet werden.The method of claim 1, wherein code words are ordered become. Verfahren nach Anspruch 1, bei welchem der Schritt des Erzeugens von Codewort Information die Schritte aufweist: Erzeugen des eines Wahrscheinlichkeitszustandes eines Codewortes; Auswählen eines Biterzeugungscodes, der auf dem Wahrscheinlichkeitszustand basiert; und Zugreifen auf einen Speicher, um einen dem Biterzeugungscode zugeordneten Durchlaufzählwert zu erhalten.The method of claim 1, wherein the step generating codeword information comprising the steps of: Produce that of a probability state of a codeword; Select one Bit generation codes based on the probability state; and Accessing a memory to receive the bit generation code associated pass count to obtain. Codiersystem zum Codieren eines Datenstroms, mit einem Entropie-Codierer, der zum Aufnehmen des Datenstroms vorgesehen ist, um Codewörtern variabler Länge zu erzeugen, und wobei ferner mehrere Codewörter von dem Entropie-Codierer parallel erzeugt und ausgegeben werden, und einer Umordnungseinheit, die mit dem Entropie-Codierer verbunden ist, um aus den parallel erzeugten Codewörtern variabler Länge einen Codestrom zu erzeugen, wobei die Umordnungseinheit Codewörter, die von dem Codierer erzeugt worden sind, in einer Decodierer-Reihenfolge umordnet, und zwar basierend auf Daten zu Beginn eines Teils des durch jedes Codewort dargestellten Datenstroms.Coding system for coding a data stream, with one Entropy coder intended to record the data stream is to code words variable length and further comprising a plurality of codewords from the entropy coder generated and output in parallel, and a rearrangement unit, which is connected to the entropy coder to get out of the parallel generated codewords variable length generate a code stream, wherein the reordering unit code words, the have been generated by the encoder in a decoder order rearranges, based on data at the beginning of part of the data stream represented by each codeword. Codiersystem nach Anspruch 8, bei welchem die Umordnungseinheit die Codewörter in einer solchen Weise speichert, um Codewortgröße anzuzeigen.A coding system according to claim 8, wherein the rearrangement unit the codewords in such a way as to indicate codeword size. Codiersystem nach Anspruch 9, bei welchem 1n Codewörter so umgeordnet werden, dass das höchstwertige "1" Bit die Länge jedes Codeworts anzeigt.Coding system according to claim 9, wherein 1n codewords so that the most significant "1" bit indicates the length of each codeword. Codiersystem nach Anspruch 8, bei welchem die Umordnungseinheit 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örter variabler Länge in Datenstrukturen fester Länge zu kombinieren.The coding system of claim 8, wherein the rearranging unit comprises at least one sweep count shuffle unit for generating each of the plurality of codewords in the codeword information at the beginning of each sweep, and at least one bit pack unit for combining variable length codewords into fixed length data structures ren. Codiersystem nach Anspruch 11, bei welchem jede der Datenstrukturen fester Länge ein verschachteltes Wort aufweist.A coding system according to claim 11, wherein each the data structures of fixed length has a nested word. Codiersystem nach Anspruch 8, mit einem Speicher, der mit der Umordnungseinheit verbunden ist, um Codewörter in einer Reihenfolge zu speichern.Coding system according to claim 8, having a memory, which is connected to the rearrangement unit to code words in to save an order. Codiersystem nach Anspruch 8, bei welchem der Codierer aufweist: ein Kontextmodell; einen Wahrscheinlichkeits-Schätzmodul, der mit dem Kontextmodell verbunden ist; und eine Bitgeneratorstruktur, die mit dem Wahrscheinlichkeits-Schätzmodul verbunden ist, um ein Codewort entsprechend dem Datenstrom zu erzeugen.A coding system according to claim 8, wherein the encoder having: a context model; a probability estimation module, which is connected to the context model; and a bit generator structure, which is associated with the probability estimator module Codeword to generate according to the data stream. Codiersystem nach Anspruch 14, bei welchem der Codierer ferner einen Speicher aufweist, der eine Anzahl von Durchlaufzählwerten speichert, und bei welchem der Speicher mit Hilfe von Wahrscheinlichkeitsklassen von dem Wahrscheinlichkeits-Schätzmodul aus zugegriffen wird, um eine der Anzahl Durchlaufzählwerte an den Bitgenerator für ein Ausgeben als Teil der Codewort-Information zu liefern.The coding system of claim 14, wherein the encoder a memory having a number of pass counts stores, and in which the memory using probability classes from the probability estimation module is accessed to one of the number of pass counts to the bit generator for to provide output as part of the codeword information. Codiersystem nach Anspruch 14, bei welchem die Bitgenerator-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 den Bitgenerator zu liefern, 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.The coding system of claim 14, wherein the bit generator structure having: a bit generator corresponding to codeword information an index and an MPS / LPS display, and one memory connected to the bit generator to indicate a pass count to deliver the bit generator, where the bit generator is the memory based on the index reads and a bit generation based on Performs data, obtained from reading the memory. Codiersystem nach Anspruch 16, bei welchem die Codewort-Information ein erstes Signal, das anzeigt, ob die MPS/LPS-Anzeige den Start eines Durchlaufs aufweist, ein zweites Signal, das anzeigt, ob die MPS/LPS-Anzeige das Ende eines Durchlaufs aufweist, und ein ausgegebenes Codewort aufweist.The coding system of claim 16, wherein the codeword information a first signal indicating whether the MPS / LPS indicator is starting a pass, a second signal indicating whether the MPS / LPS indicator has the end of a pass, and an output codeword having. Codiersystem nach Anspruch 11, bei welchem die wenigstens eine Bitpackeinheit 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 Stroms geordnet sind.A coding system according to claim 11, wherein the at least a bitpack unit sorts nested words to the encoded one Generate data stream as interleaved streams corresponding to a nth previous codeword in each nested word each Electricity is ordered. Codiersystem nach Anspruch 11, bei welchem die Umordnungseinheit einen Snooper-Decodierer zum Auswählen verschachtelter Wörter aufweist, die in den Codestrom abgegeben worden sind.The coding system of claim 11, wherein the rearrangement unit a snooper decoder for selecting nested words, which have been delivered in the code stream. Codiersystem nach Anspruch 19, bei welchem die Umordnungseinheit eine Anzahl Durchlaufzählwert-Umordnungseinheiten aufweist, die mit einer Anzahl Bitpackeinheiten verbunden sind, wobei jede der Anzahl Bitpackeinheiten verschachtelte Wörter erzeugt, und der Snooper-Decodierer ein verschachteltes Wort aus der Anzahl verschachtelter Wörter als einen Ausgang in den Codestrom auswählt.The coding system of claim 19, wherein the rearrangement unit a number of pass count shuffling units which are connected to a number of bitpack units, wherein each of the number of bitpacking units generates nested words, and the snooper decoder a nested word out of the number nested words as an output in the code stream selects. Codiersystem nach Anspruch 8, bei welchem die Codewort-Information eine Zeitmarke enthält, und bei welchem die Umordnungseinheit ferner eine Logik aufweist, um verschachtelte Wörter basierend auf zugeordneten Zeitmarken abzugeben.A coding system according to claim 8, wherein the codeword information contains a timestamp, and wherein the rearrangement unit further comprises logic, around nested words deliver based on associated timestamps. Codiersystem nach Anspruch 21, bei welchem die Umordnungseinheit eine Anzahl Durchlaufzählwert-Umordnungseinheiten aufweist, die mit einer Anzahl Bitpackeinheiten verbunden sind, und bei welchem die Logik bewirkt, dass verschachtelte Wörter basierend auf den zugeordneten Zeitmarken abgegeben werden.The coding system of claim 21, wherein the rearrangement unit a number of pass count shuffling units which are connected to a number of bitpack units, and where the logic causes nested words to be based be submitted on the associated timestamps. Codiersystem nach Anspruch 22, bei welchem verschachtelte Wörter basierend auf der ältesten Zeitmarke abgegeben werden.A coding system according to claim 22, wherein nested ones words based on the oldest Timestamp are delivered. Codiersystem nach Anspruch 11, bei welchem eine einzige Schlange Codewörter an eine Anzahl Bitpackeinheiten liefert, und bei welchem die Anzahl Bitpackeinheiten verschachtelte Wörter zum Ausgeben als Teil des Codestroms erzeugt.A coding system according to claim 11, wherein a only snake codewords to a number of bitpack units, and in which the number Bitpackers nested words to output as part of the code stream generated. Codiersystem nach Anspruch 24, bei welchem die einzige Schlange eine einzige Durchlaufzählwert-Umordnungseinheit enthält, und bei welchem die Logik das nächste verschachtelte Wort zum Ausgeben als Teil des Codestroms festlegt.The coding system of claim 24, wherein the single queue includes a single pass count shuffling unit, and wherein the logic outputs the next interleaved word as part of the code stream. Codiersystem nach Anspruch 11, bei welchem eine einzige Schlange Codewörter an eine einzige Bitpackeinheit liefert.A coding system according to claim 11, wherein a only snake codewords to a single bitpack unit. Codiersystem nach Anspruch 8, wobei die Umordnungseinheit eine Durchlaufzählwert-Umordnungseinheit zum Umordnen von Durchlaufzählungen, indem jedes Codewort am Anfang eines Laufs bzw. Durchlaufs angeordnet wird, und eine Bitpackeinheit aufweist, die vorgesehen ist, um Codewörter von der Durchlaufzählwert-Umordnungseinheit zu erhalten, um Codewörter in eine Anzahl verschachtelter Wörter fester Länge zu kombinieren und um die Anzahl verschachtelter Wörter fester Länge in einer von einem Decodierer geforderten Reihenfolge abzugeben.The coding system of claim 8, wherein the rearrangement unit a pass count reordering unit for reordering run counts, by placing each codeword at the beginning of a run and a bitpack unit provided to encode codewords from the pass count reorder unit to get to codewords into a number of nested words fixed length too combine and the number of nested words of fixed length in one To deliver from a decoder required order. Codiersystem nach Anspruch 27, bei welchem die Umordnungseinheit ferner einen Speicher aufweist, um Codewörter während des Umordnens zu speichern.The coding system of claim 27, wherein the rearrangement unit further comprising a memory for storing codewords during reordering. Codiersystem nach Anspruch 27, bei welchem der Codierer ferner ein Kontextmodell, einen Wahrscheinlichkeits-Bewertungsmodul, der mit dem Kontext verbunden ist, und einen mit dem Wahrscheinlichkeits-Bewertungsmodul verbundenen Bitstromgenerator aufweist.The coding system of claim 27, wherein the encoder a context model, a probability assessment module, associated with the context, and one with the probability score module having associated bitstream generator. Codiersystem nach Anspruch 29, bei welchem die Durchlaufzählwert-Umordnungseinheit ferner aufweist: einen ersten Speicher, um Codewörter zu speichern; einen ersten Indikator und einen zweiten Indikator, um den ersten 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 Indikator auf einen zweiten Eintrag zeigt, der als eine nächste verfügbare und nicht zugeordnete Speicherstelle in dem ersten Speicher bestimmt worden ist.The coding system of claim 29, wherein the pass count shuffling unit further comprising: a first memory to code words to to save; a first indicator and a second indicator, to address the first memory as a queue, the first indicator on a first entry shows that as an output of the first memory, and the second indicator points to a second entry, available as a next available and unassigned one Memory location has been determined in the first memory. Codiersystem nach Anspruch 30, mit einem Zeigerspeicher zum Speichern von Adresseninformation, die Stellen in dem ersten Speicher entspricht, der gegenwärtig zum Speichern von Codewörtern für jeden Index bestimmt ist.Coding system according to claim 30, having a pointer memory for storing address information, the digits in the first Memory matches that currently for storing codewords for each Index is determined. Codiersystem nach Anspruch 31, bei welchem jeder Index eine Wahrscheinlichkeitsklasse anzeigt.The coding system of claim 31, wherein each one Index displays a probability class. Codiersystem nach Anspruch 31, bei welchem jeder Index zumindest einen Kontext anzeigt.The coding system of claim 31, wherein each one Index displays at least one context. Codiersystem nach Anspruch 27, bei welchem die Umordnungseinheit ferner eine Codewort-Speicher-Schlange zum Speichern von Codewörtern, einen Kopfzeiger, der mit der Codewort-Speicher-Schlange verbunden ist, um zumindest eine Speicherstelle zumindest eines Codeworts für ein Ausgeben von der Codewort-Speicher-Schlange anzuzeigen, und einen Nachlaufzeiger aufweist, um zumindest eine Speicherstelle für ein Einsetzen von Codewörtern in die Codewort-Speicher-Schlange anzuzeigen.The coding system of claim 27, wherein the rearrangement unit a codeword memory queue for storing codewords, a Header connected to the codeword memory queue, by at least one memory location of at least one code word for outputting from the codeword memory queue, and a tracking pointer has at least one memory location for insertion of codewords in to display the codeword storage queue. Codiersystem nach Anspruch 34, bei welchem jeder Codeworteintrag in der Codewort-Speicher-Schlange eine Gültigkeitsanzeige enthält, und bei welchem ferner ein Codewort aus der Codewort-Speicher-Schlange abgegeben wird, wenn der Kopfzeiger die Adresse des Codeworts spezifiziert und die Gültigkeitsanzeige für das Codewort dessen Gültigkeit anzeigt.The coding system of claim 34, wherein each one Codeword entry in the codeword memory queue a validity indicator contains and further comprising a codeword from the codeword memory queue is issued when the head pointer specifies the address of the code word and the validity indicator for the Code word of validity displays. Codiersystem nach Anspruch 27, bei welchem die Bitpackeinheit eine Bitpackungslogik aufweist, um Codewörter von der Umordnungseinheit aufzunehmen und Codewörter in verschlüsselten Wörtern für eine Anzahl Ströme zu mischen.The coding system of claim 27, wherein the bitpack unit a bit packing logic to code words from the rearrangement unit record and codewords in encrypted words for one Number of streams to mix. Codiersystem nach Anspruch 36, bei welchem die Bitpackungslogik ferner eine Anzahl Akkumulatoren und eine Anzahl Register aufweist, wobei jedes der Anzahl Register einem der Anzahl 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 dem zugeordneten Register zum Speichern eines gegenwärtigen Codeworts für den Strom anzeigt, so dass jedes Codewort für einen der Anzahl Ströme an den Inhalt des Registers angehängt ist, das diesem eine der Anzahl Ströme, basierend auf dem Wert in dem zugeordneten Akkumulator, zugeordnet ist.The coding system of claim 36, wherein the bit packing logic further comprising a number of accumulators and a number of registers, wherein each of the number of registers is one of the number of accumulators and one of the number of streams where each register is for storing a nested one Word for its associated power and each accumulator the next location in the assigned Register for storing a current code word for the stream indicates that each code word for one of the number of streams to the Content of the register attached This is one of the number of streams based on the value in the associated accumulator, is assigned. Codiersystem nach Anspruch 37, mit einer Schiebeeinheit, die mit der Anzahl Akkumulatoren verbunden ist, um Codewörter entsprechend zumindest einem Signal aus der Anzahl Akkumulatoren zu verschieben, wobei Codewörter zum Anhängen an Inhalte in einem der Anzahl Register, basierend auf einem Akkumulatorwert, verschoben werden, um Teile von zumindest zwei Codewörtern in jedes verschachtelte Wort zu packen.A coding system according to claim 37, comprising a shift unit connected to said number of accumulators for shifting code words in accordance with at least one of said plurality of accumulators, wherein codewords for appending to contents in one of the plurality of registers are shifted based on an accumulator value to pack parts of at least two codewords into each interleaved word. Codiersystem nach Anspruch 36, mit einem Umordnungsspeicher, um verschachtelte Wörter in einer durch den Decodierer bestimmten Reihenfolge zu speichern.Coding system according to claim 36, with a reordering memory, around nested words in an order determined by the decoder. Codiersystem nach Anspruch 39, mit einer Anzahl Zeiger, die einer Anzahl verschachtelter Datenströme entsprechen, wobei jeder der Anzahl Zeiger eine Stelle in dem Umordnungsspeicher für das nächste verschachtelte Wort für jeden der Anzahl Ströme bestimmt.Coding system according to claim 39, comprising a number Pointers that correspond to a number of nested streams wherein each of the number of pointers is a location in the reordering memory for the next nested word for each of the number of streams certainly. Codiersystem nach Anspruch 27, mit einer Anzahl Durchlaufzählwert-Umordnungseinheiten, wobei jede der Durchlaufzählwert-Umordnungseinheiten einem der codierten Datenströme zugeordnet ist, einer Anzahl Bitpackeinheiten, die, wenn jede der Anzahl von Bitpackeinheiten mit einem bestimmten bzw. einzigen der Anzahl von Durchlaufzählwert-Umordnungseinheiten verbunden ist, verschachtelte Wörter für jeden codierten Datenstrom erzeugt, und mit einem Decodierer, um die verschachtelten Wörter aus der Anzahl Bitpackeinheiten als das codierte Ausgangssignal auszuwählen.Coding system according to claim 27, with a number Pass count-reordering, wherein each of the pass count reordering units one of the coded data streams associated with a number of bitpack units that, when each of the Number of bitpack units with a particular one of Number of pass count shuffling units connected, nested words for each coded data stream is generated, and with a decoder to the nested words from the number of bit pack units as the coded output signal select. Codiersystem nach Anspruch 27, mit einer Anzahl Durchlaufzählwert-Umordnungseinheiten, wobei jede der Durchlaufzählwert-Umordnungseinheiten einem der codierten Datenströme zugeordnet ist und eine Anzahl Codewörter und eine Zeitmarke erzeugt, die jedem der Anzahl Codewörter zugeordnet ist, einer Anzahl Bitpackeinheiten zum Erzeugen von verschachtelten Wörtern für jeden codierten Datenstrom und mit einer Logik, um jedes der verschachtelten Wörter, basierend auf Zeitmarken von Codewörtern in jedem der verschachtelten Wörter, auszuwählen.Coding system according to claim 27, with a number Pass count-reordering, wherein each of the pass count reordering units one of the coded data streams is assigned and generates a number of codewords and a timestamp, each of the number of codewords associated with a number of bitpack units for generating interleaved ones words for each coded data stream and with a logic to each of the nested words, based on timestamps of codewords in each of the nested ones words, select. Codiersystem nach Anspruch 42, bei welchem die Logik ein verschachteltes Wort auswählt, das ein Codewort mit der ältesten Zeitmarke enthält, und zwar aus einer Anzahl von verschachtelten Wörtern für jede Ausgabe des Codierers.The coding system of claim 42, wherein the logic select a nested word, that's a codeword with the oldest Contains timestamp, from a number of nested words for each output of the encoder. Codiersystem nach Anspruch 27, bei welchem die Bitpackeinheit eine Anzahl Bitpackeinheiten aufweist, die verbunden 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 basierend auf dem nächsten Strom auszuwählen.The coding system of claim 27, wherein the bitpack unit comprises a number of bitpack units connected to code words one of a number of streams and further comprising logic to interleave words for output from each of the number of bitpacking units based on the next stream select. Codiersystem nach Anspruch 27, bei welchem die Umordnungseinheit ferner einen endlichen Speicher aufweist.The coding system of claim 27, wherein the rearrangement unit further comprising a finite memory. Codiersystem nach Anspruch 8 oder 27 zum Entropiecodieren von Daten, mit einem Indexgenerator zum Erzeugen von Indizes auf der Basis der Daten, und einer Zustandstabelle, die verbunden ist, um eine Wahrscheinlichkeitsschätzung auf der Basis der Indizes zu schaffen, wobei 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 verschiedenen Codes, die der ersten Anzahl Zustände entsprechen, schneller auftreten, wenn zwischen den Zuständen in der ersten Anzahl Zustände übergegangen wird, als Übergänge zwischen verschiedenen Codes, die der zweiten Anzahl Zustände entsprechen, wenn in der zweiten Anzahl Zustände übergegangen wird.Coding system according to claim 8 or 27 for entropy coding of data, with an index generator for generating indices based on the data, and a state table connected is a probability estimate based on the indices to create, the state table a first number states and a second number of states where each of the states corresponds to a code, and further where transitions between different Codes corresponding to the first number of states are faster occur when transitioning between states in the first number states is called, as transitions between different codes that correspond to the second number states when in the passed over to the second number of states becomes. Codiersystem nach Anspruch 46, bei welchem die erste Anzahl Zustände nur für eine vorherbestimmte Anzahl von Indizes verwendet wird.A coding system according to claim 46, wherein the first Number of states only for a predetermined number of indexes is used. Codiersystem nach Anspruch 46, bei welchem die erste Anzahl Zustände nur für eine vorherbestimmte Anzahl von Indizes verwendet wird, die anfangs die Zustandstabelle indexieren.A coding system according to claim 46, wherein the first Number of states only for a predetermined number of indexes is used initially index the state table. Codiersystem nach Anspruch 46, bei welchem jeder der ersten Anzahl Zustände ein R2 Code zugeordnet ist.The coding system of claim 46, wherein each one the first number of states an R2 code is assigned. Codiersystem nach Anspruch 47, bei welchem die erste Anzahl Zustände zumindest einen Übergang zu der zweiten Anzahl Zustände enthält, so dass die Zustandstabelle zu der zweiten Anzahl Zustände aus der ersten Anzahl Zustände nach der vorherbestimmten Anzahl von Indizes übergeht.A coding system according to claim 47, wherein the first Number of states at least one transition to the second number of states contains so that the state table turns out to the second number states the first number of states after the predetermined number of indices passes. Codiersystem nach Anspruch 46, bei welchem jede der ersten Anzahl Zustände einem verschiedenen Code zugeordnet ist.A coding system according to claim 46, wherein each the first number of states associated with a different code. Codiersystem nach Anspruch 46, bei welchem die Zustandstabelle von einem der ersten Anzahl Zustände auf einen der zweiten Anzahl Zustände entsprechend einem am wenigstens wahrscheinlichen Symbol übergeht.The coding system of claim 46, wherein the state table from one of the first number states to one of the second number of states corresponding to one of at least probable symbol passes. Codiersystem nach Anspruch 46, bei welchem die Zustandseinrichtung einen Zustand entsprechend einem wahrscheinlichsten Symbol erhöht.A coding system according to claim 46, wherein said state means increases a state according to a most probable symbol. Codiersystem nach Anspruch 8 oder 27 zum Entropiecodieren von Daten, mit einem Indexgenerator zum Erzeugen von Indizes auf der Basis der Daten, und einer Zustandstabelle, die verbunden ist, um eine Wahrscheinlichkeitsschätzung auf der Basis der Indizes zu schaffen, wobei 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 Male wiederholt wird, wobei ein Übergehen zwischen Zuständen der Zustandstabelle auf der Basis eines Beschleunigungsterms vorkommt, der modifizierbar ist, so dass eine erste Übergangsrate zwischen Zuständen, die während einer ersten Zeitperiode auftritt, sich von einer zweiten Übergangsrate während einer zweiten Zeitperiode unterscheidet.Coding system according to claim 8 or 27 for entropy coding of data, with an index generator for generating indices based on the data, and a state table connected is a probability estimate based on the indices wherein the state table includes a number of states, wherein each of the states corresponds to a code and each code in the state table corresponds to one is repeated a predetermined number of times, being a transition between states the state table is based on an acceleration term, which is modifiable such that a first transition rate between states that while a first time period occurs, from a second transition rate while a second period of time. Codiersystem nach Anspruch 54, bei welchem die Zustandstabelle durch ein Modifizieren des PEM-Zustands, indem der Beschleunigungsterm inkrementiert oder dekrementiert wird, aktualisiert wird.The coding system of claim 54, wherein the state table by modifying the PEM state by the acceleration term is incremented or decremented, is updated. Codiersystem nach Anspruch 55, bei welchem keine adaptive Beschleunigung vorkommt, wenn der Beschleunigungsterm eine vorherbestimmte Zahl aufweist.A coding system according to claim 55, wherein no adaptive acceleration occurs when the acceleration term is a has a predetermined number. Codiersystem nach Anspruch 55, bei welchem der Beschleunigungsterm auf der Basis der Zahl aufeinanderfolgender Codewörter aktualisiert wird.The coding system of claim 55, wherein the acceleration term updated on the basis of the number of consecutive codewords becomes. Codiersystem nach Anspruch 57, bei welchem aufeinanderfolgende Codewörter aufeinanderfolgende Codewörter in einem Kontext aufweisen.A coding system according to claim 57, wherein successive ones codewords successive codewords in a context. Codiersystem nach Anspruch 57, bei welchem aufeinanderfolgende Codewörter aufeinanderfolgende Codewörter in einer Wahrscheinlichkeitsklasse aufweisen.A coding system according to claim 57, wherein successive ones codewords successive codewords in a probability class. Codiersystem nach Anspruch 55, bei welchem der Beschleunigungsterm basierend auf der Zahl sich alternierender Codewörter aktualisiert wird.The coding system of claim 55, wherein the acceleration term is updated based on the number of alternating codewords. Decodiersystem mit Entropie-Decodierer zum Decodieren eines Datenstroms von entropiecodierten Codewörtern, mit einer Anzahl Bitstromgeneratoren zum Aufnehmen des Datenstroms, und einer Zustandstabelle, die mit der Anzahl Bitstromgeneratoren verbunden ist, um eine Wahrscheinlichkeitsschätzung an die Anzahl Bitstromgeneratoren zu liefern, wobei die Anzahl Bitstromgeneratoren ein decodiertes Ergebnis für jedes Codewort in dem Datenstrom entsprechend der Wahrscheinlichkeitsschätzung 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 enthält und Übergänge zwischen Zuständen Übergängen zwischen Codes entsprechen, wobei Übergänge zwischen verschiedenen Codes in der ersten Anzahl Zustände schneller vorkommen als Übergänge zwischen Codes in der zweiten Anzahl Zustände.Decoding system with entropy decoder for decoding a data stream of entropy coded codewords, with a number Bitstream generators for receiving the data stream, and one State table associated with the number of bitstream generators is a probability estimate to the number of bitstream generators the number of bitstream generators being decoded Result for each codeword in the data stream according to the probability estimate Help of a Rn (k) code for generates multiple values of n, and further wherein the state table a first number of states and a second number of states contains and transitions between States transitions between Codes match, with transitions between different codes in the first number of states occur faster than transitions between Codes in the second number states. Decodiersystem nach Anspruch 61, bei welchem die erste Anzahl Zustände jeweils einen R2(k) Code enthält.A decoding system according to claim 61, wherein the first number of states each contains an R2 (k) code. Decodiersystem nach Anspruch 61, bei welchem die erste Anzahl Zustände nur während einer Initialisierung verwendet wird.A decoding system according to claim 61, wherein the first number of states only during an initialization is used. Decodiersystem mit Entropie-Decodierer zum Decodieren eines Datenstroms von entropiecodierten Codewörtern, mit einer Anzahl Bitstromgeneratoren zum Aufnehmen von Daten von dem Datenstrom, und einer Zustandstabelle, die verbunden ist, um Wahrscheinlichkeitsschätzungen auf der Basis der Indizes vorzusehen, wobei die Zustandstabelle eine Anzahl Zustände enthält, wobei jeder der Zustände einem Code entspricht und jeder Code in der Zustandstabelle eine vorherbestimmte Anzahl Male wiederholt wird, wobei ein Übergehen zwischen Zuständen der Zustandstabelle auf der Basis eines Beschleunigungsterms vorkommt, welcher modifizierbar ist, so dass eine erste Übergangsrate zwischen Zuständen während einer ersten Zeitperiode sich von einer zweiten Übergangsrate während einer zweiten Zeitperiode unterscheidet.An entropy decoder decoding system for decoding a data stream of entropy coded codewords, comprising a plurality of bitstream generators for receiving data from the data stream, and a state table coupled to provide probability estimates based on the indices, the state table including a number of states, wherein each of the states corresponds to a code and each code in the state table is repeated a predetermined number of times, transitioning between states of the state table based on an acceleration term that is modifiable such that a first transition rate between states during a first time period is different from a second transition rate during a second time period. Decodiersystem nach Anspruch 61, bei welchem jeder Code in der Zustandstabelle eine konstante Anzahl Male wiederholt wird.The decoding system of claim 61, wherein each one Code in the state table repeated a constant number of times becomes. Decodiersystem nach Anspruch 65, bei welchem die Zustandstabelle durch ein Modifizieren des PEM-Zustands durch einen Beschleunigungsterm aktualisiert wird.A decoding system according to claim 65, wherein the State table by modifying the PEM state by a Acceleration term is updated. Decodiersystem nach Anspruch 66, bei welchem keine adaptive Beschleunigung vorkommt, wenn der Beschleunigungsterm eine vorherbestimmte Zahl aufweist.A decoding system according to claim 66, wherein no adaptive acceleration occurs when the acceleration term is a has a predetermined number. Decodiersystem nach Anspruch 66, bei welchem der Beschleunigungsterm auf der Basis der Zahl aufeinanderfolgender Codewörter aktualisiert wird.The decoding system of claim 66, wherein the Acceleration term based on the number of consecutive codewords is updated. Decodiersystem nach Anspruch 66, bei welchem der Beschleunigungsterm auf der Basis der Zahl sich alternierender Codewörter aktualisiert wird.The decoding system of claim 66, wherein the Update acceleration term based on the number of alternating codewords becomes. Decodiersystem mit Entropie-Decodierer zum Decodieren eines Datenstroms von verschachtelten entropiecodierten Wörter, mit einer Schiebeeinheit für variable Längen zum Aufnehmen des Datenstroms und zum Verschieben von Codewörtern, um richtig ausgerichtete codierte Daten auszugeben, wobei die Scheibeeinheit für variable Längen eine Anzahl Register aufweist, einem Lauflängendecodierer, der mit der Schiebeeinheit für variable Längen verbunden ist, um die richtig ausgerichteten, codierten Daten als Codewörter zum Bestimmen des Codewort-Typs aufzunehmen; einem Wahrscheinlichkeits-Schätzmodul, welcher mit dem Lauflängen-Decodierer verbunden ist, um den Code für den Lauflängen-Decodierer zu bestimmen, so dass der Lauflängen-Decodierer eine Lauflänge und eine Anzeige erzeugt, ob das LPS entsprechend jedem Codewort vorgekommen ist.Decoding system with entropy decoder for decoding a data stream of interlaced entropy coded words, with one Sliding unit for variable lengths for recording the data stream and for moving codewords output correctly aligned coded data, wherein the disk unit for variable Lengths one Has number of registers, a run length decoder compatible with the Sliding unit for variable lengths is connected to the properly aligned, encoded data as codewords for determining the codeword type; a probability estimation module, which is connected to the run-length decoder is to get the code for the run-length decoder to determine, so the run-length decoder a run length and an indication is generated as to whether the LPS corresponds to each codeword occurred. Decodiersystem nach Anspruch 70, bei welchem ein Teil der Anzahl von Registern verbunden ist, um Daten von einem anderen der Anzahl Register oder von dem Datenstrom aufzunehmen.A decoding system according to claim 70, wherein a Part of the number of registers connected to data from one others of the number of registers or of the data stream. Decodiersystem nach Anspruch 70, bei welchem die Schiebeeinheit für variable Längen eine Tonnen-(barrel)Schiebeeinheit aufweist, um Daten aus dem Datenstrom in die Anzahl Register zu verschieben.A decoding system according to claim 70, wherein the Sliding unit for variable lengths a barrel shift unit to retrieve data from the data stream to move to the number of registers. Decodiersystem nach Anspruch 70, bei welchem die Schiebeeinheit für variable Längen einen FIFO mit einer Anzahl Register aufweist, wobei jedes der Register Daten als einen Eingang von den verschachtelten codierten Daten aufnimmt, und zumindest eines der Anzahl Register verbunden ist, um Codewörter von einem anderen der Anzahl Register aufzunehmen.A decoding system according to claim 70, wherein the Sliding unit for variable lengths a FIFO having a number of registers, each of the registers Data as an input from the interleaved coded data absorbs, and at least one of the number registers is connected, around codewords from another of the number of registers. Decodiersystem nach Anspruch 70, bei welchem die Schiebeeinheit aufweist: eine erste Anzahl Register, die verbunden ist, um Codewörter aufzunehmen, wobei jedes der ersten Anzahl Register einen bestimmten Strom Codewörter erzeugt; einen Multiplexer, der verbunden ist, um Codewortdaten aus jedem der ersten Anzahl Register als einen Eingang aufzunehmen und Codewörter aus einem der Anzahl Ströme zu einem bestimmten Zeitpunkt abzugeben; eine Tonnen-Schiebeeinheit, die mit dem Ausgang des Multiplexers verbunden ist, um Codewort-Daten von dem Multiplexer aus für ein Ausgeben als ausgerichtete codierte Daten zu verschieben; eine Logik, die mit der Schiebeeinheit verbunden ist, um eine Zahl Bits anzuzeigen, um das Codewort zu verschieben, und einen FIFO mit einer Anzahl Register, die verbunden sind, um Codewörter von dem Multiplexer aufzunehmen, wobei der FIFO eine Anzahl Register enthält, wobei jedes der Anzahl Register Daten als einen Eingang von den verschachtelten codierten Daten aufnimmt, und zumindest eines der Anzahl Register verbunden ist, um Codewörter von einem anderen der Anzahl Register aufzunehmen.A decoding system according to claim 70, wherein the Sliding unit comprising: a first number of registers connected is to code words each of the first number of registers having a particular one Stream codewords generated; a multiplexer connected to codeword data from each of the first number of registers as an input and codewords from one of the number of streams to deliver at a certain time; one tonne sliding unit, which is connected to the output of the multiplexer to codeword data from the multiplexer for shift output as aligned coded data; a Logic that is connected to the shift unit by a number of bits to move the codeword, and a FIFO with a number of registers connected to code words of the multiplexer, the FIFO having a number of registers contains wherein each of the plurality of registers receives data as an input from the interleaved coded data, and at least one of the Number of registers is connected to code words from another of the Record number of registers. Decodiersystem mit Entropie-Decodierer zum Decodieren eines Datenstroms von entropiecodierten Daten, mit einer FIFO-Struktur, die verbunden ist, um die Daten aufzunehmen; einem Kontextmodell zum Vorsehen von Kontexten; einem mit dem Kontextmodell verbundenen Speicher, um Zustandsinformation zu speichern und Zustandsinformation in Antwort auf jeden von dem Kontextmodell vorgesehenen Kontext bereitzustellen; einer Anzahl Decodierer, die verbunden ist, um codierte Daten von der FIFO-Struktur aufzunehmen, und die mit dem Speicher verbunden sind, um Codewörter, die von der FIFO-Struktur zugeführt worden sind, unter Verwendung von Zustandsinformation aus dem Speicher zu decodieren, wobei die Anzahl Decodierer vorgesehen ist, so dass Durchlaufzählwerte für eine Anzahl Codes erzeugt werden können.An entropy decoder decoding system for decoding a data stream of entropy-coded data, comprising a FIFO structure connected to receive the data; a context model for providing contexts; a memory associated with the context model for storing state information and providing state information in response to any context provided by the context model; a number of decoders connected to receive coded data from the FIFO structure, and the are connected to the memory to decode codewords supplied from the FIFO structure using state information from the memory, the number of decoders being provided so that iteration numbers for a number of codes can be generated. Decodiersystem nach Anspruch 75, bei welchem die FIFO-Struktur codierte Daten an die Anzahl Decodierer unabhängig von Kontext und Wahrscheinlichkeitsklasse zuführt.The decoding system of claim 75, wherein the FIFO structure coded data to the number of decoders independent of Supplies context and probability class. Decodiersystem nach Anspruch 75, bei welchem der Decodierer einen Speicher zum Speichern für Durchlaufzählwerten auf weist, um Durchlaufzählwerte zu speichern, der auf der Basis einer Wahrscheinlichkeitsklasse zugreifbar ist.A decoding system according to claim 75, wherein the Decoder memory for storing for pass counts points to pass counts to store on the basis of a probability class is accessible. Decodiersystem nach Anspruch 75, bei welchem die FIFO-Struktur Daten für zwei der Anzahl Decodierer schafft.The decoding system of claim 75, wherein the FIFO structure data for two of the number of decoders creates. Decodiersystem nach Anspruch 75, bei welchem die FIFO-Struktur eine Anzahl Ausgangssignale aufweist, und zwar eines für jeden der Anzahl Decodierer.The decoding system of claim 75, wherein the FIFO structure has a number of output signals, one of them for each the number of decoders. Decodiersystem nach Anspruch 79, bei welchem die FIFO-Struktur ein Paar Multiplexer und eine Steuerlogik zum Auswählen des Multiplexerpaars aufweist, um sicherzustellen, dass ein Codewort jedem Decodierer zugeführt ist.A decoding system according to claim 79, wherein the FIFO structure a pair of multiplexers and a control logic for selecting the Multiplexer pairs, to ensure that a codeword supplied to each decoder is. Decodiersystem nach Anspruch 80, bei welchem das Multiplexerpaar durch die Steuerlogik auf der Basis von Anforderungen ausgewählt wird, die von einem der Anzahl Decodierer erhalten worden sind.The decoding system of claim 80, wherein the Multiplexer pair through the control logic based on requirements selected which has been obtained from one of the number of decoders. Codiersystem nach Patentanspruch 8, wobei codierte Daten in einem der parallelen Ströme auf der Basis eines Satzes Kriterien. zugeteilt sind, mit einem Speicher fester Größe, der mit dem Entropie-Codierer verbunden ist, um die parallelen Ströme von codierten Daten zu speichern, wobei codierte Daten größerer Wichtigkeit gespeichert werden und codierte Daten geringerer Wichtigkeit weggeworfen werden, wenn der Speicher fester Größe voll ist.Coding system according to claim 8, wherein coded Data in one of the parallel streams based on a set Criteria. allocated with a fixed size memory, the connected to the entropy coder to the parallel streams of coded Store data storing coded data of greater importance and coded data of lesser importance are thrown away, when the memory is full size is. Codiersystem nach Anspruch 82, 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.The coding system of claim 82, wherein the memory has a number of storage areas, and coded data stored in stored in each of the number of memory areas encoded data having a different importance level. Codiersystem nach Anspruch 82, bei welchem der Speicher eine Anzahl Speicherbereiche aufweist, und bei welchem codierte Daten eines Wichtigkeitspegels in zumindest einem der Anzahl Speicherbereiche gespeichert sind, die codierte Daten eines anderen Wichtigkeitspegels speichern.The coding system of claim 82, wherein the memory has a number of memory areas, and in which coded Data of importance level is stored in at least one of the number of storage areas are that store coded data of another importance level. Codiersystem nach Anspruch 84, bei welchem die codierten Daten des einen Wichtigkeitspegels codierte Daten des anderen Wichtigkeitspegels in dem zumindest einen der Anzahl Speicherbereiche überschreiben.A coding system according to claim 84, wherein the coded ones Data of the one importance level coded data of the other importance level in which at least one of the number of memory areas overwrite. Verfahren zum Initialisieren einer Anzahl Kontexte in einem Verfahren zum Codieren nach einem der Patenansprüche 1 bis 7 oder in einem Codiersystem nach einem der Patentansprüche 8 bis 60, mit den folgenden Schritten: Spezifizieren eines Anfangs-PEM-Zustandes; Erhalten eines PEM-Zustandes eines gegenwärtigen Kontextes, wobei der Schrittdes Erhaltens, die Schritte aufweist:: Zugreifen auf eine Speicherstelle für den gegenwärtigen Kontext, um den gegenwärtig zugewiesenen PEM-Zustand zu erhalten; Bestimmen, ob die Speicherstelle gültig ist, indem eine gegenwärtige Kontextnummer für den gegenwärtigen Kontext mit einem Zählerwert verglichen wird, der intrementiert wird, wenn auf jeden Kontext zugegriffen wird, wobei der gegenwärtig zugeordnete PEM-Zustand als gültig festgelegt wird, wenn der Zählerwert anzeigt, dass die Speicherstelle bereits initialisiert worden ist; Verwenden des Anfangs-PEM-Zustandes für den gegenwärtigen Kontext und Ignorieren eines gegenwärtig zugeordneten PEM-Zustandes für den gegewärtigen Kontext, wenn PEM-Daten der zugegriffenen Speicherstelle nicht gültig sind, und Verwenden des gegenwärtig zugeordneten PEM-Zustandes für den gegenwärtigen Kontext, wenn die PEM-Daten gültig sind.Method for initializing a number of contexts in a method for coding according to one of the patent claims 1 to 7 or in a coding system according to one of the claims 8 to 60, with the following steps: Specifying an initial PEM state; Receive a PEM state of a current one Context, wherein the step of obtaining comprises the steps of: Access to a location for the current one Context to the present to receive assigned PEM state; Determine if the storage location valid is by a current one Context number for the current context with a counter value which is intremented when in any context is accessed, the currently assigned PEM state as valid is set when the counter value indicates that the memory location has already been initialized; Use of the initial PEM state for the current one Context and ignore a currently assigned PEM state for the gegewärtigen Context if PEM data of the accessed memory location is not valid, and Using the present assigned PEM state for the current one Context if the PEM data is valid are. Verfahren nach Anspruch 86, welches ferner den Schritt aufweist: Schreiben eines neuen PEM-Zustandes, wenn sich der PEM-Zustand geändert hat.The method of claim 86, further comprising the step having: Writing a new PEM state when the Changed PEM state Has. Decodierer mit einem Kontextmodell, um Kontextfächer bzw. Kontextbins zu schaffen; einem Speicher, der mit dem Kontextmodell verbunden ist, um auf der Basis von den Kontextfächern bzw. Kontextbins Wahrscheinlichkeitszustände zu schaffen; eine mit dem Speicher verbundene Logik, um Wahrscheinlichkeitsklassen auf der Basis der Wahrscheinlichkeitszustände zu erzeugen; einem Decodierer, der mit der Logik verbunden ist, um eine Anzahl von Freigabesignalen auf der Basis der Wahrscheinlichkeitsklassen zu erzeugen; einer Anzahl Bitgeneratoren, die mit dem Decodierer verbunden sind und vorgesehen sind, um die codierten Daten aufzunehmen, wobei jeder der Anzahl Bitgeneratoren für zumindest einen verschiedenen bzw. eigenen Code bestimmt ist und in Antwort auf ein verschiedenes bzw. eigenes der Anzahl von Freigabesignalen arbeitet, wobei der Decodierer einen der Anzahl Bitgeneratoren auf der Basis einer gegenwärtigen Wahrscheinlichkeitsklasse freigibt, um zu verursachen, dass einer der Anzahl Bitstromgeneratoren die codierten Daten decodiert, die der gegenwärtigen Wahrscheinlichkeitsklasse zugeordnet sind.Decoder with a context model, to use context boxes or Create context bins; a memory associated with the contextual model is connected to create probability states based on the context bins; a logic associated with memory, to probability classes to generate on the basis of the probability states; one Decoder connected to the logic to generate a number of Release signals based on the probability classes produce; a number of bit generators connected to the decoder are connected and are provided to receive the encoded data, wherein each of the number of bit generators is for at least one different one or own code is determined and in response to a different or own the number of enable signals works, the Decoder one of the number of bit generators based on a current probability class releases to cause one of the number of bitstream generators the encoded data decodes that of the current probability class assigned. Decodierer nach Anspruch 88, 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.A decoder according to claim 88, wherein at least one of the number of bit generators decodes data using an R code, and at least one of the plurality of bit generators, data having a non-R code decoded. Decodierer nach Anspruch 88, bei welchem wenigstens einer der Anzahl Bitgeneratoren kurze Lauflängen handhabt und als R-Code-Decodierer arbeitet.A decoder according to claim 88, wherein at least one of the number of bit generators handles short runlengths and as an R-code decoder is working. Decodierer nach Anspruch 88, bei welchem wenigstens einer der Anzahl Bitgeneratoren lange Lauflängen handhabt und eine kurze Laufeinheit und eine lange Laufeinheit aufweist, wobei die kurze Laufeinheit Codes einer ersten vorherbestimmten Länge behandelt und die lange Laufeinheit irgendwelche restlichen Bits behandelt und bestimmt, welche, wenn überhaupt, von den restlichen Bits auszugeben sind.A decoder according to claim 88, wherein at least one of the number of bit generators handles long runlengths and a short one Running unit and a long running unit, wherein the short Run unit codes of a first predetermined length treated and the long run unit handles any remaining bits and determines which, if any, are to be output from the remaining bits. Verfahren zum Decodieren von parallel-entropiecodiert-umgeordnete Daten, welches die Schritte aufweist: Vorsehen eines Kontextfaches; Vorsehen einer Anzahl von Bitgeneratoren; Zugreifen auf einen Speicher mit Hilfe des Kontextfaches, um einen Wahrscheinlichkeitszustand zu erhalten; Erzeugen einer Wahrscheinlichkeitsklasse auf der Basis des Wahrscheinlichkeitszustandes; Freigeben eines bestimmten Bitgenerators der Anzahl Bitgeneratoren abhängig von den ermittelten Wahrscheinlichkeitsklassen, wobei jede der Anzahl Bitgeneratoren für zumindest einen verschiedenartig Code bestimmt wird, so dass nur der eine verschiedenartige Code zum Decodieren verwendet wird, und der eine der Anzahl Bitgeneratoren decodiert die codierten Daten.Method for decoding parallel entropy-coded-reordered Data comprising the steps: Providing a context tray; Provide a number of bit generators; Accessing a memory with the help of the context box, a probability state to obtain; Generating a probability class on the Base of the probability state; Releasing a specific one Bit generator of the number of bit generators depending on the determined probability classes, wherein each of the number of bit generators is different for at least one Code is determined so that only the one different code is used for decoding, and one of the number of bit generators decodes the encoded data. Codiersystem nach einem der Patentansprüche 8 bis 60, mit: einem Kontextmodell, um Kontextfächer vorzusehen; einem mit dem Kontextmodell verbundenen Speicher, um Wahrscheinlichkeitszustände auf der Basis der Kontextfächer zu schaffen; einer mit dem Speicher verbundenen Logik, um Wahrscheinlichkeitsklassen auf der Basis des Wahrscheinlichkeitszustände zu erzeugen; und einem mit der Logik verbundenen Codierer, um eine Anzahl Freigabesignale auf der Basis der Wahrscheinlichkeitsklasse zu erzeugen; einer Anzahl Bitgeneratoren, die mit dem Codierer verbunden sind, um die Eingangsdaten aufzunehmen, wobei jeder der Anzahl Bitgeneratoren zumindest für einen verschiedenartigen Code bestimmt ist, wobei der Codierer einen der Anzahl Bitgeneratoren auf der Basis einer gegenwärtigen Wahrscheinlichkeitsklasse freigibt, so dass der eine der Anzahl Bitstromgeneratoren Eingangsdaten codiert, die der gegenwärtigen Wahrscheinlichkeitsklasse zugeordnet sind.Coding system according to one of the claims 8 to 60, with: a context model to provide context fans; one memory associated with the context model to probability states the base of the context fans to accomplish; a logic associated with memory, to probability classes to generate on the basis of the probability states; and one encoder coupled to the logic to provide a number of enable signals to generate on the basis of the probability class; one Number of bit generators connected to the encoder to the Input data, each of the number of bit generators at least for a different code is determined, the encoder a the number of bit generators based on a current probability class releases so that the one of the number of bitstream generators input data encoded, the current one Probability class are assigned. Codierer nach Anspruch 93, bei welchem zumindest einer der Anzahl Bitgeneratoren Daten mit einem R-Code codiert und zumindest einer der Anzahl Bitgeneratoren Daten mit Hilfe eines Nicht-R-Codes codiert.An encoder according to claim 93, wherein at least one of the number of bit generators encodes data with an R code and at least one of the number of bit generators data using a Non-R codes coded. Codierer nach Anspruch 93, bei welchem wenigstens einer der Anzahl Bitgeneratoren kurze Lauflängen handhabt und als ein R-Code-Codierer arbeitet.An encoder according to claim 93, wherein at least one of the number of bit generators handles short runlengths and as an R-code encoder is working. Codierer nach Anspruch 93, bei welchem wenigstens einer der Anzahl Bitgeneratoren lange Lauflängen handhabt und eine kurze Laufeinheit und eine lange Laufeinheit aufweist, wobei die kurze Laufeinheit Codes einer ersten vorherbestimmten Länge behandelt und die lange Laufeinheit irgendwelche restlichen Bits behandelt und bestimmt, welche, wenn überhaupt, von den restlichen Bits auszugeben sind.An encoder according to claim 93, wherein at least one of the number of bit generators handles long runlengths and a short one Running unit and a long running unit, wherein the short Run unit codes of a first predetermined length treated and the long run unit handles any remaining bits and determines which, if any, are to be output from the remaining bits. Verfahren zum Codieren eines Datenstroms nach einem der Patentansprüche 1 bis 7, 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 eines einer Anzahl Bitgeneratoren, die für zumindest einen verschiedenen bzw. eigenen Code bestimmt ist, so dass nur der eine verschiedene bzw. eigene Code zum Codieren verwendet wird; und der eine der Anzahl Bitgeneratoren die Eingangsdaten codiert.Method for coding a data stream after a of the claims 1 to 7, which has the steps: Providing a context tray; Access to a memory using the context box, to a probability state to obtain; Generating a probability class on the Base of the probability state; Releasing a one Number of bit generators used for at least one different or own code is determined, so that only one uses its own code for coding becomes; and one of the number of bit generators is the input data coded. Verfahren nach Anspruch 92 zum Decodieren entropiecodierter Daten, welches die weiteren Schritte aufweist: Vorsehen eines Durchlaufzählers zur Entropie-Decodierung; Laden eines Zählwerts in einen Zähler, der jedem Durchlaufzähler zugeordnet ist, wobei der Zählwert der Größe eines verwendeten 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 abgerufen wird; Dekrementieren des Zählwerts, jedesmal wenn ein Codewort abgerufen wird, und Löschen eines Bitgeneratorzustands, der dem neuen Codewort zugeordnet ist, wenn der Zähler auf Null dekrementiert.The method of claim 92 entropy coded for decoding Data comprising the further steps: Provide a Run counter for entropy decoding; Loading a count into a counter that every run counter is assigned, wherein the count value the size of one used codeword memory during coding corresponds when a new pass is started, where the count is loaded when a new code word is retrieved for each pass counter; decrement the count, every time a codeword is called, and Delete one Bit generator state associated with the new codeword when the counter decremented to zero. Verfahren nach Anspruch 98, wobei jeder Durchlaufzähler einem PEM-Zustand zugeordnet ist.The method of claim 98, wherein each pass counter is one Assigned PEM state is. Verfahren nach Anspruch 98, bei welchem jeder Durchlaufzähler einem Kontextfach zugeordnet ist.The method of claim 98, wherein each pass counter is one Context box is assigned. Verfahren nach Anspruch 92 zum Decodieren entropiecodierter Daten, welches die weiteren Schritte aufweist: Vorsehen eines Zählers; Inkrementieren des Zählerwerts jedesmal, wenn ein Codewort angefordert wird, wobei der Zählerwert eine gegenwärtige Zeitanzeige aufweist; Speichern des Zählerwerts als eine gespeicherte Zeitanzeige, wenn ein erstes Codewort gestartet wird; Vergleichen der gespeicherten Zeitanzeige plus der Größe eines Codiererspeichers mit der gegenwärtigen Zeitanzeige; und Löschen eines Bitgeneratorzustandes für das erste Codewort und Anfordern eines neuen Codewortes, wenn die gegenwärtige Zeitanzeige größer ist als die gespeicherte Zeitanzeige plus der Größe des Codiererspeichers.The method of claim 92 entropy coded for decoding Data comprising the further steps: Provide a counter; incrementing of the counter value each time a codeword is requested, where the counter value a present one Has time display; Storing the counter value as a stored one Time display when a first code word is started; to compare the stored time display plus the size of an encoder memory with the current time display; and Clear a bit generator state for the first codeword and requesting a new codeword when the current Time display is larger as the stored time indication plus the size of the encoder memory. Verfahren nach Anspruch 101, bei welchem die gespeicherte Zeitanzeige eine Zeitmarke aufweist.The method of claim 101, wherein the stored Time display has a timestamp. Verfahren nach Anspruch 101, bei welchem die gespeicherte Zeitanzeige für ein anschließendes Codewort wieder verwendet wird.The method of claim 101, wherein the stored Time display for a subsequent one Codeword is used again. Verfahren nach Anspruch 92 zum Decodieren entropiecodierter Daten, welches die weiteren Schritte aufweist: Speichern eines Index, der einem Codewort entspricht, wobei der Index in einer Schlange gespeichert 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 Eintrags als gültig, wenn das Codewort vollständig ist; und Ausgeben von Daten aus der Schlange, was folgende Schritte aufweist: Ausgeben von Daten aus dem Schlangeneintrag und Anzeigen, dass die Daten an den Decodierer ungültig sind, wenn der Schlangeneintrag als ungültig markiert ist und das Codewort vorzeitig vollendet ist, wobei der Decodierer Bitgeneratorzustandsinformation löscht, und zwar in Antwort darauf, dass er Daten aus der Schlange empfängt, die als ungültig markiert sind.The method of claim 92 entropy coded for decoding Data comprising the further steps: Save a Index corresponding to a codeword, where the index is in a queue is stored when the codeword is requested; To mark the entry of the index in the queue is invalid; Save the code word in the entry and marking the entry as valid when the codeword is complete; and Output data from the queue, following these steps having: Outputting data from the queue entry and displaying, that the data to the decoder is invalid when the queue entry as invalid is marked and the codeword is prematurely completed, the decoder Deletes bit generator state information, in response thereto, that it receives data from the queue that marks invalid are. Decodierer zum Decodieren codierter Daten, welcher Decodierer aufweist: einen Kontextmodelliermechanismus zum Vorsehen von Kontexten, wobei der Kontextmodelliermechanismus eine Anzahl integrierter Schaltungen aufweist; einen mit dem Kontextmodelliermechanismus verbundenen Speicher, um Zustandsinformation zu speichern, wobei der Speicher Zustandsinformation entsprechend jedem Kontext schafft, der von dem Kontextmodelliermechanismus 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 decodiert, wobei die Anzahl R-Codes betreibbar sind, um zumindest einen Nicht-Maximum-Längendurchlauf von wahrscheinlichsten Symbolen zu codieren, auf welchem ein am wenigsten wahrscheinliches Symbol nicht folgt.A decoder for decoding coded data, comprising: a context modeling mechanism for providing contexts, the context modeling mechanism having a number of integrated circuits; a memory coupled to the context modeling mechanism for storing state information, wherein the memory provides state information corresponding to each context provided by the context modeling mechanism and a number of decoders connected to the memory for supplying code words from the memory using the state information wherein the number of decoders decodes codewords using a number of R-codes, the number of R-codes being operable to encode at least one non-maximum round-trip of most probable symbols on which a least likely symbol does not follow. Decodierer nach Anspruch 105, bei welchem Durchlaufzählwerte nicht maximaler Länge ein eindeutig decodierbares Präfix bzw. einen eindeutig decodierbaren Vorsatz haben.A decoder according to claim 105, wherein pass counts not maximum length a uniquely decodable prefix or have a clearly decodable intent. Codiersystem nach Anspruch 17, bei welchem ein Bitgeneratorzustand des Bitgenerators aktualisiert wird, nachdem eine Biterzeugung durchgeführt wurde, und bei welchem ferner der Bitgenerator vor der Vollendung der Aktualisierung des Biterzeugungszustandes wieder verwendet wird, der auf den Speicher geschrieben wird.A coding system according to claim 17, wherein a Bit generator state of the bit generator is updated after carried out a biter production and in which also the bit generator before completion reusing the updating of the bit generation state, which is written to the memory. Codiersystem nach Anspruch 107, bei welchem der Bitgenerator während der Modifizierstufe eines Lese-Modifizier-Schreib-Zyklus wieder verwendet wird.A coding system according to claim 107, wherein the Bit generator during the modifier stage of a read-modify-write cycle is used. Codiersystem nach Anspruch 8 bis 16, bei welchem der Bitgenerator einen Durchlaufzählwert nicht-minimaler Länge erzeugt, wenn er vor dem Schreiben eines aktualisierten Zustands auf den Speicher wieder verwendet wird.A coding system according to claims 8 to 16, wherein the bit generator generates a pass count of non-minimal length, if he has to write an updated state on the Memory is reused. Codiersystem nach Anspruch 16, bei welchem der Bitgenerator Daten mit Hilfe von R-Codes codiert, die so definiert sind, dass auf jede Lauflänge zumindest ein uncodiertes Bit folgt, wodurch verhindert wird, dass zwei Codewörter derselben Lauflänge hintereinander decodiert werden.A coding system according to claim 16, wherein the Bit generator encodes data using R codes defined as such are that on any run length at least one uncoded bit follows, thereby preventing two codewords same run length be decoded one after the other. Decodiersystem nach Anspruch 75, mit einem Kontextmodelliermechanismus zum Vorsehen von Kontexten; einem mit dem Kontextmodelliermechanismus verbundenen Speicher zum Speichern von Zustandsinformation, wobei der Speicher Zustandsinformation entsprechend jedem von dem Kontextmodelliermechanismus vorgesehenen Kontext schafft, und einer Anzahl mit dem Speicher verbundener Decodierer zum Decodieren von Codewörtern mit Hilfe der Zustandsinformation aus dem Speicher, wobei zumindest einer der Anzahl Decodierer einen verzögerungstoleranten Decodierer aufweist.A decoding system according to claim 75, including one Context modeling mechanism for providing contexts; one memory associated with the context modeling mechanism for storage state information, wherein the memory is state information corresponding to each of the context modeling mechanism Context creates, and a number connected to the memory Decoder for decoding codewords by means of the state information from the memory, wherein at least one of the number of decoders has a delay-tolerant Decoder has. System nach Anspruch 111, 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.The system of claim 111, wherein at least one of the number of decoders has a variable-length shift performs the basis of decoded data available after a delay. System nach Anspruch 111, bei welchem jede der Anzahl Decodierer Daten variabler Länge empfängt.The system of claim 111, wherein each of the Number of decoders receives variable length data. System nach Anspruch 113, bei welchem die Anzahl Decodierer Eingangsdaten variabler Länge parallel decodieren.The system of claim 113, wherein the number Decoder decode parallel-input variable-length data. System nach Anspruch 111, bei welchem ein Ausgangssignal der Anzahl Decodierer in verschachtelte Wörter fester Länge aufgeteilt wird.The system of claim 111, wherein an output signal the number of decoders is divided into nested fixed length words becomes.
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 DE19536401A1 (en) 1996-04-04
DE19536401B4 true 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)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2311704B (en) * 1995-08-31 1998-04-15 Ricoh Kk Method and apparatus for compressing arbitrary data
US5654703A (en) * 1996-06-17 1997-08-05 Hewlett-Packard Company Parallel data compression and decompression
US5963716A (en) * 1996-12-02 1999-10-05 Hewlett-Packard Company Bi-directional data stream decompression
US6222468B1 (en) * 1998-06-04 2001-04-24 Ricoh Company, Ltd. Adaptive coding with adaptive speed
CN1301014C (en) 2001-11-22 2007-02-14 松下电器产业株式会社 Variable length coding method and variable length decoding method
ATE456901T1 (en) * 2002-04-08 2010-02-15 Eighting Kk NETWORK GAMING METHOD, NETWORK GAMING DEVICE AND SERVER
US7555540B2 (en) * 2003-06-25 2009-06-30 Microsoft Corporation Media foundation media processor
US7395490B2 (en) * 2004-07-21 2008-07-01 Qualcomm Incorporated LDPC decoding methods and apparatus
US7346832B2 (en) * 2004-07-21 2008-03-18 Qualcomm Incorporated LDPC encoding methods and apparatus
US7788106B2 (en) 2005-04-13 2010-08-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Entropy coding with compact codebooks
US7991610B2 (en) 2005-04-13 2011-08-02 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Adaptive grouping of parameters for enhanced coding efficiency
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
ES2450265T3 (en) 2006-11-14 2014-03-24 Nippon Telegraph & Telephone Corporation Encoding method and image signal decoding method, encoding method and information source decoding method, devices for them, their programs, and memory medium with registered program
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
PL2297856T3 (en) * 2008-07-11 2023-05-08 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. 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
EP2437500A4 (en) * 2009-05-29 2013-04-17 Mitsubishi Electric Corp 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
JP5676744B2 (en) 2010-04-13 2015-02-25 フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン Entropy coding
WO2012006738A1 (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
US8913666B2 (en) * 2010-10-01 2014-12-16 Qualcomm Incorporated Entropy coding 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
KR101955142B1 (en) 2011-01-14 2019-03-06 지이 비디오 컴프레션, 엘엘씨 Entropy encoding and decoding scheme
US8995523B2 (en) * 2011-06-03 2015-03-31 Qualcomm Incorporated Memory efficient context modeling
WO2013050612A1 (en) * 2011-10-06 2013-04-11 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
JP2019515592A (en) * 2016-05-10 2019-06-06 華為技術有限公司Huawei Technologies Co.,Ltd. Data transmission method, data reception method, transmission device, and reception device
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
US11184021B2 (en) 2019-03-15 2021-11-23 Samsung Electronics Co., Ltd. Using predicates in conditional transcoder for column store
TWI825305B (en) * 2019-04-16 2023-12-11 南韓商三星電子股份有限公司 Transcoder and method and article for transcoding
CN110635807B (en) * 2019-08-05 2022-10-21 湖南遥昇通信技术有限公司 Data coding method and decoding method
CN112383313B (en) * 2020-10-10 2023-08-04 中科驭数(北京)科技有限公司 Parallel data decoding device and method

Citations (3)

* 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
US5045852A (en) * 1990-03-30 1991-09-03 International Business Machines Corporation Dynamic model selection during data compression
US5272478A (en) * 1992-08-17 1993-12-21 Ricoh Corporation Method and apparatus for entropy coding

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1291821C (en) * 1986-09-15 1991-11-05 Glen G. Langdon, Jr. Arithmetic coding encoder and decoder system
CA1291820C (en) * 1986-09-15 1991-11-05 William B. Pennebaker Probability estimation based on decision history
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
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 (3)

* 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
US5045852A (en) * 1990-03-30 1991-09-03 International Business Machines Corporation Dynamic model selection during data compression
US5272478A (en) * 1992-08-17 1993-12-21 Ricoh Corporation Method and apparatus for entropy coding

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
GORMISCH, M.J., ALLEN, J.D.: Finite State Machine Binary Entropy Coding. In: Proc. Data Compression Conference, 30. March 1993, Snowbird, UT, USA, S. 449 *
LANGDON, G.G.: An Adaptive Run-Length Coding Algorithm. In: IBM Technical Disclosure Bulletin, Vol. 26, Nr. 7B, Dez. 1983 *

Also Published As

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

Similar Documents

Publication Publication Date Title
DE19536401B4 (en) Method and device for coding and decoding data
DE4446072A1 (en) Method and device for parallel coding and decoding of data
DE19635251C2 (en) Method and apparatus for compressing any data
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
DE112006002148B4 (en) Exchange buffer for video processing
EP2068448B1 (en) Method and arrangement for arithmetic encoding and decoding with application of several tables
DE4314741A1 (en) Huffman decoder architecture for higher operating speed and reduced memory requirements
DE10301362A1 (en) Block data compression system, consisting of a compression device and a decompression device, and method for fast block data compression with multi-byte search
EP2109993B1 (en) Device and method for encoding a block of transformation coefficients
DE2801611A1 (en) PROCEDURE AND ARRANGEMENT FOR ADDRESSING AND STORING DATA IN MEMORIES WITH OPTIONAL ACCESS
DE19534730A1 (en) Entropy encoder for facsimile transmission
DE4429017A1 (en) Method for coding data in a data compression system, compression/decompression method and decompression system for decompressing compressed data
DE102007020292A1 (en) Method for compressing data using run-length coding, in particular for medical image data
DE19958962A1 (en) Video coder for variable length code, has code generator delivering code information and code length information to bit packer, via buffers
DE69535392T2 (en) Apparatus for decoding variable length codes using relative addressing
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
CN112290953B (en) Array encoding device and method, array decoding device and method for multi-channel data stream
DE69826971T2 (en) TRANSMISSION SYSTEM WITH COORDERS OF VARIABLE LENGTH
DE69937761T2 (en) Arithmetic coding / decoding of a digital information signal
DE19738917A1 (en) Bidirectional scanning system for video coefficients
EP3424200A1 (en) Identification coding device and identification coding device for data distribution in networks, and network elements comprising such devices
DE112012004727B4 (en) Unpack a variable number of data bits
DE19860652A1 (en) Video decoder for high picture quality

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