DE4217009C1 - Hochgeschwindigkeitsdekodierer für Codes veränderlicher Länge - Google Patents

Hochgeschwindigkeitsdekodierer für Codes veränderlicher Länge

Info

Publication number
DE4217009C1
DE4217009C1 DE4217009A DE4217009A DE4217009C1 DE 4217009 C1 DE4217009 C1 DE 4217009C1 DE 4217009 A DE4217009 A DE 4217009A DE 4217009 A DE4217009 A DE 4217009A DE 4217009 C1 DE4217009 C1 DE 4217009C1
Authority
DE
Germany
Prior art keywords
length
code words
decoder
variable length
combination
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
DE4217009A
Other languages
English (en)
Inventor
Jinn-Shyan Wang
Yung-Jung Jan
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.)
Transpacific IP Ltd
Original Assignee
Industrial Technology Research Institute ITRI
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 Industrial Technology Research Institute ITRI filed Critical Industrial Technology Research Institute ITRI
Application granted granted Critical
Publication of DE4217009C1 publication Critical patent/DE4217009C1/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
    • 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

Description

Die vorliegende Erfindung betrifft einen Hochgeschwindig­ keitsdekodierer für Codes veränderlicher Länge bzw. eine programmierbare Logikanordnung hierfür und ein Verfahren, die jeweils mehr als ein Codewort in einem Zyklus dekodieren können. Die Erfindung ist besonders nützlich in Digitalvideo- oder Bildkompres­ sionssystemen, bei denen der Datenfluß sehr hoch ist.
Bei der Datenkompression handelt es sich um die Reduzierung der Redundanz in Daten, um auf diese Weise die Datenkommuni­ kationskosten und Datenspeichererfordernisse zu senken. Da­ tenkompression ist besonders wichtig bei Digitalvideoverar­ beitungssystemen, bei denen es von Bedeutung ist, die zur Übertragung von Videobildern erforderliche Bandbreite und die Speichererfordernisse zum Speichern der Videobilder zu minimieren.
Lauflängenkodierung (RLC) und Kodierung mit veränderlicher Länge (variable lenght coding VLC) sind zwei in großem Um­ fang angewendete Techniken für eine verlustfreie Datenkom­ pression.
Ein Beispiel eines Codes mit veränderlicher Länge ist der Huffman-Code. Die Funktionsweise eines Huffman-Codes soll in Verbindung mit Fig. 1 erläutert werden. Fig. 1 zeigt einen sogenannten Huffman-Baum. Der Baum ist für einen Satz von sieben Symbolen A, B, C, D, E und F konstruiert, wobei die entsprechendem Wahrscheinlichkeiten in bezug auf das Auftre­ ten von diesen Symbolen 0,1; 0,1; 0,1; 0,3; 0,1; 0,1 und 0,2 betragen. Diese Wahrscheinlichkeiten sind in Kreisen angege­ ben, die den Blattknotenpunkten der Fig. 1 entsprechen. Ein im Baum der Fig. 1 einen Innenknoten bezeichnender Kreis enthält die Summe der Wahrscheinlichkeiten seiner nachfol­ genden Knoten.
Das Huffman-Codewort für ein Symbol ist die Folge von Nullen und Einsen auf dem Wege von der Wurzel des Baumes bis zum Blattknoten, der das entsprechende Symbol repräsentiert. Beispielsweise ist das Codewort für A 000 und das Codewort für D 01. Um den Symbolstrang DAF zu komprimieren, verkettet ein Huffman-Kodierer die Codeworte für die drei Symbole, so daß der Binärstrang 01000100 gebildet wird.
Allgemein gesagt besitzen in einem Huffman-Code Symbole mit einer höheren Wahrscheinlichkeit des Auftretens kürzere Codeworte und Symbole mit einer niedrigeren Wahrscheinlich­ keit des Auftretens längere Codeworte.
In Digitalvideosystemen ist der Datendurchsatz üblicherweise sehr hoch. Die Hauptanforderung, die an einen in einem solchen System verwendeten Kodierer oder Dekodierer für Codes veränderlicher Länge gestellt wird, ist eine hohe Geschwindigkeit. Um ein Kodieren und Dekodieren mit hoher Geschwindigkeit zu erreichen, ist es wünschenswert, eine Parallelverarbeitung zu verwenden. Da die Eingänge eines Dekodierers für Codes veränderliche Länge Datenworte mit fester Länge sind, die Zeichensymbole darstellen, ist es einfach, diese für eine Paralleldekodierung zu trennen.
Für einen Dekodierer für Codes veränderlicher Länge ist die Situation ganz anders. Da die Eingangsdaten Codes veränder­ licher Länge sind, ist es nicht einfach, die Grenzen zwischen hintereinander eingegebenen Codeworten zu erkennen. Somit können die Eingangsdaten nicht in einfacher Weise zur Durchführung einer Parallelverarbeitung getrennt werden. Aufgrund dieser Beschränkung besteht die einfachste Methode zum Dekodieren der Eingangsdaten darin, diese bit um bit durchzuführen, wobei man einen bit-seriellen Dekodierer ein­ setzt.
Ein Ausführungsbeispiel eines bit-seriellen Dekodierers ist in der US-PS 48 53 696 und in der Veröffentlichung von A. Mukherjee et al "Efficient VLSI Designs for Data Trans­ formation of Tree-Based Codes", IEEE Transactions on Circuits and Systems, Vol. 38, No. 3, März 1991, Seiten 306- 314 beschrieben. Dieser bit-serielle Dekodierer wird eben­ falls durch Verwendung des Huffman-Baumes betrieben. Um bei­ spielsweise den vorstehend genannten Binärstrang abzu­ bauen, bewegt sich der Dekodierer den Baum herab, während der Binärstrang von links nach rechts abgearbeitet wird. So­ mit bewirkt die erste 0, daß der Dekodierer zum rechten Zweig der Wurzel abzweigt. Die nachfolgende 1 bewirkt, daß der Dekodierer zu dem äußeren Knotenpunkt abzweigt, der das spezielle Symbol D repräsentiert. Die Dekodiergeschwindig­ keit eines bit-seriellen Dekodierers beträgt 1 bit/Zyklus. Im Falle eines bit-seriellen Dekodierers ist die bit-Einga­ begeschwindigkeit fixiert, während die bit-Ausgabegeschwin­ digkeit veränderlich ist.
Ein solcher bit-serieller Dekodierer kann jedoch den hohen Datendurchsatzanforderungen von Videosystemen nicht gerecht werden, da seine Dekodiergeschwindigkeit nur 1 bit/Zyklus beträgt. Daher ist für die Hardware-Verwirklichung eines Dekodierers für Codes veränderlicher Länge eine gewisse Parallelverarbeitungstechnik erforderlich. Eine einfache Technik besteht darin, die vom Kodierer zu kodierenden Daten in Segmente zu unterteilen und ein einmaliges Wort zwischen jedes benachbarte Segment einzusetzen. Ein einmaliges Wort ist ein Wort, das durch irgendeine beliebige Kombination der Codeworte nicht erzeugt werden kann. Am Dekodierer wird das einmalige Wort dazu verwendet, um die Grenze zwischen benach­ barten Segmenten zu detektieren. Dann können diverse Deko­ dierer für Codes veränderlicher Länge benutzt werden, um diverse Segmente zur gleichen Zeit zu dekodieren.
Natürlich kann über eine solche Konstruktion ein hoher Parallelismus erreicht werden. Es existieren jedoch diverse signifikante Nachteile. Als erstes wird ein großer Teil von zusätzlicher Hardware benötigt. Als zweites kann ein Deko­ dierer dieses Typs nur mit einem Kodierer eingesetzt werden, der das einmalige Wort überträgt. Ferner wird durch das Ein­ setzen des einmaligen Wortes der Kompressionswirkungsgrad gesenkt.
Der Flaschenhals eines Kodierers für Codes veränderlicher Länge besteht darin, daß die Länge eines ankommenden Code­ wortes nicht im voraus bekannt ist. Wenn jedoch einmal die Länge eines ankommenden Codewortes bekannt ist, kann der Dekodierer damit beginnen, den nächsten Code zu dekodieren.
Auf der Basis des vorstehend beschriebenen Konzeptes wurde eine Paralleleinheit für einen Dekodierer für Codes verän­ derlicher Länge von J.W. Peake in "Decompaction", I.B.M. Technical Disclosure Bulleting, Vol. 26, No. 9, Seiten 4794- 4797, Februar 1984 vorgeschlagen. Ein Blockdiagramm eines derartigen Dekoders für Codes veränderlicher Länge ist in Fig. 2 dargestellt.
Der Dekodierer 10 der Fig. 2 umfaßt einen Eingangspuffer 14 zum Speichern von ankommenden komprimierten Daten 12. Der Eingangspuffer 14 umfaßt zwei Verriegelungseinheiten L1 und L2. Die Zahl der bit-Positionen in jeder der beiden Verrie­ gelungseinheiten entspricht dem längsten im System verwende­ tem Codewort (d. h. P bits), so daß die beiden Verriegelungs­ einheiten zusammen eine Gesamtzahl von bit-Positionen besitzen, die doppelt so groß ist wie das längste Codewort im System (d. h. 2 P bits).
Der Dekodierer 10 der Fig. 2 umfaßt ferner einen Barrel­ shifter 16. Der Barrelshifter definiert ein Fenster einer Länge B in den beiden Verriegelungseinheiten, wobei dieses Fenster eine veränderliche Lage besitzt. Die beiden Verrie­ gelungseinheiten des Eingangspuffers werden mit ankommenden komprimierten Datenbits gefüllt. Anfangs definiert der Barrelshifter 16 ein Fenster, das die gleiche Länge besitzt wie die erste Verriegelungseinheit des Eingangs des Puffers. Die vom Barrelshifter 16 ausgegebenen P bits werden über Leitungen 18 an eine längenprogrammierbare Logikeinheit (PLA) 22 gelegt. Die vom Barrelshifter 16 ausgegebenen bits werden ebenfalls über Leitungen 21 an einen Dekodierer PLA 20 gelegt. Die längenprogrammierbare Logikeinheit 22 gibt über Leitungen 23 die Länge des ersten zu dekodierenden Codes aus. Der Dekodierer PLA 20 gibt das entsprechende dekodierte Zeichensymbol aus.
Die Länge des ersten Codewortes wird über die Leitungen 23 zum Barrelshifter 16 zurückgeführt. Das vom Barrelshifter definierte Fenster wird dann um eine Reihe von Positionen geshiftet, die der Länge des ersten Codewortes entsprechen. Wenn das erste Codewort Qbits enthält, wird das vom Barrel­ shifter definierte Fenster so geshiftet, daß die ersten Qbits von der ersten Verriegelungseinheit L1 aus dem Fenster eliminiert und die ersten Qbits von der zweiten Verriege­ lungseinheit L2 in das Fenster eingebaut werden. Somit ent­ spricht nach einem Dekodiervorgang die Zahl der nicht deko­ dierten bits im vom Barrelshifter definierten Fenster immer dem längsten möglichen Codewort im System, das P bits beträgt. Das nächste Codewort wird dann dekodiert, indem die vorhan­ denen bits im Barrelshifter sowohl an die längenprogram­ mierbare Logikeinheit 22 als auch den Dekodierer PLA 22 ge­ legt werden. Wenn eine ausreichende Zahl der komprimierten Datenbits dekodiert worden ist, so daß die Zahl der deko­ dierten bits P entspricht oder übersteigt, wird der Inhalt der zweiten Verriegelungseinheit L2 in die erste Verriege­ lungseinheit L1 bewegt und neue Datenbits werden in die zweite Verriegelungseinheit L2 eingeschrieben. Der Barrel­ shifter definiert dann ein Fenster, das die nunmehr in der ersten Verriegelungseinheit vorhandenen bits, die nicht dekodiert worden sind, und genug bits aus der zweiten Ver­ riegelungseinheit umfaßt, so daß das Fenster P bits ent­ spricht. Dann wird wieder das nächste Codewort dekodiert, indem die im Barrelshifter vorhandenen bits sowohl an die längenprogrammierbare Logikeinheit als auch den Dekoder PLA gelegt werden.
Die Geschwindigkeit des Paralleldekodierers 10 der Fig. 2 beträgt ein Codewort pro Zyklus. Dies ist viel schneller als die Geschwindigkeit von einem bit pro Zyklus des vorstehend beschriebenen bit-seriellen Dekodierers. Darüber hinaus benötigt der Paralleldekodierer 10 der Fig. 2 kein einmali­ ges Wort, um die kodierten Bitströme in Segmente zu unter­ teilen.
Eine VLSI-Ausführungsform des Paralleldekodierers 10 wurde unter dem Titel "A Parallel Variable Length Code Decoder for Advanced Television Applications" auf der 3. International Workshop on HTV, Italien, August 1989 präsentiert.
Bei dem Dekodierer 10 der Fig. 2 besitzt sowohl die längen­ programmierbare Logikeinheit 22 als auch der Dekodierer PLA 20 die gleiche UND-Ebene. Daher können die beiden PLA-Bausteine zu einem verschmolzen werden. Fig. 3 zeigt ein Ausführungs­ beispiel eines solchen einzigen PLA-Bausteines. Fig. 4 ist eine Tabelle, in der der Code veränderlicher Länge wiederge­ geben ist, der unter Verwendung des PLA-Bausteines der Fig. 3 dekodiert werden kann. Wie in Fig. 4 gezeigt, besitzt dieser Code sechs Symbole mit unterschiedlichen Wahrschein­ lichkeiten des Auftretens. Die entsprechenden Codeworte be­ sitzen eine veränderliche Länge in Abhängigkeit von der Wahrscheinlichkeit des Auftretens des Symboles.
Der PLA-Baustein 30 der Fig. 3 umfaßt eine UND-Ebene 32, eine Längen-ODER-Ebene 34 und eine Dekodierer-ODER-Ebene 36. Die UND-Ebene 32 dient zum Detektieren des Vorhandenseins eines speziellen Eingabecodewortes an den Eingabeleitungen 38. Die Längen-ODER-Ebene 34 speichert eine Tabelle, die die Länge eines jeden Codewortes in Fig. 4 enthält. Die Deko­ dierer-ODER-Ebene 36 speichert eine Tabelle, die das Daten­ symbol enthält, das jedem Codewort entspricht.
Es gibt eine Produktleitung 40 im PLA-Baustein 30 für jedes Codewort im Code der Fig. 4. Die Eingabebits werden von den Eingabeleitungen 38 aufgenommen. Die Zahl der Eingabeleitun­ gen 38 entspricht der Länge des längsten Codewortes im System. Es gibt eine Eingabeleitung 38 für jede Position im Barrelshifter 16 der Fig. 2. Das Komplement eines jeden Eingabebits auf einer Leitung 38 wird durch einen ent­ sprechenden Inverter 39 erhalten, so daß jedes eingegebene bit und sein Komplement auf den Leitungen 41a und 41b er­ scheinen.
Die UND-Ebene 32 des PLA-Bausteines 30 benutzt die UND-Ebe­ nen-Transistoren 42, um eine Parallelanpassung in bezug auf die auf den Eingangsleitungen 38 vorhandenen Eingangsdaten durchzuführen. Wenn ein in den Daten an den Eingangsleitun­ gen 38 enthaltenes Codewort angepaßt wird, wird die spe­ zielle entsprechende Produktleitung 40 auf hohem Pegel ge­ halten. Hierdurch können die ODER-Ebenen-Transistoren 44, die der speziellen Produktleitung auf hohem Pegel zugeordnet sind, über die Inverter 54 die Codewortlänge auf die Aus­ gangsleitungen 47 abgeben. Wenn eine Produktleitung 40 auf hohem Pegel gehalten wird, geben die ODER-Ebenen-Transisto­ ren 54, die dieser Produktleitung zugeordnet sind, in ent­ sprechender Weise das dekodierte Codewort über die Inverter 56 an die Ausgangsleitungen 57 ab.
Den Flaschenhals bei diesem Paralleldekodierer 10 der Fig. 2 stellt die von dem Längen-PLA-Baustein 22 und dem Barrelshifter 16 gebildete Schleife dar. Für jeden Zyklus kann nur ein Codewort dekodiert werden. Wenn eine höhere De­ kodiergeschwindigkeit gewünscht wird, müssen zwei oder mehr Codeworte in jedem Zyklus dekodiert werden.
Der Erfindung liegt die Aufgabe zugrunde, einen Dekodierer für Codes veränderlicher Länge bzw. eine programmierbare Logikanordnung hierfür und ein Verfahren zu schaffen, die jeweils mehr als ein Codewort in einem Zyklus dekodieren können. Insbesondere soll der Dekodierer für Codes veränderlicher Länge der Fig. 2 so modifiziert werden, daß mehr als ein Code in einem Zyklus dekodiert werden kann, ohne hierdurch die Hardware-Komplexi­ tät wesentlich zu erhöhen.
Gelöst wird diese Aufgabe durch die Merkmale in den Patent­ ansprüchen 1, 5 und 6.
Gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung wird der PLA-Baustein 30 der Fig. 3, der zur Ver­ wirklichung des Dekodierers für Codes veränderlicher Länge der Fig. 2 verwendet wird, so modifiziert, daß er eine oder mehrere Extraproduktleitungen und eine oder mehrere Extra­ ausgabeleitungen in der Dekodierer-ODER-Ebene aufweist. Ins­ besondere ist der PLA-Baustein der Fig. 3 so modifiziert, daß er Extraproduktleitungen und Extraausgabeleitungen auf­ weist, um Kombinationen von mehr als einem aufeinanderfol­ genden Codewort in einem Zyklus zu detektieren und zu deko­ dieren. Die Kombinationen von aufeinanderfolgenden Codewor­ ten, die detektiert und dekodiert werden, besitzen eine kom­ binierte Länge, die geringer als das längste Codewort im System ist oder diesem entspricht.
Die vorliegende Erfindung zielt somit auf mit hoher Wahr­ scheinlichkeit auftretende Codes (d. h. Codes mit einer kur­ zen Codelänge) ab. Erfindungsgemäß werden zwei Codeworte in einem Zyklus nur für bestimmte Kombinationen von Codes mit kurzen Längen dekodiert. Hierbei werden zwei Codeworte nicht in jedem Zyklus dekodiert, sondern nur in denjenigen Zyklen, in denen bestimmte vorgegebene Kombinationen von kurzen Codeworten auftreten. In diesem Fall ist der Bedarf nach zu­ sätzlicher Hardware auf eine vernünftige Basis gestellt, und die Kodierungsgeschwindigkeit kann beträchtlich erhöht wer­ den. In einem Zyklus, in dem eine geeignete Kombination von Codeworten in den eingegebenen Datenbits nicht vorhanden ist, wird nur ein Codewort dekodiert.
Wenn man bei einer speziellen Ausführungsform der Erfindung eine erste Gruppe von Codeworten mit der Bezeichnung A und eine zweite Gruppe von Codeworten mit der Bezeichnung B be­ trachtet, so können zwei aufeinanderfolgende Codes erfin­ dungsgemäß detektiert und dekodiert werden, wenn der erste Code zur Gruppe A und der zweite Code zur Gruppe B gehört. Die Gruppen A und B werden durch die Bedingung festgelegt, daß ein Code in Gruppe A, wenn er mit einem Code in Gruppe B kombiniert ist, nicht länger ist als das längste Codewort im System.
In diesem Fall beträgt die Wahrscheinlichkeit B zum Dekodie­ ren von zwei Worten in einem Zyklus:
P = (Summe von sämtlichen Wahrscheinlichkeiten der Codeworte in Gruppe A) × (Summe von sämtlichen Wahr­ scheinlichkeiten der Codeworte in Gruppe B) (1)
Die Zahl N von Extraproduktleitungen beträgt:
N = (Zahl der Codeworte in Gruppe A) *
(Zahl der Codeworte in Gruppe B) (2)
Die Zahl der Extraausgabeleitungen beträgt:
log₂ (Zahl der Elemente in der Gruppe B+1) (3)
Wenn dieses Ergebnis keine ganze Zahl darstellt, sollte es zur nächst größeren ganzen Zahl hin aufgerundet werden.
Aus den vorhergehenden Gleichungen geht hervor, daß die vor­ liegende Erfindung besonders geeignet ist für diejenigen Systeme, die sehr kurze Codeworte besitzen und bei denen die Wahrscheinlichkeitsverteilung der Codeworte ungleich ist. In einem solchen Fall ist die Geschwindigkeitserhöhung beim Dekodieren hoch, während die Größe an erforderlicher zusätz­ licher Hardware auf eine vernünftige Basis gestellt ist.
Im Gegensatz dazu entspricht in einem System, das in jedem Zyklus zwei Codeworte dekodiert, die Zahl der im PLA-Bau­ stein erforderlichen Produktleitungen dem Quadrat der Zahl der Symbole. Für ein Kodierungssystem mit mehr als 30 Symbolen ist dies nicht nur verschwenderisch, sondern auch physikalisch unmöglich.
Die Erfindung wird nachfolgend anhand von Ausführungsbei­ spielen in Verbindung mit der Zeichnung im einzelnen erläu­ tert. Es zeigen:
Fig. 1 einen Huffman-Baum;
Fig. 2 einen Paralleldekodierer für Codes verän­ derlicher Länge;
Fig. 3 einen PLA-Baustein zur Verwendung im De­ kodierer der Fig. 2;
Fig. 4 einen Code veränderlicher Länge, der un­ ter Verwendung des PLA-Bausteins der Fig. 3 dekodiert wird; die
Fig. 5 und 6 PLA-Bausteine zum Modifizieren des Deko­ dierers der Fig. 2 zum Dekodieren von mehr als einem Codewort in einem Zyklus gemäß der vorliegenden Erfindung;
Fig. 7 eine bit-Zuordnungstabelle eines zweidi­ mensionalen Huffman-Codes;
Fig. 8A einen herkömmlichen HDTV-Dekodierer, der einen seriellen Dekodierer für Codes ver­ änderlicher Länge und einen Lauflängen­ dekodierer aufweist;
Fig. 8B einen herkömmlichen HDTV-Dekodierer, der einen Paralleldekodierer für Codes verän­ derlicher Länge und einen Lauflängendeko­ dierer aufweist; und die
Fig. 9A und 9B einen HDTV-Dekodierer, der einen Dekodie­ rer für Codes veränderlicher Länge und einen Lauflängendekodierer gemäß der vor­ liegenden Erfindung besitzt.
Ein Ausführungsbeispiel eines PLA-Bausteines, der zusammen mit dem Dekodierer 10 der Fig. 2 zum Dekodieren von mehr als einem Codewort in einigen Zyklen verwendet werden kann, ist in Fig. 5 dargestellt.
Für den Code der Fig. 4 können die beiden aufeinanderfol­ genden Codeworte unter Verwendung des PLA-Bausteins 30′ gemäß Fig. 5 in einem Zyklus dekodiert werden, wenn das ankommende Codewort 0 oder 100 und das nächste Codewort 0 ist. Somit umfaßt bei diesem Ausführungsbeispiel Gruppe A die Codeworte 0 und 100 und Gruppe B das Codewort 0. Mit anderen Worten, wenn der ankommende Bitstrom zum Dekodierer 00 oder 1000 beträgt, gibt die Längen-ODER-Ebene 34 die Gesamtlänge der beiden Codes aus.
Um dies zu erreichen, besitzt der PLA-Baustein 30′ der Fig. 5 zwei Extraproduktleitungen, die mit 40′ und 40′′ bezeichnet sind, um das Vorhandensein der Codewortkombina­ tionen 00 und 1000 zu erfassen. Wie vorstehend in Gleichung (2) angedeutet, wird die Zahl der Extraproduktleitungen durch Multiplizieren der Zahl der Elemente in der Gruppe A mit der Zahl der Elemente der Gruppe B ermittelt.
Der PLA-Baustein 30′ besitzt ferner die Extraausgabelei­ tung 60 mit zugehörigem Inverter 61 in der Dekodierer-ODER- Ebene 36. Wie vorstehend in Gleichung (3) angegeben, wird die Zahl der Extraausgabeleitungen durch log2 (Zahl der Ele­ mente in der Gruppe B+1) = log2 (1+1) = 1 wiedergegeben. Die Extraausgabeleitung 60 wird durch die Produktleitung 40′ über den ODER-Ebenentransistor 62 aktiviert, wenn die Kombi­ nation 00 detektiert wird. Die Extraausgabeleitung 60 wird ebenfalls durch die Produktleitung 40′′ über den ODER- Ebenentransistor 64 aktiviert, wenn die Kombination 1000 de­ tektiert wird. Somit zeigt der beispielhafte PLA-Baustein 30′ in Fig. 5 bei einem niedrigen Pegel der Ausgabeleitung 60 an, daß nur ein Codewort dekodiert worden ist. Wenn die Extraausgabeleitung 60 andererseits einen hohen Pegel be­ sitzt, zeigt er an, daß eine Kombination von einem der Code­ worte 0 oder 100 und dem Codewort 0 detektiert worden ist. Die Binärdarstellung des dekodierten ersten Codewortess (0 oder 100) erscheint auf den Ausgabeleitungen 57. Wenn der Pegel der Extraausgabeleitung 60 hoch ist, bedeutet dies, daß die Binärdarstellung des dekodierten zweiten Codewortes, d. h. 000, die Binärdarstellung von 0, nach der Binärdarstel­ lung des dekodierten ersten Codewortes auf den Leitungen 57 eingesetzt werden muß. Das kann unter Verwendung der Prozes­ sorschaltung 70 der Fig. 5 durchgeführt werden. Da die Aus­ gabe des modifizierten PLA-Bausteins 30′ der Fig. 5 eine feste Länge besitzt, wird die Prozessorschaltung 70 nicht zum Flaschenhals des Dekodierers.
Der PLA-Baustein 30′ gibt die Länge des dekodierten Codewor­ tes oder der Codeworte von der Längen-ODER-Ebene 34 aus. Die Länge wird über Leitungen 47 durch Verwendung der Inverter 45 und NOR-Glieder 46 ausgegeben. Die Aufgabe der NOR-Glie­ der 46 besteht darin, die Ausgabe der Längen-ODER-Ebene 34 so zu steuern, daß beim Dekodieren von zwei Codeworten in einem Zyklus die Originallängenausgabe des ersten Codewortes maskiert wird, wenn die Gesamtlänge dieser beiden Codeworte ausgegeben wird.
Das vorstehende Ausführungsbeispiel kann wie folgt zusammen­ gefaßt werden: ein erstes und zweites Codewort können in ei­ nem Zyklus dekodiert werden, wenn das erste Codewort zur Gruppe A gehört, die aus 0 und 100 besteht, und das zweite Codewort zur Gruppe B gehört, die aus 0 besteht (aus Fig. 4 kann man erkennen, daß die Kombination eines jeden Codewor­ tes aus der Gruppe A mit dem Codewort der Gruppe B eine Länge besitzt, die geringer ist als die Länge des längsten Codewortes im System oder dieser entspricht).
Die Wahrscheinlichkeit P, daß zwei Codes in einem Zyklus deko­ diert werden, beträgt
P = (Summe der Wahrscheinlichkeiten der Codeworte in Gruppe A)
x (Summe der Wahrscheinlichkeiten der Codeworte in Gruppe B) = (0,5 + 0,15) (0,5) = 0,325.
Somit werden in nahezu einer Ausgabe von jeden drei Zyklen zwei Codeworte dekodiert. Dies führt zu einem beträchtlichen Anstieg der Geschwindigkeit des Systems, der nur mit einem relativ geringen Anstieg des Hardwareaufwandes verbunden ist.
Es können logische Minimierungstechniken Verwendung finden, um die Zahl der Extraproduktleitungen in einem PLA-Baustein auf eine Zahl zu reduzieren, die unter der liegt, die durch die vorstehend genannte Gleichung (2) vorgegeben wird. Wenn beispielsweise die Elemente in der Gruppe A die Codeworte 100 und 101 sind (siehe Fig. 4) und das Element der Gruppe B das Codewort 0 ist (siehe Fig. 4), dann kann ein PLA-Baustein im Dekodierer Verwendung finden, der in Fig. 6 dargestellt ist. Insbesondere kann der PLA-Baustein 30′′ der Fig. 6 mit zwei Extraproduktleitungen 40′ und 40′′ verwirk­ licht werden, die den Kombinationen 1000 und 1010 ent­ sprechen, oder mit einer Extraproduktleitung 40′′′, die 10 x 0 entspricht, wobei x ein "Don′t care"-Element ist. Der Grund dafür, daß die beiden Kombinationen unter Verwendung einer einzigen Produktleitung detektiert werden können, be­ steht darin, daß die ODER-Ebenen-Teile der beiden Pro­ duktleitungen 40′ und 40′′ die gleichen sind. Kurz gesagt, durch logische Minimierungstechniken kann die Zahl der in den PLA-Bausteinen der vorliegenden Erfindung erforderlichen Extraproduktleitungen beträchtlich reduziert werden.
In modernen Videosystemen, Übertragungssystemen von fest­ stehenden Bildern oder Verarbeitungssystemen wird die Kodie­ rung veränderlicher Länge (VLC) in Kombination mit der dis­ kreten Cosinustransformation (DCT), Bewegungskompensation und Lauflängenkodierung (RLC) eingesetzt. Die Koeffizienten der DCT werden quantisiert, so daß eine hohe Wahrscheinlich­ keit für das Auftreten von Nullen besteht. Danach wird die RLC angewendet, um einen Strom von kontinuierlichen Nullen durch seine Länge darzustellen, mit dem die Datenrate stark reduziert werden kann. Als letzte Stufe des Kodierungspro­ zesses nimmt die VLC-Stufe die Daten von der RLC-Stufe für eine weitere Kompression an.
Fig. 7 zeigt ein Ausführungsbeispiel einer bit-Zuordnungs­ tabelle eines zweidimensionalen Huffman-Codes für die DCT- Koeffizienten eines 8×8 Blocks von Bildpunkten. Die Koef­ fizienten eines jeden 8×8 Blocks werden vor der Huffman- Kodierung zickzackförmig abgetastet. Da ein großer Teil der quantisierten DCT-Koeffizienten durch Nullen gebildet ist, werden nur diejenigen DCT-Koeffizienten huffmankodiert, die nicht 0 sind. Mit anderen Worten, jedes Huffman-Codewort ent­ hält zwei Arten von Informationen: die Amplitude gibt die Amplitude eines Koeffizienten, der nicht 0 ist, wieder, und die Lauflänge gibt die Lauflänge der diesem Koeffizienten vorhergehenden Nullen wieder. Die Eingangsposten der Tabelle der Fig. 7 geben die Zahl der bits wieder, die auf die ent­ sprechenden Huffman-Codeworte übertragen wurden. Sie umfas­ sen kein Zeichen-bit, das in jedem Codewort enthalten sein muß. Beispielsweise beträgt der Eingangsposten, der der Amplitude 2 und der Lauflänge 6 entspricht, 11. Das bedeu­ tet, daß die DCT-Koeffizienten von sechs aufeinanderfolgen­ den Nullen gefolgt von einer 2 (oder - 2) in ein 11 bit Huffman-Codewort kodiert werden.
Zusätzlich zu den in der Tabelle der Fig. 7 enthaltenen 256 Codeworten gibt es ein spezielles 2-bit Codewort, das als Blockende bezeichnet und dazu verwendet wird, sämtliche Nullen am Ende eines DCT-Blocks darzustellen. Ein weiteres spezielles Codewort wird verwendet, wenn die Amplitude oder Lauflänge über dem Bereich der bit-Zuordnungstabelle liegt. Somit benötigt ein herkömmlicher PLA-Baustein, der zur Ver­ wirklichung eines Dekodierers veränderlicher Länge in ei­ ner derartigen Codetabelle verwendet wird, 258 Produktlei­ tungen.
Bei dem nachfolgenden Ausführungsbeispiel wird von der vor­ liegenden Erfindung Gebrauch gemacht.
Die Wahrscheinlichkeit eines n bit-Codewortes beträgt 2-n.
Die Gruppe A enthält sämtliche Codeworte mit einer Länge, die für insgesamt 9 Elemente geringer ist als 5 bits oder so groß ist wie 5 bits.
Die Gruppe B enthält sämtliche Codeworte mit einer Länge, die für insgesamt 3 Elemente geringer ist als 3 bits oder 3 bits entspricht.
Die vorliegende Erfindung kann verwendet werden, um einen PLA-Baustein zu modifizieren, der einen Dekodierer veränder­ licher Länge verwirklicht, so daß Kombinationen von Codewor­ ten, die ein Codewort der Gruppe A und ein Codewort der Gruppe B enthalten, gleichzeitig detektiert und dekodiert werden können.
Von Bedeutung ist, daß sämtliche Elemente der Gruppe A mit Ausnahme des Blockende-Codewortes ein Zeichen-bit aufweisen müssen. Daher beträgt die Zahl der gemäß Gleichung (2) benö­ tigten Extraproduktleitungen
(1+(8*2))*3=51.
Durch Durchführung einer logischen Minimierung bei den Extraproduktleitungen können die den Codeworten der Länge 5 in der Gruppe A entsprechenden Produktleitungen von 24 auf 6 reduziert werden. Die in den Codeworten der Länge 4 in Gruppe A entsprechenden Produktleitungen können von 12 auf 6 reduziert werden. Somit kann die Gesamtzahl der Extrapro­ duktleitung von 51 auf 27 herabgesetzt werden.
Gemäß der vorstehend wiedergegebenen Gleichung (3) beträgt die Zahl der erforderlichen Extraausgabeleitungen
log2(3+1)=2.
Gemäß den vorstehend wiedergegebenen Gleichungen (1) beträgt die Wahrscheinlichkeit der Dekodierung von zwei Codes in einem Zyklus
(2*2-2+2-3+2*2-4+4*2-5) (2*2-2+2-3)=0,547.
Somit werden in mehr als der Hälfte der Dekodierzyklen zwei Codeworte detektiert und dekodiert. Daher ist die vorlie­ gende Erfindung für Hochgeschwindigkeitsvideo-Anwendungs­ fälle oder Anwendungsfälle mit feststehenden Bildern äußerst geeignet.
Ein Vorteil, der mit dem Hochgeschwindigkeits-Parallel-VLC- Dekodierer der vorliegenden Erfindung erzielt werden kann, soll in Verbindung mit den Fig. 8A, 8B, 9A und 9B erläu­ tert werden.
Wie vorstehend angegeben, kann ein HDTV-Signal kodiert wer­ den, indem man zuerst die diskrete Cosinustransformation (DCT) eines Blocks von Bildpunkten, beispielsweise von 8×8 Blöcken von Bildpunkten, erhält. Die DCT-Koeffizienten können dann zickzackförmig abgetastet werden, wonach eine Lauflängenkodierung und dann eine Kodierung veränderlicher Länge, beispielsweise eine Huffman-Kodierung folgt. Ein De­ kodierer für ein auf diese Weise kodiertes HDTV-Signal um­ faßt einen Dekodierer veränderlicher Länge (VLD), einen Lauflängendekodierer (RLD) und einen Prozessor, der von der inversen DCT Gebrauch macht.
Bei dem HDTV-Dekodierer werden in den VLD die Codeworte mit veränderlicher Länge eingegeben. Vom VLD werden Codeworte mit fester Länge ausgegeben, die zwei Informationsteile ent­ halten: eine Lauflänge von Nullen und die Amplitude eines DCT-Koeffizienten, der ungleich 0 ist. Der Lauflängendeko­ dierer empfängt die Codeworte fester Längen. Nach dem Empfang eines eingegebenen Codewortes, wenn die Lauflänge ungleich 0 ist, benötigt der Lauflängendekodierer (Lauflänge +1) Taktzyklen, um die entsprechende Zahl von Nullen auszu­ geben, wonach ein DCT-Koeffizient folgt, der ungleich 0 ist. Vorzugsweise besitzt der Lauflängendekodierer einen Eingang mit einer Burst-Rate von 70 MHz und einen Ausgang, der zum Systemtakt mit einer Smooth-Rate von beispielsweise 70 MHz synchron ist, was für ein HDTV-System typisch ist. Die Schaltung zum Erhalten der inversen DCT empfängt die DCT- Koeffizienten von einem Block von Bildpunkten und rekon­ struiert den Bildpunktblock.
Fig. 8A zeigt einen herkömmlichen HDTV-Dekodierer 100, bei dem das kodierte HDTV-Signal am Hauptpuffer 120 empfangen wird. Die Codeworte mit veränderlicher Länge werden dann vom seriellen VLD 140 in Codeworte fester Länge dekodiert. Ein Nebenpuffer 160 wird zwischen dem seriellen VLD 140 und dem Lauflängendekodierer 180 verwendet, da der serielle VLD 140 ziemlich langsam ist und die Burst-Eingabegeschwindigkeit von 70 MHz des Lauflängendekodierers 180 nicht erreichen kann. Das glatte Ausgabesignal des RLD 180 wird an die Schaltung 200 gelegt, um die inverse DCT zu erhalten.
Fig. 8B zeigt den herkömmlich ausgebildeten HDTV-Dekodierer 100′ in demjenigen Fall, bei dem ein Parallel-VLD-Dekodierer anstelle des seriellen VLD wie im Fall der Fig. 8A verwen­ det wird. Somit umfaßt der HDTV-Dekodierer 100′ anstelle des seriellen VLD 140 den Parallel-VLD 140′. Der Parallel-VLD 140′ ist ein herkömmlich ausgebildeter Parallel-VLD, der nur ein Wort pro Zyklus dekodiert. In diesem Fall empfängt der Lauflängendekodierer 180 Codeworte fester Länge direkt vom Parallel-VLD 140′. Wie vorstehend angedeutet, ist die Aus­ gabe des Lauflängendekodierers synchron zum Systemtakt mit einer glatten Ausgaberate, die typisch für ein HDTV-System ist, wie beispielsweise 70 MHz. Nach dem Empfang eines ein­ gegebenen Codewortes, dessen Lauflänge sich von 0 unter­ scheidet, benötigt der Lauflängendekodierer (Lauflänge + 1) Zyklen, um die entsprechende Zahl von Nullen auszugeben, wo­ nach ein Lauflängen-Null-DCT-Koeffizient folgt. In der Zwischenzeit hat der Lauflängendekodierer 180 ein STOP- Signal an die Leitung 150 abgegeben, um den Parallel-VLD 140′ auszusetzen, bis die letzte 0 ausgegeben worden ist. Wenn jedoch die Lauflänge gleich 0 ist, bedeutet dies, daß auf­ einanderfolgende Koeffizienten ungleich 0 sind, daß das STOP-Signal nicht aktiviert wird und der Parallel-VLD 140′ mit der Burst-Eingaberate des RLD arbeiten muß, die beispielsweise 70 MHz betragen kann. Da in einem typischen HDTV-System eine Menge von Null-DCT-Koeffizienten vorhanden ist, liegt die Durchschnittsfrequenz des Parallel-VLD nur in einem Bereich von 5 MHz.
Ein Problem mit dem HDTV-Dekodierer 100′ der Fig. 8B be­ steht darin, daß ein Parallel-VLD 140′, der mit einer Burst- Rate von 70 MHz arbeiten kann, mit der heutzutage zur Verfü­ gung stehenden Technik nur sehr schwierig zu verwirklichen ist.
Dieses Problem kann mit Hilfe der vorliegenden Erfindung ge­ löst werden, indem man den in Fig. 9A gezeigten HDTV-Deko­ dierer 100′′ einsetzt. Bei diesem Dekodierer 100′ ist der Nebenpuffer 260 zwischen den Parallel-VLD 140′ und den Lauflängendekoder 180 gesetzt. Die Aufgabe des Neben- oder Unterpuffers besteht darin, die Geschwindigkeitsdifferenz zwischen der Burst-Rate (d. h. 70 MHz) und der Durchschnitts­ frequenz (d. h. 5 MHz) des Parallel-VLD 140′ zu regulieren. Wenn der Nebenpuffer 260 verwendet wird, läuft der Parallel­ dekodierer 140′ mit einer Zwischengeschwindigkeit zwischen der Durchschnittsgeschwindigkeit und der Burst-Geschwindig­ keit, die beispielsweise 35 MHz beträgt. In diesem Fall läuft sowohl die Eingabe als auch die Ausgabe des VLD-Dekodierers mit dieser Zwischengeschwindigkeit. Wenn bei dem HDTV-Deko­ dierer 100′′ der Fig. 9A der Nebenpuffer 260 voll ist, wird ein STOP-Signal an den Parallel-VLD gelegt, und der Betrieb des VLD wird ausgesetzt. Je höher die Geschwindigkeit des VLD 140′ beim HDTV-Dekodierer 100′′ der Fig. 9A ist, desto geringer ist die erforderliche Größe des Nebenpuffers 260.
Der HDTV-Dekodierer 100′′ der Fig. 9A kann modifiziert wer­ den, so daß anstelle eines herkömmlichen Parallel-VLD 140′, der ein Codewort pro Zyklus dekodiert, ein modifizierter Parallel-VLD eingesetzt wird, der mehr als ein Codewort in einem Zyklus dekodieren kann. Dieser modifizierte HDTV-Deko­ dierer 100′′′, der den modifizierten Parallel-VLD 140′′ ver­ wendet, ist in Fig. 9B dargestellt.
Die Fig. 9A und 9B zeigen die Wichtigkeit eines Parallel- VLD, der mehr als ein Codewort veränderlicher Länge in einem Zyklus gemäß der vorliegenden Erfindung dekodieren kann. Bei dem HDTV-Dekodierer 100′′ der Fig. 9A kann der herkömmlich ausgebildete Parallel-VLD-Dekodierer 140′ nur ein Wort pro Zyklus dekodieren, und der Nebenpuffer 260 besitzt eine Größe von 20-30 kbytes für das typische HDTV-System. Im Ge­ gensatz hierzu kann beim HDTV-Dekodierer 100′′′ der Fig. 9B der Parallel-VLD-Dekodierer 140′ mehr als ein Codewort im gleichen Zyklus gemäß der vorliegenden Erfindung dekodieren. In diesem Fall muß der Nebenpuffer 260 nur eine Kapazität im Bereich von 100 bytes für ein typisches HDTV-System besitzen. Somit können bei dem HDTV-Dekodierer der Fig. 9A der modi­ fizierte Parallel-VLD 140′′ und der kleine Nebenpuffer 260 in eine einzige integrierte Schaltung 300 integriert werden.

Claims (12)

1. Programmierbare Logikanordnung in einem Dekodierer zum Dekodieren eines Eingabedatenstromes, der sich aus Codewor­ ten mit veränderlicher Länge zusammensetzt, die Buchstaben­ symbole kodieren und deren Wahrscheinlichkeit des Auftretens sich umgekehrt zur Codewortlänge ändert, mit einer Vielzahl von Produktleitungen (40′, 40′′, 40′′′) mit je einer Produktleitung für jedes der Codeworte veränderlicher Länge, und einer oder mehreren zu­ sätzlichen Produktleitungen, die einer oder mehreren vorge­ gebenen Kombinationen der Codeworte veränderlicher Länge entsprechen, wobei die Länge einer jeden Kombination der Codeworte veränderlicher Länge geringer ist als die Länge des längsten Codewortes mit veränderlicher Länge oder dieser entspricht, einer Vielzahl von Eingabeleitungen, deren Zahl mindestens dem längsten der Codeworte mit veränderlicher Länge ent­ spricht, um einen Satz von Eingabe-bits vom Bitstrom zu empfangen und eine spezielle Produktleitung zu aktivieren, die einem Codewort oder einer Kombination von Codeworten entspricht, die in dem Satz der bits enthalten sind, und einer Vielzahl von Ausgabeleitungen (60), die durch die spezielle Produktleitung aktiviert werden, um Daten von einem oder mehreren Symbolen auszugeben, die durch das Codewort mit veränderlicher Länge oder eine Kombination von Codeworten veränderlicher Länge, die der speziellen Pro­ duktleitung entspricht, kodiert wurden.
2. Logikanordnung nach Anspruch 1, dadurch ge­ kennzeichnet, daß die Vielzahl der Ausgabe­ leitungen (60) einen ersten Satz von Ausgabeleitungen zum Ausgeben von Daten, die eines der Symbole darstellen, und mindestens eine Extraausgabeleitung umfaßt, die aktiviert wird, wenn die spezielle Produktleitung einer Kombination von Codeworten entspricht.
3. Logikanordnung nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß sie (PLA 30′) eine zweite Vielzahl von Ausgabeleitungen umfaßt, die von der speziellen Produktleitung aktiviert werden, um Daten auszu­ geben, die die Länge des Codewortes oder von Kombinationen von Codeworten entsprechend der speziellen Produktleitung darstellen.
4. Logikanordnung nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, daß die Zahl der zusätzlichen Produktleitungen geringer ist als die Zahl der vorgegebenen Kombinationen von Codeworten veränderlicher Länge oder dieser entspricht.
5. Verfahren zum Dekodieren eines aus einem Satz von Code­ worten, deren Wahrscheinlichkeit des Auftretens sich umge­ kehrt zur Länge ändert, bestehenden bit-Stromes, mit folgenden Schritten:
Anlegen eines Satzes von bits von dem bit-Strom, dessen Länge mindestens dem längsten Codewort entspricht, an eine programmierbare Logikanordnung in jedem aus einer Vielzahl von aufeinanderfolgenden Dekodierzyklen,
Aktivieren einer Produktleitung in der programmierbaren Logikanordnung in Abhän­ gigkeit vom Satz der bits, die einem der Codeworte veränderlicher Länge entspricht, oder einer Kombination von mehr als einem der Codeworte veränderlicher Länge entspricht, wobei diese Kombination eine Länge be­ sitzt, die geringer ist als die Länge des längsten Codewor­ tes oder dieser entspricht, und Ausgeben von Daten von der programmierbaren Logikanordnung, die die Länge des einen Codewortes oder die Länge der Kombina­ tion der Codeworte anzeigen, und von Daten, die ein Symbol, das durch das eine Codewort kodiert worden ist, oder eine Kombination von Symbolen, die durch die Kombination der Codeworte kodiert worden ist, repräsentieren.
6. Dekodierer zum Dekodieren eines bit-Stromes, der aus Codeworten veränderlicher Länge besteht, von denen jedes ein Symbol kodiert, mit einer Speichervorrichtung und einem Barrel Shifter (16) zum Anlegen eines Satzes von bits aus dem Bit-Strom an die Speichervorrichtung in jedem einer Vielzahl von aufeinanderfolgenden Dekodierzyklen, wobei die Speichervorrichtung umfaßt:
erste Einrichtungen zum Detektieren eines der Codeworte veränderlicher Länge oder einer aus einer Vielzahl von vorgegebenen Kombinationen von mehr als einem der Codeworte veränderlicher Länge in jedem Satz von bits, wobei jede vorge­ gebene Kombination eine Länge besitzt, die geringer ist als das längste Codewort mit veränderlicher Länge oder diesem entspricht,
zweite Einrichtungen zum Speichern der Längen der Codeworte veränderlicher Länge und der Kombinationen und zum Ausgeben von Daten, die die Länge des einen Codewortes oder der einen Kombination von Codeworten, die von den ersten Einrichtungen detektiert worden sind, angeben, und
dritte Einrichtungen zum Speichern von Daten, die die durch die Codeworte und die Kombinationen kodierten Symbole wie­ dergeben zum Ausgeben von Daten, die ein Symbol wieder­ geben, das durch das eine Codewort kodiert worden ist, oder die eine Kombination von Symbolen wiedergeben, die durch die eine von den ersten Einrichtungen detektierte Kombination kodiert worden ist,
wobei der Dekodierer des weiteren einen Eingabepuffer (14) aufweist, der an den Barrel-Shifter (16) zum Speichern des bit-Stromes angeschlossen ist, und
Rückführeinrichtungen zum Zurückführen der von den zweiten Einrichtungen ausgegebenen Daten in jedem Zyklus zum Barrel-Shifter (16), um den Barrel-Shifter (16) eine Anzahl von bits zu verschieben, die der Länge des detektierten Wor­ tes oder der detektierten Kombination entspricht, und um vom Eingabepuffer (14) eine gleiche Zahl von bits in den Barrel- Shifter (16) einzushiften.
7. Dekodierer nach Anspruch 6, dadurch ge­ kennzeichnet, daß die Speichereinrichtungen eine programmierbare Logikanordnung (PLA 30′) umfassen und daß die ersten Einrichtungen eine UND-Ebene (32) sind.
8. Dekodierer nach Anspruch 7, dadurch ge­ kennzeichnet, daß die zweiten Einrichtungen eine ODER-Ebene (34) der programmierbaren Logikanordnung um­ fassen.
9. Dekodierer nach Anspruch 8, dadurch ge­ kennzeichnet, daß die dritten Einrichtungen eine zusätzliche ODER-Ebene (36) der programmierbaren Logikanordnung umfassen.
10. Dekodierer nach einem der Ansprüche 6 bis 9, dadurch gekennzeichnet, daß die dritten Einrichtungen in jedem Zyklus ein Symbol ausgeben, das durch eines der Codeworte kodiert worden ist, und eine Anzeige, wenn die ersten Einrichtungen eine Kombination detektieren.
11. Dekodierer nach einem der Ansprüche 6 bis 10, dadurch gekennzeichnet, daß die von den dritten Einrichtungen ausgegebenen Daten, die eine Kom­ bination von Codeworten wiedergeben, welche von den ersten Einrichtungen detektiert worden ist, ein erstes Symbol, das durch das eine Codewort kodiert worden ist, und eine Anzeige umfassen, daß ein zweites, durch ein zweites Codewort ko­ diertes Symbol mit dem ersten Symbol verkettet werden muß.
12. Dekodierer nach einem der Ansprüche 6 bis 11, dadurch gekennzeichnet, daß ein Aus­ gang des Dekodierers an einen Nebenpuffer (260) und ein Aus­ gang des Nebenpuffers (260) an einen Laufdekodierer (180) angeschlossen ist.
DE4217009A 1992-02-13 1992-05-22 Hochgeschwindigkeitsdekodierer für Codes veränderlicher Länge Expired - Lifetime DE4217009C1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/836,076 US5225832A (en) 1992-02-13 1992-02-13 High speed variable length decoder

Publications (1)

Publication Number Publication Date
DE4217009C1 true DE4217009C1 (de) 1993-09-30

Family

ID=25271178

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4217009A Expired - Lifetime DE4217009C1 (de) 1992-02-13 1992-05-22 Hochgeschwindigkeitsdekodierer für Codes veränderlicher Länge

Country Status (3)

Country Link
US (1) US5225832A (de)
JP (1) JP3007496B2 (de)
DE (1) DE4217009C1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4446072A1 (de) * 1993-12-23 1995-06-29 Ricoh Kk Verfahren und Einrichtung zum parallelen Codieren und Decodieren von Daten

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3123792B2 (ja) * 1991-11-05 2001-01-15 株式会社リコー 算術符号を用いる符号化装置および復号化装置
US5280349A (en) * 1992-02-13 1994-01-18 Industrial Technology Research Institute HDTV decoder
US6067417A (en) 1992-06-30 2000-05-23 Discovision Associates Picture start token
US5603012A (en) 1992-06-30 1997-02-11 Discovision Associates Start code detector
US6079009A (en) 1992-06-30 2000-06-20 Discovision Associates Coding standard token in a system compromising a plurality of pipeline stages
US6330665B1 (en) 1992-06-30 2001-12-11 Discovision Associates Video parser
US5363097A (en) * 1992-09-14 1994-11-08 Industrial Technology Research Institute Direct sequential-bit variable length decoder
US5400075A (en) * 1993-01-13 1995-03-21 Thomson Consumer Electronics, Inc. Adaptive variable length encoder/decoder
US5717394A (en) * 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
US5491480A (en) * 1994-05-25 1996-02-13 Industrial Technology Research Institute Variable length decoder using serial and parallel processing
US6217234B1 (en) 1994-07-29 2001-04-17 Discovision Associates Apparatus and method for processing data with an arithmetic unit
US5712806A (en) * 1995-10-30 1998-01-27 International Business Machines Corporation Optimized multiplexer structure for emulation systems
US5663725A (en) * 1995-11-08 1997-09-02 Industrial Technology Research Institute VLC decoder with sign bit masking
US5767799A (en) * 1995-12-05 1998-06-16 Mitsubishi Semiconductor America, Inc. Low power high speed MPEG video variable length decoder
US5686915A (en) * 1995-12-27 1997-11-11 Xerox Corporation Interleaved Huffman encoding and decoding method
US5835035A (en) * 1995-12-28 1998-11-10 Philips Electronics North America Corporation High performance variable length decoder with two-word bit stream segmentation and related method
JP3304745B2 (ja) * 1996-03-11 2002-07-22 富士ゼロックス株式会社 可変長符号復号化器
US5841380A (en) * 1996-03-29 1998-11-24 Matsushita Electric Corporation Of America Variable length decoder and method for decoding two codes per clock cycle
JP3371677B2 (ja) * 1996-04-09 2003-01-27 富士ゼロックス株式会社 可変長復号化装置
JP3235555B2 (ja) 1997-05-14 2001-12-04 日本電気株式会社 信号復号装置及び信号復号方法並びに信号復号処理をコンピュータに行わせるためのプログラムを記録した記録媒体
US6215424B1 (en) 1998-12-16 2001-04-10 Thomson Licensing S.A. System for variable length codeword processing suitable for video and other applications
US6414608B1 (en) 1999-06-09 2002-07-02 Matsushita Electric Industrial Co., Ltd. Variable length code decoding device, digital broadcast receiving apparatus, and DVD reproducing apparatus
US6801668B2 (en) * 2000-12-20 2004-10-05 Telefonaktiebolaget Lm Ericsson (Publ) Method of compressing data by use of self-prefixed universal variable length code
WO2002078355A1 (en) * 2001-03-23 2002-10-03 Nokia Corporation Variable length coding
US6956511B2 (en) * 2004-01-06 2005-10-18 Sharp Laboratories Of America, Inc. Multi-symbol/coefficient decode operation for Huffman codes
JP4455242B2 (ja) * 2004-09-15 2010-04-21 株式会社東芝 復号化回路
US8311111B2 (en) 2008-09-11 2012-11-13 Google Inc. System and method for decoding using parallel processing
US20110149338A1 (en) * 2009-12-22 2011-06-23 Holley Michael J Parallel decode for run length limited encoded datastreams
US9100657B1 (en) 2011-12-07 2015-08-04 Google Inc. Encoding time management in parallel real-time video encoding
US9794574B2 (en) 2016-01-11 2017-10-17 Google Inc. Adaptive tile data size coding for video and image compression
US10542258B2 (en) 2016-01-25 2020-01-21 Google Llc Tile copying for video compression

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4853696A (en) * 1987-04-13 1989-08-01 University Of Central Florida Code converter for data compression/decompression

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4177456A (en) * 1977-02-10 1979-12-04 Hitachi, Ltd. Decoder for variable-length codes
JP2766302B2 (ja) * 1989-04-06 1998-06-18 株式会社東芝 可変長符号並列解読方法および装置
US5055841A (en) * 1991-02-01 1991-10-08 Bell Communications Research, Inc. High-speed feedforward variable word length decoder

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4853696A (en) * 1987-04-13 1989-08-01 University Of Central Florida Code converter for data compression/decompression

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
MUKHERJEE, A. et al.: Efficient VLSI Design for Data Transformation of Tree-Based Codes. In: IEEE Transactions on Circuits and System, 1991, Nr. 3, S. 306-314 *
PEAKE, J.W.: Decompaction. In: IBM Technical Disclosure Bulletin, Feb. 1984, Nr. 9, S. 4794-4797 *
SUN, M.-T. u. LEI, S.-M.: A Parallel Variable - Length-Code Decoder for Advanced Television Applications. In: Proceedings of the third HOTV-Signal Processing Workshop, Italien Aug. 1989 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4446072A1 (de) * 1993-12-23 1995-06-29 Ricoh Kk Verfahren und Einrichtung zum parallelen Codieren und Decodieren von Daten

Also Published As

Publication number Publication date
US5225832A (en) 1993-07-06
JP3007496B2 (ja) 2000-02-07
JPH07212242A (ja) 1995-08-11

Similar Documents

Publication Publication Date Title
DE4217009C1 (de) Hochgeschwindigkeitsdekodierer für Codes veränderlicher Länge
DE4217008C2 (de) HDTV-Dekodierer
EP0260748B1 (de) Verfahren und Schaltungsanordung zur Bitratenreduktion
DE69535569T2 (de) Verfahren zur Synchronisationsrückgewinnung und Vorrichtung zur variablen Längendekodierung
DE19506164C2 (de) Verfahren zum Komprimieren eingegebener Symbole in Codeworte
DE4314741C2 (de) Dekodierer für Einheiten von Huffman-kodierten Daten
DE2640414C2 (de) Schaltungsanordnung ung Verfahren für die Kompressionscodierung unter Verwendung einer Korrelation zwischen zweidimensionalen, aus zweiwertigen digitalen Bildern abgeleiteten Matrizen
DE69637067T2 (de) System zur variablen Längendekodierung
EP1797536B1 (de) Codierschema für einen ein zeitlich veraenderliches graphikmodell darstellenden datenstrom
DE2204766C2 (de) Codeumsetzer für Datenverarbeitungssysteme
DE10196890B4 (de) Verfahren zum Ausführen einer Huffman-Decodierung
DE2264090B2 (de) Datenverdichtung
DE2735319A1 (de) Schaltungsanordnung zur zusammenhaengenden codierung von zeichen und zur zeichendecodierung der ursprungszeichen
DE4429017A1 (de) Verfahren zum Codieren von Daten in einem Datenkompressionssystem, Kompressions/Dekompressionsverfahren sowie Dekompressionssystem zum Dekomprimieren von komprimierten Daten
DE112012005164T5 (de) Verfahren und Vorrichtung für Context-Adaptive Binäre Arithmetische Codierung von Syntaxelementen
DE2340230A1 (de) Verfahren und vorrichtung zur vorhersage des signalpegelwertes eines nachrichtenelementes
EP1472888B1 (de) Kontextsensitive kodierung und dekodierung eines videodatenstroms
DE2900586C2 (de) Anordnung zum Decodieren von Codewörtern variabler Länge
DE60015755T2 (de) Verlustfreie adaptive codierung von daten eines endlichen alphabets
DE2500055C2 (de) Faksimile-uebertragungssystem
EP1323313B1 (de) Verfahren und anordnung zum übertragen eines vektors
DE3545106C2 (de)
DE2512541A1 (de) Einfuegung zusaetzlicher informationselemente in nachrichten und herausnahme solcher informationselemente aus nachrichten
DE3726601C2 (de)
EP0442096A2 (de) Einrichtung zur bandbreitenreduzierenden Codierung von Videosignalen

Legal Events

Date Code Title Description
8100 Publication of patent without earlier publication of application
D1 Grant (no unexamined application published) patent law 81
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: TRANSPACIFIC IP LTD., TAIPEH/T AI-PEI, TW

R071 Expiry of right
R071 Expiry of right