[go: up one dir, main page]

DE19900150B4 - Apparatus and method for encoding information with a finite state machine - Google Patents

Apparatus and method for encoding information with a finite state machine Download PDF

Info

Publication number
DE19900150B4
DE19900150B4 DE19900150A DE19900150A DE19900150B4 DE 19900150 B4 DE19900150 B4 DE 19900150B4 DE 19900150 A DE19900150 A DE 19900150A DE 19900150 A DE19900150 A DE 19900150A DE 19900150 B4 DE19900150 B4 DE 19900150B4
Authority
DE
Germany
Prior art keywords
state
bit
unit
probability
mps
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
DE19900150A
Other languages
German (de)
Other versions
DE19900150A1 (en
Inventor
Edward L. Menlo Park Schwartz
Michael J. Menlo Park Gormish
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 DE19900150A1 publication Critical patent/DE19900150A1/en
Application granted granted Critical
Publication of DE19900150B4 publication Critical patent/DE19900150B4/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • 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

Landscapes

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

Abstract

Verfahren zum Kodieren von Eingangsbits, das die folgenden Schritte umfaßt:
ein Intervall wird erzeugt, das auf einem Finalautomaten-(FSM)-Zustand basiert, wobei das Intervall ein Paar von Unterintervallen umfaßt, die Endpunkte aufweisen, wobei jeder Endpunkt durch einen Binärwert dargestellt wird;
ein Unterintervall aus einem Unterintervallpaar wird basierend darauf ausgewählt, ob sich das Eingangsbit in seinem höchstwahrscheinlichen Zustand befindet;
null oder mehr Bits werden ausgegeben, die jenen Bits entsprechen, die, wenn die Binärwerte der Endpunkte des ausgewählten Unterintervalls des Paares mit den Binärwerten der Endpunkte des anderen Unterintervalls des Paares verglichen werden, hinsichtlich ihres Wertes und ihrer Bitsignifikanz übereinstimmen und die mit dem höchstwertigen Bit beginnen und zu dem ersten nicht-übereinstimmenden Bit in einer hinsichtlich der Bitsignifikanz absteigenden Reihenfolge laufen, aber die nicht das erste nicht-übereinstimmende Bit umfassen.
Method for coding input bits, comprising the following steps:
an interval is generated based on a Finisher (FSM) state, the interval including a pair of subintervals having endpoints, each endpoint represented by a binary value;
a subinterval from a subinterval pair is selected based on whether the input bit is in its most likely state;
zero or more bits are output corresponding to those bits which, when the binary values of the endpoints of the selected subinterval of the pair are compared with the binary values of the endpoints of the other subinterval of the pair, match in their value and their bit significance and those with the most significant bit begin and go to the first mismatched bit in an order decreasing in bit significance, but not including the first mismatched bit.

Figure 00000001
Figure 00000001

Description

Die vorliegende Erfindung betrifft das Gebiet des Datenkodierens und des Datendekodierens; insbesondere betrifft die vorliegenden Erfindung Datenkodieren und Datendekodieren mit einem Kodierer mit einem finiten bzw. endlichen Automaten bzw. mit einem "Finit State Machine"-Kodierer.The The present invention relates to the field of data coding and of data decoding; In particular, the present invention relates Data coding and data decoding with an encoder with a finite or finite state machine or with a "finite state machine" encoder.

Die Datenkompression ist ein sehr nützliches Werkzeug zum Speichern und Übertragen großer Datenmengen. Zum Beispiel wird die Zeit, die zur Übertragung eines Bildes erforderlich ist, wie z.B. einer Faxübertragung eines Dokuments, drastisch reduziert, wenn eine Kompression verwendet wird, um die Anzahl der Bits zu reduzieren, die zum neuen Erzeugen des Bildes erforderlich sind.The Data compression is a very useful Tool for saving and transferring greater Amounts of data. For example, the time to transfer an image is required, such as a fax transmission of a document, drastically reduced when using compression is used to reduce the number of bits needed to rebuild of the image are required.

Bei manchen Kompressionssystemen wird eine Eingabedatei oder ein Datensatz in eine Abfolge von Entscheidungen übersetzt, und zwar unter der Maßgabe eines Entscheidungsmodells. Jede Entscheidung hat eine zugeordnete Wahrscheinlichkeit und, basierend auf dieser Wahrscheinlichkeit, wird ein Ausgabekode erzeugt und an die komprimierte Datei angehängt. Um dieses Kodiersystem zu realisieren, weisen Kompressionssysteme drei Teile auf: ein Entscheidungsmodell, ein Wahrscheinlichkeitsschätzverfahren und einen Bitstromgenerator. Das Entscheidungsmodell empfängt die Ein gangsdaten und übersetzt die Daten in einen Satz von Entscheidungen, den das Kompressionssystem nutzt, um die Daten zu kodieren. Das Entscheidungsmodell wird typischerweise als ein Kontextmodell bezeichnet. Das Wahrscheinlichkeitsschätzverfahren stellt ein Verfahren dar, um die Wahrscheinlichkeitsschätzung für die Wahrscheinlichkeit einer jeden Entscheidung zu entwickeln. Der Bitstromgenerator führt das abschließende Bitstromkodieren durch, um den Ausgabecode zu erzeugen, der den komprimierten Datensatz oder die komprimierte Datei darstellt. Eine Kompression kann wirksam in dem Entscheidungsmodell und/oder dem Bitgenerator stattfinden.at Some compression systems use an input file or record translated into a sequence of decisions, under the proviso a decision model. Each decision has an associated one Probability and, based on this probability, An output code is generated and attached to the compressed file. Around To realize this coding system, compression systems have three Parts: a decision model, a probability estimation method and a bitstream generator. The decision model receives the An initial data and translated the data into a set of decisions made by the compression system uses to encode the data. The decision model becomes typical referred to as a context model. The probability estimation method represents a method to obtain the probability estimate for the probability to develop each decision. The bitstream generator carries this final Bitstream encode to generate the output code that contains the represents a compressed data set or the compressed file. A Compression can be effective in the decision model and / or the Bit generator take place.

Ein binärer Kodierer stellt einen Typ eines Kodiersystems dar, das Daten als eine Sequenz von binären Entscheidungen kodiert.One binary Encoder represents a type of coding system that uses data as a sequence of binary decisions coded.

Kodierer mit finiten Automaten sind binäre Entropiekodierer, die in der Fachwelt gut bekannt sind. Ein Kodierer mit einem finiten Automaten (im folgenden "FSM-Kodierer" genannt) ist ein verlustfreier binärer Multikontext-Entropiekodierer. Finite Automaten werden sowohl zur Biterzeugung (Erzeugung von durch Bitströmen sich ergebenden Bits mit bekannten oder angenommenen Wahrscheinlichkeiten) als auch zur Wahrscheinlichkeitsschätzung (Schätzen von Wahrscheinlichkeiten basierend auf vergangenen Daten von demselben Kontext) verwendet. Während des Kodierens nimmt der FSM-Kodierer eine Reihe von Bits mit zugeordneten Kontexten und erzeugt einen kodierten Bitstrom, der jene Bits darstellt, und zwar mit so wenig Daten wie möglich. Während des Dekodierens nimmt der FSM-Kodierer den kodierten Bitstrom und die Sequenz von Kontexten und erzeugt die Originalsequenz von Bits. Ein Beispiel hierfür ist im US-Patent Nr. 5,272,478 A beschrieben, das den Titel trägt "Method and Apparatus for Entropy Encoding", und das am 21. Dezember 1993 herausgegeben wurde. Es wird ebenso auf das US-Patent Nr. 5,475,388 A verwiesen, das den Titel trägt "Method and Apparatus for Using Finite State Machines to Perform Channel Modulation and Error Correction and Entropy Coding", das am 12. Dezember 1995 herausgegeben wurde.encoder with finite automata are binary Entropy encoders that are well known in the art. An encoder with a finite state machine (hereinafter called "FSM encoder") is a lossless binary multicontext entropy coder. Finite automata are used both for biter production (production of bitstreams resulting bits with known or assumed probabilities) as well as the probability estimate (estimation of probabilities based on past data from the same context). While of coding, the FSM encoder takes a number of bits with associated ones Contexts and generates a coded bitstream representing those bits and with as little data as possible. During decoding takes the FSM encoder the encoded bitstream and the sequence of contexts and generates the original sequence of bits. An example of this is in U.S. Patent No. 5,272,478 A, entitled "Method and Apparatus for Entropy Encoding ", and that was issued on 21 December 1993. It will as well See U.S. Patent No. 5,475,388 A, entitled "Method and Apparatus for Using Finite State Machines to Perform Channel Modulation and Error Correction and Entropy Coding ", published on December 12, 1995 has been.

Binäre Entropiekodierer können als der verlustfreie Kodierabschnitt von Bildkompressionssystemen verwendet werden. Sie ermöglichen die bestmögliche Kompression, indem erlaubt wird, daß Symbole mit einer Wahrscheinlichkeit größer als 50% kodiert werden, und indem das Ändern von Kontexten (Ändern von Wahrscheinlichkeitsschätzungen) erlaubt wird, und zwar unabhängig für jedes zu komprimierende Datenbit. Andere binäre Entropiekodierer sind der IBM-Q-Kodierer, der IBM/Mitsubishi-QM-Kodierer und der ABS-Kodierer, die in dem US-Patent Nr. 5,381,145 A beschrieben sind, das den Titel trägt "Method and Apparatus for Parallel Encoding and Decoding of Data" und das am 10. Januar 1995 herausgegeben wurde, und in dem US-Patent Nr. 5,583,500 A beschrieben sind, das den Titel trägt "Method and Apparatus for Parallel Encoding and Decoding of Data" und das am 10. Januar 1996 herausgegeben wurde.Binary entropy coders can is used as the lossless coding section of image compression systems become. they allow the best possible Compression by allowing symbols with a probability greater than 50%, and by changing contexts (changing Probability estimates) is allowed, independently for each data bits to be compressed. Other binary entropy coders are the IBM Q Encoder, the IBM / Mitsubishi QM Encoder, and the ABS Encoder in U.S. Patent No. 5,381,145 A entitled "Method and Apparatus for Parallel Encoding and Decoding of Data "and published on 10 January 1995 and U.S. Patent No. 5,583,500 A are described in U.S. Patent No. 5,583,500 the title is "Method and Apparatus for Parallel Encoding and Decoding of Data "and published on 10 January 1996 has been.

Der FSM-Kodierer ist relativ schnell und einfach hinsichtlich der Software zu realisieren. Der FSM-Kodierer wird gegenwärtig bei Bildkompressionssystemen verwendet, die auf reversiblen Wavelets basieren und die der Anmelder der vorliegenden Erfindung zur Standardisierung bzw. für eine Norm vorgeschlagen hat.Of the FSM encoder is relatively fast and easy in terms of software to realize. The FSM encoder is currently being used in image compression systems which are based on reversible wavelets and that of the applicant the present invention for standardization or for a standard has proposed.

Es wird eine FSM-Kodierer-Hardware beschrieben. Bei einer Ausführungsform stellt die vorliegende Erfindung ein Verfahren zum Kodieren bereit, das die Erzeugung eines Intervalls enthält, das auf einen FSM-Zustand bzw. einen Zustand eines finiten Automaten basiert (im folgenden wird "finiter Automat" auch durch "FSM" abgekürzt). Das Intervall umfaßt ein Paar von Unterintervallen, die Endpunkte aufweisen. Das Verfahren beinhaltet ebenso die Auswahl eines Paar von Unterintervallpaaren, und zwar basierend darauf, ob das Eingangsbit sich in einem höchstwahrscheinlichen Zustand befindet, und beinhaltet weiterhin die Ausgabe von 0 oder mehr Bits, die Bits entsprechen, die zwischen Endpunkten des genannten einen Unterintervalls übereinstimmen, die von den höchstsignifikanten Bits bis zu den ersten nicht übereinstimmenden Bits zwischen den Endpunkten des genannten einen Unterintervalles, aber nicht bis einschließlich des ersten nicht übereinstimmenden Bits auftreten.An FSM encoder hardware is described. In one embodiment, the present invention provides a method of encoding that includes generating an interval based on a finite state machine (FSM) state (hereinafter "finite state machine") abbreviated by "FSM"). The interval includes a pair of subintervals having endpoints. The method also includes selecting a pair of subinterval pairs based on whether the input bit is in a most probable state, and further including outputting 0 or more bits corresponding to bits that match between endpoints of said one subinterval, which occur from the most significant bits to the first disagreeing bits between the endpoints of said one subinterval, but not up to and including the first disagreeing bit.

Die vorliegende Erfindung wird im Zusammenhang mit den beigefügten Zeichnungen beschrieben. Dabei werden verschiedene Ausführungsformen offenbart. Verschiedene Merkmale unterschiedlicher Ausführungsformen können miteinander kombiniert werden.The The present invention will become more apparent when taken in conjunction with the accompanying drawings described. In this case, various embodiments are disclosed. Various Features of different embodiments can be combined with each other.

1A ist ein Blockdiagramm einer Ausführungsform eines Kompressions-/Dekompressionssystems. 1A Figure 10 is a block diagram of one embodiment of a compression / decompression system.

1B zeigt eine alternative Ausführungsform eines Systems, das auf einem FSM-Kodierer basiert. 1B shows an alternative embodiment of a system based on a FSM encoder.

2 ist ein Blockdiagramm einer Ausführungsform eines FSM-Kodierers/-Dekodierers, der eine kombinierte FSM-Kodier-/-Dekodiertabelle aufweist, die eine separate Wahrscheinlichkeitsschätzung und Biterzeugungs-Nachschlagetabellen aufweist (eine Nachschlagetabelle wird im folgenden als "LUT" abgekürzt). 2 Fig. 12 is a block diagram of one embodiment of a FSM encoder / decoder having a combined FSM encoding / decoding table having a separate probability estimate and bitmap lookup tables (a look-up table is hereinafter abbreviated to "LUT").

3 ist ein Blockdiagramm einer Ausführungsform eines FSM-Kodierers/-Dekodierers mit einer einzigen LUT, der sowohl eine Wahrscheinlichkeitsschätzung als auch eine Biterzeugung durchführt. 3 FIG. 12 is a block diagram of one embodiment of a single LUT FSM encoder / decoder that performs both likelihood estimation and bit generation.

4 ist ein Blockdiagramm einer Ausführungsform des FSM-Kodierers der vorliegenden Erfindung. 4 Fig. 10 is a block diagram of one embodiment of the FSM encoder of the present invention.

5 ist ein Blockdiagramm einer Ausführungsform der pem_code-Einheit ("pem" steht für "probability estimation machine", also für "Wahrscheinlichkeitsschätzmaschine"). 5 is a block diagram of one embodiment of the pem_code unit ("pem" stands for "probability estimation machine").

6 ist ein Blockdiagramm einer Ausführungsform der pem_expand-Einheit ("expand" steht für "Aufweitung"). 6 FIG. 12 is a block diagram of one embodiment of the pem_expand unit ("expand" stands for "widening").

7 ist ein Blockdiagramm einer Ausführungsform der bit_generate-Einheit ("generate" steht für "Erzeugen"). 7 is a block diagram of one embodiment of the bit_generate unit ("generate" means "generate").

8 ist ein Blockdiagramm einer Ausführungsform der Biterzeugungslogik. 8th Figure 4 is a block diagram of one embodiment of the bit generation logic.

9 ist ein Blockdiagramm einer Ausführungsform der Zustand-Aufweitungslogik. 9 Figure 4 is a block diagram of one embodiment of the state expansion logic.

10 zeigt eine beispielhafte Ausrichtung von Wavelet-Koeffizienten. 10 shows an exemplary alignment of wavelet coefficients.

11 ist ein Blockdiagramm einer Ausführungsform der Flush-Logik bzw. Räum-Logik zum Räumen in einem Zyklus. 11 Figure 10 is a block diagram of one embodiment of flushing logic for scavenging in one cycle.

12 zeigt ein Blockdiagramm einer Flush-Logik zum "Flushen" bzw. "Räumen" in einem Zyklus mit dem Kodewort, das durch das aktuelle Intervall bestimmt wird. 12 Figure 12 shows a block diagram of a flush logic for "flushing" in a cycle with the codeword determined by the current interval.

13 ist ein Blockdiagramm einer Ausführungsform der Kodewort-Erzeugungs-Einheit (cw_gen-Einheit) der Biterzeugungslogik des Kodierers der vorliegenden Erfindung. 13 Figure 10 is a block diagram of one embodiment of the codeword generation unit (cw_gen unit) of the bit generation logic of the encoder of the present invention.

14 ist ein Blockdiagramm einer Ausführungsform der Packeinheit des Entropiekodierers der vorliegenden Erfindung. 14 Fig. 12 is a block diagram of one embodiment of the packing unit of the entropy encoder of the present invention.

14A ist ein Blockdiagramm einer alternativen Ausführungsform der Packlogik. 14A Figure 12 is a block diagram of an alternative embodiment of the packing logic.

15 ist ein Blockdiagramm einer Ausführungsform der Entpackeinheit ("unpack"-Einheit). 15 Figure 10 is a block diagram of one embodiment of the unpack unit.

16 ist ein Steuer-FluBdiagramm zum Kodieren. 16 is a control flowchart for coding.

17 ist ein Steuer-Flußdiagramm zum Dekodieren. 17 is a control flowchart for decoding.

Ein Teil der Offenbarung dieses Patentdokuments enthält Material, das unter Urheberrechtsschutz steht. Der Inhaber des Urheberrechts hat keine Einwände gegen die Faksimilereproduktion des Patentdokuments oder der Patentveröffentlichung, so wie sie in der Datei oder der Aufzeichnung des Patent- und Markenamts vorhanden sind, behält sich aber ansonsten alle Urheberrechte vor.One Part of the disclosure of this patent document contains material that is under copyright protection. The copyright owner has no objection to facsimile reproduction of the patent document or the patent publication as disclosed in file or record of the Patent and Trademark Office are, keep but otherwise all copyright.

Es wird ein Apparat und ein Verfahren zum FSM-Kodieren beschrieben. Bei der folgenden Beschreibung werden zahlreiche Details, wie z.B. Signalnamen, Nummern der Bits usw. dargelegt. Es ist jedoch für einen Fachmann offensichtlich, daß die vorliegende Erfindung ohne dieses spezifischen Details praktiziert werden kann. In anderen Fällen werden gut bekannte Strukturen und Geräte in Blockdiagrammform gezeigt, anstatt im Detail, um eine Verschleierung der vorliegenden Erfindung zu vermeiden.It An apparatus and method for FSM coding is described. In the following description, numerous details, e.g. Signal names, numbers of bits, etc. set forth. It is, however, for one Professional obvious that the present invention practiced without this specific detail can be. In other cases well-known structures and devices are shown in block diagram form, rather than in detail, a concealment of the present invention to avoid.

Gewisse Teile der detaillierten Beschreibungen, die unten gegeben werden, werden durch Algorithmen und symbolische Darstellungen von Operationen mit Datenbits innerhalb eines Computerspeichers ausgedrückt. Diese algorithmischen Beschreibungen und Darstellungen stellen die Mittel dar, die von Fachleuten auf dem Gebiet der Datenverarbeitung verwendet werden, um das Wesen ihrer Arbeit anderen Fachleuten effektiv zu übermitteln. Ein Algorithmus wird hier und im allgemeinen als eine selbstkonsistente Abfolge von Schritten aufgefaßt, die zu einem gewünschten Ergebnis führt. Bei den Schritten handelt es sich um solche, die physikalische Manipulationen von physikalischen Quantitäten erforderlich machen. Üblicherweise aber nicht notwendigerweise nehmen diese Quantitäten die Gestalt von elektrischen oder magnetischen Signalen ein, die dazu in der Lage sind, gespeichert, übertragen, kombiniert, verglichen oder sonstwie manipuliert zu werden. Es hat sich, hauptsächlich aus Gründen einer gemeinsamen Verwendung, als zweckmäßig erwiesen, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen bzw. Charakter, Terme, Ziffern bzw. Nummern oder dergleichen zu bezeichnen.Certain Parts of the detailed descriptions given below be through algorithms and symbolic representations of operations expressed with data bits within a computer memory. These algorithmic descriptions and representations represent the means used by professionals in the field of data processing to convey the essence of their work to other professionals effectively. An algorithm is here and in general as a self-consistent Sequence of steps taken the one to a desired one Result leads. The steps are those that are physical manipulations of physical quantities make necessary. Usually but not necessarily these quantities take the form of electric or magnetic signals that are capable of, stored, transmitted, combined, compared or otherwise manipulated. It has yourself, mainly for reasons a common use, these signals have proved expedient as bits, values, elements, symbols, signs or characters, terms, To designate numbers or the like.

Man sollte jedoch im Kopf behalten, daß alle diese oder ähnliche Ausdrücke mit passenden physikalischen Quantitäten in Beziehung stehen und sie lediglich zweckmäßige Bezeichnungen darstellen, die auf diese Quantitäten angewendet werden. Soweit es nicht anderswo besonders hervorgehoben wird, wie dies aus der folgenden Diskussion offensichtlich wird, sind bei der Diskussion der vorliegenden Erfindung verwendeten Terme, wie z.B. "Verarbeiten" oder "Berechnen" oder "Bestimmen" oder "Darstellen" oder "Anzeigen" oder dergleichen, so zu verstehen, daß sie sich auf die Wirkung und die Verarbeitungen eines Computersystems oder eines ähnlichen elektronischen Rechengeräts beziehen können, das Daten manipuliert und transformiert, die als physikalische (elektronische) Quantitäten innerhalb der Register und Speicher des Computersystems dargestellt werden und die in andere Daten transformiert werden, die in ähnlicher Weise als physikalische Quantitäten innerhalb der Speicher oder Register oder anderer Informationsspeicher des Computersystems oder der Übertragungs- oder Anzeigevorrichtungen dargestellt werden.you However, keep in mind that all these or similar expressions be related to appropriate physical quantities and they are merely expedient designations represent that are applied to these quantities. So far it is not particularly emphasized elsewhere, as can be seen from the The following discussion becomes obvious are in the discussion terms used in the present invention, e.g. "Processing" or "calculating" or "determining" or "displaying" or "displaying" or the like, to understand that they on the effect and the processing of a computer system or a similar one electronic computing device can relate manipulating and transforming data that is considered to be physical (electronic) quantities represented within the registers and memory of the computer system and that are transformed into other data that are similar Way as physical quantities within the stores or registers or other information store of the computer system or the transmission or display devices.

Wie im folgenden diskutiert wird, bezieht sich die vorliegende Erfindung auf einen Apparat, um die Operationen darin durchzuführen. Dieser Apparat kann für die erforderlichen Zweck speziell aufgebaut werden oder er kann einen Allzweck-Computer umfassen, der selektiv durch ein Computerprogramm aktiviert oder rekonfiguriert wird, das in dem Computer gespeichert ist. Ein derartiges Computerprogramm kann in einem- computerlesbaren Speicher gespeichert werden, wie z.B. auf irgendeiner Platte bzw. Diskette, wie z.B. optische Platten, magnetische Disketten, CD-ROMs, magneto-optische Disketten, Nur-Lese-Speicher (ROMs), Speicher mit wahlfreiem Zugriff (RAMs), EPROMs, EEPROMs, magnetische oder optische Karten oder jeglicher Typ von Medium, der zum Speichern elektronischer Befehle geeignet ist, wobei das Medium insbesondere mit einem Computersystembus verbunden ist. Die Algorithmen, die hierin vorgestellt werden, beziehen sich nicht inhärent auf irgendeinen bestimmten Computer oder einen anderen Apparat. Verschiedene Allzweckgeräte können mit Programmen in Übereinstimmung mit den hierin'gegebenen Lehren verwendet werden oder es kann sich als zweckmäßig erweisen, einen spezialisierteren Apparat zu bauen, der die erforderlichen Verfahrensschritte durchführt. Die erforderliche Struktur für eine Vielfalt dieser Maschinen wird sich aus der folgenden Beschreibung ergeben. Zusätzlich ist die vorliegende Erfindung nicht unter Bezugnahme auf irgendeine bestimmte Programmiersprache beschrieben. Man wird erkennen, daß eine Vielfalt von Programmiersprachen verwendet werden kann, um die Lehren der Erfindung, wie sie hierin beschrieben wird, zu realisieren.As will be discussed below, the present invention relates on an apparatus to perform the operations in it. This Apparatus can for the required purpose can be built up specifically or he can include a general-purpose computer, selectively by a computer program is enabled or reconfigured in the computer is. Such a computer program can be read in a computer Memory are stored, such. on any record or Floppy disk, such as optical disks, magnetic disks, CD-ROMs, magneto-optical disks, read only memories (ROMs), memory with random access (RAMs), EPROMs, EEPROMs, magnetic or optical Cards or any type of medium used to store electronic Commands is suitable, the medium in particular with a computer system bus connected is. The algorithms presented herein relate not inherent on any particular computer or other device. Various general purpose devices can use Programs in accordance with the herein given Gauges or it may prove useful to build a more specialized apparatus that required Performs method steps. The required structure for A variety of these machines will become apparent from the following description result. additionally the present invention is not with reference to any certain programming language described. You will realize that a variety of programming languages can be used to teach the lessons of To realize the invention as described herein.

Übersicht über die vorliegende ErfindungOverview of the present invention

Die vorliegende Erfindung stellt einen FSM-Kodierer und ein Kodiersystem, das auf FSM basiert, bereit. Sie sind für eine verbesserte Leistungsfähigkeit gestaltet. Gewisse Realisierungen sind mehr geeignet für ein Hardware-Realisierung oder eine Software-Realisierung oder eine Kombination aus beiden.The The present invention provides a FSM encoder and a coding system. based on FSM. They are for improved performance designed. Certain implementations are more suitable for a hardware implementation or a software realization or a combination of both.

Der FSM-Kodierer der vorliegenden Erfindung kann der Entropiekodierer sein, der in einem System verwendet wird, das eine Kompression mit reversiblen Wavelets verwendet.Of the The FSM encoder of the present invention may be the entropy encoder which is used in a system that uses compression reversible wavelets used.

1A ist ein Blockdiagramm einer Ausführungsform des Kompressions-/Dekompressionssystems der vorliegenden Erfindung. Nimmt man Bezug auf 1A, so werden Bilddaten 105 in die Transformationseinrichtung 101 für reversible Wavelets eingegeben oder davon empfangen. Die Transformationseinrichtung 101 ist mit dem Kontextmodell 102 verbunden. Das Kontextmodell 102 ist ebenso mit dem FSM-Kodierer 103 verbunden, der ebenso mit der Header-Verarbeitungseinheit bzw. Kopf-Verarbeitungseinheit 104 verbunden ist. Die Header-Verarbeitungseinheit 104 erzeugt oder empfängt kodierte Daten und eine Signalisierung 108. Bei einer Ausführungsform umfassen die kodierten Daten und die Signalisierung 108 einen gekennzeichneten ("tagged") Kodestrom. Somit sind zusätzlich zur Kommunikation mit dem Kontextmodell 102 die kodierten Daten des FSM-Kodierers 103 in einem gekennzeichneten Kodestrom enthalten, der durch eine Header-Verarbeitungseinheit erzeugt/verwendet wird. 1A FIG. 12 is a block diagram of one embodiment of the compression / decompression system of the present invention. FIG. If you take reference 1A , so are image data 105 in the transformation facility 101 input or received for reversible wavelets. The transformation device 101 is with the context model 102 connected. The context model 102 is the same with the FSM encoder 103 connected to the header processing unit or header processing unit as well 104 connected is. The header processing unit 104 generates or receives coded data and signaling 108 , In one embodiment, the encoded data and the signaling include 108 a tagged code stream. Thus, in addition to communicating with the context model 102 the coded data of the FSM encoder 103 in a designated code stream generated / used by a header processing unit.

Der Grundbetrieb des Systems, das auf einem FSM-Kodierer basiert und in der 1A gezeigt ist, ist wie folgt. Während des Kodierens werden die Eingangsdaten (die Bilddaten 105) in eine Reihe von Koeffizienten, von denen jeder mehrere Bits lang ist, durch die reversible Vorwärts-Wavelet-Transformation der Transformationseinrichtung 101 konvertiert. Die Bits der Koeffizienten von der Transformation 101 werden in Kontextbins durch das Kontextmodell 102 unterteilt. Eine Wahrscheinlichkeitsschätzung wird für jedes Kontextbin gespeichert und durch eine Wahrscheinlichkeitsschätzmaschine (PEM) innerhalb des FSM-Kodierers 103 erzeugt. Bei einer Ausführungsform ist die Schätzung ein Zustand, der dem Wert eines Zählers ähnelt. Bei einer Ausführungsform zeigt ein Bit des Zustands an, ob es für das Kontextbin wahrscheinlicher ist, daß "0" oder "1" auftritt. Dies wird das wahrscheinlichere Symbol oder MPS genannt. Die anderen Bits geben den Versatz ("skew") (PSTATE) des MPS (im Gegensatz zu dem am wenigsten wahrscheinlichen Symbol (LPS)) an, und zwar von nahe bei 50% bis nahezu 100%. Mit anderen Worten geben die anderen Bits an, wie wahrscheinlich es ist, daß das MPS (im Vergleich zu dem LPS) auftritt.The basic operation of the system based on a FSM encoder and in the 1A is shown is as follows. During encoding, the input data (the image data 105 ) into a series of coefficients, each of which is several bits long, by the reversible forward wavelet transform of the transform means 101 converted. The bits of the coefficients of the transformation 101 be in context bins through the context model 102 divided. A probability estimate is stored for each context bin and by a probability estimator (PEM) within the FSM encoder 103 generated. In one embodiment, the estimate is a state that is similar to the value of a counter. In one embodiment, a bit of the state indicates whether the context bin is more likely to experience "0" or "1". This is called the more probable symbol or MPS. The other bits indicate the skew (PSTATE) of the MPS (as opposed to the Least Probable Symbol (LPS)), from near 50% to near 100%. In other words, the other bits indicate how likely it is that the MPS (as compared to the LPS) occurs.

Zustandsmaschinen-Aktualisierungsregeln, die im folgenden beschrieben werden, spezifizieren, was bei einem gegebenen Zustand und dem Auftreten einer 0 oder einer 1 zu tun ist, um den PSTATE und das Bit, das als Kontextbin wahrscheinlicher auftritt, zu aktualisieren. Bei einer Ausführungsform spezifizieren die Regeln nur 10 Bits pro Kontext, um dem MPS und dem PSTATE zu folgen bzw. damit Schritt zu halten. Im allgemeinen bewirken die Regeln, daß der PSTATE um einen gewissen Umfang zunimmt, wenn ein MPS auftritt, und um einen gewissen Umfang abnimmt, wenn ein LPS (wenigst wahrscheinliches Symbol) auftritt. Bei einer Ausführungsform wird der Versatz ("skew") in 16 Wahrscheinlichkeitsklassen (PCLASS) unterteilt. Jede PCLASS wird für einen Bereich von Wahrscheinlichkeiten verwendet.FSM update rules which will be described below, specify what happens at a given condition and the occurrence of a 0 or a 1 do is more likely to use the PSTATE and the bit as context bin occurs, update. In one embodiment, the specify Only control 10 bits per context to follow the MPS and PSTATE or to keep up with it. In general, the rules that the PSTATE increases to some extent when an MPS occurs, and decreases to some extent when an LPS (least likely Symbol) occurs. In one embodiment becomes the skew in 16 probability classes (PCLASS). Each PCLASS will work for a range of probabilities used.

Ein FSM-Kodierer 103 umfaßt einen finiten Automaten, der Bits für jede PCLASS kodiert. Um Bits mit Wahrscheinlichkeiten größer als 50 % zu kodieren, werden manchmal keine Bits ausgegeben und die Information wird temporär in dem Zustand dieses finiten Automaten gespeichert. Dieser Entropiekodierer-Zustand zeigt an, welche Bitmuster in der Zukunft ausgegeben werden können, so daß Bits, für die bisher noch keine Ausgabe erfolgte, korrekt von dem Dekodierer verstanden werden.An FSM encoder 103 includes a finite state machine that encodes bits for each PCLASS. In order to code bits with probabilities greater than 50%, sometimes no bits are output and the information is temporarily stored in the state of this finite state machine. This entropy encoder state indicates which bit patterns can be output in the future so that bits that have not been output yet are correctly understood by the decoder.

Bei einer alternativen Ausführungsform, wie z.B. jene, die in 1B gezeigt ist, ist ein System, das auf einem FSM-Kodierer basiert, zum Handhaben binärer Bilder gezeigt. Das binäre Bild kann Pixel enthalten, die in einen von 1024 Kontexten unterteilt sind, die auf binären Werten benachbarter Pixel basieren, die bereits kodiert worden sind. Dies ähnelt dem JBIG-Standard. 1B beinhaltet ebenso zwei Beispiele von Kontexten, die auf benachbarten Pixeln basieren.In an alternative embodiment, such as those described in U.S. Pat 1B 3, a system based on an FSM encoder is shown for handling binary images. The binary image may include pixels that are divided into one of 1024 contexts that are based on binary values of adjacent pixels that have already been encoded. This is similar to the JBIG standard. 1B also includes two examples of contexts based on neighboring pixels.

Obwohl das System in Verbindung mit einem System, das auf reversiblen Wavelets basiert, und einem Binärbild-Kompressionssystem beschrieben wird, ist die vorliegende Erfindung auch auf andere Systeme, wie z.B. Systemen, die nicht auf Wavelet basieren, anwendbar. Weiter, obwohl die 1A und 1B in Verbindung mit Bilddaten beschrieben wurden, können andere Datentypen und Informationen verwendet werden, wie z.B. Ton bzw. Geräusche, Text, vom Computer ausführbare Dateien bzw. Programm und Computerdaten-Dateien.Although the system is described in conjunction with a system based on reversible wavelets and a binary image compression system, the present invention is also applicable to other systems, such as non-wavelet-based systems. Next, though the 1A and 1B other data types and information may be used, such as sounds, text, computer-executable files and / or programs, and computer data files.

FSM-Kodierer, der auf einer Nachschlagtabelle (LUT) basiertFSM encoder, the on based on a lookup table (LUT)

Die vorliegende Erfindung stellt einen Software-FSM-Kodierer bereit, bei dem der Großteil des FSM-Kodierers als eine Nachschlagtabelle oder als mehrere Nachschlagtabellen (LUTs) realisiert ist. Der FSM-Kodierer der vorliegenden Erfindung kann z.B. LUTs mit Adresseneingängen für das zu kodierende Bit (MPS oder nicht), den Entropiekodierer-Zustand und/oder entweder die PCLASS oder den PSTATE verwenden. Bei einer Ausführungsform handelt es sich bei der PCLASS um eine Klasse, die eine aktuelle Wahrscheinlichkeitsschätzung für eine binäre Entscheidung enthält und die für einen Bereich von Wahrscheinlichkeiten verwendet wird. Bei einer Ausführungsform handelt es sich bei dem PSTATE um einen Wahrscheinlichkeitsschätzzustand für eine binäre Entscheidung. Die PCLASS und der PSTATE können Wahrscheinlichkeiten für andere Entscheidungen als binären Entscheidungen entsprechen. Bei einer Ausführungsform umfaßt der Adresseneingang für das zu kodierende Bit 1 Bit, für den Entropiekodierer-Zustand 6 Bits, für die PCLASS 4 Bits und für den PSTATE 9 Bits. Unter Verwendung dieses Adressenschemas ist die gesamte Adressengröße 11 oder 16 Bits, was 2K oder 64K LUT-Einträge erforderlich macht. Gewisse Software-Implementationen des Dekodiererabschnittes des FSM-Kodierers verwenden die kodierten Daten als eine Eingabe zu dem LUT (wobei das zu kodierende Bit ersetzt wird). Die kodierten Daten können 8 Bit lang sein. Dies erhöht die Größe der LUT-Eingabeadresse von 18 auf 23 Bit, was 256K oder 8M LUT-Einträge erforderlich macht.The present invention provides a software FSM encoder in which most of the FSM encoder is implemented as a lookup table or as multiple lookup tables (LUTs). The FSM encoder of the present invention may include, for example, LUTs with address inputs for the bit to be encoded (MPS or not), use the entropy encoder state and / or either the PCLASS or the PSTATE. In one embodiment, the PCLASS is a class that contains a current probability estimate for a binary decision and that is used for a range of probabilities. In one embodiment, the PSTATE is a probability estimate for a binary decision. The PCLASS and the PSTATE may correspond to probabilities for decisions other than binary decisions. In one embodiment, the address input for the bit to be encoded comprises 1 bit, for the entropy encoder state 6 bits, for the PCLASS 4 bits and for the PSTATE 9 bits. Using this address scheme, the total address size is 11 or 16 bits, which requires 2K or 64K LUT entries. Certain software implementations of the decoder portion of the FSM encoder use the encoded data as an input to the LUT (replacing the bit to be encoded). The encoded data can be 8 bits long. This increases the size of the LUT input address from 18 to 23 bits, which requires 256K or 8M LUT entries.

Bei einer Ausführungsform der vorliegenden Erfindung wird eine einzige Tabelle mit ungefähr der Größe der Kodiertabelle, die oben beschrieben wurde, sowohl für das Kodieren als auch für das Dekodieren verwendet. Mit anderen Worten werden getrennte Tabellen für das Dekodieren und das Kodieren nicht benötigt. Durch Beseitigen des großen Dekodierers LUT wird ein beträchtliche Ersparnis erzielt.at an embodiment The present invention provides a single table of approximately the size of the coding table, described above for both coding and decoding used. In other words, separate tables for decoding and the coding is not needed. By Eliminate the big one Decoder LUT becomes a considerable Savings achieved.

2 stellt ein Blockdiagramm eines FSM-Kodierers/-Dekodierers dar, der eine kombinierte FSM-Kodier-/-Dekodier-Tabelle aufweist, die getrennte bzw. separate Wahrscheinlichkeitsschätz- und Biterzeugungs-LUTs verwendet. Nimmt man Bezug auf 2, so ist ein Kontextspeicher 201 mit einer Wahrscheinlichkeitsschätztabelle 202, einem Multiplexer (MUX) 203, einer Wahrscheinlichkeitschätzlogik 205 und einer Bitlogik 204 verbunden. Eine Wahrscheinlichkeitsschätztabelle 202 ist ebenso mit einem MUX 203 und einer Wahrscheinlichkeitsschätzlogik 205 sowie mit einer Entropiekodiertabelle 206 verbunden. Die Wahrscheinlichkeitsschätzlogik 205 ist weiter mit einem MUX 203, einer Bitlogik 204 und einem MUX 209 verbunden. Die Entropiekodiertabelle 206 ist mit einem Entropiekodierzustand 207, einer Bitlogik 204 und MUXs 208 bis 210 verbunden. Die MUXs 208 bis 210 sind mit einer Bitlogik 204 verbunden. Der MUX 210 ist ebenso mit einem Entropiekodierzustand 207 verbunden. 2 FIG. 12 illustrates a block diagram of an FSM encoder / decoder having a combined FSM encode / decode table that uses separate and probabilistic estimate and bit generation LUTs, respectively. If you take reference 2 so is a context store 201 with a probability estimation table 202 , a multiplexer (MUX) 203 , a probability estimation logic 205 and a bit logic 204 connected. A probability estimation table 202 is as well with a mux 203 and a probability estimation logic 205 as well as with an entropy coding table 206 connected. The probability estimation logic 205 is on with a mux 203 , a bit logic 204 and a mux 209 connected. The entropy coding table 206 is with an entropy coding state 207 , a bit logic 204 and muxs 208 to 210 connected. The muxs 208 to 210 are with a bit logic 204 connected. The MUX 210 is also with an entropy coding state 207 connected.

Der Betriebsablauf während des Kodierens ist wie folgt. Details, wie z.B. die Werte der LUTs sind und wie die Wahrscheinlichkeitlogik arbeitet, werden detailliert im folgenden beschrieben. Bitbreitenangaben stellen nur Beispiele dar; bei einer Software-Realisierung würden diese typischerweise auf mehrfache von 8 Bits oder auf die Wortgröße des Computers, auf dem die Software läuft, aufgerundet werden.Of the Operation during of coding is as follows. Details, such as the values of the LUTs are and how the probability logic works will be detailed described below. Bit widths are examples only group; in a software implementation these would typically open multiple of 8 bits or the word size of the computer on which the Software is running, be rounded up.

Als erstes wird ein Kontext 211 verwendet, um den Kontextspeicher 201 zu adressieren. In Antwort auf den Kontext 211 gibt ein Kontextspeicher 201 einen PSTATE (pstate 234) und ein MPS (mps 215) aus. Die Anzahl der Adressenbits (und Speicherstellen) ist anwendungsabhängig. Bei einer Ausführungsform werden 540 Speicherstellen verwendet und der Kontextspeicher 201 gibt 9 Bits für pstate 234 und 1 Bit für mps 215 aus. Die 10-Bit-Binär-Schablonen in 1B machen 1024 Speicherstellen erforderlich.First, a context 211 used the context memory 201 to address. In response to the context 211 gives a context memory 201 a PSTATE (pstate 234 ) and an MPS (mps 215 ) out. The number of address bits (and memory locations) is application dependent. In one embodiment, 540 storage locations are used and the context memory 201 gives 9 bits for pstate 234 and 1 bit for mps 215 out. The 10-bit binary templates in 1B make 1024 memory locations necessary.

In Antwort auf die Eingabe von pstate 234 erzeugt die Wahrscheinlichkeitsschätztabelle 202, die eine LUT bei einer Ausführungsform darstellt, eine Anzahl von Ausgaben. Die Wahrscheinlichkeitsschätztabelle 202 gibt eine Wahrscheinlichkeitsschätzung (pclass 219) aus. Die Wahrscheinlichkeitsschätztabelle 202 gibt ebenso den nächsten Wahrscheinlichkeitsschätzzustand, PSTATE, aus, falls ein MPS auftrat und eine Aktualisierung des PSTATE erforderlich ist. Die Wahrscheinlichkeitsschätztabelle 202 gibt ebenso den nächsten PSTATE aus und, ob das MPS (von 0 auf 1 oder von 1 auf 0) umgeschaltet werden sollte, wie durch die Umschaltanzeige 218 angezeigt ist, falls ein LPS auftrat und eine Aktualisierung auf dem PSTATE erforderlich ist. Bei einer Ausführungsform umfaßt die Umschaltanzeige 218 ein 1-Bit-Signal. Die nächsten Wahrscheirilichkeitsschätzzustände, die ausgegeben werden, wenn ein MPS auftrat, werden hierin als pstate_mps 216 bezeichnet und, wenn ein LPS auftrat, als ein pstate_lps 217 bezeichnet.In response to the input of pstate 234 generates the probability estimation table 202 representing an LUT in one embodiment, a number of outputs. The probability estimation table 202 gives a probability estimate (pclass 219 ) out. The probability estimation table 202 Also issues the next Probability Estimate State, PSTATE, if an MPS occurred and an update of the PSTATE is required. The probability estimation table 202 also outputs the next PSTATE and whether the MPS should be toggled (from 0 to 1 or from 1 to 0) as shown by the toggle indication 218 is displayed if an LPS occurred and an update to the PSTATE is required. In one embodiment, the toggle indication includes 218 a 1-bit signal. The next probability estimation states that are output when an MPS occurred are referred to herein as pstate_mps 216 and, if an LPS occurred, as a pstate_lps 217 designated.

Der pstate_mps 216 und der pstate_lps 217 zusammen mit dem pstate 234 stellen Eingänge zu dem MUX 203 dar. Die Wahrscheinlichkeitsschätzlogik 215 gibt eine Auswahlanzeige (z.B. ein Signal bzw. Signale) 220 aus, die unter den Wahrscheinlichkeitsschätzzuständen, die zu dem MUX 203 als der nächste Wahrscheinlichkeitsschätzzustand eingegeben werden, der als next_pstate 213 bezeichnet wird. Bei einer Ausführungsform wählt, falls der pstate 234 weniger oder gleich 214 ist, die Auswahlanzeige 220 entweder einen pstate_mps 216 aus, wenn das Eingangsbit ein MPS ist, oder einen pstate_lps 217 aus, wenn das Eingangsbit ein LPS ist; falls der pstate 234 größer als 214 ist und die Bits ausgegeben werden, dann wählt die Auswahlanzeige 220 einen pstate_mps 216 aus, wenn das Eingangsbit ein MPS ist, oder einen pstate_lps 217 aus, wenn das Eingangsbit ein LPS ist. Auf der anderen Seite, falls der pstate 234 größer als 214 ist und keine Bits ausgegeben werden (Kodieren) oder verbraucht werden (Dekodieren), dann wählt die Auswahlanzeige 220 einen pstate 234 als next_pstate 213 aus.The pstate_mps 216 and the pstate_lps 217 along with the pstate 234 provide inputs to the MUX 203 dar. The probability estimation logic 215 gives a selection display (eg a signal or signals) 220 from among the probability estimation states leading to the MUX 203 are entered as the next probability estimate state, which is next_pstate 213 referred to as. In one embodiment, if the pstate 234 less or equal 214 is, the selection display 220 either a pstate_mps 216 if the input bit is an MPS or a pstate_lps 217 if the input bit is an LPS; if the pstate 234 greater than 214 and the bits are output, then the selection display selects 220 a pstate_mps 216 if the input bit is an MPS or a pstate_lps 217 off if the input bit is an LPS. On the other hand, if the pstate 234 greater than 214 is and not bits are output (coding) or consumed (decoding), then the selection display selects 220 a pstate 234 as next_pstate 213 out.

Eine Entropiekodiertabelle 206 ist angeschlossen, um eine pclass 219 und einen FSM_state 236 von dem Entropiekodierzustandsspeicher 207 zu empfangen. Bei einer Ausführungsform umfaßt der Entropiekodierzustand 207 ein Register, einen anderen temporären Puffer, eine Schlange oder Speichermechanismus. Die Entropiekodiertabelle 206 arbeitet als eine Biterzeugungs-LUT. Anfänglich ist der Entropiekodierzustand 0. Die Entropiekodiertabelle 206 gibt cw(codeword)_mps 227 und cw_lps 228 als Kodewörter (z.B. Bitmuster, Tokens, Symbole usw.) als den kodierten Datenstrom aus. cw_mps 227 und cw_lps 228 sind die Kodewörter, die in Antwort darauf, daß ein MPS und ein LPS in den Dekoder eingegeben werden, jeweilig ausgegeben werden. Bei einer Ausführungsform umfaßt cw_mps 227 und cw_lps 228 8-Bit-Kodewörter.An entropy coding table 206 is connected to a pclass 219 and a FSM_state 236 from the entropy coding state memory 207 to recieve. In one embodiment, the entropy encoding state comprises 207 a register, another temporary buffer, a queue or storage mechanism. The entropy coding table 206 works as a bit-generating LUT. Initially, the entropy coding state is 0 , The entropy coding table 206 gives cw (codeword) _mps 227 and cw_lps 228 as code words (eg, bit patterns, tokens, symbols, etc.) as the coded data stream. cw_mps 227 and cw_lps 228 are the code words respectively outputted in response to an MPS and an LPS being input to the decoder. In one embodiment, cw_mps 227 and cw_lps 228 8-bit codewords.

Ebenso in Antwort auf ihre Eingänge gibt die Entropiekodiertabelle 206 eine Anzeige der Anzahl von Bits in der Ausgabe aus. Insbesondere gibt die Entropiekodiertabelle 206 size_mps 230 und size_lps 231 aus, die die Größe der Kodewörter anzeigen, das heißt die Anzahl von Bits jeweilig in cw_mps 227 und cw_lps 228, die das aktuelle Bitmuster enthalten. Bei einer Ausführungsform umfassen jeweils size_mps 230 und size_lps 231 4 Bits. Die Ausgaben der Entropiekodierertabelle 206 beinhalten ebenso state_mps 233, das den nächsten Entropiekodiererzustand anzeigt, falls MPS ausgegeben wird, und state_lps 234, das den nächsten Entropiekodiererzustand anzeigt, falls LPS ausgegeben wird. Bei einer Ausführungsform umfassen sowohl state_mps 233 als auch state_lps 234 6 Bits.Likewise, in response to their inputs, the entropy coding table returns 206 an indication of the number of bits in the output. In particular, the entropy coding table gives 206 size_mps 230 and size_lps 231 indicating the size of the codewords, that is, the number of bits respectively in cw_mps 227 and cw_lps 228 that contain the current bit pattern. In one embodiment, each size_mps 230 and size_lps 231 4 bits. The outputs of the entropy coder table 206 also include state_mps 233 indicating the next entropy encoder state if MPS is output and state_lps 234 indicating the next entropy encoder state if LPS is output. In one embodiment, both state_mps 233 as well as state_lps 234 6 bits.

Die Bitlogik 204 vergleicht das zu kodierende Bit bit_in 222 mit mps 215 und erzeugt eine Wahrscheinlich-Anzeige (z.B. ein Signal bzw. Signale) 223, falls sie dieselben sind. Auf der anderen Seite, falls sie nicht dieselben sind, wird die Wahrscheinlich-Anzeige 223 nicht behauptet bzw. aktiviert.The bit logic 204 compares the bit to be coded bit_in 222 with mps 215 and generates a probable display (eg a signal or signals) 223 if they are the same. On the other hand, if they are not the same, the probability indicator becomes 223 not claimed or activated.

Falls die Wahrscheinlich-Anzeige 223 wahr ist (das heißt aktiviert), werden cw_mps 227, size_mps 230 und state_mps 223 von MUXs 208 bis 210 jeweilig als Ausgabebitstrom (Ausgabe kodierter Daten 229), die Größe der Ausgabe (Größe 232) und der nächste FSM-Zustand 235 (der in das Entropiekodierzustandsregister geladen wird) ausgegeben. Falls die Wahrscheinlich-Anzeige nicht wahr ist, werden cw_lps 228, size_lps 231 und state_lps 234 von MUXs 208 bis 210 jeweilig ausgegeben.If the probability display 223 true (that is, activated) becomes cw_mps 227 , size_mps 230 and state_mps 223 of muxs 208 to 210 respectively as output bitstream (output coded data 229 ), the size of the output (size 232 ) and the next FSM state 235 (which is loaded into the entropy coding state register). If the probability indicator is not true, cw_lps 228 , size_lps 231 and state_lps 234 of muxs 208 to 210 respectively issued.

Die Wahrscheinlichkeitsschätzlogik 205 bestimmt next_mps 212 und steuert, ob der nächste PSTATE (next_pstate 213) der aktuelle pstate 234 oder einer der aktualisierten Werte (pstate_mps 216 oder pstate_lps 217) ist. Bei einer Ausführungsform bestimmt die Wahrscheinlichkeitsschätzlogik 205 next_mps 212 und sollte umgeschaltet werden, falls ein LPS auftritt und falls der PSTATE gleich 4 oder weniger ist oder gleich 262 ist. Die Steuerung, um next_pstate 213 auszuwählen, beinhaltet eine Logik, um eine Auswahlanzeige 220 zu erzeugen, um eine Eingabe des MUX 203 auszuwählen.The probability estimation logic 205 determined next_mps 212 and controls whether the next PSTATE (next_pstate 213 ) the current pstate 234 or one of the updated values (pstate_mps 216 or pstate_lps 217 ). In one embodiment, the probability estimation logic determines 205 next_mps 212 and should be toggled if an LPS occurs and if the PSTATE is 4 or less or equal 262 is. The controller to next_pstate 213 Selecting includes logic to display a selection 220 to generate an input of the MUX 203 select.

Next_mps 212 und next_pstate 213 werden in die Stelle des Kontextspeichers 201 geschrieben, der mit einer Adresse adressiert ist, der auf dem Kontext 211 basiert. Bei einer Ausführungsform ist die Adresse Kontext 211, wobei es sich bei den zu schreibenden Daten um next_mps 212 und next-pstate 213 handelt.Next_mps 212 and next_pstate 213 will be in the place of the context memory 201 written addressed with an address based on the context 211 based. In one embodiment, the address is context 211 , where the data to be written is next_mps 212 and next-pstate 213 is.

Somit führt auf diese Art und Weise der LUT-basierte Kodierer/Dekodierer mit der separaten Wahrscheinlichkeitsschätzung und FSM-Biterzeugung ein Kodieren durch.Consequently leads up this way the LUT based encoder / decoder with the separate probability estimate and FSM bit generation encoding.

Der Kodierer/Dekodierer 200 auf LUT-Basis dekodiert in ähnlicher Art und Weise. Um mit dem Dekodieren zu beginnen, wird der Kontextspeicher 201 durch den Kontext 211 adressiert. In Antwort auf den Kontext 211 gewinnt der Kontextspeicher 201 pstate 234 und MPS 215 wieder. Wiederum hängt die Anzahl der Adressenbits (und Speicherstellen) von der Anwendung ab. Bei einer Ausführungsform gibt der Kontextspeicher 201 9 Bits für pstate 234 und 1 Bit für MPS 215 aus.The encoder / decoder 200 on LUT basis decoded in a similar way. To begin decoding, the context memory becomes 201 through the context 211 addressed. In response to the context 211 wins the context memory 201 pstate 234 and MPS 215 again. Again, the number of address bits (and memory locations) depends on the application. In one embodiment, the context memory is 201 9 bits for pstate 234 and 1 bit for MPS 215 out.

In Antwort auf pstate 234 gibt die Wahrscheinlichkeitsschätztabelle 202 eine Wahrscheinlichkeitsschätzung (pclass 219) aus. Bei einer Ausführungsform umfaßt pclass 219 4 Bits. Die Wahrscheinlichkeitsschätztabelle 202 gibt ebenso den nächsten PSTATE aus, falls ein MPS auftritt und eine PSTATE-Aktualisierung erforderlich ist. In einem derartigen Fall umfaßt der nächste PSTATE pstate_mps 216. Bei einer Ausführungsform ist eine PSTATE-Aktualisierung erforderlich, wenn der pstate 234 gleich 214 oder weniger ist oder wenn der pstate 234 größer als 214 ist, und Bits werden verbraucht. Bei einer Ausführungsform umfaßt pstate_mps 216 9 Bits. Die Wahrscheinlichkeitsschätztabelle 202 gibt ebenso den nächsten PSTATE und eine Anzeige aus, daß das MPS (von 0 auf 1 oder von 1 auf 0) umgeschaltet werden sollte, falls ein LPS auftritt und die PSTATE-Aktualisierung erforderlich ist. In diesem Fall wird der nächste PSTATE durch pstate_lps 217 angezeigt und die Anzeige, ob das MPS umgeschaltet werden sollte, wird durch die Umschaltanzeige (z.B. ein Signal bzw: Signale) 218 angezeigt. Bei einer Ausführungsform umfassen pstate_lps 217 9 Bits und die Umschaltanzeige 218 1 Bit.In response to pstate 234 gives the probability estimation table 202 a probability estimate (pclass 219 ) out. In one embodiment, pclass 219 4 bits. The probability estimation table 202 Also issues the next PSTATE if an MPS occurs and a PSTATE update is required. In such a case, the next PSTATE comprises pstate_mps 216 , In one embodiment, a PSTATE update is required when the pstate 234 equal 214 or less or if the pstate 234 greater than 214 is, and bits are consumed. In one embodiment, pstate_mps 216 9 bits. The probability estimation table 202 also issues the next PSTATE and an indication that the MPS should be switched (from 0 to 1 or from 1 to 0) if an LPS occurs and the PSTATE update is required. In this case, the next PSTATE is pstate_lps 217 at shown and the indication whether the MPS should be switched, is indicated by the switching display (eg a signal or signals) 218 displayed. In one embodiment, pstate_lps 217 9 bits and the shift indicator 218 1 bit.

Die Entropiekodiertabelle 206 ist angeschlossen, um pclass 219 und den FSM-Zustand 236 (von dem Entropiekodierzustandsregister 207) zu empfangen. In Antwort auf diese Eingänge gibt die Entropiekodiertabelle (Biterzeugungs-LUT) 206 die aktuelle Anzahl von Bits in cw_mps 227 und cw_lps 228 aus, die das aktuelle Bitmuster (z.B. Kodewort, Token, Symbol usw.) enthalten, und zwar zusammen mit size_mps 230 und size_lps 231, die die Größe der Kodewörter cw_mps 227 und cw_lps 228 jeweilig darstellen. Cw mps 227 und cw_lps 228 werden nicht verwendet, wenn dekodiert wird und müssen nicht in einer Umgebung erzeugt werden, in der nur dekodiert wird. Bei einer Ausführungsform sind diese Größenanzeigen 4 Bits am Stück, während die Kodewörter 8 Bit lang sind. Die Entropiekodiertabelle 206 gibt ebenfalls einen state-mps 233 und einen state-lps 234 als die nächsten Entropiezustände aus. Hierbei wird bemerkt, daß der Begriff "state" in dieser Anmeldung für "Zustand" steht. Bei einer Ausführungsform umfassen die nächsten Entropiekodiererzustände 6 Bits. Bemerkenswert ist, daß anfänglich der Entropiekodierzustand 0 ist.The entropy coding table 206 is connected to pclass 219 and the FSM state 236 (from the entropy coding state register 207 ) to recieve. In response to these inputs, the entropy coding table (bit generation LUT) 206 the current number of bits in cw_mps 227 and cw_lps 228 which contain the current bit pattern (eg codeword, token, symbol, etc.) along with size_mps 230 and size_lps 231 that is the size of the codewords cw_mps 227 and cw_lps 228 represent respectively. Cw mps 227 and cw_lps 228 are not used when decoded and do not need to be generated in an environment where only decodes are made. In one embodiment, these size indications are 4 bits at a time, while the code words are 8 bits long. The entropy coding table 206 also gives a state-mps 233 and a state-lps 234 as the next entropy states. It should be noted that the term "state" in this application stands for "state". In one embodiment, the next entropy encoder states comprise 6 bits. It is noteworthy that initially the entropy coding state is 0.

Während dieses Dekodierprozesses gibt die Entropiekodiertabelle 206 ebenso einen Aufspaltwert 226 aus, der eine Trennung zwischen dem MPS- und dem LPS-Bitmuster in dem Codestrom anzeigt. Bei einer Ausführungsform umfaßt der Aufspaltwert 226 8 Datenbits. Die Entropiekodiertabelle 206 gibt ebenso eine fps-Anzeige oder einen Wert 225 aus, der anzeigt, ob Bitmuster auf der "00000000"-Seite des Aufspaltwertes 226 ein MPS anzeigen oder nicht. Bei einer Ausführungsform umfaßt der fps-Wert 225 einen 1- Bit-Wert. Die Verwendung eines Aufspaltwertes 226 und eines fps-Wertes 225 wird detaillierter im folgenden beschrieben.During this decoding process, the entropy coding table returns 206 also a splitting value 226 indicating a separation between the MPS and LPS bit patterns in the code stream. In one embodiment, the split value comprises 226 8 data bits. The entropy coding table 206 Also outputs an fps indication or a value 225 indicating whether bit patterns on the "00000000" side of the split value 226 show an MPS or not. In one embodiment, the fps value includes 225 a 1-bit value. The use of a splitting value 226 and an fps value 225 will be described in more detail below.

Die Bitlogik 204 ist angeschlossen, um einen fps-Wert 225 und einen Aufspaltwert 226 sowie mps 215 und kodierte eingehende Daten 221 zu empfangen. In Antwort auf diese Eingänge vergleicht die Bitlogik 204 8 Bits des Bitstroms (kodierte eingehende Daten 221 bzw. "coded_data_in") mit dem Aufspaltwert 226 und erzeugt eine Wahrscheinlich-Anzeige (z.B. ein Signal bzw. Signale) 223, indem die Wahrheitstabelle verwendet wird, die in Tabelle 1 unten gezeigt ist.The bit logic 204 is connected to an fps value 225 and a split value 226 as well as mps 215 and encoded incoming data 221 to recieve. In response to these inputs, the bit logic compares 204 8 bits of bitstream (coded incoming data 221 or "coded_data_in") with the splitting value 226 and generates a probable display (eg a signal or signals) 223 by using the truth table shown in Table 1 below.

Tabelle 1Table 1

Erzeugung einer Wahrscheinlich-Anzeige, wenn dekodiert wird

Figure 00160001
Generation of a probable display when decoding
Figure 00160001

Falls die Wahrscheinlich-Anzeige 223 wahr ist, wird state_mps 223 des MUX 210 als nächster FSM-Zustand 235 ausgegeben, der in das Entropiekodierzustandsregister 207 geladen wird. Falls ebenso die Wahrscheinlich-Anzeige 223 wahr ist, wird size_mps 230 von dem MUX 209 ausgegeben, um die Anzahl der Bits der kodierten Daten zu spezifizieren, die beim Dekodieren verwendet worden sind und nun nicht mehr benötigt werden. Dies ermöglicht die Steuerung eines Schieberegisters (nicht gezeigt, um eine Verschleierung der Erfindung zu vermeiden), das eine Verschiebung bei den eingehenden kodierten Daten bzw. bei coded_data_in 221 durchzuführen. Falls ansonsten die Wahrscheinlich-Anzeige 223 nicht wahr ist, wird size_lps 231 von dem MUX 209 (ungebraucht) und state_lps 234 von dem MUX 210 ausgegeben. Bemerkenswert ist, daß die ausgegebenen kodierten Daten bzw. coded_data_out 229 während des Dekodierens nicht verwendet werden (das heißt "nicht darum kümmern").If the probability display 223 true is state_mps 223 of the MUX 210 as the next FSM state 235 output to the entropy coding state register 207 is loaded. If so, the probability display 223 true is size_mps 230 from the mux 209 to specify the number of bits of coded data used in decoding that are no longer needed. This allows the control of a shift register (not shown to avoid obfuscation of the invention) that causes a shift in the input coded data or coded_data_in 221 perform. Otherwise, the probability indicator 223 is not true, will size_lps 231 from the mux 209 (unused) and state_lps 234 from the mux 210 output. It is noteworthy that the output coded data or coded_data_out 229 not be used during decoding (that is, "do not worry about it").

Ebenso bestimmt während des Dekodierens die Wahrscheinlichkeitsschätzlogik 205 den nächsten MPS-Wert und gibt ihn als next_mps 212 aus. Bei einer Ausführungsform umfaßt next_mps 212 einen 1-Bit-Wert. Bei einer Ausführungsform wird der MPS-Wert umgeschaltet, falls ein LPS auftritt und falls der PSTATE gleich oder weniger als 4 oder gleich 262 ist. Die Wahrscheinlichkeitsschätzlogik 205 steuert ebenso, ob der nächste PSTATE der aktuelle PSTATE ist, wie durch pstate 234 oder einen der aktualisierten PSTATE-Werte angezeigt ist, die durch pstate_mps 216 oder pstate_lps 217 angezeigt werden. Die Wahrscheinlichkeitsschätzlogik 205 steuert diese Auswahl durch Verwendung der Auswahlanzeige (z.B. ein Signal bzw. Signale) 220 zu dem MUX 203, dessen Ausgang der next_pstate 213 ist.Also, during decoding, the probability estimation logic determines 205 the next MPS value and returns it as next_mps 212 out. In one embodiment, next_mps 212 a 1-bit value. In one embodiment, the MPS value is toggled if an LPS occurs and if the PSTATE is equal to or less than 4 or equal 262 is. The probability estimation logic 205 also controls whether the next PSTATE is the current PSTATE, as by pstate 234 or one of the updated PSTATE values indicated by pstate_mps 216 or pstate_lps 217 are displayed. The probability estimation logic 205 controls this selection by using the selection display (eg a signal or signals) 220 to the mux 203 whose output is the next_pstate 213 is.

Sowohl der next_mps 212 als auch der next_pstate 213 werden zu der Stelle des Kontextspeichers 201 geschrieben, die durch den Kontext 211 adressiert ist.Both the next_mps 212 as well as the next_pstate 213 become the place of the context memory 201 written by the context 211 is addressed.

Bemerkenswert ist, daß der Kontextspeicher 201 dieselben Eingaben aufweist, egal ob kodiert wird oder dekodiert wird. Ebenso bemerkenswert ist, daß die Freigabelogik, um den Dekodierbetrieb oder den Kodierbetrieb freizugeben, nicht gezeigt ist, aber für einen Fachmann offensichtlich sein würde.It is noteworthy that the context memory 201 the same input, whether encoded or decoded. It is equally noteworthy that the enable logic to enable the decode mode or the encoder mode is not shown, but would be apparent to one of ordinary skill in the art.

Bemerkenswert ist, daß der Kodierer/Dekodierer der 2, ähnlich wie andere Kodierer, die hierin beschrieben sind, zwei getrennte Dateneingänge zeigt, einen für kodierte Daten und einen anderen für unkodierte Daten. Bei einer Ausführungsform kann der Kodierer diese beiden Datentypen auf demselben Eingang oder Port empfangen und eine gut bekannte Logik und/oder ein oder mehrere Kodier-/Dekodier-Steuersignale verwenden, um die zugehörigen Teile des Kodierers oder der Auswahllogik zu benachrichtigen, welcher Datentyp aktuell von dem Kodierer empfangen wird. Eine derartige Eingabestruktur kann bei jeder hierin beschriebenen Ausführungsform eingebaut bzw. realisiert werden.It is noteworthy that the encoder / decoder of the 2 similar to other encoders described herein, showing two separate data inputs, one for encoded data and another for uncoded data. In one embodiment, the encoder may receive these two types of data on the same input or port and use well known logic and / or one or more encode / decode control signals to notify the associated parts of the encoder or select logic which data type is currently from the encoder is received. Such an input structure may be incorporated in any embodiment described herein.

3 zeigt einen FSM-Kodierer/-Dekodierer mit einer einzelnen bzw. einzigen LUT, die sowohl eine Wahrscheinlichkeitsschätzung als auch eine Biterzeugung durchführt. Durch Verwenden einer einzigen LUT werden bei einer Software-Realisierung weniger Operationen (Instruktionen bzw. Befehle) zu Kosten einer größeren LUT verwendet. 3 shows a FSM coder / decoder with a single LUT that performs both a likelihood estimation and a bit generation. Using a single LUT, in a software implementation, uses fewer operations (instructions) at the cost of a larger LUT.

Während des Kodierens ist der Betrieb wie folgt. Als erstes wird der Kontext 211 verwendet, um den Kontextspeicher 201 zu adressieren. In Antwort auf den Kontext 211 gibt der Kontextspeicher 201 pstate 234 und mps 215 aus. Die Anzahl der Adressenbits (und Speicherstellen) ist anwendungsabhängig. Bei einer Ausführungsform werden 540 Speicherstellen verwendet und der Kontextspeicher 201 gibt 9 Bits für pstate 234 und 1 Bit für mps 215 aus.During encoding, the operation is as follows. First, the context 211 used the context memory 201 to address. In response to the context 211 gives the context memory 201 pstate 234 and mps 215 out. The number of address bits (and memory locations) is application dependent. In one embodiment, 540 storage locations are used and the context memory 201 gives 9 bits for pstate 234 and 1 bit for mps 215 out.

In Antwort auf die Eingabe von pstate 234 gibt eine kombinierte Wahrscheinlichkeitsschätzung und eine FSM-Biterzeugungstabelle 301 den nächsten Wahrscheinlichkeitsschätzzustand (PSTATE) aus, falls ein MPS auftritt, und eine Aktualisierung des PSTATE ist erforderlich. Bei einer Ausführungsform ist eine PSTATE-Aktualisierung erforderlich, wenn pstate 234 gleich oder weniger als 214 ist oder wenn pstate 234 größer als 214 ist und beide Bits ausgegeben werden (in dem Fall des Kodierens oder verbraucht werden in dem Fall des Dekodierens). Bei einer Ausführungsform umfaßt pstate_mps 216 9 Bits. Die kombinierte Tabelle 202 gibt ebenso den nächsten PSTATE aus und, ob das MPS (von 0 auf 1 oder von 1 auf 0) umgeschaltet werden sollte, wie durch die Umschaltanzeige 218 angezeigt wird, falls ein LPS auftritt und eine Aktualisierung des PSTATE erforderlich ist. Bei einer Ausführungsform umfaßt die Umschaltanzeige 218 ein 1-Bit-Signal. Der nächste Wahrscheinlichkeitsschätzzustand umfaßt, wenn ein MPS auftritt, ein pstate_mps 216 oder, wenn ein LPS auftritt, ein pstate_lps 217. Das pstate_mps 216 und das pstate_lps 217 zusammen mit pstate 234 stellen Eingaben zum MUX 203 dar. Die Wahrscheinlichkeitsschätzlogik 205 gibt eine Auswahlanzeige (z.B. ein Signal bzw. Signale) 220 aus, die unter den Wahrscheinlichkeitsschätzzuständen auf den Eingängen des MUX 203 als den nächsten Wahrscheinlichkeitsschätzzustand next_pstate 213 auswählt.In response to the input of pstate 234 gives a combined probability estimate and a FSM bit generation table 301 the next Probability Estimate State (PSTATE) if an MPS occurs, and an update of the PSTATE is required. In one embodiment, a PSTATE update is required if pstate 234 equal or less than 214 is or if pstate 234 greater than 214 and both bits are output (in the case of encoding or consumed in the case of decoding). In one embodiment, pstate_mps 216 9 bits. The combined table 202 also outputs the next PSTATE and whether the MPS should be toggled (from 0 to 1 or from 1 to 0) as shown by the toggle indication 218 is displayed if an LPS occurs and an update of the PSTATE is required. In one embodiment, the toggle indication includes 218 a 1-bit signal. The next probability estimation state includes a pstate_mps when an MPS occurs 216 or, if an LPS occurs, a pstate_lps 217 , The pstate_mps 216 and the pstate_lps 217 together with pstate 234 make entries to the MUX 203 dar. The probability estimation logic 205 gives a selection display (eg a signal or signals) 220 from among the probability estimation states on the inputs of the MUX 203 as the next probability estimation state next_pstate 213 selects.

Die kombinierte Tabelle 301 ist angeschlossen, um den FSM-Zustand 236 aus dem Entropiekodierzustandsspeicher 207 zu empfangen. Bei einer Ausführungsform umfaßt der Entropiekodierzustand 207 ein Register, einen temporären Puffer, eine Schlange oder einen anderen Speichermechanismus. Die kombinierte Tabelle 301 arbeitet als eine Biterzeugungs-LTU. Anfänglich beträgt der Entropiekodierzustand 0 und die. Entropiekodiertabelle 206 gibt cw_mps 227 und cw_lps 228 als Kodewörter (Bitmuster) als den kodierten Datenstrom aus. Bei einer Ausführungsform umfassen cw_mps 227 und cw_lps 228 8-Bit-Kodewörter. Die kombinierte Tabelle 301 gibt ebenso eine Anzeige der Anzahl der Bits in der Ausgabe aus. Insbesondere gibt die kombinierte Tabelle 301 size_mps 230 aus, das die Größe der Kodewörter anzeigt, das heißt die Anzahl der Bits in cw_mps 227, und gibt size_lps 231 aus, das die Größe der Kodewörter anzeigt, das heißt die Anzahl der Bits in cw_lps 228, die jeweils das aktuelle Bitmuster enthalten. Bei einer Ausführungsform umfaßt sowohl size_mps 230 als auch size_lps 231 4 Bits. Die Ausgaben der kombinierten Tabelle 301 beinhalten ebenso state_mps 233 als auch state_lps 234, die die nächsten Entropiekodiererzustände anzeigen, falls jeweilig ein MPS oder ein LPS ausgegeben wird. Bei einer Ausführungsform umfaßt jeder state_mps 233 und state_lps 234 6 Bits.The combined table 301 is connected to the FSM state 236 from the entropy coding state memory 207 to recieve. In one embodiment, the entropy encoding state comprises 207 a register, temporary buffer, queue, or other storage mechanism. The combined table 301 works as a literacy LTU. Initially, the entropy coding state is 0 and the. Entropiekodiertabelle 206 gives cw_mps 227 and cw_lps 228 as codewords (bit patterns) as the coded data stream. In one embodiment, cw_mps 227 and cw_lps 228 8-bit codewords. The combined table 301 also outputs an indication of the number of bits in the output. In particular, there is the combined table 301 size_mps 230 indicating the size of the codewords, that is, the number of bits in cw_mps 227 , and gives size_lps 231 indicating the size of the codewords, that is, the number of bits in cw_lps 228 , each containing the current bit pattern. In one embodiment, both size_mps 230 as well as size_lps 231 4 bits. The outputs of the combined table 301 also include state_mps 233 as well as state_lps 234 indicating the next entropy encoder states if an MPS or an LPS is output, respectively. In one embodiment, each includes state_mps 233 and state_lps 234 6 bits.

Die Bitlogik 204 vergleicht das zu kodierende Bit, bit_in 222, mit mps 215 und aktiviert die Wahrscheinlich-Anzeige 223 (Wahrscheinlich-Anzeige 223 ist wahr), falls sie gleich sind. Auf der anderen Seite wird, falls sie nicht gleich sind, die Wahrscheinlich-Anzeige 223 nicht aktiviert (Wahrscheinlich-Anzeige 223 ist nicht wahr).The bit logic 204 compares the bit to be coded, bit_in 222 , with mps 215 and activates the probability display 223 (Probably display 223 is true), if they are the same. On the other hand, if they are not equal, the probability indicator 223 not activated (Probable display 223 is not true).

Falls die Wahrscheinlich-Anzeige 223 wahr ist (das heißt aktiviert), werden jeweilig cw_mps 227, size_mps 230 und state_mps 233 von den MUXs 208 bis 210 zu dem Bitstrom und next_FSM_state 235 bzw. nächsten FSM-Zustand 235 (der in dem Entropiekodierzustandsregister 207 geladen ist) ausgegeben. Ansonsten werden cw_lps 228, size_lps und state_lps 234 von den MUXs 208 bis 210 jeweilig ausgegeben.If the probability display 223 true (that is, activated) will become respectively cw_mps 227 , size_mps 230 and state_mps 233 from the MUXs 208 to 210 to the bitstream and next_FSM_state 235 or next FSM state 235 (which in the entropy coding state register 207 loaded). Otherwise, cw_lps 228 , size_lps and state_lps 234 from the MUXs 208 to 210 respectively issued.

Die Wahrscheinlichkeitsschätzlogik 205 bestimmt next_mps 212 und steuert, ob der nächste PSTATE (next_pstate 213) der aktuelle pstate ist, wie durch pstate 234 angezeigt ist, oder einer der aktualisierten Werte pstate_mps 216 oder pstate_lps 217 ist. Diese Steuerung tritt teilweise auf, indem eine Auswahlanzeige 220 für MUX 203 erzeugt wird, wie oben beschrieben wurde.The probability estimation logic 205 determined next_mps 212 and controls whether the next PSTATE (next_pstate 213 ) the current pstate is as through pstate 234 is displayed, or one of the updated pstate_mps values 216 or pstate_lps 217 is. This control partially occurs by a selection display 220 for MUX 203 is generated as described above.

Next_mps 212 und next-pstate 213 werden ebenso zu der Stelle des Kontextspeichers 201 geschrieben, der durch den Kontext 211 adressiert ist. Das heißt, die Adresse umfaßt Kontext 211 und die zu schreibenden Daten umfassen next_mps 212 und next_pstate 213.Next_mps 212 and next-pstate 213 become also the place of the context memory 201 written by the context 211 is addressed. That is, the address includes context 211 and the data to be written includes next_mps 212 and next_pstate 213 ,

Der Dekodierbetrieb der 3 ist ähnlich. Als erstes wird der Kontext 211 verwendet, um den Kontextspeicher 201 zu adressieren. In Antwort auf den Kontext 211 gibt der Kontextspeicher 201 pstate 234 und mps 215 aus. Die Anzahl der Adressenbits (und Speicherstellen) ist anwendungsabhängig. Bei einer Ausführungsform werden 540 Speicherstellen verwendet. Der Kontextspeicher 201 gibt 9 Bits für pstate 234 und 1 Bit für mps 215 aus.The decoding mode of the 3 is similar. First, the context 211 used the context memory 201 to address. In response to the context 211 gives the context memory 201 pstate 234 and mps 215 out. The number of address bits (and memory locations) is application dependent. In one embodiment 540 Memory locations used. The context memory 201 gives 9 bits for pstate 234 and 1 bit for mps 215 out.

In Antwort auf die Eingabe von pstate 234 gibt die kombinierte Tabelle 301 den nächsten Wahrscheinlichkeitsschätzzustand PSTATE aus, falls ein MPS auftritt und eine Aktualisierung des PSTATE erforderlich ist. Die kombinierte Tabelle 301 gibt ebenso den nächsten PSTATE aus und, ob das MPS (von 0 auf 1 oder 1 auf 0) umgeschaltet werden sollte, wie durch die Umschaltanzeige 218 angezeigt ist, falls ein LPS auftrat und eine Aktualisierung des PSTATE erforderlich ist. Bei einer Ausführungsform umfaßt die Umschaltanzeige 218 ein 1-Bit-Signal. Die nächsten Wahrscheinlichkeitsschätzzustände umfassen, wenn ein MPS auftrat, ein pstate_mps 216, und wenn ein LPS auftritt, ein pstate_lps 217. Pstate_mps 216 und pstate_lps 217 werden zusammen mit pstate 234 zu dem MUX 203 eingegeben. Die Wahrscheinlichkeitsschätzlogik 205 gibt eine Auswahlanzeige 220 aus, die unter den Wahrscheinlichkeitsschätzzuständen an den Eingängen von MUX 203 als dem nächsten Wahrscheinlichkeitsschätzzustand next_pstate 213 auswählt.In response to the input of pstate 234 gives the combined table 301 the next probability estimate state PSTATE if an MPS occurs and an update of the PSTATE is required. Combined table 301 also outputs the next PSTATE and whether the MPS should be toggled (from 0 to 1 or 1 to 0), as by the toggle indication 218 is displayed if an LPS occurred and an update of the PSTATE is required. In one embodiment, the toggle indication includes 218 a 1-bit signal. The next probability estimation states include, if an MPS occurred, a pstate_mps 216 and when an LPS occurs, a pstate_lps 217 , Pstate_mps 216 and pstate_lps 217 be together with pstate 234 to the mux 203 entered. The probability estimation logic 205 gives a selection display 220 from among the probability estimation states at the inputs of MUX 203 as the next probability estimation state next_pstate 213 selects.

Der FSM-Zustand 236 (von dem Entropiekodierzustandsregister 207) ist ebenso eine Eingabe zu der kombinierten Tabelle (LUT) 301. Bei einer Ausführungsform umfaßt der Entropiekodierzustand 207 ein Register, einen temporären Puffer, eine Schlange oder einen anderen Speichermechanismus. Die kombinierte Tabelle 301 arbeitet als eine Biterzeugungs-LUT. Anfänglich ist der Entropiekodierzustand 0. Die kombinierte Tabelle 301 gibt cw_mps 227 und cw_lps 228 als Kodewörter (Bitmuster, Tokens, Symbole usw.) als den kodierten Datenstrom aus, und zwar in Abhängigkeit davon, ob eine Wahrscheinlich-Anzeige 223 aktiviert ist. Bei einer Ausführungsform umfassen cw_mps 227 und cw_lps 228 8-Bit-Kodewörter. Bei einer Ausführungsform, die nur dekodiert, werden cw_mps 227 und cw_lps 228 nicht benötigt. Die Entropiekodiertabelle 206 gibt ebenso eine Anzeige der Anzahl der Bits in der Ausgabe aus. Insbesondere gibt die Entropiekodiertabelle 206 size_mps 230 und size_lps 231 aus, die die Größe der Kodewörter, das heißt jeweilig die Anzahl der Bits in cw_mps 227 und cw_lps 228, die die aktuellen Bitmuster enthalten. Bei einer Ausführungsform umfassen sowohl size_mps 230 als auch size_lps 231 4 Bits. Die Ausgaben der kombinierten Tabelle 301 beinhalten ebenso state_mps 233 und state_lps 234, die die nächsten Entropiekodiererzustände anzeigen, falls ein MPS oder ein LPS jeweilig ausgegeben wird. Bei einer Ausführungsform umfassen state_mps 233 und state_lps 234 6 Bits.The FSM state 236 (from the entropy coding state register 207 ) is also an input to the combined table (LUT) 301 , In one embodiment, the entropy encoding state comprises 207 a register, temporary buffer, queue, or other storage mechanism. The combined table 301 works as a bit-generating LUT. Initially, the entropy coding state is 0. The combined table 301 gives cw_mps 227 and cw_lps 228 as codewords (bit patterns, tokens, symbols, etc.) as the coded data stream, depending on whether a probable display 223 is activated. In one embodiment, cw_mps 227 and cw_lps 228 8-bit codewords. In one embodiment that only decodes, cw_mps 227 and cw_lps 228 not required. The entropy coding table 206 also outputs an indication of the number of bits in the output. In particular, the entropy coding table gives 206 size_mps 230 and size_lps 231 which is the size of the codewords, that is, the number of bits in cw_mps 227 and cw_lps 228 containing the current bit patterns. In one embodiment, both size_mps 230 as well as size_lps 231 4 bits. The outputs of the combined table 301 also include state_mps 233 and state_lps 234 indicating the next entropy coder states if an MPS or an LPS is respectively output. In one embodiment, state_mps 233 and state_lps 234 6 bits.

Die Bitlogik 204 der 3 arbeitet in derselben Art und Weise, wie oben in Verbindung mit 2 beschrieben wurde, und zwar einschließlich der Durchführung des Dekodierens unter Verwendung eines Aufspaltwertes 226 und einer fps-Anzeige 225.The bit logic 204 of the 3 works in the same way as above in conjunction with 2 including the performance of decoding using a split value 226 and a fps ad 225 ,

Falls die Wahrscheinlich-Anzeige 223 wahr ist, wird state_mps 223 von MUX 210 als nächster FSM-Zustand 235 ausgegeben, der in das Entropiekodierzustandsregister 207 geladen wird. Ebenso, falls die Wahrscheinlich-Anzeige 223 wahr ist, wird size_mps 230 von MUX 209 ausgegeben, um die Anzahl der Bits der kodierten Daten zu spezifizieren, die beim Dekodieren verwendet worden sind und nicht mehr benötigt werden. Dies ermöglicht die Steuerung eines Schieberegisters (nicht gezeigt, um eine Verschleierung der Erfindung zu vermeiden), das bei coded_data_in 221 eine Verschiebung durchführt. Ansonsten werden, falls die Wahrscheinlich-Anzeige 223 nicht wahr ist, jeweilig size_lps 231 und state_lps 234 von MUXs 209 und 210 ausgegeben. Bemerkenswert ist, daß coded_data_out 229 während des Dekodierens nicht verwendet wird (das heißt "man muß sich nicht darum kümmern").If the probability display 223 true is state_mps 223 from MUX 210 as the next FSM state 235 output to the entropy coding state register 207 is loaded. Likewise, if the probability display 223 true is size_mps 230 from MUX 209 to specify the number of bits of coded data used in decoding and no longer needed the. This allows control of a shift register (not shown to avoid obfuscation of the invention) used in coded_data_in 221 makes a shift. Otherwise, if the probability display 223 is not true, respectively size_lps 231 and state_lps 234 of muxs 209 and 210 output. It is noteworthy that coded_data_out 229 is not used during decoding (that is, "you do not have to worry about it").

Die Wahrscheinlichkeitsschätzlogik 205 bestimmt next_mps 212 und steuert, ob der nächste PSTATE next_pstate 213 der aktuelle PSTATE pstate 234 ist oder einer der aktualisierten Werte pstate_mps 216 oder pstate_lps 217 ist. Diese Steuerung tritt teilweise auf, indem eine Auswahlanzeige 220 für MUX 203 erzeugt wird, wie oben beschrieben wurde.The probability estimation logic 205 determined next_mps 212 and controls if the next PSTATE next_pstate 213 the current PSTATE pstate 234 or one of the updated pstate_mps values 216 or pstate_lps 217 is. This control partially occurs by a selection display 220 for MUX 203 is generated as described above.

Next_mps 212 und next_pstate 213 werden zu der Stelle des Kontextspeichers 201 geschrieben, die durch den Kontext 211 adressiert ist. Das heißt, die Adresse umfaßt Kontext 211 und die Daten, die zu schreiben sind, umfassen next_mps 212 und next_pstate 213. Die LUTs, die als "getrennt" bzw. "separat" bezeichnet sind, erfordern eine "reine Wahrscheinlichkeitsschätzungs"-LUT. Die LUTs, die als "kombiniert" bezeichnet sind, erfordern keine "reine Wahrscheinlichkeitsschätzungs"-LUT.Next_mps 212 and next_pstate 213 become the place of the context memory 201 written by the context 211 is addressed. That is, the address includes context 211 and the data to be written includes next_mps 212 and next_pstate 213 , The LUTs, labeled "disconnected" or "separate," require a "pure probability estimate" LUT. The LUTs, referred to as "combined", do not require a "pure probability estimate" LUT.

Die Tabelle 2 faßt die Größen der verschiedenen LUTs zusammen. Diese Tabelle zeigt die signifikanten Einsparungen bei der Verwendung einer einzigen Kodier-/Dekodiertabelle mit Aufspaltpunkten zum Kodieren über die Verwendung der Nur-Dekodier-Tabellen, die den Kodestrom als eine Eingabe verwenden. Nimmt man Bezug auf Tabelle 2, so erfordern LUTs, die mit "separat" bezeichnet sind, eine "reine Wahrscheinlichkeitsschätzungs"-LUT, während LUTs, die als "kombiniert" bezeichnet sind, keine "reine Wahrscheinlichkeitsschätzungs"-LUT benötigen.The Table 2 summarizes the sizes of different LUTs together. This table shows the significant ones Savings when using a single encoding / decoding table with splitting points for encoding via the use of the decode-only tables containing the Use code stream as an input. If one refers to table 2, LUTs labeled "separate" require a "pure probability estimate" LUT, while LUTs, which are called "combined", do not need a "pure probability estimation" LUT.

Tabelle 2 LUT-Größen

Figure 00230001
Table 2 LUT sizes
Figure 00230001

Logik-basierter FSM-KodiererLogic-based FSM encoder

Bei einer Ausführungsform ist der FSM-Kodierer als Hardware realisiert. Die folgende Beschreibung legt wenigstens eine derartige Ausführungsform dar.at an embodiment the FSM encoder is implemented as hardware. The following description sets at least one such embodiment represents.

Ein gewisser Teil der Beschreibung wird in einer beispielhaften, an das Verhalten angelehnten Verilog-Hardware-Beschreibungssprache gegeben ("HDL" steht für "Hardware-Beschreibungssprache").One some of the description will be given in an exemplary manner the behavior inspired Verilog hardware description language ("HDL" stands for "hardware description language").

Der FSM-Kodierer der vorliegenden Erfindung reduziert die Hardwarekosten. Bei einer Ausführungsform wird die Größe der Entropiekodierer-(Biterzeugungs-)Nachschlagtabelle signifikant reduziert und bei manchen Ausführungsformen wird ihre Größe im wesentlichen auf ein Minimum reduziert, bei dem redundante Einträge nicht verwendet werden. Die Logik erzeugt die gesamte benötigte Information von den nicht redundanten LUT-Einträgen. Die Kodewort-Bitmuster und die Längen müssen nicht durch die LUT erzeugt werden; sie werden durch Logik erzeugt.Of the FSM encoder of the present invention reduces hardware costs. In one embodiment becomes the size of the entropy coder (bitmap) lookup table significantly reduced and in some embodiments, their size becomes substantially reduced to a minimum, with the redundant entries not be used. The logic generates all the information needed from the non-redundant LUT entries. The Codeword bit pattern and the lengths have to not generated by the LUT; they are generated by logic.

4 ist ein Blockdiagramm einer Ausführungsform des FSM-Kodierers der vorliegenden Erfindung. Die pem_expand Einheit 401 ist mit der pem_code-Einheit 402 und der bit_generate_Einheit 403 verbunden. Die pem_code-Einheit 402 ist ebenso mit der bit_generate-Einheit 403 verbunden. Die Packeinheit 404 und die Entpackeinheit 405 sind ebenso mit der bit_generate-Einheit bzw. Biterzeugungseinheit 403 verbunden. 4 Fig. 10 is a block diagram of one embodiment of the FSM encoder of the present invention. The pem_expand unit 401 is with the pem_code unit 402 and the bit_generate_unit 403 connected. The pem_code unit 402 is the same with the bit_generate unit 403 connected. The packing unit 404 and the unpacking unit 405 are also with the bit_generate unit or bit generation unit 403 connected.

Die pem_code-Einheit 402 enthält den Kontextspeicher und führt mehrere Kontextwahrscheinlichkeitsschätzungen durch. Die pem_expand-Einheit 401 konvertiert einen PSTATE, wie z.B. einen pstate 234, in die Transformation, die jenen PSTATE beschreibt. Die bit_generate-Einheit 403 führt die Konversion zwischen unkodierten Bits und kodierten Bits in Antwort auf eine PCLASS, wie z.B. pclass 219 durch. Die Packeinheit 404 kombiniert Kodewörter variabler Länge in Bytes, wenn kodiert wird, wäh rend die Entpackeinheit 405 eine Verschiebung mit variabler Länge der Bytes des kodierten Datenstroms während des Dekodierens durchführt.The pem_code unit 402 contains the context memory and performs several context probability estimates. The pem_expand unit 401 converts a PSTATE, such as a pstate 234 into the transformation that describes that PSTATE. The bit_generate unit 403 performs the conversion between uncoded bits and encoded bits in response to a PCLASS, such as pclass 219 by. The packing unit 404 combines codewords of variable length in bytes, when coded, during the unpacking unit 405 performs a variable length shift of the bytes of the coded data stream during decoding.

Die Eingänge zu dem FSM-Kodierer 400 sind wie folgt.The inputs to the FSM encoder 400 are as follows.

bit_in 222 bit_in 222 Eingabe zu der pem_code-Einheit 402, die das während des Kodierens zu kodierende Bit anzeigt.Input to the pem_code unit 402 which indicates the bit to be coded during encoding. data_in 221 data_in 221 Eingabe zu der Entpackeinheit 405, die den kodierten Datenstrom (Bitstrom während des Dekodierens) anzeigt. Bei einer Ausführungsform werden die Daten jeweils als ein Byte pro Zeiteinheit eingegeben, obwohl andere Größen für die Dateneinträge verwendet werden können.Entry to the unpacking unit 405 indicating the coded data stream (bit stream during decoding). In one embodiment, the data is entered as one byte at a time, although other sizes may be used for the data entries. Kontext 211 context 211 Das Kontextbin (Kontextspeicheradresse), das zu der pem_code-Einheit 407, eingegeben wird.The context bin (context store address) associated with the pem_code unit 407 , is entered. Takt 410 clock 410 Systemtakteingang zu der pem_code-Einheit 402, Packeinheit 404, bit_generate-Einheit 403 und Entpackeinheit 405. Bei einer Ausführungsform kann der Takteingang 410 als ein Freigabesignal für den FSM-Kodierer dienen.System clock input to the pem_code unit 402 , Packing unit 404 , bit_generate unit 403 and unpacking unit 405 , In one embodiment, the clock input 410 serve as an enable signal for the FSM encoder. Freigabe 414 release 414 Steueranzeige (z.B. ein Signal bzw. Signale), die angeschlossen ist, um von der pem_code-Einheit 402, der bit_generate-Einheit 403, der Packeinheit 404 und der Entpackeinheit 405 empfangen zu werden, um das Kodieren oder Dekodieren eines Bits in dem aktuellen Taktzyklus freizugeben.Control indicator (eg a signal or signals) connected to the pem_code unit 402 , the bit_generate unit 403 , the packing unit 404 and the unpacking unit 405 to enable the encoding or decoding of a bit in the current clock cycle. Kodieren 415 Encode 415 Steueranzeige (z.B. ein Signal bzw. Signale), um eine Kodieren oder Dekodieren auszuwählen.control display (e.g., a signal) to encode or decode select. Flush 413 flush 413 Steueranzeige (z.B. ein Signal bzw. Signale), um ein "Flushen" bzw. Räumen am Ende des Kodierens. Das Flush-Signal 413 bewirkt, daß eine bit_generate-Einheit 403 geräumt wird. Das "Flushen" bzw. Räumen bezieht sich auf die Operation, die am Ende des Kodierens auftritt, wo jegliche Information, die noch nicht zuControl display (eg a signal or signals) to "Flushen" or spaces at the end of the coding. The flush signal 413 causes a bit_generate unit 403 is vacated. "Flushing" refers to the operation that occurs at the end of the coding, where any information that is not yet available

Rücksetzen 411 reset 411 dem Kodestrom ausgegeben wurde, ausgegeben wird. Wenn die bit_generate-Einheit 403 das Räumen vollendet hat, wird ein bg_done_flush_Signal 416 der Packeinheit 404 aktiv zugeführt. In Antwort auf das bg_done_flush_Signal 416 und das Flush-Signal 413 räumt sich die Packeinheit 404 selbst. Wenn das Räumen bzw. "Flushen" vollendet ist, aktiviert die Packeinheit 404 das done_flush_Signal 424. Asynchrone Initialisierungsanzeige (z.B. ein Signal bzw. Signale) für alle Speicherelemente (z.B. Flip-Flops) in der pem_code-Einheit 402, Packeinheit 404, bit_generate-Einheit 403 und Entpackeinheit 405. In Antwort darauf, daß das Rücksetzen 411 deaktiviert wird, werden die internen Speicher gelöscht, und zwar einschließlich der Kontextspeicher in der pem_code-Einheit 402.is outputted from the code stream. If the bit_generate unit 403 which has completed spaces becomes a bg_done_flush_signal 416 the packing unit 404 actively fed. In response to the bg_done_flush_signal 416 and the flush signal 413 The pack unit admits itself 404 itself. When the flushing is completed, the packing unit activates 404 the done_flush_signal 424 , Asynchronous initialization display (eg a signal or signals) for all memory elements (eg flip-flops) in the pem_code unit 402 , Packing unit 404 , bit_generate unit 403 and unpacking unit 405 , In response to that resetting 411 is disabled, the internal memories are cleared, including the context memories in the pem_code unit 402 ,

Die Ausgaben des FSM-Kodierers lauten wie folgt.The Issues of the FSM encoder are as follows.

data_out 229 data_out 229 Kodierte Daten (Bitstrom) während des Kodierens. Bei einer Ausführungsform werden die Daten byteweise ausgegeben, obwohl andere Größen für die Datenausgabe verwendet werden können.coded Data (bitstream) during of coding. In one embodiment the data is output byte by byte, although other sizes are for data output can be used. data_out_ready 423 data_out_ready 423 Steueranzeige (z.B. ein Signal bzw. Signale), um anzuzeigen, daß data_out 229 in dem aktuellen Taktzyklus gültig ist. "data_out_ready" steht für "Daten aus fertig".Control indicator (eg a signal or signals) to indicate that data_out 229 is valid in the current clock cycle. "data_out_ready" stands for "data done". bit_out 224 BIT_Out 224 Dekodiertes Bit. "bit_out" steht für "Bit aus".decoded Bit. "bit_out" stands for "bit off". reset_done 421 reset_done 421 Steueranzeige (z.B. ein Signal bzw. Signale), um anzuzeigen, daß ein Rücksetzen vollendet worden ist. Bei einer Ausführungsform zeigt reset_done 421 an, daß alle internen Speicher infolge einer Entaktivierung von Reset bzw. Rücksetzen gelöscht worden sind.Control indicator (eg, a signal) to indicate that a reset has been completed. In one embodiment, reset_done shows 421 indicates that all internal memories have been cleared due to deactivation of Reset.

done_flush 424 done_flush 424 Steueranzeige (z.B. ein Signal bzw. Signale), um anzuzeigen, daß ein Räumen vollendet worden ist, nachdem das Flush-Signal 413 aktiviert worden ist.Control display (eg, a signal) to indicate that a flush has been completed after the flush signal 413 has been activated.

Die pem_expand-Einheit 401 erzeugt ein pclass 219 in Antwort auf den pstate 234, der von dem pem_code-Einheit 402 in Antwort auf den Kontext 211 (dem sie entspricht) ausgegeben wird. Die pem_expand-Einheit 401 erzeugt ebenso eine Anzeige des nächsten PSTATE, falls ein MPS erzeugt wird, der als mps_pstate 216 bezeichnet wird, und eine Anzeige des nächsten PSTATE, falls ein MPS erzeugt wird, wie durch lps_pstate 217 angezeigt wird (wenn das MPS nicht umzuschalten ist). Sowohl mps_pstate 216 als auch lps_pstate 217 stellen PSTATEs dar, die verwendet werden, wenn eine PSTATE-Aktualisierung erforderlich ist. Die pem_expand-Einheit 401 erzeugt ebenso eine Umschaltanzeige 218, um anzuzeigen, daß das MPS (von 0 auf 1 oder von 1 auf 0) umgeschaltet werden sollte.The pem_expand unit 401 creates a pclass 219 in response to the pstate 234 that from the pem_code unit 402 in response to the context 211 (which corresponds to it) is issued. The pem_expand unit 401 also generates an indication of the next PSTATE if an MPS is generated, called mps_pstate 216 and an indication of the next PSTATE if an MPS is generated, as by lps_pstate 217 is displayed (if the MPS is not switched). Both mps_pstate 216 as well as lps_pstate 217 represent PSTATEs that are used when a PSTATE update is required. The pem_expand unit 401 also generates a toggle indication 218 to indicate that the MPS should be toggled (from 0 to 1 or from 1 to 0).

Die pem_expand-Einheit 401 zeigt ebenso an, ob eine Aktualisierung des PSTATE notwendig ist, wobei eine Aktualisierungsanzeige 412 verwendet wird. Bei einer Ausführungsform wird, falls die Aktualisierungsanzeige (z.B. ein Signal bzw. Signale) 412 aktualisiert wird, der PSTATE aktualisiert, und zwar ungeachtet des MPS-Wertes. Auf der anderen Seite tritt, falls eine Aktualisierungsanzeige 412 nicht aktiviert wird (das heißt nicht wahr ist), eine Aktualisierung nur auf, falls ein Kodewort abgegeben oder verwendet wird, falls die Größe des Kodewortes größer als 0 ist oder falls die Größe der Ausgabe kleiner als 0 ist. Die Größe der Ausgabe wird durch die Größe des ausgegebenen Kodeworts angezeigt, das wiederum durch die Größe der Anzeige 418 von der Biterzeugungslogik 403 angezeigt wird.The pem_expand unit 401 Also indicates whether updating the PSTATE is necessary, with an update display 412 is used. In one embodiment, if the update indicator (eg, a signal or signals) 412 is updated, the PSTATE updated, regardless of the MPS value. On the other hand, if an update message occurs 412 is not activated (that is, not true), updating only if a codeword is issued or used if the size of the codeword is greater than 0, or if the size of the output is less than zero. The size of the output is indicated by the size of the output code word, which in turn depends on the size of the display 418 from the biter generation logic 403 is shown.

In Antwort auf die pclass 219 führt die bit_generate-Einheit 403 eine Biterzeugung durch und zeigt an, ob das zu kodierende bit_in 222 dasselbe ist wie das MPS (z.B. MPS 520). Dieser Vergleich tritt in der pem_code-Einheit 402 auf, die detaillierter in 5 beschrieben ist (z.B. Vergleicher 512). Falls dem so ist, wird die Wahrscheinlich-Anzeige 223 aktiviert. In diesem Fall zeigt die Wahrscheinlich-Anzeige 223 an, daß ein Kodieren wahrscheinlich ist und sie wird in die pem_code-Einheit 402 eingegeben. In Antwort auf die Wahrscheinlich-Anzeige 223 setzt die pem_code-Einheit 402 bit_out 224 auf das MPS, falls die Wahrscheinlich-Anzeige 223 wahr ist, ansonsten auf ihr Komplement, und zwar in dem Fall, wo die Wahrscheinlich-Anzeige 223 nicht wahr ist.In response to the pclass 219 leads the bit_generate unit 403 a bit generation and indicates whether the bit_in to be coded 222 the same as the MPS (eg MPS 520 ). This comparison occurs in the pem_code unit 402 on, the more detailed in 5 is described (eg comparator 512 ). If so, the probable indicator becomes 223 activated. In this case, the probable indicator shows 223 an encoding is likely and it will be in the pem_code unit 402 entered. In response to the probable message 223 sets the pem_code unit 402 BIT_Out 224 on the MPS, in case the probability display 223 true, otherwise on its complement, in the case where the probability indicator 223 is not true.

Basierend auf den Eingabesignalen erzeugt die pem_code-Einheit 402 den nächsten pstate, pstate 234, und gibt ein dekodiertes Bit als bit_out 224 aus, wenn dekodiert wird. Während des Dekodierens wird jedoch bit_out 224 ignoriert und die encode_likely-Anzeige ("Kodier-Wahrscheinlich-Anzeige") 422 wird aktiviert und durch die bit_generate-Einheit 403 empfangen. Während des Dekodierens wird die Kodieranzeige 415 nicht aktiviert und die Entpackeinheit 405 entpackt die Datenbytes in Kodewörter variabler Länge, die als Kodestrom 419 zu der bit_generate-Einheit 403 ausgegeben werden. Die Entpackeinheit 405 gibt ebenso ein data_in_next-Signal 420 aus, das anzeigt, daß der aktuelle Eingang von data_in 221 verbraucht worden ist, und das nächste Datenbit anfordert.Based on the input signals, the pem_code unit generates 402 the next pstate, pstate 234 , and returns a decoded bit as bit_out 224 off when decoding. During decoding, however, bit_out becomes 224 ignored and the encode_likely ad ("Coding Probable Display") 422 is activated and by the bit_generate unit 403 receive. During decoding, the coding display becomes 415 not activated and the unpacking unit 405 unpacks the data bytes into variable length codewords, which are code stream 419 to the bit_generate unit 403 be issued. The unpacking unit 405 also gives a data_in_next signal 420 indicating that the current input of data_in 221 has been consumed and is requesting the next data bit.

In Antwort auf den Kodestrom 419 und die pclass 219 erzeugt die bit_generate-Einheit 403 ein Kodewort 417 und eine Größenanzeige 418. In Antwort auf die Kodewörter 417 und die Größenanzeige 418 kombiniert die Packeinheit 404 die Kodewörter variabler Länge in Bytes.In response to the code stream 419 and the pclass 219 bit_generate unit 403 generates a codeword 417 and a size indicator 418 , In response to the code words 417 and the size indicator 418 combines the packing unit 404 the variable length codewords in bytes.

Bei einer Ausführungsform kann ein bit_out_Signal 424 verwendet werden, um das Kontextmodell zu aktualisieren, um das Kodieren und das Dekodieren gleich zu machen. Die Packeinheit 404 wird nicht verwendet, wenn dekodiert wird.In one embodiment, a bit_out_signal 424 can be used to update the context model to make coding and decoding equal. The packing unit 404 is not used when decoding.

Jede dieser Einheiten wird detaillierter im folgenden beschrieben.each these units will be described in more detail below.

Eine beispielhafte Verilog-HDL-Beschreibung der 4 lautet wie folgt. Dabei steht hier und im folgenden "clock" für "Takt"; "reset" für "Rücksetzen"; "bit_in" für "Bit ein"; "context" für "Kontext"; "data_in" für "Daten ein"; "encode" für "kodieren"; "enable" für "freigeben"; "flush" für "räumen"; "reset_done" für "Rücksetzen durchgeführt"; "bit_out" für "Bit aus"; "data_out" für "Daten aus"; "data_out_ready" für "Daten aus fertig"; "data_in next" für "Daten ein nächstes"; "done_flush" für "fertig räumen"; "codeword" für "Kodewort"; "codestream" für "Kodestrom"; "size" für "Größe"; "encode_likely" für "kodieren wahrscheinlich"; "likely" für "wahrscheinlich"; "switch" für "umschalten"; "update" für "aktualisieren"; "in" jeweils für "ein" und "out" jeweils für "aus". Die englischen Begriffe wurden bei der folgenden Hardware-Beschreibungssprache im Einklang mit der in der Fachwelt üblichen Verwendung von englischen Begriffen bei einer Beschreibungssprache beibehalten.
// Copyright bzw. Urheberrecht 1997 RICOH
// FSM-Entropiekodierer (mit Wahrscheinlichkeitsschätzung und Kontextspeicher)

Figure 00290001
Figure 00300001
Figure 00310001
An exemplary Verilog HDL description of 4 as follows. Here and in the following "clock" stands for "clock";"reset" for "reset";"bit_in" for "bit on";"context" for "context";"data_in" for "data in";"encode" for "encode";"enable" for "enable";"flush" for "clearing";"reset_done" for "reset performed";"bit_out" for "bit off";"data_out" for "data out";"data_out_ready" for "data done";"data_innext" for "data next";"done_flush" for "finish cleaning";"codeword" for "codeword";"codestream" for "code stream";"size" for "size";"encode_likely" for "likely to encode";"likely" for "likely";"switch" for "toggle";"update" for "update";"in" for "on" and "out" for "off" respectively. The English terms have been retained in the following hardware description language in accordance with the usual use of English terms in a description language in the art.
// Copyright or Copyright 1997 RICOH
// FSM entropy coder (with probability estimation and context memory)
Figure 00290001
Figure 00300001
Figure 00310001

Mehrfach-Kontext-WahrscheinlichkeitsschätzungMultiple Context probability estimate

Ein Blockdiagramm einer Ausführungsform einer pem_code-Einheit 402, die den Kontextspeicher enthält und eine Mehrfach-Kontext-Wahrscheinlichkeitsschätzung durchführt, ist in 5 gezeigt.A block diagram of one embodiment of a pem_code unit 402 that contains the context memory and performs a multi-context probability estimation is in 5 shown.

Nimmt man Bezug auf 5, so ist die Speicher-Freigabelogik 502 angeschlossen, um eine Aktualisierungsanzeige 412, eine Größenanzeige 418 und eine Freigabeanzeige 414 zu empfangen. In Antwort auf diese Eingaben erzeugt die Speicherfreigabelogik 502 eine Ausgabe, die mit einem Eingang eines OR- bzw. ODER-Gatters 505 verbunden ist. Die Rücksetzanzeige 411 ist mit den Eingängen des Rücksetzzählers 503 und der Rücksetzendurchgeführt-Logik ("reset_done"-Logik) 504. Die Ausgabe des Rücksetzzählers 503 ist ebenso mit einem anderen Eingang der Rücksetz-durchgeführt-Logik 504 sowie mit einem Eingang des MUX 507 verbunden. Der Ausgang der Rücksetz-durchgeführt-Logik 504 ist ein Auswahlsignal, das mit den MUXs 507 bis 509 verbunden ist und mit einem negierenden Eingang der ODER-Gatter-Logik 505 verbunden ist. Der Ausgang der Rücksetz-durchgeführt-Logik 504 wird ebenso als Rücksetz-durchgeführt-Anzeige 521 ausgegeben. Der Ausgang des ODER-Gatters 505 ist mit dem Schreiben-Freigabe-Eingang des Kontextspeichers 501 verbunden.If you take reference 5 so is the memory release logic 502 connected to an update screen 412 , a size indicator 418 and a release indicator 414 to recieve. In response to these inputs, the memory enable logic generates 502 an output connected to an input of an OR or OR gate 505 connected is. The reset indicator 411 is with the inputs of the reset counter 503 and the reset-done logic ("reset_done" logic) 504 , The output of the reset counter 503 is also with another input to the reset-performed logic 504 as well as with an input of the MUX 507 connected. The output of the reset performed logic 504 is a selection signal that comes with the MUXs 507 to 509 is connected and with a negating input of the OR gate logic 505 connected is. The output of the reset performed logic 504 is also performed as a reset-done display 521 output. The output of the OR gate 505 is with the write-enable input of the context memory 501 connected.

Die MUXs 507-509 sind zwei Eingangsmultiplexer. Der andere Eingang des MUX 507 ist mit dem Kontext 211 verbunden. Der MUX 508 ist angeschlossen, um einen anfänglichen pstate und den Ausgang des MUX 506 zu empfangen. Bei einer Ausführungsform beträgt der anfänglich pstate 262. Andere anfängliche Pstates können verwendet werden. Eine Auswahl der anfänglichen pstates ermöglicht eine schnellere Adaption bzw. Anpassung. Zur weiteren Information über eine schnellere Anpassung wird auf die US-Patentanmeldung Nr. 08/768,237 verwiesen, die den Titel trägt "Method and Apparatus for Encoding and Decoding Data" und am 17. Dezember 1996 eingereicht wurde und dem Anmelder der vorliegenden Erfindung übertragen wurde und hiermit durch Bezugnahme mit aufgenommen wird.The muxs 507 - 509 are two input multiplexers. The other entrance of the MUX 507 is with the context 211 connected. The MUX 508 is connected to an initial pstate and the output of the mux 506 to recieve. In one embodiment, the initial is pstate 262 , Other initial pstates can be used. A selection of the initial pstates allows for faster adaptation. For further information on a more rapid adaptation, reference is made to U.S. Patent Application Serial No. 08 / 768,237, entitled "Method and Apparatus for Encoding and Decoding Data" filed December 17, 1996 and assigned to the assignee of the present invention and incorporated herein by reference.

Die Eingänge des MUX 506 sind angeschlossen, um mps_pstate 216 und lps_pstate 217 zu empfangen, von denen einer in Antwort auf eine Wahrscheinlich-Anzeige 223 ausgewählt wird, die an den Auswahleingang MUX 506 angeschlossen ist. Die Eingänge von MUX 509 sind an den Initialisierungswert (z.B. 0 bei einer Ausführungsform) und den Ausgang der MPS-Aktualisierungslogik 510 angeschlossen. Die Eingänge der MPS-Aktualisierungslogik 510 sind angeschlossen, um eine Wahrscheinlich-Anzeige 223, eine Umschaltanzeige 218 und ein MPS 520 zu empfangen, das von dem Kontextspeicher 501 ausgegeben wird. Die Ausgänge eines jeden MUX 507 bis 509 sind an die Eingänge eines Kontextspeichers 501 angeschlossen.The inputs of the MUX 506 are connected to mps_pstate 216 and lps_pstate 217 to receive, one of which in response to a probable indication 223 is selected, which is to the selection input MUX 506 connected. The inputs of MUX 509 are at the initialization value (eg 0 in one embodiment) and the output of the MPS update logic 510 connected. The inputs to the MPS update logic 510 are connected to a probable ad 223 , a switchover indicator 218 and an MPS 520 to receive that from the context store 501 is issued. The outputs of each mux 507 to 509 are to the inputs of a context memory 501 connected.

MPS 520, das von dem Kontextspeicher 501 ausgegeben wird, ist an einen Eingang des Vergleichers 511 und einen Eingang des Vergleichers 512 angeschlossen. Der andere Eingang des Vergleichers 511 umfaßt eine Wahrscheinlich-Anzeige 223, während der andere Eingang zu dem Vergleicher 512 ein bit_in 222 umfaßt. Obwohl es nicht gezeigt ist, um eine Verschleierung der Erfindung zu vermeiden, ist das Taktsignal 510 an alle Register und Zähler angeschlossen.MPS 520 that from the context store 501 is output to an input of the comparator 511 and an input of the comparator 512 connected. The other input of the comparator 511 includes a probable message 223 while the other input to the comparator 512 a bit_in 222 includes. Although not shown to avoid obscuring the invention, the clock signal 510 is connected to all registers and counters.

Die Rücksetzanzeige 411 löscht den reset_counter bzw. Rücksetzzähler 503 auf 0. Nachdem das Rücksetzen bzw. "reset" deaktiviert ist, erzeugt der reset_counter bzw. Rücksetzzähler 503 Adressen für jede Kontextspeicherstelle in dem Kontextspeicher 501 und ein anfänglicher PSTATE und ein anfängliches MPS werden zu jeder Kontextspeicherstelle geschrieben. Die Anfangswerte werden geschrieben, indem MUXs 507 bis 509 in Verbindung mit dem reset_done_Signal bzw. Rücksetzen-durchgeführt-Signal 421, das von der Rücksetzen-durchgeführt-Logik 504 ausgegeben wird, verwendet werden. Das reset_done_Signal 421 wirkt als ein Auswählsignal für die MUXs 507 bis 509, wobei Kontextspeicheradressen von dem Rücksetzzähler 503 mit dem MUX 507, ein anfänglicher pstate mit MUX 508 und ein anfänglicher MPS mit MUX 509 ausgewählt werden. Bei einer Ausführungsform werden der anfänglich PSTATE-Wert 262 und der anfängliche MPS-Wert von 0 in Speicherstellen im Kontextspeicher 501 geschrieben. Nachdem alle Speicherstellen initialisiert worden sind, aktiviert die Rücksetzen-durchgeführt-Logik 504 die reset_done_Anzeige 421.The reset indicator 411 clears the reset_counter or reset counter 503 to 0. After the reset is deactivated, the reset_counter or reset counter is generated 503 Addresses for each context location in the context memory 501 and an initial PSTATE and an initial MPS are written to each context location. The initial values are written by MUXs 507 to 509 in conjunction with the reset_done_signal or reset-performed signal 421 that by the reset-performed logic 504 is spent. The reset_done_signal 421 acts as a selection signal for the MUXs 507 to 509 where context memory addresses from the reset counter 503 with the mux 507 , an initial pstate with mux 508 and an initial MPS with MUX 509 to be selected. In one embodiment, the initially PSTATE value 262 and the initial MPS value of 0 in memory locations in the context memory 501 written. After all memory locations have been initialized, the reset performed logic activates 504 the reset_done_display 421 ,

Während des Kodierens wird in einen Kontextspeicher 501 geschrieben, wenn sein Schreib-Freigabe-(WE)-Eingang aktiviert ist. Der WE-Eingang des Kontextspeichers 501 wird aktiviert, wenn der Ausgang der ODER-Gatelogik 509 auf hoch ist. Der Ausgang der ODER-Gatelogik 509 ist auf hoch, wenn der Ausgang der Rücksetzen-durchgeführt-Logik 504 auf niedrig ist, was anzeigt, daß das Rücksetzen nicht vollendet worden ist, oder wenn der Ausgang der Speicherfreigabelogik 502 auf hoch ist.While coding is in a context memory 501 if its write enable (WE) input is activated. The WE input of the context memory 501 is activated when the output of the OR gate logic 509 is on high. The output of the OR gate logic 509 is high when the output of the reset-performed logic 504 is low, indicating that the reset has not been completed, or if the output of the memory enable logic 502 is on high.

Wenn in den Kontextspeicher 501 geschrieben wird und nicht in Rücksetzen bzw. "reset", wird eine Kontextmodelladresse vom Kontext 211 über MUX 507, der nächste Wahrscheinlichkeitsschätzzustand über MUX 508 und das MPS über MUX 509 bereitgestellt. Der Eingang des MUX 508 ist der Ausgang des MUX 506, bei dem es sich entweder um einen mps_pstate 216 oder einen lps_pstate 217 handelt, wobei einer davon basierend auf einer Wahrscheinlich-Anzeige 223 ausgewählt wird. Der MPS-Wert von der MPS-Aktualisierlogik 510 ist das Komplement des MPS-Wertes, falls die Umschaltanzeige 218 aktiviert wird und falls ein LPS auftritt.If in the context memory 501 is written and not in reset, becomes a context model address of the context 211 via MUX 507 , the next probability estimation state via MUX 508 and the MPS via MUX 509 provided. The entrance of the MUX 508 is the output of the MUX 506 which is either a mps_pstate 216 or a lps_pstate 217 one of which is based on a probable indication 223 is selected. The MPS value from the MPS update logic 510 is the complement of the MPS value if the toggle indication 218 is activated and if an LPS occurs.

Bei den Daten, die in den Kontextspeicher 501 geschrieben werden, handelt es sich um den PSTATE, der durch die Wahrscheinlich-Anzeige 223 ausgewählt wird, und um das MPS, das geändert wird, wenn die Wahrscheinlich-Anzeige 223 0 ist und die Umschaltanzeige 218 1 ist. Bei einer Ausführungsform gibt, falls die Wahrscheinlich-Anzeige 223 wahr ist, MUX 506 mps_pstate 216 aus; ansonsten gibt er lps_pstate 217 aus. Der Ausgang der MPS-Aktualisierlogik 510 umfaßt MPS 520, das gemäß der XOR-bzw. gemäß der XODER-Funktion mit dem Ergebnis eines UNDierens der Umschaltanzeige 218 mit der Negation der Wahrscheinlich-Anzeige 223 verknüpft wird.For the data stored in the context store 501 written, it is the PSTATE, by the probability display 223 and the MPS that is changed when the Likelihood indicator is selected 223 0 is and the shift indicator 218 1 is. In one embodiment, if the probability indication 223 true is, mux 506 mps_pstate 216 out; otherwise he gives lps_pstate 217 out. The output of the MPS update logic 510 includes MPS 520 , which according to the XOR or. according to the XOR function with the result of ANDing the shift indication 218 with the negation of the probability indicator 223 is linked.

Die Ausgänge des Kontextspeichers 501 sind pstate 234 und MPS 520. Zum Kodieren wird das zu kodierende Bit (bit_in 222) unter Verwendung des Vergleichers 512 mit MPS 520 verglichen, um die encode_likely-Anzeige 422 zu erzeugen. Bei einer Ausführungsform wird die encode_likely-Anzeige 422 erzeugt, indem MPS 520 gemäß der XNOR-Funktion mit dem bit_in 222 verknüpft wird, wobei MPS 520 durch ein Bit des Eintrags im Kontextmodell 501 angezeigt wird. Gemerkenswert ist, daß die Logik (nicht gezeigt) zum Rückkoppeln bzw. Zurückführen eines encode_likely-Signals 422 zu der Wahrscheinlich-Anzeige 223 verwendet wird. Dies wird im folgenden detaillierter beschrieben. Zum Dekodieren wird die Wahrscheinlich-Anzeige 223 unter Verwendung des Vergleichers 511 mit MPS 520 verglichen, um das dekodierte Bit (bit_out 224 ) zu erzeugen. Bei einer Ausführungsform wird bit_out 224 durch eine XNOR-Verknüpfung des MPS 520 mit der Wahrscheinlich-Anzeige 223 erzeugt. Die XNOR-Funktion ist einem Abgleichen des MPS 520 mit der Wahrscheinlich-Anzeige 223 äquivalent.The outputs of the context memory 501 are pstate 234 and MPS 520 , For encoding, the bit to be coded (bit_in 222 ) using the comparator 512 with MPS 520 compared to the encode_likely ad 422 to create. In one embodiment, the encode_likely ad becomes 422 generated by MPS 520 according to the XNOR function with the bit_in 222 is linked, where MPS 520 by a bit of the entry in the context model 501 is shown. It is noteworthy that the logic (not shown) for feeding back an encode_likely signal 422 to the probable message 223 is used. This will be described in more detail below. For decoding the probable display 223 using the comparator 511 with MPS 520 compared to the decoded bit (bit_out 224 ) to create. In one embodiment, bit_out becomes 224 through an XNOR link of the MPS 520 with the probability indicator 223 generated. The XNOR function is a synchronization of the MPS 520 with the probability indicator 223 equivalent to.

In 5 wird ein einzelner Speicher verwendet und der Speicher gibt die Information für einen einzelnen Kontext aus. Parallele Speicher können verwendet werden, um die Geschwindigkeit zu erhöhen. Häufig beeinflußt das zuvor dekodierte Bit den Kontext für das nächste Bit. Diese Rückkopplung zu dem Kontextmodell, das hierin als die Bit-zu-Kontext-Verzögerung bezeichnet wird, kann die Geschwindigkeit beschränken. Eine Art und Weise, um die Geschwindigkeit zu erhöhen, ist es, mehrere Speicherausgänge zu haben, die den Kontextbins entsprechen, die für beide Werte des vorhergehenden Bits verwendet werden. Der Speicherzugriff kann parallel (auf Pipeline-Art und -Weise) unter Erzeugung des vorhergehenden Bits durchgeführt werden. Das korrekte Kontextbin der beiden kann gemultiplext werden, wenn das vorhergehende Bit bekannt ist. Das Multiplexen ist typischerweise viel schneller als der Speicherzugriff. Es kann entweder ein einzelner Speicher mit mehreren Ausgängen oder es können mehrere Speicher verwendet werden.In 5 a single memory is used and the memory outputs the information for a single context. Parallel memories can be used to increase the speed. Often, the previously decoded bit affects the context for the next bit. This feedback to the context model, referred to herein as the bit-to-context delay, may limit the speed. One way to increase the speed is to have multiple memory outputs that correspond to the context bins used for both values of the previous bit. Memory access can be done in parallel (in a pipelined manner) to generate the previous bit. The correct context bin of the two can be multiplexed if the previous bit is known. Multiplexing is typically much faster than memory access. It can either be a single memory with multiple outputs or multiple memories can be used.

Speicherzugriffe nach der Art und Weise einer Pipeline machen erforderlich, daß eine verbrauchte Information nicht verwendet wird, wenn dieselbe Speicherstelle zweimal in Abfolge verwendet wird (oder innerhalb einer gewissen minimalen Anzahl aufeinanderfolgender Taktzyklen verwendet wird). Wenn einmal eine Speicherstelle zum erstenmal gelesen ist, sollte sie nicht nochmals gelesen werden, bis der aktualisierte Wert zurück in den Speicher geschrieben ist. Anstatt, daß der Speicher für folgende Lesevorgänge gelesen wird, sollte der Wert, der sich bereits außerhalb des Speichers befindet und eine Verarbeitung durchläuft, verwendet werden.Pipelining memory accesses require that used information not be used when the same memory location is used twice in sequence (or used within a certain minimum number of consecutive clock cycles). If ever a Memory location is read for the first time, it should not be read again until the updated value is written back to memory. Instead of reading the memory for subsequent reads, the value that is already out of memory and undergoing processing should be used.

Eine beispielhafte Verilog-HDL-Beschreibung, die der 5 entspricht, lautet wie folgt, dabei gelten die bereits oben gegebenen Erklärungen zu der Verilog-Beschreibung.
// Copyright bzw. Urheberrecht 1997 RICOH
// Dies ist der Multikontextteil des Entropiekodierers.
// Er enthält den Kontextspeicher, der Pstates speichert,
// und unter Verwendung dieses Speichers handhabt.
An exemplary Verilog HDL description that the 5 is as follows, the explanations given above on the Verilog description apply.
// Copyright or Copyright 1997 RICOH
// This is the multicontext part of the entropy coder.
// it contains the context store that stores pstates
// and manages using this store.

Figure 00360001
Figure 00360001

Figure 00370001
Figure 00370001

Wahrscheinlichkeitszustands-AusdehnungProbability state expansion

6 ist ein Blockdiagramm einer Ausführungsform der pem_expand-Einheit 401, die den pstate 234 in die Information konvertiert, die das PSTATE beschreibt, das durch seinen Ausgang dargestellt wird. 6 Figure 4 is a block diagram of one embodiment of the pem_expand unit 401 that the pstate 234 converted into the information that describes the PSTATE represented by its output.

Nimmt man Bezug auf 6, so umfaßt die Wahrscheinlichkeitszustands-Expansionseinheit 401 eine pclass-Einheit 601, eine mps_pstate 602, eine lps_pstate 603, eine Umschalteinheit 604 und eine Aktualisierungseinheit 605, von denen jede angeschlossen ist, um einen pstate 234 zu empfangen und seinen entsprechenden Ausgang zu erzeugen.If you take reference 6 so includes the probability state expansion unit 401 a pclass unit 601 , a mps_pstate 602 , a lps_pstate 603 , a switching unit 604 and an updating unit 605 , each of which is connected to a pstate 234 to receive and generate its corresponding output.

Die pclass-Einheit 601 erzeugt pclass 219 in Antwort auf pstate 234. Bei einer Ausführungsform ist die Wahrscheinlichkeitsschätzung ein 4-Bit-Wert. Bei einer Ausführungsform reicht pstate 234 von 0 bis 268 und wird in einen pclass konvertiert, der von O bis 15 reicht. Ein Beispiel eines Kodes, der für die Durchführung dieser Funktion gedacht ist, wird unten gegeben.The pclass unit 601 generates pclass 219 in response to pstate 234 , In one embodiment, the probability estimate is a 4-bit value. In one embodiment, pstate suffices 234 from 0 to 268 and converts to a pclass that ranges from 0 to 15. An example of a code intended to perform this function is given below.

Die MPS_pstate-Einheit 602 erzeugt einen mps_pstate 216 (in Antwort auf pstate 234), der der nächste PSTATE ist, falls ein MPS auftritt und der PSTATE aktualisiert wird. Bei einer Ausführungsform umfaßt mps_pstate 216 9 Bits. Bei einer Ausführungsform ist der mps_state 216, der pstate 234 erhöht um eine ganze Zahl von 0 bis 5 oder erniedrigt um 11 basierend auf dem Wert des pstate 234.The MPS_pstate unit 602 generates a mps_pstate 216 (in response to pstate 234 ), which is the next PSTATE if an MPS occurs and the PSTATE is updated. In one embodiment, mps_pstate 216 9 bits. In one embodiment, the mps_state 216 who pstate 234 increased by an integer from 0 to 5 or decreased by 11 based on the value of the pstate 234 ,

Die LPS_pstate-Einheit 603 erzeugt einen lps_pstate 217 (in Antwort auf den pstate 234), der der nächste PSTATE ist, falls ein LPS auftritt und der PSTATE aktualisiert wird. Bei einer Ausführungsform umfaßt lps_pstate 217 9 Bits. Bei einer Ausführungsform ist lps_state 216 der pstate 234 erhöht um eine ganze Zahl 1, 3 oder 5 oder erniedrigt um eine ganze Zahl, die von –1 bis –246 reicht, und zwar basierend auf dem Wert des pstate 234.The LPS_pstate unit 603 generates an lps_pstate 217 (in response to the pstate 234 ), which is the next PSTATE if an LPS occurs and the PSTATE is updated. In one embodiment, lps_pstate 217 9 bits. In one embodiment, lps_state 216 the pstate 234 increased by an integer 1, 3, or 5, or decreased by an integer ranging from -1 to -246, based on the value of the pstate 234 ,

Die Schalteinheit 604 aktiviert die Umschaltanzeige 218, falls das MPS umzuschalten ist. Bei einer Ausführungsform wird die Umschaltanzeige 218 aktiviert, falls pstate 234 weniger oder gleich 4 oder gleich 262 ist; ansonsten wird die Umschaltanzeige 218 deaktiviert. Die Umschaltanzeige 218 zeigt an, daß das MPS, das in einem Kontextspeicher gespeichert ist, wie z.B. dem Kontextspeicher 501, geändert werden sollte, falls ein Bit auftritt, das nicht wahrscheinlich ist. Bei einer Ausführungsform umfaßt die Anzeige 218 ein Signal.The switching unit 604 activates the switching display 218 if the MPS is to be switched. In one embodiment, the toggle indication becomes 218 activated, if pstate 234 less than or equal to 4 or equal 262 is; otherwise the switchover indicator will be displayed 218 disabled. The switching indicator 218 indicates that the MPS stored in a context memory, such as the context memory 501 , should be changed if a bit occurs that is not likely. In one embodiment, the display includes 218 a signal.

Bei einer Ausführungsform aktiviert die Aktualisierungseinheit 605 die Aktualisierungsanzeige 412, falls der pstate weniger oder gleich 214 ist. Bemerkenswert ist, daß die Zustände, die kleiner als oder gleich 214 sind, für Zustände mit geringem Versatz (nahe bei 50%) verwendet werden, wo eine gute Wahrscheinlichkeitsschätzung eine Aktualisierung für jedes Bit erforderlich macht. Zustände größer als 214 werden für Zustände mit einem hohen Versatz verwendet, wo eine gute Wahrscheinlichkeitsschätzung unter Verwendung einer geringen Anzahl von Zuständen es nicht erforderlich macht, für jedes MPS zu aktualisieren. Bei anderen Ausführungsformen kann ein Zustand anders als 214 verwendet werden, wobei seine Auswahl auf dem Versatz basiert und darauf, ob die Wahrscheinlichkeitsschätzung derartig ist, daß sie eine Aktualisierung für jedes Bit benötigt. Dies kann eine datenspezifische Auswahl sein. Die Aktualisierungsanzeige 412 zeigt an, daß eine Aktualisierung des Kontextspeichgrs selbst dann durchgeführt werden sollte, falls keine kodierten Daten erzeugtlverbraucht wurden. Bei einer Ausführungsform umfaßt die Aktualisierungsanzeige 412 ein Signal. Die Wahrscheinlichkeitsschätzung kann bei jedem Bit aktualisiert werden. Bei einer alternativen Ausführungsform wird die Wahrscheinlichkeitsschätzung jedesmal aktualisiert, wenn Bits ausgegeben (oder verbraucht) werden.In one embodiment, the update unit activates 605 the update display 412 . if the pstate is less than or equal to 214 is. It is noteworthy that the states are less than or equal to each other 214 are used for low offset (near 50%) states where a good probability estimate requires updating for each bit. States greater than 214 are used for high offset states where a good probability estimation using a small number of states does not require updating for each MPS. In other embodiments, a condition other than 214 its choice is based on the offset and whether the probability estimate is such that it requires an update for each bit. This can be a data-specific selection. The update display 412 indicates that an update of the context memory should be performed even if no coded data has been generated. In one embodiment, the update indicator includes 412 a signal. The probability estimate can be updated every bit. In an alternative embodiment, the probability estimate is updated each time bits are output (or consumed).

Eine beispielhafte Verilog-HDL, die der 6 entspricht, wird im folgenden gegeben. Eine Ausführungsform der Wahrscheinlichkeitsschätzregeln der vorliegenden Erfindung werden durch dieses Verilog beschrieben.
// Urheberrecht bzw. Copyright 1997 RICOH
// PEM – Wahrscheinlichkeitsschätzung
// gegebener Pstate, bestimmte Pclass und mögliche nächste pstates

Figure 00390001
Figure 00400001
Figure 00410001
Figure 00420001
An exemplary Verilog HDL, the 6 corresponds, is given below. One embodiment of the probability estimation rules of the present invention will be described by this Verilog.
// Copyright or Copyright 1997 RICOH
// PEM - Probability Estimate
// given pstate, certain pclass and possible next pstates
Figure 00390001
Figure 00400001
Figure 00410001
Figure 00420001

Biterzeugungbit generation

7 ist ein Blockdiagramm einer Ausführungsform der bit_generate-Einheit 403 und führt die Konversion zwischen unkodierten Bits und kodierten Bits durch. Der Großteil der Operation wird durch die Biterzeugungslogik 701 durchgeführt. 7 Figure 13 is a block diagram of one embodiment of the bit_generate unit 403, and performs the conversion between uncoded bits and coded bits. The bulk of the operation is through the biter generation logic 701 carried out.

Nimmt man Bezug auf 7, so ist die Biterzeugungslogik 701 angeschlossen, um eine likely_in_Anzeige 709, pclass 219, eine Kodieranzeige (z.B. ein Signal bzw. Signale) 415 und einen Kodestrom 419 zusammen mit Ausgaben von den Registern 702 bis 704 zu empfangen, die den fsm_state, einen Startwert und einen Stoppwert jeweilig enthalten. Jedes Register 702 bis 704 ist mit dem Takt 410 verbunden.If you take reference 7 that is the logic of generation 701 connected to a likely_in_display 709 , pclass 219 , a coding display (eg a signal or signals) 415 and a code stream 419 along with issues from the registers 702 to 704 Receive the fsm_state, a start value and a stop value, respectively. Each register 702 to 704 is with the clock 410 connected.

Das fsm_state-Register 702 ist der interne Zustand der FSM-Zustandsmaschine. Bei einer Ausführungsform umfaßt das fsm_state-Register 702 ein 6-Bit-Register und wird auf einen vorbestimmten Zustand festgelegt, wenn Rücksetzen aktiviert wird. Bei einer Ausführungsform ist der vorbestimmte Zustand 0. Der fsm_state-Eingang 702 wird mit Taktzyklen aktualisiert, wenn Freigabe 415 aktiviert wird.The fsm_state register 702 is the internal state of the FSM state machine. In one embodiment, the fsm_state register includes 702 a 6-bit register and is set to a predetermined state when reset is activated. In one embodiment, the predetermined state is 0. The fsm_state input 702 is updated with clock cycles when enable 415 is activated.

Das Startregister 703 enthält den kleinsten Gültigkeitswert, der zu dem Kodestrom ausgegeben werden kann. Bei einer Ausführungsform umfaßt das Startregister 703 ein 8-Bit-Register. Das Startregister 703 wird auf einen vorbestimmten Wert gesetzt, wenn Rücksetzen aktiviert wird, und mit Taktzyklen aktualisiert, wenn die Freigabe-Anzeige 415 aktiviert ist. Bei einer Ausführungsform ist der vorbestimmte Wert 0.The start register 703 contains the smallest validity value that can be output to the code stream. In one embodiment, the start register includes 703 an 8-bit register. The start register 703 is set to a predetermined value when reset is activated and updated with clock cycles when the enable indication 415 is activated. In one embodiment, the predetermined value is 0.

Das Stoppregister 704 enthält den größten gültigen Wert, der zu dem Kodestrom ausgegeben werden kann. Bei einer Ausführungsform umfaßt das Stoppregister 704 ein 8-Bit-Register. Das Stoppregister 704 wird auf einen vorbestimmten Wert gesetzt, wenn Rücksetzen aktiviert wird und mit Taktzyklen aktualisiert, wenn die Freigabe-Anzeige 415 aktiviert wird. Bei einer Ausführungsform wird das Stoppregister 704 auf 111111112 gesetzt, wenn rückgesetzt wird.The stop register 704 contains the largest valid value that can be output to the code stream. In one embodiment, the stop register comprises 704 an 8-bit register. The stop register 704 is set to a predetermined value when reset is activated and updated with clock cycles when the enable indication 415 is activated. In one embodiment, the stop register becomes 704 set to 11111111 2 when resetting.

In Antwort auf diese Eingaben erzeugt die Biterzeugungslogik 701 eine likely_out-Anzeige 223, eine sz-Anzeige 710, eine cw-Anzeige 711, einen next_stop-Wert 712, einen next_start-Wert 713 und einen next_state 714.In response to these inputs, the biter generation logic generates 701 a likely_out ad 223 , a sz ad 710 , a cw ad 711 , a next_stop value 712 , a next_start value 713 and a next_state 714 ,

Die sz-Anzeige 710 ist mit einem Eingang des MUX 705 verbunden. Der andere Eingang zu MUX 705 ist mit der flush_sz-Anzeige (z.B. ein Signal bzw. Signale) 715 verbunden. In ähnlicher Weise empfängt MUX 706 cw 711 auf einem Eingang und flush_cw 716 von der Flush-Logik 707 auf dem anderen Eingang.The sz ad 710 is with an input of the mux 705 connected. The other entrance to MUX 705 is with the flush_sz indicator (eg a signal or signals) 715 connected. Similarly, MUX receives 706 cw 711 on an input and flush_cw 716 from the flush logic 707 on the other entrance.

Bei einer Ausführungsform erzeugt die bit_generate-Einheit 403 Kodewörter zum Räumen am Ende des Kodierens. Das Flush-Signal 413 ist angeschlossen, um einen Eingang sowohl für MUX 705 als auch 706 auszuwählen. Wenn der Bitgenerator nicht geräumt wird und somit das Flush-Signal 413 nicht aktiviert wird, geben die MUXs 705 bis 706 eine sz-Anzeige 710 als die Größenanzeige 418 und cw 711 als das Kodewort 417 aus. Auf der anderen Seite, wenn der Bitgenerator geräumt wird und das Flush-Signal 413 aktiviert wird, werden die vordefinierten Kodewörter, die durch flush_cw 716 dargestellt werden, von MUX 706 als Kodewort 417 mit einer Größenanzeige ausgegeben, die durch die flush_sz-Anzeige 715 dargestellt wird, die als Größe ("size") 418 ausgegeben wird. Bemerkenswert ist, daß die Biterzeugungslogik 701 und die Flush-Logik 707 detaillierter im folgenden beschrieben werden.In one embodiment, the bit_generate unit generates 403 Code words to clear at the end of coding. The flush signal 413 is connected to an input for both MUX 705 as well as 706 select. If the bit generator is not cleared and thus the flush signal 413 does not activate, enter the MUXs 705 to 706 a sz ad 710 as the size indicator 418 and cw 711 as the codeword 417 out. On the other hand, when the bit generator is cleared and the flush signal 413 is activated, the predefined codewords generated by flush_cw 716 be presented by MUX 706 as a codeword 417 with a size indicator output by the flush_sz indicator 715 is displayed as the size ("size") 418 is issued. It is noteworthy that the biter generation logic 701 and the flush logic 707 will be described in more detail below.

8 ist ein Blockdiagramm einer Ausführungsform einer Biterzeugungslogik 701. Nimmt man Bezug auf 8, so umfaßt die Biterzeugungslogik 701 eine Zustandsausdehneinheit 801, einen Vergleicher 802, eine Wahrscheinlich-Logik 803, einen Multiplexer 804 und eine Kodewort-Erzeugungseinheit 805. Die Zustands-Ausdehnlogik 801 ist angeschlossen, um den fsm_state von dem Register 702 und pclass 219 zu empfangen. In Antwort auf diese Eingänge erzeugt die Zustands-Ausdehneinheit 801 die Anzeige für das erste wahrscheinliche Symbol (fps bzw. "first probable symbol") 821, split8-Wert 822 bzw. Aufteil-8-Wert 822 zusammen mit den nächsten Zuständen, für den Fall, wenn ein MPS oder ein LPS auftritt, die jeweilig als next_state mps 810 und next_state_lps 811 bezeichnet werden. Eine Ausführungsform der Zustands-Ausdehnlogik 801 ist in detaillierter in Verbindung mit 9 beschrieben. 8th Figure 10 is a block diagram of one embodiment of bit generation logic 701 , If you take reference 8th so includes the biter generation logic 701 a state expansion unit 801 , a comparator 802 , a probable logic 803 , a multiplexer 804 and a codeword generation unit 805 , The state expansion logic 801 is connected to the fsm_state from the register 702 and pclass 219 to recieve. In response to these inputs, the state expansion unit generates 801 the first probable icon (fps) 821, split8 value 822 or split-8 value 822 together with the next states, in the case when an MPS or an LPS occurs, respectively as next_state mps 810 and next_state_lps 811 be designated. An embodiment of the state expansion logic 801 is in more detail in conjunction with 9 described.

Der Vergleicher 802 ist angeschlossen, um split8-Wert 822 und den Kodestrom 419 zu empfangen, und erzeugt in Antwort darauf ein top_split-Signal 823. Bei einer Ausführungsform wird, falls der Kodestrom 419 größer als split8-Wert 822 ist, das top_split-Signal 823 aktiviert (z.B. 1); auf der anderen Seite wird, falls der Kodestrom 419 kleiner ist als split8-Wert 822, das top_split-Signal 823 nicht aktiviert (z.B. 0).The comparator 802 is connected to split8 value 822 and the code stream 419 and, in response, generates a top_split signal 823 , In one embodiment, if the code stream 419 greater than split8 value 822 is the top_split signal 823 activated (eg 1); on the other hand, if the code stream 419 smaller than split8 value 822 , the top_split signal 823 not activated (eg 0).

Die Wahrscheinlich-Logik 803 ist angeschlossen, um eine likely_in-Anzeige (z.B. ein Signal bzw. Signale) 709 und eine Kodieranzeige 415, ein top_split-Signal 223 und eine fps-Anzeige 821 zu empfangen. In Antwort auf diese Eingangssignale arbeitet die Wahrscheinlich-Logik 803 in einer Art und Weise, die der Bit-Logik in den 2 und 3 ähnlich ist und erzeugt eine likely_out-Anzeige 720. Diese ist im wesentlichen äquiva lent zu der Wahrscheinlich-Anzeige 223. Falls die Anzeige 415 1 beträgt, ist die Ausgabe der likely_out-Anzeige 720 die likely_in-Anzeige 709; falls die Kodieranzeige 415 0 ist, dann umfaßt die Ausgabe der likely_out-Anzeige 720 das XOR des fps-Signals 821 und des top_split-Signals 823. Die likely_out-Anzeige 720 ist mit dem Auswahleingang des MUX 804 sowie mit dem Eingang der Kodewort-Erzeugungseinheit 805 verbunden.The probability logic 803 is connected to a likely_in indicator (eg a signal or signals) 709 and a coding display 415 , a top_split signal 223 and an fps ad 821 to recieve. In response to these input signals, the probable logic operates 803 in a way that the bit logic in the 2 and 3 is similar and generates a likely_out indication 720 , This is essentially equivalent to the probability indicator 223 , If the ad 415 Is 1, the output is the likely_out indicator 720 the likely_in ad 709 ; if the coding display 415 0, then the output includes the likely_out indication 720 the XOR of the fps signal 821 and the top_split signal 823 , The likely_out ad 720 is with the selection input of the MUX 804 as well as with the input of the codeword generation unit 805 connected.

Die MUX 804 ist angeschlossen, um next_state_mps 810 und next_state_lps 811 zu empfangen. Bei einer Ausführungsform umfaßt next_state 714, next_state_mps 810, falls die likely_out-Anzeige 720 aktiviert wird; ansonsten wird next_state_lps 811 als next_state 714 ausgegeben.The mux 804 is connected to next_state_mps 810 and next_state_lps 811 to recieve. In one embodiment, next_state 714 , next_state_mps 810 if the likely_out ad 720 is activated; otherwise it will be next_state_lps 811 as next_state 714 output.

Die Kodewort-Erzeugungseinheit 805 ist angeschlossen, um ein fps-Signal 821, einen split8-Wert 822, den Startwert vom Register 703 und den Stoppwert vom Register 704 zu empfangen. In Antwort auf diese Eingaben erzeugt die Kodewort-Erzeugungseinheit 805 eine sz-Anzeige 710, ein cw (Kodewort) 711, einen next_start-Wert 712 und einen next_stop-Wert 713. Der Kodewort-Erzeugungsblock wird detaillierter in Verbindung mit 13 beschrieben.The codeword generation unit 805 is connected to a fps signal 821 , a split8 value 822 , the starting value of the register 703 and the stop value from the register 704 to recieve. In response to these inputs, the codeword generation unit generates 805 a sz ad 710 , a cw (codeword) 711 , a next_start value 712 and a next_stop value 713 , The codeword generation block will be described in more detail in connection with 13 described.

Bemerkenswert ist, daß die Zustandsausdehneinheit 801 und die Kodewort-Erzeugung (cw_gen) 805 Ausgaben erzeugt, die Entropiekodiertabelle in 2 ähneln, wobei Logik verwendet wird, um die Hardwarekosten zu reduzieren.It is noteworthy that the state expansion unit 801 and codeword generation (cw_gen) 805 Outputs generated, the entropy coding table in 2 using logic to reduce hardware costs.

ZustandsausdehnologikZustandsausdehnologik

9 ist ein Blockdiagramm einer Ausführungsform einer Zustandsausdehnlogik bzw. Zustandsexpandierlogik 801. Die Zustandsausdehnlogik 801 verwendet ein mehrstufiges Nachschlagen bzw. mehrstufige Nachschlagtabellen, um die Hardwarekosten zu reduzieren, indem redundante LUT-Einträge beseitigt werden. 9 FIG. 10 is a block diagram of one embodiment of a state expansion logic 801 , The state expansion logic 801 uses multi-level lookup tables to reduce hardware costs by eliminating redundant LUT entries.

Nimmt man Bezug auf 9, so ist pclass 219 mit dem Eingang der Maskenerzeugungseinheit 901 verbunden. Der Ausgang der Maskenerzeugungseinheit 901 ist mit einem Eingang eines UND-Gatters 903 verbunden. Das fsm_state von dem Register 702 ist mit einem Eingang der Vorwärtseinheit 902 und einem Eingang der next_state_mps-Einheit 905, next_state_lps-Einheit 906, fps-Einheit 907 und Aufteileinheit bzw. Spliteinheit 908 verbunden. Der Ausgang der Vorwärtseinheit 902 ist an dem anderen Eingang eines UND-Gatters 903 angeschlossen. Der Ausgang des UND-Gatters 903 ist mit der bits_on-Einheit bzw. Bits-ein-Einheit 904 verbunden. Der Ausgang der bits_on-Einheit bzw. Bits-ein-Einheit 904 ist mit dem anderen Eingang der next_state_mps-Einheit 905, der next_state_lps-Einheit 906, der fps-Einheit 907 und der Aufteileinheit 908 verbunden.If you take reference 9 so is pclass 219 with the input of the mask generation unit 901 connected. The output of the mask generation unit 901 is with an input of an AND gate 903 connected. The fsm_state from the registry 702 is with an input of the forward unit 902 and an input of the next_state_mps unit 905 , next_state_lps unit 906 , fps unit 907 and split unit or split unit 908 connected. The output of the forward unit 902 is at the other input of an AND gate 903 connected. The output of the AND gate 903 is with the bits_on unit or bits-a-unit 904 connected. The output of the bits_on unit or bits-in unit 904 is with the other Input of the next_state_mps unit 905 , the next_state_lps unit 906 , the fps unit 907 and the allocation unit 908 connected.

In Antwort auf diese Eingänge bzw. Eingaben erzeugt die next_state_mps-Einheit ("nächster Zustand, höchstwahrscheinliches Symbol"-Einheit) 905 den next_state_mps 810, die next_state_lps-Einheit ("nächster Zustand, niedrigstwahrscheinliches Symbol"-Einheit) 906 erzeugt den next_state_lps 811 und die fps-Einheit 907 erzeugt das fps-Signal 821. Ebenso in Antwort auf diese Eingaben erzeugt die Aufteileinheit 908 den split8-Wert 822. Die Aufteileinheit bzw. Spliteinheit umfaßt die split5-Einheit 909, die angeschlossen ist, um die Eingänge der Aufteileinheit 908 zu empfangen und erzeugt ein split5-Signal 911 in Antwort darauf. Das split5-Signal 911 ist angeschlossen an den Eingang der split5_to_split8-Einheit ("Aufteil-5"-zu-"Aufteil-8"-Einheit) 910, die den split8-Wert 822 erzeugt.In response to these inputs, the next_state_mps unit ("next state, most likely symbol" unit) generates 905 the next_state_mps 810 , the next_state_lps unit ("next state, least likely symbol" unit) 906 generates the next_state_lps 811 and the fps unit 907 generates the fps signal 821 , Likewise, in response to these inputs, the split unit generates 908 the split8 value 822 , The split unit or split unit comprises the split5 unit 909 which is connected to the inputs of the distribution unit 908 to receive and generates a split5 signal 911 in response. The split5 signal 911 is connected to the input of the split5_to_split8 unit ("split-5" to "split-8" unit) 910 that the split8 value 822 generated.

Die erste Stufe der LUT wird durch die Vorwärtseinheit 902 durchgeführt. Bei einer Ausführungsform umfaßt die Vorwärtseinheit bzw. Vorauseinheit 902 einen Eintrag für jeden FSM-(Entropiekodierer-)Zustand und gibt den Eintrag in Antwort darauf aus, daß der fsm-Zustand vom Register 702 empfangen wird. Bei einer Ausführungsform umfaßt die Vorwärtseinheit ("Advance"-Einheit) 902 61 Einträge, die (von links nach rechts) wie folgt lauten:

Figure 00470001
The first stage of the LUT is through the forward unit 902 carried out. In one embodiment, the forward unit comprises 902 an entry for each FSM (Entropy Encoder) state and outputs the entry in response to the fsm state of the register 702 Will be received. In one embodiment, the advance unit ("Advance" unit) comprises 902 61 entries that are (from left to right) as follows:
Figure 00470001

Bei einer Ausführungsform stellt jeder Eintrag einen 15-Bit-Hexadezimalwert dar. Jede Bitposition entspricht einer PCLASS 1 bis 15 (es gibt kein Bit, das der Wahrscheinlichkeitsklasse 0 entspricht). Ein Bit zeigt an, falls eine PCLASS genauso kodiert wird wie oder anders als die vorhergehende PCLASS (das heißt, ob die LUT-Information dieselbe ist oder sich für aufeinanderfolgende PCLASSen entscheiden). Zum Beispiel hat der Zustand 0 ("state 0") den Eintrag 7ECD16 oder 1111110110011012. Ausgehend von rechts (LSB) gibt es zwei Nullen in Abschnitten 2, 5, 6 und 9. Dies bedeutet, daß PCLASS 2 dasselbe ist wie PCLASS 1. In ähnlicher Weise sind die PCLASSen 4, 5 und 6 dieselben und die PCLASSen 8 und 9 sind dieselben. Ein Zustand ist derselbe für jede PCLASS (vorwärts bzw. "advance" = 000016); andere weisen eine kleine Anzahl unterschiedlicher PCLASSen auf. Wenn viele PCLASSen ("P-Klassen") dieselbe LUT-Information haben, kann die Logik zur Realisierung bzw. Implementation der next_state_mps-Einheit 905, next_state_lps-Einheit 906, fps-Einheit 907 und der split5-Einheit 909 reduziert werden.In one embodiment, each entry represents a 15-bit hexadecimal value. Each bit position corresponds to a PCLASS 1 to 15 (there is no bit corresponding to the 0 probability class). One bit indicates if a PCLASS is encoded as well as or unlike the previous PCLASS (that is, if the LUT information is the same or decides on successive PCLASSs). For example, state 0 ("state 0") has the entry 7ECD 16 or 111111011001101 2 . From the right (LSB) there are two zeros in sections 2, 5, 6 and 9. This means that PCLASS 2 is the same as PCLASS 1. Similarly, PCLASSs 4, 5 and 6 are the same and PCLASSs 8 and 9 are the same. A state is the same for each PCLASS (advance = 0000 16 ); others have a small number of different PCLASSs. If many PCLASSs ("P-classes") have the same LUT information, the logic may be used to implement the next_state_mps unit 905 , next_state_lps unit 906 , fps unit 907 and the split5 unit 909 be reduced.

Die Maskenerzeugungseinheit 901 erzeugt eine Maske in Antwort auf pclass 219. Bei einer Ausführungsform lautet die Maske 0000000000000002 für PCLASS 0, 0000000000000012 für PCLASS 1, 0000000000000112 für PCLASS 2 usw. Die Maske wird durch die UND-Gatterlogik 903 gemäß der UND-Funktion mit dem Ausgang der Vorwärtseinheit 902 verbunden.The mask generation unit 901 creates a mask in response to pclass 219 , In one embodiment, the mask is 000000000000000 2 for PCLASS 0, 000000000000001 2 for PCLASS 1, 000000000000011 2 for PCLASS 2, etc. The mask is represented by the AND gate logic 903 according to the AND function with the output of the forward unit 902 connected.

Die Bits-ein-Einheit 904 summiert die Anzahl der 1-Bits, die von der UND-Gatter-Logik 903 ausgegeben werden, um einen sel-Wert 912 zu erzeugen. Der sel-Wert 912 wird als ein Index für die LUTs der zweiten Stufe verwendet.The bits-a-unit 904 sums up the number of 1-bits used by the AND gate logic 903 be issued to a sel value 912 to create. The sel value 912 is used as an index for the second-stage LUTs.

Die next_state_mps-Einheit 905, die next_state_lps-Einheit 906 und die fps-Einheit 907 vervollständigen das Nachschlagen der entsprechenden Werte.The next_state_mps unit 905 , the next_state_lps unit 906 and the fps unit 907 complete the lookup of the corresponding values.

Bei einer Ausführungsform beinhaltet die next_state_mps-Einheit 905 eine LUT mit den folgenden Einträgen (in Hexadezimal gezeigt), wobei jede Reihe einem FSM-Zustand (beginnend mit einem FSM-Zustand 0) entspricht. Bemerkenswert ist, daß die zweite Spalte unterhalb der ersten Spalte folgt.In one embodiment, the next_state_mps unit includes 905 an LUT with the following entries (shown in hexadecimal), each row corresponding to an FSM state (beginning with a FSM state 0). It is noteworthy that the second column follows below the first column.

Figure 00480001
Figure 00480001

Für jeden der 61 Zustände gibt es acht Einträge für bis zu acht mögliche Werte eines sel-Wertes 912. Falls weniger als 8 Werte des sel-Wertes 912 für einen bestimmten Zustand auftreten (weil viele PCLASSen dieselbe Information verwenden), werden "nicht kümmern"-Werte durch "xx" angezeigt. Mehr als 8 Werte des sel-Wertes treten für den Zustand 0 auf, die ersten 8 Einträge für den nächsten Zustand des MPS sind in der Tabelle oben gezeigt und die verbliebenen sind 616, 1016, 1B16 und 3816, und zwar jeweilig.For each of the 61 states, there are eight entries for up to eight possible values of a sel value 912 , If less than 8 values of the sel value 912 for a given state (because many PCLASSs use the same information), "do not care" values are indicated by "xx". More than 8 values of the sel value occur for state 0, the first 8 entries for the next state of the MPS are shown in the table above and the remaining ones are 6 16 , 10 16 , 1B 16 and 38 16 , respectively ,

Bei einer Ausführungsform beinhaltet die next_state_lps-Einheit 906 eine LUT mit den folgenden Einträgen (in Hexadezimal gezeigt), wobei jede Reihe einem FSM-Zustand entspricht. Wiederum folgt die zweite Spalte der ersten.at an embodiment Next_state_lps unit 906 includes a LUT with the following entries (shown in hexadecimal), where each row corresponds to an FSM state. Again, the second column follows the first one.

Figure 00490001
Figure 00490001

Für jeden der 61 Zustände gibt es 8 Einträge für bis zu 8 möglichen Werten des sel-Wertes 912. Falls weniger als 8 Werte des sel-Wertes 912 für einen bestimmten Zustand auftreten, werden "nicht kümmern"-Werte durch "xx" angezeigt. Mehr als 8 Werte des sel-Wertes 912 treten für den Zustand 0 auf, die ersten 8 Einträge für den nächsten Zustand auf MPS sind in der obigen Tabelle gezeigt und die verbliebenen sind alle 0.For each of the 61 states there are 8 entries for up to 8 possible values of the sel value 912 , If less than 8 values of the sel value 912 for a given state, "do not care" values are indicated by "xx". More than 8 values of the sel value 912 occur for state 0, the first 8 entries for the next state on MPS are shown in the table above, and the remaining ones are all 0.

Bei einer Ausführungsform enthält die fps-Einheit 907 eine LUT mit den folgenden Einträgen, wobei die zweite Spalte der ersten Spalte und die dritte Spalte der zweiten Spalte folgt. Wiederum entspricht jede Reihe einem anderen FSM-Zustand.In one embodiment, the fps unit contains 907 an LUT with the following entries, with the second column following the first column and the third column following the second column. Again, each row corresponds to a different FSM state.

Figure 00500001
Figure 00500001

Für jeden der 61 Zustände gibt es 8 Einträge für bis zu 8 möglichen Werten des sel-Wertes 912. Falls weniger als 8 Werte des sel-Wertes 912 für einen bestimmten Zustand auftreten, werden "nicht kümmern"-Werte durch "x" angezeigt. Mehr als 8 Werte des sel-Wertes 912 treten für den Zustand 0 auf. Die ersten 8 Einträge für den nächsten Zustand auf MPS sind in der obigen Tabelle gezeigt und die verbliebenen sind alle 1.For each of the 61 states there are 8 entries for up to 8 possible values of the sel value 912 , If fewer than 8 values of the sel value 912 occur for a particular state, "do not care" values are indicated by "x". More than 8 values of the sel value 912 occur for state 0. The first 8 entries for the next state on MPS are shown in the table above and the remaining ones are all 1.

Die split5-Einheit 909 führt ein Nachschlagen durch, das einen 5-Bit-Aufteilindex erzeugt, der dann durch die split5_to_split8-Logik 910 ausgedehnt bzw. expandiert wird, um den korrekten 8-Bit-Aufteilwert, den split8-Wert 822 zu erzeugen. Die split5-Einheit 909 enthält eine LUT mit den folgenden 5-Bit-Einträgen (gezeigt in Hexadezimal), wobei die zweite Spalte der ersten Spalte folgt.The split5 unit 909 performs a lookup that generates a 5-bit split index, then through the split5_to_split8 logic 910 is expanded or expanded to the correct 8-bit split value, the split8 value 822 to create. The split5 unit 909 contains an LUT with the following 5-bit entries (shown in hexadecimal), with the second column following the first column.

Figure 00510001
Figure 00510001

Für jeden der 61 Zustände gibt es 8 Einträge bis zu 8 möglichen Werten des sel-Wertes 912. Wenn weniger als 8 Werte des sel-Wertes 912 für einen bestimmten Zustand auftreten, werden "nicht kümmern"-Werte durch "xx" angezeigt. Mehr als 8 Werte des sel-Wertes 912 treten für den Zustand 0 auf, die ersten 8 Einträge für den nächsten Zustand auf MPS sind in der Tabelle oben gezeigt und die verbliebenen sind jeweilig 1C16, 1D16, 1E16 und 1F16.For each of the 61 states there are 8 entries up to 8 possible values of the sel value 912. If less than 8 values of the sel value 912 for a given state, "do not care" values are indicated by "xx". More than 8 values of the sel value 912 occur for state 0, the first 8 entries for the next state on MPS are shown in the table above and the remaining ones are respectively 1C 16 , 1D 16 , 1E 16 and 1F 16 .

Die 5-Bit-Indizes werden in 8-Bit-Splitwerte durch die split5_to_split8-Einheit 910 konvertiert. Die split5_to_split8-Einheit 910 verwendet die folgende LUT (mit Einträgen in Hexadezimal gezeigt). Zum Beispiel ist für den Zustand 0 und sel 0 der erste Aufteilpunkt-Index 0516, der einem Wert von 8016 entspricht. Der 0516-Wert erscheint im oberen linken Wert des split.hex-Wertes oben. Der 8016-Wert wird von der Position 0516 in der split58.hex-Liste unten abgeleitet (und zwar ist die sechste Position von dem Start der Liste, wo "xx" ist, die 0016-Position).
// split58.hex
// 5-Bit-Aufteil-Punkt-Indizes zu wahren 8-Bit-Werten
xx 40 60 64 70 80 84 88 8c 90 98 9c aO a8 ac b0 b8 bc be c0 c8 cc d0 d8 dc e0 e8 f0 f8 fc fe ff
The 5-bit indexes are divided into 8-bit split values by the split5_to_split8 unit 910 converted. The split5_to_split8 unit 910 uses the following LUT (with entries shown in hexadecimal). For example, for state 0 and sel 0, the first split point index is 05 16 , which corresponds to a value of 80 16 . The 05 16 value appears at the top left of the split.hex value above. The 80 16 value is derived from the 05 16 position in the split58.hex list below (the sixth position from the start of the list where "xx" is the 00 16 position).
// split58.hex
// 5-bit split-point indices to preserve 8-bit values
xx 40 60 64 70 80 84 88 8c 90 98 9c aO a8 ac b0 b8 bc be c0 c8 cc d0 d8 dc e0 e8 f0 f8 fc fe ff

Die next_state_mps-Einheit 905, die next_state_lps-Einheit 906, die fps-Einheit 907 und die split5-Einheit 909 können realisiert werden, und zwar unter der Annahme, daß sowohl der fsm_state vom Register 702 als auch der sel-Wert 912 zu Beginn der Operation gültig sind. In diesem Fall erzeugt jede Einheit eine einzelne Ausgabe. Alternativ kann die Geschwindigkeit erhöht werden, falls ein zweistufiger Prozeß für jede Einheit verwendet wird. Erstens wird der fsm_state verwendet, um die Ausgabe aller möglichen Werte des sel-Wertes 912 zu bestimmen. Zweitens wird der sel-Wert 912 verwendet, um die korrekte mögliche Ausgabe zu dem Ausgang zu multiplexen. Da fsm_state vor dem sel-Wert 912 gültig sein wird, kann dies eine höhere Geschwindigkeit ermöglichen.The next_state_mps unit 905 , the next_state_lps unit 906 , the fps unit 907 and the split5 unit 909 can be realized, assuming that both the fsm_state and register 702 as well as the sel-value 912 are valid at the beginning of the operation. In this case, each unit generates a single output. Alternatively, the speed can be increased if a two-step process is used for each unit. First, the fsm_state is used to output all possible values of the sel value 912 to determine. Second, the sel value 912 used to multiplex the correct possible output to the output. Because fsm_state before the sel value 912 will be valid, this can allow a higher speed.

Das folgende Beispiel zeigt den Betrieb einer Ausführungsform des FSM-Kodierers. Die Tabelle 3 summiert die unteren Ergebnisse. Anfänglich startet der Kodierer im pstate 262 für jeden Kontext mit der PCLASS gleich 0, dem MPS gleich 1 und dem FSM-Zustand gleich 0. Ein Kontext von 6 und ein Eingangsbit von 0 werden als Eingaben des FSM-Kodierers empfangen. (Kontexte und Bits in diesem Beispiel werden beliebig aufgegriffen.) Die PCLASS 0 impliziert, daß der sel-Wert 912 gleich 0 ist. Mit dem sel-Wert 912 gleich 0 und einem FSM-Zustand gleich 0 wird ein 5-Bit-Aufteilindex-Wert erhalten. Bemerkenswert ist, daß dieser Wert von der obigen split.hex-Tabelle erhalten wird, wo jede Reihe bzw. Zeile einem FSM-Zustand entspricht (und zwar beginnend mit der ersten Zeile, die dem FSM-Zustand 0 entspricht). Unter Verwendung der split58.hex-Tabelle wird der 5-Bit-Aufteil-Punkt-Index in einen Aufteilwert bzw. split-Wert von 80 hex konvertiert. Deshalb wird das Intervall, das von 0-7F läuft, bei 80 hex so aufgespalten, daß ein Intervall von 0-7F festgelegt wird und das andere Intervall von 80-FF. Das fps-Signal zeigt an, welches der Intervalle 0-7F oder 80-FF mit dem Auftreten eines MPS in Zusammenhang steht. Um zu bestimmen, welche Seite mit dem MPS im Zusammenhang steht bzw. diesem zugeordnet ist, wird das fps-Signal berechnet. In diesem Fall ist das fps-Signal 0. Dies wird bestimmt, indem auf first.hex gesehen wird und die erste Zeile bzw. Reihe untersucht wird, die einem FSM-Zustand gleich 0 entspricht, was eine Auswahl der ersten Reihe bzw. Zeile der Tabelle und sel 912 gleich 0 verursacht, was die erste Bitposition des ersten Bits in jener Reihe bzw. Zeile ist. In diesem Fall ist, weil das fps-Signal 0 ist, das MPS dem oberen Intervall von 80-FF zugeordnet. Da das Eingangsbit sich in einem Wahrscheinlich-Zustand befindet (das heißt, das Eingangsbit ist dasselbe wie MPS), wird das Intervall von 80-FF berechnet. Wenn die höchstsignifikanten Bits der Bits der oberen Grenze FF und der unteren Grenze 80 des Intervalls verglichen werden, ist das erste Bit 1 in beiden Fällen. Deshalb wird ein 1-Bit ausgegeben.The following example shows the operation of one embodiment of the FSM encoder. Table 3 sums up the lower results. Initially, the encoder starts in the pstate 262 for each context with the PCLASS equal to 0, the MPS equal to 1, and the FSM state equal to 0. A context of 6 and an input bit of 0 are received as inputs to the FSM encoder. (Contexts and bits in this example are arbitrarily taken up.) The PCLASS 0 implies that the sel value 912 is equal to 0. With the sel value 912 equal to 0 and a FSM state equal to 0, a 5-bit split index value is obtained. It is noteworthy that this value is obtained from the above split.hex table, where each row corresponds to a FSM state (beginning with the first line corresponding to FSM state 0). Using the split58.hex table, the 5-bit split point index is converted to a split value of 80 hex. Therefore, the interval running from 0-7F is split at 80 hex so that an interval of 0-7F is set and the other interval is 80-FF. The fps signal indicates which of the 0-7F or 80-FF intervals is related to the occurrence of an MPS. To determine which side is associated with or associated with the MPS, the fps signal is calculated. In this case, the fps signal is 0. This is determined by looking at first.hex and examining the first row corresponding to a FSM state equal to 0, which is a selection of the first row of the Table and sel 912 equal to 0, which is the first bit position of the first bit in that row. In this case, because the fps signal is 0, the MPS is assigned to the upper interval of 80-FF. Since the input bit is in a probable state (that is, the input bit is the same as MPS), the interval of 80-FF is calculated. When the most significant bits of the upper limit bits FF and the lower limit 80 of the interval are compared, the first bit is 1 in both cases. Therefore, a 1-bit is output.

Weil der pstate größer oder gleich 214 ist und es ein Ausgangssignal gibt, wird der PSTATE aktualisiert. Die Aktualisierung basiert auf dem aktuellen Inhalt der Tabelle und wird auf den Zustand 263 aktualisiert. Was den FSM-Zustand angeht, so verbleibt er im FSM-Zustand 0, da 0016 in der ersten Position (sel-Wert 912 = 0) der ersten Reihe (FSM-Zustand = 0) der next m.hex-Tabelle ist.Because the pstate is bigger or the same 214 and there is an output, the PSTATE is updated. The update is based on the current contents of the table and is based on the state 263 updated. As far as the FSM state is concerned, it remains in FSM state 0 because 00 16 is in the first position (sel value 912 = 0) of the first row (FSM state = 0) of the next m.hex table.

Als nächstes wird das Intervall geändert und ein neues Intervall wird durch Verschieben der verbliebenen Bits erzeugt, die nicht von dem Intervall ausgegeben worden sind. Zum Beispiel werden alle Bits, die den unteren Intervallendpunkt darstellen, die nicht infolge der Ausgabe der Kodewörter ausgegeben wurden, nach links verschoben und Null-Bits werden in die niedrigstwertigen Bits verschoben. Da das erste Null-Bit ausgegeben worden ist und sieben Null-Bits verbleiben, werden alle sieben niedrigstwertigen Bits nach links um eine Bitstelle verschoben und 0 wird zu dem LSB hinzugefügt In ähnlicher Weise beinhalten bezüglich des oberen Endes des Intervalles 7F alle verbliebenen Bits 1111111, die nach links um ein Bit verschoben sind bzw. werden und ein anderes Bit wird zu dem niedrigstwertigen Bit des Intervalls hinzugefügt. Dies führt zu einem neuen Intervall von 00-FF (der Zustand 0 bedeutet, daß das Intervall 00-FF ist).When next the interval is changed and a new interval is created by moving the remaining ones Generates bits that have not been output from the interval. For example, all bits that are the lower interval end point which are not output as a result of the output of the codewords were shifted to the left and zero bits are in the least significant Bits shifted. Since the first zero bit has been issued and seven zero bits remain, all seven are least significant Bits are shifted one bit to the left and 0 goes to the LSB added In similar Manner include the upper end of the interval 7F all remaining bits 1111111, which are shifted to the left by one bit and / or another Bit is added to the least significant bit of the interval. This leads to a new interval of 00-FF (the state 0 means that the interval 00-FF).

Der nächste Kontext ist 6 und das nächste eingegebene Bit ist 0, während der PSTATE 263 ist. Ein PSTATE von 263 entspricht einer PCLASS von 2. In Antwort darauf, daß die pclass 219 2 ist, gibt die Maskenerzeugung 901 einen Maskenwert gleich 000000000000011 aus. In Antwort auf einen FSM-Zustand gleich 0 gibt die Vorwärtseinheit 902 den Eintrag aus, der dem FSM-Zustand 0 entspricht, der 7ECD16 oder 1111110110011012 beträgt. Die Ergebnisse des UNDierens des Ausgangs der Maskenerzeugung 901 und der Vorwärtseinheit 902 sind 000000000000001. In Antwort auf diesen Wert erzeugt die bit_on-Einheit bzw. die Bit-Ein-Einheit 904 einen sel-Wert 912 gleich 1. Somit wird mit dem FSM-Zustand gleich 0 und dem sel-Wert 912 gleich 1 ein split-Index bzw. Aufteil-Index von 0C von split.hex erhalten. Dies entspricht einem 8-Bit-Aufteilwert von A0. Deshalb laufen die zwei Intervalle von 00-9F und A0-FF.The next context is 6 and the next bit entered is 0, while the PSTATE 263 is. A PSTATE of 263 corresponds to a PCLASS of 2. In response to the pclass 219 2 is gives the mask generation 901 a mask value equal to 000000000000011. In response to a FSM state equal to 0 indicates the forward unit 902 the entry corresponding to the FSM state 0 which is 7ECD 16 or 111111011001101 2 . The results of ANDing the output of the mask generation 901 and the forward unit 902 are 000000000000001. In response to this value, the bit_on unit or bit-in unit generates 904 a sel value 912 equals 1. Thus, with the FSM state equal to 0 and the sel value 912 equal to 1 get a split index of 0C from split.hex. This corresponds to an 8-bit split value of A0. Therefore, the two intervals of 00-9F and A0-FF run.

Mit einem FSM-Zustand von 0 und einem sel-Wert 912 gleich 1 zeigt die zweite Position der ersten Reihe von first.hex an, daß das fps-Signal 821 gleich 1 ist. Damit, daß das fps-Signal 821 gleich 1 ist, ist das Intervall, das dem wahrscheinlicheren Fall zugeordnet ist, das Intervall von 00-BF. Dieses Intervall wird zur Berechnung ausgewählt, weil das Eingangsbit dasselbe ist, wie das MPS (das heißt es ist in seinem wahrscheinlicheren Zustand). Weil das höchstwertige Bit des Anfangs dieses Intervalls (00) nicht mit dem höchstwertigen Bit des Endes des Intervalls (A0) übereinstimmt, gibt es keine Bits, die ausgegeben werden und das System geht zu einem neuen FSM-Zustand über, wie durch next.m.hex angezeigt wird (Zustand 3, wie bei der zweiten Position (sel-Wert 912 = 1) der Reihe 0 (FSM-Zustand = 0) angezeigt wird), während der PSTATE derselbe bleibt. Bemerkenwert ist, daß, weil keine Bits ausgegeben werden, kein Hereinschieben von Bits in die Intervallendpunkte durchgeführt wird.With a FSM state of 0 and a sel value 912 equal to 1, the second position of the first row of first.hex indicates that the fps signal 821 is equal to 1. So that the fps signal 821 is equal to 1, the interval associated with the more probable case is the interval of 00-BF. This interval is chosen for calculation because the input bit is the same as the MPS (that is, it is in its more probable state). Because the most significant bit of the beginning of this interval (00) does not match the most significant bit of the end of the interval (A0), there are no bits that are output and the system transitions to a new FSM state, as by next.m .hex is displayed (state 3, as in the second position (sel value 912 = 1) of row 0 (FSM state = 0) is displayed) while the PSTATE remains the same. It is noteworthy that, because no bits are output, no pushing of bits into the Intervallendpunkte is performed.

Die nächsten Eingaben sind ein Kontextbit von 6 und ein Eingangsbit 0. Basierend auf den Eingaben tritt ein Aufteilwert von 60 hex auf. Dieser Aufteilwert wird auf das zuvor ausgewählte Intervall von 00 bis BF angewandt. Deshalb wird das 00-9F-Intervall zwischen 00-5F und 60-9F aufgeteilt. Das fps-Signal zeigt an, daß der erste Abschnitt des ersten Intervalls von 0-5F das wahrscheinliche Intervall ist. Weil ein MPS als das Eingangsbit erhalten wurde, wird dieses erste Intervall von 0-5F berechnet. In diesem Fall stimmen das erste Bit der Endpunkte des Intervalls 0 und 5F überein und wird deshalb ausgegeben. Nach Ausgabe des Bits werden die verbliebenen Bits der Intervallwerte nach links verschoben und eine 0 wird zu dem tieferen Intervall hinzugefügt (wobei ein 00-Endpunkt erzeugt wird) und eine 1 wird zu dem oberen Intervall hinzugefügt (wobei ein BF-Endpunkt erzeugt wird), so daß das neue Intervall 0-BF wird.The next Inputs are a context bit of 6 and an input bit 0. Based on the entries an allocation value of 60 hex occurs. This split value will be on the previously selected Interval from 00 to BF applied. Therefore, the 00-9F interval becomes divided between 00-5F and 60-9F. The fps signal indicates that the first Section of the first interval from 0-5F the probable interval is. Because an MPS was obtained as the input bit, this becomes calculated first interval from 0-5F. In this case, the first bit is right the endpoints of the interval 0 and 5F and is therefore output. After the bit is output, the remaining bits of the interval values become moved to the left and a 0 is added to the lower interval (where a 00 end point is generated) and a 1 becomes the upper interval added (where a BF endpoint is generated) so that the new interval becomes 0-BF.

Diese Verarbeitung von Eingangsdaten setzt sich fort, wie in der unteren Tabelle gezeigt ist. Jedoch tritt ein interessantes Beispiel auf, wenn der Kontext 6 beträgt und das Eingangsbit eine 1 ist. In diesem Fall läuft das Intervall von 0-C7 mit einem Aufteilwert von C0 (von split58.hex). Basierend auf dem fps-Signal läuft das Wahrscheinlich-Intervall bzw. das wahrscheinliche Intervall von C0 bis C7. In diesem Fall stimmen die höchstwertigen 5 Bits sowohl des Anfangs als auch des Endpunkts dieses Intervalls überein und würden ausgegeben werden (110002). Nach der Ausgabe der fünf Bits werden die verbliebenen Bits sowohl des Anfangs- als auch Stopp-Intervalls nach links verschoben, wobei die Nullen die Bits tieferer Ordnung des unteren Endes des Intervalles füllen und die Einsen die Bitstellen unterer Ordnung des oberen Intervalls füllen. Dies führt zu einem neuen Intervall von 0-FF.This processing of input data continues as shown in the table below. However, an interesting example occurs when the context is 6 and the input bit is a 1. In this case, the interval from 0-C7 runs with a split value of C0 (from split58.hex). Based on the fps signal, the probable interval, or the probable interval, runs from C0 to C7. In this case, the most significant 5 bits of both the beginning and end points of this interval match and would be output (11000 2 ). After the output of the five bits, the remaining bits of both the start and stop intervals are shifted left, with the zeroes filling the lower order bits of the lower end of the interval and the ones filling the lower order bit positions of the upper interval. This results in a new interval of 0-FF.

Tabelle 3 Beispieldaten (cw = Kodewort; "size" = Größe)

Figure 00570001
Table 3 Sample Data (cw = codeword; "size" = size)
Figure 00570001

Soweit die ausgegebenen Bits 100000011000 sind, so kann das erste Byte 81 in Hexadezimal ausgegeben werden.So far the output bits are 100000011000, so can the first byte 81 in hexadecimal.

Figure 00580001
Figure 00580001

Obwohl die Ausführungsformen des Kodierers, der die fps- und Aufteil-Werte verwendet, beschrieben sind, kann der Kodierer in Software realisiert werden, indem ähnliche Anzeigen verwendet werden. Während in Hardware eine XOR-Operation mit dem fps-Signal relativ einfach zu realisieren ist, gibt es jedoch für den Fall von Software bei manchen Computer-Architekturen eine Schwierigkeit, da die Bestimmung, ob eine Zahl größer oder gleich einer anderen ist, zu der Festlegung eines Statusbits führt, nicht gerade ein Bit, auf das leicht zugegriffen werden kann. Die Operation der XOR-Verknüpfung oder des Vergleichens eines Bits mit einem Statusbit wird nur durch Durchführen von Verzweigungsoperationen durchgeführt, die zu unterschiedlichen Stellen bzw. Orten verzweigen, und zwar basierend darauf, ob das Statusbit eine 1 oder eine 0 ist, und dann wird auf ein Register bei jeder Stelle zugegriffen, das entweder mit der 1 oder der 0 geladen ist, die die Statusbitanzeige darstellt. Ein Beispiel für einen Pseudo-Kode einer derartigen Software wird im folgenden gegeben:
vergleiche Kodestrom, split8
verzweige größer als oder gleich Label 1
lade 0 in Register
verzweige Label 2
Label 1: lade 1 in Register
Label 2: vergleiche Register, FPS
verzweige größer oder gleich LPS
;MPS
Although the embodiments of the encoder using the fps and split values are described, the encoder can be implemented in software using similar displays. However, while in hardware an XOR operation with the fps signal is relatively easy to implement, in some computer architectures there is a difficulty in the case of software because the determination of whether one number is greater than or equal to another is Specifying a status bit, not just a bit that is easy to access. The operation of XORing or comparing a bit with a status bit is performed only by performing branching operations that branch to different locations based on whether the status bit is a 1 or a 0, and then goes on a register is accessed at each location loaded with either 1 or 0 representing the status bit display. An example of a pseudo-code of such software is given below:
compare code stream, split8
branch greater than or equal to label 1
load 0 in register
branching label 2
Label 1: load 1 in register
Label 2: compare registers, FPS
branch greater than or equal to LPS
mps

Dies stellt eine sehr schwerfällige Implementation dar.This represents a very cumbersome Implementation.

Für den Fall von Software können, um diese Schwierigkeiten zu überwinden, zwei Aufteilwerte für die Fälle erzeugt werden, wo fps 0 ist und fps 1 ist. Da das fps-Signal gleich 1 häufig auftritt bzw. mit einem hohen zeitlichen Prozentsatz auftritt, kann nur ein Vergleich durchgeführt werden, um ein Ergebnis zu erhalten, das der XOR-Verknüpfung unterzogen wurde (anstelle der zwei, die bei der Hardware-Realisierung benötigt wer den). Jedoch, falls der eine Vergleich nicht die notwendigen Ergebnisse bereitstellt, dann werden zwei zusätzliche Vergleiche benötigt, was mehr ist als die zwei, die bei Hardware benötigt werden, wobei ein endgültiger Vergleich zwischen der Eingabe und dem MPS durchgeführt wird, um zu bestimmen, ob sie übereinstimmen (wahrscheinlich). Ein Beispiel eines Pseudo-Kodes für diese Software wird im folgenden gegeben, wobei zwei Aufteilwerte verwendet werden, davon ist einer dafür da, daß die fps-Anzeige 1 ist (split8_fps1) und einer ist dafür da, daß die fps-Anzeige 0 ist (split8_fps0).
vergleiche Kodestrom, split8_fps1
verzweige weniger als MPS; höchstwahrscheinlicher Fall
vergleiche split8_fps1,0
verzweige nicht gleich LPS
vergleiche Kodestrom, split8_fps0
verzweige größer als oder gleich MPS
;LPS
In the case of software, to overcome these difficulties, two split values may be generated for the cases where fps is 0 and fps is 1. Since the fps signal equal to 1 occurs frequently or with a high percentage of time, only one comparison can be made to obtain a result that has been XORed (rather than the two needed in hardware implementation become). However, if the one comparison does not provide the necessary results, then two additional comparisons are needed, which is more than the two needed in hardware, with a final comparison made between the input and the MPS to determine if they match (probably). An example of a pseudo code for this software is given below, using two split values, one of which is for the fps indicator to be 1 (split8_fps1) and one for the fps indicator to be 0 ( split8_fps0).
compare code stream, split8_fps1
branch less than MPS; most likely case
compare split8_fps1,0
do not branch LPS right away
compare code stream, split8_fps0
branch greater than or equal to MPS
LPS

Räumenclear

Es gibt verschiedene mögliche Realisierungen der Flush-Logik bzw. Räum-Logik 707. 11 ist ein Blockdiagramm einer Ausführungsform der Flush-Logik 707 zur Räumung in einem Zyklus mit dem Wert 01112. Alternativ kann ein längerer Wert, wie z.B. 100000002, verwendet werden. Nimmt man Bezug auf 11, so ist die Verzögerung 1101 angeschlossen, um das Flush-Signal bzw. Räum-Signal 413 zu empfangen und die done_ bzw. "Räumen erledigt"-Anzeige 416 auszugeben. Bei einer Ausführungsform benötigt das Räumen einen Zyklus. Wiederum wird in diesem Fall die flush_sz-Anzeige 715 auf 4 gesetzt und flush_cw 716 wird auf 4 Bits 0111 gesetzt. Wiederum werden die Start- und Stoppwerte von dem Startregister 703 und dem Stoppregister 704 nicht verwendet.There are several possible implementations of the flush logic or purging logic 707 , 11 Figure 4 is a block diagram of one embodiment of the flush logic 707 to evacuate in a cycle with the value 0111 2 . Alternatively, a longer value, such as 10,000,000 2 , may be used. If you take reference 11 so is the delay 1101 connected to the flush signal or clearing signal 413 to receive and the done_ or "cleared rooms" display 416 issue. In one embodiment, clearing takes one cycle. Again, in this case, the flush_sz ad will appear 715 set to 4 and flush_cw 716 is set to 4 bits 0111. Again, the start and stop values are from the start register 703 and the stop register 704 not used.

Um mit der minimalen Anzahl von Bits zu räumen, kann das zum Räumen verwendete Kodewort durch die Start- und Stoppwerte bestimmt werden, wie in 12 gezeigt ist. Nimmt man Bezug auf 12, so ist die generate_codeword_for_flush-Einheit ("erzeuge Kodewort zum Räumen"-Einheit) 1201 angeschlossen, um den Startwert vom Register 703 und den Stoppwert vom Register 704 zu empfangen. In Antwort auf diese Ausgangssignale gibt die Einheit 1201 eine flush_sz-Anzeige 715 und ein flush_cw 716 aus. Ebenso ist die Verzögerungseinheit 1202 angeschlossen, um ein Flush-Signal 413 zu empfangen und eine done_flush-Anzeige 416 auszugeben. Die generate_codeword for flush-Einheit 201 arbeitet wie folgt:

Figure 00610001
Bei einer alternativen Ausführungsform kann das Räumen durch Kodieren von 8 Bits in PCLASS 0 durchgeführt werden. Dies erfordert keine Logik in dem FSM-Kodierer. Die Kontextmodell-/Wahrscheinlichkeitsschätz-/Systemsteuerung führt das Räumen durch.To clear out with the minimum number of bits, the codeword used for spaces can be determined by the start and stop values, as in 12 is shown. If you take reference 12 so is the generate_codeword_for_flush unit ("generate code word to rooms" unit) 1201 connected to the starting value from the register 703 and the stop value from the register 704 to recieve. In response to these output signals, the unit gives 1201 a flush_sz ad 715 and a flush_cw 716 out. Likewise, the delay unit 1202 connected to a flush signal 413 to receive and a done_flush ad 416 issue. The generate_codeword for flush unit 201 works as follows:
Figure 00610001
In an alternative embodiment, clearing may be performed by encoding 8 bits into PCLASS 0. This does not require logic in the FSM encoder. The context model / probability estimation / system control performs the broaching.

Biterzeugungs-VerilogBiterzeugungs-Verilog

Im folgenden ist eine beispielhafte Verilog-HDL-Beschreibung für die 8, 9 und 11 dargestellt.The following is an exemplary Verilog HDL description for the 8th . 9 and 11 shown.

Figure 00620001
Figure 00620001

Figure 00630001
Figure 00630001

Figure 00640001
Figure 00640001

Figure 00650001
Figure 00650001

Bestimmung der Anzahl der Ein-BitsDetermination of the number the one-bit

Die Bits-ein-Einheit 904 in 9 bestimmt die Anzahl der 1-Bits mit einem Baum von Addierern. Eine beispielhaft Verilog-HDL-Beschreibung ist die folgende:

Figure 00650002
The bits-a-unit 904 in 9 determines the number of 1-bits with a tree of adders. An exemplary Verilog HDL description is the following:
Figure 00650002

Kodewort-ErzeugungCodeword generation

13 ist ein Blockdiagramm einer Ausführungsform der Kodewort-Erzeugungseinheit (cw_gen) 805 der Bit-Erzeugungslogik 701. Wie zuvor diskutiert wurde, erzeugt die Kodeworteinheit 805 ein Kodewort und führt diese Funktion innerhalb einer Logik anstatt innerhalb einer LUT durch, wodurch Hardware eingespart werden kann. 13 is a block diagram of one embodiment of the codeword generation unit (cw_gen) 805 the bit generation logic 701 , As previously discussed, the code word engine generates 805 a codeword and performs this function within a logic rather than within a LUT, which can save hardware.

Nimmt man Bezug auf 13, so umfaßt die Kodeworteinheit 805 MUX 1301, das angeschlossen ist, um den Startwert von dem Startwertregister 703 und den split8-Wert 822 zu empfangen. Die MUX 1302 ist angeschlossen, um die Ausgabe des Subtrahierers 1309 auf seinem ersten Eingang und den Stoppwert von dem Stoppwertregister 704 auf den zweiten Eingang zu empfangen. Die Ausgänge der MUXs 1301 und 1302 werden über einen Auswahl-Signalausgang von dem Vergleicher 1303 ausgewählt, der angeschlossen ist, um eine Wahrscheinlich-Anzeige 720 und ein fps-Signal 821 zu empfangen, und das Ausgangssignal auf dem Auswahlsignal aktiviert bzw. bestätigt, falls die zwei gleich sind, wodurch der Startwert, der von dem MUX 1301 ausgegeben werden soll, und der split8-Wert 822 minus 1, der von dem MUX 1302 ausgegeben werden soll, ausgewählt wird. Falls nicht aktiviert wird, wird der split8-Wert 822 von dem MUX 1301 ausgegeben und der Stoppwert wird von dem MUX 1302 ausgegeben.If you take reference 13 so includes the code word unit 805 MUX 1301 that is connected to the seed from the seed register 703 and receive the split8 value 822. The mux 1302 is connected to the output of the subtractor 1309 on its first input and the stop value from the stop value register 704 to receive the second input. The outputs of the MUXs 1301 and 1302 are via a select signal output from the comparator 1303 selected, which is connected to a probable indicator 720 and a fps signal 821 and if the two are equal, the output signal on the selection signal is asserted, thereby reducing the start value provided by the MUX 1301 and the split8 value 822 minus 1, from the mux 1302 is to be output is selected. If not enabled, the split8 value becomes 822 from the mux 1301 output and the stop value is from the MUX 1302 output.

Das Ausgangssignal von MUX 1301 wird an einen Eingang des XOR-Gatters 1304 an den Kodewort-Schieber 1306 und den Start-Schieber 1307 angeschlossen. Der Ausgang des MUX 1302 ist an den anderen Eingang des XOR 1304 und an einen Eingang des Stoppschiebers 1308 angeschlossen. Der Ausgang des XOR-Gatters 1304 ist an den Eingang des Prioritätskodierers 1305 angeschlossen. Der Ausgang des Prioritätskodierers 1305 ist eine sz-Anzeige (z.B. ein Signal bzw. Signale) 710, das von der Kodewort-Erzeugungseinheit 805 ausgegeben wird. Die sz-Anzeige 710 ist ebenso an den anderen Eingang eines jeden Kodewort-Schiebers 1306, Start-Schiebers 1307 und Stopp-Schiebers 1308 angeschlossen. Die Ausgänge des Kodewort-Schiebers 1306, Start-Schiebers 1307 und Stopp-Schiebers 1308 sind das cw (Kodewort) 711, der next_start-Wert 712 und der next_start 713.The output signal of MUX 1301 is applied to an input of the XOR gate 1304 to the codeword slider 1306 and the start slider 1307 connected. The output of the MUX 1302 is at the other input of the XOR 1304 and to an entrance of the stopper 1308 connected. The output of the XOR gate 1304 is at the input of the priority encoder 1305 connected. The output of the priority encoder 1305 is a sz indicator (eg a signal or signals) 710 that from the codeword generation unit 805 is issued. The sz ad 710 is also at the other input of each codeword slider 1306 , Start slider 1307 and stop slider 1308 connected. The outputs of the codeword slider 1306 , Start slider 1307 and stop slider 1308 are the cw (codeword) 711 , of the next_start value 712 and the next_start 713 ,

Das aktuell gültige Intervall zwischen den Start- und Stopp-Werten wird unterteilt bei dem Wert, der durch split8-Wert 822 spezifiziert ist. Der Vergleicher 1303 führt einen Vergleich zwischen einer Wahrscheinlich-Anzeige 720 und einem fps 821 durch, um zu bestimmen, ob entweder der Start- oder Stopp-Wert durch den split-Wert ersetzt wird, der durch den split8-Wert 822 angezeigt ist, um ein neues Intervall (neuer Start- und Stopp-Wert) zu erzeugen. Bei einer Ausführungsform wird, falls der Stopp-Wert ersetzt wird, dieser mit dem Stopp-Wert minus 1 ersetzt. Der neue Start- und Stopp-Wert werden durch das XOR 1304 gemäß der Exklusiv-ODER-Verknüpfung verknüpft, um Bits zu lokalisieren, die übereinstimmen. Die Anzahl der Übereinstimmungsbits wird beginnend mit dem MSB durch den Prioritätskodierer 1305 bestimmt und als die Größe des Kodeworts (sz-Anzeige 710) ausgegeben. Die Größe ("size") des Kodewortes steuert die Schieber 1306 bis 1308. Die Übereinstimmungsbits der neuen Start- und Stopp-Werte werden durch einen cw-Schieber 1306 als cw 711 ausgegeben. Die Bits, die nicht übereinstimmen, werden durch den Start-Schieber 1307 und den Stopp-Schieber 1308 als next_start 712 und next_stop 713 jeweilig ausgegeben. Der Start-Schieber 1307 füllt die LSB(s) der unteren und des Intervalls mit Nullen. Der Stopp-Schieber 1308 füllt die LSB(s) des oberen Endpunkts des Intervalls mit Einsen. Bei manchen Ausführungsformen erfordert dies das Verschieben und das ODERn (siehe Verilog).The currently valid interval between the start and stop values is divided into the value specified by split8 value 822. The comparator 1303 performs a comparison between a probable ad 720 and an fps 821 to determine whether either the start or stop value is replaced by the split value indicated by the split8 value 822 at a new interval (new start and stop value). to create. In one embodiment, if the stop value is replaced, it is replaced with the stop value minus 1. The new start and stop values are given by the XOR 1304 according to the exclusive-OR operation to locate bits that match. The number of match bits is started by the priority encoder starting with the MSB 1305 determined and as the size of the codeword (sz display 710 ). The size of the codeword controls the sliders 1306 to 1308 , The match bits of the new start and stop values are given by a cw-slider 1306 as cw 711 output. The bits that do not match are given by the start slider 1307 and the stop slider 1308 as next_start 712 and next_stop 713 respectively issued. The start slider 1307 fills the LSB (s) of the lower and the interval with zeroes. The stop slider 1308 fills the LSB (s) of the upper endpoint of the interval with ones. In some embodiments, this requires the move and the ORn (see Verilog).

Bemerkenswert ist, daß bei alternativen Ausführungsformen zwei oder alle drei dieser Schieber kombiniert werden können. Ebenso bemerkenswert ist, daß der cw-Schieber 1306 den neuen Stopp-Wert als eine Eingabe anstelle des neuen Start-Wertes verwendet.It is noteworthy that in alternative embodiments, two or all three of these slides can be combined. Equally noteworthy is that the cw-slider 1306 used the new stop value as an input instead of the new start value.

Eine beispielhafte Veriolog-HDL-Beschreibung der 13 wird im folgenden gegeben:
// Copyright bzw. Urheberrecht 1997 RICOH
// Erzeuge ein Kodewort

Figure 00680001
Figure 00690001
An exemplary veriolog-HDL description of 13 is given below:
// Copyright or Copyright 1997 RICOH
// Create a codeword
Figure 00680001
Figure 00690001

Tabelle 4 summiert die gültigen Start- und Stopp-Paare, die die 61 FSM-Zustände darstellen. Diese Start- und Stopp-Paare und keine anderen werden durch die Operation der Hardware erzeugt.table 4 sums up the valid ones Start and stop pairs representing the 61 FSM states. These start and stop pairs and no others will be through the operation of Hardware generated.

Tabelle 4 Gültige Start- und Stopp-Paare (Hexadezimal)

Figure 00700001
Table 4 Valid start and stop pairs (hexadecimal)
Figure 00700001

Bit-PackenBit-packing

14 ist ein Blockdiagramm einer Ausführungsform der Packeinheit 404 des Entropiekodierers 400. Die Packeinheit 404 kombiniert Kodewörter variabler Länge in Bytes, wenn kodiert wird. Die Takt- und Freigabesignale sind nicht gezeigt, um eine Verschleierung der Erfindung zu vermeiden. 14 Fig. 10 is a block diagram of one embodiment of the packing unit 404 of the entropy coder 400 , The packing unit 404 combines codewords of variable length in bytes when coded. The clock and enable signals are not shown to avoid obscuring the invention.

Nimmt man Bezug auf 14, so ist das Kodewort 417 mit einem Eingang des ODER-Gatters 1402 verbunden, das es mit dem Ausgang der Schiebeeinrichtung 1401 gemäß der ODER-Verknüpfung verknüpft. Die Ergebnisse der ODER-Operation werden in dem Pufferregister 1403 gespeichert. Das Pufferregister (bbuf) 1403 hält die Bits bis sie in Bytes zusammengefügt sind und ausgegeben werden. Bei einer Ausführungsform ist das Pufferregister 1403 ein 16-Bit-Puffer. Wenn die Eingangsdaten empfangen werden, werden die Daten, die sich aktuell im Pufferregister 1403 befinden, verschoben, indem der Schieber 1401 verwendet wird, um Platz für die neuen Daten zu machen und die neuen Daten werden hinzugefügt. Um am Ende des Dekodierens zu räumen, werden jegliche Daten, die aktuell im Pufferregister 1403 sind, verschoben, um ein Byte zu vollenden. Die Daten, die von dem Pufferregister 1403 ausgegeben werden, werden mit dem Eingangsschieber 1405 verbunden. Der Schieber 1405 richtet das Dateninhalts-Pufferregister 1403 gemäß dem Wert des Zählregisters 1406 aus, um die Datenausgabe data_out 229 zu erzeugen. Zum Beispiel ist, unter der Annahme, daß es 9 Bits im Pufferregister 1403 in den Positionen 8..0 gibt, die Zählung in dem Zählregister 1406 9 und die Bits 8..1 sind für die Ausgabe bestimmt, die Schiebeeinrichtung 1405 richtet diese 8 Bits auf die Bits 7..0 von data_out 229 aus. Das Bit 0 des Pufferregisters 1403 bleibt, bis das nächste Byte ausgegeben werden kann.If you take reference 14 that's the code word 417 with an input of the OR gate 1402 connected to the output of the sliding device 1401 linked according to the OR link. The results of the OR operation are in the buffer register 1403 saved. The buffer register (bbuf) 1403 Holds the bits until they are put together in bytes and output. In one embodiment, the buffer register is 1403 a 16-bit buffer. When the input data is received, the data that is currently in the buffer register 1403 are moved, moved by the slider 1401 is used to make room for the new data and the new data is added. To clear at the end of decoding, any data that is currently in the buffer register 1403 are moved to complete a byte. The data coming from the buffer register 1403 are output with the input slider 1405 connected. The slider 1405 sets up the data content buffer register 1403 according to the value of the counting register 1406 off to the data output data_out 229 to create. For example, assuming that there are 9 bits in the buffer register 1403 in positions 8..0, the count in the count register 1406 9 and bits 8..1 are for output, the shifter 1405 directs these 8 bits to bits 7..0 of data_out 229 out. Bit 0 of the buffer register 1403 remains until the next byte can be output.

Alternativ könnte ein einziger Schieber anstelle von zwei Schiebern verwendet werden. Der einzige Schieber würde die Daten am Eingang des Pufferregisters 1403 ausrichten. Das Pufferregister 1403 würde als zwei 8-Bit-Register realisiert werden, die um 8 verschieben können, wenn jedes Byte ausgegeben worden ist. Ein Beispiel einer derartigen Realisierung ist in 14A gezeigt.Alternatively, a single slider could be used instead of two slides. The only slider would be the data at the input of the buffer register 1403 align. The buffer register 1403 would be realized as two 8-bit registers which can shift by 8 when each byte has been issued. An example of such a realization is in 14A shown.

Das Pufferregister 1403 speichert Daten in Antwort auf die Ausgabe der Freigabelogik 1408, die angeschlossen ist, um die Größenanzeige 418 zu empfangen und eine Anzeige 414 zu ermöglichen. Die Freigabelogik 1408 aktiviert ihre Freigabe-Ausgabe, wenn die Größe ("size") größer als 0 in der Freigabe aktiviert ist. Der Freigabeausgang für die Freigabelogik 1408 ist mit dem Eingang des verwendeten Registers 1409 verbunden, um anzuzeigen, daß Bits gesendet worden sind.The buffer register 1403 saves data in response to the output of the release logic 1408 which is connected to the size indicator 418 to receive and an advertisement 414 to enable. The release logic 1408 enables its release output if size (size) greater than 0 is enabled in the share. The release output for the release logic 1408 is with the input of the register used 1409 connected to indicate that bits have been sent.

Die Ausgabe des Puffenegisters 1403 wird zu dem Schieber 1401 zurückgeführt, um mit den verschobenen Daten kombiniert zu werden.The output of the buffer register 1403 becomes the slider 1401 returned to be combined with the moved data.

Das Zählregister (bcnt) 1406 bleibt mit den Bits in dem Pufferregister 1403 am laufenden, die darauf warten, ausgegeben zu werden. Das Zählregister 1406 wird um die Größe der Eingangsdaten minus einer bestimmten Menge inkrementiert bzw. erhöht, die darauf basiert, ob das data_in_fertig-Signal 1428 aktiviert ist. Falls es aktiviert ist, wird der Zähler im Zählregister 1406 um die Größe der Eingangsdaten minus 8 erhöht; ansonsten wird der Zähler durch die Größe der Eingangsdaten (minus 0) erhöht. Die Zähllogik 1404 (die angeschlossen ist, um die Größenanzeige bzw. size-Anzeige 418, eine Rückkopplung des data_out_ready_Signals bzw. data_out_fertig_Signals 423, eine Rückkopplung vom Zählregister 1406 und das Ausgangssignal der Räumlogik 1410 zu empfangen) ist für das Aktivieren des data_in ready_Signals 1428 verantwortlich. Bei einer Ausführungsform umfaßt das Zählregister 1406 einen 4-Bit-Zähler.The counting register (bcnt) 1406 stays with the bits in the buffer register 1403 ongoing, waiting to be issued. The counting register 1406 is incremented / incremented by the size of the input data minus a certain amount based on whether the data_in_ready signal 1428 is activated. If enabled, the counter will be in the count register 1406 increased by the size of the input data minus 8; otherwise the counter is increased by the size of the input data (minus 0). The counting logic 1404 (which is connected to the size indicator or size indicator 418 , a feedback of the data_out_ready_signal or data_out_fertig_Signals 423 , a feedback from the counting register 1406 and the output signal of the purging logic 1410 to receive) is for activating the data_in ready_signal 1428 responsible. In one embodiment, the count register comprises 1406 a 4-bit counter.

Die Fertig-Logik 1407 überwacht, wenn das Ausgangssignal eines Zählregisters 1406 8 oder mehr beträgt und aktiviert das data_out_ready-Signal 423. Wenn dies auftritt, erniedrigt die Zähllogik 1404 die Zählung im Zählregister 1406 um 8.The finished logic 1407 monitors when the output of a count register 1406 8 or more and activates the data_out_ready signal 423 , When this occurs, the counting logic lowers 1404 the count in the count register 1406 at 8.

Die Räumlogik 1410 wird verwendet, um jegliche Daten, die immer noch am Ende der Kodierung gepuffert werden, zu räumen oder auszugeben. Bei einer Ausführungsform räumt die Räumlogik 1410 die Zähllogik 1404 und den Schieber 1401 in Antwort auf das Räumsignal 413 und bg_done_flush-Signal 416. Die Flush-Logik 1410 ist ebenso angeschlossen, um das Ausgangssignal des verwendeten Registers (bused) 1409 und das Ausgangssignal des Zählregisters 1406 zu empfangen. Das verwendete Register 1409 wird auf 1 gesetzt, wenn jegliche Daten eingegeben werden. Bei einer Ausführungsform ist das verwendete Register 1409 ein 1-Bit-Register. Es wird verwendet, um anzuzeigen, wenn keine Daten eingegeben worden sind, so daß ein Räumen nicht notwendig ist. Die Flush-Logik 1410 führt die Räumoperation durch, falls ein Flush-Signal 413 aktiviert wird, der Wert in dem Zählregister 1406 größer als 0 ist und der Wert im verwendeten Register 1409 größer als 0 ist. Falls das verwendete bzw. gebrauchte Register 1409 anzeigt, daß keine Daten eingegeben wurden, zeigt die Flush-Logik 1410 an, daß das Räumen vollendet ist. Zum Räumen werden, falls data_out_ready 423 nicht aktiviert ist, dann der Inhalt des Pufferregisters 1403 zu dem MSB(s) bewegt, indem der Schieber 1401 verwendet wird und der Inhalt des Zählregisters 1406 gleich 0 gesetzt wird, wenn das data_out_ready-Signal 423 aktiviert ist oder gleich 8 gesetzt wird, wenn das data_out_ready-Signal 423 nicht aktiviert ist. Das Räumen ist in der Fachwelt gut bekannt.The clearing logic 1410 is used to clear or dump any data that is still buffered at the end of the encoding. In one embodiment, the clean-up logic removes 1410 the counting logic 1404 and the slider 1401 in response to the stink signal 413 and bg_done_flush signal 416 , The flush logic 1410 is also connected to the output of the used register (bused) 1409 and the output of the count register 1406 to recieve. The used register 1409 is set to 1 if any data is entered. In one embodiment, the register used is 1409 a 1-bit register. It is used to indicate when no data has been entered, so that space is not necessary. The flush logic 1410 performs the scavenging operation if a flush signal 413 is activated, the value in the count register 1406 is greater than 0 and the value in the register used 1409 is greater than 0. If the used or used register 1409 indicates that no data has been entered, shows the flush logic 1410 that the room is completed. To clean up, if data_out_ready 423 is not activated, then the contents of the buffer register 1403 moved to the MSB (s) by the slider 1401 is used and the contents of the count register 1406 is set equal to 0 if the data_out_ready signal 423 is enabled or set equal to 8 if the data_out_ready signal 423 is not activated. Spaces are well known in the art.

Nachdem das Räumen vollendet ist, aktiviert die Flush-Logik 1419 das done_flush-Signal 424. Mit anderen Worten, falls das Flush-Signal bzw. Räumsignal 415 aktiviert wird und entweder die Zählung im Zählregister 1406 0 ist oder der Wert dem verwendeten bzw. gebrauchten Register 1409 0 ist, dann wird das done_flush-Signal 424 aktiviert.After the room is completed, the flush logic activates 1419 the done_flush signal 424 , In other words, if the flush signal 415 is activated and either the count in the count register 1406 0 or the value of the used or used register 1409 0, then the done_flush signal 424 activated.

Falls der FSM-Kodierer zurückgesetzt wird, werden das Pufferregister 1403, das Zählregister 1406 und das gebrauchte Register 1409 initialisiert. Bei einer Ausführungsform werden sie auf 0 initialisiert.If the FSM encoder is reset, the buffer register will be 1403 , the counting register 1406 and the used register 1409 initialized. In one embodiment, they are initialized to zero.

Eine beispielhafte Verilog-HDL-Beschreibung für die 14 folgt.An exemplary Verilog HDL description for the 14 follows.

Figure 00740001
Figure 00740001

Figure 00750001
Figure 00750001

Bit-EntpackenBit unpacking

15 ist ein Blockdiagramm einer Ausführungsform einer Entpackeinheit 405, die eine Verschiebung variabler Länge der Bytes des kodierten Datenstroms in Kodewörter variabler Länge während des Dekodierens durchführt. Der Takt 405, das Rücksetzsignal 411 und das Freigabesignal 414 sind nicht gezeigt, um eine Verschleierung der vorliegenden Erfindung zu vermeiden. 15 Fig. 10 is a block diagram of one embodiment of an unpacking unit 405 which performs a variable-length shift of the bytes of the coded data stream into variable-length codewords during decoding. The beat 405 , the reset signal 411 and the enable signal 414 are not shown to avoid obscuring the present invention.

Nimmt man Bezug auf 15, so ist das data_in-Kodewort 221 an den Eingang des Pufferregisters 1501 und den Schieber 1504 angeschlossen. Das Pufferregister (ubuf) 1501 hält eine vorherige Anzahl von Bits der kodierten Daten. Bei einer Ausführungsform ist das Pufferregister 1501 ein 8-Bit-Register, das die vorhergehenden 8 Bits der kodierten Daten hält.If you take reference 15 so that's the data_in codeword 221 to the input of the buffer register 1501 and the slider 1504 connected. The buffer register (ubuf) 1501 holds a previous number of bits of encoded data. In one embodiment, the buffer register is 1501 an 8-bit register holding the previous 8 bits of encoded data.

Der Ausgang des Pufferregisters 1501 ist an den Eingang des Schiebers 1502 angeschlossen, der die Daten in einen Eingang des ODER-Gatters 1503 in Antwort auf das Ausgangssignal des Zählregisters 1506 verschiebt. Der andere Eingang des ODER-Gatters 1503 ist an den Ausgang des Schiebers 1504 angeschlossen, der data_in 221 in Antwort auf die Zählung 1509, die von dem Zählregister 1506 ausgegeben wird, verschiebt. Der Ausgang des ODER-Gatters 1503 ist das data_out 1520, bei dem es sich um den Codestrom 419 handelt.The output of the buffer register 1501 is at the entrance of the slider 1502 connected, the data in an input of the OR gate 1503 in response to the output of the count register 1506 shifts. The other input of the OR gate 1503 is at the exit of the slider 1504 connected, the data_in 221 in response to the count 1509 that from the count register 1506 is issued, shifts. The output of the OR gate 1503 is the data_out 1520 which is the code stream 419 is.

Das Zählregister 1506 gibt die Zählung 1509 in Antwort auf eine Eingabe der Zähllogik 1505 aus. Die Zähllogik 1505 erzeugt ihr Ausgangssignal in Antwort auf die Zählung 1509, die von dem Ausgang des Zählregisters 1506 zurückgeführt wird, die Größenanzeige 418 und das Ausgangssignal des Vergleichers 1507. Der andere Eingang des Vergleichers 1507 ist mit der Zählung 1509 verbunden. Der Ausgang des Vergleichers 1507, das wnext-Signal 1510 ist an den Eingang des next-Registers bzw. des nächsten Registers 1508 angeschlossen. Der Ausgang des nächsten Registers 1508 ist das next_byte-Signal 420.The counting register 1506 gives the count 1509 in response to an input of the count logic 1505 out. The counting logic 1505 generates its output in response to the count 1509 from the output of the count register 1506 is returned, the size indicator 418 and the output of the comparator 1507 , The other input of the comparator 1507 is with the count 1509 connected. The output of the comparator 1507 , the wnext signal 1510 is at the input of the next register or the next register 1508 connected. The output of the next register 1508 is the next_byte signal 420 ,

Das Zählregister (ucnt) 1506 hält die Anzahl der Bits im Pufferregister 1501, die nicht durch den Dekoder verbraucht worden sind. Das Zählregister 1506 wird über die Zähllogik 1505 durch die Größe des Kodewortes dekrementiert, das durch den Dekoder verbraucht wird, wie durch die Größenanzeige 418 angezeigt wird. Wenn der Wert im Zählregister 1506 weniger als oder gleich der Größe des aktuell angeforderten Kodeworts ist, wird data_in 221 in das Pufferregister 1501 geladen, das Zählregister 1506 wird um 8 inkrementiert und ein wnext-Signal 1510 wird aktiviert.The counting register (ucnt) 1506 Holds the number of bits in the buffer register 1501 that have not been consumed by the decoder. The counting register 1506 is about the counting logic 1505 is decremented by the size of the codeword consumed by the decoder, such as the size indicator 418 is shown. If the value in the count register 1506 is less than or equal to the size of the currently requested code word, data_in 221 in the buffer register 1501 loaded, the counting register 1506 is incremented by 8 and a wnext signal 1510 is activated.

Der korrekt ausgerichtete Kodestrom data_out 1520 wird erzeugt, indem die Anzahl der Bits gleich der Zählung 1509 (Zählregister 1506) von dem Pufferregister 1501 und die Anzahl der Bits gleich 8 minus der Anzahl der Bits gleich der Zählung 1509 von data_in 221 genommen wird.The correctly aligned code stream data_out 1520 is generated by the number of bits equal to the count 1509 (count register 1506 ) from the buffer register 1501 and the number of bits equals 8 minus the on number of bits equal to the count 1509 from data_in 221 is taken.

Der Vergleicher 1507 ist ein "weniger als oder gleich"-Vergleicher, der bestimmt, ob die Zählung 1509 weniger als oder gleich der Größenanzeige bzw. size-Anzeige 1418 ist. Falls er dies ist, wird das wnext-Signal 1510 aktiviert. In Antwort darauf, daß das wnext-Signal 1590 aktiviert wird, erzeugt das nächste Register ("next") 1508 die next_byte-Steueranzeige 420, die anzeigt, daß das nächste Byte des kodierten Datenstroms bei data_in 221 dargestellt werden sollte. Bei einer Ausführungsform ist das Register 1508 ein 1-Bit-Signal. Mit anderen Worten, wenn die ersten der zwei Bytes verbraucht sind, zeigt die next_byte-Anzeige 420 an, daß das nächste Byte von data_in 221 ausgegeben werden sollte.The comparator 1507 is a "less than or equal" comparator that determines whether the count is 1509 less than or equal to the size indicator or size indicator 1418 is. If it is, the wnext signal will be generated 1510 activated. In response to the fact that the wnext signal 1590 is activated, generates the next register ("next") 1508 the next_byte control display 420 indicating that the next byte of the encoded data stream is at data_in 221 should be presented. In one embodiment, the register is 1508 a 1-bit signal. In other words, when the first of the two bytes are consumed, the next_byte display shows 420 that the next byte of data_in 221 should be issued.

Falls der FSM-Kodierer zurückgesetzt wird, werden das Pufferregister 1501, das Zählregister 1506 und das nächste Register 1508 alle initialisiert. Bei einer Ausführungsform werden diese Register auf 0 initialisiert. Bemerkenswert ist, daß die Register 1501, 1506 und 1508 als andere Speichervorrichtungstypen realisiert werden können.If the FSM encoder is reset, the buffer register will be 1501 , the counting register 1506 and the next register 1508 all initialized. In one embodiment, these registers are initialized to zero. It is noteworthy that the registers 1501 . 1506 and 1508 can be realized as other types of storage devices.

Im folgenden ist eine beispielhafte Verilog-HDL-Beschreibung für 15 gegeben.
// Copyright bzw. Urheberrecht 1997 RICOH
// Entpacken der 8-Bit-Kodestrombytes in Kodewörter variabler Länge
// data_in muß direkt zu data_out ausgegeben werden, so daß es sonstwo
// registriert werden muß

Figure 00770001
Figure 00780001
The following is an exemplary Verilog HDL description for 15 given.
// Copyright or Copyright 1997 RICOH
// unpack the 8-bit code stream bytes into variable length codewords
// data_in must be output directly to data_out, so it's elsewhere
// must be registered
Figure 00770001
Figure 00780001

FSM-Kodierer-SteuerungFSM encoder control

16 ist ein Steuer-Flußdiagramm zum Kodieren. 17 ist das entsprechende Flußdiagramm zum Dekodieren. Die Steuerung wird durch eine Verarbeitungslogik durchgeführt, bei der es sich um eine Hardware-Logik, eine Software-Logik oder eine Kombination aus beiden handeln kann. Bei einer Ausführungsform umfaßt die Verarbeitungslogik ein Computersystem mit einem oder mehreren Prozessoren, die Instruktionen ausführen. 16 is a control flowchart for coding. 17 is the corresponding flowchart for decoding. Control is performed by processing logic, which may be hardware logic, software logic, or a combination of both. In one embodiment, the processing logic includes a computer system having one or more processors executing instructions.

Nimmt man Bezug auf 16, so beginnt das Steuerungs-Flußdiagramm zum Kodieren, indem eine Logik abgearbeitet bzw. verarbeitet wird, die ein Rücksetzen bzw. einen Reset durchführt (Verarbeitungsblock 1601). Nach dem Durchführen des Resets testet die Verarbeitungslogik, ob das Bit und der Kontext zum Kodieren fertig sind (Verarbeitungsblock 1602). Falls das Bit und der Kontext nicht zum Kodieren fertig sind, schreitet die Verarbeitung beim Verarbeitungsblock 1603 fort, wo die Verarbeitungslogik nicht eine Freigabeanzeige aktiviert (z.B. Signal bzw. Signale) und die Verarbeitung verzweigt in Schleifenform zurück zu dem Beginn des Verarbeitungsblockes 1602. Falls das Bit und der Kontext fertigt sind, schreitet die Verarbeitung zum Verarbeitungsblock 1604 fort, wo die Verarbeitungslogik die Freigabeanzeige aktiviert, um das Bit zu kodieren.If you take reference 16 Thus, the control flowchart for coding begins by processing a logic that performs a reset or a reset (processing block 1601 ). After performing the reset, the processing logic tests to see if the bit and context for coding are done (processing block 1602 ). If the bit and the context are not ready for encoding, processing proceeds to the processing block 1603 where the processing logic does not enable a release indication (eg, signals) and the processing loops back to the beginning of the processing block 1602 , If the bit and the context are done, processing proceeds to the processing block 1604 where the processing logic activates the enable indicator to encode the bit.

Nach dem Aktivieren der Freigabeanzeige, testet die Verarbeitungslogik, ob die Datenausgabe fertig ist (Verarbeitungsblock 1605). Falls die Datenausgabe fertig ist, handhabt die Verarbeitungslogik die Ausgangsdaten beim Verarbeitungsblock 1606 und die Verarbeitung schreitet zum Verarbeitungsblock 1607 fort. Ein derartiges Handhaben kann die Bereitstellung von Speicher, eines Kanals, einer Anzeige, einer Verarbeitung oder was sonst immer die Daten verwendet, beinhalten. Falls die Verarbeitungslogik bestimmt, daß die Daten nicht zum Ausgeben fertigt sind, schreitet die Verarbeitung zum Verarbeitungsblock 1607 fort, wo die Verarbeitungslogik bestimmt, falls mehr Daten zu kodieren sind. Falls mehr Daten zu kodieren sind, verzweigt die Verarbeitung zum Verarbeitungsblock 1602 zurück; ansonsten schreitet die Verarbeitung zum Verarbeitungsblock 1608 fort.After activating the release indicator, the processing logic tests whether the data output is complete (processing block 1605 ). If the data output is done, the processing logic handles the output data at the processing block 1606 and the processing proceeds to the processing block 1607 continued. Such handling may involve the provision of memory, a channel, a display, processing, or whatever else the data uses. If the processing logic determines that the data is not ready to be output, processing proceeds to the processing block 1607 where the processing logic determines if more data is to be encoded. If more data is to be encoded, processing branches to the processing block 1602 back; otherwise, the processing proceeds to the processing block 1608 continued.

Beim Verarbeitungsblock 1608 aktiviert die Verarbeitungslogik die Flush-Anzeige bzw. Räum-Anzeige (z.B. Signal bzw. Signale). Danach testet die Verarbeitungslogik, ob Daten zur Ausgabe bereit sind (Verarbeitungsblock 1609). Falls die Daten zur Ausgabe bereit sind, schreitet die Verarbeitung beim Verarbeitungsblock 1610 fort, wo die Verarbeitungslogik die ausgegebenen Daten handhabt und die Verarbeitung schreitet zum Verarbeitungsblock 1611 fort. Falls die Daten nicht zur Ausgabe fertigt sind, schreitet die Verarbeitung zum Verarbeitungsblock 1611 genauso fort. Beim Verarbeitungsblock 1611 testet die Verarbeitungslogik, ob ein Räumen vollständig ist. Falls das Räumen nicht vollständig ist, verzweigt die Verarbeitungslogik zum Verarbeitungsblock 1608 zurück. Falls das Räumen vervollständigt worden ist, endet der Steuerfluß zum Kodieren., Nimmt man Bezug auf 17, so beginnt der Steuerungsfluß zum Dekodieren beim Verarbeitungsblock 1701, wo die Verarbeitungslogik den FSM-Kodierer zurücksetzt. Nach dem Zurücksetzen des FSM-Kodierers testet die Verarbeitungslogik, ob der Kontext fertig ist und der Kodierer ist zum Dekodieren fertig (Verarbeitungsblock 1702). Ein Synchronisationssystem ist immer fertig, während ein asynchrones System Bits von dekodierten Daten anfordert und/oder das System auf kodierte Daten wartet. Falls der Kontext nicht fertig ist oder der Kodierer nicht zum Dekodieren fertig ist, schreitet die Verarbeitung beim Verarbeitungsblock 1703 fort, wo die Verarbeitungslogik nicht die Freigabeanzeige aktiviert und die Verarbeitung verzweigt zum Anfang des Verarbeitungsblocks 1702 zurück. Auf der anderen Seite, falls der Kontext fertig ist und der Dekoder zum Dekodieren fertig ist, schreitet die Verarbeitung zum Verarbeitungsblock 1704 fort, wo eine Verarbeitungslogik die Freigabeanzeige aktiviert, um das Dekodieren des Bits zu beginnen. Nach der Aktivierung der Freigabeanzeige handhabt die Verarbeitungslogik das Ausgangsbit (Verarbeitungsblock 1705). Dieses Handhaben kann das Liefern der dekodierten Daten, was auch immer zu ihrer Verwendung da ist, wie z.B.At the processing block 1608 The processing logic activates the flush display or the clearing display (eg signal or signals). Thereafter, the processing logic tests whether data is ready for output (processing block 1609). If the data is ready for output, processing proceeds to the processing block 1610 where the processing logic handles the output data and processing proceeds to the processing block 1611 continued. If the data is not ready for output, processing proceeds to the processing block 1611 just like that. At the processing block 1611 Tests the processing logic to determine if a room is complete. If flushing is not complete, the processing logic branches to the processing block 1608 back. If the space has been completed, the control flow for coding ends., Reference is made 17 Thus, the control flow for decoding begins at the processing block 1701 where the processing logic resets the FSM encoder. After resetting the FSM encoder, the processing logic tests whether the context is complete and the encoder is ready for decoding (processing block 1702 ). A synchronization system is always ready while an asynchronous system requests bits of decoded data and / or the system waits for encoded data. If the context is not ready or the encoder is not ready for decoding, processing proceeds to the processing block 1703 where the processing logic does not enable the enable indicator and processing branches to the beginning of the processing block 1702 back. On the other hand, if the context is ready and the decoder is ready for decoding, processing proceeds to the processing block 1704 where processing logic activates the enable indicator to begin decoding the bit. After activating the enable display, the processing logic handles the output bit (processing block 1705 ). This handling may be to provide the decoded data, whatever its use, such as

ein Speicher, ein Kanal, eine Anzeige, Verarbeitung usw., beinhalten. Nach dem Handhaben des Ausgangsbits testet die Verarbeitungslogik, ob mehr kodierte Daten benötigt werden (Verarbeitungsblock 1706). Falls mehr kodierte Daten benötigt werden, gibt die Verarbeitungslogik mehr kodierte Daten zu dem Dekoder (Verarbeitungsblock 1707) und die Verarbeitung schreitet zum Verarbeitungsblock 1708 fort. Auf der anderen Seite, falls mehr kodierte Daten nicht benötigt werden, geht die Verarbeitung direkt zum Verarbeitungsblock 1708 über. Beim Verarbeitungsblock 1708 testet die Verarbeitungslogik, ob es mehr Daten zum Dekodieren gibt. Falls es mehr Daten zum Dekodieren gibt, verzweigt die Verarbeitungslogik zum Verarbeitungsblock 1702 zurück. Falls es nicht mehr zu kodierende Daten gibt, endet der Steuerungsfluß zum Dekodieren.memory, channel, display, processing, etc. After handling the output bit, the processing logic tests whether more encoded data is needed (processing block 1706 ). If more coded data is needed, the processing logic gives more coded data to the decoder (processing block 1707 ) and the processing proceeds to the processing block 1708 continued. On the other hand, if more coded data is not needed, processing goes directly to the processing block 1708 above. At the processing block 1708 tests the processing logic to see if there is more data to decode. If there is more data for decoding, the processing logic branches to the processing block 1702 back. If there is no data to be encoded, the control flow for decoding ends.

Das Verilog zeigt die Operationen im Detail und beinhaltet ebenso eine gewisse Initialisierung, die für die Simulation spezifisch ist.The Verilog shows the operations in detail and includes one as well certain initialization for the Simulation is specific.

Figure 00810001
Figure 00810001

Figure 00820001
Figure 00820001

Figure 00830001
Figure 00830001

Figure 00840001
Figure 00840001

Figure 00850001
Figure 00850001

Parallelisierung und Pipeliningparallelization and pipelining

Die vorliegende Erfindung Erfindung kann mit einer Parallelisierung und einem Pipelining bzw. einer Verarbeitung gemäß einer Pipeline realisiert werden. Beide Verarbeitungsarten erhöhen die maximale Taktgeschwindigkeit und ermöglichen ein Kodieren von mehr als 1 Bit pro Taktzyklus. Jedoch ist das Pipelining und das Parallelisieren durch den Aufwand an Logik hinsichtlich Rückkopplungsschleifen erschwert. Der Kontextspeicher und der fsm_state bzw. fsm-Zustand zusammen mit den Start- und Stopp-Registern muß für jedes Bit vor dem nächsten Kontext aktualisiert werden. Zum Dekodieren erfordern viele Kontextmodelle ebenso den Empfang des zuvor dekodierten Bits vor dem nächsten Kontext, wodurch eine andere Rückkopplungsschleife erzeugt wird. Diese Rückkopplungsschleifen erfordern, daß gewisse Operationen sequentiell sind, wodurch der Parallelismus verkompliziert wird.The The present invention can be used with parallelization and pipelined or pipelined become. Both types of processing increase the maximum clock speed and allow coding more than 1 bit per clock cycle. However, this is pipelining and parallelism by the amount of logic involved Feedback loops difficult. The context memory and the fsm_state or fsm state along with the start and stop registers must be for each bit before the next context to be updated. Many context models are required for decoding as well as receiving the previously decoded bit before the next context, thereby generating another feedback loop becomes. These feedback loops require that certain Operations are sequential, which complicates the parallelism becomes.

Bei einer Ausführungsform verarbeitet das oben gegebene Hardwaredesign ein Bit pro Taktzyklus. Andere Kompressionsanwendungen erfordern, daß viele Bits für jedes Pixel in einem Bild kodiert werden; somit werden viele Taktzyklen benötigt. Die aktuelle Anzahl der Taktzyklen pro Komponente eines jeden Pixels hängt von der Tiefe des Bildes und dem Bildinhalt ab. Es ist wünschenswert, entweder mehr als ein Bit pro Takt zyklus zu verarbeiten und/oder eine Taktrate zu haben, die wesentlich schneller als der Pixeltakt ist.at an embodiment The hardware design given above processes one bit per clock cycle. Other compression applications require many bits for each Pixels in a picture are encoded; thus many clock cycles needed. The current number of clock cycles per component of each pixel depends on the depth of the picture and the picture content. It is desirable either more than one bit per clock cycle to process and / or to have a clock rate that is much faster than the pixel clock is.

Die vorliegende Erfindung stellt FSM-Kodierer bereit, die einen wahren Parallelismus aufweisen. Zum Beispiel können zwei Bits (mit zugeordneten Kontexten) in einem Zyklus kodiert werden. In einem derartigen Fall erzeugt das Kontextmodell zwei Kontexte parallel. Der Bitstrom, der Kontextspeicher und der fsm_state bzw. fsm-Zustand und die Start- und Stopp-Register werden so aktualisiert als ob die zwei Bits sequentiell kodiert werden würden. Die Bit-Erzeugungslogik kann modifiziert werden, um zwei PCLASSen zu handhaben. Dies würde eine beträchtliche Zunahme an einer Hardware-Komplexizität erforderlich machen. Zum Beispiel müßte die Kodewort-Erzeugungseinheit zwei Aufspalt-Werte bzw. split-Werte handhaben, wobei sowohl ein Start als auch ein Stopp bewirkt werden, und müßte bis zu 16-Bit-Kodewörter erzeugen. Das gleichzeitige Handhaben von zwei Bits oder mehr könnte vereinfacht werden, falls nur spezielle Fälle gehandhabt werden. Der normale Modus einer "ein Bit zu einer Zeit"-Operation würde verwendet werden, wenn der Spezielfall nicht anwendbar war. Hier gibt es einige Beispiele:

  • • Kodiere ein Bit in irgendeiner PCLASS und ein Bit nur in PCLASS 0.
  • • Kodiere zwei Bits, beide in PCLASS 0.
  • • Kodiere vier Bits, alle in PCLASS 0.
  • • Kodiere zwei Bits in irgendeiner PCLASS, aber nur wenn im FSM-Zustand 0 begonnen wird.
The present invention provides FSM encoders that have true parallelism. For example, two bits (with associated contexts) can be encoded in one cycle. In such a case, the context model creates two contexts in parallel. The bitstream, context memory and fsm_state or fsm state and the start and stop registers are updated as if the two bits were being coded sequentially. The bit generation logic can be modified to handle two PCLASSs. This would require a significant increase in hardware complexity. For example, the codeword generator would have to handle two split values, causing both a start and a stop, and would have to generate up to 16-bit codewords. Simultaneously handling two bits or more could be simplified if only special cases are handled. The normal mode of a "one bit at a time" operation would be used if the special case was not applicable. Here are some examples:
  • • Encode a bit in any PCLASS and a bit only in PCLASS 0.
  • • Encode two bits, both in PCLASS 0.
  • • Encode four bits, all in PCLASS 0.
  • • Encode two bits in any PCLASS, but only when starting in FSM state 0.

Die Hardwarekosten des wahren Parallelismus oder der Kontextmodelle, die nicht eine parallele Kontexterzeugung erlauben, können einen wahren Parallelismus unattraktiv machen.The Hardware costs of true parallelism or contextual models, which do not allow a parallel context generation, can one make true parallelism unattractive.

Eine Alternative zum wahren Parallelismus ist es, unterschiedliche FSM-Kodierer zu haben, die unterschiedliche Abschnitte des kodierten Bitstroms unabhängig verarbeiten.A Alternative to true parallelism is different FSM encoders to have the different sections of the encoded bitstream independently to process.

Eine besonders attraktive Option ist es, einen einzigen physikalischen FSM-Kodierer gemäß einer Pipeline-Verarbeitung zu betreiben, so daß er wie verschiedene unabhängige virtuelle FSM-Kodierer arbeitet. Wenn einmal die Möglichkeiten zum Pipelining erschöpft sind, dann können die FSM-Kodierer (oder die nicht zur Pipeline-Verarbeitung fähigen Abschnitte von FSM-Kodierern) zur parallelen Verarbeitung repliziert werden. Es gibt viele Arten, den Bitstrom in Abschnitte zum parallelen Kodieren aufzuteilen:

  • • Für Video können unterschiedliche Frames bzw. Vollbilder parallel kodiert werden.
  • • Das Bild kann in Platten bzw. Unterteilungen ("tiles ") aufgeteilt werden und unterschiedliche Platten bzw. Unterteilungen können parallel kodiert werden.
  • • Falls das Bild mehrere Komponenten aufweist (wie z.B. RGB, CMYK oder YUV), können unterschiedliche Komponenten parallel kodiert werden.
  • • Es kann Orte innerhalb einer Unterteilung/Komponente geben, so der FSM-Kodierer zurückgesetzt wird, die hierin als Eintrittspunkte bezeichnet werden. Segmente kodierter Daten, die bei unterschiedlichen Eintrittspunkten starten, können parallel kodiert werden. Hinsichtlich Wavelet-Koeffizienten kann es vorteilhaft sein, eine übliche Ausrichtung zu verwenden, wie sie in 10 gezeigt ist. Koeffizienten werden in vier Gruppen gleicher Größe unterteilt (da die DS1-, SD1- und DD1-Frequenzbänder jeweils ein Viertel der Gesamtzahl der Koeffizienten sind). (Eine gleiche Größe bedeutet eine gleiche Anzahl von Koeffizienten, wohingegen die Anzahl der Gesamtbits oder der gesamten binären Entscheidungen in jeder Gruppe unterschiedlich sein können). Niveaus anders als 1 können in einer normalisierten oder pyramidalen Art und Weise ausgerichtet werden. Falls nur ein paralleles Kodieren gewünscht ist, können Kontexte parallel erzeugt werden. Zum parallelen Dekodieren benötigt das Kontextmodell nicht Daten, die noch nicht dekodiert sind. Zur Ausrichtung gemäß 10 kann das Kodieren der Niveau-1-Koeffizienten ohne Konditionierung der Eltern bzw. der Mütter ("parents") notwendig sein.
A particularly attractive option is to pipeline a single physical FSM encoder so that it operates like several independent FSM virtual encoders. Once the pipelining capabilities are exhausted, then the FSM encoders (or non-pipelined portions of FSM encoders) can be replicated for parallel processing. There are many ways to divide the bitstream into sections for parallel coding:
  • • For video, different frames or frames can be encoded in parallel.
  • • The image can be divided into tiles, and different tiles or partitions can be encoded in parallel.
  • • If the image has multiple components (such as RGB, CMYK or YUV), different components can be encoded in parallel.
  • • There may be places within a subdivision / component to reset the FSM encoder, referred to herein as entry points. Segments of coded data starting at different entry points can be coded in parallel. With regard to wavelet coefficients, it may be advantageous to use a common orientation, as in 10 is shown. Coefficients are divided into four groups of equal size (since the DS 1 , SD 1 , and DD 1 frequency bands are each one quarter of the total number of coefficients). (An equal size means an equal number of coefficients, whereas the number of total bits or the total binary decisions in each group may be different). Levels other than 1 can be aligned in a normalized or pyramidal manner. If only parallel coding is desired, contexts can be generated in parallel. For parallel decoding, the context model does not need data that has not yet been decoded. For alignment according to 10 coding the level 1 coefficients without parental conditioning may be necessary.

Um einen hohen Grad an Parallelismus zu erzielen, können verschiedene der obigen Wege zum Teilen der Daten bei derselben Implementation verwendet werden. Unglücklicherweise begrenzen alle diese Wege die Flexibilität in gewisser Weise, um eine hohe Geschwindigkeit zu erzielen. Ein einzelnes Bild mit einer einzigen Platte bzw. Unterteilung ("tile"), eine einzige Komponente und keine Eintrittspunkte (abgesehen von dem Start der kodierten Daten für die Unterteilung bzw. die Platte) können nicht parallel kodiert werden.Around To achieve a high degree of parallelism, various of the above can be used Ways to share the data used in the same implementation become. Unfortunately all of these ways limit flexibility in some ways to one to achieve high speed. A single picture with a single one Plate or subdivision ("tile"), a single component and no entry points (apart from the start of the coded Data for the subdivision or the plate) can not be coded in parallel become.

Es gibt verschiedene Stellen, wo der FSM-Kodierer in Pipeline-Stufen aufgebrochen werden kann, z.B. die folgenden:

  • • zwischen dem Kontextmodell und dem FSM-Kodierer,
  • • nach dem Kontextspeicher,
  • • nach der Wahrscheinlichkeitszustands-Ausdehnung,
  • • nach der Erzeugung des sel-Wertes,
  • • nach der Zustandsausdehnung.
There are several places where the FSM encoder can be broken down into pipeline stages, such as the following:
  • Between the context model and the FSM encoder,
  • • after the context memory,
  • • after the probability state expansion,
  • After the generation of the sel value,
  • • after state expansion.

Um einen gültigen Wavelet-Kodestrom zu erzeugen, wenn mehrere unabhängige FSM-Kodierer verwendet werden, werden die kodierten Daten neu geordnet. Die Ausgabe von einem jeden Kodierer wird unabhängig gepuffert, wenn kodiert wird. Nachdem das Kodieren vollendet ist, werden die Puffer zu dem Kodestrom bei den korrekten Plätzen ausgegeben. Zum Dekodieren greift jeder Kodierer auf einen unterschiedlichen Abschnitt des Kodestroms zu.Around a valid one Wavelet code stream when using multiple independent FSM encoders will be rearranged the coded data. The issue of Each encoder becomes independent buffered when encoding. After the coding is completed, the buffers are output to the code stream at the correct locations. For decoding, each encoder uses a different one Section of the code stream too.

In der vorstehenden Beschreibung bedeutet die "variable Längenverschiebung von Bytes" ("variable length shifting of bytes"), daß die Bits innerhalb der Bytes verschoben wer den. Dies wird auch manchmal "barrel shifting" bzw. "Multipositionsverschiebung" bzw. "Binärstellenverschiebung" genannt.In In the foregoing description, the "variable length shifting of bytes" means of bytes ") that the bits moved within the bytes who the. This is sometimes called "barrel shifting" or "bin shifting".

Bei der obigen Beschreibung und in den Ansprüchen umfaßt der Begriff "höchstwertige Bits" die Bits mit höchster Wertigkeit, beginnend mit dem höchstwertigen Bit. Bei einem Byte (8 Bits) mit den Bits 7, 6, 5, 4, 3, 2, 1, 0 ist z.B. das höchstwertige Bit das Bit 7. Die zwei höchstwertigen Bits sind die Bits 6 und 7. Die drei höchstwertigen Bits sind die Bits 5, 6, und 7, die vier höchstwertigen Bits sind die Bits 4, 5, 6 und 7 und die fünf höchstwertigen Bits sind die Bits 3, 4, 5, 6 und 7 usw.at In the description above and in the claims, the term "most significant bits" includes the most significant bits, starting with the highest value Bit. For one byte (8 bits) with bits 7, 6, 5, 4, 3, 2, 1, 0 is e.g. the most significant Bit the bit 7. The two most significant ones Bits are bits 6 and 7. The three most significant bits are the Bits 5, 6, and 7, the four most significant Bits are bits 4, 5, 6, and 7, and the five most significant bits are Bits 3, 4, 5, 6 and 7 etc.

Bei dem Endpunkt eines Intervalls, wie z.B. im Anspruch 1 beansprucht, kann es sich um eine Bitfolge, wie z.B. eine binäre Informationseinheit handeln. Als Beispiel für eine binäre Informationseinheit kann man z.B. ein Byte heranziehen. Betrachte man also z.B. zwei Bytes A und B als Endpunkte eines Unterintervalls und sei A[7] das Bit 7 von A. Bedeutet "! =", daß die Bits nicht übereinstimmen, wobei ein Bit nur den Wert 1 oder 0 haben kann, so gilt bei dem Vergleich des Anfangspunktes und des Endpunktes eines Unterintervalls (insbesondere gemäß Anspruch 1), das folgende:

  • Falls A[7] ! = B[7], dann stimmen keine Bits überein.
  • Falls dies nicht gilt und falls A[6] ! = B[6], dann stimmt ein Bit, nämlich das Bit 7 überein.
  • Falls dies nicht gilt und falls A[5] ! = B[5], dann stimmen zwei Bits überein, nämilich das Bit 6 und das Bit 7.
  • Falls dies nicht gilt und falls A[4] ! = B[4], dann stimmen drei Bits überein, nämlich das Bit 5, 6 und 7, usw.
The endpoint of an interval, as claimed in claim 1 for example, may be a bit string, such as a binary information unit. As an example of a binary information unit you can use eg a byte. For example, consider two bytes A and B as endpoints of a subinterval, and let A [7] be the 7th bit of A. If "! =" Means that the bits do not match, and one bit can only have the value 1 or 0, then when comparing the starting point and the end point of a subinterval (in particular according to claim 1), the following applies:
  • If A [7]! = B [7], then no bits match.
  • If not, and if A [6]! = B [6], then one bit, namely bit 7, is the same.
  • If this is not true and if A [5]! = B [5], then two bits match, namely bit 6 and bit 7.
  • If this is not true and if A [4]! = B [4], then three bits match, namely bits 5, 6 and 7, etc.

Es erfolgt also ein Vergleich der Bits der Endpunkte A und B in der Reihenfolge ihrer Wertigkeit, beginnend mit dem höchstwertigen Bit, wobei eine Übereinstimmung nur bis zu dem ersten nicht übereinstimmenden Bit festgestellt wird (siehe auch das Verilog im Zusammenhang mit der 13).Thus, a comparison is made of the bits of the endpoints A and B in the order of their significance, starting with the most significant bit, where a match is detected only up to the first mismatched bit (see also the Verilog in connection with US Pat 13 ).

Nimmt man z.B. an, daß A gleich "10101010" ist und B gleich "10111011" ist, wobei die Reihenfolge "höchstwertiges Bit ... niedrigstwertiges Bit" lautet, dann stimmen die drei höchstwertigen Bits (7, 6, 5) überein. Das erste nicht übereinstimmende Bit ist das Bit 4. Die übereinstimmenden Bits lauten "101", die sowohl mit A[7..5] als auch mit B [7..5] übereinstimmen, da sie gleich sind. Die drei übereinstimmenden Bits "101" werden während des Kodierens ausgegeben. Die nicht übereinstimmenden Bits von A lauten "01010" und die nicht übereinstimmenden Bits von B lauten "11011". Die nicht übereinstimmenden Bits werden insbesondere verwendet, um neue Endpunkte zu gestalten (wobei sie zu den höchstwertigen Bits bewegt werden): "01010" wird zu "01010..." wird zu "01010000"; und "11011" wird zu "11011..." und wird zu "11011111".takes one e.g. that A is equal to "10101010" and B is equal to "10111011", where the order is "most significant bit ... least significant Bit "is, then agree the three most significant ones Bits (7, 6, 5) match. The first mismatched Bit is the 4th bit. The matching ones Bits are "101", both with A [7..5] as well as agree with B [7..5], since they are the same. The three matching Bits "101" are used during the Coding output. The mismatched Bits of A are "01010" and the mismatches Bits of B are "11011". The mismatched In particular, bits are used to create new endpoints (being among the highest Bits are moved): "01010" becomes "01010 ..." becomes "01010000"; and "11011" becomes "11011 ..." and becomes "11011111".

Die Erfindung läßt sich insbesondere wie folgt zusammenfassen:
Eine FSM-Kodier-Hardware wird beschrieben. Bei einer Ausführungsform liefert die vorliegende Erfindung ein Verfahren zum Kodieren, das die Erzeugung eines Intervalls basierend auf einem Finalautomaten-(FSM)-Zustand beinhaltet. Das Intervall umfaßt ein Paar von Unterintervallen, die Endpunkte haben. Das Verfahren enthält ebenso das Auswählen eines der Paare von Unterintervallen basierend. darauf, ob das Eingangsbit in einem höchstwahrscheinlichen Zustand ist, und das Ausgeben von null oder mehr Bits, und zwar entsprechend Bits, die zwischen Endpunkten des einen Unterintervalls übereinstimmen, die von den höchstwahrscheinlichen Bits zu und nicht einschließlich zu den ersten nicht übereinstimmenden Bits zwischen den Endpunkten des einen Unterintervalles auftreten.
The invention can be summarized in particular as follows:
An FSM coding hardware is described. In one embodiment, the present invention provides a method of encoding that allows the generation of an interval based on a Finisher (FSM) approach stand included. The interval includes a pair of subintervals that have endpoints. The method also includes selecting one of the pairs of subintervals based. whether the input bit is in a most probable state, and outputting zero or more bits, corresponding to bits that match between endpoints of the one subinterval, from the most probable bits to, and not including, the first mismatching bits between the two Endpoints of a subinterval occur.

Hiermit wird der Inhalt der deutschen Anmeldungen 198 44 752.3-31 und 198 19 405.6-31 sowie 196 26 600.9-31 durch Bezugnahme in die vorliegende Anmeldung mit aufgenommen.Herewith becomes the content of the German applications 198 44 752.3-31 and 198 19 405.6-31 and 196 26 600.9-31 by reference in the present Registration included.

Claims (81)

Verfahren zum Kodieren von Eingangsbits, das die folgenden Schritte umfaßt: ein Intervall wird erzeugt, das auf einem Finalautomaten-(FSM)-Zustand basiert, wobei das Intervall ein Paar von Unterintervallen umfaßt, die Endpunkte aufweisen, wobei jeder Endpunkt durch einen Binärwert dargestellt wird; ein Unterintervall aus einem Unterintervallpaar wird basierend darauf ausgewählt, ob sich das Eingangsbit in seinem höchstwahrscheinlichen Zustand befindet; null oder mehr Bits werden ausgegeben, die jenen Bits entsprechen, die, wenn die Binärwerte der Endpunkte des ausgewählten Unterintervalls des Paares mit den Binärwerten der Endpunkte des anderen Unterintervalls des Paares verglichen werden, hinsichtlich ihres Wertes und ihrer Bitsignifikanz übereinstimmen und die mit dem höchstwertigen Bit beginnen und zu dem ersten nicht-übereinstimmenden Bit in einer hinsichtlich der Bitsignifikanz absteigenden Reihenfolge laufen, aber die nicht das erste nicht-übereinstimmende Bit umfassen.Method for coding input bits, the the following steps include: one Interval is generated on a Finisher (FSM) state based, wherein the interval comprises a pair of subintervals, the Have endpoints, each endpoint represented by a binary value becomes; a subinterval of a subinterval pair becomes based on selected whether the input bit is in its most likely state is; zero or more bits are output that those Bits correspond to when the binary values of the endpoints of the selected subinterval of the couple with the binary values compared to the endpoints of the other subinterval of the pair will match in terms of their value and bit significance and those with the highest Start bit and get to the first mismatched one Bit in a descending order of bits significance but do not include the first non-matching bit. Verfahren nach Anspruch 1, bei welchem der Schritt der Erzeugung des Intervalls die Auswahl eines Wertes umfaßt, bei dem das Intervall in das Paar von Unterintervallen aufzuspalten ist.The method of claim 1, wherein the step the generation of the interval includes the selection of a value to split the interval into the pair of subintervals is. Verfahren nach Anspruch 1, bei welchem das erste Unterintervall des Paares von Unterintervallen einem höchstwahrscheinlichen Symbol zugeordnet ist und das zweite Unterintervall des Paares von Unterintervallen einem niedrigstwahrscheinlichen Symbol zugeordnet ist.The method of claim 1, wherein the first Subinterval of the pair of subintervals most likely Symbol is assigned and the second subinterval of the pair of Subintervals associated with a least probable symbol is. Apparat zum Kodieren von Eingangsbits, der folgendes umfaßt: eine Einrichtung, um ein Intervall basierend auf dem Zustand eines Finalautomaten (FSM) zu erzeugen, wobei das Intervall ein Paar von Unterintervallen umfaßt, das Endpunkte aufweist, wobei jeder Endpunkt durch einen Binärwert dargestellt wird; eine Einrichtung zum Auswählen eines Paares von Unterintervallen basierend darauf, ob das Eingangsbit in dem höchstwahrscheinlichen Zustand ist oder nicht; eine Einrichtung zum Ausgeben von null oder mehr Bits, die jenen Bits entsprechen, die, wenn die Binärwerte der Endpunkte des ausgewählten Unterintervalls des Paares mit den Binärwerten der Endpunkte des anderen Unterintervalls des Paares verglichen werden, hinsichtlich ihres Wertes und ihrer Bitsignifikanz übereinstimmen und die mit dem höchstwertigen Bit beginnen und zu dem ersten nicht-übereinstimmenden Bit in einer hinsichtlich der Bitsignifikanz absteigenden Reihenfolge laufen, aber die nicht das erste nicht-übereinstimmende Bit umfassen.Apparatus for coding input bits, the following comprising: a Device to set an interval based on the state of a finisher (FSM), where the interval is a pair of subintervals comprises having endpoints, each endpoint represented by a binary value becomes; means for selecting a pair of subintervals based on whether the input bit is in the most probable state is or not; a device for outputting zero or more bits corresponding to those bits which, when the binary values of the Endpoints of the selected Subinterval of the pair with the binary values of the endpoints of the other subinterval of the couple, in terms of their value and theirs Match bit significance and those with the highest Begin bit and to the first mismatched bit in one respect the bitsignificance descend, but they do not the first mismatched Include bit. Apparat nach Anspruch 4, bei welchem die Einrichtung zum Erzeugen eines Intervalls eine Einrichtung zum Auswählen eines Wertes umfaßt, bei dem das Intervall in das Paar von Unterintervallen aufzuspalten ist.Apparatus according to claim 4, wherein the device for generating an interval means for selecting one Value includes by splitting the interval into the pair of subintervals is. Apparat nach Anspruch 4, bei welchem das erste des Paares von Unterintervallen einem höchstwahrscheinlichen Symbol zugeordnet ist und ein zweites des Paares von Unterintervallen einem niedrigstwahrscheinlichen Symbol zugeordnet ist.Apparatus according to claim 4, wherein the first of the Pair of subintervals a most probable symbol is assigned and a second of the pair of subintervals one lowest possible symbol is assigned. Apparat zum Kodieren, der folgendes umfaßt: eine erste Logikeinheit, um ein Intervall basierend auf einem Zustand eines Finalautomaten (FSM) zu erzeugen, wobei das Intervall ein Paar von Unterintervallen aufweist, das Endpunkte hat, wobei jeder Endpunkt durch einen Binärwert dargestellt wird; eine zweite Logikeinheit, um ein Unterintervall des Paares von Unterintervallen auszuwählen, und zwar basierend darauf, ob das Eingabebit sich in einem höchstwahrscheinlichen Zustand befindet, und um null oder mehr Bits auszugeben, die jenen Bits entsprechen, die, wenn die Binärwerte der Endpunkte des ausgewählten Unterintervalls des Paares mit den Binärwerten der Endpunkte des anderen Unterintervalls des Paares verglichen werden, hinsichtlich ihres Wertes und ihrer Bitsignifikanz übereinstimmen und die mit dem höchstwertigen Bit beginnen und zu dem ersten nicht-übereinstimmenden Bit in einer hinsichtlich der Bitsignifikanz absteigenden Reihenfolge laufen, aber die nicht das erste nicht-übereinstimmende Bit umfassen.Apparatus for coding, comprising: a first logic unit for generating an interval based on a state of a finisher (FSM), the interval having a pair of sub-intervals having endpoints, each endpoint represented by a binary value; a second logic unit for selecting a subinterval of the pair of subintervals based on whether the input bit is in a most probable state and outputting zero or more bits corresponding to those bits when the binary values of the endpoints of the selected one Sub-interval of the pair are compared with the binary values of the endpoints of the other subinterval of the pair, with respect to their value and their bit significance match and those with the most significant bit begin and go to the first mismatched bit in an order decreasing in bit significance, but not including the first mismatched bit. Apparat nach Anspruch 7, bei welchem die erste Logikeinheit einen Wert auswählt, bei dem das Intervall in das Paar von Unterintervallen aufzuspalten ist.Apparatus according to claim 7, wherein the first logic unit select a value, by splitting the interval into the pair of subintervals is. Apparat nach Anspruch 7, bei welchem das erste Unterintervall des Paares von Unterintervallen dem höchstwahrscheinlichen Symbol zugeordnet ist und ein zweites Intervall des Paares von Unterintervallen dem niedrigstwahrscheinlichen Symbol zugeordnet ist.Apparatus according to claim 7, wherein the first sub-interval of the pair of subintervals the most probable symbol is assigned and a second interval of the pair of subintervals assigned to the lowest probable symbol. Apparat nach Anspruch 9, der weiter eine Anzeige umfaßt, die an die zweite Logikeinheit angeschlossen ist, um anzuzeigen, welches Paar von Unterintervallen dem höchstwahrscheinlichen Symbol zugeordnet ist.The apparatus of claim 9, further comprising an indicator comprises which is connected to the second logic unit to indicate which pair of subintervals is the most probable symbol assigned. Apparat nach Anspruch 10, bei welchem die Anzeige ein Signal umfaßt.Apparatus according to claim 10, wherein the display includes a signal. Verfahren zum Kodieren einer Anzahl von Bits mit einem FSM-Kodierer, wobei das Verfahren die folgenden Schritte umfaßt: ein Intervall wird für jedes der Anzahl von Bits spezifiziert, das zwei Unterintervalle aufweist und wobei jedes der zwei Unterintervalle ein Paar von Endpunkten hat, wobei jeder Endpunkt durch einen Binärwert dargestellt wird; für jedes der genannten Bits wird ein Unterintervall der zwei Unterintervalle eines Intervalls ausgewählt, und zwar basierend darauf, welches der zwei Unterintervalle dem höchstwahrscheinlichen Symbol zugeordnet ist und ob das betreffende Bit das gleiche Symbol ist wie das höchstwahrscheinliche Symbol; und null oder mehr Bits werden für jedes Intervall ausgegeben, die jenen Bits entsprechen, die, wenn die Binärwerte der Endpunkte des ausgewählten Unterintervalls des Paares mit den Binärwerten der Endpunkte des anderen Unterintervalls des Paares verglichen werden, hinsichtlich ihres Wertes und ihrer Bitsignifikanz übereinstimmen und die mit dem höchstwertigen Bit beginnen und zu dem ersten nicht-übereinstimmenden Bit in einer hinsichtlich der Bitsignifikanz absteigenden Reihenfolge laufen, aber die nicht das erste nicht-übereinstimmende Bit umfassen.Method for coding a number of bits with an FSM encoder, the method comprising the steps of: one Interval is for each of the number of bits specifies the two subintervals and wherein each of the two sub-intervals comprises a pair of endpoints has, each endpoint represented by a binary value; for each the said bits becomes a subinterval of the two subintervals selected an interval, based on which of the two sub-intervals the most likely Symbol is assigned and whether that bit is the same symbol is like the most likely Symbol; and zero or more bits are output for each interval, which correspond to those bits which, when the binary values of the endpoints of the selected subinterval of the couple with the binary values compared to the endpoints of the other subinterval of the pair will match in terms of their value and bit significance and those with the highest Begin bit and to the first mismatched bit in one respect the bitsignificance descend, but they do not the first mismatched Include bit. Verfahren nach Anspruch 12, bei welchem von einem erzeugten Signal angezeigt wird, welches der beiden Unterintervalle dem höchstwahrscheinlichen Symbol zugeordnet ist.The method of claim 12, wherein one of signal generated, which of the two subintervals the most probable Symbol is assigned. Verfahren nach Anspruch 12, das weiter die folgenden Schritte umfaßt: das betreffende Bit bzw. das eine Bit wird mit der Anzeige des höchstwahrscheinlichen Symbols verglichen; und eine Wahrscheinlich-Anzeige wird aktiviert, falls das betreffende Bit mit der Anzeige des höchstwahrscheinlichen Symbols übereinstimmt.The method of claim 12, further comprising the following Steps includes: the relevant bit or the one bit is the display of the most probable Symbols compared; and a probable ad is activated if the bit in question matches the display of the most probable symbol. Verfahren nach Anspruch 12, das weiter die folgenden Schritte umfaßt: ein erster Aufspaltwert wird von einer ersten Tabelle erhalten; ein zweiter Aufspaltwert wird von einer zweiten Tabelle erhalten, indem der erste Aufspaltwert verwendet wird.The method of claim 12, further comprising the following Steps includes: one first split value is obtained from a first table; one second split value is obtained from a second table by the first split value is used. Verfahren nach Anspruch 15, bei welchem der Aufspaltwert erhalten wird, und zwar basierend auf dem FSM-Zustand und einem ersten Wert.The method of claim 15, wherein the split value is obtained based on the FSM state and a first value. Verfahren nach Anspruch 16, das weiter die folgenden Schritte umfaßt: eine Maske wird basierend auf einer Wahrscheinlichkeitsklasse erzeugt; ein zweiter Wert wird von einer Tabelle erhalten, und zwar basierend auf dem FSM-Zustand; die Maske und der zweite Wert wird UNDiert, um ein Ergebnis zu erzeugen; und der erste Wert wird erzeugt, und zwar basierend auf dem Ergebnis.The method of claim 16, further comprising the following Steps includes: a Mask is generated based on a probability class; one second value is obtained from a table, based on on the FSM state; the mask and the second value is ANDed, to produce a result; and the first value is generated based on the result. Verfahren nach Anspruch 17, bei welchem der Schritt des Erzeugens das Zählen von Einsen in dem Ergebnis umfaßt, um eine Zählung bzw. einen Zählwert zu erzeugen, wobei der Zählwert bzw. die Zählung den ersten Wert umfaßt.The method of claim 17, wherein the step of generating the counting of ones in the result includes for a count or a count value to generate, with the count or the count includes the first value. Verfahren nach Anspruch 12, das weiter den Schritt des Verschiebens nicht übereinstimmender Bits nach links zu den höchstwahrscheinlichen Bitstellen umfaßt und ein Füllen jeglicher wenig signifikanter Bits mit entweder einem 0-Bit, wenn der Endpunkt in dem Unterintervall eine untere Grenze ist, oder einem 1-Bit, wenn der Endpunkt in dem Unterintervall eine obere Grenze ist, umfaßt.The method of claim 12, further comprising the step of shifting disagreeing bits to the left to the most probable bit locations, and filling any little significant bits with either a 0 bit if the endpoint in the subinterval is a lower bound, or a 1- Bit, if the end point in the subinterval is an upper limit. Vorrichtung, die folgendes umfaßt: ein Kontextmodell; einen Finalautomaten-(FSM)-Kodierer, der an das Kontextmodell angeschlossen ist, um Bits zu kodieren, die von dem Kontextmodell empfangen werden, wobei der FSM-Kodierer Bits kodiert, indem ein Intervall spezifiziert wird, und zwar für jedes der Anzahl von Bits, die zwei Unterintervalle haben und wobei jedes der zwei Unterintervalle ein Paar von Endpunkten hat, wobei jeder Endpunkt durch einen Binärwert dargestellt wird, wobei ein Unterintervall des Paares von Unterintervallen darauf basierend ausgewählt wird, ob das Eingangsbit in einem höchstwahrscheinlichen Zustand ist, und wobei null oder mehr Bits ausgegeben werden, die jenen Bits entsprechen, die, wenn die Binärwerte der Endpunkte des ausgewählten Unterintervalls des Paares mit den Binärwerten der Endpunkte des anderen Unterintervalls des Paares verglichen werden, hinsichtlich ihres Wertes und ihrer Bitsignifikanz übereinstimmen und die mit dem höchstwertigen Bit beginnen und zu dem ersten nicht-übereinstimmenden Bit in einer hinsichtlich der Bitsignifikanz absteigenden Reihenfolge laufen, aber die nicht das erste nicht-übereinstimmende Bit umfassen.Device comprising: a context model; one Final Automate (FSM) encoder connected to the context model is to encode bits received from the context model, wherein the FSM encoder encodes bits by specifying an interval will, for each of the number of bits having two subintervals and where each of the two subintervals has a pair of endpoints, where each endpoint by a binary value is shown, wherein a subinterval of the pair of subintervals selected based on it whether the input bit is in a most probable state and outputs zero or more bits representing those bits match that when the binary values the endpoints of the selected Subinterval of the pair with the binary values of the endpoints of the other Sub-interval of the pair are compared, in terms of their value and their bit significance and those with the highest Start bit and get to the first mismatched bit in one run in descending order of bits significance, but that's not the first mismatched one Include bit. Vorrichtung nach Anspruch 20, die weiter eine reversible Wavelet-Transformation umfaßt, die an das Kontextmodell angeschlossen ist.Apparatus according to claim 20, further comprising a reversible Wavelet transform comprises which is connected to the context model. Vorrichtung nach Anspruch 20, die weiter eine Header-Verarbeitung bzw. eine Kopf-Verarbeitung umfaßt, die mit dem FSM-Kodierer verbunden ist, um kodierte Daten und eine Signalisierung auszugeben.The apparatus of claim 20, further comprising header processing or a header processing associated with the FSM encoder connected to output coded data and signaling. Vorrichtung nach Anspruch 20, bei welcher der FSM-Kodierer eine kombinierte FSM-Kodier-/-Dekodiertabelle mit getrennter Wahrscheinlichkeitsschätzung und Biterzeugungs-Nachschlagtabellen (LUTs) umfaßt.The apparatus of claim 20, wherein the FSM encoder a combined FSM coding / decoding table with separate probability estimation and Bitmap Lookup Tables (LUTs). Vorrichtung nach Anspruch 20, bei welcher der FSM-Kodierer eine einzelne LUT umfaßt, um sowohl eine Wahrscheinlichkeitsschätzung als auch eine Biterzeugung durchzuführen.The apparatus of claim 20, wherein the FSM encoder includes a single LUT, around both a probability estimate and a bit generation perform. Vorrichtung nach Anspruch 20, bei welcher der FSM-Kodierer eine erste Logikeinheit umfaßt, um einen Wert auszuwählen, bei dem das Intervall in das Paar von Unterintervallen aufzuspalten ist.The apparatus of claim 20, wherein the FSM encoder comprises a first logic unit, to select a value by splitting the interval into the pair of subintervals is. Vorrichtung nach Anspruch 20, bei welcher ein erstes Unterintervall des Paares von Unterintervallen dem höchstwahrscheinlichen Symbol zugeordnet ist und ein zweites Unterintervall des Paares von Unterintervallen dem niedrigstwahrscheinlichen Symbol zugeordnet ist.Apparatus according to claim 20, wherein a first Subinterval of the pair of subintervals the most probable Symbol is assigned and a second subinterval of the pair subintervals are assigned to the least probable symbol is. Vorrichtung nach Anspruch 26, bei welcher der FSM-Kodierer weiter eine Anzeige umfaßt, um anzuzeigen, welches Unterintervall des Paares von Unterintervallen dem höchstwahrscheinlichen Symbol zugeordnet ist.The apparatus of claim 26, wherein the FSM encoder further comprises an advertisement, to indicate which subinterval of the pair of subintervals the most probable Symbol is assigned. Vorrichtung nach Anspruch 27, bei welcher die Anzeige ein Signal umfaßt.Apparatus according to claim 27, wherein the display includes a signal. Vorrichtung nach Anspruch 20, bei welcher der FSM-Kodierer folgendes umfaßt: eine erste Einheit, um eine Mehrfach-Kontext-Wahrscheinlichkeitsschätzung durchzuführen; eine Konversionseinheit, um einen Wahrscheinlichkeitsschätzzustand in eine Information zu konvertieren, die den Zustand beschreibt, wobei die Konversionseinheit unkodierte Bits in Antwort auf eine Wahrscheinlich-Anzeige erzeugt; eine Biterzeugungseinheit, die eine Nachschlagtabelle (LUT) umfaßt, um zwischen unkodierten Bits und kodierten Bits zu konvertieren, wobei die Biterzeugungs-LUT null oder mehr Kodewörter in Antwort auf jede Wahrscheinlichkeitsschätzung von der Konversionseinheit erzeugt und wobei die Biterzeugungs-LUT die Wahrscheinlich-Anzeige in Antwort auf den kodierten Datenstrom von der Entpackeinheit erzeugt; eine Packeinheit, die angeschlossen ist, um Kodewörter von der Biterzeugungs-Nachschlagtabelle zu empfangen, um Kodewörter variabler Länge in Bytes zu kombinieren, wenn kodiert wird, um eine Ausgabe mit kodierten Daten zu erzeugen.The apparatus of claim 20, wherein the FSM encoder comprising: a first unit to perform a multiple context probability estimation; a Conversion unit to a probability estimation state to convert into information describing the condition wherein the conversion unit is uncoded bits in response to a Probably display generated; a bit generation unit, which includes a look-up table (LUT) to switch between uncoded Convert bits and encoded bits, where the bit-generation LUT is zero or more codewords in response to each probability estimate from the conversion unit and where the bit generation LUT is the probable indication generated in response to the encoded data stream from the unpacking unit; a Packing unit connected to code words from the bitmap lookup table to receive code words variable length to combine in bytes when encoded to output with to generate coded data. Vorrichtung nach Anspruch 29, bei welcher die Biterzeugungs-LUT im FSM-Kodierer nicht redundante Einträge enthält.Apparatus according to claim 29, wherein the bit-generating LUT in the FSM encoder non-redundant entries contains. Vorrichtung nach Anspruch 29, bei welcher der FSM-Kodierer weiter eine Entpackeinheit umfaßt, um eine sogenannte "variable Längenverschiebung von Bytes" des kodierten Datenstroms in Kodewörter variabler Länge durchzuführen, wobei bei der "variablen Längenverschiebung von Bytes" die Bits innerhalb der Bytes verschoben werden.The apparatus of claim 29, wherein the FSM encoder further comprises an unpacking unit for variable-length so-called "variable-length displacement of bytes" of the coded data stream into codewords Length to be carried out, wherein the "variable length displacement of bytes", the bits are shifted within the bytes. Vorrichtung nach Anspruch 29, die weiter folgendes umfaßt: eine Wahrscheinlichkeitsklasseneinheit, um eine Wahrscheinlichkeitsklasse in Antwort auf den Wahrscheinlichkeitszustand zu erzeugen; eine MPS-Wahrscheinlichkeitszustandseinheit, um das nächste Wahrscheinlichkeitsschätz-Zustandsereignis zu erzeugen, falls ein MPS auftritt und eine Aktualisierung des Wahrscheinlichkeitszustandes erforderlich ist; eine LPS-Wahrscheinlichkeitszustandseinheit, um den nächsten Wahrscheinlichkeitsschätzzustand für den Fall zu erzeugen, wenn ein LPS auftritt und der Wahrscheinlichkeitszustand zu aktualisieren ist; eine Umschalteinheit, um die Umschaltanzeige zu erzeugen, falls das MPS umzuschalten ist; und eine Aktualisierungseinheit, um eine Aktualisierungsanzeige zu erzeugen, wenn der Wahrscheinlichkeitszustand weniger als oder gleich dem vordefinierten Wert ist.The device of claim 29, further comprising comprising: a Probability class unit, around a probability class in response to the probability state; a MPS likelihood state unit for the next likelihood estimation state event generate if an MPS occurs and update the probabilistic state is required; an LPS probability state unit, around the next Probability estimation state in the case generate when an LPS occurs and the probability state to be updated; a switching unit to the switching indicator to generate if the MPS is to be switched; and an updating unit, to generate an update indication when the probability state less than or equal to the predefined value. Vorrichtung nach Anspruch 32, bei welcher die MPS-Wahrscheinlichkeitszustandseinheit den nächsten Wahrscheinlichkeitsschätzzustand erzeugt, indem ein aktueller Wahrscheinlichkeitsschätzzustand um eine ganze Zahl inkrementiert oder dekrementiert wird, und zwar innerhalb eines Bereichs von Werten, die auf dem Wert des aktuellen Wahrscheinlichkeitszustands basieren.The apparatus of claim 32, wherein the MPS probability state unit the next probability estimation state generated by a current probability estimation state is incremented or decremented by an integer, and indeed within a range of values based on the value of the current one Probability state based. Vorrichtung nach Anspruch 32, bei welcher die Umschaltanzeige ein Signal umfaßt.Apparatus according to claim 32, wherein the switching indicator includes a signal. Vorrichtung nach Anspruch 32, bei welcher die Umschaltanzeie aktiviert wird, falls der Wahrscheinlichkeitszustand weniger als oder gleich einem ersten vorbestimmten Wert ist oder gleich einem zweiten vorbestimmten Wert ist.Apparatus according to claim 32, wherein the switching indicator is activated if the probability state is less than or equal to or equal to a first predetermined value second predetermined value. Vorrichtung nach Anspruch 32, bei welcher die Aktualisierungsanzeige ein Signal umfaßt.The apparatus of claim 32, wherein the update indicator includes a signal. Vorrichtung nach Anspruch 29, bei welcher die Biterzeugungseinheit die Biterzeugungslogik umfaßt, um eine Konversion zwischen unkodierten Bits und kodierten Bits durchzuführen.Apparatus according to claim 29, wherein the bit generation unit the biter generation logic involves to perform a conversion between uncoded bits and coded bits. Vorrichtung nach Anspruch 37, bei welcher die Biterzeugungslogik ein erstes Ausgangssignal umfaßt, um das Kodewort bereitzustellen, und ein zweites Ausgangssignal umfaßt, um die Größe des Kodewortes anzuzeigen.Apparatus according to claim 37, wherein said bit generation logic a first output signal to provide the codeword, and a second output signal to the Size of the codeword display. Vorrichtung nach Anspruch 37, bei welcher die Biterzeugungslogik den nächsten Start- und Stopp-Wert erzeugt, um das Intervall festzulegen.Apparatus according to claim 37, wherein said bit generation logic the next Start and stop value generated to set the interval. Vorrichtung nach Anspruch 39, die weiter die Start- und Stopp-Register umfaßt, die angeschlossen sind, um die Start- und Stopp-Werte, die durch die Biterzeugungslogik erzeugt werden, zu empfangen, wobei die Start- und Stopp-Register ebenso an die Eingänge der Biterzeugungslogik angeschlossen sind.Apparatus according to claim 39, further comprising the starting and stop registers, which are connected to the start and stop values by the bit generation logic is generated to receive, the startup and stop registers as well to the entrances the Biterzeugungslogik are connected. Vorrichtung nach Anspruch 29, bei welcher die Biterzeugungseinheit Kodewörter erzeugt, um am Ende des Kodierens zu räumen.Apparatus according to claim 29, wherein the bit generation unit codewords generated to clear at the end of the coding. Vorrichtung nach Anspruch 29, bei welcher die Erzeugungseinheit weiter eine Räumlogik umfaßt, um ein Kodewort zu erzeugen, um ein vordefiniertes Kodewort in Antwort darauf auszugeben, daß eine Räumungsanzeige signalisiert wird, um die Biterzeugungseinheit zu räumen.Apparatus according to claim 29, wherein the generating unit continue a clearing logic comprises to generate a codeword to a predefined codeword in response to spend that one evacuation indicator is signaled to clear the Biterzeugungseinheit. Vorrichtung nach Anspruch 42, bei welcher die Räumungsanzeige ein Räumungssignal umfaßt.The device of claim 42, wherein the clearance indication a clearing signal includes. Vorrichtung nach Anspruch 42, die weiter ein MUX umfaßt, das angeschlossen ist, um ein Kodewort zu empfangen, das kodierte Daten darstellt, und ein vordefiniertes Kodewort, um zu räumen. Wobei das MUX weiter angeschlossen ist, um die Räumungsanzeige zu empfangen, um zwischen den Eingängen als den Ausgang der Biterzeugungseinheit auszuwählen.The apparatus of claim 42, further comprising a MUX comprises which is connected to receive a codeword that coded Represents data, and a predefined codeword to evict. In which the MUX is still connected to receive the eviction notice, around the entrances to select as the output of the bit generation unit. Vorrichtung nach Anspruch 29, die weiter folgendes umfaßt: eine Zustandsausdehneinheit, die auf eine Wahrscheinlichkeitsschätzung und den Finalautomaten-(FSM)-Zustand anspricht, um einen ersten Aufspaltwert und die nächsten Wahrscheinlichkeitsschätzzustände für Auftritte eines MPS und eines LPS zu erzeugen, wenn eine Wahrscheinlichkeitsschätzzustands-Aktualisierung erforderlich ist; ein Vergleicher, um den ersten Aufspaltwert mit dem hereinkommenden Kodestrom zu vergleichen, wobei der Vergleicher einen zweiten Aufspaltwert ausgibt; eine Wahrscheinlich-Logik, die an den Vergleicher und die Zustandsausdehneinheit angeschlossen ist, um eine Wahrscheinlich-Anzeige zu erzeugen; ein MUX, das angeschlossen ist, um die nächsten Wahrscheinlichkeitsschätzzustsände und die Wahrscheinlich-Anzeige zu empfangen, wobei das MUX einen der nächsten Wahrscheinlichkeitsschätzzustände basierend auf der Wahrscheinlich-Anzeige ausgibt; eine Kodewort-Erzeugungseinheit, um Kodewörter in Antwort auf den ersten Aufspaltwert, die Wahrscheinlich-Anzeige und eine Intervall-Anzeige zu erzeugen.The apparatus of claim 29, further comprising: a state expansion unit responsive to a probability estimate and the finisher state (FSM) state for generating a first split value and the next probability estimate states for occurrences of an MPS and an LPS when a probability estimation state Updating is required; a comparator for comparing the first split value with the incoming code stream, the comparator outputting a second split value; a probabilistic logic connected to the comparator and the state expansion unit to generate a probable indication; a MUX connected to receive the next probability estimation variable and the probable indication, the MUX outputting one of the next probability estimation states based on the probable indication; a codeword generating unit for generating codewords in response to the first split value, the probable display, and an interval display. Vorrichtung nach Anspruch 45, bei welcher die Intervallanzeige einen Start-Wert, der einen Anfang des Intervalls anzeigt, und einen Stopp-Wert, der ein Ende des Intervalls anzeigt, umfaßt.Apparatus according to claim 45, wherein the interval display a start value, indicating a beginning of the interval, and a stop value, the indicating an end of the interval. Vorrichtung nach Anspruch 45, bei welcher die Ausdehneinheit folgendes umfaßt: eine erste Einheit, um einen Maskenwert in Antwort auf eine Wahrscheinlichkeitsschätzung zu erzeugen; eine zweite Einheit, um einen Wert in Antwort auf den FSM-Zustand zu erzeugen; eine Gatterlogik, die angeschlossen ist, um eine logische UNDierung der Ausgänge der ersten Einheit und der zweiten Einheit durchzuführen; eine dritte Einheit, die angeschlossen ist, um ein Ausgangssignal der Gatelogik zu empfangen und um ein Auswahlsignal, das darauf anspricht, zu erzeugen; eine MPS-Einheit gemäß einem nächsten Zustand bzw. einer next-state-MPS-Einheit, um in Antwort auf das Auswahlsignal und dem FSM-Zustand den nächsten Wahrscheinlichkeitsschätzzustand für den Fall erzeugen, wenn ein MPS auftritt und eine Aktualisierung erforderlich ist; eine LPS-Einheit gemäß einem nächsten Zustand, um in Antwort auf das Auswahlsignal und den FSM-Zustand den nächsten Wahrscheinlichkeitsschätzzuständ für den Fall zu erzeugen, wenn ein LPS auftritt und eine Aktualisierung erforderlich ist; eine vierte Einheit, um in Antwort auf das Auswahlsignal und den FSM-Zustand eine Anzeige darüber zu erzeugen, welches Unterintervall einem Auftreten eines MPS zugeordnet ist; und eine fünfte Einheit, um den zweiten Aufspaltwert in Antwort auf das Auswahlsignal und den FSM-Zustand zu erzeugen.Apparatus according to claim 45, wherein the expansion unit comprising: a first unit to assign a mask value in response to a probability estimate produce; a second unit to get a value in response to to generate the FSM state; a gate logic connected is to logically ANDing the outputs of the first unit and the second unit; a third unit, which is connected to an output signal of the To receive gate logic and a selection signal that appeals to it, to create; an MPS unit according to a next state or a next-state MPS unit, respectively, in response to the selection signal and the FSM state the next probability estimation state for the Create case when an MPS occurs and an update is required is; an LPS unit according to a next State in response to the select signal and the FSM state the next Probability estimation for the case to generate when an LPS occurs and an update is required is; a fourth unit to respond in response to the selection signal and the FSM state an ad about it to generate which subinterval is associated with an occurrence of an MPS is; and a fifth Unit to the second split value in response to the selection signal and to generate the FSM state. Vorrichtung, die als FSM-Kodierer ausgebildet ist, die folgendes umfaßt: eine erste Einheit, um eine Mehrfach-Kontext-Wahrscheinlichkeitsschätzung durchzuführen; eine Konversionseinheit, um einen Wahrscheinlichkeitsschätzzustand in eine Information zu konvertieren, die den Zustand beschreibt, wobei die Konversionseinheit unkodierte Bits in Antwort auf eine Wahrscheinlich-Anzeige erzeugt; eine Biterzeugungseinheit, die eine Nachschlagtabelle (LUT) umfaßt, um zwischen unkodierten Bits und kodierten Bits zu konvertieren, wobei die Biterzeugungs-LUT null oder mehr Kodewörter in Antwort auf jede Wahrscheinlichkeitsschätzung von der Konversionseinheit erzeugt und wobei die Bit-Erzeugungs-LUT die Wahrscheinlich-Anzeige in Antwort auf den kodierten Datenstrom von der Entpackeinheit erzeugt; eine Packeinheit, die angeschlossen ist, um Kodewörter von der Biterzeugungs-Nachschlagtabelle zu empfangen, um Kodewörter variabler Länge in Bytes zu kombinieren bzw. zu verknüpfen und in Byteform zu bringen, wenn kodiert wird, um eine Ausgabe mit kodierten Daten zu erzeugen.Device designed as FSM encoder, which includes: a first unit to perform a multiple context probability estimation; a Conversion unit to a probability estimation state to convert into information describing the condition wherein the conversion unit is uncoded bits in response to a Probably display generated; a bit generation unit, which includes a look-up table (LUT) to switch between uncoded Convert bits and encoded bits, where the bit-generation LUT is zero or more codewords in response to each probability estimate from the conversion unit and where the bit generation LUT is the probable indication generated in response to the encoded data stream from the unpacking unit; a Packing unit connected to code words from the bitmap lookup table to receive code words variable length to combine in bytes and to link in byte form, if is encoded to produce an output with encoded data. Vorrichtung nach Anspruch 48, bei welcher die Biterzeugungs-LUT keine redundanten Einträge enthält.Apparatus according to claim 48, wherein the bit-generation LUT no redundant entries contains. Vorrichtung nach Anspruch 48, die weiter eine Entpackeinheit umfaßt, um eine sogenannte "variable Längenverschiebung von Bytes" des kodierten Datenstroms in Kodewörter variabler Länge durchzuführen, wobei bei der "variablen Längenverschiebung von Bytes" die Bits innerhalb der Bytes verschoben werden.The apparatus of claim 48, further comprising an unpacking unit comprises to a so-called "variable length shift Bytes "of the coded Data stream in codewords variable length perform at the "variable length shift Bytes "the bits within the bytes. Vorrichtung nach Anspruch 48, die weiter folgendes umfaßt: eine Wahrscheinlichkeitsklasseneinheit, um eine Wahrscheinlichkeitsklasse in Antwort auf den Wahrscheinlichkeitszustand zu erzeugen; eine MPS-Wahrscheinlichkeitszustandseinheit, um das nächste Wahrscheinlichkeitsschätzzustandsereignis zu erzeugen, falls ein MPS auftritt und eine Aktualisierung des Wahrscheinlichkeitszustandes erforderlich ist; eine LPS-Wahrscheinlichkeitszustandseinheit, um den nächsten Wahrscheinlichkeitsschätzzustand für den Fall zu erzeugen, wenn ein LPS auftritt und der Wahrscheinlichkeitszustand zu aktualisieren ist; eine Umschalteinheit, um eine Umschaltanzeige zu erzeugen, falls das MPS umzuschalten ist; und eine Aktualisierungseinheit, um eine Aktualisierungsanzeige zu erzeugen, wenn der Wahrscheinlichkeitszustand weniger oder gleich dem ersten vordefinierten Wert ist.The apparatus of claim 48, further comprising: a probability class unit for generating a probability class in response to the probability state; an MPS likelihood state unit for generating the next likelihood estimation event if an MPS occurs and updating the likelihood state is required; an LPS likelihood state unit for generating the next likelihood estimation state in the case where an LPS occurs and the likelihood state is to be updated; a switching unit to generate a switching indication if the MPS is to be switched; and an updating unit to generate an update indication when the probability was less than or equal to the first predefined value. Vorrichtung nach Anspruch 51, bei welcher die MPS-Wahrscheinlichkeitszustandseinheit den nächsten Wahrscheinlichkeitsschätzzustand erzeugt, indem ein aktueller Wahrscheinlichkeitsschätzzustand um eine ganze Zahl in einem Bereich von Werten erhöht oder erniedrigt wird, und zwar basierend auf dem Wert des aktuellen Wahrscheinlichkeitszustands.The apparatus of claim 51, wherein the MPS probability state unit the next probability estimation state generated by a current probability estimation state increased by an integer in a range of values or is lowered, based on the value of the current probabilistic state. Vorrichtung nach Anspruch 51, bei welcher die Umschaltanzeige ein Signal umfaßt.Apparatus according to claim 51, wherein the switching indicator includes a signal. Vorrichtung nach Anspruch 51, bei welcher die Umschaltanzeige aktiviert wird, falls der Wahrscheinlichkeitszustand weniger oder gleich einem ersten vorbestimmten Wert oder gleich einem zweiten vorbestimmten Wert ist.Apparatus according to claim 51, wherein the switching indicator is activated if the probability state is less or equal to a first predetermined value or a second one predetermined value. Vorrichtung nach Anspruch 51, bei welcher die Aktualisierungszeige ein Signal umfaßt.The apparatus of claim 51, wherein the update pointer includes a signal. Vorrichtung nach Anspruch 48, bei welcher die Biterzeugungseinheit die Biterzeugungslogik umfaßt, um eine Konversion zwischen unkodierten Bits und kodierten Bits durchzuführen.Apparatus according to claim 48, wherein the bit generation unit the biter generation logic involves to perform a conversion between uncoded bits and coded bits. Vorrichtung nach Anspruch 56, bei welcher die Biterzeugungslogik ein erstes Ausgangssignal umfaßt, um das Kodewort bereitzustellen und ein zweites Ausgangssignal umfaßt, um die Größe des Kodewortes anzuzeigen.The apparatus of claim 56, wherein the bit generation logic a first output signal to to provide the codeword and a second output signal to the Size of the codeword display. Vorrichtung nach Anspruch 56, bei welcher die Biterzeugungslogik die nächsten Start- und Stopp-Werte erzeugt, um das Intervall festzulegen.The apparatus of claim 56, wherein the bit generation logic the next Start and stop values generated to set the interval. Vorrichtung nach Anspruch 58, die weiter die Start- und Stopp-Register umfaßt, die angeschlossen ist, um die Start- und Stopp-Werte zu empfangen, die durch die Biterzeugungslogik erzeugt werden, wobei die Start- und Stopp-Register an die Eingänge der Biterzeugungslogik angeschlossen sind.Apparatus according to claim 58, further comprising the starting and stop registers, which is connected to receive the start and stop values, generated by the biter generation logic, where the startup and stop registers to the inputs the Biterzeugungslogik are connected. Vorrichtung nach Anspruch 48, bei welcher die Biterzeugungseinheit Kodewörter erzeugt, um am Ende des Kodierens zu räumen.Apparatus according to claim 48, wherein the bit generation unit codewords generated to clear at the end of the coding. Vorrichtung nach Anspruch 48, bei welcher die Erzeugungseinheit weiter eine Räumlogik umfaßt, um ein Kodewort zu erzeugen, um ein vordefiniertes Kodewort in Antwort darauf auszugeben, daß eine Räumanzeige signalisiert wird, um die Biterzeugungseinheit zu räumen.Apparatus according to claim 48, wherein the generating unit continue a clearing logic comprises to generate a codeword to a predefined codeword in response to spend that one Räumanzeige is signaled to clear the Biterzeugungseinheit. Vorrichtung nach Anspruch 61, bei welcher die Räumanzeige ein Räumsignal umfaßt.Apparatus according to claim 61, wherein the clearance display a cleanroom signal includes. Vorrichtung nach Anspruch 61, die weiter ein MUX umfaßt, das angeschlossen ist, um ein Kodewort, das kodierte Daten darstellt, und ein vordefiniertes Kodewort zum Räumen zu empfangen, wobei das MUX weiter angeschlossen ist, um die Räumanzeige zu empfangen, um zwischen den Eingangssignalen als den Ausgang der Biterzeugungseinheit auszuwählen.The device of claim 61, further comprising a MUX comprises that is connected to a codeword that represents encoded data and to receive a predefined codeword for clearing, wherein the MUX is still connected to receive the clearance indication to between the input signals as the output of the bit generation unit select. Vorrichtung nach Anspruch 48, die weiter folgendes umfaßt: eine Zustandsausdehneinheit, die in Antwort auf eine Wahrscheinlichkeitsschätzung und den Finalautomaten-(FSM)-Zustand anspricht, um einen ersten Aufteilwert und die nächsten Wahrscheinlichkeitsschätzzustände für das Auftreten eines MPS und eines LPS zu erzeugen, wenn eine Wahrscheinlichkeitsschätzzustands-Aktualisierung erforderlich ist; einen Vergleicher, um den ersten Aufteilwert mit dem hereinkommenden Kodestrom zu vergleichen, wobei der Vergleicher einen zweiten Aufteilwert ausgibt; eine Wahrscheinlich-Logik, die an den Komparator und die Zustandsausdehneinheit angeschlossen ist, um eine Wahrscheinlich-Anzeige zu erzeugen; ein MUX, das angeschlossen ist, um die nächsten Wahrscheinlichkeitsschätzzustände und die Wahrscheinlich-Anzeige zu empfangen, wobei das MUX einen der nächsten Wahrscheinlichkeitsschätzzustände basierend auf der Wahrscheinlich-Anzeige ausgibt; eine Kodewort-Erzeugungseinheit, um Kodewörter in Antwort auf den ersten Aufspaltwert, die Wahrscheinlich-Anzeige und eine Intervall-Anzeige zu erzeugen.The device of claim 48, further comprising comprising: a State expansion unit operating in response to a probability estimate and the finisher (FSM) state responds to a first split value and the next Probability estimation states for occurrence of an MPS and an LPS when a probability estimation update is required; a comparator to the first split value compare with the incoming code stream, the comparator outputs a second split value; a probable logic, which are connected to the comparator and the state expansion unit is to produce a probable indication; a mux that is connected to the next Probability Estimates and to receive the probable indication, where the MUX is one of the next Probability estimation states based on the probable display outputs; a codeword generation unit to convert codewords into Response to the first split value, the probable indicator and generate an interval display. Vorrichtung nach Anspruch 64, bei welcher die Intervall-Anzeige einen Start-Wert und einen Stopp-Wert umfaßt, der einen Start und ein Ende für das Intervall jeweilig anzeigt.Apparatus according to claim 64, wherein the interval display a start value and a stop value, a start and an end for indicates the interval respectively. Vorrichtung nach Anspruch 64, bei welcher die Ausdehneinheit folgendes umfaßt: eine erste Einheit, um einen Maskenwert in Antwort auf eine Wahrscheinlichkeitsschätzung zu erzeugen; eine zweite Einheit, um einen Wert in Antwort auf den FSM-Zustand zu erzeugen; eine Gatterlogik, die angeschlossen ist, um ein logisches UNDieren der Ausgänge der ersten Einheit und der zweiten Einheit durchzuführen; eine dritte Einheit, die angeschlossen ist, um einen Ausgang der Gatterlogik zu empfangen und um ein Auswahlsignal, das darauf anspricht, zu erzeugen; eine MPS-Einheit gemäß einem nächsten Zustand, um in Antwort auf das Auswahlsignal und den FSM-Zustand den nächsten Wahrscheinlichkeitsschätzzustand für den Fall zu erzeugen, wenn ein MPS auftritt und eine Aktualisierung erforderlich ist; eine LPS-Einheit gemäß einem nächsten Zustand, um in Antwort auf das Auswahlsignal und den FSM-Zustand den nächsten Wahrscheinlichkeitsschätzzustand für den Fall zu erzeugen, wenn ein LPS auftritt und eine Aktualisierung erforderlich ist; eine vierte Einheit, um in Antwort auf das Auswahlsignal und den FSM-Zustand eine Anzeige zu erzeugen, welches Unterintervall mit einem Auftreten eines MPS verbunden ist; und eine fünfte Einheit, um den zweiten Aufspaltwert in Antwort auf das Auswahlsignal und den FSM-Zustand zu erzeugen.Apparatus according to claim 64, wherein the expansion unit comprising: a first unit to assign a mask value in response to a probability estimate produce; a second unit to get a value in response to to generate the FSM state; a gate logic connected is to logically ANDieren the outputs of the first unit and the second unit; a third unit connected to an output of the gate logic and to receive a selection signal that responds to it produce; an MPS unit according to a next state, in response to the selection signal and the FSM state the next probability estimation state for the Case when an MPS occurs and an update is required; an LPS unit according to a next state, in response to the selection signal and the FSM state the next probability estimation state for the Case when an LPS occurs and an update is required; a fourth unit to answer in the Selection signal and the FSM state to generate a display which subinterval with an occurrence connected to an MPS; and a fifth unit to the second Split value in response to the select signal and the FSM state to create. Kodierer zum Verarbeiten von Information, wobei der Kodierer folgendes umfaßt: eine Wahrscheinlichkeitsschätztabelle, um Wahrscheinlichkeitsschätzungen in Antwort auf Kontexte zu erzeugen; eine Entropiekodiertabelle, die mit der Wahrscheinlichkeitsschätztabelle verbunden ist, um wenigstens eine Anzeige in Antwort auf die Wahrscheinlichkeitsschätzung und einen Satz von Ausgaben bzw. Ausgangssignalen, die mit dem höchstwahrscheinlichen Symbol (MPS), das auftritt, und einen Satz von Ausgangssignalen, die mit dem wenigstwahrscheinlichen Symbol (LPS) in Verbindung stehen, das auftritt, erzeugt, wobei jeder Satz von Ausgangssignalen ein Kodewort, eine Größenanzeige des Kodewortes und einen nächsten Entropiekodierzustand umfaßt; eine Logik, die an die Entropiekodiertabelle angeschlossen ist und die angeschlossen ist, um kodierte Daten und unkodierte Daten zu empfangen, die in den Kodierer eingegeben werden, wobei die Logik einen Bitstrom in Antwort auf wenigstens ein Signal und die kodierten Daten während des Dekodierens ausgibt und eine Anzeige während des Kodierens in Antwort auf jedes der unkodierten Daten ausgibt, um als Ausgangssignale des Kodierers entweder den Satz der Ausgangssignale auszugeben, der mit dem MPS in Verbindung steht, oder den Satz der Ausgangssignale, der mit dem LPS in Verbindung steht.An encoder for processing information, wherein the encoder comprises a Probability estimation table about probability estimates to generate in response to contexts; an entropy coding table, which is connected to the probability estimation table at least one ad in response to the probability estimate and a set of outputs that are the most likely Symbol (MPS) that occurs and a set of output signals that associated with the least probable symbol (LPS), which occurs, with each set of output signals Codeword, a size indicator of the codeword and another Entropy coding state includes; a Logic connected to the entropy coding table and the is connected to receive encoded data and uncoded data, which are input to the encoder, where the logic is a bitstream in Response to at least one signal and the coded data during the Decoding issues and an ad during encoding in response on each of the uncoded data outputs to be used as output signals of the Encoder to output either the set of output signals, the communicating with the MPS, or the set of output signals, which communicates with the LPS. Kodierer nach Anspruch 67, bei welchem die Wahrscheinlichkeitsschätztabelle einen ersten nächsten Wahrscheinlichkeitsschätzzustand zur Verwendung als nächsten Wahrscheinlichkeitsschätzzustand ausgibt, wenn ein MPS auftrat und eine Aktualisierung des Wahrscheinlichkeitsschätzzustands durchzuführen ist, und die Wahrscheinlichkeitsschätztabelle einen zweiten nächsten Wahrscheinlichkeitsschätzzustand zur Verwendung als nächsten Wahrscheinlichkeitsschätzzustand ausgibt, wenn ein LPS auftrat und eine Aktualisierung des Wahrscheinlichkeitsschätzzustands durchzuführen ist.An encoder according to claim 67, wherein the probability estimation table a first next probability estimation state for use as next Probability estimation state outputs when an MPS occurred and an update of the probability estimate perform and the probability estimation table is a second next probability estimation state for use as next Probability estimation state outputs when an LPS occurred and an update of the Probability Estimate perform is. Kodierer nach Anspruch 67, der weiter einen Kontextspeicher umfaßt, der angeschlossen ist, um Wahrscheinlichkeitsschätzzustände der Wahrscheinlichkeitsschätztabelle und der Logik in Antwort auf die Kontexte bereitzustellen.The encoder of claim 67, further comprising a context memory comprises which is connected to probability estimation states of the probability estimation table and logic in response to contexts. Kodierer nach Anspruch 69, bei welchem der Kontextspeicher eine Anzeige des höchstwahrscheinlichen Symbols an die Logik in Antwort auf jeden der Kontexte ausgibt.An encoder according to claim 69, wherein the context memory an indication of the most likely Symbols to the logic in response to each of the contexts outputs. Verfahren zum Kodieren von Daten mittels eines FSM-Kodierers, das die folgenden Schritte umfaßt: eine Wahrscheinlichkeitsschätzung wird von einer Wahrscheinlichkeitsschätz-Nachschlagtabelle (LUT) in Antwort auf einen Kontext erzeugt; ein Kodewort, eine Größenanzeige des Kodewortes und eine nächste FSM-Zustandsanzeige sowohl für ein MPS als auch LPS wird von einer Entropiekodier-LUT in Antwort auf die Wahrscheinlichkeitsschätzung und einen Finalzustandsautomaten-Zustand ausgegeben; das Kodewort, die Größenanzeige des Kodewortes und die nächste FSM-Zustandsanzeige, die entweder mit dem MPS oder dem LPS in Verbindung stehen, werden basierend darauf, ob die Wahrscheinlich-Anzeige aktiviert ist oder deaktiviert ist, jeweilig ausgewählt; und das ausgewählte Kodewort und die Größenanzeige werden ausgegeben.Method for coding data by means of an FSM encoder, which includes the following steps: a probability estimate is retrieved from a Probability Estimate Lookup Table (LUT) in response creates a context; a codeword, a size indicator of the codeword and a next one FSM state display as well as an MPS and LPS are responded by an entropy-coding LUT the probability estimate and output a final state machine state; the codeword, the size indicator of the codeword and the next FSM status indicator associated with either the MPS or the LPS are based on whether the probable ad is activated is or is deactivated, respectively selected; and the selected codeword and the size indicator are issued. Verfahren nach Anspruch 71, das weiter die folgenden Schritte umfaßt: eine erste Anzeige eines nächsten Wahrscheinlichkeitsschätzzustands wird ausgegeben, falls das MPS auftrat und eine Wahrscheinlichkeitsschätzzustands-Aktualisierung erforderlich ist; und eine zweite Anzeige eines nächsten Wahrscheinlichkeitsschätzzustands und eine Anzeige, daß das MPS umgeschaltet werden sollte, falls das LPS auftrat und eine Wahrscheinlichkeitsschätzzustands-Aktualisierung erforderlich ist, wird ausgegeben.The method of claim 71, further comprising the steps of: a first indication of a next probability estimation state is output if the MPS occurred and a probability estimation update is required; and a second indication of a next probability estimation state and an indication that the MPS should be toggled if the LPS occurred and a probability estimation update is required is issued. Verfahren nach Anspruch 72, bei welchem die erste und die zweite Anzeige der nächsten Wahrscheinlichkeitsschätzzustände von der Wahrscheinlichkeitsschätztabelle ausgegeben werden.The method of claim 72, wherein the first and the second ad next Probability estimation states of the probability estimation table be issued. Verfahren nach Anspruch 72, das weiter den Schritt der Auswahl zwischen der ersten Anzeige des nächsten Wahrscheinlichkeitsschätzzustandes, der zweiten Anzeige des nächsten Wahrscheinlichkeitsschätzzustandes und des aktuellen Wahrscheinlichkeitsschätzzustandes basierend darauf, ob das Eingangsbit ein MPS oder ein LPS ist, und basierend auf dem aktuellen Wahrscheinlichkeitsschätzzustand, umfaßt.The method of claim 72, further comprising the step the selection between the first display of the next probability estimation state, the second ad of the next Probability estimation state and the current probability estimation state based thereon, whether the input bit is an MPS or an LPS, and based on the current probability estimation state, includes. Verfahren nach Anspruch 74, bei welchem der Schritt der Auswahl weiter die folgenden Schritte umfaßt: die erste Anzeige des nächstens Wahrscheinlichkeitsschätzzustands wird ausgewählt, falls ein MPS auftrat und der aktuelle Wahrscheinlichkeitsschätzzustand weniger als oder gleich einem vorbestimmten Zustand ist; die zweite Anzeige des nächstens Wahrscheinlichkeitsschätzzustands wird ausgewählt, falls ein LPS auftrat und der aktuelle Wahrscheinlichkeitsschätzzustand weniger als oder gleich dem vordefinierten Zustand ist; die erste Anzeige des nächsten Wahrscheinlichkeitsschätzzustands wird ausgewählt, falls ein MPS auftrat und der aktuelle Wahrscheinlichkeitsschätzzustand größer als der vordefinierte Zustand ist und ein oder mehr Bits ausgegeben werden; die zweite Anzeige des nächsten Wahrscheinlichkeitsschätzzustands wird ausgewählt, falls ein LPS auftrat, der aktuelle Wahrscheinlichkeitsschätzzustand größer als der vordefinierte Zustand ist und ein oder mehr Bits ausgegeben werden; und der aktuelle Wahrscheinlichkeitsschätzzustand wird ausgewählt, falls der aktuelle Wahrscheinlichkeitsschätzzustand größer als der vordefinierte Zustand ist und keine Bits ausgegeben werden.The method of claim 74, wherein the step the selection further comprises the following steps: the first ad the next Probability estimation state will be chosen, if an MPS occurred and the current probability estimate state is less than or equal to a predetermined state; the second display of the next Probability estimation state will be chosen, if an LPS occurred and the current probability estimate state is less than or equal to the predefined state; the first display of the next Probability estimation state will be chosen, if an MPS occurred and the current probability estimate state greater than the predefined state is and one or more bits are output become; the second indication of the next probability estimate will be chosen, if an LPS occurred, the current probability estimate state greater than the predefined state is and one or more bits are output become; and the current probability estimation state will be chosen, if the current probability estimate state is greater than the predefined state is and no bits are output. Verfahren nach Anspruch 71, bei welchem der Schritt der Erzeugung der Wahrscheinlichkeitsschätzung die folgenden Schritte umfaßt: ein Kontextspeicher wird mit einem Kontext adressiert; ein aktueller Wahrscheinlichkeitsschätzzustand und eine Anzeige eines höchstwahrscheinlichen Symbols für den Kontext wird beschaftt bzw. wieder beschafft; der aktuelle Wahrscheinlichkeitsschätzzustand wird in eine Wahrscheinlichkeitsschätzung konvertiert; und die Wahrscheinlichkeitsschätzung wird ausgegeben.The method of claim 71, wherein the step the generation of the probability estimate the following steps comprising: one Context memory is addressed with a context; a current one Probability estimation state and an indication of a most likely Symbols for the Context is procured or procured again; the current Probability estimation state is converted into a probability estimate; and the probability estimate is output. Verfahren nach Anspruch 76, bei welchem die Wahrscheinlichkeitsschätzung eine Wahrscheinlichkeitsklasse umfaßt.The method of claim 76, wherein the probability estimate is a Probability class includes. Verfahren nach Anspruch 71, das weiter den Schritt der Erzeugung einer Wahrscheinlich-Anzeige umfaßt, und zwar basierend auf einem Vergleich zwischen einem zu kodierenden Bit mit dem MPS.The method of claim 71, further comprising the step the generation of a probable display, based on a comparison between a bit to be coded with the MPS. Verfahren nach Anspruch 71, das weiter die folgenden Schritte umfaßt: der nächste MPS-Wert wird bestimmt; und der nächste Wahrscheinlichkeitsschätzzustandswert wird ausgewählt.The method of claim 71, further comprising the following Steps includes: of the next MPS value is determined; and the next probability estimate value will be chosen. Verfahren zum Kodieren von Symbolen, das die folgenden Schritte umfaßt: ein Kontextspeicher wird mit einem Kontext adressiert; ein Wahrscheinlichkeitsschätzzustand und eine Anzeige eines höchstwahrscheinlichen Symbols für den Kontext wird wieder beschafft bzw. beschafft; der Wahrscheinlichkeitsschätzzustand wird in eine Wahrscheinlichkeitsschätzung konvertiert; die Wahrscheinlichkeitsschätzung wird ausgegeben; der nächste Wahrscheinlichkeitsschätzzustand wird ausgegeben, falls ein höchstwahrscheinliches Symbol (MPS) auftrat und eine Aktualisierung des Wahrscheinlichkeitsschätzzustandes erforderlich ist; der nächste Wahrscheinlichkeitsschätzzustand und eine Anzeige, daß das MPS umgeschaltet werden sollte, falls ein am wenigsten wahrscheinliches Symbol auftrat und eine Wahrscheinlichkeitsschätzzustands-Aktualisierung erforderlich ist, wird ausgegeben; ein Kodewort, eine Größenanzeige des Kodewortes und eine Anzeige des nächsten FSM-Zustandes sowohl für ein MPS als auch ein wenigstwahrscheinliches Symbol (LPS) wird von einer Entropiekodiertabelle in Antwort auf die Wahrscheinlichkeitsschätzung und einen Zustand des finalen Automaten ausgegeben; eine Wahrscheinlich-Anzeige wird basierend auf einem Vergleich zwischen einem zu kodierenden Bit mit dem MPS erzeugt; das Kodewort, die Größenanzeige des Kodeworts und die Anzeige des nächsten FSM-Zustandes, der entweder dem MPS oder dem LPS zugeordnet ist, wird basierend darauf ausgewählt, ob oder ob nicht die Wahrscheinlich-Anzeige jeweilig aktiviert oder deaktiviert ist; der nächste MPS-Wert wird bestimmt; der nächste Wahrscheinlichkeitsschätzzustandswert wird ausgewählt.A method of encoding symbols, comprising the steps of: context memory being addressed with a context; a probability estimation state and an indication of a most probable symbol for the context is retrieved; the probability estimation state is converted into a probability estimate; the probability estimate is issued; the next probability estimate state is output if a most probable symbol (MPS) occurred and an update of the probability estimate state is required; the next probability estimation state and an indication that the MPS should be switched if a least likely symbol occurred and a probability estimation update is required is output; a codeword, a code word size indicator, and an indication of the next FSM state for both an MPS and a least probable symbol (LPS) is obtained from an entropy coding table in Ant word on the probability estimate and a state of the final machine output; a probable indication is generated based on a comparison between a bit to be coded with the MPS; the code word, the code word size indicator, and the next FSM state indication associated with either the MPS or the LPS is selected based on whether or not the probable indication is respectively enabled or disabled; the next MPS value is determined; the next probability estimation value is selected. Kodierer zum Kodieren und Dekodieren einer Information, wobei der Kodierer folgendes umfaßt: eine kombinierte Wahrscheinlichkeitsschätzung und eine Finalautomat-Biterzeugungstabelle, um in Antwort auf einen Wahrscheinlichkeitsschätzzustand wenigstens ein Signal und einen Satz von Ausgangssignalen, die dem höchstwahrscheinlichen Symbol (MPS) zugeordnet sind, das auftritt, und einen Satz von Ausgangssignalen, die mit dem wenigstwahrscheinlichen Symbol (LPS) in Verbindung stehen, das auftritt, zu erzeugen, wobei jeder Satz von Ausgangssignalen ein Kodewort, eine Größenanzeige des Kodeworts und einen Zustand des nächsten Entropiekodierens umfaßt; eine Bitlogik, die an die kombinierte Tabelle angeschlossen ist und angeschlossen ist, um kodierte Daten und unkodierte Daten zu empfangen, die in den Kodierer eingegeben werden, wobei die Bitlogik einen Bitstrom in Antwort auf das wenigstens eine Signal und die kodierten Daten während des Dekodierens ausgibt und eine Anzeige während des Kodierens in Antwort auf jedes Bit der unkodierten Daten ausgibt, um als Ausgangssignal des Kodierers entweder den Satz von Ausgangssignalen, die mit dem MPS in Verbindung stehen, oder den Satz von Ausgangssignalen, die mit dem LPS in Verbindung stehen, auszuwählen.Encoder for encoding and decoding information, the encoder comprising: a combined probability estimate and a finisher-biter generation table, at least one signal in response to a probability estimation state and a set of output signals, the most probable symbol (MPS) that occurs, and a set of output signals, which are associated with the least probable symbol (LPS), that occurs, generating, each set of output signals a codeword, a size indicator of the codeword and a state of next entropy coding; a Bit logic connected to the combined table and connected is to receive encoded data and uncoded data in the encoder is input, the bit logic being a bitstream in response to the at least one signal and the encoded data while of decoding and an indication during encoding in response on each bit of the uncoded data outputs to output the encoder either the set of output signals that with the MPS, or the set of output signals that to connect to the LPS.
DE19900150A 1998-01-05 1999-01-05 Apparatus and method for encoding information with a finite state machine Expired - Fee Related DE19900150B4 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/003,076 1998-01-05
US09/003,076 US6094151A (en) 1998-01-05 1998-01-05 Apparatus and method for finite state machine coding of information selecting most probable state subintervals

Publications (2)

Publication Number Publication Date
DE19900150A1 DE19900150A1 (en) 1999-07-08
DE19900150B4 true DE19900150B4 (en) 2005-12-22

Family

ID=21704006

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19900150A Expired - Fee Related DE19900150B4 (en) 1998-01-05 1999-01-05 Apparatus and method for encoding information with a finite state machine

Country Status (5)

Country Link
US (1) US6094151A (en)
JP (1) JP3748003B2 (en)
DE (1) DE19900150B4 (en)
GB (1) GB2333000B (en)
HK (1) HK1020303A1 (en)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998040796A1 (en) * 1997-03-11 1998-09-17 Siemens Aktiengesellschaft Method for computer-assisted error checking of sensors and/or actors in technical systems
JP2001136524A (en) * 1999-11-02 2001-05-18 Ricoh Co Ltd Compression and expansion device
JP3814456B2 (en) * 2000-02-07 2006-08-30 キヤノン株式会社 Image processing apparatus and method
US6424444B1 (en) * 2001-01-29 2002-07-23 Stratalight Communications, Inc. Transmission and reception of duobinary multilevel pulse-amplitude-modulated optical signals using finite-state machine-based encoder
US8265920B1 (en) 2004-07-30 2012-09-11 Synopsys, Inc. Determining large-scale finite state machines using constraint relaxation
US7684627B2 (en) * 2004-09-29 2010-03-23 Intel Corporation Techniques for image decompression
JP4618676B2 (en) 2005-04-28 2011-01-26 株式会社リコー Structured document code transfer method, image processing system, server device, program, and information recording medium
US8416104B2 (en) 2010-04-23 2013-04-09 Certicom Corp. Method and apparatus for entropy decoding
US8421655B2 (en) * 2010-04-23 2013-04-16 Certicom Corp. Apparatus for parallel entropy encoding and decoding
WO2013074088A1 (en) * 2011-11-15 2013-05-23 Intel Corporation Video encoder with 2-bin per clock cabac encoding
US11061993B2 (en) 2012-08-15 2021-07-13 Modal Technology Corporation Apparatus for performing modal interval calculations based on decoration configuration
US9558155B2 (en) 2012-08-15 2017-01-31 Sunfish Studio, Llc Apparatus for performing modal interval calculations based on decoration configuration
EP2858323A1 (en) * 2013-10-01 2015-04-08 Enyx SA A method and a device for decoding data streams in reconfigurable platforms
CN111884659B (en) * 2020-07-28 2021-09-10 广州智品网络科技有限公司 Compression method and device of FST data
CN112669396B (en) * 2020-12-18 2023-09-12 深圳智慧林网络科技有限公司 Lossless image compression method and device

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5272478A (en) * 1992-08-17 1993-12-21 Ricoh Corporation Method and apparatus for entropy coding
US5381145A (en) * 1993-02-10 1995-01-10 Ricoh Corporation Method and apparatus for parallel decoding and encoding of data
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
US5583500A (en) * 1993-02-10 1996-12-10 Ricoh Corporation Method and apparatus for parallel encoding and decoding of data
EP0797348A2 (en) * 1996-03-22 1997-09-24 Hewlett-Packard Company A one dimensional context model for entropy encoding digital halftone images with arithmetic coding
US5710562A (en) * 1995-08-31 1998-01-20 Ricoh Company Ltd. Method and apparatus for compressing arbitrary data

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4933883A (en) * 1985-12-04 1990-06-12 International Business Machines Corporation Probability adaptation for arithmetic coders
US4792954A (en) * 1986-10-31 1988-12-20 International Business Machines Corporation Concurrent detection of errors in arithmetic data compression coding
US5717394A (en) * 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
JP2836467B2 (en) * 1993-12-16 1998-12-14 日本電気株式会社 Binary symbol encoding / decoding circuit

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5272478A (en) * 1992-08-17 1993-12-21 Ricoh Corporation Method and apparatus for entropy coding
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
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
US5710562A (en) * 1995-08-31 1998-01-20 Ricoh Company Ltd. Method and apparatus for compressing arbitrary data
EP0797348A2 (en) * 1996-03-22 1997-09-24 Hewlett-Packard Company A one dimensional context model for entropy encoding digital halftone images with arithmetic coding

Also Published As

Publication number Publication date
GB9824435D0 (en) 1999-01-06
GB2333000A8 (en) 1999-12-30
GB2333000A (en) 1999-07-07
DE19900150A1 (en) 1999-07-08
JP3748003B2 (en) 2006-02-22
GB2333000B (en) 2000-04-19
US6094151A (en) 2000-07-25
JPH11266162A (en) 1999-09-28
HK1020303A1 (en) 2000-04-07

Similar Documents

Publication Publication Date Title
DE19900150B4 (en) Apparatus and method for encoding information with a finite state machine
DE4446072A1 (en) Method and device for parallel coding and decoding of data
DE19635251C2 (en) Method and apparatus for compressing any data
DE69318064T2 (en) Method and apparatus for managing multiple data compression dictionaries with content addressing
DE19742417B4 (en) Apparatus and method for performing M-end machine-end-state entropy-coding or entropy-coding with a finite state machine
DE68924138T2 (en) DATA COMPRESSION / DECOMPRESSION ARRANGEMENT.
US5220325A (en) Hierarchical variable length decoder for digital video data
DE19536401B4 (en) Method and device for coding and decoding data
US7106911B2 (en) Image processing apparatus and control method for inputting image data and encoding the data
DE69313540T2 (en) Improved device for variable length decoding
DE69519886T2 (en) Image decoder
DE3855203T2 (en) MODIFIED STATISTICAL CODING OF DIGITAL SIGNALS
DE69720477T2 (en) COMPRESSION AND DECOMPRESSION SCHEME EXECUTED BY A MEDIA COPROCESSOR ON A COMMON STORAGE OF A WORKSTATION
DE69024629T2 (en) DEVICE FOR COMPRESSING DATA LENGTHS AND DATA SEQUENCES
DE69631792T2 (en) APPARATUS AND METHOD FOR THE TWO-DIMENSIONAL DATA COMPRESSION
DE69328855T2 (en) Data compression / decompression with cache memories
DE69518022T2 (en) Device and method for Lempel Ziv data compression with management of several dictionaries in associative memories
DE69425847T2 (en) Calculator for inverse discrete cosine transformation
DE3850035T2 (en) Data compression system with expansion protection.
DE69814988T2 (en) Data the adder
DE19544761C2 (en) Method of compressing an entered symbol
DE4340591A1 (en) Data compression method using small dictionaries for application to network packets
DE69624670T2 (en) Method and device for double run length coding of binary data
DE69735835T2 (en) Variable length decoder and method for decoding two codewords per clock
EP2068448B1 (en) Method and arrangement for arithmetic encoding and decoding with application of several tables

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee