DE4322995C2 - Decoder und Decodierungsverfahren für Codes variabler Länge - Google Patents
Decoder und Decodierungsverfahren für Codes variabler LängeInfo
- Publication number
- DE4322995C2 DE4322995C2 DE19934322995 DE4322995A DE4322995C2 DE 4322995 C2 DE4322995 C2 DE 4322995C2 DE 19934322995 DE19934322995 DE 19934322995 DE 4322995 A DE4322995 A DE 4322995A DE 4322995 C2 DE4322995 C2 DE 4322995C2
- Authority
- DE
- Germany
- Prior art keywords
- variable length
- code
- codes
- bits
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Description
Die Erfindung betrifft einen Decoder und ein Decodierungsverfahren
für Codes variabler Länge.
Für eine Bildverarbeitung ist ein hocheffizientes Codierungssystem
für Bilder verwendet worden, um die Datenmenge unter Benutzung der
Redundanz von Bildsignalen zu komprimieren. Bei diesem
hocheffizienten Codierungssystem wird ein Codierungsvorgang mit
variabler Länge ausgeführt, um das Datenvolumen weiter zu
reduzieren. Die Codierung mit variabler Länge vermindert die
Gesamtcodemenge durch Zuweisen von Codes mit kurzen Datenlängen an
Eingabedaten, deren Erscheinungshäufigkeit stochastisch hoch ist,
und durch Zuweisen von Codes mit großen Datenlängen an Eingabedaten,
deren Erscheinungshäufigkeit stochastisch niedrig ist.
Fig. 17 zeigt die Struktur einer Vorrichtung zum Codieren von
Bilddaten, und Fig. 18 zeigt die Struktur einer Vorrichtung zum
Decodieren komprimierter Bilddaten.
Wie in Fig. 17 dargestellt ist, wendet eine DCT-
Verarbeitungsvorrichtung 100 (DCT=diskrete Cosinus-Transformation)
eine diskrete Cosinus-Transformation (DCT-Verarbeitung) auf
Bilddaten an, um einen DCT-Koeffizienten zu liefern. Der DCT-
Koeffizient entspricht einer räumlichen Frequenzkomponente des
Bildes. Diese DCT-Verarbeitung extrahiert eine räumliche Redundanz
der Bilddaten. Ein Quantisierer 200 quantisiert den DCT-
Koeffizienten, um einen Quantisierungsindex zu liefern, der aus
Daten fester Länge besteht. Dadurch wird die extrahierte Redundanz
entfernt. Ein Codierer 300 für variable Länge codiert den
Quantisierungsindex, der aus Daten fester Länge besteht, in die
Codes variabler Länge. Dadurch werden die komprimierten Bilddaten
erhalten.
Wie in Fig. 18 dargestellt ist, decodiert ein Decoder 400 für Codes
variabler Länge die komprimierten Daten, die durch Codes variabler
Länge dargestellt werden, in Daten fester Länge und stellt sie als
Quantisierungsindex bereit. Ein Umkehrquantisierer 500 führt mit dem
Quantisierungsindex eine inverse Quantisierung aus, um den DCT-
Koeffizienten zu liefern, der der räumlichen Frequenzkomponente des
Bildes entspricht. Eine Umkehr-DCT-Verarbeitungsvorrichtung 600
führt mit dem DCT-Koeffizienten eine orthogonale Transformation
(Umkehr-DCT-Verarbeitung) aus, um die Bilddaten zu reproduzieren.
Wie oben beschrieben worden ist, wird bei der Decodierung des Bildes
der Decoder 400 für Codes variabler Länge zur Decodierung der
komprimierten Daten, die von den Codes variabler Länge gebildet
werden, in den Quantisierungsindex, der von den Daten fester Länge
gebildet wird, verwendet.
Fig. 19 zeigt schematisch den Aufbau eines Decoders für
Codes variabler Länge. Dieser Decoder für Codes variabler Länge führt
die Decodierung mittels Tabellensuchens aus.
Eine Eingabeschaltung 10 für Codes variabler Länge empfängt seriell
einen Code variabler Länge über eine Signalleitung L1. Die
Eingabeschaltung 10 wandelt den Code variabler Länge, der seriell
zugeführt wird, in einen Code variabler Länge im Parallelformat um,
und legt den parallelen Code variabler Länge über eine Signalleitung
L2 an den Adreßeingabeanschluß A einer Decodierungstabelle 20 an.
Die Eingabeschaltung 10 legt ein Steuersignal CNT über eine
Signalleitung L5 an die Decodierungstabelle 20 an.
Die Decodierungstabelle 20 ist vom Steuersignal CNT abhängig, um den
Code variabler Länge zu decodieren und die Daten fester Länge über
ihren Ausgangsanschluß D an eine Signalleitung L3 abzugeben.
Gleichzeitig mit diesem Vorgang legt die Decodierungstabelle 20 die
Codelänge des Codes variabler Länge über eine Signalleitung L4 an
die Eingabeschaltung 10 für Codes variabler Länge an. Die
Signalleitung L2 weist eine Signalleitungsbreite entsprechend der
maximalen Codelänge der Codes variabler Länge auf.
Fig. 20 zeigt die Decodierungstabelle, die im Decoder für Codes
variabler Länge enthalten ist. Die Decodierungstabelle 20 weist
einen Tabellenspeicher 21 auf, der eine Korrespondenztabelle
speichert, wie sie in Fig. 21 dargestellt ist. Diese
Korrespondenztabelle stellt die Korrespondenz (Entsprechung)
zwischen den Codes variabler Länge, den Codes fester Länge und den
Codelängen der Codes variabler Länge dar. Die Daten fester Länge und
die Codelängen der entsprechenden Codes variabler Länge werden
allgemein als Codeinformation bezeichnet.
In der Praxis ist jeder Codeinformationsgegenstand, der die Daten
fester Länge und die Codelänge umfaßt, an der Adresse im Adreßraum
des Tabellenspeichers 21 gespeichert, die durch den entsprechenden
Code variabler Länge angegeben wird.
Beispielsweise werden an den Adressen "1XXXXXXXXXX" der Wert fester
Länge "0" und die Codelänge "1" und an den Adressen "011XXXXXXXX" der
Wert fester Länge "1" und die Codelänge "3" gespeichert. Hier
bedeutet "X" einen Wert "0" oder "1". An der Adresse "00000011000"
sind der Wert fester Länge "32" und die Codelänge "11" gespeichert.
Im Beispiel der Fig. 21 ist die maximale Codelänge der Code
variabler Länge gleich 11.
Der Tabellenspeicher von Fig. 20 empfängt die parallelen Codes
variabler Länge als Adreßsignal über die Signalleitung L2 mit einer
Signalleitungsbreite von 11 Bit. Wenn der empfangene Code variabler
Länge eine Codelänge aufweist, die kürzer als die maximale Codelänge
ist, so sind die höheren unter den elf Bits A0-A10 des Adreßsignals,
die dem angelegten Code variabler Länge entsprechen, gültige Bits,
und die restlichen Bits, d. h. die niedrigen Bits sind ungültige
Bits.
Wenn beispielsweise der Code variabler Länge gleich "1" ist, ist nur
das höchste Bit A0 des Adreßsignals das gültige Bit, und die
restlichen zehn niedrigeren Bits A1-A10 sind ungültige Bits. Wenn
der Code variabler Länge gleich "011" ist, sind nur die drei höheren
Bits A0, A1 und A2 des Adreßsignals die gültigen Bits, und die
restlichen acht Bits A3-A10 sind ungültige Bits.
Um die korrekte Codeinformation entsprechend dem angelegten Code
variabler Länge unabhängig vom Wert der ungültigen Bits zu erhalten,
ist es daher notwendig, dieselbe Codeinformation an all den Adressen
im Adreßraum im Tabellenspeicher 21 zu speichern, die für die
gültigen höheren Bits gemeinsam vorhanden sind.
Beispielsweise werden der Wert fester Länge "0" und die Codelänge
"1" an 2¹⁰ Adressen "10000000000", "10000000001", . . . "11111111111"
gespeichert. Der Wert fester Länge "1" und die Codelänge "3" werden
an 28 Adressen "01100000000", "01100000001", . . . "01111111111"
gespeichert. Der Wert fester Länge "32" und die Codelänge "11"
werden an einer Adresse "00000011000" gespeichert.
Ein Beispiel für den Betrieb des Decoders für Codes variabler Länge,
der in Fig. 19 dargestellt ist, wird unten unter Bezugnahme auf Fig.
22 beschrieben.
Beispielsweise wird ein Code variabler Länge "1001101100000111 . . . "
seriell über die Signalleitung L1 an die Eingabeschaltung 10 für
Codes variabler Länge angelegt. Die Eingabeschaltung 10 für Codes
variabler Länge führt die höheren 11 Bits "10011011000" des
seriellen Codes variabler Länge der Decodierungstabelle 20 parallel
als Adreßsignal zu. Die Decodierungstabelle 20 ist vom Steuersignal
CNT abhängig, um den Wert fester Länge "0" und die Codelänge "1" aus
der Adresse "10011011000" im Tabellenspeicher 21 (Fig. 20) zu lesen.
Die Codelänge "1" wird über die Signalleitung L4 an die
Eingabeschaltung 10 für Codes variabler Länge angelegt.
Die Eingabeschaltung 10 für Codes variabler Länge streicht das erste
Bit "1" im seriellen Code variabler Länge aufgrund der Codelänge "1"
und legt die folgenden elf Bits "00110110000" parallel als
Adreßsignal an die Decodierungstabelle 20 an. Die
Decodierungstabelle 20 liest in Abhängigkeit vom Steuersignal CNT
den Wert fester Länge "3" und die Codelänge "4" aus der Adresse
"00110110000" im Tabellenspeicher 21. Die Codelänge "4" wird über
die Signalleitung L4 an die Eingabeschaltung 10 für Codes variabler
Länge angelegt.
Die Eingabeschaltung 10 für Codes variabler Länge streicht die
höheren vier Bits "0011" im seriellen Code variabler Länge aufgrund
der Codelänge "4" und legt die folgenden elf Bits "01100000111"
parallel als Adreßsignal an die Decodierungstabelle 20 an. Die
Decodierungstabelle 20 liest in Abhängigkeit vom Steuersignal CNT
den Wert fester Länge "1" und die Codelänge "3" aus der Adresse
"01100000111" im Tabellenspeicher 21.
Auf diese Weise werden die Daten fester Länge und die Codelängen
entsprechend den Codes variabler Länge mittels des Tabellensuchens
sequentiell von der Decodierungstabelle 20 geliefert.
Entsprechend der Decodierungstabelle des Decoders variabler Länge,
wie sie oben beschrieben worden ist, wird nur ein Teil der Bits,
d. h. die höheren Bits des Adreßsignals durch den Code variabler
Länge bestimmt, wenn ein Code variabler Länge mit einer Codelänge,
die kleiner als die maximale Codelänge ist, angelegt wird, und die
restlichen niedrigeren Bits werden ungültig. Daher ist es notwendig,
dieselbe Codeinformation an einer Mehrzahl von Adressen im
Tabellenspeicher 21 zu speichern. Somit ist ein zusätzlicher
Adreßraum erforderlich.
Unter der Annahme, daß die maximale Codelänge der Code variabler
Länge gleich N ist, erfordert der Tabellenspeicher 21 einen
Adreßraum von 2N Worten. Für den Fall des Codes variabler Länge, der
in Fig. 21 dargestellt ist, beträgt die maximale Codelänge elf Bit
und die Anzahl der Codes ist gleich 33. Trotzdem erfordert der
Tabellenspeicher 21 entsprechend der Struktur der in Fig. 20
gezeigten Decodierungstabelle einen Adreßraum von 2¹¹=2048 Worten.
Damit ist der geforderte Adreßraum verglichen mit der Anzahl der
Codes sehr groß.
Der Speicher mit großem Adreßraum weist eine große Fläche auf und
seine Leistungsaufnahme ist ebenfalls sehr hoch. Insbesondere für
den Fall, daß eine integrierte Halbleiterschaltung den Decoder für
Codes variabler Länge bildet, wird eine hohe Integration des
Decoders für Codes variabler Länge aus den oben genannten Gründen
verhindert. Ferner wird eine hohe Integration der
Bilddecodierungsvorrichtung mit dem Decoder für Codes variabler
Länge verhindert.
Aus der US 4,899,149 ist ein Decoder für Codes variabler Länge
bekannt, der eine Speichervorrichtung aufweist, deren Adreßraum
in eine Mehrzahl von Abschnitten unterteilt ist, in der eine
Tabelle gespeichert wird, sowie mit einer Bank-Auswahlvorrich
tung, die eine der Bänke der Speichervorrichtung auf der Basis
der ersten Bitkette des angelegten Codes variabler Länge aus
wählt, sowie eine Bitauswahlvorrichtung zum Auswählen einer
zweiten Bitkette. Dieser Decoder weist jedoch den Nachteil auf,
daß dadurch, daß der Code variabler Länge seriell eingelesen
wird, und dadurch, daß bei diesem Decoder ein Prefix, der zur
Bestimmung der Datenbank verwendet wird, von dem Code variabler
Länge entfernt werden muß, eine erhebliche Verzögerung der
Arbeitsgeschwindigkeit dieses Decoders auftritt. Weiterhin weist
dieser Decoder eine im Vergleich mit der vorliegenden Erfindung
ungünstige Speicherausnutzung auf.
Aus der US 5,032,838 ist ein Decodierer für Codes variabler Länge
bekannt, der eine Speichervorrichtung und eine Bankauswahlvor
richtung aufweist, und der zusätzlich eine Bereichsauswahlvor
richtung zum Auswählen von einem aus einer Mehrzahl von Bereichen
in der Speichervorrichtung aufweist, um eine aus einer Mehrzahl
von Tabellen in Abhängigkeit von einem vorbestimmten Signal zu
wählen. Auch dieser Decoder verarbeitet den Code variabler Länge
nur mit einer Verzögerung und weist dieselbe ungünstige Spei
cherausnutzung auf wie der zuvor beschriebene Decoder.
Aufgabe der Erfindung ist es, einen Decoder für Codes variabler
Länge zu schaffen, bei dem der Adreßraum eines Tabellenspeichers,
der zur Speicherung von Codes variabler Länge erforderlich ist,
reduziert werden kann. Ferner soll ein Decoder für Codes variabler
Länge gebildet werden, der einen verminderten Zusatzspeicherbereich
zum Speichern von Codes variabler Länge mit Codelängen, die kleiner
als die maximale Codelänge sind, und eine verminderte
Schaltungsgröße, die für eine Hochintegration geeignet ist,
aufweist. Außerdem soll ein Decoder für Codes variabler Länge
gebildet werden, bei dem mehrere Arten von Tabellen in einem kleinen
Adreßraum gespeichert werden können. Ferner soll ein Decoder für
Codes variabler Länge geschaffen werden, bei dem ein Code variabler
Länge durch Software decodiert wird.
Die Aufgabe wird gelöst durch die in Anspruch 1 oder 4
gekennzeichnete Vorrichtung. Das Verfahren ist in Anspruch 8 oder
10 gekennzeichnet.
Im Decoder für Codes variabler Länge wird die Mehrzahl von Codes
variabler Länge auf der Basis der ersten Bitketten (Bitfelder) der
jeweiligen Codes variabler Länge in die Mehrzahl von Gruppen
klassifiziert, und die jeweiligen Gruppen werden den verschiedenen
Banks in der Speichervorrichtung zugeordnet. Jeder
Informationsgegenstand in der jeweiligen Gruppe wird an der Adresse,
die durch die zweite Bitkette (Bitfeld) des entsprechenden Codes
variabler Länge angegeben wird, in der entsprechenden Bank
gespeichert.
Daher wird die Bank auf der Basis der ersten Bitkette des angelegten
Codes variabler Länge ausgewählt, und die Adresse in der
ausgewählten Bank wird auf der Basis der zweiten Bitkette des Codes
variabler Länge bestimmt. Folglich sinkt die Anzahl der Adressen,
die dieselbe Information speichern.
Weil wie oben beschrieben die Adresse in der Speichervorrichtung
unter Verwendung eines Teils der Bits des Codes variabler Länge
bestimmt wird, kann der zur Speicherung der Tabelle notwendige
Adreßraum vermindert werden. Damit wird unter Verwendung einer
Eigenschaft, die der Codekette (Bitkette) des Codes variabler Länge
eigentümlich ist, der Adreßraum der Speichervorrichtung effektiv
benutzt.
Entsprechend dem Decoder für Codes variabler Länge können die
mehrfachen Arten von Tabellen in einem kleinen Adreßraum gespeichert
werden.
Entsprechend dem Decoder für Codes variabler Länge können die Codes
variabler Länge mittels Software decodiert werden.
Entsprechend wird wie oben beschrieben die Adresse in
der Speichervorrichtung unter Verwendung eines Teils der Bits des
Codes variabler Länge bestimmt, so daß der zur Speicherung der
Tabelle erforderliche Adreßraum reduziert werden kann. Daher kann
der Decoder für Codes variabler Länge eine verminderte
Schaltungsgröße und eine geringe Leistungsaufnahme aufweisen. Das
ist für eine Hochintegration geeignet.
Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
Von
den Figuren zeigen:
Fig. 1: ein Blockschaltbild der Gesamtstruktur eines Decoders für
Codes variabler Länge nach einer ersten Ausführungsform
der Erfindung;
Fig. 2: ein Blockschaltbild der Struktur einer
Decodierungstabelle, die im Decoder für Codes variabler
Länge von Fig. 1 verwendet wird;
Fig. 3: den Adreßraum eines Tabellenspeichers, der in der
Decodierungstabelle von Fig. 2 enthalten ist;
Fig. 4: ein Beispiel für eine Korrespondenztabelle, die die
Korrespondenz zwischen Codes variabler Länge und
Codeinformationsgegenständen darstellt;
Fig. 5: die Codeinformation, die in einer ersten Bank des
Tabellenspeichers gespeichert ist;
Fig. 6: die Codeinformation, die in einer zweiten Bank des
Tabellenspeichers gespeichert ist;
Fig. 7: die Codeinformation, die in einer dritten Bank des
Tabellenspeichers gespeichert ist;
Fig. 8: die Codeinformation, die in der verbleibenden Bank des
Tabellenspeichers gespeichert ist;
Fig. 9: das Schaltbild eines Beispiels für die
Bankauswahlschaltung;
Fig. 10: eine Wahrheitstafel für die Bankauswahlschaltung von
Fig. 9;
Fig. 11: ein Beispiel für die Struktur des Bitselektors;
Fig. 12: ein weiteres Beispiel für die Struktur des Bitselektors;
Fig. 13: ein Blockschaltbild der Struktur einer
Decodierungstabelle, die in einem Decoder für Codes
variabler Länge nach einer zweiten Ausführungsform
verwendet wird;
Fig. 14: den Adreßraum eines Tabellenspeichers, der in der
Decodierungstabelle von Fig. 13 enthalten ist;
Fig. 15: das Flußdiagramm eines Beispiels für den Betrieb einer
Codeumschaltsignal-Erzeugungsschaltung;
Fig. 16: ein Flußdiagramm, das die Software-Verarbeitung darstellt,
die in einem Decoder für Codes variabler Länge nach einer
dritten Ausführungsform ausgeführt wird;
Fig. 17: das Blockschaltbild der Struktur einer Vorrichtung, die
einen Codierungsprozeß für Bilddaten ausführt;
Fig. 18: das Blockschaltbild der Struktur einer Vorrichtung, die
einen Decodierungsprozeß komprimierter Bilddaten ausführt;
Fig. 19: ein Blockschaltbild der Gesamtstruktur eines Decoders für
Codes variabler Länge;
Fig. 20: das Blockschaltbild einer Decodierungstabelle, die für den
Decoder für Codes variabler Länge von Fig. 19 verwendet
wird;
Fig. 21: ein Beispiel für eine Korrespondenztabelle, die die
Korrespondenz zwischen Codes variabler Länge und
Codeinformation darstellt; und
Fig. 22: ein Beispiel für den Betrieb eines Decoders für Codes
variabler Länge.
Fig. 1 zeigt ein Blockschaltbild der Struktur eines Decoders für
Codes variabler Länge nach einer ersten Ausführungsform. Der in Fig.
1 dargestellte Decoder für Codes variabler Länge unterscheidet sich
von dem in Fig. 19 gezeigten Decoder für Codes variabler Länge in
der Struktur der Decodierungstabellen 20a und 20b. Die anderen
Strukturen sind ähnlich den in Fig. 19 gezeigten.
Fig. 2 zeigt ein Blockschaltbiid der Struktur der
Decodierungstabelle 20a. Die Decodierungstabelle 20a weist einen
Tabellenspeicher 21a, eine Bank-Auswahlschaltung 22 und einen
Bitselektor 23 auf.
Der Adreßraum des Tabellenspeichers 21a ist in eine Mehrzahl von
Banks unterteilt. Wie in Fig. 3 dargestellt ist, ist bei dieser
Ausführungsform der Adreßraum im Tabellenspeicher 21a in vier Banks
BA0, BA1, BA2 und BA3 unterteilt.
Der Tabellenspeicher 21a besteht z. B. aus einem ROM
(Festwertspeicher). Dieses ROM weist einen Adreßeingang mit sieben
Bits auf und speichert Daten aus 128 Worten. Die Bitbreite eines
jeden Wertes beträgt zehn Bits.
Wie in Fig. 2 dargestellt ist, empfängt die Signalleitung einen
parallelen Code variabler Länge zu elf Bits B0-B10 von der
Eingabeschaltung 10 für Codes variabler Länge, die in Fig. 1 gezeigt
ist. Die höheren sechs Bits B0-B5 des Codes variabler Länge werden
der Bank-Auswahlschaltung 22 und alle Bits B0-B10 des Codes
variabler Länge werden dem Bitselektor 23 zugeführt.
Die Bank-Auswahlschaltung 22 ist von den sechs Bits B0-B5 des Codes
variabler Länge abhängig, um ein Bank-Auswahlsignal BSL mit zwei
Bits zu erzeugen. Das Bank-Auswahlsignal BSL wird als die höheren
zwei Bits A0 und A1 des Adreßsignals an den Tabellenspeicher 21a
angelegt. Das Bank-Auswahlsignal BSL wird ferner dem Bitselektor 23
zugeführt.
Der Bitselektor 23 ist vom Bank-Auswahlsignal BSL abhängig, um fünf
der elf Bits B0-B10 des Codes variabler Länge auszuwählen, und legt
die ausgewählten fünf Bits als niedere fünf Bits A2-A6 des
Adreßsignals an den Tabellenspeicher 21a an.
Auf der Basis der höheren zwei Bits A0 und A1 des Adreßsignals wird
eine Bank der vier Banks BA0-BA3 im Tabellenspeicher 21a ausgewählt.
Auf der Basis der niederen fünf Bits A2-A6 des Adreßsignals wird die
Adresse in der jeweiligen Bank bestimmt. In Abhängigkeit vom
Steuersignal CNT wird Codeinformation von der Adresse in der
ausgewählten Bank gelesen und über den Datenausgabeanschluß D an die
Signalleitungen L3 und L4 angelegt.
Der Tabellenspeicher 21a speichert eine Korrespondenztabelle, wie
sie z. B. in Fig. 4 dargestellt ist. Die Korrespondenztabelle stellt
die Korrespondenz zwischen den Codes variabler Länge und der
Codeinformation (Daten fester Länge und Codelängen) dar.
Die Codes variabler Länge und die Codeinformation in der
Korrespondenztabelle der Fig. 4 werden entsprechend der folgenden
Regel in erste bis vierte Gruppen G1-G4 klassifiziert. Hier wird
angenommen, daß das linke Endbit des Codes variabler Länge mit der
maximalen Codelänge (11 Bits) das höchste Bit (das höchstwertige
Bit) B₀ und das rechte Endbit das niederste Bit (das niederwertigste
Bit) B₁₀ ist.
Der Code variabler Länge mit den höheren vier Bits B₀-B₃, die die
folgende Beziehung erfüllen, wird in die erste Gruppe G1
klassifiziert.
B₀ + B₁ + B₂ + B₃ ≠ 0 (1)
Der Code variabler Länge mit den höheren fünf Bits B₀-B₄, die die
folgenden Beziehung erfüllen, wird in die zweite Gruppe G2
klassifiziert.
B₀ + B₁ + B₂ + B₃ = 0 und B₄ = 1 (2)
Der Code variabler Länge mit den höheren sechs Bits B₀-B₅, die die
folgenden Beziehung erfüllen, wird in die dritte Gruppe G3
klassifiziert.
B₀ + B₁ + B₂ + B₃ + B₄ = 0 und B₅ = 1 (3)
Der Code variabler Länge mit den höheren sieben Bits B₀-B₆, die die
folgenden Beziehung erfüllen, wird in die vierte Gruppe G4
klassifiziert.
B₀ + B₁ + B₂ + B₃ + B₄ + B₅ = 0 (4)
Die ersten bis vierten Gruppen G1, G2, G3 und G4 werden den Banks
BA0, BA1, BA2 und BA3 im Tabellenspeicher 21a zugewiesen.
Jeder Codeinformationsgegenstand in der ersten Gruppe G1 wird an der
Adresse in der Bank BA0 gespeichert, die von den höheren fünf Bits
B₀-B₄ des entsprechenden Codes variabler Länge bestimmt wird. Jeder
Codeinformationsgegenstand in der zweiten Gruppe G2 wird an der
Adresse in der Bank BA1 gespeichert, die von den fünf Bits B₄-B₈ des
entsprechenden Codes variabler Länge bestimmt wird. Jeder
Codeinformationsgegenstand in der dritten Gruppe G3 wird an der
Adresse in der Bank BA2 gespeichert, die von den fünf Bits B₆-B₁₀
des entsprechenden Codes variabler Länge bestimmt wird. Jeder
Codeinformationsgegenstand in der vierten Gruppe G4 wird an der
Adresse in der Bank BA3 gespeichert, die von den fünf Bits B₆-B₁₀
des entsprechenden Codes variabler Länge bestimmt wird.
Die Fig. 5, 6, 7 und 8 zeigen Codeinformation, die in den Banks BA0,
BA1, BA2 und BA3 im Tabellenspeicher 21 gespeichert ist.
Wie in Fig. 5 dargestellt ist, werden z. B. an den Adressen "1XXXX"
in der Bank BA0 der Wert fester Länge "000000" (="0") und die
Codelängen "0001" (="1") gespeichert. An den Adressen "011XX" werden
der Wert fester Länge "000001" (="1") und die Codelängen "0011"
(="3") gespeichert.
Wie in Fig. 6 dargestellt ist, werden z. B. an den Adressen "111XX"
in der Bank BA1 der Wert fester Länge "000111" (="7") und die
Codelängen "0111" (="7") gespeichert. Ferner werden an den Adressen
"110XX" in der Bank BA1 der Wert fester Länge "001000" (="8") und
die Codelängen "0111" (="7") gespeichert.
Wie in Fig. 7 dargestellt ist, werden z. B. an den Adressen "11XXX"
in der Bank BA2 der Wert fester Länge "001101" (="13") und die
Codelängen "1000" (="8") gespeichert. An den Adressen "10XXX" in der
Bank BA2 werden der Wert fester Länge "001110" (="14") und die
Codelängen "1000" (="8") gespeichert.
Wie in Fig. 8 dargestellt ist, werden z. B. an den Adressen "11111"
in der Bank BA3 der Wert fester Länge "011001" (="32") und die
Codelängen "1011" (="11") gespeichert. An den Adressen "11110" in
der Bank BA3 werden der Wert fester Länge "011010" (="26") und die
Codelängen "1011" (="11") gespeichert.
Wie oben beschrieben worden ist, werden jeder
Codeinformationsgegenstand mit fester Länge und jede Codelänge an
der Adresse gespeichert, die durch die fünf Bits des entsprechenden
Codes variabler Länge bestimmt sind.
Fig. 9 zeigt das Schaltbild eines Beispiels für die
Bankauswahlschaltung 22. Fig. 10 stellt eine Wahrheitstafel für die
Bankauswahlschaltung 22 dar.
Die in Fig. 9 gezeigte Bankauswahlschaltung 22 weist ein NOR-Gatter
221, UND-Gatter 222, 223 und 224, ODER-Gatter 225 und 226 sowie
Inverter 227 und 228 auf.
Wenn der angelegte Code variabler Länge zur ersten Gruppe G1 gehört,
ist wenigstens eines der Bits B₀-B₃ des Codes variabler Länge gleich
"1". Dadurch erzeugt das NOR-Gatter 221 eine Ausgabe "0", und die
UND-Gatter 222, 223 und 224 erzeugen Ausgaben "0". Daher sind beide
Ausgaben der ODER-Gatter 225 und 226 gleich "0". Folglich wird das
Bit A0 des Bank-Auswahlsignals BSL gleich "0", und auch das Bit A1
wird gleich "0". Dadurch wird die Bank BA0 ausgewählt.
Wenn der angelegte Code variabler Länge zur zweiten Gruppe G2
gehört, ist jedes der Bits B₀-B₃ des Codes variabler Länge gleich
"0", und das Bit B₄ ist gleich "1". Dadurch erzeugt das NOR-Gatter
221 eine Ausgabe "1", und das UND-Gatter 222 erzeugt eine Ausgabe
"1". Die UND-Gatter 223 und 224 erzeugen Ausgaben "0". Daher ist die
Ausgabe des ODER-Gatter 225 gleich "1", und die Ausgabe des ODER-
Gatter 226 ist gleich "0". Folglich wird das Bit A0 des Bank-
Auswahlsignals BSL gleich "0", und das Bit A1 wird gleich "1".
Dadurch wird die Bank BA1 ausgewählt.
Wenn der angelegte Code variabler Länge zur dritten Gruppe G3
gehört, ist jedes der Bits B₀-B₄ des Codes variabler Länge gleich
"0", und das Bit B₅ ist gleich "1". Dadurch erzeugt das NOR-Gatter
221 eine Ausgabe "1", und das UND-Gatter 223 erzeugt eine Ausgabe
"1". Die UND-Gatter 222 und 224 erzeugen Ausgaben "0". Daher ist die
Ausgabe des ODER-Gatter 225 gleich "0", und die Ausgabe des ODER-
Gatter 226 ist gleich "1". Folglich wird das Bit A0 des Bank-
Auswahlsignals BSL gleich "1", und das Bit A1 wird gleich "0".
Dadurch wird die Bank BA2 ausgewählt.
Wenn der angelegte Code variabler Länge zur vierten Gruppe G4
gehört, ist jedes der Bits B₀-B₅ des Codes variabler Länge gleich
"0". Dadurch erzeugt das NOR-Gatter 221 eine Ausgabe "1", und das
UND-Gatter 224 erzeugt eine Ausgabe "1". Die UND-Gatter 222 und 223
erzeugen Ausgaben "0". Daher ist die Ausgabe des ODER-Gatter 225
gleich "1", und die Ausgabe des ODER-Gatter 226 ist gleich "1".
Folglich wird das Bit A0 des Bank-Auswahlsignals BSL gleich "1", und
das Bit A1 wird gleich "1". Auf diese Weise wird die Bank BA3
ausgewählt.
Fig. 11 zeigt ein Beispiel für die Struktur des Bitselektors 23, der
einen Decoder 230 und Selektoren 231, 232, 233, 234 und 235 enthält.
Der Decoder 230 decodiert die zwei Bits A0 und A1 des Bank-
Auswahlsignals und stellt eines der Auswahlsignale S1, S2, S3 und S4
auf "1" ein. Jeder der Selektoren 231-235 weist vier
Eingangsanschlüsse I1, I2, I3 und I4 sowie einen Ausgangsanschluß
auf. Jeder Selektor ist von den Auswahlsignalen S1-S4 abhängig, um
eines der Signale auszuwählen, die an die Eingangsanschlüsse I1-I4
angelegt sind, und führt es dem Ausgangsanschluß zu.
Die Eingangsanschlüsse I1, I2, I3 und I4 des Selektors 231 empfangen
die Bits B0, B4 bzw. B6 des Codes variabler Länge. Die
Eingangsanschlüsse I1, I2 und I3 des Selektors 232 empfangen die
Bits B1, B5 bzw. B7 des Codes variabler Länge. Die
Eingangsanschlüsse I1, I2 und I3 des Selektors 233 empfangen die
Bits B2, B6 bzw. B8 des Codes variabler Länge. Die
Eingangsanschlüsse I1, I2 und I3 des Selektors 234 empfangen die
Bits B3, B7 bzw. B9 des Codes variabler Länge. Die
Eingangsanschlüsse I1, I2 und I3 des Selektors 235 empfangen die
Bits B4, B8 bzw. B10 des Codes variabler Länge. Der Eingangsanschluß
14 eines jeden Selektors empfängt dasselbe Bit wie der
Eingangsanschluß I3.
Die von den Selektoren 231-235 ausgegebenen Bits werden als Bits A2-A6
des Adreßsignals an den Tabellenspeicher 21a angelegt.
Wenn beide Bits A0 und A1 des Bank-Auswahlsignals gleich "0" sind,
ist das Auswahlsignals S1 gleich "1". Dadurch geben die Selektoren
231-235 die Bits B0-B4 aus. Wenn Bits A0 und A1 des Bank-
Auswahlsignals gleich "0" bzw. "1" sind, ist das Auswahlsignals S2
gleich "1". Dadurch geben die Selektoren 231-235 die Bits B4-B8 aus.
Wenn Bits A0 und A1 des Bank-Auswahlsignals gleich "1" bzw. "0"
sind, ist das Auswahlsignals S3 gleich "1". Dadurch geben die
Selektoren 231-235 die Bits B6-B10 aus. Wenn beide Bits A0 und A1
des Bank-Auswahlsignals gleich "1" sind, ist das Auswahlsignals S4
gleich "1". Dadurch geben die Selektoren 231-235 die Bits B6-B10
aus.
Fig. 12 zeigt ein weiteres Beispiel für die Struktur des
Bitselektors 23. Der Bitselektor 23 weist Selektoren 241-245 auf.
Jeder der Selektoren 241-245 empfängt die Bits A0 und A1 des Bank-
Auswahlsignals. Jeder Selektor ist von den Bits A0 und A1 abhängig,
um eines der Signale auszuwählen, die an die Eingangsanschlüsse 11,
12, 13 und 14 angelegt sind, und führt es dem Ausgangsanschluß zu.
Während der Bitselektor 23 von Fig. 11 den Decoder 230 gemeinsam für
die fünf Selektoren 231-235 aufweist, besitzt der Bitselektor 23 von
Fig. 12 fünf Selektoren 241-245 auf, die jeweils eine
Decoderfunktion haben. Der Betrieb des Bitselektors 23 von Fig. 12
ist ähnlich dem Betrieb des Bitselektors 23, der in Fig. 11
dargestellt ist.
Im folgenden wird der Betrieb der in Fig. 2 gezeigten
Decodierungstabelle 20a beschrieben.
Wenn der zu decodierende Code variabler Länge z. B. gleich "011" ist,
werden der Code variabler Länge "011" an die höheren drei Bits der
Signalleitung L2 und ungültige Daten mit drei Bits an die restlichen
Bits der Signalleitung L2 angelegt. Diese ungültigen Daten enthalten
einen Teil oder den ganzen nachfolgend zu decodierenden Code
variabler Länge.
Hier wird angenommen, daß die Signalleitung L2 "0110000111"
empfängt. Die höheren sechs Bits B0-B5 ("011000") des Codes
variabler Länge auf der Signalleitung L2 werden der Bank-
Auswahlschaltung 22 und alle Bits B0-B10 ("01100000111") dem
Bitselektor 23 zugeführt.
Die Bank-Auswahlschaltung 22 stellt die zwei Bits A0 und A1 des
Bank-Auswahlsignals BSL in Abhängigkeit von diesen Bits B0-B5 auf
"0" bzw. "0" ein. Dadurch wird die Bank BA0 im Tabellenspeicher 21a
ausgewählt (siehe Fig. 3). Der Bitselektor 23 wählt in Abhängigkeit
vom Bank-Auswahlsignal BSL fünf Bits B0-B4 ("01100") unter den Bits
B0-B10 aus und legt die als Adreßsignal an den Tabellenspeicher 21a
an. Dadurch wird die Adresse "01100" in der Bank BA0 bestimmt. Somit
werden die Daten fester Länge "000001" (="1") und die Codelänge
"0011" (="3") aus der Adresse "01100" ausgelesen.
Obwohl ein Beispiel des Decodiervorgangs im Zusammenhang mit dem
Code variabler Länge "011", der zur ersten Gruppe G1 gehört,
beschrieben worden ist, werden auch andere Codes variabler Länge in
ähnlicher Weise verarbeitet.
Der bekannte Decoder für Codes variabler Länge erfordert den
Tabellenspeicher 21 mit einem Adreßraum von 2048 Worten zum
Speichern der in Fig. 21 gezeigten Korrespondenztabelle.
Demgegenüber erfordert der Decoder für Codes variabler Länge nach
dieser Ausführungsform den Tabellenspeicher 21a mit einem Adreßraum
von 128 Worten zum Speichern der in Fig. 4 gezeigten
Korrespondenztabelle.
Wie oben beschrieben worden ist, beträgt die Kapazität des
Tabellenspeichers 21a, der bei dieser Ausführungsform benutzt wird,
ein sechzehntel der Kapazität des Tabellenspeichers 21. Ferner weist
der Tabellenspeicher 21a dieselbe Bitbreitenstruktur wie der
Tabellenspeicher 21 auf, und damit beträgt die Gesamtzahl der Bits
des Tabellenspeichers 21a ein sechzehntel der Gesamtzahl der Bits
des Tabellenspeichers 21.
Bei der oben beschriebenen Ausführungsform legt die Bank-
Auswahlschaltung 22 dasselbe Bank-Auswahlsignal BSL sowohl an den
Tabellenspeicher 21a als auch den Bitselektor 23 an. Es können
jedoch auch verschiedene Signale, die die Gruppenklassen angeben, an
den Tabellenspeicher 21a und den Bitselektor 23 angelegt werden.
Obwohl der Tabellenspeicher 21a der oben beschriebenen
Ausführungsform aus einem ROM besteht, kann der Tabellenspeicher 21a
aus einem RAM (Direktzugriffsspeicher) gebildet sein.
Bei der oben beschriebenen Ausführungsform werden die Banks BA0,
BA1, BA2 und BA3 im Tabellenspeicher 21a durch die höheren Bits in
der Adresse umgeschaltet. Die Umschaltung durch die höheren Bits ist
aber nicht wesentlich. Beispielsweise können die Banks unter
Verwendung der niedersten und niederen Bits im Tabellenspeicher 21a
umgeschaltet werden.
Fig. 13 zeigt ein Blockschaltbild der Struktur einer
Decodierungstabelle, die in einem Decoder für Codes variabler Länge
nach einer zweiten Ausführungsform verwendet wird. Die
Gesamtstruktur des Decoders für Codes variabler Länge nach der
zweiten Ausführungsform ist ähnlich der in Fig. 1 dargestellten.
Ein Decoder 20b für Codes variabler Länge weist einen
Tabellenspeicher 21b, eine Bank-Auswahlschaltung 22 und einen
Bitselektor 23 auf. Der Tabellenspeicher 21b ist aus einem ROM
gebildet. Das ROM weist einen 8-Bit-Adreßeingang auf und speichert
256 Datenworte. Die Breite eines jeden Wertes beträgt zehn Bits.
Der Adreßraum im Tabellenspeicher 21b weist eine Mehrzahl von
Bereichen auf, die jeweils in eine Mehrzahl von Banks unterteilt
sind. Wie in Fig. 14 dargestellt ist, weist der Adreßraum bei dieser
Ausführungsform zwei Bereiche R1 und R2 auf, die jeweils in vier
Banks BA0, BA1, BA2 und BA3 unterteilt sind.
Das Bit A7 des Adreßsignals wird zum Auswählen von einem der zwei
Bereiche R1 und R2 im Tabellenspeicher 21b benutzt. Die Bits A0 und
A1 des Adreßsignals werden dazu verwendet, eine der vier Banks BA0-BA3
im jeweiligen Bereich auszuwählen. Die fünf Bits A2-A6 des
Adreßsignals werden zum Festlegen der Adresse in der jeweiligen Bank
benutzt.
Die Bereiche R1 und R2 im Tabellenspeicher 21b speichern
verschiedene Arten von Korrespondenztabellen. Im Bereich R1 wird
z. B. die in Fig. 4 gezeigte Korrespondenztabelle in ähnlicher Weise
wie im Tabellenspeicher 21a der ersten Ausführungsform gespeichert.
Im Bereich R2 ist eine Korrespondenztabelle gespeichert, die sich
von der in Fig. 4 gezeigten unterscheidet. Ähnlich wie die in Fig. 4
gezeigte Korrespondenztabelle ist die im Bereich R2 gespeicherte
Korrespondenztabelle in erste bis vierte Gruppen G1-G4 unterteilt,
die in den Banks BA0-BA3 gespeichert sind.
Die vom Tabellenspeicher 21b den Signalleitungen L3 und L4
zugeführte Codeinformation wird an die Codeumschaltsignal-
Erzeugungsschaltung 30 angelegt. Die Codeumschaltsignal-
Erzeugungsschaltung 30 erzeugt das Codeumschaltsignal CSW auf der
Basis der Codeinformation und legt es als Bit A7 des Adreßsignals an
den Tabellenspeicher 21b an. In Abhängigkeit vom Codeumschaltsignal
CSW wird die Korrespondenztabelle ausgewählt, die in einem der
Bereiche R1 und R2 gespeichert ist, und die ausgewählte
Korrespondenztabelle wird zur Decodierung des Codes variabler Länge
benutzt.
Die Bank-Auswahlschaltung 22 und der Bitselektor 23 weisen
Strukturen auf, die denen der Bank-Auswahlschaltung 22 und der
Bitselektor 23 von Fig. 2 ähnlich sind.
Fig. 15 zeigt das Flußdiagramm eines Beispiels für den Betrieb der
Codeumschaltsignal-Erzeugungsschaltung 30. In der Figur wird die im
Bereich R1 gespeicherte Korrespondenztabelle als CT1 und die im
Bereich R2 gespeicherte Korrespondenztabelle als CT2 bezeichnet.
Zuerst stellt die Codeumschaltsignal-Erzeugungsschaltung 30 das
Codeumschaltsignal CSW auf "0" ein. Dadurch wird die im Bereich R1
gespeicherte Korrespondenztabelle CT1 ausgewählt (Schritt S1). Dann
stellt die Codeumschaltsignal-Erzeugungsschaltung 30 das
Codeumschaltsignal CSW auf "1" ein. Dadurch wird die im Bereich R2
gespeicherte Korrespondenztabelle CT2 ausgewählt (Schritt S2).
Die Codeumschaltsignal-Erzeugungsschaltung 30 stellt das
Codeumschaltsignal CSW auf "0" ein, wenn der vom Tabellenspeicher
21b gelieferte Wert fester Länge gleich "EOB" ist (End-of-Block,
Ende des Blocks). Dadurch wird die Korrespondenztabelle CT1 erneut
ausgewählt (Schritt S1).
Wenn der Tabellenspeicher 21b in Schritt S3 einen Wert fester Länge
ungleich "EOB" liefert, hält die Codeumschaltsignal-
Erzeugungsschaltung 30 das Codeumschaltsignal CSW auf "1". Dadurch
wird die Korrespondenztabelle CT2 ausgewählt (Schritt S2).
Auf diese Weise wird die Korrespondenztabelle CT2 nach der Auswahl
der Korrespondenztabelle CT1 und vor der Ausgabe des Wertes fester
Länge, der ein "EOB" anzeigt, durch den Tabellenspeicher 21b
wiederholt ausgewählt.
Der Decoder für Codes variabler Länge mit der Decodierungstabelle
20b wird benutzt, wenn mehrere Arten von Codes variabler Länge, die
unter Verwendung verschiedener Korrespondenztabellen decodiert
werden sollen, nach einem Zeitteilungsverfahren angelegt werden.
Beispielsweise ist die Korrespondenztabelle CT1 zum Decodieren einer
ersten Art von Codes variabler Länge im Bereich R1 im
Tabellenspeicher 21b gespeichert, und die Korrespondenztabelle CT2
zum Decodieren einer zweiten Art von Codes variabler Länge ist im
Bereich R2 im Tabellenspeicher 21b gespeichert.
In der Praxis wird Codeinformation entsprechend der ersten Art von
Codes variabler Länge in der entsprechenden Bank im Bereich R1
gespeichert, und Codeinformation entsprechend der zweiten Art von
Codes variabler Länge wird in der entsprechenden Bank
im Bereich R2 gespeichert.
Das Codeumschaltsignal CSW gibt die Art (d. h. erste Art oder zweite
Art) des Codes variabler Länge, der zugeführt wird. Wenn die Arten
der angelegten Codes mit variabler Länge entsprechend einer
vorbestimmten Regel umgeschaltet werden, erzeugt die
Codeumschaltsignal-Erzeugungsschaltung 30 die Codeumschaltsignale
CSW entsprechend derselben Regel. Wenn die Arten der angelegten
Codes variabler Länge entsprechend der decodierten Codeinformation
bestimmt werden, erzeugt die Codeumschaltsignal-Erzeugungsschaltung
30 die Codeumschaltsignale CSW auf der Basis der Codeinformation,
die vom Tabellenspeicher 21b ausgegeben wird.
Entsprechend dem Decoder für Codes variabler Länge nach der oben
angeführten Ausführungsform werden die Arten der
Korrespondenztabellen, die referiert werden, durch Auswählen der
Bereiche im Tabellenspeicher 21b in Abhängigkeit von den
Codeumschaltsignalen CSW umgeschaltet, wenn die mehrfachen Arten von
Codes variabler Länge nach Art des Zeitscheibenverfahrens angelegt
werden. Daher können die mehrfachen Arten von Codes variabler Länge
unter Verwendung des einen Tabellenspeichers 21b decodiert werden.
Die Decodierungstabelle eines Decoders für Codes variabler Länge
nach einer dritten Ausführungsform wird von einem Mikroprozessor
oder einem digitalen Signalprozessor (DSP) gebildet. In diesem Fall
werden die Funktionen der Bank-Auswahlschaltung 22 und des
Bitselektors 23, die in Fig. 2 dargestellt sind, durch Software
erzielt.
Fig. 16 zeigt ein Flußdiagramm, das eine Verarbeitung zur Erzielung
derselben Funktionen wie die Bank-Auswahlschaltung 22 darstellt. Es
wird angenommen, daß der Tabellenspeicher 21a die in Fig. 4 gezeigte
Korrespondenztabelle speichert. Die Korrespondenztabelle ist
entsprechend den in den Formeln (1) bis (4) ausgedrückten Regeln in
vier Gruppen unterteilt.
Die Decodierungstabelle empfängt die Codes variabler Länge mit dem
Format maximaler Codelänge einschließlich dem zu decodierenden Code
variabler Länge. Wenn der zu decodierende Code variabler Länge eine
Codelänge geringer als die maximale Codelänge aufweist, bilden die
höheren Bits des Codes variabler Länge des Formats mit maximaler
Codelänge den effektiven Code variabler Länge, und die niederen Bits
sind ungültig.
Zuerst wird ermittelt, ob alle höheren vier Bits B0-B3 gleich "0"
sind oder nicht (Schritt S11). Wenn eines der höheren vier Bits B0-B3
gleich "1" ist, wird die Bank BA0 ausgewählt (Schritt S12).
Wenn in Schritt S11 alle höheren vier Bits B0-B3 gleich "0" sind,
wird ermittelt, ob das fünfte Bit B4 gleich "0" ist oder nicht
(Schritt S13). Wenn das fünfte Bit B4 gleich "1" ist, wird die Bank
BA1 ausgewählt (Schritt S14).
Wenn in Schritt S13 das fünfte Bit B4 gleich "0" ist, wird
ermittelt, ob das sechste Bit B5 gleich "0" ist oder nicht (Schritt
S15). Wenn das sechste Bit B5 gleich "1" ist, wird die Bank BA2
ausgewählt (Schritt S16).
Wenn in Schritt S15 das sechste Bit B5 gleich "0" ist, wird die Bank
BA3 ausgewählt (Schritt S17).
Jede bedingte Bewertung, die in Fig. 16 gezeigt ist, kann durch
einen bedingten Verzweigungsbefehl unter den Befehlen, die im
Mikroprozessor oder digitalen Signalprozessor gespeichert sind,
ausgeführt werden.
Mit der Auswahl der Bank bei der in Fig. 16 dargestellten
Verarbeitung, wird der zugeführte Code variabler Länge entsprechend
der Gruppe unter Verwendung eines Schiebemittels, das im
Mikroprozessor oder digitalen Signalprozessor gebildet ist, geeignet
verschoben. Der verschobene Code variabler Länge wird an den
Tabellenspeicher 21a als Adreßsignal angelegt, wodurch die Adresse
im Tabellenspeicher 21a angesprochen werden kann.
Wie oben beschrieben worden ist, ermöglicht die Software-
Verarbeitung, daß der Decoder für Codes variabler Länge Funktionen
ähnlich wie die der ersten Ausführungsform aufweist.
Auch in diesem Fall erfordert der Tabellenspeicher 21a einen
Adreßraum von nur 128 Worten, um die Codes variabler Länge zu
decodieren. Damit beträgt die Anzahl der benötigten Bits ein
sechzehntel der Zahl im bekannten Tabellenspeicher.
Claims (12)
1. Decoder für Codes variabler Länge, mit:
- a) einer Speichervorrichtung (21a), deren Adreßraum in eine Mehrzahl von Banks (BA0-BA3) unterteilt ist, zum Speichern einer Tabelle, die die Korrespondenz zwischen einer Mehrzahl von Codes variabler Länge und einer Mehrzahl von Informationsgegenständen angibt, die zur Decodierung der Mehrzahl von Codes variabler Länge benutzt werden,
- b) wobei die Mehrzahl von Codes variabler Länge und die Mehrzahl von Informationsgegenständen in der Tabelle auf der Basis von ersten Bitketten (B₀-B₅) in eine Mehrzahl von Gruppen (G1-G4) klassifiziert werden, jede erste Bitkette aus einem oder mehreren Bits des jeweiligen Codes variabler Länge besteht und die Mehrzahl von Gruppen (G1-G4) der Mehrzahl von Banks (BA0-BA3) entspricht und
- c) die Speichervorrichtung (21a) jeden Informationsgegenstand in der jeweiligen Gruppe an einer Adresse in der entsprechenden Bank speichert, die von einer zweiten Bitkette angegeben wird, die aus einem oder mehreren Bits des entsprechenden Codes variabler Länge besteht, wobei die zweite Bitkette unabhängig von den zweiten Bitketten in den anderen Gruppen bestimmt wird,
- d) einer Bank-Auswahlvorrichtung (22) zum Auswählen von einer Bank der Mehrzahl von Banks (BA0-BA3) in der Speichervorrichtung (21a) auf der Basis der ersten Bitkette (B0-B5) des angelegten Codes variabler Länge, und
- e) einer Bitauswahlvorrichtung (23) zum Auswählen der zweiten Bitkette entsprechend dem angelegten Code variabler Länge in Abhängigkeit von einem Ausgangssignal (BSL) der Bank-Auswahlvorrichtung (22) und zum Anlegen derselben an die Speichervorrichtung (21a) als Adreßsignal (A2-A6), wobei der Code variabler Länge parallel an der Bitauswahlvorrichtung anliegt und die zweite Bitkette aus der Gesamtheit des parallel angelegten Codes variabler Länge ausgewählt wird.
2. Decoder für Codes variabler Länge nach Anspruch 1,
bei dem
die Bank-Auswahlvorrichtung (22) eine der Mehrzahl von Banks (BA0-BA3)
in der Speichervorrichtung (21a) durch bedingte Bewertung
mittels Software auswählt.
3. Decoder für Codes variabler Länge nach Anspruch 2,
bei dem
die bedingte Bewertung mittels Software die Bewertung umfaßt, ob
eine vorbestimmte Anzahl höherer Bits einen vorbestimmten Wert
aufweist oder nicht.
4. Decoder für Codes variabler Länge, mit:
- a′) einer Speichervorrichtung (21b) mit einem Adreßraum, der eine Mehrzahl von Bereichen (R1, R2) aufweist, die in eine Mehrzahl von Banks (BA0-BA3) unterteilt sind, zum Speichern mehrfacher Arten von Tabellen, die jeweils die Korrespondenz zwischen einer Mehrzahl von Codes variabler Länge und einer Mehrzahl von Informationsgegenständen angeben, die zur Decodierung der Mehrzahl von Codes variabler Länge benutzt werden,
- b′) wobei die Mehrzahl der Bereiche (R1, R2) den mehrfachen Arten von Tabellen entspricht, die Mehrzahl der Codes variabler Länge und die Mehrzahl der Informationsgegenstände in der jeweiligen der Tabellen auf der Basis von ersten Bitketten (B₀-B₅) in eine Mehrzahl von Gruppen (G1-G4) klassifiziert werden, jede erste Bitkette aus einem oder mehreren Bits des jeweiligen Codes variabler Länge besteht und die Mehrzahl von Gruppen (G1-G4) der Mehrzahl von Banks (BA0-BA3) im entsprechenden Bereich entspricht und
- c′) die Speichervorrichtung (21b) jeden Informationsgegenstand in der jeweiligen Gruppe in der jeweiligen Tabelle an einer Adresse in der entsprechenden Bank im entsprechenden Bereich speichert, die von einer zweiten Bitkette angegeben wird, die aus einem oder mehreren Bits des entsprechenden Codes variabler Länge besteht, wobei die zweite Bitkette unabhängig von den zweiten Bitketten in den anderen Gruppen bestimmt wird,
- d′) einer Bank-Auswahlvorrichtung (22) zum Auswählen von einer Bank der Mehrzahl von Banks (BA0-BA3) im ausgewählten Bereich der Speichervorrichtung (21b) auf der Basis der ersten Bitkette (B0-B5) des angelegten Codes variabler Länge, und
- e′) einer Bitauswahlvorrichtung (23) zum Auswählen der zweiten Bitkette entsprechend dem angelegten Code variabler Länge in Abhängigkeit von einem Ausgangssignal (BSL) der Bank-Auswahlvorrichtung (22) und zum Anlegen derselben an die Speichervorrichtung (21b) als Adreßsignal (A2-A6), wobei der Code variabler Länge parallel an der Bitauswahlvorrichtung anliegt und die zweite Bitkette aus der Gesamtheit des parallel angelegten Codes variabler Länge ausgewählt wird,
- f) einer Bereichsauswahlvorrichtung (30) zum Auswählen von einem der Mehrzahl von Bereichen (R1, R2) in der Speichervorrichtung (21b), um eine der mehrfachen Arten von Tabellen in Abhängigkeit von einem vorbestimmten Signal zu wählen.
5. Decoder für Codes variabler Länge nach einem der Ansprüche 1 bis 4,
bei dem
jeder der Informationsgegenstände einen Wert fester Länge und eine
Codelänge für den entsprechenden Code variabler Länge aufweist.
6. Decoder für Codes variabler Länge nach einem der Ansprüche 1 bis 5,
bei dem
die erste Bitkette eine vorbestimmte Anzahl höherer Bits des
jeweiligen Codes variabler Länge aufweist, und
die Mehrzahl von Gruppen (G1-G4) auf der Basis der Anzahl der Bits
desselben Wertes bestimmt wird.
7. Decoder für Codes variabler Länge nach einem der Ansprüche 4 bis
6, bei dem
das vorbestimmte Signal einen Wert fester Länge aufweist, der vom
Speichermittel (21b) gelesen wird.
8. Decodierverfahren für Codes variabler Länge,
mit den Schritten:
- i) Vorbereiten einer Tabelle, die die Korrespondenz zwischen einer Mehrzahl von Codes variabler Länge und einer Mehrzahl von Informationsgegenständen angibt, die zur Decodierung der Mehrzahl von Codes variabler Länge benutzt werden,
- ii) Klassifizieren der Mehrzahl von Codes variabler Länge und der Mehrzahl von Informationsgegenständen in der Tabelle auf der Basis einer ersten Bitkette (B₀-B₅), die aus einem oder mehreren vorbestimmten Bits des jeweiligen Codes variabler Länge besteht, in eine Mehrzahl von Gruppen (G1-G4),
- iii) Bestimmen der Korrespondenz der Mehrzahl von Gruppen (G1-G4) mit einer Mehrzahl von Banks (BA0-BA3), die in der Speichervorrichtung (21a) enthalten sind,
- iv) Speichern eines jeden Informationsgegenstandes in der jeweiligen Gruppe an einer Adresse in der entsprechenden Bank in der Speichervorrichtung (21a), die von einer zweiten Bitkette angegeben wird, die aus einem oder mehreren Bits des entsprechenden Codes variabler Länge besteht, wobei die zweite Bitkette unabhängig von den zweiten Bitketten in den anderen Gruppen bestimmt wird,
- v) Auswählen von einer der Mehrzahl von Banks (BA0-BA3) in der Speichervorrichtung (21a) auf der Basis der ersten Bitkette (B0-B5) eines angelegten Codes variabler Länge, und
- vi) Auswählen der zweiten Bitkette aus der Gesamtheit des Codes variabler Länge, der parallel anliegt, auf der Basis des Ergebnisses der Auswahl, und Anlegen derselben an die Speichervorrichtung (21a) als Adreßsignal (A2-A6) zum Lesen des entsprechenden Informationsgegenstandes.
9. Verfahren nach Anspruch 8, bei dem
der Schritt des Auswählens von einer der Mehrzahl von Banks den
Schritt des Auswählens von einer der Mehrzahl von Banks (BA0-BA3)
durch bedingte Bewertung mittels Software aufweist.
10. Decodierverfahren für Codes variabler Länge, mit
den Schritten:
- i′) Vorbereiten mehrerer Arten von Tabellen, die jeweils die Korrespondenz zwischen einer Mehrzahl von Codes variabler Länge und einer Mehrzahl von Informationsgegenständen angibt, die zur Decodierung der Mehrzahl von Codes variabler Länge benutzt werden,
- ii′) Klassifizieren der Mehrzahl von Codes variabler Länge und der Mehrzahl von Informationsgegenständen in eine Mehrzahl von Gruppen (G1-G4) auf der Basis einer ersten Bitkette (B₀-B₅), die aus einem oder mehreren vorbestimmten Bits des jeweiligen Codes variabler Länge besteht,
- iii′) Bestimmen der Korrespondenz der mehrfachen Arten von Tabellen mit einer Mehrzahl von Bereichen (R1, R2), die in der Speichervorrichtung (21b) enthalten sind,
- iv′) Speichern eines jeden Informationsgegenstandes in der jeweiligen Gruppe in der jeweiligen Tabelle an einer Adresse in der entsprechenden Bank im entsprechenden Bereich in der Speichervorrichtung (21a) , die von einer zweiten Bitkette angegeben wird, die aus einem oder mehreren Bits des entsprechenden Codes variabler Länge besteht, wobei die zweite Bitkette unabhängig von den zweiten Bitketten in den anderen Gruppen bestimmt wird,
- vii) Auswählen von einer der Mehrzahl von Bereichen (R1, R2) in der Speichervorrichtung (21b) zum Auswählen von einer der mehrfachen Arten von Tabellen,
- v′) Auswählen von einer der Mehrzahl von Banks (BA0-BA3) im ausgewählten Bereich der Speichervorrichtung (21b) auf der Basis der ersten Bitkette (B0-B5) des angelegten Codes variabler Länge, und
- vi′) Auswählen der zweiten Bitkette aus der Gesamtheit des Codes variabler Länge, der parallel anliegt, auf der Basis des Ergebnisses der Auswahl der Mehrzahl von Banks, und Anlegen derselben an die Speichervorrichtung (21b) als Adreßsignal (A2-A6) zum Lesen des entsprechenden Informationsgegenstandes.
11. Verfahren nach einem der Ansprüche 8 bis 10, bei dem
jeder der Informationsgegenstände einen Wert fester Länge und eine
Codelänge für den entsprechenden Code variabler Länge aufweist.
12. Verfahren nach einem der Ansprüche 8 bis 11, bei dem
die erste Bitkette eine vorbestimmte Anzahl höherer Bits des
jeweiligen Codes variabler Länge aufweist, und
der Schritt des Klassifizierens in Gruppen den Schritt des
Klassifizierens der Mehrzahl von Codes variabler Länge und der
Mehrzahl von Informationsgegenständen in die Mehrzahl von Gruppen
(G1-G4) auf der Basis der Anzahl der Bits desselben Wertes
aufweist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP20242792A JP3003894B2 (ja) | 1992-07-29 | 1992-07-29 | 可変長復号器 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4322995A1 DE4322995A1 (de) | 1994-02-03 |
DE4322995C2 true DE4322995C2 (de) | 1996-04-18 |
Family
ID=16457336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19934322995 Expired - Fee Related DE4322995C2 (de) | 1992-07-29 | 1993-07-09 | Decoder und Decodierungsverfahren für Codes variabler Länge |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP3003894B2 (de) |
DE (1) | DE4322995C2 (de) |
FR (1) | FR2694425B1 (de) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2722041B1 (fr) * | 1994-06-30 | 1998-01-02 | Samsung Electronics Co Ltd | Decodeur de huffman |
KR0152035B1 (ko) * | 1994-09-26 | 1998-10-15 | 김광호 | 가변장복호화방법 및 그 장치 |
JPH10105672A (ja) * | 1996-09-27 | 1998-04-24 | Nec Corp | コンピュータ及びそれに使用する演算機能付きメモリ集積回路 |
JP3600487B2 (ja) | 1999-08-31 | 2004-12-15 | 株式会社東芝 | 可変長復号器及びこれを用いた動画像復号装置 |
DE10003166A1 (de) * | 2000-01-25 | 2001-07-26 | Ingo Krumpholz | Waringsche Datenspeicherung |
JP2003309471A (ja) | 2002-04-15 | 2003-10-31 | Fujitsu Ltd | 可変長符号データ復号装置および復号方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3701111A (en) * | 1971-02-08 | 1972-10-24 | Ibm | Method of and apparatus for decoding variable-length codes having length-indicating prefixes |
US3883847A (en) * | 1974-03-28 | 1975-05-13 | Bell Telephone Labor Inc | Uniform decoding of minimum-redundancy codes |
US4899149A (en) * | 1986-02-28 | 1990-02-06 | Gary Kahan | Method of and apparatus for decoding Huffman or variable-length coees |
JPH01312625A (ja) * | 1988-06-13 | 1989-12-18 | Fuji Xerox Co Ltd | コード変換装置 |
JP2766302B2 (ja) * | 1989-04-06 | 1998-06-18 | 株式会社東芝 | 可変長符号並列解読方法および装置 |
JPH03145223A (ja) * | 1989-10-30 | 1991-06-20 | Toshiba Corp | 可変長符号復調装置 |
-
1992
- 1992-07-29 JP JP20242792A patent/JP3003894B2/ja not_active Expired - Fee Related
-
1993
- 1993-07-09 DE DE19934322995 patent/DE4322995C2/de not_active Expired - Fee Related
- 1993-07-29 FR FR9309357A patent/FR2694425B1/fr not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0653840A (ja) | 1994-02-25 |
FR2694425B1 (fr) | 1996-08-02 |
DE4322995A1 (de) | 1994-02-03 |
JP3003894B2 (ja) | 2000-01-31 |
FR2694425A1 (fr) | 1994-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE60100416T2 (de) | Dekoder für Kode variabler Länge | |
DE69720559T2 (de) | Methode zur Bildkodierung mit Kodes variabler Länge | |
DE69030485T2 (de) | Binärreflexivkodierer zur Vektorquantifizierung | |
DE69535118T2 (de) | Verfahren zur Datenkomprimierung und -dekomprimierung und zugehöriges Datenkomprimierungs- und -dekomprimierungsgerät | |
DE60035171T2 (de) | Verfahren und Schaltungen zum schnellen Auffinden des minimalen / maximalen Wertes in einer Menge von Zahlen | |
DE3636675C2 (de) | ||
DE69127739T2 (de) | Bilddatenverarbeitungsgerät | |
DE602004010922T2 (de) | Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen | |
DE68918605T2 (de) | Verfahren zur Speicherung und Übertragung von Bilddaten als Bilddatengruppe, passend zur Bildsuche. | |
DE19531049C2 (de) | Verfahren zum Komprimieren von Daten und Codierungsvorrichtung | |
DE69632978T2 (de) | Multi-Operand-Addierer, der Parallelzähler benutzt | |
DE69726661T2 (de) | Verfahren und vorrichtung zur kodierung eines digitalen informationssignales | |
DE3750791T2 (de) | Sehr schnelle Transformationsvorrichtung. | |
DE69025033T2 (de) | Vorrichtung zur Dekodierung von Kode variabler Länge und geeignetes Adresssteuerungsverfahren | |
DE69026292T2 (de) | Methode zur Bilddatenkodierung | |
DE19821727B4 (de) | Vorrichtung und Verfahren zur Codierung mit variabler Länge | |
DE3940682C2 (de) | Codiervorrichtung und System, bestehend aus einer Codiervorrichtung und einer Decodiervorrichtung für digitale Bilddaten | |
DE69026320T2 (de) | Halbtonbilddatenkomprimierungsverfahren und -vorrichtung | |
DE68921949T2 (de) | System zur Kodierung eines Bildsignals. | |
DE3346241A1 (de) | Parallelverknuepfungsschaltung mit verkuerztem uebertragsdurchlauf | |
DE69816710T2 (de) | Digitaler Bildprozessor | |
DE68926676T2 (de) | Verfahren und gerät zur statistischen kodierung von digitalen daten | |
DE2208664A1 (de) | Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge | |
DE69125424T2 (de) | Vorrichtung zur variablen Längenkodierung und Vorrichtung zur variablen Längendekodierung | |
DE2652459A1 (de) | Umsetz-vorrichtung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |