DE4322995A1 - Decoder und Decodierungsverfahren zum Decodieren von Codes variabler Länge - Google Patents

Decoder und Decodierungsverfahren zum Decodieren von Codes variabler Länge

Info

Publication number
DE4322995A1
DE4322995A1 DE19934322995 DE4322995A DE4322995A1 DE 4322995 A1 DE4322995 A1 DE 4322995A1 DE 19934322995 DE19934322995 DE 19934322995 DE 4322995 A DE4322995 A DE 4322995A DE 4322995 A1 DE4322995 A1 DE 4322995A1
Authority
DE
Germany
Prior art keywords
variable length
codes
code
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.)
Granted
Application number
DE19934322995
Other languages
English (en)
Other versions
DE4322995C2 (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)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Image Processing (AREA)

Description

Die Erfindung betrifft einen Decoder für einen Code variabler Länge nach dem Oberbegriff des Anspruches 1 oder 6 und ein Verfahren nach dem Oberbegriff des Anspruches 10 oder 14. Die Erfindung betrifft insbesondere einen Decoder zum Decodieren von Codes variabler Länge mittels Tabellensuchens.
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 ein Blockdiagramm der Struktur eines Decoders für Codes variabler Länge. Diese 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 11Bit. 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 2⁸ 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 der 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.
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 6 gekennzeichnete Vorrichtung. Das Verfahren ist in Anspruch 10 oder 14 gekennzeichnet. Ein erfindungsgemäßer Decoder für Codes variabler Länge weist eine Speichervorrichtung, eine Bank-Auswahlschaltung und einen Bitselektor auf.
Die Speichervorrichtung weist einen Adreßraum auf, der in eine Mehrzahl von Banks unterteilt ist, und speichert eine Tabelle, die die Korrespondenz zwischen einer Mehrzahl von Codes variabler Länge und einer Mehrzahl von Informationsgegenständen darstellt, die jeweils zur Decodierung der Mehrzahl von Codes variabler Länge benutzt werden.
Die Mehrzahl von Codes variabler Länge und die Mehrzahl von Informationsgegenständen in der Tabelle werden auf der Basis von ersten Bitketten in eine Mehrzahl von Gruppen klassifiziert, wobei jede Bitkette im jeweiligen Code variabler Länge aus einem oder mehreren vorbestimmten Bits besteht. Die Mehrzahl von Gruppen entspricht der Mehrzahl von Banks.
Die Speichervorrichtung speichert jeden Informationsgegenstand in der jeweiligen Gruppe an einer Adresse in der entsprechenden Bank, die durch eine zweite Bitkette angegeben wird, die aus einem oder mehreren Bits des entsprechenden Codes variabler Länge besteht. Die zweite Bitkette wird unabhängig von denen in den anderen Gruppen bestimmt.
Die Bank-Auswahlschaltung wählt eine Bank der Mehrzahl von Banks in der Speichervorrichtung auf der Basis der ersten Bitkette des angelegten Codes variabler Länge aus.
Der Bitselektor ist vom Ausgangssignal der Bank-Auswahlschaltung abhängig, um die zweite Bitkette entsprechend dem angelegten Code variabler Länge auszuwählen, und legt sie als Adreßsignal an.
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 angelegte 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.
Ein Decoder für Codes variabler Länge nach einem weiteren Aspekt der Erfindung weist eine Speichervorrichtung, eine Bereichsauswahlschaltung, eine Bank-Auswahlschaltung und einen Bitselektor auf.
Die Speichervorrichtung weist einen Adreßraum auf, der eine Mehrzahl von Bereiche enthält, wobei jeder in eine Mehrzahl von Banks unterteilt ist, und speichert mehrere Arten von Tabellen. Jede Tabelle gibt die Korrespondenz zwischen einer Mehrzahl von Codes variabler Länge und eine Mehrzahl von Informationsgegenständen, die jeweils zum Decodieren der Mehrzahl von Codes variabler Länge verwendet werden, an.
Die Mehrzahl der Bereiche entspricht den mehrfachen Arten der Tabellen. Die Mehrzahl von Codes variabler Länge und die Mehrzahl der Informationsgegenstände in der jeweiligen Tabelle werden auf der Basis erster Bitketten, die jeweils aus einem oder mehreren vorbestimmten Bits des jeweiligen Codes variabler Länge bestehen, in eine Mehrzahl von Gruppen klassifiziert. Die Mehrzahl von Gruppen entspricht der Mehrzahl von Banks im entsprechenden Bereich.
Die Speichervorrichtung speichert jeden Informationsgegenstand in der jeweiligen Gruppe in der jeweiligen Tabelle an einer Adresse, die durch eine zweite Bitkette aus einem oder mehreren Bits des entsprechenden Codes variabler Länge angegeben wird, in der entsprechenden Bank im entsprechenden Bereich. Die zweite Bitkette wird unabhängig von denen in den anderen Gruppen bestimmt.
Die Bereichsauswahlschaltung ist von eine vorbestimmten Signal abhängig, um einen der Mehrzahl von Bereichen in der Speichervorrichtung auszuwählen, um eine der mehrfachen Arten von Tabellen zu wählen.
Die Bank-Auswahlschaltung wählt eine der Mehrzahl von Banks im ausgewählten Bereich der Speichervorrichtung auf der Basis der ersten Bitkette des angelegten Codes variabler Länge aus.
Der Bitselektor ist von einem Ausgangssignal der Bank- Auswahlschaltung abhängig, um die zweite Bitkette entsprechend dem angelegten Code variabler Länge auszuwählen, und legt sie als Adreßsignal an die Speichervorrichtung an.
Entsprechend dem Decoder für Codes variabler Länge können die mehrfachen Arten von Tabellen in einem kleinen Adreßraum gespeichert werden.
Ein Decoder für Codes variabler Länge nach einem weiteren Aspekt der Erfindung weist eine Speichervorrichtung, eine Bank-Auswahlschaltung und einen Bitselektor auf.
Der Adreßraum der Speichervorrichtung ist in eine Mehrzahl von Banks unterteilt und speichert eine Tabelle, die die Korrespondenz zwischen einer Mehrzahl von Codes variabler Länge und einer Mehrzahl von Informationsgegenständen, die zur Decodierung der Mehrzahl von Codes variabler Länge benutzt werden, angibt.
Die Mehrzahl von Codes variabler Länge und die Mehrzahl der Informatonsgegenstände in der Tabelle werden auf der Basis erster Bitketten, die jeweils aus einem oder mehreren vorbestimmten Bits des jeweiligen Codes variabler Länge bestehen, in eine Mehrzahl von Gruppen klassifiziert. Die Mehrzahl von Gruppen entspricht der Mehrzahl von Banks.
Die Speichervorrichtung speichert jeden Informationsgegenstand in der jeweiligen Gruppe an einer Adresse, die durch eine zweite Bitkette aus einem oder mehreren Bits des entsprechenden Codes variabler Länge angegeben wird, in der entsprechenden Bank. Die zweite Bitkette wird unabhängig von denen in den anderen Gruppen bestimmt.
Die Bank-Auswahlschaltung wählt eine der Mehrzahl von Banks in der Speichervorrichtung auf der Basis der ersten Bitkette des angelegten Codes variabler Länge durch bedingte Bewertung mit Hilfe von Software aus.
Der Bitselektor ist von einem Ausgangssignal der Bank- Auswahlschaltung abhängig, um die zweite Bitkette entsprechend dem angelegten Code variabler Länge auszuwählen, und legt sie als Adreßsignal an die Speichervorrichtung an.
Entsprechend dem Decoder für Codes variabler Länge können die Codes variabler Länge mittels Software decodiert werden.
Entsprechend der Erfindung 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.
Weitere Merkmale und Zweckmäßigkeiten der Erfindung ergeben sich aus der Beschreibung von Ausführungsbeispielen anhand der Figuren. 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 eines 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 Blockschaltbild 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) B0 und das rechte Endbit das niederste Bit (das niederwertigste Bit) B10 ist.
Der Code variabler Länge mit den höheren vier Bits B0-B3, die die folgenden Beziehung erfüllen, wird in die erste Gruppe G1 klassifiziert.
B0 + B1 + B2 + B3 = 0 (1).
Der Code variabler Länge mit den höheren fünf Bits B0-B4, die die folgenden Beziehung erfüllen, wird in die zweite Gruppe G2 klassifiziert.
B0 + B1 + B2 + B3 = 0 und B4 = 1 (2).
Der Code variabler Länge mit den höheren sechs Bits B0-B5, die die folgenden Beziehung erfüllen, wird in die dritte Gruppe G3 klassifiziert.
B0 + B1 + B2 + B3 + B4 = 0 und B5 = 1 (3).
Der Code variabler Länge mit den höheren sieben Bits B0-B6, die die folgenden Beziehung erfüllen, wird in die vierte Gruppe G4 klassifiziert.
B0 + B1 + B2 + B3 + B4 + B5 = 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 B0-B4 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 B4-B8 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 B6-B10 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 B6-B10 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 B0-B3 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 B0-B3 des Codes variabler Länge gleich "0", und das Bit B4 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 B0-B4 des Codes variabler Länge gleich "0", und das Bit B5 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 B0-B5 des Codes variabler Länge gleich "0". Dadurch erzeugt das NOR-Gatter 221 eine Ausgabe "1", und das UND-Gatter 223 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 I3 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 13 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ß I4 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 I1, I2, I3 und I4 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, ein 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 Zeitscheibenverfahren 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 ersten 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 (16)

1. Decoder für Codes variabler Länge, gekennzeichnet durch
eine 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,
wobei die Mehrzahl von Codes variabler Länge und die Mehrzahl von Informationsgegenständen in der Tabelle auf der Basis von ersten Bitketten (B0-B5) in eine Mehrzahl von Gruppen (G1-G4) klassifiziert werden, wobei jede 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, 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,
eine 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
eine 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).
2. Decoder für Codes variabler Länge nach Anspruch 1, dadurch gekennzeichnet, daß jeder der Informationsgegenstände einen Wert fester Länge und eine Codelänge für den entsprechenden Code variabler Länge aufweist.
3. Decoder für Codes variabler Länge nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß
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 kontinuierlich von einem ersten Bit in der ersten Bitkette bestimmt wird.
4. Decoder für Codes variabler Länge nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß die Bank-Auswahlvorrichtung (22) eine der Mehrzahl von Banks (BA0-BA3) in der Speichervorrichtung (21a) durch bedingte Bewertung mittels Software auswählt.
5. Decoder für Codes variabler Länge nach Anspruch 4, dadurch gekennzeichnet, daß die bedingte Bewertung mittels Software die Bewertung umfaßt, ob eine vorbestimmte Anzahl höherer Bits einen vorbestimmten Wert aufweist oder nicht.
6. Decoder für Codes variabler Länge, gekennzeichnet durch
eine 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,
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 (B0-B5) in eine Mehrzahl von Gruppen (G1-G4) klassifiziert werden, wobei jede 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,
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,
eine 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,
eine 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
eine 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).
7. Decoder für Codes variabler Länge nach Anspruch 6, dadurch gekennzeichnet, daß jeder der Informationsgegenstände einen Wert fester Länge und eine Codelänge für den entsprechenden Code variabler Länge aufweist.
8. Decoder für Codes variabler Länge nach Anspruch 6 oder 7, dadurch gekennzeichnet, daß 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 kontinuierlich von einem ersten Bit in der ersten Bitkette bestimmt wird.
9. Decoder für Codes variabler Länge nach einem der Ansprüche 6 bis 8, dadurch gekennzeichnet, daß das vorbestimmte Signal einen Wert fester Länge aufweist, der vom Speichermittel (21b) gelesen wird.
10. Decodierverfahren für Codes variabler Länge, gekennzeichnet durch die Schritte:
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,
Klassifizieren der Mehrzahl von Codes variabler Länge und der Mehrzahl von Informationsgegenständen in der Tabelle auf der Basis einer ersten Bitkette (B0-B5), die aus einem oder mehreren vorbestimmten Bits des jeweiligen Codes variabler Länge besteht, in eine Mehrzahl von Gruppen (G1-G4),
Bestimmen der Korrespondenz der Mehrzahl von Gruppen (G1-G4) mit einer Mehrzahl von Banks (BA0-BA3), die in der Speichervorrichtung (21a) enthalten sind,
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,
Auswählen von einer 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
Auswählen der zweiten Bitkette entsprechend dem angelegten Code variabler Länge auf der Basis des Ergebnisses der Auswahl, und
Anlegen derselben an die Speichervorrichtung (21a) als Adreßsignal (A2-A6) zum Lesen des entsprechenden Informationsgegenstandes.
11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß 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 Anspruch 10 oder 11, dadurch gekennzeichnet, daß die erste Bitkette eine vorbestimmte Anzahl höherer Bits des jeweiligen Codes variabler Länge aufweist, und der Schritt des Klassifizierens in Gruppen der Schritte 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 kontinuierlich von einem ersten Bit in der ersten Bitkette aufweist.
13. Verfahren nach einem der Ansprüche 10 bis 12, dadurch gekennzeichnet, daß 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.
14. Decodierverfahren für Codes variabler Länge, gekennzeichnet durch die Schritte:
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,
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 (B0-B5), die aus einem oder mehreren vorbestimmten Bits des jeweiligen Codes variabler Länge besteht,
Bestimmen der Korrespondenz der mehrfachen Arten von Tabellen mit einer Mehrzahl von Bereichen (R1, R2), die in der Speichervorrichtung (21b) enthalten sind,
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,
Auswählen von einer der Mehrzahl von Bereichen (R1, R2) in der Speichervorrichtung (21b) zum Auswählen von einer der mehrfachen Arten von Tabellen,
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
Auswählen der zweiten Bitkette entsprechend dem angelegten Code variabler Länge 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.
15. Verfahren nach Anspruch 14, dadurch gekennzeichnet, daß jeder der Informationsgegenstände einen Wert fester Länge und eine Codelänge für den entsprechenden Code variabler Länge aufweist.
16. Verfahren nach Anspruch 14 oder 15, dadurch gekennzeichnet, daß die erste Bitkette eine vorbestimmte Anzahl höherer Bits des jeweiligen Codes variabler Länge aufweist, und der Schritt des Klassifizierens in Gruppen der Schritte 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 kontinuierlich von einem ersten Bit in der ersten Bitkette 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 true DE4322995A1 (de) 1994-02-03
DE4322995C2 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2722041A1 (fr) * 1994-06-30 1996-01-05 Samsung Electronics Co Ltd Decodeur de huffman
EP0703675A2 (de) * 1994-09-26 1996-03-27 Samsung Electronics Co., Ltd. Verfahren und Vorrichtung zur Dekodierung mit variablen Längen
DE10003166A1 (de) * 2000-01-25 2001-07-26 Ingo Krumpholz Waringsche Datenspeicherung

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10105672A (ja) * 1996-09-27 1998-04-24 Nec Corp コンピュータ及びそれに使用する演算機能付きメモリ集積回路
JP3600487B2 (ja) 1999-08-31 2004-12-15 株式会社東芝 可変長復号器及びこれを用いた動画像復号装置
JP2003309471A (ja) 2002-04-15 2003-10-31 Fujitsu Ltd 可変長符号データ復号装置および復号方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4899149A (en) * 1986-02-28 1990-02-06 Gary Kahan Method of and apparatus for decoding Huffman or variable-length coees
US5032838A (en) * 1989-04-06 1991-07-16 Kabushiki Kaisha Toshiba Variable length code parallel decoding apparatus and method

Family Cites Families (4)

* 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
JPH01312625A (ja) * 1988-06-13 1989-12-18 Fuji Xerox Co Ltd コード変換装置
JPH03145223A (ja) * 1989-10-30 1991-06-20 Toshiba Corp 可変長符号復調装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4899149A (en) * 1986-02-28 1990-02-06 Gary Kahan Method of and apparatus for decoding Huffman or variable-length coees
US5032838A (en) * 1989-04-06 1991-07-16 Kabushiki Kaisha Toshiba Variable length code parallel decoding apparatus and method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2722041A1 (fr) * 1994-06-30 1996-01-05 Samsung Electronics Co Ltd Decodeur de huffman
EP0703675A2 (de) * 1994-09-26 1996-03-27 Samsung Electronics Co., Ltd. Verfahren und Vorrichtung zur Dekodierung mit variablen Längen
EP0703675A3 (de) * 1994-09-26 1997-04-23 Samsung Electronics Co Ltd Verfahren und Vorrichtung zur Dekodierung mit variablen Längen
DE10003166A1 (de) * 2000-01-25 2001-07-26 Ingo Krumpholz Waringsche Datenspeicherung

Also Published As

Publication number Publication date
JP3003894B2 (ja) 2000-01-31
DE4322995C2 (de) 1996-04-18
FR2694425A1 (fr) 1994-02-04
FR2694425B1 (fr) 1996-08-02
JPH0653840A (ja) 1994-02-25

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
DE69425769T2 (de) Kodierung von digitalen Signalen
DE602004010922T2 (de) Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen
DE69127739T2 (de) Bilddatenverarbeitungsgerät
DE69535118T2 (de) Verfahren zur Datenkomprimierung und -dekomprimierung und zugehöriges Datenkomprimierungs- und -dekomprimierungsgerät
DE3636675C2 (de)
DE68918605T2 (de) Verfahren zur Speicherung und Übertragung von Bilddaten als Bilddatengruppe, passend zur Bildsuche.
DE60035171T2 (de) Verfahren und Schaltungen zum schnellen Auffinden des minimalen / maximalen Wertes in einer Menge von Zahlen
DE69132017T2 (de) Kodierungsvorrichtung
DE69315174T2 (de) Mehrzweckkodierer von Abbruchkoden und Lauflängen/Amplituden für eine Vorrichtung zum Verarbeiten eines digitalen Videosignals
DE69706439T2 (de) Rechnersortiersystem zur datenkompression
DE69726661T2 (de) Verfahren und vorrichtung zur kodierung eines digitalen informationssignales
DE69527883T2 (de) Decodierung eines Huffman Codes mit MSB und LSB Tabellen
DE19821727B4 (de) Vorrichtung und Verfahren zur Codierung mit variabler Länge
DE69517283T2 (de) Bildsignalkodierungsvorrichtung die zwischen variabler Längenkodierung und fester Längenkodierung wechselt
DE69128801T2 (de) Kodierungssystem
DE69329092T2 (de) Huffman-Kode-Decodierungsschaltung
DE68921949T2 (de) System zur Kodierung eines Bildsignals.
DE69816710T2 (de) Digitaler Bildprozessor
DE68926676T2 (de) Verfahren und gerät zur statistischen kodierung von digitalen daten
DE69523516T2 (de) Digitale Vorrichtung zum Kodieren/Dekodieren unter Verwendung von Codes mit variablen Lauflängen
DE69125424T2 (de) Vorrichtung zur variablen Längenkodierung und Vorrichtung zur variablen Längendekodierung
DE69224546T2 (de) Kodier- und Dekodiereinrichtungen

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