DE69313540T2 - Verbesserte Vorrichtung zur variablen Längendekodierung - Google Patents

Verbesserte Vorrichtung zur variablen Längendekodierung

Info

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
Application number
DE69313540T
Other languages
English (en)
Other versions
DE69313540D1 (de
Inventor
George J Kustka
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.)
AT&T Corp
Original Assignee
AT&T Corp
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 AT&T Corp filed Critical AT&T Corp
Publication of DE69313540D1 publication Critical patent/DE69313540D1/de
Application granted granted Critical
Publication of DE69313540T2 publication Critical patent/DE69313540T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • 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/42Conversion 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/425Conversion 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • 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.
  • Kurze Beschreibung der Zeichnungen
  • 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.
  • Ausführliche Beschreibung
  • 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.
  • Erzeugung eines Codes mit einer minimierten Anzahl von k-Knoten
  • 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.
  • Implementierung des Decodierers
  • 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.
DE69313540T 1992-07-02 1993-06-24 Verbesserte Vorrichtung zur variablen Längendekodierung Expired - Lifetime DE69313540T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 可変長符号化装置および可変長復号化装置

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