DE4217009C1 - Hochgeschwindigkeitsdekodierer für Codes veränderlicher Länge - Google Patents
Hochgeschwindigkeitsdekodierer für Codes veränderlicher LängeInfo
- 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
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
- H03M7/425—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory for the decoding process only
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)
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)
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)
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.
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.
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.
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.
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.
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)
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)
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)
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)
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 |
-
1992
- 1992-02-13 US US07/836,076 patent/US5225832A/en not_active Expired - Lifetime
- 1992-05-22 DE DE4217009A patent/DE4217009C1/de not_active Expired - Lifetime
- 1992-12-01 JP JP4322080A patent/JP3007496B2/ja not_active Expired - Lifetime
Patent Citations (1)
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)
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)
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 |