DE69416773T2 - Variabler Längen-Kodieren und variabler Längen-Dekodierer - Google Patents

Variabler Längen-Kodieren und variabler Längen-Dekodierer

Info

Publication number
DE69416773T2
DE69416773T2 DE69416773T DE69416773T DE69416773T2 DE 69416773 T2 DE69416773 T2 DE 69416773T2 DE 69416773 T DE69416773 T DE 69416773T DE 69416773 T DE69416773 T DE 69416773T DE 69416773 T2 DE69416773 T2 DE 69416773T2
Authority
DE
Germany
Prior art keywords
data
code length
register
code
signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69416773T
Other languages
English (en)
Other versions
DE69416773D1 (de
Inventor
Seong Wook Hong
Chai Yeal Rim
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.)
LG Electronics Inc
Original Assignee
LG Electronics Inc
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
Priority claimed from KR1019930019513A external-priority patent/KR960005200B1/ko
Priority claimed from KR1019930019512A external-priority patent/KR950010427B1/ko
Application filed by LG Electronics Inc filed Critical LG Electronics Inc
Application granted granted Critical
Publication of DE69416773D1 publication Critical patent/DE69416773D1/de
Publication of DE69416773T2 publication Critical patent/DE69416773T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

    HINTERGRUND DER ERFINDUNG Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft im allgemeinen Decodierer mit variabler Länge und insbesondere einen Decodierer mit variabler Länge zur Durchführung einer Decodierung mit variabler Länge für die statistisch codierten Videodaten von dem Codierer mit variabler Länge in Echtzeit.
  • Beschreibung des Standes der Technik
  • Im allgemeinen wird eine statistische Codierung zum Komprimieren digitaler Videodaten ohne Verlust verwendet. Bei einer derartigen statistischen Codierungstechnik wird die Codierung mit variabler Länge in dem Fall angewandt, wenn eine Datengenerierungswahrscheinlichkeit nicht festgelegt ist. Das heißt, die Codierung mit variabler Länge wird verwendet, um Daten der höheren Generierungswahrscheinlichkeit als kürzeren Code darzustellen, während Daten der geringeren Generierungswahrscheinlichkeit als längerer Code dargestellt werden. Als effektivster statistischer Code ist ein Huffman-Code allgemein bekannt.
  • In der statistischen Codierungstechnik wird zunächst eine Quellencodierung für die digitalen Videodaten durchgeführt, um eine Datenredundanz zu entfernen, die in einer Signalquelle vorhanden ist. Die digitalen Videodaten werden dann durch die Lauflängencodierung und die Codierung mit variabler Länge statistisch codiert.
  • Dann werden die quellencodierten und statistisch codierten Daten durch einen Decodierer mit variabler Länge decodiert.
  • Mit Bezugnahme auf Fig. 1 ist ein Blockdiagramm eines herkömmlichen Codierers mit variabler Länge dargestellt, wie aus US-A-8173695 bekannt ist. Wie in dieser Zeichnung dargestellt ist, umfaßt der herkömmliche Codierer mit variabler Länge ein Register 7 zum vorübergehenden Speichern von Daten VLi, die in dieses eingegeben werden, einen Codegenerator 10 zum Erzeugen eines Codewortes VCW und einer Codelänge VCL, entsprechend den Ausgabedaten von dem Register 7, und zum Ausgeben des erzeugten Codewortes VCW und der Codelänge VCL an das Register 8 bzw. 9, und Trommelverschieber 5 und 6 zum Verschieben eines ausgegebenen Codewortes von dem Register 8 und eines ausgegebenen Codewortes von einem Register 4.
  • Das Register 4 ist zum vorübergehenden Speichern eines von dem Trommelverschieber 6 ausgegebenen Codewortes und zum Ausgeben des vorübergehend gespeicherten Codewortes an die Trommelverschieber 5 und 6 ausgebildet.
  • Ebenso umfaßt der herkömmliche Codierer mit variabler Länge ein Register 3 zum vorübergehenden Speichern eines von dem Trommelverschieber 5 ausgegebenen Codewortes und zum Ausgeben von mit variabler Länge codierten Daten VLCo, und eine Bitoperationseinheit 1 zur Durchführung einer logischen Operation für ein Rückstellsignal RST und Ausgabedaten von einem Trommelverschieber 2, um ein verfügbares Datensignal AVLC auszugeben und eine Bitinformation VL1 zu den Trommelverschiebern 2 und 5 zu leiten.
  • Der Trommelverschieber 2 ist zum Akkumulieren einer vom Register 9 ausgegebenen Codelänge ausgebildet.
  • Die Bitoperationseinheit 1 enthält einen Auffangspeicher 14, Flags 15-18, ein ODER-Gatter OR1, ein NOR-Gatter NOR1 und ein UND-Gatter AN1. Der Codegenerator 10 besteht aus einer Tabelle 11 für das uncodierte Wort einer UND-Ebene sowie einer Codeworttabelle 12 und einer Codelängentabelle 13 von ODER-Ebenen. Die Tabelle 11 für das uncodierte Wort, die Codeworttabelle 12 und die Codelängentabelle 13 sind jeweils ein programmiertes, logisches Datenfeld (PLA).
  • Mit Bezugnahme auf Fig. 6 ist ein Blockdiagramm eines herkömmlichen Decodierers mit variabler Länge dargestellt. Wie in dieser Zeichnung dargestellt ist, umfaßt der herkömmliche Decodierer mit variabler Länge eine Schnittstellenschaltung 609 zum Anordnen und Verschieben von Daten Vi, die zu einem Code mit variabler Länge komprimiert sind, die in diese zur Bezeichnung eines zu decodierenden Codewortes eingegeben werden, und eine Decodierschaltung 610 zum Vergleichen des bezeichneten Codewortes von der Schnittstellenschaltung 609 mit einer darin gespeicherten Codewort-Information, zum Leiten einer Längeninformation für ein von der Schnittstellenschaltung 609 bezeichnetes Codewort zu der Schnittstellenschaltung 609 in Übereinstimmung mit dem Ergebnis des Vergleichs, und zum Ausgeben eines decodierten Wortes V0-V3, das dem bezeichneten Codewort von der Schnittstellenschaltung 609 entspricht, in Übereinstimmung mit dem verglichenen Ergebnis.
  • Die Schnittstellenschaltung 609 enthält eine Warteschaltung 601 zum Eingeben der Daten Vi durch einen Puffer B1 und zum Zwischenspeichern der eingegebenen Daten Vi, einen Trommelverschieber 602 zur Bildung eines 16-Bit Fensters I0-I15 entsprechend den Ausgabedaten VL0 und VL1 von der Warteschaltung 601, und einen Addierer 606 zum Addieren von Ausgabedaten VL2 von einer Warteschaltung 607 und einer Wortlänge L0-L3 von der Decodierschaltung 610 und zum Ausgeben der resultierenden Daten S0 an die Warteschaltung 607.
  • Die Warteschaltung 607 ist zum Zwischenspeichern der Ausgabedaten S0 von dem Addierer 606, zum Ausgeben einer Verschiebungsbitinformation an den Trommelverschieber 602 und zum Speichern eines Übertragausgangs C0 von dem Addierer 606 ausgebildet.
  • Ebenso enthält die Schnittstellenschaltung 609 einen Lesesignalgenerator 608 zur UND-Verknüpfung eines Taktsignals CLK mit einem Übertrag VL3 von der Warteschaltung 607, um ein Lesesignal RD zu erzeugen, und zum Ausgeben des erzeugten Lesesignals RD an den Puffer B1 und die Warteschaltung 601.
  • Die Decodierschaltung 610 enthält eine Codewortespeichereinheit 603 zum Speichern von Information hinsichtlich eines von dem Trommelverschieber 602 ausgegebenen Codewortes, eine Wortlängenspeichereinheit 604 zum Ausgeben der Wortlänge L0-L3 gemäß den Ausgabedaten Cw von der Codewortespeichereinheit 603, und eine Speichereinheit 605 für das decodierte Wort zum Ausgeben des decodierten Wortes V0-V3 durch einen Auffangspeicher L4 in Übereinstimmung mit den Ausgabedaten Cw von der Codewortespeichereinheit 603.
  • Die Codewortespeichereinheit 603 ist ein PLA einer UND- Ebene, und die Wortlängenspeichereinheit 604 und die Speichereinheit 605 für das decodierte Wort sind PLAs von ODER-Ebenen.
  • Die Funktionsweise des herkömmlichen Codierers mit variabler Länge mit der obenerwähnten Konstruktion wird in der Folge mit Bezugnahme auf Fig. 1 beschrieben.
  • Als Reaktion auf das Taktsignal CLK und ein Freigabesignal EN speichert das Register 7 vorübergehend die eingegebenen Daten VLi und gibt diese dann an den Codegenerator 10 aus. Das Codewort VCW und die Codelänge. VCL, die den Ausgabedaten von dem Register 7 entsprechen, werden durch die Tabelle 11 für das uncodierte Wort, die Codeworttabelle 12 und die Codelängentabelle 13 in dem Codegenerator 10 bestimmt und dann zu dem Register 8 bzw. 9 geleitet.
  • Das Codewort, das vorübergehend in dem Register 8 gespeichert wird, wird als Reaktion auf das Taktsignal CLK und das Freigabesignal EN zu den Trommelverschiebern 5 und 6 geleitet. Jeder der Trommelverschieber 5 und 6 verwendet ein 16-Bit Gleitfenster für einen 31-Bit Eingang. Bei Empfang der aktuellen Codelänge von dem Register 9 verschiebt der Trommelverschieber 6 das Codewort von dem Register 8 um die von dem Register 9 empfangene Codelänge und gibt das verschobene Codewort an das Register 4 aus. In diesem Fall wird ein ganz rechtes Bit des Registers 4 ein Letztdatenbit, wodurch veranlaßt wird, daß die Daten, die im Register 4 gespeichert sind, mit den anschließend eingegebenen Daten verknüpft werden.
  • Der Trommelverschieber 5 wird durch eine Restbitzahl des Auffangspeichers 14 gesteuert. Der Auffangspeicher 14 dient zum Speichern der Anzahl von Bits, die in dem Register 4 verbleiben. Das heißt, die Restbitzahl des Auffangspeichers 14 stellt die Anzahl von Bits des Codewortes dar, die in dem Register 4 vorhanden ist. Die Restbits des Registers 4 werden auf der Basis der linken Seite von dem Trommelverschieber 5 angeordnet. Wenn die Summe der Restbitzahl und der Bitzahl des aktuellen Codewortes größer oder gleich 16 ist, werden 16-Bit Daten, die zuerst zu codieren sind, von dem Trommelverschieber 5 zu dem Register 3 geleitet.
  • Andererseits dient die Kombination aus dem Trommelverschieber 2 und dem Auffangspeicher 14 als ein Akkumulator zum Akkumulieren einer Codelänge. Wenn die Restbitzahl in dem Register 4 größer oder gleich 16 ist, werden die rechten 16 Bits der Ausgabedaten von dem Trommelverschieber 2 alle 0 und das Flag 15 wird auf 1 gesetzt, wodurch die Gegenwart verfügbarer Daten angezeigt wird. Die Ausgabedaten von dem Auffangspeicher 14 werden zu dem Trommelverschieber 2 geleitet, so daß der Trommelverschieber 2 als Rotator arbeiten kann. Die andere 16-Bit Eingabe in den Trommelverschieber 2 wird mit "0" verknüpft, um einen Übertragszustand zu suchen. Das heißt, wenn die rechten 16 Bit der Ausgabedaten vom Trommelverschieber 2 alle "0" sind, kommt es zu einem Übertrag. Die linken 16 Bits der Ausgabedaten von dem Trommelverschieber 2 stellen die Anzahl der neuen Restbits im Register 4 dar.
  • Bei Empfang der vorübergehend gespeicherten Codelänge von dem Register 9 als Reaktion auf das Taktsignal CLK und das Freigabesignal EN, verschiebt der Trommelverschieber 6 das eingegebene Codewort um die empfangene Codelänge und gibt das verschobene Codewort an das Register 4 aus. Der Trommelverschieber 2 akkumuliert die Codelänge von dem Register 9 und gibt den akkumulierten Wert als Verschiebungsinformation an die Bitoperationseinheit 1 aus.
  • In der Bitoperationseinheit 1 werden die Flags 18, 17 und 16 als Reaktion auf das Rückstellsignal RST gesetzt, wenn das Codewort in der zuvor beschriebenen Weise verschoben wird. Die gesetzten Flags 18, 17 und 16 werden logisch mit den Ausgabedaten von dem Trommelverschieber 2 durch das ODER-Gatter OR1, das UND-Gatter AN1 bzw. das NOR- Gatter NOR1 verknüpft. Die Ausgabedaten von dem ODER- Gatter OR1 und dem UND-Gatter AN1 werden zu dem Auffangspeicher 14 geleitet, und die Ausgabedaten von dem NOR-Gatter NOR1 werden zu dem Flag 15 geleitet.
  • Bei Empfang der Bitinformation VL1 von dem Auffangspeicher 14, wenn das verfügbare Datensignal AVLC des Flags 15 gesetzt ist, gibt der Trommelverschieber 5 dann 16-Bit, mit variabler Länge codierte Daten an das Register 3 aus. Auch in diesem Fall wird der akkumulierte Codelängenwert des Trommelverschiebers 2 gelöscht.
  • Wie zuvor erwähnt wurde, sind bei dem herkömmlichen Codierer mit variabler Länge die drei Trommelverschieber parallel geschaltet. Die Verwendung der drei parallel geschalteten Trommelverschieber macht die Zeit, die zum Codieren eines einzigen Wortes erforderlich ist, konstant. Mit den drei parallel geschalteten Trommelverschiebern weist der herkömmliche Codierer mit variabler Länge jedoch den Nachteil auf, daß eine Operationsgeschwindigkeit dann gering ist, wenn eine Mehrzahl von Worten parallel codiert wird.
  • Es wird nun die Funktionsweise des herkömmlichen Decodierers mit variabler Länge mit der obenerwähnten Konstruktion mit Bezugnahme auf Fig. 6 beschrieben.
  • Zunächst wird der Datenstrom Vi in die Schnittstellenschaltung 609 eingegeben. In der Schnittstellenschaltung 609 leitet der Puffer B1 die eingegebenen Daten Vi in der Einheit von 16 Bits unter der Steuerung des Lesesignalgenerators 608 zu einem Auffangspeicher L0 in der Warteschaltung 601. Als Reaktion auf das nächste Taktsignal verschiebt der Auffangspeicher L0 die vorhandenen Daten zu einem Auffangspeicher L1 der Warteschaltung 601 und gibt die Daten V1 von neuen 16 Bits ein. Als Ergebnis gibt die Warteschaltung 601 die Speicherdaten VL1 und VL0 der entsprechenden 16 Bits an den Trommelverschieber 602 aus.
  • Bei Empfang der Ausgabedaten VL1 und VL0 von den Auffangspeichern L1 und L0 in der Warteschaltung 601 bildet der Trommelverschieber 602 das Fenster aus den Bits I0-I15, von welchen ein führendes Bit das erste zu decodierende Bit von den empfangenen 32 Bits ist. Das Fenster von dem Trommelverschieber 602 wird um die Ausgabedaten VL2 von der Warteschaltung 607 verschoben, was zu der Erfassung des Codewortes führt. Das erfaßte Codewort wird dann zu der Codewortespeichereinheit 603 gesteuert. Die Codewortespeichereinheit 603 erfaßt die decodierten Daten Cw, die dem empfangenen Codewort entsprechen, und gibt diese dann an die Wortlängenspeichereinheit 604 und die Speichereinheit 605 für das decodierte Wort aus. Die Wortlängenspeichereinheit 604 gibt die Wortlänge L0-L3, die den decodierten Daten Cw von der Codewortespeichereinheit 603 entspricht, an den Addierer 606 aus. Die Speichereinheit 605 für das decodierte Wort gibt das decodierte Wort V0-V3, das den decodierten Daten Cw von der Codewortespeichereinheit 603 entspricht, durch den Auffangspeicher L4 aus.
  • Der Addierer 606 addiert die Ausgabedaten L0-L3 von der Wortlängenspeichereinheit 604 und die Ausgabedaten VL2 von der Warteschaltung 607 und gibt das addierte Ergebnis als Bitverschiebungsinformation an einen Auffangspeicher L2 in der Warteschaltung 607 aus. Der Trommelverschieber 602 bildet das 16-Bit Fenster I0-I15 durch Verschieben der Ausgabedaten VL1 und VL0 von der Warteschaltung 601 um die Ausgabedaten VL2 von dem Auffangspeicher L2 in der Warteschaltung 607.
  • Wenn andererseits der Wortlängenwert, der durch den Addierer 606 akkumuliert wird, beim Decodieren 16 überschreitet, gibt ein Auffangspeicher L3 der Warteschaltung 607 den Übertrag VL3 an den Lesesignalgenerator 608 aus. In dem Lesesignalgenerator 608 führt ein UND-Gatter AN11 eine UND-Verknüpfung des Taktsignals CLK und des Übertrags VL3 von der Warteschaltung 607 durch und gibt das UND-verknüpfte Ergebnis als das Lesesignal RD an den Puffer B1 und den Auffangspeicher L0 der Warteschaltung 601 aus. Als Ergebnis gibt der Puffer B1 die Daten V1 von neuen 16 Bits an den Auffangspeicher L0 der Warteschaltung 601 aus.
  • Die Funktionsweise des herkömmlichen Decodierers mit variabler Länge wird in der Folge ausführlicher mit Bezugnahme auf die Fig. 7 und 8 beschrieben. Fig. 7 ist eine Ansicht, die ein Beispiel der Wortlängen und Codeworte der Daten zeigt, die in dem herkömmlichen Decodierer mit variabler Länge von Fig. 6 verwendet werden, und Fig. 8 ist eine Ansicht, die ein Beispiel des Decodierungsvorganges der herkömmlichen Decodierers mit variabler Länge von Fig. 6 zeigt.
  • Wenn die Daten, wie in Fig. 8 dargestellt, von den Auffangspeichern L1 und L0 zwischengespeichert werden, werden die ersten 2 Bits des Fensters des Trommelverschiebers 602 als ein Symbol b erkannt und zu der Codewortspeichereinheit 603 als Reaktion auf das erste Taktsignal geleitet. Bei Empfang der Wortlänge "2" von der Wortlängenspeichereinheit 604 addiert dann der Addierer 606 die empfangene Wortlänge "2" zu einem Initialwert "0" und gibt den erhaltenen Wert "2" an den Auffangspeicher L2 aus. Die Ausgabedaten "2" von dem Auffangspeicher L2 bewirken, daß das Fenster des Trommelverschiebers 602 um "2" nach rechts verschoben wird. Andererseits gibt die Speichereinheit 605 für das decodierte Wort das decodierte Wort V0-V3 aus, das dem Codewort entspricht, das in der Codewortspeichereinheit 603 abgestimmt wurde.
  • Als Reaktion auf das zweite Taktsignal werden die folgenden 5 Bits des Fensters des Trommelverschiebers 602 als ein Symbol g erkannt und zu der Codewortspeichereinheit 603 geleitet. Bei Empfang der Wortlänge "5" von der Wortlängenspeichereinheit 604 addiert dann der Addierer 606 die empfangene Wortlänge "5" zu dem früheren Wert "2" und gibt den erhaltenen Wert "7" an den Auffangspeicher L2 aus. Der Ausgabewert "7" von dem Auffangspeicher L2 bewirkt, daß das Fenster des Trommelverschiebers 602 um "7" nach rechts verschoben wird.
  • Wenn der Wortlängenwert, der von dem Addierer 606 akkumuliert wird, in Betrieb 16 überschreitet, wird der Übertrag VL3 in dem Auffangspeicher L3 der Warteschaltung 607 erzeugt und zu dem Lesesignalgenerator 608 geleitet. In dem Lesesignalgenerator 608 führt das UND-Gatter AN11 die UND-Verknüpfung des Taktsignals CLK und des Übertrages VL3 von der Warteschaltung 607 durch und gibt das UND-verknüpfte Ergebnis als das Lesesignal RD an den Puffer B1 und den Auffangspeicher L0 der Warteschaltung 601 aus. Als Ergebnis gibt der Puffer B1 die Daten V1 von neuen 16 Bits an den Auffangspeicher L0 der Warteschaltung 601 aus. Dann wird der vorangehende Vorgang auf der Grundlage der Daten V1 der neuen 16 Bits wiederholt durchgeführt.
  • Außerdem ist bei dem obengenannten, herkömmlichen Decodierer mit variabler Länge die Zeit, die beim Decodieren erforderlich ist, ein Zyklus, unabhängig von der Länge des Codewortes, welcher die Summe der Verzögerungszeit des Auffangspeichers L0, die Verschiebungsverzögerungszeit des Trommelverschiebers 602, die Abstimmungsverzögerungszeit des Codewortes und die Additionszeit des Addierers 606 ist. Aus diesem Grund weist der herkömmliche Decodierer mit variabler Länge den Nachteil auf, daß die Decodierungszeit unveränderlich ist, unabhängig von der Länge des Codewortes. Obwohl die Daten bei einer hohen Bitrate übertragen werden, kann auch der Vorgang zum Akkumulieren der Länge des abgestimmten Codewortes verzögert sein. Dies bewirkt, daß das Decodieren nicht in Echtzeit ausgeführt wird.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Daher wurde angesichts der obengenannten Probleme die vorliegende Erfindung gemacht, und es ist eine Aufgabe der vorliegenden Erfindung, einen Decodierer mit variabler Länge bereitzustellen, um gleichzeitig Zugriff auf Bits der zu verschiebenden Anzahl zu erlangen, wenn Daten in eine Codetabelle eingegeben werden, um einen Abstimmungsvorgang für andere als bezeichnete Bits durchzuführen, so daß eine Verschiebungsverzögerung entfällt, und zum Speichern einer akkumulierten Wortlängeninformation, so daß eine Berechnungsverzögerung in dem Abstimmungsvorgang entfällt, wodurch eine Decodierungsvorgang bei hoher Geschwindigkeit in Echtzeit ausgeführt werden kann.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein Decodierer mit variabler Länge nach Anspruch 1 bereitgestellt.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein Decodierer mit variabler Länge nach Anspruch 5 bereitgestellt.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die obengenannten und weitere Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden ausführlichen Beschreibung in Verbindung mit den beiliegenden Zeichnungen besser verständlich, von welchen:
  • Fig. 1 ein Blockdiagramm eines herkömmlichen Codierers mit variabler Länge ist;
  • Fig. 2 ein Blockdiagramm eines Codierers mit variabler Länge ist, der zur Verwendung mit der vorliegenden Erfindung geeignet ist;
  • Fig. 3 ein ausführliches Blockdiagramm eines Verschiebers von Fig. 2 ist;
  • Fig. 4 ein ausführliches Blockdiagramm eines Wort/Maskierregisters von Fig. 2 ist;
  • Fig. 5 eine Ansicht ist, die eine Änderung von Daten jedes Elementes in dem Verschieber von Fig. 2 bei jedem Taktsignal zeigt;
  • Fig. 6 ein Blockdiagramm eines herkömmlichen Decodierers mit variabler Länge ist;
  • Fig. 7 eine Ansicht ist, welche ein Beispiel von Wortlängen und Codeworten von Daten zeigt, die in dem herkömmlichen Decodierer mit variabler Länge von Fig. 6 verwendet werden;
  • Fig. 8 eine Ansicht ist, die ein Beispiel eines Decodierungsvorganges des herkömmlichen Decodierers mit variabler Länge von Fig. 6 zeigt;
  • Fig. 9 ein Blockdiagramm eines Ausführungsbeispieles eines Decodierers mit variabler Länge gemäß der vorliegenden Erfindung ist;
  • Fig. 10 eine Ansicht ist, die eine Änderung von Daten jedes Elementes von Fig. 9 bei jedem Taktsignal zeigt;
  • Fig. 11 ein Blockdiagramm eines alternativen Ausführungsbeispieles des Decodierers mit variabler Länge gemäß der vorliegenden Erfindung ist; und
  • Fig. 12 eine Ansicht ist, die eine Änderung von Daten jedes Elementes von Fig. 11 bei jedem Taktsignal zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
  • Mit Bezugnahme auf Fig. 2 ist ein Blockdiagramm eines Codierers mit variabler Länge dargestellt, der zur Verwendung mit der vorliegenden Erfindung geeignet ist. Wie in dieser Zeichnung dargestellt ist, umfaßt der Codierer mit variabler Längen Verschieber 101-1 bis 101- n, von welchen jeder ein entsprechendes von n Codeworten Wortl-Wortn und n Codelängen Längel-Längen eingibt, das entsprechende Codewort um eine gewünschte Länge zur Verbindung der Codeworte verschiebt, und Maskierungsbits ausgibt, die eine Position des entsprechenden, zu verschiebenden Codewortes bezeichnen.
  • Ebenso umfaßt der Codierer mit variabler Länge ein ODER- Gatter 102 zur ODER-Verknüpfung der ausgegebenen Codeworte W1[1 : 16n · 2]-Wn[1 : 16n · 2] von den n Verschiebern 101-1 bis 101-n, ein ODER-Gatter 103 zur ODER-Verknüpfung der von den n Verschiebern 101-1 bis 101-n ausgegebenen Maskierungsbits M1[1 : 16n · 2]-Mn[1 : 16n · 2], ein Wort/Maskierregister 104 zum Zwischenspeichern der ausgegebenen Codewortbits W[1 : 16n · 2] von dem ODER-Gatter 102, wenn entsprechende, von dem ODER-Gatter 103 ausgegebene Maskierungsbits M[1 : 16n · 2] mit "1" freigegeben sind, und einen Durchlaufspeicher ("first-in- first-out" - FIFO) 105 zum Speichern eines Ausganges C[1 : 16n] des Wort/Maskierregisters 104 und zum Ausgeben von mit variabler Länge codierten Daten DVLC.
  • Obwohl angenommen wird, daß jedes der Codeworte, die in die Verschieber 101-1 bis 101-n eingegeben werden, die Maximallänge von 16 Bits aufweist, sind hier verschiedene Modifizierungen möglich. Zum Beispiel kann jedes der Codeworte, die in die Verschieber 101-1 bis 101-n eingegeben werden, die maximale Länge von mehr als 16 Bits aufweisen. In diesem Fall können die Verschieber die eingegebenen Codeworte in der Einheit von 16 Bits verarbeiten. Ebenso ist die Anzahl der verwendeten Schieber n zur Durchführung der Codierung mit variabler Länge bei hoher Geschwindigkeit. Wenn zum Beispiel die Anzahl der verwendeten Verschieber 2 ist, bedeutet ein Codewort W1[1 : 16n · 2], daß ein Codewort, das von dem i. Verschieber 101-i ausgegeben wird, eine Länge im Bereich von 1 bis 64 Bits aufweist.
  • Mit Bezugnahme auf Fig. 3 ist ein ausführliches Blockdiagramm des i. Verschiebers 101-i dargestellt. Wie in dieser Zeichnung gezeigt wird, enthält der i. Verschieber 101-i Register 401-403 zum sequentiellen Speichern des i. Codewortes Worti, Register 404 und 405 zum sequentiellen Speichern der i. Codelänge Längei, eine Schnittstellenschaltung 415 zum Eingeben einer von dem Register 404 ausgegebenen Codelänge, und einen Addierer 409 zum Addieren der Ausgabedaten von der Schnittstellenschaltung 415 und der Ausgabedaten SUM(410) von einem Register 410.
  • Das Register 410 ist zum Speichern der Ausgabedaten von dem Addierer 409 und zum Ausgeben der gespeicherten Daten an ein PLA 406, den Addierer 409 und einen Decodierer 411 ausgebildet.
  • Das PLA 406 ist zum Erhalten der Maskierungsbits M1[1 : 16n · 2] ausgebildet, indem Bits jener Zahl, die einer von dem Register 405 ausgegebenen Codelänge entspricht, auf "1" gesetzt werden und die erhaltenen Bits um die Ausgabedaten SUM(410) von dem Register 410 rotiert werden und die erhaltenen Maskierungsbits M1[1 : 16n · 2] durch Register 407 und 408 ausgegeben werden.
  • Der Decodierer 411 ist zum Decodieren der Ausgabedaten SUM(410) von dem Register 410 und zum Ausgeben der decodierten Daten über ein Register 412 an einen Trommelrotator 413 ausgebildet, um eine Rotationsgröße des Trommelrotators 413 zu steuern.
  • Der Trommelrotator 413 ist zum Rotieren eines von dem Register 403 ausgegebenen Codewortes gemäß den Ausgabedaten von dem Register 412 und zum Ausgeben des rotierten Codewortes W1[1 : 16n · 2] durch ein Register 414 ausgebildet.
  • Die Schnittstellenschaltung 415 ist zum Steuern 1. bis (i-1). Codelängen direkt zu dem Addierer 409 und i. bis n. Codelängen durch ihre Register zu dem Addierer 409 ausgebildet. Der Trommelrotator 413 kann durch zwei Trommelverschieber ersetzt werden.
  • Mit Bezugnahme auf Fig. 4 ist ein ausführliches Blockdiagramm des Wort/Maskierregisters 104 von Fig. 2 dargestellt. Wie in dieser Zeichnung gezeigt wird, enthält das Wort/Maskierregister 104 eine Warteschaltung 501, die als Reaktion auf die Maskierungsbits M[1 : 16n] von dem ODER-Gatter 103 freigegeben wird, um die Maskierungsbits M[1 : 16n] und die Codewortbits W[1 : 16n] von dem ODER-Gatter 102 synchron mit einem Taktsignal CLK zwischenzuspeichern, wenn i ≤ 16n, und eine Warteschaltung 502, die als Reaktion auf die Maskierungsbits M[16n + 1 : 32n] von dem ODER-Gatter 103 freigegeben wird, um die Maskierungsbits M[16n + 1 : 32n] und die Codewortbits W[16n + 1 : 32n] von dem ODER-Gatter 102 synchron mit einem Taktsignal CLK zwischenzuspeichern, wenn i > 16n.
  • Ebenso enthält das Wort/Maskierregister 104 einen Biteinstellstatus-Diskriminator 503 zur UND-Verknüpfung der ersten Ausgabedatenbits FA[1 : 16n] von der Warteschaltung 501 und zum Unterscheiden eines Maskierungsbit-Einstellzustandes in Übereinstimmung mit dem UND-verknüpften Ergebnis, einen Biteinstellstatus- Diskriminator 504 zur UND-Verknüpfung der ersten Ausgabedatenbits FB[1 : 16n] von der Warteschaltung 502 und zum Unterscheiden eines Maskierungsbit-Einstellzustandes in Übereinstimmung mit dem UND-verknüpften Ergebnis, einen Rückstellsignalgenerator 505 für die direkte Eingabe und die Eingabe durch einen Flipflop der Ausgabedaten von dem Biteinstellstatus-Diskriminator 503 und für die UND-Verknüpfung der eingegebenen Daten, um ein Rückstellsignal RSTA an eine Warteschaltung 501 auszugeben, einen Rückstellsignalgenerator 506, für die direkte Eingabe und die Eingabe durch einen Flipflop der Ausgabedaten von dem Biteinstellstatus-Diskriminator 504 und für die UND-Verknüpfung der eingegebenen Daten, um ein Rückstellsignal RSTB an eine Warteschaltung 502 auszugeben, einen Flaggenerator 507 zur ODER-Verknüpfung der Ausgabedaten von den Biteinstellstatus- Diskriminatoren 503 und 504 und zum Ausgeben des ODERverknüpften Ergebnisses als verfügbares Codeflag VCF durch einen Flipflop, und einen Multiplexer 508 zum selektiven Ausgeben zweiter Ausgabedatenbits SA[1 : 16n] und SB[1 : 16n] von den Warteschaltungen 501 und 502 als Reaktion auf die Ausgabedaten von dem Biteinstellstatus- Diskriminator 503.
  • Die Warteschaltung 501 enthält eine Mehrzahl von Auffangspeichern 501-1 bis 501-16n, von welchen jeder ein entsprechendes der Codewortbits W1 (i = 1 bis 16n) von dem ODER-Gatter 102 und ein entsprechendes der Maskierungsbits M1 (i = 1 bis 16n) von dem ODER-Gatter 103 zwischenspeichert. Jeder der Auffangspeicher 501-1 bis 501-16n enthält einen Flipflop DFF1 zum Zwischenspeichern des entsprechenden der Codewortbits W1 (i = 1 bis 16n) von dem ODER-Gatter 102 und einen Flipflop DFF2 zum Zwischenspeichern des entsprechenden der Maskierungsbits M1 (i = 1 bis 16n) von dem ODER- Gatter 103. Die Warteschaltung 502 hat dieselbe Konstruktion wie die Warteschaltung 501.
  • Es wird nun die Funktionsweise des Codierers mit variabler Länge der obengenannten Konstruktion gemäß der vorliegenden Erfindung in der Folge ausführlich beschrieben.
  • Nach der Eingabe der Daten, die mit variabler Länge zu codieren sind, werden die Codeworte Wortl-Wortn und die Codelängen Längel-Längen, die den eingegebenen Daten entsprechen, zu den entsprechenden Verschiebern 101-1 bis 101-n geleitet. Die Verschieber 101-1 bis 101n berechnen die Positionen der entsprechenden zu verschiebenden Codeworte für die Verbindung der Codeworte mit verschiedenen Längen. Die Verschieber 101-1 bis 101n verschieben dann die entsprechenden Codeworte in die berechneten Positionen.
  • In der Folge wird die Funktionsweise des i. Verschiebers 101-i von den n Verschiebern 101-1 bis 101-n, die parallel geschaltet sind, ausführlich mit Bezugnahme auf Fig. 3 beschrieben.
  • Des i. Codewort Worti wird sequentiell in den Registern 401-403 gespeichert und dann zu dem Trommelrotator 413 geleitet. Die i. Codelänge Längei wird dann über das Register 404 zu dem Register 405 und zu der Schnittstellenschaltung 415 geleitet. Die i. Codelänge Längei wird auch zu einer Schnittstellenschaltung eines anderen Verschiebers geleitet, der parallel zu dem i. Verschieber 101-i geschaltet ist.
  • Die Schnittstellenschaltung 415 steuert die 1. bis (1-1). Codelängen direkt zu dem Addierer 409, aber die i. bis n. Codelänge Längei-Längen wegen einer Zeitverzögerung durch ihre Register 416 und 417 zu dem Addierer 409. Der Addierer 409 akkumuliert die 1. bis n. Codelänge und gibt den akkumulierten Wert SUM(409) an das PLA 406 und den Decodierer 411 durch das Register 410 aus. Der Ausgang SUM(409) des Addierers 409 wird auch über das Register 410 zu diesem zurückgeführt. Der Ausgang SUM(409) des Addierers 409 kann durch die folgende Gleichung (1) ausgedrückt werden:
  • SUM(409) - SUM(410) + Längei + Lj ------ (1)
  • In der obengenannten Gleichung (1) ist die Längei die Codelänge, die direkt zu dem Addierer 409 gesteuert wird, und Lj ist die Codelänge, die über die Register 416 und 417 zu dem Addierer 409 gesteuert wird.
  • Der Trommelverschieber 413 kombiniert das Codewort Worti, das durch die Register 410-413 sequentiell verzögert wurde, mit 16n · 2-16 "0"s. Die Eingabe 16n · 2-16 "0"s dient zur Bildung einer Differenz zwischen der Bitzahl "16" der Eingabedaten und der Bitzahl "16n · 2" der Ausgabedaten. Der Decodierer 411 decodiert den akkumulierten Codelängenwert, der durch das Register 410 eingegeben wurde, um Bits jener Zahl, die dem decodierten Wert entspricht, auf "1" zu setzen. Dann leitet der Decodierer 411 die erhaltenen Bits durch das Register 412 zu dem Trommelrotator 413. Die Daten des Trommelrotators 413 werden durch die Ausgabedaten von dem Register 412 verschoben. Der Trommelrotator 413 verschiebt das Codewort um ein Maß, das durch die Ausgabedaten von dem Register 412 bezeichnet wird, auf ähnliche Weise wie der Trommelverschieber. Es ist aber zu beachten, daß der Trommelrotator 413 einen Datenteil, der aufgrund der Verschiebung entfernt wird, zu dem gegenüberliegenden Eingang dreht. Das heißt, die Daten, die nach links verschoben werden, werden wieder als rechter Eingang verwendet. Das Codewort W1[1 : 16n · 2], das auf diese Weise gedreht wurde, wird durch das Register 414 zu dem ODER- Gatter 102 geleitet.
  • Hier ist die Zeitverzögerung des Codewortes Worti durch die Register 401-403 zu dem Trommelrotator 413 dieselbe wie jene der Codelänge Längei durch den Addierer 409 und den Decodierer 411 zu dem Trommelrotator 413.
  • Das PLA 406 setzt Bits jener Zahl, die der ausgegebenen Codelänge von dem Register 405 entsprechen, auf "1" und dreht die erhaltenen Bits um die Ausgabedaten SUM(410) von dem Register 410, so daß eine Länge und eine relative Position des Codewortes bestimmt wird. Die Ausgabedaten von dem PLA 406 sind die Maskierungsbits M1[1 : 16n · 2], die durch die Register 407 und 408 zu dem ODER-Gatter 103 geleitet werden. Bits, die von den Maskierungsbits M1[1 : 16n · 2] auf "1" gesetzt wurden, stellen das Ausmaß und die Position eines verfügbaren Codes des zu rotierenden Codewortes W1[1 : 16n · 2] dar.
  • Der obengenannte Vorgang wird auf dieselbe Weise von den n Verschiebern 101-1 bis 101-n in bezug auf die n Codeworte Wortl-Wortn und die n Codelängen Länge1- Längen durchgeführt. Wenn n = 2, werden zwei Verschieber parallel zueinander geschaltet.
  • Dann führen die ODER-Gatter 102 und 103 eine ODER- Verknüpfung der von den Verschiebern 101-1 bis 101-n verschobenen Codeworte Wi[1 : 16n · 2] bzw. Maskierungsbits Mi[1 : 16n · 2] aus. Aufgrund der Tatsache, daß nur ein Bit auf "1" gesetzt ist, wenn 1 ≤ I ≤ 16n · 2 und i im Bereich von 1 bis n für ein zufälliges I liegt, führen die ODER- Gatter 102 und 103 die folgenden Operationen für die Eingabedaten Mi[I] und Wi[I] aus:
  • M[I] = M1[I] M2[I] ..... Mn[I]
  • W[I] = W1[I] W2[I] ..... Wn[I] ----- (2)
  • wobei 1 ≤ I ≤ 16n · 2 und 1 ≤ i ≤ n
  • In der obengenannten Gleichung (2) bezeichnet " " das Bit ODER. Das Wort/Maskierregister 104 gibt nur dann die Ausgabedatenbits W[1 : 16n · 2] von dem ODER-Gatter 102 ein, wenn die Maskierungsbits M[1 : 16n · 2] oder die Ausgabedatenbits von dem ODER-Gatter 103 mit "1" freigegeben sind. Ebenso gibt das Wort/Maskierregister 104 die Ausgabedatenbits W[1 : 16n · 2] von dem ODER-Gatter 102 dann nicht ein, wenn die Maskierungsbits M[1 : 16n · 2] oder die Ausgabedatenbits von dem ODER-Gatter 103 mit "0" gesperrt sind. In diesem Fall werden die vorherigen Daten, die nicht geändert werden, zu dem FIFO-Speicher 105 geleitet.
  • Die Funktionsweise des Wort/Maskierregisters 104 wird in der Folge ausführlich mit Bezugnahme auf Fig. 4 beschrieben.
  • Die Codewortbits Wi (1 = 1 bis 16n) und die Maskierungsbits Mi (i = 1 bis 16n) werden zu der Warteschaltung 501 geleitet, und die Codewortbits Wi (i = 16n + 1 bis 32n) und die Maskierungsbits M1 (i = 16n + 1 bis 32n) werden zu der Warteschaltung 502 geleitet.
  • In der Warteschaltung 501 werden die Codewortbits W1 (1 1 bis 16n) und die Maskierungsbits M1 (i = 1 bis 16n) zu den Auffangspeichern 501-1 bis 501-16n geleitet. In dem Auffangspeicher 501-1 werden die Flipflops DFF1 und DFF2 freigegeben, wenn das Maskierungsbit M[1] mit "1" freigegeben wird, wodurch veranlaßt wird, daß das Codewortbit W[1] und das Maskierungsbit M[1] synchron mit dem Taktsignal CLK aus diesem ausgegeben werden. Wenn im Gegensatz dazu das Maskierungsbit M[1] mit "0" gesperrt ist, wird der vorherige Zustand unverändert aufrechterhalten. Dieser Vorgang wird auf dieselbe Weise von den Auffangspeichern in den Warteschaltungen 501 und 502 ausgeführt.
  • Die Warteschaltungen 501 und 502 geben dann die Codewortbits SA[1 : 16n] bzw. SB[1 : 16n] und die Maskierungsbits FA[1 : 16n] bzw. FB[1 : 16n] aus. Die Maskierungsbits FA[1 : 16n] und FB[1 : 16n] von den Warteschaltungen 501 und 502 werden zu dem Biteinstellzustand-Diskriminator 503 bzw. 504 geleitet.
  • In den Biteinstellzustand-Diskriminatoren 503 und 504 werden die Maskierungsbits FA[1 : 16n] und FB[1 : 16n] von den Warteschaltungen 501 und 502 durch UND-Gatter jeweils UND-verknüpft. Wenn der Ausgang des Biteinstellzustand- Diskriminators 503 "1" ist, gibt der Flag-Generator 507 das verfügbare Codeflag VCF "1" durch sein ODER-Gatter und den Flipflop F/F aus. Als Reaktion auf den Ausgang des Biteinstellzustand-Diskriminators 503 wählt der Multiplexer 508 die Ausgabedatenbits SA[1 : 16n] der Warteschaltung 501 und leitet diese dann zu dem FIFO- Speicher 105. Ebenso gibt in dem Rückstellsignalgenerator 505 ein UND-Gatter die Ausgabedaten von dem Biteinstellzustand-Diskriminator 503 direkt und durch den Flipflop ein und führt eine UND-Verknüpfung der eingegebenen Daten durch. Das UND-verknüpfte Ergebnis von dem UND-Gatter wird als das Rückstellsignal RSTA zu der Warteschaltung 501 geleitet. Bei Empfang des Rückstellsignals RSTA von dem Rückstellsignalgenerator 505 werden die Flipflops in der Warteschaltung 501 gelöscht, wodurch der Ausgang des Biteinstellzustand- Diskriminators 503 mit "0" gesperrt wird.
  • Ebenso wenn der Ausgang des Biteinstellzustand- Diskriminators 504 "1" ist, gibt der Flag-Generator 507 das verfügbare Codeflag VCF "1" durch sein ODER-Gatter und seinen Flipflop F/F aus. Als Reaktion auf den Ausgang des Biteinstellzustand-Diskriminators 503 von "0" wählt der Multiplexer 508 die Ausgabedatenbits SB[1 : 16n] der Warteschaltung 502 und leitet diese dann zu dem FIFO- Speicher 105. Ebenso gibt in dem Rückstellsignalgenerator 506 ein UND-Gatter die Ausgabedaten von dem Biteinstellzustand-Diskriminator 504 direkt und durch den Flipflop ein und führt eine UND-Verknüpfung der eingegebenen Daten durch. Das UND-verknüpfte Ergebnis von dem UND-Gatter wird als das Rückstellsignal RSTB zu der Warteschaltung 502 geleitet. Bei Empfang des Rückstellsignals RSTB von dem Rückstellsignalgenerator 506 werden die Flipflops in der Warteschaltung 502 gelöscht, wodurch der Ausgang des Biteinstellzustand- Diskriminators 504 mit "0" gesperrt wird.
  • Dann speichert der FIFO-Speicher 105 die Ausgabedaten C[1 : 16n] von dem Wort/Maskierregister 104 und gibt die mit variabler Länge codierten Daten DVLC aus.
  • Die obengenannte Operation des Codierers mit variabler Länge, der zur Verwendung mit der vorliegenden Erfindung geeignet ist, wird in der Folge ausführlicher mit Bezugnahme auf ein Datenfließdiagramm von Fig. 5 beschrieben. Insbesondere werden in der Folge die Operationen von zwei parallel geschalteten Verschiebern in bezug auf die Fälle t = 2 und t = 3 erwähnt.
  • Wenn in dem ersten Verschieber zum Zeitpunkt t = 3 ein Codewort D1 und eine Codelänge 10 zu den Registern 401 bzw. 404 geleitet werden, werden die Daten C1 und 10 der Register 401 und 404 zum Zeitpunkt t = 2 in den Registern 402 bzw. 405 gespeichert. Codelängen 10 und 12 zum Zeitpunkt t = 2 der Daten C1 und C2 werden durch die Register der Schnittstellenschaltung 415 in den Addierer 409 geleitet. Die Daten B1 des Registers 402 zum Zeitpunkt t = 2 werden zu dem Register 403 geleitet. Zu dem Register 407 werden decl(6,10) geleitet, wobei 6 ein Wert des Registers 405 zum Zeitpunkt t = 2 und 10 ein Wert des Registers 410 zum Zeitpunkt t = 2 darstellt. Hier ist dec1(i, j)
  • rot( 264-k, j),
  • was bedeutet, daß
  • 264-k
  • um j nach rechts gedreht wird. Das heißt, dec1(6,10) bedeutet, daß Bits vom linken bis zum sechsten Bit um 10 gedreht werden und dann zu dem Register 407 geleitet werden. Der Addierer 409 addiert die Werte 6 und 16, die diesem durch die Schnittstellenschaltung 415 zum Zeitpunkt t = 2 eingegeben werden, zu dem Wert 10 des Registers 410 und leitet den addierten Wert 32 zu dem Register 410. Wi ist rot(A1,0), was bedeutet, daß ein Wert A1, der in dem Register 403 zum Zeitpunkt t = 2 gespeichert wird, um einen Steuerwert 0 des Registers 412 nach rechts gedreht wird. Mi wird erhalten, indem dec1(2,0) als ein Wert des Registers 407 zum Zeitpunkt t = 2 angenommen wird. Ein Wert des Registers 412 ist dec1(10), wobei 10 ein Wert des Registers 410 zum Zeitpunkt t = 2 ist, was bedeutet, daß das zehnte Bit von links "1" ist und die anderen Bits alle "0" sind.
  • Wenn im zweiten Verschieber zum Zeitpunkt t = 3 ein Codewort D2 und eine Codelänge 2 zu den Registers 401 bzw. 404 geleitet werden, gibt der Addierer 409 die Codelänge 10 des ersten Verschiebers direkt, und die Codelänge 12 von C2 zum Zeitpunkt t = 2 durch die Schnittstellenschaltung 415 aus. Die anschließende Operation des zweiten Verschiebers ist dieselbe wie jene des ersten Verschiebers, und daher wird deren Beschreibung unterlassen.
  • Wie aus der vorangehenden Beschreibung hervorgeht, verwendet der Codierer mit variabler Länge gemäß der vorliegenden Erfindung einen derartigen Parallelprozeß, daß die Worte, die zu einem Zeitpunkt eingegeben werden, von den Trommelrotatoren in die gewünschten Positionen verschoben werden, und dann gleichzeitig codiert werden, indem nur die Bits, die dem eingestellten Zustand des Flags entsprechen, der die Code-Gegenwartspositionen anzeigt, zwischengespeichert werden. Daher kann die vorliegende Erfindung bei Codierern eines digitalen Fernsehers, eines hochauflösenden Fernsehers (HDTV) und eines digitalen Videokasettenrecorders (DVCR) zum Codieren von Videosignalen bei hoher Geschwindigkeit verwendet werden.
  • Mit Bezugnahme auf Fig. 9 ist ein Blockdiagramm eines Ausführungsbeispieles eines Decodierers mit variabler Länge gemäß der vorliegenden Erfindung dargestellt. Wie in dieser Zeichnung dargestellt ist, umfaßt der Decodierer mit variabler Länge der vorliegenden Erfindung einen Datenverschieber 700 zum Verschieben von Eingabedaten Vi in Übereinstimmung mit den Ausgängen einer Decodierschaltung 720 und eine Verschiebesteuerung 730.
  • Die Decodierschaltung 720 ist zur Eingabe von Ausgabedaten RBS3 von dem Datenverschieber 700 und einer vorherigen Codelänge RLN1 von der Verschiebesteuerung 730, zur Unterscheidung eines abgestimmten Zustandes der eingegebenen Daten RBS3 auf der Grundlage der vorherigen Codelänge RLN1, zum Erzeugen einer aktuellen Codelänge LN1, eines Abstimmungssignals MS1 und eines decodierten Wortes VCD in Übereinstimmung mit dem Unterscheidungsergebnis und zur Ausgabe der erzeugten aktuellen Codelänge LN1 an die Verschiebesteuerung 730 und des erzeugten Abstimmungssignals MS1 an die Verschiebesteuerung 730 und den Datenverschieber 720 ausgebildet.
  • Die Verschiebesteuerung 730 ist zur Steuerung eines Verschiebungsmaßes des Datenverschiebers 700 als Reaktion auf die aktuelle Codelänge LN1 und das Abstimmungssignal MS1 von der Decodierschaltung 720 und zur Ausgabe der vorherigen Codelänge RLN1 an den Datenverschieber 700 und die Decodierschaltung 720 ausgebildet.
  • Der Datenverschieber 700 enthält Register 711 und 712 zum sequentiellen Speichern der Eingabedaten Vi als Reaktion auf ein Bereit-Signal RDY von der Verschiebesteuerung 730, einen Trommelverschieber 713 zum Verschieben von Ausgabedaten VL0 und VL1 von den Registern 711 und 712 und der Eingabedaten Vi um einen akkumulierten Codelängenwert RS0 von der Verschiebesteuerung 730, ein Register 714 zum Speichern und Ausgeben von Ausgabedaten BS1 von dem Trommelverschieber 713 als Reaktion auf ein verfügbares Codesignal VCF von der Verschiebesteuerung 730, einen Trommelverschieber 715 zum Verschieben der Ausgabedaten RBS1 von dem Register 714 um die vorherige Codelänge RLN1 von der Verschiebesteuerung 730, ein Register 716 zum Speichern und Ausgeben von Ausgabedaten BS2 von dem Trommelverschieber 715 als Reaktion auf das Abstimmungssignal MS1 von der Decodierschaltung 720, einen Trommelverschieber 715 zum Verschieben von Ausgabedaten VL3 von dem Register 716 und von Ausgabedaten VL4 von einem Register 718 um die vorherige Codelänge RLN1 von der Verschiebesteuerung 730, und ein Register 719 zum Ausgeben von Ausgabedaten BS3 von dem Trommelverschieber 717 an die Decodierschaltung 720 als Reaktion auf das Abstimmungssignal MS1 von der Decodierschaltung 720. Das Register 718 ist zum vorübergehenden Speichern der Ausgabedaten BS3 von dem Trommelverschieber 717 und zum Zurückleiten der gespeicherten Daten zu dem Trommelverschieber 717 als Reaktion auf das Abstimmungssignal MS1 von der Decodierschaltung 720 ausgebildet.
  • Die Verschiebesteuerung 730 enthält ein Register 731 zum Speichern der aktuellen Codelänge LN1 von der Decodierschaltung 720 und zum Ausgeben der gespeicherten Codelänge als die vorherige Codelänge RLN1 zu dem Datenverschieber 700 und die Decodierschaltung 720, einen Flipflop 732 zum Zwischenspeichern des Abstimmungssignals MS1 von der Decodierschaltung 720 und zum Ausgeben des zwischengespeicherten Signals als verfügbares Codesignal CF an den Datenverschieber 700, einen Inverter 735 zum Invertieren des verfügbaren Codesignals VCF von dem Flipflop 732, ein Register 733 zum vorübergehenden Speichern des akkumulierten Codelängenwertes RS0 als Reaktion auf das verfügbare Codesignal VCF von dem Flipflop 732, einen Addierer 734 zum Addieren der vorherigen Codelänge RLN1 von dem Register 731 und von Ausgabedaten RR5 von dem Register 733 und zum Ausgeben des addierten Wertes als das Bereit-Signal RDY und ein Summensignal S0, und ein Register 736 zum Speichern des Summensignals S0 von dem Addierer 734 und zum Ausgeben des gespeicherten Signals als den akkumulierten Codelängenwert RS0 an den Datenverschieber 700 und das Register 733 als Reaktion auf ein Ausgangssignal von dem Inverter 735.
  • Die Decodierschaltung 720 enthält eine Codelängenspeichereinheit 721 zum Abstimmen der Ausgabedaten RBS3 von dem Datenverschieber 700 mit den darin gespeicherten Daten auf der Grundlage der vorherigen Codelänge RLN1 von der Verschiebesteuerung 730, und zum Ausgeben der aktuellen Codelänge LN1 an die Verschiebesteuerung 730 in Übereinstimmung mit dem abgestimmten Ergebnis, einen Abstimmungsdetektor 722 zum Erzeugen des Abstimmungssignals MS1 in Übereinstimmung mit dem Abstimmungsvorgang der Codelängenspeichereinheit 721, und zum Ausgeben des erzeugten Abstimmungssignals MS1 an den Datenverschieber 700 und die Verschiebesteuerung 730, eine Speichereinheit 723 für das decodierte Wort zum Ausgeben eines gewünschten decodierten Wortes Vo in Übereinstimmung mit dem Abstimmungsvorgang der Codelängenspeichereinheit 721, und ein Register 724 zum Speichern des gewünschten decodierten Wortes Vo von der Speichereinheit 723 für das decodierte Wort und zum Ausgeben des decodierten Wortes VCD.
  • Die Funktionsweise des Decodierers mit variabler Länge mit der obengenannten Konstruktion gemäß dem Ausführungsbeispiel der vorliegenden Erfindung wird in der Folge ausführlich mit Bezugnahme auf Fig. 9 beschrieben. Hier wird angenommen, daß eine Maximallänge des Codes 16 Bit beträgt.
  • In dem Datenverschieber 700 werden die Eingabedaten Vi sequentiell zu den Registern 711 und 712 und zu dem Trommelverschieber 713 geleitet. In dem Trommelverschieber 713 werden die Eingabedaten Vi und die Ausgabedaten VL0 und VL1 von den Registern 711 und 712 um den akkumulierten Codelängenwert RS0 von der Verschiebesteuerung 730 nach links verschoben und dann zu dem Register 714 geleitet. Die Ausgabedaten RBS1 von dem Verschieber 714 werden als Reaktion auf das verfügbare Codesignal VCF von der Verschiebesteuerung 730 zu dem Trommelverschieber 715 geleitet. In dem Trommelverschieber 715 werden die Ausgabedaten RBS1 von dem Verschieber 714 um die vorherige Codelänge RLN1 von der Verschiebesteuerung 730 nach links verschoben und dann im Register 716 vorübergehend gespeichert. Die Ausgabedaten BS2 von dem Trommelverschieber 715, die im Register 716 gespeichert wurden, werden als Reaktion auf das Abstimmungssignal MS1 von der Decodierschaltung 720 zu dem Trommelverschieber 717 geleitet. In dem Trommelverschieber 717 werden die Ausgabedaten VL3 von dem Register 716 um die vorherige Codelänge RLN1 von der Verschiebesteuerung 730 nach links verschoben.
  • Die Ausgabedaten BS3 von dem Trommelverschieber 717 werden durch das Register 718 zurückgeleitet und zu dem Register 719 geleitet. Dann werden die Ausgabedaten RBS3 von dem Register 719 zu der Decodierschaltung 720 geleitet.
  • In der Decodierschaltung 720 werden die Ausgabedaten RBS3 von dem Register 719 mit Daten in einer Codewort- /Codelängen-Tabelle der Codelängenspeichereinheit 721 auf der Grundlage der vorherigen Codelänge RLN1 von der Verschiebesteuerung 730 abgestimmt. Ein Codewort und die Codelänge LN1 werden als Ergebnis des Abstimmungsvorganges der Codelängenspeichereinheit 721 erfaßt. Das erfaßte Codewort von der Codelängenspeichereinheit 721 wird von der Speichereinheit 723 für das decodierte Wort decodiert, und dann wird das erhaltene decodierte Wort VLD durch das Register 724 ausgegeben. Die erfaßte Codelänge LN1 von der Codelängenspeichereinheit 721 wird zu dem Register 731 in der Verschiebesteuerung 730 geleitet. Der Abstimmungsdetektor 722 unterscheidet, ob die Ausgabedaten RBS3 von dem Register 719 innerhalb von 16 Bits abgestimmt sind.
  • Die Decodierschaltung 720 enthält ein PLA, das aus unterbrochenen Flagdaten besteht. Die Flagdaten enthalten eine Flaginformation, die anzeigt, ob die Ausgabedaten RBS3 von dem Register 719 ein Code innerhalb von 16 Bits sind. Die Ausgabedaten RBS3 von dem Register 719 werden in der Decodierschaltung 720 derart nach links verschoben, daß die vorherigen Datenbits als hochwertige Bits und die neuen Datenbits als niederwertige Bits gespeichert werden.
  • Bei Empfang der Ausgabedaten RBS3 von dem Register 719 gemeinsam mit einem 5-Bit-Ausgang der vorherigen Codelänge RLN1 von der Verschiebesteuerung 730 schließt die Decodierschaltung 720 die hochwertigen Bits jener Zahl von den Daten RBS3 aus, die der vorherigen Codelänge RLN1 entspricht, und führt den Abstimmungsvorgang beginnend mit dem höchstwertigen Bit der verbleibenden Bits durch. Die Codelänge und das decodierte Wort, die auf diese Weise abgestimmt werden, werden zu dem Register 731 bzw. 724 geleitet. Wenn zu diesem Zeitpunkt das Abstimmungssignal MS1 "1" ist, bedeutet dies, daß die. Abstimmung hergestellt ist. Wenn im Gegensatz dazu das Abstimmungssignal MS1 "0" ist, bedeutet dies, daß die Abstimmung nicht hergestellt ist.
  • In der Verschiebesteuerung 730 wird das Abstimmungssignal MSl von der Decodierschaltung 720 von dem Flipflop 732 zwischengespeichert und dann als das verfügbare Codesignal VCF von diesem ausgegeben, so daß angezeigt ist, daß die Daten, die im Register 724 gespeichert sind, ein normal decodiertes Wort sind. Das verfügbare Codesignal VCF von dem Flipflop 732 wird durch den Inverter 735 invertiert und dann als Auffangspeicher- Freigabesignal zu dem Register 736 geleitet, wodurch das Register 736 veranlaßt wird, den Ausgang des Addierers 734 zwischenzuspeichern.
  • Andererseits wird die vorherige Codelänge RLN1 von dem Register 731 zu der abgestimmten Codelänge der Ausgabedaten RBS3 von dem Datenverschieber 700 addiert, und der addierte Wert wird als die aktuelle Codelänge LN1 zu dem Register 731 zurückgeleitet. Die erhaltene vorherige Codelänge RLN1 vom Register 731 wird dann zu den Trommelverschiebern 715 und 717 in dem Datenverschieber 700 geleitet, die dann die Daten um die erhaltene vorherige Codelänge RLN1 nach links verschieben.
  • Wenn das Abstimmungssignal MS1 von der Decodierschaltung 720 auf das unterbrochene Flag gesetzt ist, werden die Werte der Register 714, 716, 718 und 719 in dem Datenverschieber 700 zu neuen Werten aktualisiert, und der Wert des Registers 733 in der Verschiebesteuerung 730 wird nach einem Takt aktualisiert.
  • Der Addierer 734 addiert die Ausgabedaten RLN1 und RR5 von den Registern 731 und 733 und gibt die addierten Daten an das Register 736 und die Register 711 und 712 in dem Datenverschieber 700 aus. Zu diesem Zeitpunkt gibt das Register 736 den Ausgang des Addierers 734 ein, wenn eine Freigabe durch den Ausgang des Inverters 735 vorliegt.
  • In dem Addierer 734 kann ein Übertrag erzeugt und dann als das Bereit-Signal RDY von diesem ausgegeben werden. Das Bereit-Signal RDY zeigt an, daß die Vorrichtung zur Eingabe der nächsten Daten bereit sind. Danach werden neue Daten Vi in den Registern 711 und 712 in dem Datenverschieber 700 als Reaktion auf das nächste Taktsignal gespeichert. Ebenso werden die Register 711, 712, 714, 716, 718, 719, 724, 733 und 736 und der Flipflop 732 als Reaktion auf dasselbe Taktsignal betrieben.
  • In dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung wird angenommen, daß die Ausgabedaten des 16- Bit-Registers 719 die maximale Codelänge aufweisen. Aber vorausgesetzt, daß die maximale Codelängen ist und m ≥ n, können sowohl die Eingabedaten Vi, als auch die Ausgabedaten der Register 719, 711, 712, 716 und 718 und die Ausgabedaten der Speichereinheit 723 für das decodierte Wort und die Ausgabedaten der Trommelverschieber 717 und 715 m Bits sein und sowohl die Ausgabedaten des Trommelverschiebers 731 als auch des Registers 714 können 2 m Bits sein. Ebenso können sowohl die Ausgabedaten RLN1 als auch LNl des Registers 713 und der Codelängenspeichereinheit 721 (L + 1) Bits sein, wobei L + 1 eine ganze Zahl ist und L ≥ log2m. Des weiteren können sowohl die Ausgabedaten RS0, RR5 als auch S0 der Register 736 und 733 und des Addierers 734 L Bits sein.
  • Die Decodierschaltung 720 führt den Decodiervorgang für die m-Bit Ausgabedaten RBS3 von dem Register 719 beginnend mit dem höchstwertigen Bit durch. In dem Decodiervorgang liest die Decodierschaltung 720 eine Länge des ersten Codes der m-Bit Ausgabedaten RBS3 aus dem Register 719 und gibt die gelesene Codelänge an das Register 731 aus, welches dann die gespeicherte Codelänge RLN1 zu der Decodierschaltung 720 zurückleitet. Dann liest die Decodierschaltung 720 eine Länge des zweiten Codes der m-Bit Ausgabedaten RBS3 aus dem Register 710. Die gelesene Länge des zweiten Codes wird zu der ersten Codelänge addiert, und der addierte Wert wird zu dem Register 731 geleitet.
  • Der obengenannte Rückführungsvorgang wird kontinuierlich durchgeführt, bis das unterbrochene Flag in der Decodierschaltung 720 erzeugt wird. Das heißt, die Codes der m-Bit Ausgabedaten RBS3 von dem Register 719 werden alle durch wiederholtes Durchführen des obengenannten Rückführungsvorganges decodiert, bis das unterbrochene Flag in der Decodierschaltung 720 erzeugt wird. Daher ist beim Decodieren eines Codes eine Zeit eines Codetabellen- Abstimmungszyklus erforderlich. Dies ermöglicht die Hochgeschwindigkeitsdecodierung.
  • Wenn andererseits das unterbrochene Flag in der Decodierschaltung 720 erzeugt wird, werden die verbleibenden Bits, die nicht die decodierten Bits sind, und die neu zu decodierenden Bits angeordnet, und der obengenannte Rückführungsvorgang wird wiederholt für die angeordneten Bits durchgeführt. In diesem Fall wird das Register 731 als Reaktion auf das Abstimmungssignal MS1 auf "0" zurückgesetzt, und sein zurückgesetzter Wert wird gemeinsam mit den angeordneten Daten RBS3 von dem Register 719 zu der Decodierschaltung 720 geleitet.
  • Die obengenannte Operation des Decodierers mit variabler Länge gemäß dem Ausführungsbeispiel der vorliegenden Erfindung wird in der Folge ausführlicher mit Bezugnahme auf ein Datenfließdiagramm von Fig. 10 beschrieben.
  • Unter der Bedingung, daß die Elemente Daten wie in 10A dargestellt zum Zeitpunkt t = 1 aufweisen, weisen zum Zeitpunkt t = 2 die Daten VL1, VL0, Vi, BS1 und RBS1 keine Änderung auf, da das Bereit-Signal RDY, die Daten RS0 und das verfügbare Codesignal fehlen. Die Ausgabedaten BS2 des Trommelverschiebers 715 werden um 10 verschoben, da die Daten LN1 zum Zeitpunkt t = 1 "01010" sind. Die Daten VL4 und VL3 weisen keine Änderung auf, da das Abstimmungssignal MS1 zum Zeitpunkt t = 1 0 ist. Die Daten BS3 werden zum Zeitpunkt t = 1 um die Daten RLN1 verschoben. Die Daten RBS3 weisen keine Änderung auf, da das Abstimmungssignal MS zum Zeitpunkt t = 1 0 ist. Da die Abstimmung wegen des unterbrochenen Zustandes der folgenden Daten B von dem Register 719 nicht hergestellt ist, gelangen die Daten LN1 in einen Ignorierungszustand XXXXX. Das Abstimmungssignal MS1 wird 1, da die Abstimmung für 10 Bits der ersten Daten A von dem Register 719 hergestellt ist. Die Daten Vo gelangen in einen Ignorierungszustand X, der sich aus dem Ignorierungszustand der Daten LN1 ergibt. Die Daten LN1 mit "1010" zum Zeitpunkt t = 1 erscheinen bei den Daten RS0 durch den Addierer 734 und das Register 736. Die abgestimmten ersten Daten A erscheinen bei den Daten VCD.
  • Zum Zeitpunkt t = 3 weisen die Daten VL1, VL0 und Vi noch immer keine Änderung auf, da das Bereit-Signal RDY nicht erzeugt wurde. Die Ausgabedaten BS1 des Trommelverschiebers 713 werden um 10 verschoben, da die Daten RS0 zum Zeitpunkt t = 2 "1010" sind. Die Daten RBS1 weisen noch immer keine Änderung auf. Die Daten BS2 und BS3 gelangen in einen Ignorierungszustand, der sich aus einem Ignorierungszustand der Daten RLN1 zum Zeitpunkt t = 2 ergibt. Da die Daten A zuvor abgestimmt wurden, erscheint ein Wert, der um die Daten A verschoben ist, bei den Daten VL4 und VL3. Ebenso erscheinen Daten mit Ausnahme der Daten A bei den Daten RBS3. Eine Länge (01000) der Daten B erscheint bei den Daten LN1. Das Abstimmungssignal MS1 wird 0, da keine Abstimmung hergestellt wird. Die Daten B erscheinen bei den Daten Vo. Die Daten RS0 behalten den vorherigen Wert (1010) aufgrund des Ignorierungszustandes der Daten LN1 zum Zeitpunkt t = 2 bei. Der Wert X der Daten Vo zum Zeitpunkt t = 2 erscheint bei den Daten VCD.
  • Der obengenannte Vorgang wird wiederholt in derartiger Weise ausgeführt, daß alle zwei Taktsignale ein Datum decodiert wird, wenn seine Länge lang ist, und jeden Takt, wenn seine Länge kurz ist.
  • Mit Bezugnahme auf Fig. 11 ist ein Blockdiagramm eines alternativen Ausführungsbeispieles des Decodierers mit variabler Länge gemäß der vorliegenden Erfindung dargestellt. Wie in dieser Zeichnung dargestellt ist, umfaßt der Decodierer mit variabler Länge einen Datenverschieber 801 zum Verschieben von Eingabedaten Vi als Reaktion auf ein Bereit-Signal RDY, und eine Decodierschaltung 810 zum Erfassen einer aktuellen Codelänge LN1 von den Ausgabedaten BS1 von dem Datenverschieber 801 auf der Basis einer vorherigen Codelänge RLN1, zum Ausgeben eines höchstwertigen Bits der erfaßten, aktuellen Codelänge LN1 als das Bereit- Signal RDY an den Datenverschieber 801, und zum Decodieren der Ausgabedaten BS1 von dem Datenverschieber 801 auf der Basis der vorherigen Codelänge RLN1, um ein decodiertes Wort VCD auszugeben.
  • Der Datenverschieber 801 enthält Register 802 und 803 zum sequentiellen Speichern der Eingabedaten Vi als Reaktion auf das Bereit-Signal RDY von der Decodierschaltung 810, und ein Register 804 zum Speicher von Ausgabedaten VL0 und VL1 von den Registern 802 und 803 als Reaktion auf das Bereit-Signal RDY von der Decodierschaltung 810 und zum Ausgeben der gespeicherten Daten an die Decodierschaltung 810.
  • Die Decodierschaltung 810 enthält eine Codewort- /Codelängen-Speichereinheit 811 zum Abstimmen der Ausgabedaten BS1 von dem Datenverschieber 801 mit den darin gespeicherten Daten auf der Grundlage der vorherigen Codelänge RLN1, zum Addieren einer abgestimmten Codelänge zu der vorherigen Codelänge RLN1 und zum Ausgeben des addierten Wertes als die aktuelle Codelänge LN1, eine Speichereinheit 813 für das decodierte Wort zum Ausgeben eines gewünschten decodierten Wortes Vo in Übereinstimmung mit dem Abstimmungsvorgang der Codewort-/Codelängen- Speichereinheit 811, ein Register 814 zum Speichern des gewünschten decodierten Wortes Vo von der Speichereinheit 813 für das decodierte Wort und zum Ausgeben des decodierten Wortes VCD, und ein Register 812 zum Speichern der aktuellen Codelänge LN1 von der Codewort- /Codelängen-Speichereinheit 811 und zum Zurückleiten der gespeicherten Codelänge als vorherige Codelänge RLN1 zu der Codewort-/Codelängen-Speichereinheit 811.
  • Die Funktionsweise des Decodierers mit variabler Länge mit der obengenannten Konstruktion gemäß dem alternativen Ausführungsbeispiel der vorliegenden Erfindung wird in der Folge mit Bezugnahme auf Fig. 11 ausführlich beschrieben.
  • In dem Datenverschieber 801 werden die Eingabedaten Vi in dem Register 802 in der Einheit von 16 Bits gespeichert und dann als Reaktion auf das nächste Taktsignal in das Register 803 geladen. Dann werden neue Eingabedaten zu dem Register 802 geleitet. Die Ausgabedaten VL0 und VL1 von den Registern 802 und 803 werden vorübergehend in dem Register 804 gespeichert und dann als 32-Bit Codedaten BS1 an die Decodierschaltung 810 geleitet.
  • In der Decodierschaltung 810 werden die Ausgabedaten BS1 von dem Register 804 in dem Datenverschieber 801 und die vorherige Codelänge RLN1 von dem Register 812 zu der Codewort-/Codelängen-Speichereinheit 811 geleitet. Die Codewort-/Codelängen-Speichereinheit 811 schließt die höchstwertigen Bits der Zahl, die der vorherigen Codelänge RLN1 entspricht, aus den Daten BS1 aus und führt die Abstimmungsvorgang beginnend mit dem höchstwertigen Bit der verbleibenden Bits durch. Die abgestimmte Codelänge wird zu der vorherigen Codelänge RLN1 von dem Register 812 addiert, und der addierte Wert wird als die aktuelle Codelänge LN1 zu dem Register 812 geleitet. Die Speichereinheit 813 für das decodierte Wort gibt das gewünschte decodierte Wort Vo an das Register 814 in Übereinstimmung mit dem Abstimmungsvorgang der Codewort-/Codelängen-Speichereinheit 811 aus.
  • Dann werden die Ausgabedaten LN1 von der Codewort- /Codelängen-Speichereinheit 811 und die Ausgabedaten Vo von der Speichereinheit 813 für das decodierte Wort in die Register 812 und 814 geladen und als Reaktion auf das Taktsignal als die vorherige Codelänge RLN1 bzw. das decodierte Wort VCD aus diesen ausgegeben. Dann werden die Ausgabedaten RLN1 von dem Register 812 und die Ausgabedaten BS1 von dem Datenverschieber 801 als Reaktion auf das nächste Taktsignal zu der Codewort- /Codelängen-Speichereinheit 811 geleitet. Auf diese Weise wird der Decodiervorgang wiederholt ausgeführt.
  • Wenn die Ausgabedaten LN1 von der Codewort-/Codelängen- Speichereinheit 811 während des Decodiervorganges 16 überschreiten, wird das höchstwertige Bit von 5 Bits auf "1" gesetzt, was zu der Erzeugung des Bereit-Signals RDY führt. Dieses erzeugte Bereit-Signal RDY bewirkt, daß neue Daten in die Register 802, 803 und 804 in dem Datenverschieber 801 geladen werden.
  • Die obengenannte Operation des Decodierers mit variabler Länge gemäß dem alternativen Ausführungsbeispiel der vorliegenden Erfindung wird in der Folge ausführlicher mit Bezugnahme auf ein Datenfließdiagramm von Fig. 12 beschrieben.
  • Unter der Bedingung, daß die Elemente Daten wie in 12A dargestellt zum Zeitpunkt t = 1 aufweisen, weisen zum Zeitpunkt t = 2 die Daten VL1, VL0, und BS1 keine Änderung auf, da das Bereit-Signal RDY fehlt. Eine Codelänge (0110) der Daten A erscheint bei den Daten RLN1. Die Daten LN1 erhalten einen Wert (01010), der durch Addieren einer Codelänge von Daten B zu der Codelänge (0110) der Daten A erhalten wird. Die abgestimmten Daten B erscheinen bei den Daten Vo.
  • Zum Zeitpunkt t = 3 weisen die Daten VL1, VL0 und BS1 noch immer keine Änderung auf, da das Bereit-Signal RDY nicht erzeugt wurde. Das heißt, das Bereit-Signal RDY ist nicht erzeugt, da ein höchstwertiges Bit der Daten LN1 von "01010" nicht "1" ist. Der Wert (1010) der Daten LN1 zum Zeitpunkt t = 2 erscheint bei den Daten RLN1. Die Daten RLN1 von "1010" werden zu einer Codelänge (0100) der Daten C addiert, die durch Ausführung des Abstimmungsvorganges für Bits der Daten BS1 mit Ausnahme der Bits jener Zahl, die den Daten RLN1 von "1010" entsprechen, erhalten werden, und dann erscheint der addierte Wert (01110) bei den Daten LNl. Die abgestimmten Daten C erscheinen bei den Daten Vo.
  • In dem alternativen Ausführungsbeispiel der vorliegenden Erfindung sind unter der Voraussetzung, daß die Codelänge m ist, alle der Ausgabedaten VL0 und VL1 von den Registern 802 und 803 m Bits, und die Ausgabedaten BS1 von dem Register 804 sind 2 m Bits. Ebenso sind die Ausgabedaten LN1 von der Codewort-/Codelängen- Speichereinheit 811 (L + 1) Bits, wobei L ≥ 2log2m.
  • Wie aus der vorangehenden Beschreibung hervorgeht, führt gemäß der vorliegenden Erfindung der Decodierer mit variabler Länge den Abstimmungsvorgang für die verbleibenden Bits der Daten mit Ausnahme der Bits jener Zahl aus, die der zuvor decodierten Länge entspricht. Daher kann in dem Decodiervorgang eine Verzögerungszeit entfallen, die beim Anordnen der verbleibenden Bits, beginnend mit dem höchstwertigen Bit, und der Durchführung des Abstimmungsvorganges für die angeordneten Bits erforderlich ist. Dies hat zur Folge, daß der Decodiervorgang bei hoher Geschwindigkeit ausgeführt wird.

Claims (7)

1. Decodierer mit variabler Länge, umfassend:
ein Datenverschiebemittel (700) zum Verschieben von Eingabedaten (Vi) als Reaktion auf eine vorherige Codelänge und ein Abstimmungssignal;
ein Decodiermittel (720) zur Eingabe von Ausgabedaten vom Datenverschiebemittel (700) und der vorherigen Codelänge (RLN1), zur Unterscheidung eines abgestimmten Zustandes der Eingabedaten auf der Grundlage der vorherigen Codelänge, zur Erzeugung einer aktuellen Codelänge (LN1), des Abstimmungssignals (MS1) und eines decodierten Wortes (Vo) gemäß dem Unterscheidungsergebnis und zur Ausgabe des erzeugten Abstimmungssignals an das Datenverschiebemittel; und
ein Verschiebesteuerungsmittel (730) zur Steuerung eines Verschiebungsumfangs des Datenverschiebemittels als Reaktion auf die aktuelle Codelänge (LN1) und das Abstimmungssignal (MS1) vom Decodiermittel und zur Ausgabe der vorherigen Codelänge (RLN1) an das Datenverschiebemittel und das Decodiermittel.
2. Decodierer mit variabler Länge nach Anspruch 1, wobei das Datenverschiebemittel umfaßt:
ein erstes und ein zweites Register zur sequentiellen Speicherung der Eingabedaten als Reaktion auf ein Bereit-Signal vom Verschiebesteuerungsmittel;
einen ersten Trommelverschieber zum Verschieben der Ausgabedaten vom ersten und zweiten Register und der Eingabedaten um einen akkumulierten Codelängenwert vom Verschiebesteuerungsmittel;
ein drittes Register zur Speicherung und Ausgabe von Daten vom ersten Trommelverschieber als Reaktion auf
ein verfügbares Codesignal vom Verschiebesteuerungsmittel;
einen zweiten Trommelverschieber zum Verschieben der Ausgabedaten vom dritten Register um die vorherige Codelänge vom Verschiebesteuerungsmittel;
ein viertes Register zur Speicherung und Ausgabe der Ausgabedaten vom zweiten Trommelverschieber als Reaktion auf das Abstimmungssignal vom Decodiermittel;
einen dritten Trommelverschieber zum Verschieben von Ausgabedaten vom vierten Register und Ausgabedaten von einem fünften Register um die vorherige Codelänge vom Verschiebesteuerungsmittel, wobei das fünfte Register zeitweilig Ausgangsdaten vom dritten Trommelverschieber speichert und die gespeicherten Daten als Reaktion auf das Abstimmungssignal vom Decodiermittel zurück zum dritten Trommelverschieber leitet; und
ein sechstes Register zur Ausgabe der Ausgabedaten vom dritten Trommelverschieber zum Decodiermittel als Reaktion auf das Abstimmungssignal vom Decodiermittel.
3. Decodierer mit variabler Länge nach Anspruch 1, wobei das Decodiermittel umfaßt:
eine Codelängenspeichereinheit zur Abstimmung der Ausgabedaten vom Datenverschiebemittel mit darin gespeicherten Daten auf der Grundlage der vorherigen Codelänge vom Verschiebesteuerungsmittel und Ausgabe der aktuellen Codelänge an das Verschiebesteuerungsmittel gemäß dem abgestimmten Ergebnis;
einen Abstimmungsdetektor zur Erzeugung des Abstimmungssignals gemäß dem Abstimmvorgang der Codelängenspeichereinheit und Ausgabe des erzeugten Abstimmungssignals an das Datenverschiebemittel und das Verschiebesteuerungsmittel;
eine Speichereinheit für das decodierte Wort zur Ausgabe des decodierten Wortes gemäß dem Abstimmvorgang der Codelängenspeichereinheit; und
ein Register zum Speichern des decodierten Wortes von der Speichereinheit für das decodierte Wort.
4. Decodierer mit variabler Länge nach Anspruch 1, wobei das Verschiebesteuerungsmittel umfaßt:
ein erstes Register zur Speicherung der aktuellen Codelänge vom Decodiermittel und zur Ausgabe der gespeicherten Codelänge als vorherige Codelänge zum Datenverschiebemittel und zum Decodiermittel;
ein Flipflop zur Speicherung des Abstimmungssignals vom Decodiermittel und zur Ausgabe des gespeicherten Signals als verfügbares Codesignal zum Datenverschiebemittel;
einen Inverter zum Invertieren des verfügbaren Codesignals vom Flipflop;
ein zweites Register zum zeitweiligen Speichern eines akkumulierten Codelängenwertes als Reaktion auf das verfügbare Codesignal vom Flipflop;
einen Addierer zum Addieren der vorherigen Codelänge vom ersten Register und der Ausgabedaten vom zweiten Register und zum Ausgeben des addierten Wertes als Bereit-Signal und eines Summensignals, wobei das Bereit-Signal an das Datenverschiebungsmittel angelegt wird; und
ein drittes Register zum Speichern des Summensignals vom Addierer und zum Ausgeben des gespeicherten Signals als akkumulierten Codelängenwert zum Datenverschiebungsmittel und zweiten Register als Reaktion auf ein Ausgabesignal vom Inverter.
5. Decoder mit variabler Länge, umfassend:
ein Datenverschiebungsmittel (700) zum Verschieben von Eingabedaten als Reaktion auf ein Bereit-Signal (RDY); und
ein Decodiermittel (720) zum Erkennen einer aktuellen Codelänge (LN1) von den Daten, die vom Verschiebemittel ausgegeben werden, auf der Grundlage einer vorherigen Codelänge, wobei das Decodiermittel weiter das wichtigste Bit der erkannten aktuellen Codelänge als Bereit-Signal an das Datenverschiebungsmittel ausgibt und die Ausgabedaten vom Datenverschiebungsmittel auf der Grundlage der vorherigen Codelänge decodiert, um ein decodiertes Wort auszugeben.
6. Decodierer mit variabler Länge nach Anspruch 5, wobei das Datenverschiebungsmittel umfaßt:
ein erstes und zweites Register zum sequentiellen Speichern der Eingabedaten als Reaktion auf das Bereit-Signal vom Decodiermittel; und
ein drittes Register zum Verschieben der Ausgabedaten vom ersten und zweiten Register als Reaktion auf das Bereit-Signal vom Decodiermittel und zum Ausgeben der verschobenen Daten an das Decodiermittel.
7. Decoder mit variabler Länge nach Anspruch 5, wobei das Decodiermittel umfaßt:
eine Codewort-/Codelängenspeichereinheit zum Abstimmen der Ausgabedaten vom Datenverschiebungsmittel mit darin gespeicherten Daten auf der Grundlage der vorherigen Codelänge, das Addieren einer abgestimmten Codelänge mit einer vorherigen Codelänge und das Ausgeben des addierten Wertes als aktuelle Codelänge;
eine Speichereinheit für ein decodiertes Wort zur Ausgabe des decodierten Wortes gemäß dem Abstimmungsvorgang der Codewort-/- Codelängenspeichereinheit;
ein erstes Register zum Speichern des decodierten Wortes von der Speichereinheit für ein decodiertes Wort; und
ein zweites Register zum Speichern der aktuellen Codelänge von der Codewort-/- Codelängenspeichereinheit und Zurückleiten der gespeicherten Codelänge als vorherige Codelänge zur Codewort-/Codelängenspeichereinheit.
DE69416773T 1993-09-23 1994-09-20 Variabler Längen-Kodieren und variabler Längen-Dekodierer Expired - Lifetime DE69416773T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1019930019513A KR960005200B1 (ko) 1993-09-23 1993-09-23 가변장 복호화기(Variable Length Decoder)
KR1019930019512A KR950010427B1 (ko) 1993-09-23 1993-09-23 가변장 부호화기(Variable Length Coder)

Publications (2)

Publication Number Publication Date
DE69416773D1 DE69416773D1 (de) 1999-04-08
DE69416773T2 true DE69416773T2 (de) 1999-10-21

Family

ID=26629912

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69416773T Expired - Lifetime DE69416773T2 (de) 1993-09-23 1994-09-20 Variabler Längen-Kodieren und variabler Längen-Dekodierer

Country Status (3)

Country Link
US (1) US5557271A (de)
EP (1) EP0649224B1 (de)
DE (1) DE69416773T2 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08101791A (ja) * 1994-09-30 1996-04-16 Kurieiteibu Design:Kk 可変長ビットデータ処理回路および方法
KR0152038B1 (ko) * 1994-10-17 1998-10-15 김광호 상대 주소를 이용한 가변장 복호화 장치
KR960020018A (ko) * 1994-11-17 1996-06-17 배순훈 가변길이복호화장치
KR0154011B1 (ko) * 1995-03-16 1998-11-16 배순훈 가변길이 복호화 장치
US5822558A (en) * 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte-length instructions within a superscalar microprocessor
KR0180169B1 (ko) * 1995-06-30 1999-05-01 배순훈 가변길이 부호기
KR0178201B1 (ko) * 1995-08-31 1999-05-01 배순훈 가변 길이 복호화 장치
KR100195098B1 (ko) * 1995-10-13 1999-06-15 윤종용 영상 압축 및 복원장치에 있어서 가변길이복호화된 데이타 재배열방법 및 회로
KR0183173B1 (ko) * 1995-12-13 1999-05-15 윤종용 버퍼 메모리 제어 장치
US5835035A (en) * 1995-12-28 1998-11-10 Philips Electronics North America Corporation High performance variable length decoder with two-word bit stream segmentation and related method
US5818364A (en) * 1996-06-19 1998-10-06 Hewlett-Packard Company High bit-rate huffman decoding
KR19980052329A (ko) * 1996-12-24 1998-09-25 구자홍 오디오 디코더의 비트 스트림 파싱장치
US6028539A (en) * 1997-02-07 2000-02-22 Matsushita Electric Industrial Co., Ltd. Buffer control method, and decoding apparatus performing buffer control
US6167506A (en) 1997-11-17 2000-12-26 Advanced Micro Devices, Inc. Replacing displacement in control transfer instruction with encoding indicative of target address, including offset and target cache line location
US6134649A (en) * 1997-11-17 2000-10-17 Advanced Micro Devices, Inc. Control transfer indication in predecode which identifies control transfer instruction and an alternate feature of an instruction
JP3863652B2 (ja) * 1997-12-19 2006-12-27 テキサス インスツルメンツ インコーポレイテツド 可変長コードの整列化装置
US6061786A (en) * 1998-04-23 2000-05-09 Advanced Micro Devices, Inc. Processor configured to select a next fetch address by partially decoding a byte of a control transfer instruction
US6215424B1 (en) * 1998-12-16 2001-04-10 Thomson Licensing S.A. System for variable length codeword processing suitable for video and other applications
KR100335138B1 (ko) * 1998-12-30 2002-11-27 엘지정보통신주식회사 비디오코더의가변부호화기및이를이용한코딩방법
JP2000207205A (ja) * 1999-01-14 2000-07-28 Sony Corp 演算装置
US6501398B2 (en) * 2000-03-24 2002-12-31 Matsushita Electric Industrial Co., Ltd. Variable-length code decoder using barrel shifters and a look-up table
US6647444B2 (en) * 2000-12-29 2003-11-11 Intel Corporation Data synchronization interface
KR100434502B1 (ko) * 2002-05-07 2004-06-05 삼성전자주식회사 DSP(Digital SignalProcessor)의 데이터 추출/삽입 방법 및 데이터추출/삽입 장치
TWI245571B (en) * 2004-11-05 2005-12-11 Ali Corp Variable-length decoding apparatus and method for the image format of a digital video camera
CN100466748C (zh) * 2004-11-12 2009-03-04 扬智科技股份有限公司 数字摄影机影像格式的可变长度解码装置及方法
US7610472B2 (en) * 2005-06-05 2009-10-27 Apple Inc. Performing variable and/or bitwise shift operation for a shift instruction that does not provide a variable or bitwise shift option
KR101375662B1 (ko) * 2007-08-06 2014-03-18 삼성전자주식회사 이미지 데이터 압축 방법 및 장치
TW201115459A (en) * 2009-10-21 2011-05-01 Etron Technology Inc Data processing circuit

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4502111A (en) * 1981-05-29 1985-02-26 Harris Corporation Token generator
US5060242A (en) * 1989-02-24 1991-10-22 General Electric Company Non-destructive lossless image coder
JPH0799812B2 (ja) * 1990-03-26 1995-10-25 株式会社グラフイックス・コミュニケーション・テクノロジーズ 信号符号化装置および信号復号化装置、並びに信号符号化復号化装置
US5173695A (en) * 1990-06-29 1992-12-22 Bell Communications Research, Inc. High-speed flexible variable-length-code decoder
JPH04257939A (ja) * 1991-02-13 1992-09-14 Tokyo Electric Co Ltd データ処理装置
US5343195A (en) * 1992-12-18 1994-08-30 Thomson Consumer Electronics, Inc. Variable length codeword decoding apparatus

Also Published As

Publication number Publication date
EP0649224B1 (de) 1999-03-03
DE69416773D1 (de) 1999-04-08
EP0649224A1 (de) 1995-04-19
US5557271A (en) 1996-09-17

Similar Documents

Publication Publication Date Title
DE69416773T2 (de) Variabler Längen-Kodieren und variabler Längen-Dekodierer
DE4217009C1 (de) Hochgeschwindigkeitsdekodierer für Codes veränderlicher Länge
DE2508706C2 (de) Schaltungsanordnung zur Codierung von Datenbitfolgen
DE69626211T2 (de) Blockkodierung für übertragung von digitalen videosignalen
DE3587535T2 (de) Verfahren und Vorrichtung zur numerischen Datenkodierung.
DE2614916C2 (de) Konverter zur Codeumwandlung
DE3587107T2 (de) Drehungsverfahren und -geraet fuer binaere bilder.
DE4314741A1 (de) Dekodierer-Architektur nach Huffman für eine höhere Betriebsgeschwindigkeit und reduzierten Speicherbedarf
DE4217008C2 (de) HDTV-Dekodierer
DE69915725T2 (de) Datenkompression unter Verwendung von Primzahlexponenten
DE2264090B2 (de) Datenverdichtung
DE69113836T2 (de) Integrierter Hochgeschwindigkeitssynchronzähler mit asynchroner Auslesung.
DE69125424T2 (de) Vorrichtung zur variablen Längenkodierung und Vorrichtung zur variablen Längendekodierung
DE69427399T2 (de) Datenübertragungseinrichtung
DE69534298T2 (de) Verfahren und Vorrichtung zur Ermittlung einer Phasendifferenz und Filterschaltung
DE69735835T2 (de) Dekodierer variabler Länge und Verfahren zur Dekodierung zweier Kodewörter pro Takt
DE69535392T2 (de) Vorrichtung zur Dekodierung von Codes mit variablen Lauflängen unter Verwendung einer relativen Adressierung
DE3711201A1 (de) Binaerdatenverdichtungs- und -dehnungs-verarbeitungsgeraet
DE3406624C2 (de)
DE69230609T2 (de) Vorrichtung zur Datenübertragung und System zur Codeübertragung
DE69031238T2 (de) Datenentpacker
DE69320147T2 (de) Vorrichtung zur Bildkodierung
DE69737304T2 (de) Dekoder für Kodes variabler Länge
DE2512541A1 (de) Einfuegung zusaetzlicher informationselemente in nachrichten und herausnahme solcher informationselemente aus nachrichten
DE2944234C2 (de)

Legal Events

Date Code Title Description
8364 No opposition during term of opposition