DE69313540T2 - Verbesserte Vorrichtung zur variablen Längendekodierung - Google Patents
Verbesserte Vorrichtung zur variablen LängendekodierungInfo
- Publication number
- DE69313540T2 DE69313540T2 DE69313540T DE69313540T DE69313540T2 DE 69313540 T2 DE69313540 T2 DE 69313540T2 DE 69313540 T DE69313540 T DE 69313540T DE 69313540 T DE69313540 T DE 69313540T DE 69313540 T2 DE69313540 T2 DE 69313540T2
- Authority
- DE
- Germany
- Prior art keywords
- rom
- code
- output
- decoder
- bits
- 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 - Lifetime
Links
- 230000015654 memory Effects 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 3
- 238000000034 method Methods 0.000 description 8
- 238000013138 pruning Methods 0.000 description 5
- 230000001186 cumulative effect Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
- H03M7/425—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory for the decoding process only
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/34—Encoding or coding, e.g. Huffman coding or error correction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
- Die vorliegende Erfindung betrifft eine Vorrichtung zum Decodieren eines Stroms von Signalen, die mit einem gegebenen Code variabler Länge codiert sind.
- Die Codierung mit variabler Länge (VL), wie zum Beispiel die Huffman-Codierung, ist eine wohlbekannte Methode, die sehr wahrscheinliche Signale mit einer geringen Anzahl von Bit codiert, und weniger wahrscheinliche Signale mit einer größeren Anzahl von Bit. Bei dieser Methode ist die Anzahl von zur Beschreibung der weniger wahrscheinlichen Signale verwendeten Bit größer als die Anzahl von Bit in Worten einer entsprechenden Anordnung des Codierens mit fester Länge. Letzteres ist ein Folge der unangetasteten Bedingung, daß ein gültiger Code nicht einem anderen gültigen Code vorangestellt sein kann. In einer Baumstrukturdarstellung entspricht diese Bedingung auch der Aussage, daß ein Knoten eines Baums nicht gleichzeitig ein Blatt des Baums sein kann.
- Mit der Decodierung eines Stroms von Bit, die verketteten VL-Codes (VLCs) entsprechen, sind zwei Aufgaben verbunden: Identifizieren der Bitgruppen, die gültige VL-Codes bilden, und Decodieren der gültigen VL-Codes.
- FIG. 1 zeigt eine Anordnung zur Decodierung eines solchen Stroms gemäß dem Stand der Technik. Bei dem Decodierungsvorgang erscheinen Daten mit einer konstanten Rate an der Leitung 41 und werden in dem Puffer 40 gespeichert, so wie sie empfangen werden. Daten werden aus dem Puffer 40 extrahiert und unter der Steuerung der Leitung 21 in dem Register 10 plaziert, wobei das Register jedesmal voll belegt wird. Die Länge des Registers 10 ist gleich der maximalen Anzahl von Bit, die ein gültiger VL-Code aufweisen kann. Die in dem Register 10 gespeicherten Daten werden an die Verknüpfungsschaltung 20 angelegt, die in jedem Decodierungsintervall die Untermenge von Bit in den Daten identifiziert (beginnend mit den ältesten Bit in dem Register 10), die einen gültigen VL-Code bildet.
- Die Schaltung 20 gibt den Code mit fester Länge, der der identifizierten Untermenge von Bit entspricht, die den gültigen VL-Code bilden, auf dem Bus 22 aus und gibt auf dem Bus 21 ein Steuersignal aus. Das Steuersignal 21 weist den Puffer 40 an, dem Register 10 (für das nächste Decodierungsintervall) eine Anzahl neuer Bit zuzuführen, die die Bit in dem identifizierten VL-Code ersetzen. Somit dient der Puffer 40 lediglich als ein Signalratenpuffermittel, das dem Ausgang ermöglicht, mit der Rate zu arbeiten, mit der die Codes mit fester Länge ursprünglich in die Codes mit variabler Länge umcodiert wurden, während die Eingabe mit der Bitrate der Codes mit variabler Länge ankommt.
- Die einfachste Art der Implementierung der Schaltung 20 ist die Verwendung einer Nachschlagetabelle (z.B. eines Nur-Lese-Speichers). Ein Nur-Lese-Speicher benötigt außerdem die kürzeste Verarbeitungszeit. Das Problem mit diesem Ansatz des Stands der Technik ist jedoch die Größe des benötigten Speichers, die 2M beträgt, wobei M die Anzahl von Bit in dem längsten VL-Code ist. Für viele praktische Anwendungen, wie zum Beispiel für hochauflösendes Fernsehen (HDTV), ist M relativ groß, unter Umständen größer als 20, und dies macht den ROM 20 untragbar groß.
- EP-A-0426429 offenbart Vorrichtungen zum Decodieren eines Codes mit variabler Länge in einen Code mit fester Länge. Insbesondere wird ein Code mit variabler Länge (mit einer maximalen Länge von m Bit) in zwei Teile aufgespalten: einen oberen Teil mit n Bit (z.B. die 8 höchstwertigen Bit eines Codes mit variabler Länge mit 15 Bit) und einen unteren Teil mit n-m Bit (z.B. die 7 übrigen niedrigst-wertigen Bit des Codes mit variabler Länge mit 15 Bit). Der obere Teil des Codes mit variabler Länge wird an eine erste Umcodierungstabelle und der untere Teil an eine zweite Umcodierungstabelle angelegt. Die erste Umcodierungstabelle verwandelt die Codes mit variabler Länge mit n oder weniger Bit in entsprechende Codes mit fester Länge. Die zweite Umcodierungstabelle verwandelt die Codes mit variabler Länge mit mehr als n Bit in entsprechende Codes mit fester Länge. Zusätzlich stellt die erste Umcodierungstabelle der zweiten Umcodierungstabelle eine ergänzende Menge von Adreßbit zur Verwendung beim Decodieren der Codes mit variabler Länge mit mehr als n Bit bereit.
- In IEEE Transactions on Circuits and Systems for Video Technology, Band 2, Nr. 2, Juni 1992, Seiten 187-196, IEEE, New York, USA; S. Chang et al.: "Designing Righ-Throughput VLC Decoder Part I - Concurrent VLSI Architectures" (Entwurf eines VLC- Decodierers mit hohem Durchsatz, Teil I - Nebenläufige VLSI-Architekturen") wird eine parallele oder Pipeline- Architektur für Hochgeschwindigkeitsimplementationen eines Decodierers mit variabler Länge offenbart. Eine Architektur gründet sich auf den Ruffman-Baum des Stands der Technik. Die zweite Architektur verwendet "Nachschlagetabellen", die in programmierbaren Logikanordnungen implementiert werden. Diese "Nachschlagearchitektur" ähnelt der in der erwähnten EP-A-0426429 beschriebenen Architektur.
- In IEEE Transactions on Information Theory, Band 35, Nr. 2, März 1989, Seiten 299-315, IEEE, New York, USA; P. Chou et al.: "Optimal Pruning with Applications to Tree-Structured Source Coding and Modelling" ("Optimales Zurückschneiden mit Anwendungen auf Baumstrukturen bei Quellencodierung und Modellbildung") wird die Anwendung von Baumstrukturen auf Quantisierer offenbart. Die Blatt-Knoten der Quantisierer entsprechen Quantisiererstufen. Das Konzept des Zurückschneidens wird zum Beispiel auf Verzerrungskompensation angewendet. Mit steigenden Verzerrungsniveaus kann der Quantisiererbaum in Echtzeit für verschiedene Verzerrungsniveaus zurückgeschnitten werden. Aus der nachfolgenden Beschreibung der vorliegenden Erfindung wird ersichtlich, daß das Konzept eines k-Knotens (das in dieser Literaturstelle nicht vorkommt) dazu verwendet wird, um die Struktur eines Decodierers mit variabler Länge zu minimieren.
- Gemäß einem Aspekt der vorliegenden Erfindung wird eine Vorrichtung nach Anspruch 1 bereitgestellt.
- Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein VLC-Decodierer nach Anspruch 9 bereitgestellt.
- Gemäß den hier offenbarten Prinzipien wird die Decodierungskomplexität reduziert, indem der Baum des Codes mit variabler Länge bis zu seiner k- Knotendarstellung zurückgeschnitten wird, und danach der zurückgeschnittene Baum decodiert wird. Ein k- Knoten ist ein Knoten des Baums, der eine binäre Anzahl von Blättern einer beliebigen Codelänge mit einer bestimmten Anzahl trägt, und der auf seinem Weg zur Wurzel keine k-Knoten aufweist. Die Darstellung des Decodierungsproblems durch den entsprechenden zurückgeschnittenen Baum erleichtert das Aufteilen des Decodierungsproblems in Segmente, die es erlauben, eine geringere Anzahl von ROM-Speicherstellen für die Decodierung des Codes mit variabler Länge zu verwenden. Sogar bei Anwendungen, bei denen statt eines einzigen Nur-Lese-Speichers eine Anzahl von Nur-Lese-Speichern verwendet wird, ergeben die einzelnen Nur-Lese-Speicher zusammen eine wesentlich geringere Anzahl von Worten als bei ROM-Ausführungsformen des Stands der Technik.
- Genauer gesagt wird das Decodierungsproblem in Segmente aufgeteilt, indem jeweils einige wenige Bit auf einmal betrachtet werden, wobei mit den höchstwertigen Bit begonnen wird. Jedes Segment gibt entweder einen gültigen Code aus oder informiert das nächste Segment, daß der Decodierungsvorgang noch nicht abgeschlossen ist, und stellt Informationen bereit, die das nächste Segment bei seinen Decodierungsaufgaben unterstützen.
- Der hier offenbarte Decodierer kann mit einer Pipelinearchitektur und mit einem einzelnen, den zurückgeschnittenen Baum decodierenden ROM implemen tiert werden.
- Bei Anwendern, bei denen der VL-Code für größere Wirksamkeit des Decodierers ausgewählt werden kann, ist es möglich, den gebotenen VL-Code umzustrukturieren, um die Anzahl von k-Knoten und dadurch den zurückgeschnittenen Baum zu minimieren, und gleichzeitig die Größen der ROMs in dem Decodierer zu minimieren.
- FIG. 1 zeigt die Anordnung zum Decodieren eines Codes mit variabler Länge gemäß dem Stand der Technik;
- FIG. 2 zeigt die Baumstruktur eines Ruffman- Codes;
- FIG. 3 zeigt die Baumstruktur eines Ruffman- Codes mit einer minimierten Anzahl von k-Knoten;
- FIG. 4 illustriert die Speicheranordnung von Codes in dem Codeumsetzungsspeicher;
- FIG. 5 ist ein Schaltbild eines Decodierers mit variabler Länge gemäß den hier offenbarten Prinzipien;
- FIG. 6 zeigt eine andere Realisierung des hier offenbarten Decodierers mit variabler Länge; und
- FIG. 7 illustriert eine Version des hier offenbarten Decodierers mit variabler Länge mit einem einzigen ROM.
- Tabelle 1 zeigt eine beispielhafte Darstellung von Signalen b0 bis b15, die in der Reihenfolge ihrer Wahrscheinlichkeit des Auftretens geordnet sind, und einen konkreten Huffman-Code, der für diese Signalwahrscheinlichkeiten entwickelt wurde. Tabelle 1
- Die in der Tabelle 1 abgeleiteten Codes entsprechen den Ausführungen von Netravali und Raskell in "Digital Pictures", Netravah und Haskell, Plenum Press, New York, 1989, S. 153ff. Eine Baumdarstellung der in Tabelle 1 entwickelten Codes ist in FIG. 2 abgebildet. Da einige der entwickelten Codes jeweils 6 Bit enthalten, ist gemäß der Ausführungsform von FIG. 1 die Anzahl von Worten in einer ROM-Ausführungsform des den oben definierten Ruffman-Code decodierenden Decodierers 20 gleich 64.
- Im Kontext der vorliegenden Offenbarung ist ein k-Knoten ein Knoten eines Baums, der eine binäre Anzahl (eine Anzahl, die einer Zweierpotenz einer ganzen Zahl entspricht) von Blättern einer beliebigen konkreten Codelänge trägt, und der auf seinem Weg zur Wurzel keine anderen Knoten aufweist, die eine binäre Anzahl von Blättern tragen. In dem Baum von FIG. 2 liegen 12 k-Knoten vor, die durch dunkle Kreise markiert sind.
- Gemäß den hier offenbarten Prinzipien wird die Decodierung vereinfacht, indem nur der Baum decodiert wird, der sich aus dem Wegschneiden der Zweige ergibt, die über die k-Knoten hinausgehen, wodurch ein Baum übrigbleibt, der nur Blätter von k-Knoten aufweist. Die Vereinfachung wird nachfolgend im Zusammenhang mit dem in Tabelle 1 gezeigten spezifischen Beispiel demonstriert. Wenn das Zurückschneiden des Baums bis auf seine k-Knoten-Blätter die Decodierung vereinfacht, dann folgt, daß sich dadurch ein Nutzen ergibt, daß entweder ein Huffman-Code erzeugt wird, der nur wenige k-Knoten enthält, oder indem ein gegebener Code so umstrukturiert wird, daß die Anzahl von k-Knoten minimiert wird.
- Die Anzahl von k-Knoten in einem Huffman-Code kann minimiert werden, indem ein Histogramm des gegebenen Huffman-Codes konstruiert wird und das Histogramm ausgewertet wird. In dem Darstellungsbeispiel von Tabelle 1 gibt es:
- 1 Code der Länge 2 (0001)
- 2 Codes der Länge 3 (0010)
- 5 Codes der Länge 4 (0101)
- 4 Codes der Länge 5 (0100)
- 4 Codes der Länge 6 (0100)
- Da jeder k-Knoten eine binäre Anzahl von Blättern trägt folgt, daß die zum Tragen einer Gruppe von Codes bestimmter Länge benotigte Anzahl von k- Knoten gleich der Anzahl der Einsen in der binären Darstellung der Anzahl von Codes in dieser Gruppe ist, weil jede 1 eine binäre Zahl darstellt. Zur Veranschaulichung gibt es in dem obigen Beispiel vier Codes der Länge 6. Offensichtlich erfordern diese 4 Codes nur einen k-Knoten, weil definitionsgemäß ein k- Knoten eine binäre Anzahl von Blättern (Codes) trägt und 4 eine binäre Zahl ist. Dementsprechend weist die binäre Darstellung von 4 nur eine einzige 1 auf.
- Aus den obigen Ausführungen kann leicht festgestellt werden, daß für den Baum von FIG. 2 eine reduzierte Anzahl von k-Knoten abgeleitet werden kann. Tatsächlich beträgt - auf der Grundlage des Histogramms des Codes - die benötigte Mindestanzahl von k-Knoten sechs.
- Aus der nachfolgenden Prozedur (die nicht notwendigerweise die einzige funktionierende Prozedur ist) läßt sich sehen, daß es nicht schwer ist, eine Codemenge zu konstruieren, die die sechs k-Knoten ergibt.
- Für den einen 2-Bit-Code 00 wählen und 01, 10 und 11 für den Rest übriglassen.
- Für die zwei 3-Bit-Codes 01x wählen und 10 und 11 für den Rest übriglassen (X ist ein beliebiger Wert).
- Für vier der benötigten fünf 4-Bit-Codes 10xx wählen und 11 für den Rest übriglassen.
- Für den fünften 4-Bit-Code 1100 wählen und 1111, 1110 und 1101 für den Rest übriglassen.
- Für die vier 5-Bit-Codes 1111xx und 1110x (d.h. 111xx) wählen und 1101 für den Rest übriglassen. Jedes x steht für ein Bit in einem seiner beiden Zustände.
- Als letztes für die vier 6-Bit-Codes 1101xx wählen und damit die Codezuweisung vervollständigen.
- Der umstrukturierte Huffman-Code ist in FIG. 3 abgebildet und ist in der Spalte 3 der nach folgenden Tabelle 2 gezeigt. Tabelle 2
- Es ist leicht zu sehen, daß der Baum von FIG. 3, wenn er bis auf seine k-Knoten zurückgeschnitten wird (d.h. mit unterdrückten gestrichelten Linien), kleiner als der Baum von FIG. 2 ist. Demzufolge ist der ROM, der zum Decodieren dieses Baums erforderlich wäre, ebenfalls kleiner.
- Eine speicherreduzierte Implementierung gemäß den hier offenbarten Prinzipien basiert auf einer bitweisen Segmentierung der zurückgeschnittenen k- Knoten-Menge, und falls sie existiert, auf der minimierten k-Knoten-Menge. In dem obigen Beispiel ist die minimierte Menge 00, 01x, 10xx, 1100, 111xx und 1101xx.
- Die bitweise Segmentierung unterteilt die Bit am Ausgang des Registers 10 in Gruppen und betrachtet jede Gruppe einzeln. In einer parallelen Implementierung wird jeder Gruppe von Bit separate Segment- Hardware fest zugeordnet, und diese Hardware versucht, den VL-Code zu decodieren. Eine Implementierung der Segment-Hardware umfaßt einen ROM, der auf die aus dem Register 10 angelegten Bit reagiert. Der ROM gibt Worte mit fünf Feldern folgendermaßen aus.
- - Feld 1: enthält ein Adreßzeigerpräfix, das auf eine Stelle in einem Codeumsetzungsspeicher zeigt, der die Codes mit fester Länge speichert, die den erkannten VL-Codes entsprechen;
- - Feld 2: enthält einen Code, der die Anzahl von zusätzlichen Bit anzeigt, die mit dem Präfix verkettet werden müssen;
- - Feld 3: gibt an, wieviele Bit für das nächste Detektionsintervall in das Register 10 hinein geschoben werden sollen;
- - Feld 4: enthält einen Bitmerker, der anzeigt, ob tatsächlich ein gültiger Code erkannt wurde; und
- - Feld 5: enthält einen Code, der den Zustand des Decodierers anzeigt, wenn kein gültiger Code erkannt wurde.
- Im Zusammenhang mit dem Adreßzeigerpräfix in dem ersten Feld zeigt FIG. 4 eine Anordnung für die obige Menge von Huffman-Codes, die Adreßzeigerpräfixe und die Suffixe, die den Adreßzeiger ausmachen und ihre entsprechenden Codes mit fester Länge, so wie sie in dem Codeumsetzungsspeicher gespeichert sind. An der Spitze des Speichers befinden sich die drei Codemengen, die in Gruppen von vier vorkommen: 10xx, 111xx und 1101xx. Danach kommt 01x, die einzige Gruppe, die zwei Codes enthält, und zuletzt kommen die einzelnen Codes und 00. Die Adressenbeziehung und die gespeicherten Codes mit fester Länge sind in Tabelle 3 gezeigt. Tabelle 3
- Die Verwendung der Anordnung von Tabelle 3 und die Auswahl der ersten drei Bit des Registers 10 zur Bildung des ersten Segments ermöglicht die Decodierung der Huffman-Codes 00, 01x, 10xx und 111xx. Die entsprechenden Adressen, die für den Codeumsetzungsspeicher (per Tabelle 3) benötigt werden, sind 0000, 001x, 11xx und 10xx. Man erhält diese Adressen wie erforderlich durch Kombinieren der Ausgabe des ersten Felds, d.h. des Adreßzeigerpräfix, mit einer Anzahl von zusätzlichen Bit (dem Adreßzeigersuffix) des Registers 10. Diese Zahl wird in dem zweiten Feld des ROMs angegeben.
- Bezüglich des Zustands, in dem sich der Decodierer befindet, wenn kein gültiger Code erkannt wurde, müssen nur die nicht erkennbaren Codes betrachtet werden. In dem obigen Beispiel sind die nicht erkennbaren Codes 1100 und 1101xx. Bei beiden dieser Codes repräsentieren die drei Bit, die in dem ersten Segment betrachtet werden, den Zustand 110. In diesem konkreten Fall müssen nachfolgenden Segmenten deshalb keine besondere Zustandsinformationen mitgeteilt werden. Von einem anderen Standpunkt aus gesehen weiß man, sobald bekannt ist, daß kein gültiger Code erkannt wurde, mit Sicherheit, daß der bis dahin decodierte Teil des VL-Codes 110 ist. Dies stellt keine Information dar, und das vierte Feld weist in diesem Fall dementsprechend null Bit auf.
- Tabelle 4 zeigt die Inhalte des ROMs in der Hardware des ersten Segments. Da der ROM des ersten Segments drei Bit verarbeitet, ist zu beachten, daß dieser ROM nur 8 Speicherworte aufweist. Tabelle 4
- In Anbetracht der nächsten drei Bit für das zweite Segment und der Tatsache, daß nur die Codes 1100 und 1101xx decodiert werden müssen, wird klar, daß tatsächlich nur ein Bit ausgewertet werden muß. Wenn das erste der nächsten drei Bit eine 0 ist, dann ist der erkannte Code 1100. Andernfalls ist der erkannte Code 1101xx. Dementprechend enthält der Speicher in der Hardware des zweiten Segments (und, in diesem Beispiel, der Hardware des letzten Segments) nur die beiden in Tabelle 5 gezeigten Worte. Nebenbei bemerkt benötigt die Tabelle 5 kein Merkerbit, weil dieses Segment gleichzeitig auch das letzte Segment ist. Tabelle 5
- Zu beachten ist, daß die Anzahl von decodierten Bit nicht für alle bitweisen Segmente dieselbe sein muß. Tatsächlich kann in dem obigen Beispiel ruhig behauptet werden, daß das zweite Segment nur ein Bit decodiert. Außerdem kann die Prozedur zur Auswahl der Anzahl von Bit in den verschiedenen bitweisen Segmentierungen in praktischen Problemen heuristisch erfolgen, oder auf Simulation basieren. Schließlich ist zu bemerken, daß für das oben beschriebene Beispiel die Gesamtzahl von in dem hier offenbarten Decodierer benötigten Speicherworten 26 beträgt: 10 in den zu der Codeumsetzungstabelle führenden ROMs und 16 in der Codeumsetzungstabelle. Dies ist eine beträchtliche Verringerung der ursprünglichen, für die Ausführungsform von FIG. 1 erforderlichen 64 Worte.
- FIG. 5 zeigt eine Ausführungsform eines Decodierers gemäß den oben beschriebenen Prinzipien. Die abgebildete Ausführungsform ist größer als für das oben verwendete spezifische Darstellungsbeispiel notwendig, weil sie eine verallgemeinerte Darstellung eines Decodierers für ein mit variabler Länge codiertes Signal ist. Die allgemeinere Ausführungsform wird gezeigt, um die Erfindung umfassender darzulegen.
- In FIG. 5 reagiert der Nur-Lese-Speicher 100 auf eine ausgewählte Anzahl der höchstwertigen Bit am Ausgang des Registers 10. Wie bereits erwähnt gibt der ROM 100 fünf Felder aus: einen Treffermerker auf der Leitung 101, einen Verschiebeindikator auf dem Bus 102, ein Adreßzeigerpräfix auf dem Bus 103, einen Vorgriffindikator auf dem Bus 104 und einen Zustandsindikator auf dem Bus 105. Der Treffermerker 101 wird an den Kaskaden-Logikblock 110 angelegt, der auf die kumulative Treffermerkerleitung 109 reagiert (tatsächlich liegt die Leitung 109 in dem ersten Segment auf einem festen Logikpegel, da es das erste Segment in einer Kette von Segmenten ist). Der Block 110 entwickelt ein Selektor-Steuersignal auf der Leitung 111, und ein kumulatives Treffermerkersignal auf der Leitung 112. Ein aktives Signal auf der Leitung 112, das einen "Treffer" anzeigt, wird durch eine logische 0 dargestellt. Das Selektor-Steuersignal ist eine UND-Funktion des Signals auf den Leitungen 101 und 109. Das Selektor-Steuersignal wird an den Selektor 130 angelegt. Das kumulative Treffermerkersignal ist eine UND-Funktion des Signals auf der Leitung 109 und der Umkehrung des Signals auf der Leitung 101. Das kumulative Treffermerkersignal (das aktive 0) wird an den Kaskaden-Logikblock 210 der Hardware des nächsten Segments angelegt.
- Das Adreßzeigerpräfixsignal und die Vorgriffbit werden an den Kombinierer-Logikblock 120 angelegt, an den auch eine ausgewählte Anzahl von Bit angelegt wird, die über den Bus 106 aus dem Register 10 kommen. Auf der Grundlage des Wertes der Vorgriffbit wird eine Anzahl von Signalen auf dem Bus 106 mit den Adreßzeigerpräfixsignalen auf dem Bus 103 verkettet, um am Ausgang der Kombiniererlogik 120 auf der Leitung 107 einen einzigen Adreßbus zu bilden. Wenn zum Beispiel die drei höchstwertigen Bit des Registers 10 in dem oben beschriebenen Beispiel 101 sind, dienen gemäß der Tabelle 4 drei Bit aus dem ROM 100 als das Zeigerpräfix, und ein Bit wird aus dem Bus 106 addiert. Die Ausgabe des Kombinierers 120 als Reaktion auf diese Eingabe ist 011x. Die Kombiniererlogik 120 ist eine einfache Verknüpfungsschaltung mit einer Anzahl von Gattern.
- Die Ausgabe der Kombiniererlogik 120 (Bus 107) wird an den Eingangsanschluß A1 des Selektorblocks 130 angelegt. Der Bus 102 des ROM 100 (das Verschiebeindikatorfeld) wird an den Eingangsanschluß A2 des Selektorblocks 130 angelegt. Der Selektorblock 130 enthält außerdem den Eingangsanschluß B1, der ein Adreßsignal aus einer vorangehenden Stufe (Leitung 131) empfängt, sowie den Eingangsanschluß B2, der ein Verschiebeindikatorsignal aus einer vorangehenden Stufe (Leitung 132) empfängt. Der Selektorblock 130 ist so angeordnet, daß er die Signale der Anschlüsse A1 und A2 ausgibt, wenn das Selektor-Steuersignal "1" ist, und andernfalls die Signale der Anschlüsse B1 und B2 ausgibt. Der Selektorblock 130 umfaßt außerdem eine Mehrzahl miteinander verbundener Gatter.
- Schließlich wird der Bus 105, der ein "Zustands"-signal enthält, an den ROM 200 angelegt. Dies schließt die Beschreibung des Segment- Hardwaremoduls ab.
- Der ROM 200, der logische Kombinierer 220, der Selektor 230 und der Kaskaden-Logikblock 210 bilden das Hardwaremodul für das zweite Segment zu decodierender Bit. Die Inhalte der ROMs 100 und 200 sind nicht gleich. Davon abgesehen kann die Hardware der beiden Segmente jedoch in Architektur und Struktur identisch sein.
- Wie durch die drei Mengen von Punkten angedeutet wird, sind die Segment-Hardwaremodule in der Art einer Kette oder Pipeline miteinander verbunden. Die letzte Segment-Hardware umfaßt den ROM 300, den logischen Kombinierer 320, den Selektor 330 und den Kaskaden-Logikblock 310. Der letztendliche Ausgang befindet sich am Selektor 330, und dieser Ausgang enthält eine Adresse auf dem Bus 331, und einen Verschiebeindikator auf dem Bus 332. Der Bus 332 wird zu der Steuerschaltung 11 zurückgekoppelt, die den Puffer 40 und das Register 10 steuert. Genauer gesagt gibt der Bus 332 die Anzahl der Bit in dem erkannten VL-Code an, und dies ist die Anzahl von neuen Bit, die in das Register 10 eingeführt werden müssen. Die Aufgabe der Steuerschaltung 11 ist es, das Einführen neuer Bit zu bewirken. Der Bus 331 wird an den Nur- Lese-Speicher 400 angelegt, der der oben in Verbindung mit FIG. 4 beschriebene Codeumsetzungsspeicher ist.
- Die Anordnung von FIG. 5 legt Signale aus einem Segment an das nächste an. Dennoch ist der VLC- Decodierer von FIG. 5 weder ein serieller Decodierer, noch ein Pipeline-Decodierer. Der Signalfluß durch die Kette von Segment-Hardwaremodulen wird in einem Decodierungs intervall abgeschlossen.
- FIG. 5 illustriert natürlich nur die hier offenbarten Prinzipien, und man erhält leicht andere Ausführungsformen, ohne den Schutzbereich der hier offenbarten Prinzipien zu verlassen. Obwohl die Anordnung von FIG. 5 zum Beispiel die Verwendung eines Puffers 40 vor dem Register 10 in Betracht zieht, ist es möglich, Informationen direkt in das Register 10 einzuspeichern, so wie sie ankommen, zu verhindern, daß die Segment-Hardware die Daten betrachtet, während sie verschoben werden und die decodierten Signale auszugeben, sowie sie verfügbar werden. Wenn am Ausgang eine einheitliche Rate erwünscht ist, kann am Ausgang des Decodierers ein Puffer hinzugefügt werden. Eine weitere Variation der Anordnung von FIG. 5 kann "Kollektor-ODER"-Prinzipien einsetzen, um die Hardware zu verringern. Noch eine weitere Variation der (bis hierher beschriebenen) Anordnung von FIG. 5 kann Mittel zur Aufnahme einer Mehrzahl von VL-Codes enthalten, die mit der Anordnung von FIG. 5 decodiert werden könnten. Dies ist leicht dadurch zu realisieren, daß die ROMs in jedem der Segment-Hardwaremodule vergrößert werden, und indem eine zusätzliche Steuerleitung als eine Auswahileitung bereitgestellt wird. Diese Ausbaufähigkeit ist tatsächlich sogar in der Anordnung von FIG. 5 durch die Steuerleitung 300 enthalten. Die durch die Leitung 300 vermittelte VL-Codekennung wird über die in einer Kette von einem Segmentmodul zum nächsten verlaufenden Zustandsinformationen (Bus 105) an alle Segmente verteilt.
- FIG. 6 zeigt eine andere Realisierung des hier offenbarten VLC-Decodierers, wobei die Verzögerung in der Schaltung gemessen an der Taktfrequenz größer als notwendig ist. In solchen Fällen ist es möglich, die Schaltung von FIG. 5 leicht in eine echte Pipelinearchitektur umzuwandeln. Das einzige Problem bei der Bildung einer Pipelineanordnung ist die Erforderlichkeit, die Länge des VLC zu identifizieren, der als nächstes decodiert werden soll. Unter Ausnutzung des offenbarten Konzepts der k-Knoten wird eine Verknüpfungsschaltung 410 mit dem Ausgang des Registers 10 verbunden. Diese Schaltung muß nur die Anzahl von Bit betrachten, die der Anzahl von Bit in dem längsten Code eines k-Knotens entspricht. In FIG. 3 besitzen zum Beispiel die k-Knoten 1100 (Symbol b8) und 1101 (Symbole b0, b1, b2, b3) die längsten Codes - 4Bit. Dementsprechend erfordert die Ausführungsform von FIG. 6 des Baums von FIG. 3, daß die Verknüpfungsschaltung 410 nur auf die 4 höchstwertigen Bit des Registers 10 reagiert.
- Da es unnötig gemacht wurde, die Verschiebelänge in den Segmentmodulen selbst zu identifizieren, sind in FIG. 6 die Leitungen 102, 132, 232 und 332 weggelassen. Das Pipeline-Verfahren wird erzielt, indem Taktelemente (z.B. Flipflops) zwischen ausgewählte Segmentmodule eingesetzt werden. Der Einfachheit halber sind nur die Flipflops 411-416 gezeigt, es sollte aber beachtet werden, daß eine beliebige Anzahl von Flipflopstufen verwendet werden kann.
- Die Anordnung von FIG. 6 kann aufgrund der Tatsache, daß sie getaktet wird, auch als ein endlicher Automat betrachtet werden. Bei Beachtung dieses Sachverhalts ist es möglich, die Anzahl von Bauelementen und der Verbindungen zwischen ihnen zu verringern, indem die verschiedenen ROMs in FIG. 6 zu einer einen einzigen ROM aufweisenden Version des endlichen Automaten des VLC-Decodierers den hier offenbarten Prinzipien nach kombiniert werden. Dies ist in FIG. 7 dargestellt.
- In FIG. 7 legt das Register 10 eine vorgewählte Anzahl von höchstwertigen Bit an den ROM 500 an. Wie in FIG. 6 weist der ROM 500 5 Ausgänge auf: einen Vorgriffbitausgang, einen Adreßzeigerausgang, einen Zustandsausgang, einen Verschiebesteuerausgang und einen Treffermerkerausgang. Der Zustandsausgang wird an das Register 510 angelegt, und das Register 510 wird mit dem Taktsignal 520 getaktet. Der Ausgang des Registers 510 wird an die Adreßanschlüsse des ROM 500 angelegt. Der Adreßzeigerausgang des ROM 500 wird an das Register 530 angelegt, und außerdem wird eine Anzahl weiterer Bit aus dem Register 10 an das Register 530 angelegt. Diese Bit werden jedoch über den Selektor 540 an das Register 530 angelegt, der durch die Ausgabe der Vorgriffbit des ROM 500 gesteuert wird. Die Treffermerkerausgabe des ROM 500 erfaßt die an das Register 530 angelegten Informationen. Der Treffermerker wird außerdem an den Steuerblock 550 angelegt, der auch auf den Takt 520 und die Verschiebungssteuerausgabe des ROM 500 reagiert. Der Steuerblock 550 setzt das Register 510 wie erforderlich zurück und steuert das Verschieben von Daten in dem Register 10. Als letztes wird der Ausgang des Registers 530 an den ROM 400 angelegt.
- Im Betrieb wird der ROM 500 zuerst durch die Bit in dem Register 10 angesteuert, wobei das Register 510 durch den Steuerblock 550 zurückgesetzt wird. Zu diesem Zeitpunkt entspricht die Ausgabe des Registers 500 der Ausgabe des ROM 100 in FIG. 5. Die Zustandsinformationen werden zu diesem Zeitpunkt in dem Register 510 erfaßt und an den ROM 500 angelegt. Wenn der Treffermerker einen "Treffer" anzeigt, d.h., daß ein VL-Code erkannt wurde, erfaßt das Register 530 den Adreßzeiger und das benötigte Suffix aus dem Selektor 540 und legt die erfaßten Informationen an den ROM 400 an. Zu diesem Zeitpunkt schiebt die Steuerung 550 unter der Steuerung der Verschiebesteuerausgabe des ROM 500 die korrekte Anzahl neuer Bit in das Register 10 hinein. Wenn keine Anzeige eines "Treffers" vorliegt, schiebt der Steuerblock 550 eine andere Anzahl von Bit in das Register 10 hinein (da der Treffermerker nicht aktiv ist), und der ROM 500 reagiert nun auf neue Eingabebit aus dem Register 10 und auf die durch das Register 510 bereitgestellten Zustandsinformationen. Zu diesem Zeitpunkt entspricht der Zustand des Systems den an dem ROM 200 in der Ausführungsform von FIG. 5 vorliegenden Signalen. Die Struktur von FIG. 7 geht auf diese Weise schrittweise weiter durch die verschiedenen Segmentmodule in der Ausführungsform von FIG. 5 und ergibt schließlich eine letztendliche Ausgabe in einer Anzahl von Taktimpulsen, die höchstens gleich der Anzahl von Segmentmodulen ist.
- Das oben beschriebene illustrative VL-Codebeispiel behandelt einen minimierten VL-Code, der bei den gegebenen Signalwahrscheinlichkeiten im Vergleich mit der Anzahl von eingesetzten Bit höchst effizient ist. Das Ergebnis sind, wie in FIG. 3 zu sehen ist, 6 k- Knoten. Da hier offenbart wurde, daß das Verringern der Anzahl von k-Knoten den Decodierer vereinfacht, sollte vielleicht erwähnt werden, daß mit einigen Kompromissen der Baum von FIG. 3 weniger k-Knoten aufweisen kann. Wenn zum Beispiel ein Symbol b15' dem Symbol. b15 zugeordnet ist, können die Knoten, die den Knoten 00 und den Knoten 01 repräsentieren, zu einem einzigen k- Knoten vereinigt werden, der dem Knoten 0 entspricht. Natürlich müßten die Symbole b15 und b15' danach dann die VL-Codes 001 und 000 tragen. Dies entspricht einem Verlust von Übertragungseffizienz, da das Senden von 000 statt 00 ein zusätzliches Bit in Anspruch nimmt. Es gibt jedoch praktische Situationen, bei denen diese reduzierte Effizienz die Vereinfachung in dem Decodierer wert ist.
- Die oben offenbarten illustrativen Beispiele enthalten einen separaten ROM 400. Es sollte jedoch beachtet werden, daß der ROM 400 in jedem der Segmentmodule untergebracht werden kann. Außerdem kann in den Fällen, bei denen die in einem Segmentmodul identifizierten Codes eine gewünschte Beziehung aufweisen, der Teil des Segmentmoduls mit dem Speicher dann in den vorangehenden ROM hinein gefaltet werden. In der Tabelle 3 identifiziert zum Beispiel die Eingabe 11xx die Symbole b9, b10, b11 und b12. Wenn diese Symbole zufällig in der Form Axx ausdrückbar sind, wobei A eine bestimmte Ziffemfolge ist, dann könnte der ROM 100 die nötigen Informationen enthalten, und es würde kein zusätzlicher ROM-Speicher benötigt, der einem Teil des ROMs 400 entspricht.
Claims (14)
1. Vorrichtung zum Decodieren eines Stroms von
Signalen, die mit einem gegebenen Code variabler Länge
(VLC) codiert sind, mit folgendem:
einem ersten Mittel (10) zum Abgeben einer
Anzahl von Bit des besagten Stroms von Signalen, wobei
diese Anzahl mindestens gleich der Anzahl von Bit in
dem längsten Code des besagten VLC ist;
einer Mehrzahl von Verarbeitungsblöcken (100,
120, 110, 130), die in einer Kette zusammengeschaltet
sind, so daß außer dem letzten Verarbeitungsblock in
der Kette jeder Verarbeitungsblock in der Kette einen
nächsten Verarbeitungsblock in der Kette mit
Informationen speist, und die weiterhin so
zusammengeschaltet sind, daß jeder Verarbeitungsblock
auf eine andere Gruppe benachbarter Bit reagiert, die
durch das erste Mittel abgegeben werden, und als
Reaktion auf empfangene Informationen aus dem
vorangehenden Block und der Gruppe benachbarter Bit
eine Untermenge des besagten VLC identifiziert,
dadurch gekennzeichnet, daß
jeder der Verarbeitungsblöcke einen Teil eines
Baums decodiert, der bis zu seinen k-Knoten
zurückgeschnitten ist, wobei ein k-Knoten ein Knoten
des Baums ist, der eine binäre Anzahl von Blättern
einer beliebigen konkreten Codelängenzahl trägt, und
der auf seinem Weg zur Wurzel keine k-Knoten aufweist.
2. Vorrichtung nach Anspruch 1, wobei jeder
Verarbeitungsblock einen Nur-Lese-Speicher umfaßt, der
auf mindestens eine Untermenge der Gruppe benachbarter
Bit reagiert.
3. Vorrichtung nach Anspruch 1, wobei die aus
jedem Verarbeitungsblock in der Kette zu dem nächsten
Verarbeitungsblock in der Kette übermittelten
Informationen eine Anzeige dafür sind, ob ein VLC-Code
identifiziert worden ist.
4. Vorrichtung nach Anspruch 3, wobei die aus
mindestens einem Verarbeitungsblock in der Kette zu dem
nächsten Verarbeitungsblock in der Kette übermittelten
Informationen Zustandsinformationen umfassen.
5. Vorrichtung nach Anspruch 3, wobei die aus
jedem Verarbeitungsblock in der Kette zu dem nächsten
Verarbeitungsblock in der Kette übermittelten
Informationen ein VLC-Kennungssignal umfassen.
6. Vorrichtung nach Anspruch 1, wobei die besagte
Mehrzahl von Verarbeitungsblöcken eine eindeutige
Adresse für jeden decodierten VLC entwickelt und
weiterhin ein Speichermittel (400) umfaßt, das auf die
entwickelte eindeutige Adresse reagiert, um die Adresse
in einen Code mit fester Länge umzuwandeln.
7. Vorrichtung nach Anspruch 1, mit folgendem:
einem Verknüpfungsmittel (410), das auf das
erste Mittel reagiert, um die Länge eines derzeit zu
decodierenden Codes des VLC zu bestimmen; und
getakteten Speichermitteln, die zwischen
ausgewählte Verarbeitungsbiöcke geschaltet sind.
8. Vorrichtung nach Anspruch 7, wobei das
verknüpfende Mittel die in der Baumdarstellung des VLC
gefundenen k-Knoten ausnutzt.
9. VLC-Decodierer mit einem Eingangsregister (10)
zum Speichern eines Teils eines Stroms von
Eingangssignalen und einem Decodiererblock (400, 500,
510, 520, 530, 540, 550), der auf die Register-
Ausgangssignale reagiert, wobei dieser Decodiererblock
einen ROM (500) enthält,
dadurch gekennzeichnet, daß
der ROM Informationen enthält, die einen Baum
decodieren, der bis zu seinen k-Knoten
zurückgeschnitten ist, wobei ein k-Knoten ein Knoten
des Baums ist, der eine binäre Anzahl von Blättern
einer beliebigen konkreten Codelängenzahl trägt, und
der auf seinem Weg zur Wurzel keine k-Knoten aufweist.
10. Decodierer nach Anspruch 9, wobei der
Decodiererblock folgendes umfaßt:
ein Zustandsregister (510), das auf einen
ersten Teil der Ausgabe des ROM reagiert, wobei dieses
Register mit einem Taktsignal getaktet wird und seine
getaktete Ausgabe an Adreßeingänge des ROM liefert,
wodurch der Decodiererblock zu einem endlichen
Automaten wird; und
ein Mittel zum Verketten (530) des zweiten
Teils der Ausgabe des ROM mit Ausgangssignalen des
Eingangsregisters, um ein Ausgangssignal des
Decodierers zu bilden.
11. Decodierer nach Anspruch 10, mit einem Mittel
(540) zum Auswählen der Anzahl von Ausgangssignalen des
Eingangsregisters, die in dem Mittel zum Verketten
unter der Steuerung eines vierten Teils der Ausgabe des
ROM verkettet werden.
12. Decodierer nach Anspruch 10, mit einem
Trefferhinweis am Ausgang des ROM, der die
Informationen erfaßt, die in dem Mittel zum Verketten
verkettet werden.
13. Decodierer nach Anspruch 12, mit einem ROM
(400), der auf das Mittel zum Verketten reagiert.
14. Decodierer nach Anspruch 10, mit einer
Steuerschaitung (550), die als Reaktion auf einen
fünften Teil der ROM-Ausgabe Daten in das
Eingangsregister schiebt.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/907,977 US5226082A (en) | 1992-07-02 | 1992-07-02 | Variable length decoder |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69313540D1 DE69313540D1 (de) | 1997-10-09 |
DE69313540T2 true DE69313540T2 (de) | 1998-01-22 |
Family
ID=25424954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69313540T Expired - Lifetime DE69313540T2 (de) | 1992-07-02 | 1993-06-24 | Verbesserte Vorrichtung zur variablen Längendekodierung |
Country Status (7)
Country | Link |
---|---|
US (1) | US5226082A (de) |
EP (1) | EP0577330B1 (de) |
JP (1) | JP3016996B2 (de) |
KR (1) | KR100286195B1 (de) |
CA (1) | CA2096176C (de) |
DE (1) | DE69313540T2 (de) |
MX (1) | MX9303899A (de) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5285497A (en) * | 1993-04-01 | 1994-02-08 | Scientific Atlanta | Methods and apparatus for scrambling and unscrambling compressed data streams |
US5615020A (en) * | 1993-05-13 | 1997-03-25 | Keith; Michael | System and method for fast huffman decoding |
US5835033A (en) * | 1994-11-08 | 1998-11-10 | Canon Kabushiki Kaisha | Decoding apparatus and method for coded data |
US5651099A (en) * | 1995-01-26 | 1997-07-22 | Hewlett-Packard Company | Use of a genetic algorithm to optimize memory space |
US5648774A (en) * | 1995-05-08 | 1997-07-15 | Industrial Technology Research Institute | Variable length coding with three-field codes |
KR100214593B1 (ko) * | 1996-03-15 | 1999-08-02 | 구자홍 | 캐스케이드 구조를 이용한 런랭스 코드의 코드워드 검출 방법 및 장치 |
CN100539695C (zh) * | 1996-05-28 | 2009-09-09 | 松下电器产业株式会社 | 图像预测编码/解码装置和方法以及记录媒体 |
US5930359A (en) * | 1996-09-23 | 1999-07-27 | Motorola, Inc. | Cascadable content addressable memory and system |
JP3884172B2 (ja) * | 1997-10-02 | 2007-02-21 | 株式会社東芝 | 可変長復号化装置および復号化方法 |
US6647051B1 (en) | 1999-12-29 | 2003-11-11 | Koninklijke Philips Electronics N.V. | Zero delay mask for galois LFSR |
US6912070B1 (en) * | 2000-08-08 | 2005-06-28 | Qualcomm, Inc. | Sub-optimal variable length coding |
US6580377B1 (en) * | 2001-05-30 | 2003-06-17 | Sony Corporation | Huffman decoding using cascaded sub-table lookup method |
ITMI20011938A1 (it) * | 2001-09-17 | 2003-03-17 | Cit Alcatel | Metodo per criptare un flusso di dati |
KR100486251B1 (ko) * | 2002-08-03 | 2005-05-03 | 삼성전자주식회사 | 가변 길이 코드 복호화 장치 및 방법 |
US6765513B2 (en) * | 2002-12-09 | 2004-07-20 | Texas Instruments Incorporated | Decoding bit streams compressed with compression techniques employing variable length codes |
US7212681B1 (en) * | 2003-01-15 | 2007-05-01 | Cisco Technology, Inc. | Extension of two-dimensional variable length coding for image compression |
US7194137B2 (en) * | 2003-05-16 | 2007-03-20 | Cisco Technology, Inc. | Variable length coding method and apparatus for video compression |
US7454073B2 (en) * | 2004-06-15 | 2008-11-18 | Cisco Technology, Inc. | Video compression using multiple variable length coding processes for multiple classes of transform coefficient blocks |
US7492956B2 (en) * | 2004-08-18 | 2009-02-17 | Cisco Technology, Inc. | Video coding using multi-dimensional amplitude coding and 2-D non-zero/zero cluster position coding |
US7471841B2 (en) * | 2004-06-15 | 2008-12-30 | Cisco Technology, Inc. | Adaptive breakpoint for hybrid variable length coding |
US7454076B2 (en) * | 2004-06-15 | 2008-11-18 | Cisco Technology, Inc. | Hybrid variable length coding method for low bit rate video coding |
US7471840B2 (en) * | 2004-08-18 | 2008-12-30 | Cisco Technology, Inc. | Two-dimensional variable length coding of runs of zero and non-zero transform coefficients for image compression |
US7499596B2 (en) * | 2004-08-18 | 2009-03-03 | Cisco Technology, Inc. | Amplitude coding for clustered transform coefficients |
US7499595B2 (en) * | 2004-08-18 | 2009-03-03 | Cisco Technology, Inc. | Joint amplitude and position coding for photographic image and video coding |
US7680349B2 (en) | 2004-08-18 | 2010-03-16 | Cisco Technology, Inc. | Variable length coding for clustered transform coefficients in video compression |
US7620258B2 (en) * | 2004-08-18 | 2009-11-17 | Cisco Technology, Inc. | Extended amplitude coding for clustered transform coefficients |
CN101873499B (zh) * | 2005-05-13 | 2013-03-06 | 高通股份有限公司 | 用于改进的多媒体解码器的方法和设备 |
JP4556766B2 (ja) * | 2005-05-23 | 2010-10-06 | ソニー株式会社 | 文字列検索回路及び文字列検索方法 |
KR100686354B1 (ko) | 2005-11-16 | 2007-02-22 | 엠텍비젼 주식회사 | 가변 트리를 이용한 허프만 복호화 방법 및 장치 |
US7242328B1 (en) | 2006-02-03 | 2007-07-10 | Cisco Technology, Inc. | Variable length coding for sparse coefficients |
US7573407B2 (en) * | 2006-11-14 | 2009-08-11 | Qualcomm Incorporated | Memory efficient adaptive block coding |
US7545293B2 (en) * | 2006-11-14 | 2009-06-09 | Qualcomm Incorporated | Memory efficient coding of variable length codes |
US9086871B2 (en) | 2013-09-26 | 2015-07-21 | International Business Machines Corporation | Reordering the output of recirculated transactions within a pipeline |
GB2540216B (en) * | 2015-07-10 | 2020-01-01 | Advanced Risc Mach Ltd | Comparison of wide data types |
DE102016100939B4 (de) * | 2016-01-20 | 2023-08-10 | Vibracoustic Cv Air Springs Gmbh | Luftfeder |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4301327A (en) * | 1979-06-05 | 1981-11-17 | Lee Lin Nan | Reduction of message redundancy by multiple substitution: a message preprocessing scheme for secure communications |
US4386416A (en) * | 1980-06-02 | 1983-05-31 | Mostek Corporation | Data compression, encryption, and in-line transmission system |
CA1296430C (en) * | 1986-11-10 | 1992-02-25 | Masahide Kaneko | Encoding system capable of accomplishing a high efficiency by anterior and/or posterior processing to quantization |
US4816914A (en) * | 1987-01-07 | 1989-03-28 | Pictel Corporation | Method and apparatus for efficiently encoding and decoding image sequences |
US4944009A (en) * | 1988-02-25 | 1990-07-24 | Massachusetts Institute Of Technology | Pseudo-random sequence generator |
JPH03145223A (ja) * | 1989-10-30 | 1991-06-20 | Toshiba Corp | 可変長符号復調装置 |
JPH0479421A (ja) * | 1990-07-18 | 1992-03-12 | Toshiba Corp | 可変長符号化装置および可変長復号化装置 |
-
1992
- 1992-07-02 US US07/907,977 patent/US5226082A/en not_active Expired - Lifetime
-
1993
- 1993-06-16 CA CA002096176A patent/CA2096176C/en not_active Expired - Lifetime
- 1993-06-24 DE DE69313540T patent/DE69313540T2/de not_active Expired - Lifetime
- 1993-06-24 EP EP93304929A patent/EP0577330B1/de not_active Expired - Lifetime
- 1993-06-29 MX MX9303899A patent/MX9303899A/es not_active IP Right Cessation
- 1993-06-30 JP JP5183402A patent/JP3016996B2/ja not_active Expired - Lifetime
- 1993-06-30 KR KR1019930012044A patent/KR100286195B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CA2096176C (en) | 1998-09-08 |
JP3016996B2 (ja) | 2000-03-06 |
JPH0697838A (ja) | 1994-04-08 |
DE69313540D1 (de) | 1997-10-09 |
EP0577330B1 (de) | 1997-09-03 |
US5226082A (en) | 1993-07-06 |
KR940006020A (ko) | 1994-03-22 |
MX9303899A (es) | 1994-04-29 |
KR100286195B1 (ko) | 2001-04-16 |
CA2096176A1 (en) | 1994-01-03 |
EP0577330A3 (en) | 1994-06-01 |
EP0577330A2 (de) | 1994-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69313540T2 (de) | Verbesserte Vorrichtung zur variablen Längendekodierung | |
DE19506164C2 (de) | Verfahren zum Komprimieren eingegebener Symbole in Codeworte | |
DE19742417B4 (de) | Vorrichtung und Verfahren zur Durchführung von M-fachem Maschinenendzustands-Entropiekodieren bzw. Entropiekodieren mit einer Maschine mit finitem Zustand | |
DE69905343T2 (de) | Blockweiser adaptiver statistischer datenkompressor | |
DE69425847T2 (de) | Rechner für die inverse diskrete Cosinus-Transformation | |
DE69315174T2 (de) | Mehrzweckkodierer von Abbruchkoden und Lauflängen/Amplituden für eine Vorrichtung zum Verarbeiten eines digitalen Videosignals | |
DE68926876T2 (de) | Vorrichtung zur Vektorquantisierung von Bildern | |
DE69624276T2 (de) | System und Verfahren zur variablen Längenkodierung von sich bewegenden Bildern | |
DE69631792T2 (de) | Apparat und verfahren für die zweidimensionale datenkompression | |
DE3855367T2 (de) | Einheit zur wirkungsvollen stapeln von daten in einem puffer | |
EP2068448B1 (de) | Verfahren und Anordnung zur arithmetischen Enkodierung und Dekodierung mit Verwendung mehrerer Tabellen | |
DE69026292T2 (de) | Methode zur Bilddatenkodierung | |
DE10301362A1 (de) | Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche | |
DE69802520T2 (de) | Verfahren und vorrichtung zur verlustfreien datenkompression | |
DE4446072A1 (de) | Verfahren und Einrichtung zum parallelen Codieren und Decodieren von Daten | |
DE69611150T2 (de) | Verfahren und Anordnung zur Erzeugung eines lauflängebegrenzten Codes mit Gleichstromsteuerung | |
DE19536401A1 (de) | Verfahren und Einrichtung zum Codieren und Decodieren von Daten | |
EP1500281A2 (de) | Kodierung von transformations-koeffizienten in bild- oder videokodierern | |
DE19531049A1 (de) | Tabelle von Codes variabler Länge und Codiervorrichtung variabler Länge | |
DE69413512T2 (de) | Vorrichtung zur Dekodierung von Kodes mit veränderlicher Länge | |
DE19544761A1 (de) | Verfahren zum Komprimieren eines eingegebenen Symbols | |
DE4217008C2 (de) | HDTV-Dekodierer | |
DE68918590T2 (de) | Gerät zur dekodierung von mit variabler länge kodierten daten. | |
DE69125424T2 (de) | Vorrichtung zur variablen Längenkodierung und Vorrichtung zur variablen Längendekodierung | |
DE19900150A1 (de) | Apparat und Verfahren zum Kodieren von Information mit einem finiten Automaten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |