-
HINTERGRUND
DER ERFINDUNG
-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung bezieht sich auf einen VLC-Decoder (VLC – variabel
langer Code).
-
Erläuterung
des verwandten Stands der Technik
-
Im
Allgemeinen ist der VLC (variabel langer Code), der manchmal auch
als Hoffmann-Code bezeichnet wird, ein optimaler Code, der in einem Hochgeschwindigkeitsübertragungssystem
verwendet wird, und auf den statistische Kennwerte eines Datenelements
auf eine Weise angewendet werden, dass, sobald die statistischen
Kennwerte eines Datenelements bekannt sind, das kürzere Codewort
bestimmt wird, je mehr Videodaten generiert werden, und das längere Codewort
bestimmt wird, je weniger Videodaten generiert werden. Wenn durch
ein solches Verfahren geeignete Codewörter für alle möglichen Videodaten bestimmt
werden, kann eine durchschnittliche Bitlänge von Codewörtern auf
ein kürzeres
Maß als
eine ursprünglich
beabsichtigte, durchschnittliche Bitlänge komprimiert werden. Deshalb handelt
es sich bei diesem VLC um ein verlustfreies Codierverfahren, das
häufig
bei Daten verwendet wird, deren statistische Kennwerte hinlänglich bekannt
sind.
-
Dieser
VLC wird momentan in Systemen verwendet, die eines Verfahrens zum
Komprimieren einer Videonutzinformation zur dichteren Komprimierung
der Daten bedürfen,
wie etwa MPEG 1 (Moving Picture Expert Group 1), MPEG 2 (Moving
Picture Expert Group 2) und HDTV (High Definition Television, also
hochauflösendes
Fernsehen). Da im Laufe der Zeit nach immer schnelleren Decodern
für Codes mit
variabler Länge
verlangt wurde, wurden Strukturen vorgeschlagen, die eine Architektur
auf PLA-Basis (Programmable Logic Array – programmierbare Logikanordnung)
und nicht auf Baumbasis verwenden, wovon sich die meisten auf eine
Verkürzung
der längsten
Verzögerungszeit
des Decoders für
Codes mit variabler Länge konzentrieren.
Falls jedoch der komplizierte Decoder für Codes mit variabler Länge zusammen
mit Schaltungen, die um ihn herum in einem System wie MPEG 1, MPEG
2 oder HDTV, an ihn angeschlossen sind, einen Funktionsblock bildet, hängt die
Geschwindigkeit dieses Funktionsblocks von der längsten Verzögerungszeit ab, die in Teilen auftritt,
die den Decoder für
Codes mit variabler Länge
und die ihn umgebenden Schaltungen verbinden. Deshalb sollte bei
der Bereitstellung eines Decoders für Codes mit variabler Länge, die
einen Funktionsblock bilden, der mit ihn umgebenden Schaltungen
in einem System wie MPEG 1, MPEG 2 oder HDTV verbunden ist, nicht
nur die längste
Verzögerungszeit des
Decoders für
Codes mit variabler Länge
selbst berücksichtigt
werden, sondern auch die Verzögerungszeit,
die in den Teilen auftritt, die den Decoder für Codes mit variabler Länge und
die ihn umgebenden Schaltungen verbinden. Wie in 1 gezeigt
ist, wird ein codiertes Wort (oder Datenelement), das an einem Eingabepuffer 2 eingeht, über einen
Datenweg 3, in dem sich ein Decoder für Codes mit variabler Länge befindet,
unter der Steuerung eines Steuerlogikteils 1 decodiert
und über
einen Ausgabepuffer 4 ausgegeben. Wie aus Vorstehendem
zu sehen ist, bildet ein Decoder für Codes mit variabler Länge (VLC)
im Allgemeinen zusammen mit ihn umgebenden und mit ihm verbundenen
Schaltungen einen Funktionsblock. Obwohl in diesem Falle eine Ausgabe
der VLC-Tabelle direkt in einem Eingabepuffer in einem anderen Funktionsblock
gespeichert werden kann, wird die Ausgabe in den meisten Fällen jedoch auf
eine oder mehrere, ihn umgebende Schaltungen angelegt oder im Eingabepuffer
eines anderen Funktionsblocks gespeichert, nachdem sie im anderen Funktionsblock
in eine andere geeignete Form umgesetzt wurde.
-
Eine
Vorrichtung aus dem Stand der Technik zum Decodieren eines variabel
langen Codes nach einem Stand der Technik (US-Patent Nr. 5,245,338) wird
nun mit Bezug auf 2 erläutert. 2 stellt ein
Blockschema dar, das einen Decoder für Codes mit variabler Länge aus
dem Stand der Technik zeigt.
-
Mit
Bezug auf 2 umfasst der Decoder für Codes
mit variabler Länge
aus dem Stand der Technik einen Eingabepuffer 201, ein
erstes Zwischenspeicherteil 202, ein erstes Multibit-Schieberegister 203,
ein zweites Zwischenspeicherteil 204, ein zweites Multibit-Schieberegister 205,
eine VLC-Tabelle 206, einen ersten Zwischen- speicher 207,
ein Steuersignalgenerierungsteil 208 und einen Ausgabepuffer 209.
Das erste Zwischenspeicherteil 202 umfasst einen zweiten
Zwischenspeicher 202a und einen dritten Zwischenspeicher 202b,
das zweite Zwischenspeicherteil 204 umfasst einen vierten
Zwischenspeicher 204a und einen fünften Zwischenspeicher 204b. Das
Steuersignalgenerierungsteil umfasst einen Addierer 208a und
einen sechsten Zwischenspeicher 208b.
-
Mit
Bezug auf 2 decodiert die VLC-Tabelle 206 mit
Zufallslogik kontinuierlich aufeinanderfolgende Codewörter, um
im Ansprechen auf ein Lesesignal oder eine feststehende Zeichentaktfrequenz decodierte
Codewörter
mit einer feststehenden Länge
zu erzeugen. Das erste Zwischenspeicherteil 202 und das
Multibit-Schieberegister 203 bilden geeigneter Weise die Übergabestelle
zwischen dem Eingabepuffer 201 und dem zweiten Zwischenspeicherteil 204.
Der Eingabepuffer 201 speichert einen seriellen Bitstrom
von Codewörtern
mit variablen Längen,
die aus einem Datenkanal her eingehen, in einem Datensegment mit
einer feststehenden Länge
ab. Das Steuersignalgenerierungsteil 208 stellt parallel
16 Bit große
Daten im Ansprechen auf das Lesesignal aus dem sechsten Zwischenspeicher 208b her.
Die VLC-Tabelle 206 stellt eine Bitlänge eines Codeworts mit einer
unbekannten Bitlänge
und ein decodiertes Codewort mit der Bitlänge her, die an den Zwischenspeicher 207 bzw.
den Ausgabepuffer 209 angelegt werden sollen. Die Ausgabeseite
des zweiten Multibit-Schieberegisters 205 stellt der VLC-Tabelle 206 ein
Decodierfenster bereit, und wird durch die Bitlängen der decodierten Codewörter, die
im ersten Zwischenspeicher 207 aufgelaufen sind, bis zu
einem Takt gesteuert, der vor dem momentanen Takt liegt. Dem zweiten
Multibit-Schieberegister 205 werden Codewörter mit
variabler Länge
aus den Zwischenspeichern 204a und 204b bereitgestellt.
Jeder der Zwischenspeicher 204a und 204b hat eine
Bitkapazität,
die zumindest dem Codewort mit der längsten Länge entspricht. Der zweite
Zwischenspeicher 204 liefert aufeinanderfolgende Bits mit
mindestens zwei variabel langen Codewörtern. Eine Ausgabeseite des zweiten
Multibit-Schieberegisters 205 ist an eine Eingabeseite
der VLC-Tabelle 206 angeschlossen, um Bits des längsten zu
decodierenden Codeworts der aufeinanderfolgenden Bits mit einer
Länge anzulegen,
die dem Zweifachen des längsten
Codeworts entspricht, das im vierten Zwischenspeicher 204a und
im fünften
Zwischenspeicher 204b gespeichert ist, während Ein gabedaten
aus dem fünften
Zwischenspeicher 204b dem ersten Zwischenspeicherteil 202 und
dem ersten Multibit-Schieberegister 203 bereitgestellt
werden. Die VLC-Tabelle 206 legt die Länge des aus dem zweiten Multibit-Schieberegister 205 eingegangenen
Codeworts an den ersten Zwischenspeicher 207 und das decodierte
Codewort an den Ausgabepuffer 209 an. Beim nächsten Takt
nach dem momentanen Takt wird das zweite Multibit-Schieberegister 205 durch
die Längen
der Codewörter
angesteuert, die bis zu einem früheren
Takt decodiert wurden und vom ersten Zwischenspeicher 207 her
eingegangen sind. Dementsprechend wird ein Ausgabefenster des zweiten
Multibit-Schieberegisters 205 um die Bitlängen der
Codewörter
verschoben, die bis zu einem früheren
Takt decodiert wurden und vom ersten Zwischenspeicher 207 her eingegangen
sind, um erneut ab dem ersten Bit eines zu decodierenden Codeworts
zu beginnen. Da alle Bits im vierten Zwischenspeicher 202a bei
allen Takten transformiert werden, wird der fünfte Zwischenspeicher 204b wieder
mit einem entsprechenden Bitstrom aus dem ersten Multibit-Schieberegister 203 aufgefüllt, das
eine Übergabestellenfunktion
in einem jedem Takt entsprechenden Zyklus hat. Und zwar erscheint
ein aufeinanderfolgender Bitstrom beginnend ab dem ersten Bit eines
decodierten Codeworts auf der Eingabeseite des zweiten Multibit-Schieberegisters 205.
Und, obwohl das erste Multibit-Schieberegister 203 dem
fünften
Zwischenspeicher 204b einen Bitstrom liefert, ist dieser
Bitstrom nicht in der längsten
Verzögerungszeit
enthalten, weil dieser Bitstrom direkt an den fünften Zwischenspeicher 204b angelegt
wird. Somit sollte der Bitstrom von bis zu einem früheren Takt
decodierten Codewörtern,
die auf der Eingabeseite des zweiten Multibit-Schieberegisters 205 erscheinen,
fehlerfrei während
eines Zyklus aktualisiert werden, der jedem Takt entspricht. Wie
bereits erläutert,
wird aus dem eine Übergabestelle
bildenden ersten Multibit-Schieberegister 203 dem fünften Zwischenspeicher 204b eine
Ausgabe bereitgestellt. Einer Eingabeseite des eine Übergabestelle bildenden
Multibit-Schieberegisters 203 wird ein Codewort von den
beiden aufeinanderfolgenden Zwischenspeichern 202a und 202b,
die Kapazität
für die längste Codewortlänge haben,
und dem Eingabepuffer 201 bereitgestellt. Der eine Übergabestelle
bildende zweite und dritte Zwischenspeicher 202a und 202b haben
eine Bitkapazität
für die
längste
Codewortlänge,
die vom Eingabepuffer 201 ausgegeben werden kann. Die Ausgabe
aus dem ersten Multibit-Schieberegister 203 wird
sowohl durch die Länge des
decodierten Codeworts aus der Ausgabe aus der VLC-Tabelle 206 als
auch der Ausgabe des Addierers 208a gesteuert, der die
Längen
der bis zu einem Takt vor dem momentanen Takt decodierten Codewörter addiert,
die vom sechsten Zwischenspeicher 208b im Steuersignalgenerierungsteil 208 her
eingegangen sind. Die Ausgabe des ersten Multibit-Schieberegisters 203 wird
je nach den Bitlängen
der decodierten Codewörter
verschoben, die durch den Addierer 208a addiert wurden,
um Ausgaben des zweiten Multibit-Schieberegisters 205 und
die aufeinanderfolgenden Bitströme
auszugeben. Eine Bitfolgenreihe aus dem eine Übergabestelle bildenden ersten Multibit-Schieberegister 203 erscheint
auf der Eingabeseite des zweiten Multibit-Schieberegisters 205. Wenn
die Bitlängen
der decodierten Codewörter,
die im Addierer 208a addiert wurden, die längste Codewortlänge überschreiten,
wird ein Übertrag
generiert. Das bedeutet, dass alle in Speicherung im ersten eine Übergabestelle
bildenden Zwischenspeicher 202a befindlichen Bits über das
erste Multibit-Schieberegister 203 zum fünften Zwischenspeicher 202a übertragen
wurden. Aufgrund dieses Übertrags
werden alle im dritten Zwischenspeicher 202b vorhandenen
Bits zum zweiten Zwischenspeicher 202a übertragen und die Codewörter aus
dem Eingabepuffer 201 werden zu dem eine Übergabestelle
bildenden zweiten Zwischenspeicher 202a übertragen.
Und gleichzeitig werden dem dritten Zwischenspeicher 202b und
dem ersten Multibit-Schieberegister 203 aus dem Eingabepuffer 201 neue
16 Bit große
Daten bereitgestellt.
-
Wie
bereits erläutert
wurde, bildet bei der Implementierung eines qualitativ hochwertigen
Bildsystems wie MPEG 1, MPEG 2 oder HDTV der Decoder für Codes
mit variabler Länge
in vielen Fällen
einen Funktionsblock mit Schaltungen, die ihn umgeben und mit ihm
verbunden sind. Und, obwohl die Ausgaben aus der VLC-Tabelle und
decodierte Codebits direkt in Eingabepuffern in voneinander unterschiedlichen
Funktionsblöcken
gespeichert werden können, werden
sie in den meisten Fällen
an Schaltungen um die VLC-Tabelle als Eingabedaten angelegt oder
als Steuersignale für
andere Funktionsblöcke
verwendet. Es ist deshalb notwendig, die Bits der Codewörter in
kürzester
Zeit zu decodieren und gleichzeitig das von der längsten Verzögerungszeit
herrührende Problem
zu verhindern. In diesem Fall tritt die längste Verzögerungszeit des in Frage kommenden
Funktionsblocks in Teilen, welche die VLC-Tabelle mit sie umgebenden
Schaltungen verbinden, und nicht in einer internen Schaltung des
VLC-Decoders selbst auf, und zwar, wenn die diesen umgebenden Schaltungen
kompliziert werden, was darüber
hinaus noch das Problem aufwirft, dass die Geschwindigkeit eines schnellen
Datenübertragungssystems
eingeschränkt wird.
-
Dabei
besteht mit Bezug auf den in 2 gezeigten
Decoder für
Codes mit variabler Länge
aus dem Stand der Technik das Problem, dass ein größer bemessener
VLC-Decoder benötigt
wird, weil das eine Übergabestelle
bildende erste Multibit-Schieberegister
und das decodierende zweite Multibit-Schieberegister gebraucht werden.
Außerdem
stellte sich das Problem, dass eine Verzögerungszeit in den Teilen auftritt,
die den VLC-Decoder über
die VLC-Tabelle 6 und das decodierende zweite Multibit-Schieberegister 205 mit
den ihn umgebenden Schaltungen verbinden.
-
Ähnliche
Probleme in Bezug auf Verzögerungszeit,
die bei Decodern für
Codes mit variabler Länge
auftreten, sind in den Dokumenten
US 5173695 und
EP 0681404 offenbart.
-
Das
Dokument
US 5173695 offenbart
in
1 einen Decoder für Codes mit variabler Länge, der
Folgendes umfasst:
ein erstes Speicherteil, um ein eingegangenes
Codewort im Ansprechen auf ein Lesesignal temporär zu speichern und auszugeben;
ein
Multibit-Schieberegister (Barrel Shifter), um ein daran befindliches
Decodierausgabefenster im Ansprechen auf ein Schiebesignal beim
Ausgeben einer vorbestimmten Anzahl von Bits des Codeworts aus dem
Schaltteil zum Decodieren zu verschieben;
eine Tabelle, um
ein decodiertes Codewort und eine Bitlänge des decodierten Codeworts
aus der vorbestimmten Anzahl von Bits, die vom Multibit-Schieberegister
ausgegeben wurden, auszugeben;
ein Steuersignalgenerierungsteil,
um die Bitlänge
eines aus der Tabelle erhaltenen Codeworts mit dem momentanen Takt
beim Generieren des Schaltsignals, des Schiebesignals und des Lesesignals
zu verwenden.
-
Das
Dokument
EP 0681404 offenbart
in den
2A,
2B einen
Decoder für
Codes mit variabler Länge,
der dem im Dokument
US 5245338 offenbarten ähnlich ist,
wobei in
2B ferner noch Multiplexer
16 und
17 zwischen
dem Ausgang der drei Zwischenspeicher
13,
14,
15 und
dem ersten Multibit-Schieberegister
18 eingesetzt sind.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
Ausführungsformen
der vorliegenden Erfindung richten sich auf einen Decoder für Codes
mit variabler Länge,
der im Wesentlichen eines oder mehrere der Probleme umgeht, die
von Einschränkungen
und Nachteilen aus dem verwandten Stand der Technik herrühren.
-
Nach
einer bevorzugten Ausführungsform wird
ein Decoder für
Codes mit variabler Länge
bereitgestellt, der die längste
Verzögerungszeit
verkürzen
kann, die in Teilen auftritt, die einen VLC-Decoder und diesen umgebende
Schaltungen verbinden, und bei dem eine Chip-Fläche einer integrierten Schaltung
eines Funktionsblocks bei der Herstellung verkleinert werden kann.
-
Zusätzliche
Merkmale und Vorteile der Erfindung werden in der folgenden Beschreibung
dargelegt, ergeben sich teilweise aus der Beschreibung oder lassen
sich durch die praktische Umsetzung der Erfindung in Erfahrung bringen.
Die Ziele und weitere Vorteile der Erfindung werden durch den Aufbau
in die Tat umgesetzt und erreicht, der insbesondere in der schriftlichen
Beschreibung und deren Ansprüchen
sowie in den beigefügten
Zeichnungen herausgestellt ist.
-
Um
diese und weitere Vorteile zu erzielen, und in Übereinstimmung mit einem ersten
Aspekt der Erfindung, wird ein Decoder für Codes mit variabler Länge bereitgestellt,
der die Merkmale umfasst, die in den beigefügten Ansprüchen den Gegenstand von Anspruch
1 ausmachen.
-
Es
sollte klar sein, dass sowohl die vorstehende allgemeine als auch
die folgende ausführliche Beschreibung
beispielhaft und erläuternd
sind und eine weitere Erklärung
der Erfindung, so wie sie beansprucht ist, bieten soll.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
begleitenden Zeichnungen, die mit aufgenommen sind, um ein weiteres
Verständnis
der Erfindung zu bieten, und die in diese technische Beschreibung
eingegliedert sind und einen Teil von ihr bilden, stellen Ausführungsformen
der Erfindung dar und dienen zusammen mit der Beschreibung dazu, deren
Grundgedanken zu erklären.
-
1 stellt
ein Funktionsblockschema eines Systems dar, das einen Decoder für Codes
mit variabler Länge
umfasst;
-
2 stellt
ein Blockschema dar, das einen Decoder für Codes mit variabler Länge aus
dem Stand der Technik zeigt;
-
3 stellt
ein Blockschema dar, das einen Decoder für Codes mit variabler Länge nach
einer ersten Ausführungsform
der vorliegenden Erfindung zeigt;
-
4 stellt
einen Aufbau eines Bitstroms dar, der an den in 3 gezeigten
Eingabepuffer angelegt wird;
-
5 ist
eine Tabelle zur Erläuterung
des Funktionsablaufs des in 3 gezeigten
Decoders für
Codes mit variabler Länge
bei jedem Takt;
-
6 stellt
ein Blockschema dar, das einen Decoder für Codes mit variabler Länge nach
einer zweiten Ausführungsform
der vorliegenden Erfindung zeigt; und
-
7 stellt
ein Blockschema dar, das einen Decoder für Codes mit variabler Länge nach
einer dritten Ausführungsform
der vorliegenden Erfindung zeigt.
-
AUSFÜHRLICHE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Nun
wird im Einzelnen Bezug auf die bevorzugten Ausführungsformen der vorliegenden
Erfindung genommen, wovon Beispiele in den begleitenden Zeichnungen
dargestellt sind.
-
3 stellt
ein Blockschema dar, das einen Decoder für Codes mit variabler Länge nach
einer ersten Ausführungsform
der vorliegenden Erfindung zeigt.
-
Mit
Bezug auf 3 umfasst der Decoder für Codes
mit variabler Länge
nach einer ersten Ausführungsform
der vorliegenden Erfindung einen Eingabepuffer 310, um
Codewörter,
die seriell an ihn angelegt werden, parallel anhand von 16 Bits
zu speichern und die Codewörter
im Ansprechen auf ein Lesesignal auszugeben, ein Zwischenspeicherteil 320,
um die Codewörter
temporär
zu speichern und auszugeben, die im Ansprechen auf das Lesesignal
eingegangen sind, ein Multiplexerteil 330, um die Codewörter aus
dem Zwischenspeicherteil 320 zu empfangen und sie selektiv
im Ansprechen auf ein Multiplexsignal auszugeben, ein Multibit-Schieberegister 340,
um ein Ausgabefenster von diesem im Ansprechen auf ein Verschiebungssignal
zu verschieben und eine vorbestimmte Anzahl an Bits der Codewörter aus
dem Multiplexerteil 330 zum Decodieren auszugeben, einen
Zwischenspeicher 350, um die Codewörter aus dem Multibit-Schieberegister 340 temporär zu speichern
und auszugeben, eine PLA (programmierbare Logikanordnung) 360 als
VCL-Tabelle, um ein decodiertes Codewort und eine Bitlänge des Codeworts
aus dem Zwischenspeicher 350 auszugeben, ein Steuersignalgenerierungsteil 370,
um die Bitlängen
der decodierten Codewörter
bis zu einem Takt genau vor dem momentanen Takt und eine Bitlänge des
Codeworts aus der PLA 360 zum momentanen Takt zu addieren
und die addierten Bitlängen bei
der Bereitstellung des Lesesignals, des Multiplexsignals und des
Schiebesignals für
den Eingabepuffer 310, das Zwischenspeicherteil 320,
das Multiplexerteil 330 bzw. das Multibit-Schiebregister 340 zu verwenden.
-
Das
Zwischenspeicherteil 320 umfasst einen ersten Zwischenspeicher 321,
um die Codewörter aus
dem Eingabepuffer 310 im Ansprechen auf das Lesesignal
temporär
zu speichern und auszugeben, einen zweiten Zwischenspeicher 322,
um die Codewörter
aus dem ersten Zwischenspeicher 321 im Ansprechen auf das
Lesesignal temporär
zu speichern und auszugeben, einen dritten Zwischenspeicher 323,
um die Codewörter
aus dem zweiten Zwischenspeicher 322 im Ansprechen auf
das Lesesignal temporär
zu speichern und auszugeben. Das Multiplexerteil 330 umfasst
einen ersten Multiplexer 331, um eines der Codewörter aus
dem Eingabepuffer 310 und dem ersten und zweiten Zwischenspeicher 321 und 322 im
Ansprechen auf das Multiplexsignal im Zwischenspeicherteil 320 auszuwählen und
das ausgewählte
Codewort als 16 Rückwärtsbits
des Multibit-Schieberegisters 340 auszugeben, und einen zweiten
Multiplexer 332, um eines der Codewörter aus dem ersten, zweiten
und dritten Zwischenspeicher 321, 322 und 323 im
Ansprechen auf das Multiplexsignal im Zwischenspeicherteil 320 auszuwählen und
das ausgewählte
Codewort als 16 Vorwärtsbits des
Multibit-Schieberegisters 340 auszugeben. In diesem Fall
fungiert das Multiplexerteil 330 als Schaltteil. Deshalb
kann das Multiplexerteil 330 auch durch eine andere Vorrichtung
ersetzt werden, die als Schaltteil fungiert. Der Einfachheit halber
wird der Zwischenspeicher 350 nachstehend als vierter Zwischenspeicher
bezeichnet.
-
Das
Steuersignalgenerierungsteil 370 umfasst einen dritten
Multiplexer 371, um ein Anfangseinstellungssignal zu empfangen,
auszuwählen
und auszugeben und eine Bitlänge
eines aus der PLA 360 eingegangenen Codeworts auszuwählen, das zum
momentanen Takt decodiert wurde, einen fünften Zwischenspeicher 372,
der eine Summe der Bitlängen
der Codewörter
speichert, die bis zu einem Takt genau vor dem momentanen Takt decodiert
wurden, einen Addierer 373, um die Bitlänge aus dem dritten Multiplexer 371 und
ein Ausgabedatenelement aus dem fünften Zwischenspeicher 372 zu
addieren, um das Schiebesignal und ein Übertragsignal zum Verschieben
des Ausgabefensters des Multibit-Schieberegisters 340 auszugeben,
einen sechsten Zwischenspeicher 374, um das aus dem Addierer 373 eingegangene Übertragsignal
temporär
zu speichern, und das gespeicherte Übertragsignal beim nächsten Takt
als Lesesignal auszugeben, und ein Multiplexsteuerteil 375,
um das aus dem Addierer 373 eingegangene Übertragsignal
und das aus dem sechsten Zwischenspeicher 324 eingegangene
Lesesignal bei der Ausgabe des Multiplexsignals zu verwenden, um
das Multiplexerteil 330 einen seiner Anschlüsse auswählen zu
lassen. Hier ist die PLA 360, bei der es sich um eine VLC-Tabelle
handelt, eine Art Speicher. Dementsprechend kann die PLA 360 ein
decodiertes Codewort und eine Bitlänge eines empfangenen Codeworts
ausgeben. Deshalb kann die PLA durch eine andere Vorrichtung ersetzt werden,
die als Speicher fungieren kann.
-
Der
Funktionsablauf des Decoders für
Codes mit variabler Länge
nach der ersten Ausführungsform
der vorliegenden Erfindung wird nachstehend im Einzelnen mit Bezug
auf die 4 und 5 beschrieben. 4 stellt
einen Aufbau eines Bitstroms dar, der an den in 3 gezeigten
Eingabepuffer angelegt wird, und 5 ist eine
Tabelle zur Erläuterung
des Funktionsablaufs des in 3 gezeigten
Decoders für
Codes mit variabler Länge
bei jedem Takt.
-
Codewörter mit
variablen Längen,
die an den Eingabepuffer 310 von außerhalb angelegt werden, werden
von diesem 16 Bit-weise nach einer feststehenden Zeichentaktfrequenz
ausgegeben. Die längste
Bitlänge
der Codewörter
mit variabler Länge
beträgt
16 Bits. Wie hinlänglich
bekannt ist, hat der erste, zweite bzw. dritte Zwischenspeicher 321, 322 und 323 im
Zwischenspeicherteil 320, bei dem es sich um ein Bit-Register
handelt, eine Kapazität
für das
längste
Codewort. Eine Eingabe von 32 Bits in das Multibit-Schieberegister 340 wird
aus dem ersten und zweiten Multiplexer 331 und 332 im
Multiplexerteil 330 bereitgestellt, und ein 16-Bit-Schiebedecodierfenster
wird als Ausgabefenster des Multibit-Schieberegisters 340 bereitgestellt,
dessen Verschiebung durch das Schiebesignal aus dem Steuersignalgenerierungsteil 370 gesteuert
wird. Der erste Multiplexer 331 und der zweite Multiplexer 332 stellen
dem Multibit-Schieberegister 340 16 Vorwärtsbits
bzw. 16 Rückwärtsbits
zur Verfügung.
-
Das
erneuerte 16 Bit-Codewort aus dem Multibit-Schieberegister 340 wird über den
vierten Zwischenspeicher 350 an die PLA 360 angelegt,
die eine Art Speicher ist. Wie in 2 gezeigt
ist, umfasst die PLA 360 eine Codeworttabelle, eine decodierte
Codeworttabelle und eine Codewortlängentabelle. Die Codeworttabelle
in der PLA 360 erfasst Bitmuster von darin gespeicherten
Codewörtern
für ein Codewort,
das einem Bitmuster entspricht, das identisch mit der Reihenfolge
von Bits eines empfangenen Codeworts ist. Die decodierte Codeworttabelle
in der PLA 360 gibt Codewörter mit einer feststehenden Länge aus,
die den Codewörtern
mit variablen Längen
entsprechen, die in der Codeworttabelle erfasst werden, also decodierte
Codewörter.
Und die Codewortlängentabelle
gibt Bitlängen
der Codewörter
mit variablen Längen
aus, die in der Codeworttabelle erfasst sind. Bei der Generierung
des nächsten
Takts wird die Codewortlänge
aus der Codewortlängentabelle
in der PLA 360 zu den Bitlängen der Codewörter, die
bis zu einem Takt genau vor dem Takt decodiert wurden, im Addierer 373 addiert,
und dieses akkumulierte Signal wird als Schiebesignal verwendet, um
das Ausgabefenster des Multibit-Schieberegisters 340 zu
verschieben. Dieser Addierer generiert auch ein Übertragsignal „1", wenn die Summe
der akkumulierten Codewörter
länger
ist als die längste
Bitlänge
des Codeworts, und „0", wenn sie kürzer ist, und
stellt es dem sechsten Zwischenspeicher 374 bereit. Wenn
das Übertragsignal
aus dem Addierer 373 und das Lesesignal aus dem sechsten
Zwischenspeicher 374 auf 0 (Tiefpegel) bzw. 0 (Tiefpegel)
sind, stellt das Multiplexsteuerteil 375 dem ersten Multiplexer 331 und
dem zweiten Multiplexer 332 ein Multiplexsignal bereit,
so dass der erste Multiplexer 331 und der zweite Multiplexer 332 das
Ausgabesignal aus dem zweiten Zwischenspeicher 322 bzw. das
Ausgabesignal aus dem dritten Zwischenspeicher 323 selektiv
ausgeben, wenn das Übertragsignal
und das Lesesignal auf 1 (Hochpegel) bzw. 0 (Tiefpegel) sind, oder
auf 0 bzw. 1, das Multiplexsteuerteil 375 dem ersten Multiplexer 331 und
dem zweiten Multiplexer 332 ein Multiplexsignal bereitstellen, so
dass der erste Multiplexer 331 und der zweite Multiplexer 332 das
Ausgabesignal aus dem ersten Zwischenspeicher 321 bzw.
das Ausgabesignal aus dem zweiten Zwischenspeicher 322 selektiv
ausgeben, und wenn das Übertragsignal
und das Lesesignal auf 1 (Hochpegel) bzw. 1 (Hochpegel) sind, das
Multiplexsteuerteil 375 dem ersten Multiplexer 331 und dem
zweiten Multiplexer 332 ein Multiplexsignal bereitstellen,
so dass der erste Multiplexer 331 und der zweite Multiplexer 332 selektiv
das Ausgabesignal aus dem Eingabepuffer 321 bzw. das Ausgabesignal aus
dem ersten Zwischenspeicher 321 ausgeben.
-
Beispielsweise
angenommen, ein Codewort mit dem Datenstrom von 4 wird
an den in 3 gezeigten Eingabepuffer angelegt.
Bei der Generierung eines ersten Taktsignals werden beliebige 16 Bits
zwangsweise an den dritten Multiplexer 371 im Steuersignalgenerierungsteil 370 als
Anfangseinstellungssignal angelegt, um alle Übertragsignale und Lesesignale
auf „Hochpegel" gehen zu lassen.
Zur gleichen Zeit gibt der Eingabepuffer 310 16 Bits a1-a8b1-b6c1-c2 aus,
die das erste Bit des empfangenen Codeworts enthalten. „1" bedeutet hier Hochpegel
und „0" Tiefpegel. Da alle Übertrag-
und Lesesignale im Ansprechen auf ein Multiplexsignal aus dem Multiplexsteuerteil 375 auf
1, 1 sind, wählt
in dieser Zeit der zweite Multiplexer 332 ein Codewort
aus dem ersten Zwischenspeicher 321 aus, und der erste Multiplexer 331 wählt ein
Codewort aus dem Eingabepuffer 310 aus. Das heißt, der
erste Multiplexer 331 wählt
ein Ausgabesignal a1-a8b1-b6c1-c2 aus und gibt es aus, und das Multibit-Schieberegister 340, welches
32 Bits erhält,
verschiebt sein Ausgabefenster, ein Schiebedecodierfenster, um 16
Bits. In diesem Fall wird kein Signal vom Multibit-Schieberegister 340 ausgegeben.
-
Bei
der Generierung eines zweiten Taktsignals werden beliebige 16 Bits
zwangsweise an den dritten Multiplexer 371 im Steuersignalgenerierungsteil 370 als
Anfangseinstellungssignal an das Übertragsignal „1" angelegt und lassen
das Lesesignal durch das im Addierer 373 beim ersten Takt
generierte Übertragsignal
auf „1" gehen, was dazu
führt,
dass der Eingabepuffer 310 ein Codewort c3-c5d1-d13 ausgibt.
Aufgrund dessen werden die Daten a1-a8b1-b6c1-c2, die beim ersten
Takt vom Eingabepuffer 310 ausgegeben werden, durch das
Lesesignal im zweiten Zwischenspeicher 322 gespeichert,
da alle Übertrag-
und Lesesignale auf 1 und 1 sind, der zweite Multiplexer 332 gibt
selektiv ein Signal a1-a8b1-b6c1-c2 im Ansprechen auf das Multiplexsignal vom
Multiplexsteuerteil 375 aus dem ersten Zwischenspeicher 321 aus,
und der erste Multiplexer 331 gibt selektiv ein Signal
c3-c5d1-d13 aus. Und das Multibit-Schieberegister 340,
das die Signale aus dem ersten Zwischenspeicher 321 und
dem Eingabepuffer 310 erhalten hat, verschiebt sein Schiebedecodierfenster
aus dem momentanen Zustand um 16 Bits und überträgt das Codewort a1-a8b1-b6c1-c2 vom ersten Zwischenspeicher 321 zum
vierten Zwischenspeicher 350.
-
Bei
der Generierung eines dritten Taktsignals wird das Lesesignal durch
das Übertragsignal
beim vorherigen zweiten Takt zu „1", das Übertragsignal wird zu „0", weil das zu decodierende
Signal a1-a8 tatsächlich nur
aus 8 Bits besteht, und der Eingabepuffer 310 gibt den
nächsten
Signalbitstrom d14d15e1-e12f1f2 aus. Da das Lesesignal beim vorherigen
zweiten Taktsignal auf „1" ist, speichert der
Zwischenspeicher 321 im Zwischenspeicherteil 320 ein Datenelement
c3-c5d1-d13 aus dem Eingabepuffer 310 beim
vorherigen zweiten Takt, der zweite Zwischenspeicher 322 speichert
ein Datenelement a1-a8b1-b6c1-c2 aus dem ersten Zwischenspeicher 321 beim
vorherigen zweiten Takt, und der vierte Zwischenspeicher 350 speichert
ein Datenelement a1-a8b1-b6c1-c2 aus dem Multibit-Schieberegister 340 beim
vorherigen zweiten Takt. Da in diesem Moment das Übertrag-
und Lesesignal auf 1 bzw. 0 sind, wählen der zweite Multiplexer 332 und
der erste Multiplexer 331 das Datenelement a1-a8b1-b6c1-c2 aus dem zweiten
Zwischenspeicher 322 bzw. das Datenelement c3-c5d1-d13 aus
dem ersten Zwischenspeicher 321 aus und legen es an die
Eingabeseite des Multibit-Schieberegisters 340 an. Beim
Eingang eines Signals (oder Datenelements) aus dem ersten und zweiten
Multiplexer 331 und 332 verschiebt das Multibit-Schieberegister 340 sein
Schiebedecodierfenster um die Länge
a1-a8 (8 Bits) des
beim vorherigen zweiten Takt decodierten Codeworts und gibt im Ansprechen
auf das Schiebesignal aus dem Steuersignalgenerierungsteil 370 ein
Datenelement b1-b6c1-c5d1-d5 aus. Während
der Decoder für
Codes mit variabler Länge
in Betrieb ist, werden die zuvor erwähnten Schritte ständig wiederholt.
-
Nachstehend
wird ein Decoder für
Codes mit variabler Länge
nach einer zweiten Ausführungsform der
vorliegenden Erfindung erläutert.
In der zweiten Ausführungsform
wird anstelle des im Stande der Technik verwendeten zweiten Multibit-Schieberegisters
auch ein Multiplexerteil verwendet, das über eine Schaltfunktion verfügt.
-
6 stellt
ein Blockschema dar, das den Decoder für Codes mit variabler Länge nach
der zweiten Ausführungsform
der vorliegenden Erfindung zeigt.
-
Mit
Bezug auf 6 umfasst der Decoder für Codes
mit variabler Länge
nach der zweiten Ausführungsform
der vorliegenden Erfindung einen Eingabepuffer 610, um
aus einem seriell an ihn angelegten Codewort parallele Codewörter mit
16 Bits zu machen und die parallelen Codewörter im Ansprechen auf ein
Lesesignal auszugeben, ein Zwischenspeicherteil 620, um
die aus dem Eingabepuffer 610 erhaltenen Codewörter im
Ansprechen auf das Lesesignal temporär zu speichern und auszugeben,
ein Multiplexerteil 630, um die Codewörter aus dem Zwischenspeicherteil 620 und
die Codewörter
aus dem Eingabepuffer 610 im Ansprechen auf ein Multiplexsignal
auszuwählen
und auszugeben, ein Multibit-Schieberegister 640, um ein
Schiebeausgabedecodierfenster im Ansprechen auf ein Schiebesignal um
die Längen
von Codewörtern
zu verschieben, die bis zu einem früheren Taktsignal de codiert
wurden, und eine vorbestimmte Anzahl von Bits (in diesem Falle 16 Bits)
der Codewörter
aus dem Multiplexerteil 630 auszugeben, eine PLA (programmierbare
Logikanordnung) 650, um ein decodiertes Codewort und eine
Bitlänge
des decodierten Codeworts, das dem Codewort entspricht, aus dem
Multibit-Schieberegister 640 auszugeben, und ein Steuersignalgenerierungsteil 660,
um die Bitlängen
der bis zu einem Takt genau vor dem momentanen Takt decodierten
Codewörter
und eine Bitlänge
des beim momentanen Takt decodierten Codeworts, das von der PLA 650 her eingegangen
ist, zu addieren, und die addierten Bitlängen bei der Bereitstellung
des Lesesignals, des Multiplexsignals und des Schiebesignals zu
verwenden.
-
Das
Zwischenspeicherteil 620 umfasst einen ersten Zwischenspeicher 621,
um die Codewörter aus
dem Eingabepuffer 610 im Ansprechen auf das Lesesignal
temporär
zu speichern und auszugeben, und ein zweites Zwischenspeicherteil 622,
um die Codewörter
aus dem ersten Zwischenspeicher 621 im Ansprechen auf das
Lesesignal temporär
zu speichern und auszugeben. Das Multiplexerteil 630 umfasst
einen ersten Multiplexer 631, um eines der Codewörter aus
dem Eingabepuffer 610 und dem ersten Zwischenspeicher 621 im
Zwischenspeicherteil 620 im Ansprechen auf das Multiplexsignal
auszuwählen und
das ausgewählte
Codewort als 16 Rückwärtsbits des
Multibit-Schieberegisters 640 auszugeben, und einen zweiten
Multiplexer 632, um eines der Codewörter aus dem ersten und zweiten
Zwischenspeicher 621 und 622 im Zwischenspeicherteil 620 im
Ansprechen auf das Multiplexsignal auszuwählen und das ausgewählte Codewort
als 16 Vorwärtsbits
des Multibit-Schieberegisters 640 auszugeben.
-
Das
Steuersignalgenerierungsteil 660 umfasst einen dritten
Multiplexer 661, um ein Anfangseinstellungssignal zu empfangen
und auszugeben und eine Bitlänge
eines zum momentanen Takt decodierten Codeworts aus der PLA 650 auszuwählen, einen
dritten Zwischenspeicher 662, der eine Summe der Bitlängen der
bis zu einem Takt genau vor dem momentanen Takt decodierten Codewörter speichert, einen
Addierer 663, um die Bitlänge eines zum momentanen Zeitpunkt
decodierten, vom dritten Multiplexer 661 her eingegangenen
Codeworts und Bitlängen
von bis zu einem Takt genau vor dem momentanen decodierten, aus
dem dritten Zwi schenspeicher 662 her eingegangenen Codewörtern zu
addieren, um das Schiebesignal und ein Übertragsignal auszugeben, einen
vierten Zwischenspeicher 664, um das vom Addierer 663 her
eingegangene Übertragsignal temporär zu speichern
und das gespeicherte Übertragsignal
bei einem auf den momentanen Takt folgenden Takt als Lesesignal
auszugeben, und ein Multiplexsteuerteil 665, um das aus
dem vierten Zwischenspeicher 664 her eingegangene Übertragsignal bei
der Ausgabe des Multiplexsignals zur Auswahl eines der Eingangsanschlüsse des
Multiplexerteils 630 zu verwenden. Bei dem Schiebesignal
handelt es sich um ein Signal, um das Decodierausgabefenster des
Multibit-Schieberegisters 640 um eine vorbestimmte Anzahl
von Bits zu verschieben, und bei dem Übertragsignal handelt es sich
um ein Signal „1" oder „0", das generiert wird,
wenn die Ausgabe des Addierers 663 größer oder kleiner als die längste Bitlänge ist.
-
Nun
wird der Funktionsablauf des Decoders für Codes mit variabler Länge nach
der zweiten Ausführungsform
der vorliegenden Erfindung erläutert.
-
Beim
seriellen Empfang von Codewörtern mit
variablen Längen
stellt der Eingabepuffer 610 die Codewörter dem ersten Zwischenspeicher 621 parallel
in Form von 16 Bits mit einer konstanten Zeichengeschwindigkeit
im Ansprechen auf ein Lesesignal bereit. Die 32 Bits werden durch
den ersten und zweiten Multiplexer 631 und 632 im
Multiplexerteil 630 an das Multibit-Schieberegister 640 angelegt.
Bei dem Ausgabefenster des Multibit-Schieberegisters 640 handelt
es sich um ein Schiebedecodierfenster für 16 Bits. Je nachdem, ob das
Lesesignal aus dem vierten Zwischenspeicher 664 „0" oder „1" lautet, wählt das Multiplexsteuerteil 665 einen
der beiden Eingangsanschlüsse
des ersten und zweiten Multiplexers 631 und 632 aus. „0" und „1" stellen einen niedrigen
bzw. einen hohen Wert dar. Entsprechend geben der erste Multiplexer 631 und
der zweite Multiplexer 632 ein Codewort aus dem Eingabepuffer 610 bzw.
ein Codewort aus dem ersten Zwischenspeicher 621 im Ansprechen
auf ein Multiplexsignal aus dem Multiplexsteuerteil 665 aus,
wenn das Lesesignal „1" lautet, und geben
ein Codewort aus dem ersten Zwischenspeicher 621 bzw. ein
Codewort aus dem zweiten Zwischenspeicher 622 aus, wenn
das Lesesignal „0" lautet. Die erneuerten
16 Bits aus dem Multibit-Schieberegister 640 werden mit
der PLA 650 verbunden, bei der es sich um eine VLC-Tabelle
handelt.
-
Die
PLA 650, die eine Art Speicher ist, kann durch irgendeine
andere Vorrichtung ersetzt werden, die über eine Speicherfunktion verfügt. Das
System und der Funktionsablauf der PLA 650 stimmen mit der
in 3 gezeigten PLA 360 überein. Das heißt, die
PLA 650 gibt ein decodiertes Codewort aus, das den vom
Multibit-Schieberegister 640 her
eingegangenen 16 Bits entspricht, und gibt eine Länge des
decodierten Codeworts an den dritten Multiplexer 661 im
Steuersignalgenerierungsteil 660 aus.
-
Bei
der Generierung des nächsten
Taktsignals werden die Länge
des zum momentan Takt decodierten, aus der PLA 640 her
eingegangenen Codeworts und die Bitwerte der bis zu einem Takt genau vor
dem momentanen Takt (bei dem es sich um ein Signal vom dritten Zwischenspeicher 662 handelt) decodierten
Codewörter
im Addierer 663 addiert und als Schiebesignal verwendet,
um das Schiebeausgabefenster, bei dem es sich um das Ausgabefenster des
Multibit-Schieberegisters 640 handelt, bei einem auf den
momentanen Takt folgenden Takt zu verschieben. Dabei gibt der Addierer 663 „0" aus, wenn der Additionswert
kleiner ist als ein Bitlängenwert
eines voreingestellten längsten
Codeworts, und gibt „1" aus, wenn der Additionswert
größer ist
als ein Bitlängenwert
des voreingestellten längsten
Codeworts.
-
Die
zweite Ausführungsform
des Decoders für
Codes mit variabler Länge
ist ein Modell, das sich für
einen Fall eignet, bei dem im Decoder für Codes mit variabler Länge keine
hohe Geschwindigkeit benötigt
wird. Wie in 6 gezeigt ist, ist der Zwischenspeicher 350,
der in 3 enthalten ist, hier ausgeschlossen, um Systemen
angepasst zu werden, die keine hohe Geschwindigkeit im Decoder benötigen.
-
7 stellt
ein Blockschema dar, das einen Decoder für Codes mit variabler Länge nach
einer dritten Ausführungsform
der vorliegenden Erfindung zeigt.
-
Mit
Bezug auf 7 umfasst der Decoder für Codes
mit variabler Länge
nach der dritten Ausführungsform
der vorliegenden Erfindung einen Eingabepuffer 710, um
ein seriell an ihn angelegtes Codewort in parallele Codewörter mit
16 Bits umzuwandeln und die parallelen Codewörter im Ansprechen auf ein
Lesesignal aus zugeben, ein Zwischenspeicherteil 720, um
die vom Eingabepuffer 710 her eingegangenen Codewörter im
Ansprechen auf das Lesesignal temporär zu speichern und auszugeben,
ein Multiplexerteil 730, um die Codewörter aus dem Zwischenspeicherteil 720 im
Ansprechen auf ein Multiplexsignal auszuwählen und auszugeben, ein Multibit-Schieberegister 740,
um ein Schiebedecodierfenster (oder ein Ausgabefenster) im Ansprechen
auf ein Schiebesignal zu verschieben und eine vorbestimmt Anzahl
von Bits des Codeworts aus dem Multiplexerteil 730 auszugeben,
einen Zwischenspeicher 750, um das Codewort aus dem Multibit-Schieberegister 740 temporär zu speichern
und auszugeben, eine PLA (programmierbare Logikeinheit) 760,
um ein decodiertes Codewort und eine Bitlänge des decodierten Codeworts
auszugeben, die dem Codewort aus dem Zwischenspeicher 750 entspricht,
ein Steuersignalgenerierungsteil 760, um eine Summe von Bitlängen der
genau bis zu einem Takt vor dem momentanen Takt decodierten Codewörter und
eine Bitlänge
eines zum momentanen Takt decodierten, von der PLA 760 her
eingegangenen Codeworts zu addieren und die addierten Bitlängen bei
der Bereitstellung des Lesesignals, des Multiplexsignals und des Übertragsignals
zu verwenden, und einen Ausgabepuffer 780.
-
Das
Zwischenspeicherteil 720 umfasst einen ersten Zwischenspeicher 721,
um die Codewörter aus
dem Eingabepuffer 710 im Ansprechen auf das Lesesignal
temporär
zu speichern und auszugeben, und einen zweiten Zwischenspeicher 722,
um die Codewörter
aus dem ersten Zwischenspeicher 721 im Ansprechen auf das
Lesesignal temporär
zu speichern und auszugeben. Das Multiplexerteil 730 umfasst
einen ersten Multiplexer 731, um eines der Codewörter aus
dem Eingabepuffer 710 und dem ersten Zwischenspeicher 721 im
Zwischenspeicherteil 720 im Ansprechen auf das Multiplexsignal
auszuwählen und
das ausgewählte
Codewort als 16 Rückwärtsbits des
Multibit-Schieberegisters 740 auszugeben, und einen zweiten
Multiplexer 732, um eines der Codewörter aus dem ersten und zweiten
Zwischenspeicher 721 und 722 im Zwischenspeicherteil 720 im
Ansprechen auf das Multiplexsignal auszugeben und das ausgewählte Codewort
als 16 Vorwärtsbits
des Multibit-Schieberegisters 740 auszugeben. Der Einfachheit
halber wird der Zwischenspeicher 750 als dritter Zwischenspeicher
bezeichnet.
-
Das
Steuersignalgenerierungsteil 770 umfasst einen dritten
Multiplexer 771, um ein Anfangseinstellungssignal zu empfangen
und auszugeben und eine Bitlänge
eines Codeworts zu empfangen und auszugeben, das zum momentanen
Takt in der PLA 760 decodiert wurde, einen vierten Zwischenspeicher 772,
der eine Summe der Bitlängen
der bis zu einem Takt genau vor dem momentanen Takt decodierten
Codewörter
speichert, einen Addierer 773, um das vom dritten Multiplexer 771 her
eingegangene Codewort und die vom vierten Zwischenspeicher 772 her
eingegangenen Codewörter
zu addieren, um das Schiebesignal zum Verschieben des Ausgabefensters
(oder Schiebedecodierfensters) des Multibit-Schieberegisters 740 zu
erzeugen und „0" auszugeben, wenn
der Additionswert größer ist
als eine voreingestellte längste
Bitlänge
eines Codeworts, und „1" auszugeben, wenn
der Additionswert kleiner ist als die voreingestellte längste Bitlänge eines
Codeworts, und ein Multiplexsteuerteil 775, um das vom Addierer 773 her
eingegangene Lesesignal bei der Ausgabe des Multiplexsignals zu
verwenden, um einen der Eingänge
des ersten und zweiten Multiplexers 731 und 732 auszuwählen.
-
Die
dritte Ausführungsform
des Decoders für Codes
mit variabler Länge
mit dem vorstehend erwähnten
System wird dann verwendet, wenn Schaltungen, die den Decoder umgeben
und mit Ausgangsseiten des Decoders verbunden sind, um das Lesesignal
anzulegen, nicht kompliziert sind.
-
Der
Funktionsablauf des Decoders für
Codes mit variabler Länge
nach der dritten Ausführungsform
der vorliegenden Erfindung wird nun erläutert.
-
Der
Eingabepuffer 710 gibt seriell eingegangene, variabel lange
Codewörter
anhand von 16 Bits mit einer konstanten Zeichengeschwindigkeit im
Ansprechen auf ein Lesesignal parallel aus. Die 32 Bits aus dem
ersten und zweiten Multiplexer 731 und 732 im
Multiplexerteil 730 werden an eine Eingangsseite des Multibit-Schieberegisters 740 angelegt.
Bei dem Ausgabefenster des Multibit-Schieberegisters 740 handelt
es sich um eine Schiebedecodierfenster für 16 Bits. Wenn das Lesesignal „1" lautet, geben der erste
Multiplexer 731 und der zweite Multiplexer 732 das
Codewort aus dem Eingabepuffer 710 bzw. das Codewort aus
dem ersten Zwischenspeicher 721 im Ansprechen auf das Multiplexsignal
aus, das vom Multiplexsteuer teil 774 bereitgestellt wird,
und wenn das Lesesignal „0" lautet, geben der
erste Multiplexer 731 und der zweite Multiplexer 732 das
Codewort aus dem ersten Zwischenspeicher 721 bzw. das Codewort
aus dem zweiten Zwischenspeicher 722 im Ansprechen auf
das Multiplexsignal aus, das vom Multiplexsteuerteil 774 bereitgestellt
wird. Die Ausgangsseite des Multibit-Schieberegisters 740 ist
an den dritten Zwischenspeicher 750 angeschlossen, und
die Ausgangsseite des dritten Zwischenspeichers 750 ist
mit der PLA 760 verbunden, bei der es sich um eine VLC-Tabelle
handelt. Da die PLA 760 eine Art Speicher ist, kann sie
durch irgendeine andere Vorrichtung ersetzt werden, die über eine
Speicherfunktion verfügt.
-
System
und Funktionsablauf der PLA 760 stimmen mit der in 3 gezeigten
PLA 360 überein. Das
heißt,
die PLA 760 gibt ein decodiertes Codewort und eine Bitlänge des
decodierten Codeworts aus, die einem empfangenen Codewort entsprechen.
Bei der Generierung des nächsten
Signals werden die Bitlänge
des zum momentanen Takt decodierten, von der PLA 760 her
eingegangenen Codeworts und Werte der bis zu einem Takt genau vor
dem momentanen Takt decodierten Codewörter, die im vierten Zwischenspeicher 772 gespeichert
sind, im Addierer 773 addiert und direkt verwendet, um
das Schiebedecodierausgabefenster am Multibit-Schieberegister 740 zu verschieben.
Und je nach dem Status des Lesesignals (oder Übertragsignals) stellt das
Multiplexsteuerteil 774 das Multiplexsignal bereit, um
einen der beiden Eingangsanschlüsse
des ersten Multiplexers 731 und des zweiten Multiplexers 732 auszuwählen.
-
Wie
erläutert
wurde, hat der die Erfindung verkörpernde Decoder für Codes
mit variabler Länge gegenüber dem
Decoder aus dem Stand der Technik die folgenden Vorteile:
Erstens
kann die Verwendung der Multiplexer anstelle des Multibit-Schieberegisters
die Fläche
einer integrierten Schaltung auf derselben Verzögerungszeitbasis reduzieren.
-
Zweitens
ermöglicht
es die Verkürzung
der Verzögerungszeit,
die zwischen einem Decoder für Codes
mit variabler Länge
und den ihn umgebenden Schaltungen be steht, einen Funktionsblock
mit höherer
Betriebsgeschwindigkeit zu implementieren.
-
Dem
Fachmann auf dem Gebiet wird klar sein, dass verschiedene Abwandlungen
und Veränderungen
an dem beschriebenen Decoder für
Codes mit variabler Länge
vorgenommen werden können, ohne
dass dabei vom Rahmen der Erfindung abgewichen würde. Somit soll die vorliegende
Erfindung die Abwandlungen und Veränderungen dieser Erfindung abdecken,
vorausgesetzt, sie fallen in den Rahmen der beigefügten Ansprüche und
ihrer Entsprechungen.