DE69413512T2 - Vorrichtung zur Dekodierung von Kodes mit veränderlicher Länge - Google Patents
Vorrichtung zur Dekodierung von Kodes mit veränderlicher LängeInfo
- Publication number
- DE69413512T2 DE69413512T2 DE69413512T DE69413512T DE69413512T2 DE 69413512 T2 DE69413512 T2 DE 69413512T2 DE 69413512 T DE69413512 T DE 69413512T DE 69413512 T DE69413512 T DE 69413512T DE 69413512 T2 DE69413512 T2 DE 69413512T2
- Authority
- DE
- Germany
- Prior art keywords
- length
- output
- accumulated
- vlc
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
- H03M7/425—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory for the decoding process only
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
- H03M7/6023—Parallelization
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
- Die vorliegende Erfindung betrifft eine Vorrichtung zum Decodieren eines Codes variabler Länge (VLC = variable length code, d. h. Code variabler Länge); und insbesondere eine VLC-Decodiervorrichtung, die zum Decodieren zweier unterschiedlicher VLC-Ströme geeignet ist, die von zwei Kanälen unabhängig bereitgestellt werden.
- Das Codieren mit variabler Länge ist eine oftmals für die verlustlose Datenkompression benutzte Technik. Diese Technik wird verwendet, um Daten fester Länge in Codewörter variabler Länge umzuwandeln, basierend auf dem statistischen Auftreten der Daten. Die Länge der Codewörter wird derart ausgewählt, daß kürzere Codewörter verwendet werden, um häufiger auftretende Daten darzustellen, und längere Codewörter ausgewählt werden, um weniger häufig auftretende Daten darzustellen. Durch sauberes Zuordnen der Codewörter variabler Länge zu einer Zusammenstellung aller möglichen Quellencodewörter, wird die durchschnittliche Wortlänge der Codewörter variabler Länge kürzer als diejenige der ursprünglichen Daten, wodurch der Erhalt einer Datenkompression ermöglicht wird.
- In diesem Zusammenhang ist der Huffman-Code-Entwurf ein Verfahren, das gewöhnlich verwendet wird, einen Code variabler Länge für eine bekannte Datenstatistik aufzustellen. Im allgemeinen kann der Codierprozeß unter Verwendung eines Tabellen-Nachschlage-Verfahrens implementiert werden, welches die Eingangsdaten zum Adressieren der Tabelle verwendet. Die Codewörter und die Wortlängeninfor mation werden als Inhalte der Tabelle gespeichert und sequentiell unter Verwendung eines Puffers mit einer konstanten Datenrate auf den Datenkanal ausgegeben.
- Am Empfangsende ist der Decodierprozeß jedoch komplizierter. Wegen der Natur der variablen Länge muß jedes Codewort aus dem empfangenen Bit-Strom segmentiert werden, bevor es in ein Quellensymbol decodiert werden kann. Daher ist der Aufbau einer VLC-Decodiervorrichtung schwieriger als derjenige eines Codierers variabler Länge.
- Es gibt mehrere bekannte Vorrichtungen, die zum Decodieren eines Stromes von Codewörtern variabler Länge verwendet werden. Unter diesen wird eine VLC-Decodiervorrichtung stärker akzeptiert, die einen Baumsuch-Algorithmus anwendet, wie die in dem US-Patent Nr. 4,899,149, ausgegeben am 6. Februar 1990 für Gary Kahan. In diesem Gerät wird ein VLC mittels eines Baums mit Codewörtern als Knoten (ebenfalls Endknoten genannt) dargestellt. Der Decodierprozeß startet von der Wurzel des Codierbaumes und wird mittels des empfangenen Bitstromes geführt, einem von zwei Verzweigungen bei jedem Knoten zu folgen. Wenn ein Knoten erreicht wird, ist das Ende eines Codewortes erfaßt und wird aus dem verbleibenden Bitstrom segmentiert. Diese Art von Decodiervorrichtung weist eine dem Baum entsprechende logische Schaltung und eine Steuerschaltung zum Durchlaufen des Codebaumes auf. Dieser Ansatz kann jedoch langsam sein, insbesondere für lange Codewörter, da für jedes decodierte Symbol eine Bit-zu- Bit-Suche durch den Codebaum erforderlich ist.
- Eine auf einer Nachschlagetabelle basierende VLC- Decodiervorrichtung ist in dem US-Patent Nr. 5,173,695 offenbart, das am 22. Dezember 1992 an Ming-Ting Sun, et al. ausgegeben ist. Diese Decodiervorrichtung enthält zwei kaskadierte Speicherschaltungen, die jeweils eine Bitfähigkeit bzw. -kapazität gleich der maximalen Codewortlänge haben, welche aufeinanderfolgende Bits spei chern, die von einem Eingabepufferspeicher zum Speichern des zu decodierenden Bitstromes in Datensegmenten fester Länge geliefert werden; einen mit den beiden Speicherschaltungen verbundenen Bitstellenverschieber zum Bereitstellen einer gleitenden Decodierfensterausgabe, die von der Länge her gleich der maximalen Codewortlänge ist; einen Akkumulator, welcher die Längen sequentiell decodierter Codewörter variabler Länge akkumuliert; und eine Nachschlagetabelle-Speichereinrichtung zum Ausgeben eines decodierten Wortes, das einem in der gleitenden Decodierfensterausgabe enthaltenen Codewort variabler Länge entspricht, und zum Ausgeben einer Länge des Codewortes variabler Länge. Da ein Codewort während jedes Taktzykluses decodiert wird, wird seine Länge akkumuliert und das Decodierfenster des Bitstellenverschiebers verschoben, um mit dem ersten Bit eines als nächstes zu decodierenden Codewortes zu beginnen. Wenn während eines Taktzykluses die akkumulierte Länge die maximale Codewortlänge überschreitet, was anzeigen würde, daß alle Bits in der zweiten Speicherschaltung decodiert worden sind, werden die Bits in der ersten Speicherschaltung in die zweite Speicherschaltung übertragen und das nächste Bitsegment fester Daten aus dem Eingabepufferspeicher in die erste Speicherschaltung gelesen.
- In dem zuvor beschriebenen Decodierer, der auf einer Nachschlagetabelle basiert, werden zwei getrennte VLC- Decodierer benötigt, um zwei unterschiedliche VLC- Bitströme zu verarbeiten, da ein VLC-Decodierer lediglich einen VLC-Bitstrom verarbeitet, was zwei Bitstellenverschieber und zwei VLC-Tabellen erfordert.
- Der Artikel "HIGH TROUGHPUT RECONSTRUCTION OF HUFFMAN- CODED IMAGES" von Horng-Dar Lin und Davis G. Messerschmitt, 1989 International Conference on Computer Design: VLSI in computers & processors, 2-4.10.89, New York (US), S. 172-175, XP 090 465, offenbart einen Decodierer zum simultanen Decodieren unabhängiger, Huffman-codierter Bitströme, die entweder von unterschiedlichen Quellen stammen, wie aus unterschiedlichen Frames oder von unterschiedlichen Benutzern, oder aus einem einzigen Huffman- codierten Bitstrom, der in zwei unabhängige Unterströme aufgeteilt ist. Dieser Decodierer weist mehrere, parallel arbeitende Einheitsdecodierer und Schaltmittel auf, um den Decodiererdurchsatz zu erhöhen.
- Es ist daher eine primäre Aufgabe der vorliegenden Erfindung, eine VLC-Decodiervorrichtung zu schaffen, die zum simultanen Verarbeiten zweier unterschiedlicher VLC- Bitströme geeignet ist, die von zwei getrennten Kanälen bereitgestellt werden, durch Verwenden eines Bitstellenverschiebers und einer VLC-Tabelle.
- Gemäß der vorliegenden Erfindung, ist eine VLC- Decodiervorrichtung geschaffen für das simultane Decodieren zweier unterschiedlicher VLC-Bitströme, die getrennt von einem ersten Eingabepuffer und einem zweiten Eingabepuffer bereitgestellt werden, wobei jeder der Eingabepuffer einen zu decodierenden Eingangsbitstrom in Segmenten fester Länge speichert, mit einer Länge, die gleich der längsten Länge der in jedem der VLC-Bitströme enthaltenen Codewörter variabler Länge ist, wobei die Vorrichtung aufweist:
- erste Speichermittel zum Speichern zweier aufeinanderfolgender Segmente fester Länge aus dem ersten Eingabepuffer in Antwort auf ein erstes Lesesignal;
- zweite Speichermittel zum Speichern zweier aufeinanderfolgender Segmente fester Länge aus dem zweiten Eingabepuffer in Antwort auf ein zweites Lesesignal;
- ein erstes Auswahlmittel zum Auswählen der beiden aufeinanderfolgenden Segmente fester Länge aus dem ersten oder dem zweitem Speichermittel in Antwort auf ein erstes Auswahlsignal, und zum Auswählen eines ersten oder eines zweiten Fenstersteuersignals;
- ein Bitstellenverschiebermittel zum Bilden eines Decodierfensters auf den beiden ausgewählten aufeinanderfolgenden Segmenten in Antwort auf das ausgewählte Fenstersteuersignal, um daraus eine Decodierfenster-Ausgabefolge zu erzeugen, wobei die Decodierfenster-Ausgabefolge eine Bitlänge gleich der längsten Länge der Codewörter variabler Länge aufweist;
- ein Speichermittel zum Erzeugen eines decodierten Wortes in Antwort auf ein Codewort variabler Länge, das bei der ersten Bitposition der Decodierfenster-Ausgabefolge beginnt, und zum Erzeugen einer Codewort-Längenausgabe, welche dem decodierten Codewort variabler Länge entspricht;
- ein zweites Auswahlmittel zum Erzeugen des decodierten Wortes und der Codewort-Längenausgabe als ein erstes decodiertes Wort und eine erste Codewortlänge oder als ein zweites decodiertes Wort und eine zweite Codewort- Längenausgabe in Antwort auf ein zweites Auswahlsignal;
- ein erstes Akkumulatormittel zum Addieren der ersten Codewort-Längenausgabe zu einer zuvor akkumulierten ersten Codewort-Längenausgabe, um dadurch das erste Fenstersteuersignal zu erzeugen, das eine akkumulierte Codewort-Längenausgabe angibt, falls die akkumulierte Längenausgabe nicht größer als die längste Länge der Codewörter variabler Länge ist, und um die akkumulierte Codewort-Längenausgabe auf null zu setzen und ein erstes Vor- Lesesignal zu erzeugen, falls die akkumulierte Codewort- Längenausgabe größer als die längste Länge der Codewörter variabler Länge ist;
- ein zweites Akkumulatormittel zum Addieren der zweiten Codewort-Längenausgabe zu einer zuvor akkumulierten zweiten Codewort-Längenausgabe, um dadurch das zweite Fenstersteuersignal zu erzeugen, das eine akkumulierte Codeword-Längenausgabe angibt, falls die akkumulierte Längenausgabe nicht größer als die längste Länge der Codewörter variabler Länge ist, und um die akkumulierte Codewort-Längenausgabe auf null zu setzen; und ein zweites Vor-Lesesignal zu erzeugen, falls die akkumulierte Code wort-Längenausgabe größer als die längste Länge der Codewörter variabler Länge ist; und
- ein Steuermittel zum Erzeugen des ersten und des zweiten Auswahlsignals und des ersten und des zweiten Lesesignals in Antwort auf das erste und das zweite Fenstersteuersignal und das erste und das zweite Vor-Lesesignal, um zu veranlassen, daß die beiden VLC-Bitströme simultan decodiert werden.
- Die obigen und weitere Vorteile und Merkmale der vorliegenden Erfindung werden aus der folgenden Beschreibung bevorzugter Ausführungsbeispiele in Verbindung mit der beigefügten Zeichnung deutlich, in der
- Fig. 1 ein bevorzugtes Ausführungsbeispiel einer VLC- Decodiervorrichtung gemäß der vorliegenden Erfindung beschreibt; und
- Fig. 2 ein beispielhaftes Diagramm zum Erläutern der Vorgang der in Fig. 1 gezeigten VLC- Decodiervorrichtung darstellt.
- Eine VLC-Decodiervorrichtung gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung ist in Fig. 1 gezeigt. Die VLC-Decodiervorrichtung decodiert simultan Codewörter variabler Länge, die in zwei unterschiedlichen VLC-Bitströmen enthalten sind, und gibt zwei dementsprechende decodierte Wörter aus. Es wird angenommen, daß die maximale Länge der Codewörter variabler Länge gleich 16 Bits ist.
- Wie in Fig. 1 gezeigt, werden die beiden unterschiedlichen VLC-Bitströme von jedem Kanal (nicht gezeigt) bereitgestellt. Ein erster auf einer Leitung 10 empfangener VLC-Bitstrom wird einem ersten Pufferspeicher 12 eingegeben, der den ersten VLC-Bitstrom speichert und sequentiell Segmente fester Länge, welche eine Länge gleich der längsten Länge der Codewörter variabler Länge aufweisen, z. B. 16-Bit-Segmente, auf einer Leitung 16 in Antwort auf ein erstes Lesesignal auf einer Leitung 14 von einem Zeitsteuerblock 8 ausgibt.
- Eine erste Speicherschaltung 18 ist mit dem ersten Pufferspeicher 12 verbunden und dient dem sequentiellen Empfang von Datensegmenten fester Länge in Antwort auf das erste Lesesignal auf der Leitung 14. Eine zweite Speicherschaltung 22 ist mit der ersten Speicherschaltung 18 verbunden und dient dem Empfang der zuvor in der ersten Speicherschaltung 18 gehaltenen Datensegmente fester Länge. Wenn ein neues Datensegment bereitgestellt werden muß, wird ein erstes Lesesignal auf der Leitung 14 aktiviert. In Antwort darauf stellt der erste Pufferspeicher 12 das nächste Datensegment auf der Leitung 16 bereit; die erste Speicherschaltung 18 empfängt das nächste Datensegment; und das zuvor in der ersten Speicherschaltung 18 gehaltene Datensegment wird an die zweite Speicherschaltung 22 übertragen. Damit enthält die zweite Speicherschaltung 22 das Datensegment, welches dem in der ersten Speicherschaltung 18 enthaltenen Datensegment vorangeht. Die beiden in der ersten und der zweiten Speicherschaltung 18 und 22 enthaltenen Datensegmente weisen eine 32-Bit-Sequenz des ersten VLC-Bitstromes auf, welcher das Zweifache der maximalen Länge des Codewortes variabler Länge ist. Die beiden Datensegmente in den ersten und zweiten Speicherschaltungen 18 und 22 werden entsprechend über parallele Leitungen 20 und 24 einem Bitstellenverschieber 30 über einen Schalter SW2 eingegeben, bis ein neues erstes Lesesignal aktiviert wird.
- Zwischenzeitlich wird ein zweiter, auf einer Leitung 11 empfangener VLC-Bitstrom einem zweiten Pufferspeicher 13 bereitgestellt, welcher den zweiten VLC-Bitstrom spei chert und Datensegmente fester Länge, z. B. 16-Bit- Segmente, auf einer Leitung 17 in Antwort auf ein zweites Lesesignal von dem Zeitsteuerblock 8 über eine Leitung 15 ausgibt, wobei die Bitlänge der Datensegmente identisch der maximalen Bitlänge des Codewortes variabler Länge ist.
- Eine dritte Speicherschaltung 19 ist mit dem zweiten Pufferspeicher 13 verbunden und dient dem sequentiellen Empfang der Datensegmente fester Länge in Antwort auf das zweite Lesesignal auf der Leitung 15 von dem Zeitsteuerblock 8. Eine vierte Speicherschaltung 23 ist mit der dritten Speicherschaltung 19 verbunden und dient dem Empfang des zuvor in der dritten Speicherschaltung 19 gehaltenen Segmentes fester Länge. Wenn ein neues Datensegment bereitgestellt werden muß, wird ein zweites Lesesignal auf der Leitung 15 aktiviert. In Antwort darauf stellt der zweite Pufferspeicher 13 das nächste Datensegment auf der Leitung 17 bereit; die dritte Speicherschaltung 19 empfängt das nächste Datensegment; und das zuvor in der dritten Speicherschaltung 19 gehaltene Datensegment wird über eine Leitung 21 zu der vierten Speicherschaltung 23 übertragen. Die beiden in der dritten und der vierten Speicherschaltung 19 und 23 enthaltenen Datensegmente weisen eine 32-Bit-Sequenz des zu decodierenden, zweiten VLC-Bitstromes auf, welcher das Zweifache der Größe des Codewortes maximaler variabler Länge hat. Die beiden Datensegmente in der dritten und der vierten Speicherschaltung 19 und 23 werden entsprechend über parallele Leitungen 21 und 25 dem Bitstellenverschieber 30 durch den Schalter SW2 eingegeben, bis ein nächstes zweites Lesesignal auf der Leitung 15 aktiviert wird.
- Der Schalter SW2 reagiert auf ein erstes Auswahlsignal SEL1, das von dem Zeitsteuerblock 8 zugeführt wird, um eines der beiden 32-Bit-Segmente fester Länge dem Bitstellenverschieber 30 selektiv zu liefern.
- Die ausgewählten 32-Bits von dem SW2 werden dem Bitstellenverschieber 30 über parallele Leitungen 26 und 28 eingegeben. Wie nachstehend beschrieben wird, bildet der Bitstellenverschieber 30 ein 16-Bit-Decodierfenster auf den 32-Bit-Eingaben, wenn ein erstes Fenstersteuersignal auf einer Leitung 58 von einem ersten Akkumulator 62 oder ein zweites Fenstersteuersignal auf einer Leitung 59, das von einem zweiten Akkumulator 64 erzeugt wird, selektiv auf einer Leitung 61 durch einen Schalter SW3 bereitgestellt wird, der durch das erste Auswahlsignal SEL1 gesteuert wird. Das 16-Bit-Decodierfenster wird über die 32-Bit-Eingaben auf den Leitungen 26 und 28 verschoben und seine Position wird direkt durch das über die Leitung 61 eingegebene erste oder zweite Fenstersteuersignal bestimmt. Jedes der Fenstersteuersignale bezeichnet eine Verschiebung des Decodierfensters zwischen null und fünfzehn. Ein Fenstersteuersignal von "0" gibt an, daß das Decodierfenster das erste bis sechzehnte Bit auf den Leitungen 26 und 28 umfaßt, während ein Fenstersteuersignal "15" angibt, daß das Decodierfenster das sechzehnte bis einunddreißigste Bit umfaßt. Nach dem Bilden des Decodierfensters erzeugt der Bitstellenverschieber 30 eine Decodierfenster-Ausgabesequenz an eine Nachschlagetabelle über eine Leitung 32.
- In dem bevorzugten Ausführungsbeispiel der Erfindung ist die Nachschlagetabelle 40 durch eine programmierbare logische Anordnung implementiert (PLA = programmable logic array, d. h. programmierbare logische Anordnung). Die in Fig. 1 gezeigte Nachschlagetabelle 40 wird dargestellt, daß sie eine UND-Ebene 42 für die Tabelle der Codewörter, eine ODER-Ebene 44 für Tabelle der Wortlängen und eine ODER-Ebene 46 für die Tabelle der decodierten Wörter umfaßt. Wie es auch in dem US-Patent Nr. 5,173,695 beschrieben ist, ist jedes Codewort als eine Eingabe in die UND-Ebene 42 für die Tabelle der Codewörter entsprechend dem Bitmuster der Codewörter variabler Länge dargestellt.
- Ein Codewort variabler Länge wird erfaßt, wenn eine Sequenz von dem Bitstellenverschieber 30 mit einem der Bitmuster der Codewörter variabler Länge übereinstimmt, die in der UND-Ebene 42 für die Tabelle der Codewörter gespeichert sind. Somit tritt dann eine Übereinstimmung in den ersten beiden Bits auf, wenn z. B. einer der Bitmuster der Codewörter variabler Länge "01" zu ist und die 16- Bit-Sequenz von dem Bitstellenverschieber 30 ein Muster "0111110000011101" aufweist. Die ersten beiden Bits werden folglich als ein Codewort variabler Länge erkannt und das nächste Wort beginnt mit dem dritten Bit.
- Wenn eine Decodierfenster-Ausgabesequenz auf der Leitung 32 mit einer Eingabe in der UND-Ebene 51 für die Tabelle der Codewörter übereinstimmt, werden die Eingabe in der ODER-Ebene 44 für die Tabelle der Wortlängen und die Eingabe in der ODER-Ebene 46 für die Tabelle der decodierten Wörter aktiviert.
- Die ODER-Ebene 44 für die Tabelle der Wortlängen erzeugt ein Wortlängensignal auf einer Leitung 48, das die Länge des übereinstimmenden Codewortes variabler Länge in der Codeworttabelle 42 anzeigt. Für das obige Beispiel gibt die Wortlängentabelle 44 eine "2" aus, welche die Länge des erfaßten Wortes "01" darstellt. Dann wird die Wortlänge einem Schalter SW4 eingegeben.
- Die ODER-Ebene 46 für die Tabelle der decodierten Wörter gibt auf einer Leitung 50 das decodierte Wort aus, das dem übereinstimmenden Codewort variabler Länge in der UND-Ebene 42 für die Tabelle der Codewörter entspricht. Das decodierte Wort auf der Leitung 50 wird dem Schalter SW4 bereitgestellt.
- Der Schalter SW4 reagiert auf ein zweites Auswahlsignal SEL2 von dem Zeitsteuerblock 8, um die decodierten Wörter und Längen von der Nachschlagetabelle 40 in erste und zweite einzuteilen, d. h., falls ein decodiertes Wort dem ersten VLC-Bitstrom angehört, wird es auf einer Leitung 52 als ein erstes decodiertes Wort ausgegeben und dessen Codewort-Längensignal wird einem ersten Akkumulator 62 über eine Leitung 54 bereitgestellt. Falls ein decodiertes Wort ein Teil des zweiten VLC-Bitstromes ist, wird es auf einer Leitung 53 als ein zweites decodiertes Wort ausgegeben und dessen Codewort-Längensignal wird einem zweiten Akkumulator 62 bereitgestellt.
- Sowohl der erste als auch der zweite Akkumulator 62 und 64 dienen dazu, die Codewortlänge des vorliegenden decodierten Wortes zu den zuvor akkumulierten Codewortlängen zu addieren, nachdem jeweils ein Codewort variabler Länge erfaßt wird. Falls die neue akkumulierte Summe nicht überschreitet, wird der Wert der bei dem ersten 62 oder dem zweiten Akkumulator 64 berechneten neuen addierten Länge dem Bitstellenverschieber 30 als das erste oder das zweite Fenstersteuersignal bereitgestellt, was in dem obigen Bitstellenverschieber 30 dargestellt ist. In Antwort auf das erste oder das zweite Fenstersteuersignal wird die Position des Decodierfenster zwischen null und fünfzehn verschoben.
- Wenn jedoch die neue akkumulierte Summe fünfzehn überschreitet, aktiviert jeder der Akkumulatoren 62 und 64 Vor-Lesesignale auf Leitungen 56 und 57 und setzt die zuvor akkumulierten Codewortlängen auf null. Die Vor- Lesesignale geben jeweils an, daß alle in der zweiten 22 oder der vierten Speicherschaltung 23 gespeicherten Bits decodiert worden sind und nunmehr verworfen werden können. Das erste und das zweite Vor-Lesesignal auf Leitungen 56 und 58 werden jeweils dem Zeitsteuerblock 8 bereitgestellt.
- Der Zeitsteuerblock 8 bestimmt in Antwort auf das erste und das zweite Vor-Lesesignal und das erste und das zweite Fenstersteuersignal die Betätigungszeit des ersten und des zweiten Lesesignals jeweils auf den Leitungen 14 und 15 und stellt die Auswahlsignale SEL1 und SEL2 den Schaltern SW1, SW3 und SW4 bereit, damit die beiden unterschiedlichen VLC-Bitströme simultan decodiert werden können.
- Die Betriebsweise der VLC-Decodiervorrichtung in Fig. 1 kann besser mit Bezug auf ein in tabellarischer Form in Fig. 2 gezeigtes Beispiel verstanden werden. In jeder Zelle der ersten Spalte aus Fig. 2 gibt es fünf Prozesse 10, 20, 30, 40 und 50, welche sind:
- Der Prozeß 10 ist Teil der gesamten Betriebsweise, d. h. in Antwort auf das erste Lesesignal auf der Leitung 14, zwei Segmente fester Länge des ersten VLC-Bitstromes bei den beiden Speichern 18 und 22 zu speichern;
- der Prozeß 20 reagiert auf ein zweites Lesesignal auf Leitung 15, um zwei Segmente fester Länge des zweiten VLC-Bitstromes bei den beiden Speichern 19 und 23 zu speichern;
- der Prozeß 30 ist eine Operation des Bitstellenverschiebers 30 und der Nachschlagetabelle 40. D. h., in Antwort auf ein Fenstersteuersignal auf der Leitung 61 ein Decodierfenster auf den Leitungen 26 und 28 auszubilden; eine Decodierfenster-Ausgabesequenz auf der Leitung 32 zu erzeugen; und ein decodiertes Wort und eine Codewortlänge jeweils auf den Leitungen 48 und 50 zu erzeugen;
- der Prozeß 40 ist eine Operation des ersten Akkumulators 62, der eine erste Länge auf Leitung 54 zu einer zuvor akkumulierten Länge addiert, um das erste Fenstersteuersignal auf der Leitung 58 zu erzeugen oder das erste Vor- Lesesignal auf der Leitung 56 bereitzustellen; und
- der Prozeß 50 ist eine Betriebsweise des zweiten Akkumulators 64, der eine zweite Länge auf der Leitung 55 zu einer zuvor akkumulierten Länge addiert, um das zweite Fenstersteuersignal auf Leitung 59 zu erzeugen oder das zweite Vor-Lesesignal auf Leitung 57 bereitzustellen.
- In der ersten Reihe aus Fig. 2 sind Zeichen "A" bis "P" in jeder Zelle gezeigt, wobei die Symbole jeweils eine vorgegebene Verarbeitungszeit bezeichnen. Außerdem ist ein Abfolge der Decodierprozesse für den ersten VLC- Bitstrom durch eine "0" dargestellt, während die Decodierprozesse des zweiten VLC-Bitstromes jeweils durch ein "X" dargestellt sind. Es wird angenommen, daß die Verarbeitungszeiten jeweils gleich sind.
- In einer Verarbeitungszeit "A" aus Fig. 2 gibt es lediglich einen Decodierprozeß, d. h. einen Prozeß 10. Am Anfang der Decodierung der beiden VLC-Bitströme ist die Startverarbeitungszeit des Decodiervorgangs des ersten VLC-Bitstromes um eine Zeit früher als diejenige des Decodiervorgangs des zweiten VLC-Bitstromes. In der Verarbeitungszeit "A" aktiviert der Zeitsteuerblock "A" das erste Lesesignal auf der Leitung 14 und speichert zwei aufeinanderfolgende Segmente fester Länge des ersten VLC- Bitstromes bei den beiden Speichern 18 und 22.
- In einer Verarbeitungszeit "B" wird als nächster Prozeß für den ersten VLC-Bitstrom ein Prozeß 30 durchgeführt. Um den Prozeß 30 zu beginnen, betätigt der Steuerblock 8, nachdem er eine vorgegebene Verarbeitungszeit, d. h., die Zeit "A" investiert hat, den Schalter SW1 mit dem ersten Auswahlsignal SEL1, um einen Satz Leitungen 26 und 28 an einen Satz der Leitungen 20 und 24 zu koppeln. Gleichzeitig betätigt der Steuerblock 8 den Schalter SW3, um dem Bitstellenverschieber 30 ein erstes Fenstersteuersignal bereitzustellen.
- In der Verarbeitungszeit "B", als der erste Prozeß des Decodiervorgangs des zweiten VLC-Bitstromes, d. h. der Prozeß 20, betätigt der Steuerblock 8 das zweite Lesesignal auf der Leitung 15 und speichert zwei aufeinander folgende Segmente fester Länge des zweiten VLC-Bitstromes bei den beiden Speichern 19 und 23.
- In einer Verarbeitungszeit "C" wird ein Prozeß 40 für den ersten VLC-Bitstrom durchgeführt, während ein Prozeß 30 für den zweiten VLC-Bitstrom abgeschlossen wird. Vor dem Prozeß 40 wird das Auswahlsignal SEL2 dem SW4 nach einer vorgegebenen Zeit, d. h. der Zeit "B", bereitgestellt. In Anwort auf das SEL2 stellt der Schalter SW4 das auf der Leitung 50 verbleibende erste decodierte Wort der Leitung 52 bereit und stellt die erste Länge auf der Leitung 48 der Leitung 54 bereit. In dem Prozeß 30 für den zweiten VLC-Bitstrom betätigt der Steuerblock 8, nachdem er die Zeit "B" investiert hat, das erste Auswahlsignal SEL1, um den Satz an Leitungen 26 und 28 an den Satz der Leitungen 21 und 25 zu koppeln. Der Steuerblock 8 betätigt ferner den Schalter SW3, um dem Bitstellenverschieber 30 ein zweites Fenstersteuersignal bereitzustellen.
- Wie in Fig. 2 gezeigt, werden nach dem Prozeß 40 für den ersten VLC-Bitstrom zwei Arten an Prozessen vorbereitet. Einer ist ein neuer Prozeß 30 und der andere ist ein neuer Prozeß 10. Falls ein neuer akkumulierter Wert den Wert 15 in dem ersten Akkumulator 62 nicht überschreitet, wird der Prozeß 30 durchgeführt, beispielsweise von der Verarbeitungszeit "C" nach "D", "E" nach "F" oder "J" nach "K". Falls er jedoch den Wert 15 überschreitet, wird der Prozeß 10 durchgeführt, beispielsweise die Verarbeitungszeit "G" nach "H", "L" nach "M" und "O" nach "P".
- In einer Verarbeitungszeit "D" werden ein Prozeß 30 für den ersten VLC-Bitstrom und ein Prozeß 50 für den zweiten VLC-Bitstrom simultan durchgeführt. Vor der Verarbeitung des Prozesses 50 wird das Auswahlsignal SEL2 dem SW4 nach der Zeit "C" bereitgestellt. Zu dieser Zeit ist das SEL2 identisch dem SEL1 in dem Prozeß 30 für den zweiten VLC- Bitstrom. In Antwort auf das SEL2 koppelt der Schalter SW4 den Satz an Leitungen 48 und 50 an den Satz an Leitungen 55 und 53.
- Nach dem Prozeß 50 werden zwei Arten an Prozessen vorbereitet. Einer ist der Prozeß 20 und der andere ist der Prozeß 30. Falls ein neuer akkumulierter Wert in dem zweiten Akkumulator 64 den Wert 15 nicht überschreitet, wird der Prozeß 30 durchgeführt, beispielsweise von einer Bearbeitungszeit "D" nach "E", falls er jedoch den Wert 15 überschreitet, wird der Prozeß 20 durchgeführt, beispielsweise eine Verarbeitungszeit "F" nach "G".
- Wie in Fig. 2 gezeigt, ist es möglich, simultan zwei unterschiedliche VLC-Bitströme zu decodieren, da die Prozesse jeweils unabhängig arbeiten. Da jedoch ein PROZESS 20 und ein PROZESS 40 zu der gleichen Verarbeitungszeit durchgeführt werden, beispielsweise "J" oder ein PROZESS 10 und ein PROZESS 50 zur gleichen Zeit arbeiten, beispielsweise die Verarbeitungszeit "M", treffen sich die nächsten Decodierprozesse des ersten und des zweiten VLC- Bitstromes an einem Prozeß 30. In diesem Fall erfaßt der Zeitsteuerblock 8 jeweils die Prozesse 10, 20, 40 und 50 mit den Signalen auf den Leitungen 56 bis 59, um den Prozeß 20 oder 50 für den zweiten VLC-Strom so zu verzögern, daß die Prozeßkollision bei dem Prozeß 30 vermieden wird.
Claims (1)
1. Vorrichtung zum Decodieren eines Codes variabler
Länge (VLC = variable length code, d. h. Code
variabler Länge) für das gleichzeitige Decodieren zweier
unterschiedlicher VLC-Bitströme, die getrennt von
einem ersten Eingabepuffer (12) und einem zweiten
Eingabepuffer (13) bereitgestellt werden, wobei
jeder der Eingabepuffer einen zu decodierenden
Eingangsbitstrom in Segmenten fester Länge speichert,
mit einer Länge, die gleich der längsten Länge der
in jedem der VLC-Bitströme enthaltenen Codewörter
variabler Länge ist, wobei die Vorrichtung aufweist:
erste Speichermittel (18, 22) zum Speichern
zweier aufeinanderfolgender Segmente fester Länge
aus dem ersten Eingabepuffer in Antwort auf ein
erstes Lesesignal;
zweite Speichermittel (19, 23) zum Speichern
zweier aufeinanderfolgender Segmente fester Länge
aus dem zweiten Eingabepuffer in Antwort auf ein
zweites Lesesignal;
erste Auswahlmittel zum Auswählen der beiden
Segmente fester Länge aus dem ersten oder dem
zweitem Speichermittel in Antwort auf ein erstes
Auswahlsignal (SEL1), und zum Auswählen eines ersten
oder eines zweiten Fenstersteuersignals;
ein Bitstellenverschiebermittel (30) zum Bilden
eines Decodierfensters auf den beiden ausgewählten
aufeinanderfolgenden Segmenten in Antwort auf das
ausgewählte Fenstersteuersignal, um daraus eine
Decodierfenster-Ausgabefolge zu erzeugen, wobei die
Decodierfenster-Ausgabefolge eine Bitlänge gleich
der längsten Länge der Codewörter variabler Länge
aufweist;
ein Speichermittel zum Erzeugen eines
decodierten Wortes in Antwort auf ein Codewort variabler
Länge, das bei der ersten Bitposition der
Decodierfenster-Ausgabefolge beginnt, und zum Erzeugen einer
Codewort-Längenausgabe, welche dem decodierten
Codewort variabler Länge entspricht;
ein zweites Auswahlmittel (SW4) zum Erzeugen des
decodierten Wortes und der Codewort-Längenausgabe
als ein erstes decodiertes Wort und eine erste
Codewortlänge oder als ein zweites decodiertes Wort und
eine zweite Codewort-Längenausgabe in Antwort auf
ein zweites Auswahlsignal (SEL2);
ein erstes Akkumulatormittel (62) zum Addieren
der ersten Codewort-Längenausgabe zu einer zuvor
akkumulierten ersten Codewort-Längenausgabe, um
dadurch das erste Fenstersteuersignal zu erzeugen, das
eine akkumulierte Codewort-Längenausgabe angibt,
falls die akkumulierte Codewort-Längenausgabe nicht
größer als die längste Länge der Codewörter
variabler Länge ist, und um die akkumulierte Codewort-
Längenausgabe auf null zu setzen und ein erstes Vor-
Lesesignal zu erzeugen, falls die akkumulierte
Codewort-Längenausgabe größer als die längste Länge der
Codewörter variabler Länge ist;
ein zweites Akkumulatormittel (64) zum Addieren
der zweiten Codewort-Längenausgabe zu einer zuvor
akkumulierten zweiten Codewort-Längenausgabe, um
dadurch das zweite Fenstersteuersignal zu erzeugen,
das eine akkumulierte Codeword-Längenausgabe angibt,
falls die akkumulierte Längenausgabe nicht größer
als die längste Länge der Codewörter variabler Länge
ist, und um die akkumulierte Codewort-Längenausgabe
auf null zu setzen; und ein zweites Vor-Lesesignal
zu erzeugen, falls die akkumulierte Codewort-
Längenausgabe größer als die längste Länge der
Codewörter variabler Länge ist; und
ein Steuermittel (8) zum Erzeugen des ersten und
des zweiten Auswahlsignals und des ersten und des
zweiten Lesesignals in Antwort auf das erste und das
zweite Fenstersteuersignal und das erste und das
zweite Vor-Lesesignal, um zu veranlassen, daß die
beiden VLC-Bitströme simultan decodiert werden.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019940000782A KR0124191B1 (ko) | 1994-01-18 | 1994-01-18 | 가변길이 코드 디코딩장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69413512D1 DE69413512D1 (de) | 1998-10-29 |
DE69413512T2 true DE69413512T2 (de) | 1999-03-04 |
Family
ID=19375802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69413512T Expired - Lifetime DE69413512T2 (de) | 1994-01-18 | 1994-12-30 | Vorrichtung zur Dekodierung von Kodes mit veränderlicher Länge |
Country Status (6)
Country | Link |
---|---|
US (1) | US5650781A (de) |
EP (1) | EP0663730B1 (de) |
JP (1) | JP3294032B2 (de) |
KR (1) | KR0124191B1 (de) |
CN (1) | CN1059525C (de) |
DE (1) | DE69413512T2 (de) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5650905A (en) * | 1995-12-28 | 1997-07-22 | Philips Electronics North America Corporation | Variable length decoder with adaptive acceleration in processing of Huffman encoded bit streams |
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 |
KR100292050B1 (ko) * | 1997-11-08 | 2001-06-01 | 김영환 | 가변장복호기의 데이타 가변장치 |
DE60100416T2 (de) * | 2000-04-28 | 2004-06-09 | Matsushita Electric Industrial Co., Ltd., Kadoma | Dekoder für Kode variabler Länge |
KR100450753B1 (ko) * | 2002-05-17 | 2004-10-01 | 한국전자통신연구원 | 프로세서와 연결된 프로그램 가능한 가변 길이 디코더 |
FI116813B (fi) | 2002-06-20 | 2006-02-28 | Nokia Corp | Menetelmä ja järjestelmä vaihtuvapituisen koodauksen purkamiseksi, ja koodisanojen paikannuslaite |
AU2003298974A1 (en) * | 2003-07-15 | 2005-01-28 | Intel, Zakrytoe Aktsionernoe Obschestvo | A method of decoding variable length prefix codes |
CN1297150C (zh) * | 2004-12-16 | 2007-01-24 | 上海交通大学 | 单时钟周期可变长熵解码装置 |
CN100356793C (zh) * | 2005-06-09 | 2007-12-19 | 清华大学 | 多变长码并行解码器 |
US7129862B1 (en) * | 2005-07-29 | 2006-10-31 | Texas Instruments Incorporated | Decoding bit streams encoded according to variable length codes |
JP4398987B2 (ja) * | 2007-03-19 | 2010-01-13 | 株式会社東芝 | マルチデコーダ装置及び方法 |
US9848209B2 (en) | 2008-04-02 | 2017-12-19 | Microsoft Technology Licensing, Llc | Adaptive error detection for MPEG-2 error concealment |
US9788018B2 (en) | 2008-06-30 | 2017-10-10 | Microsoft Technology Licensing, Llc | Error concealment techniques in video decoding |
US9131241B2 (en) * | 2008-11-25 | 2015-09-08 | Microsoft Technology Licensing, Llc | Adjusting hardware acceleration for video playback based on error detection |
US8340510B2 (en) | 2009-07-17 | 2012-12-25 | Microsoft Corporation | Implementing channel start and file seek for decoder |
CN103188485B (zh) * | 2011-12-30 | 2016-06-29 | 安凯(广州)微电子技术有限公司 | 一种码流缓存系统及视频解码器 |
JP5855777B2 (ja) * | 2015-01-28 | 2016-02-09 | 株式会社情報システム総合研究所 | データ圧縮装置、データ復号装置、データ圧縮方法、データ復号方法およびデータ圧縮および復号システム |
WO2020155146A1 (en) * | 2019-01-31 | 2020-08-06 | Hong Kong Applied Science and Technology Research Institute Company Limited | Parallel ldpc decoder |
US10826529B2 (en) | 2019-01-31 | 2020-11-03 | Hong Kong Applied Science And Technology Research Institute Co., Ltd. | Parallel LDPC decoder |
US10877729B2 (en) | 2019-01-31 | 2020-12-29 | Hong Kong Applied Science And Technology Research Institute Co., Ltd. | Reconfigurable segmented scalable shifter |
US11575390B2 (en) | 2021-07-02 | 2023-02-07 | Hong Kong Applied Science and Technology Research Insitute Co., Ltd. | Low-latency segmented quasi-cyclic low-density parity-check (QC-LDPC) decoder |
Family Cites Families (4)
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 |
US5173695A (en) * | 1990-06-29 | 1992-12-22 | Bell Communications Research, Inc. | High-speed flexible variable-length-code decoder |
US5345236A (en) * | 1992-12-21 | 1994-09-06 | Harris Corporation | Improved sigma-delta type analog-to-digital converter and method |
KR960003452B1 (ko) * | 1992-12-31 | 1996-03-13 | 대우전자주식회사 | 가변길이부호 복호장치 |
-
1994
- 1994-01-18 KR KR1019940000782A patent/KR0124191B1/ko not_active IP Right Cessation
- 1994-12-28 JP JP33880994A patent/JP3294032B2/ja not_active Expired - Lifetime
- 1994-12-30 DE DE69413512T patent/DE69413512T2/de not_active Expired - Lifetime
- 1994-12-30 US US08/367,523 patent/US5650781A/en not_active Expired - Lifetime
- 1994-12-30 EP EP94120943A patent/EP0663730B1/de not_active Expired - Lifetime
-
1995
- 1995-01-16 CN CN95101304A patent/CN1059525C/zh not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
KR0124191B1 (ko) | 1998-10-01 |
US5650781A (en) | 1997-07-22 |
CN1059525C (zh) | 2000-12-13 |
JP3294032B2 (ja) | 2002-06-17 |
EP0663730B1 (de) | 1998-09-23 |
KR950024069A (ko) | 1995-08-21 |
JPH08116267A (ja) | 1996-05-07 |
CN1113055A (zh) | 1995-12-06 |
DE69413512D1 (de) | 1998-10-29 |
EP0663730A1 (de) | 1995-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69413512T2 (de) | Vorrichtung zur Dekodierung von Kodes mit veränderlicher Länge | |
DE69127739T2 (de) | Bilddatenverarbeitungsgerät | |
DE69323020T2 (de) | Dekodierer für veränderliche Längenkodes | |
DE69726661T2 (de) | Verfahren und vorrichtung zur kodierung eines digitalen informationssignales | |
DE2640414C2 (de) | Schaltungsanordnung ung Verfahren für die Kompressionscodierung unter Verwendung einer Korrelation zwischen zweidimensionalen, aus zweiwertigen digitalen Bildern abgeleiteten Matrizen | |
DE2614916C2 (de) | Konverter zur Codeumwandlung | |
DE69524269T2 (de) | Vorrichtung und Verfahren zur Dekodierung von Kodes variabler Länge | |
DE69313540T2 (de) | Verbesserte Vorrichtung zur variablen Längendekodierung | |
DE69416773T2 (de) | Variabler Längen-Kodieren und variabler Längen-Dekodierer | |
DE69621124T2 (de) | Dekoder für daten variabler länge | |
DE3742098A1 (de) | Verfahren und vorrichtung zur kompression und rekonstruktion von daten | |
DE19506164A1 (de) | Verfahren zum Komprimieren eingegebener Symbole in Codeworte | |
DE3786412T2 (de) | Verfahren und Vorrichtung zur digitalen Signalkodierung durch Quantisierung. | |
DE69329092T2 (de) | Huffman-Kode-Decodierungsschaltung | |
DE69616036T2 (de) | Dekoder für variable längenkodierte daten | |
DE69125424T2 (de) | Vorrichtung zur variablen Längenkodierung und Vorrichtung zur variablen Längendekodierung | |
DE69327021T2 (de) | Dekodierschaltung für einen Kode variabler Länge | |
DE69112865T2 (de) | Verarbeitungsverfahren von digitalen Kontrolldaten, die mit einem HD-MAC-Videosignal verbunden sind. | |
DE68918590T2 (de) | Gerät zur dekodierung von mit variabler länge kodierten daten. | |
DE2423817A1 (de) | Verfahren und schaltungsanordnungen zur codierung zweidimensionaler bildinformationen | |
DE3714589A1 (de) | Videosignal-codierer mit dpcm und adaptiver praediktion | |
DE69524999T2 (de) | Verfahren zum Komprimieren und Dekomprimieren von Dateien | |
DE2900586A1 (de) | Anordnung zum decodieren von codewoertern variabler laenge | |
DE69411839T2 (de) | Verfahren zur Dekodierung eines variablen Wortlängenkodes und Dekoder zur Durchführung dieses Verfahrens | |
DE69428627T2 (de) | Dekodierer für Wörter variabler Länge mit hohem Durchfluss und Vorrichtung mit einem solchen Dekodierer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: DAEWOO ELECTRONICS CORP., SEOUL/SOUL, KR |