DE4322995C2 - Decoder und Decodierungsverfahren für Codes variabler Länge - Google Patents

Decoder und Decodierungsverfahren für Codes variabler Länge

Info

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
Application number
DE19934322995
Other languages
English (en)
Other versions
DE4322995A1 (de
Inventor
Shinichi Uramoto
Akihiko Takabatake
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of DE4322995A1 publication Critical patent/DE4322995A1/de
Application granted granted Critical
Publication of DE4322995C2 publication Critical patent/DE4322995C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • H03M7/425Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory for the decoding process only

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.
(1) Erste Ausführungsform
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.
(2) Zweite Ausführungsform
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.
(3) Dritte Ausführungsform
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.
DE19934322995 1992-07-29 1993-07-09 Decoder und Decodierungsverfahren für Codes variabler Länge Expired - Fee Related DE4322995C2 (de)

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)

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

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

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