DE3137704C2 - Vorrichtung zum Decodieren eines baumförmigen Codes variabler Länge - Google Patents
Vorrichtung zum Decodieren eines baumförmigen Codes variabler LängeInfo
- Publication number
- DE3137704C2 DE3137704C2 DE19813137704 DE3137704A DE3137704C2 DE 3137704 C2 DE3137704 C2 DE 3137704C2 DE 19813137704 DE19813137704 DE 19813137704 DE 3137704 A DE3137704 A DE 3137704A DE 3137704 C2 DE3137704 C2 DE 3137704C2
- Authority
- DE
- Germany
- Prior art keywords
- data
- decoding
- bits
- code
- fed
- 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
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
- 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/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4025—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code constant length to or from Morse code conversion
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Facsimile Image Signal Circuits (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
Vorliegend wird eine Vorrichtung zum Decodieren eines baumförmigen Codes variabler Länge beschrieben, bei welcher ein Decodiertabellenspeicher ausgelesen wird und anhand der ausgelesenen Daten entschieden wird, ob es sich um Enddaten oder um Zwischendaten handelt. Im Falle von Enddaten wird eine in den Daten enthaltene Information über das decodierte Ergebnis ausgegeben. Im Falle von Zwischendaten wird eine Anzahl von Bits gemäß einer in den Zwischendaten enthaltenen Information über die Anzahl von einzuspeisenden Bits aus einem Eingangscodezug herausgegriffen und eingespeist. Diese eingespeisten Daten werden mit einer in den Zwischendaten enthaltenden Decodiertabellenspeichers addiert, um die nächste abzufragende Adresse des Speichers zu erhalten. Die auf diese Weise erhaltene Adresse wird zum Abfragen des Decodiertabellenspeichers verwendet. Dieser Vorgang wird solange wiederholt, bis man Enddaten erhält.
Description
Die Erfindung betrifft eine Vorrichtung zum Decodieren eines durch einen Codebaum dastellbaren Codes
variabler Länge gemäß c"em Oberbegriff der nebengeordneten
Patentansprüche 1 und 5.
Ein bekannter baumförmiger Code variabler Länge ist beispielsweise der modifizierte Huffman-Code. Man
erhält diesen Code z. B. durch Codierung der Länge des Schwarz- und Weißdurchlaufs eines abgetasteten Bildes
nach dem Huffman-Codierschema, wie dies beispielsweise in dem Aufsatz von R. Hunter »International Digital
Facsimile Coding Standards« in der Zeitschrift »Proceedings of the IEEE«, Juli 1980, Band 68, Nr. 7,
Seiten 854 bis 867, Kap. IV »One-Dimensional Coding
ίο Scheme« beschrieben ist Ein herkömmliches Decodierverfahren
für den modifizierten Huffman-Code besteht darin, einen oder zwei Zweige an jedem Knoten des
Codebaums in Abhängigkeit davon zu selektieren, ob eine »1« oder »0« für einzelne Bits des Eingangscodes
abgetastet wird, die an einem Endknoten letztlich ankommen und ein decodiertes Ergebnis ausweisen. Zur
Durchführung dieses Verfahrens ist es erforderlich, einen Decodiertabellenspeicher für jedes Bit der Eingangsdaten
abzufragen und für jedes Speicher-Ausgangssignai zu entscheiden, ob der Endknoten erreicht
wird oder nicht Diese Vorgehens* <Vi.e benötigt eine
große Anzahl der Verarbeitungsschritte jnd erfordert einen zeitaufwendigen Speicherzugriff mit anschließender
Entscheidungsverarbeitung, was zu einer verhäitnismäßig
langen Gesamtverarbeitungsdauer führt Aufgrund dieser Nachteile kann das bekannte Decodierverfahren
praktisch nur bei Verwendung eines Mikroprozessors oder einer verdrahteten Logikschaltung mit hoher
Verarbeitungsgeschwindigkeit durchgeführt werden.
Ein weiteres Verfahren zur Erhöhung der Decodiergeschwindigkeit
für den Huffman-Code ist in der US-PS 38 83 847 ( = DE-OS 25 13 862) mit der Bezeichnung
»Uniform Decoding of Minimum-Redundancy-Codes« beschrieben. Bei dem darin beschriebenen Decodierverfahren
werden von einem Eingangscodezug Daten mit einer vorgegebenen Anzahl von Bits eingespeist, um
einen ersten Decodiertabellenspeicher abzufragen und auszulesen. Falls die Decodierung durch den Audese-Vorgang
nicht beendet wird, wird die Adresse eines ais nächsten abzufragenden zweiten Decodiertabellenspeichers
unter Verwendung der ausgelesenen Daten bestimmt und anschließend der zweite Decodiertabellenspeicher
durch die Eingangsdaten einer danach eingespeisten Vielzahl von Bits abgefragt, um auf diese Weise
ein decodiertes Ergebnis zu erhalten. Dieses Verfahren vergrößert zwar die Decodiergeschwindigkeit, doch erfordert
es zwei Decodiertabellenspeicher, was in unerwünschter Weise zu einer großen Gesamtspeicherkapazität
führt.
In Fig. 2 der US-PS 38 83 847 ist eine Decodiervorrichtung dargestellt, bei der die eine maximale Code
wortlänge von sieben Biis aufweisenden Codewörter ste:s auf sieben Bits mit Nullen aufgefüllt werden (falls
erforderlich), so daß das Sieben-Bit-Codewort zur Adressierung des Decodiertabellenspeichers verwendet
wird. Pro Codewort ist also nur ein einziger Speicherzugriff erforderlich. Diese Methode hat den Vorteil, daß
die Decodierzeit extern gering ist. Allerdings hat diese
Vorgehensweise folgenden Nachteil: Da der gesamte Adreßraum 22 beträgt, jedoch nicht ebenso viele Codewörter
vorgesehen sind, bleiben viele Spe.icberstellen
praktisch ungenutzt. In diese an sich überflüssigen Speicherstellen wird im Stand der Technik der Inhalt der
jeweils nächst niedrig ?ren Speicherstelle einkopiert
Der Speicherbedarf ist also sehr hoch im Vergleich zu den ingesamt möglichen Codewörtern.
Um nun die Speicherkapazität zu verringern, ist in der
Um nun die Speicherkapazität zu verringern, ist in der
US-PS die in Fig. 3 dargestellte Schaltung vorgeschlagen. Diese Decodiervorrichtung arbeitet wie folgt: Beträgt
die Codewortlänge beispielsweise 4 Bits oder weniger, so wird vorgegangen wie bei dem oben beschriebenen
Beispiel, das heißt: Es wird gegebenenfalls bis auf 4 Bits mit Nullen aufgefüllt, und dann wird der Inhalt des
dortigen Primärspeichers 214 ausgelesen. Da zusammen mit den Decodierergebnissen die jeweiligen Codelängen
gespeichert sind, werden dann bei Codewortlängen von mehr als 4 Bits die übrigen Bits zur Adressierung
eines Sekundärspeichers (250) herangezogen. In diesem Sekundärspeicher sind Sekundärtabellen (2.1 bis 2.5) gespeichert.
Grundsätzlich läßt sich diese Methode noch weiter unterteilen, so daß mit weiteren Speichern eine
weitergehende Einsparung von Speicherplatz erreichbar ist — auch wenn dies mit dem Einkauf einer höheren
Gesamtzugriffszeit verbunden ist.
In der US-PS läßt sich der Primärspeicher in der erwähriicfi
Weise einfach adressieren. Aiiciuings isi m der
US-PS nicht angegeben, wie die Adresse für den Sekundärspeicher speziell zusammengesetzt wird. Es sind verschiedene
Möglichkeiten denkbar: Da insgesamt beispielsweise fünf Sekundärtabellen vorhanden sind, sind
3 Bits notwendig, um diese fünf Tabellen auseinanderzuhalten. Darüber hinaus sind von dem Codewort maximaler
Länge (7 Bits) 3 Bits übrig. Es sind also insgesamt 6 Bits zum Adressieren des Sekundärspeichers 250 notwendig.
Würde man den Sekundärspeicher in Form von fünf separaten Speichern für die jeweiligen Tabellen 2.1
bis 25 ausbilden, so wären ebenfalls 3 Bits zum Auswählen eines der fünf Speicher notwendig, und die restlichen
3 Bits dienten zum Festlegen der Adresse in einem ausgewählten Speicher. Diese 3 erwähnten Bits gelten jedoch
nur, wenn die maßgebliche Sekundärtabelle etwa acht Speicherplätze aufweist Enthält die Sekundärtabelle
beispielsweise nur zwei Speicherplätze (vgl. Sekundärtabelle 2.1 in der US-PS), so wäre nur ein zusätzliches
Bit zu den drei Speicherauswahl-Bits notwendig.
Man sieht also, daß die Lösung mit Sekundärspeichern sowie möglicherweise weiteren Speichern gemäß
dem Stand der Technik auf jeden Fall insofern kompliziert ist als eine Optimierung bezüglich Speicherkapazität
und Zugriffszeit sehr schwierig ist
Demgegenüber liegt der Erfindung die Aufgabe zugrunde,
eine Vorrichtung der gattungsgemäßen Art derart weiterzubilden, daß mit einem einzigen Decodiertabellenspeicher
gearbeitet werden kann, ohne daß dessen Speicherkapazität durch viele praktisch ungenutzte
Speicherstellen sehr hoch sein muß.
Diese Aufgabe wird alternativ durch die im Anspruch 1 bzw. die im Ansp.oich 5 angegebenen Merkmale gelöst
Während beim Stand der Technik (Fig. 3 der US-PS) sämtliche restlichen Bits des Codeworts dazu verwendet
werden, den Sekundärspeicher zu adressieren oder — allgemeiner ausgedrückt — einen zweiten Speicherzugriff
durchzuführen, so bietet die Erfindung die Möglichkeit, die Anzahl der für den zweiten und möglicherweise
für weitere Speicherzugriffe benötigten Adreßbitzs zu variieren. Dies hat den Vorteil, daß mit dem zweiten
Speicherzugriff nicht direkt zu dem jeweiligen Ende des gesuchten Codebaumasts gesprungen wird, sondern daß
dieser Sprung unterteilt werden kann. Hierdurch wird im Vergleich zum Stand der Technik eine bessere Speicherausnutzung
gewährleistet; denn die oben erwähnte Maßnahme, einen Sekundärspeicher vorzusehen, führt
unter Umständen dazu, daß relativ viel Speicherplätze nicht ausgenutzt werden können.
Vorteilhafte Ausgestaltungen und Weiterbildunge der erfindungsgemäßen Decodiervorrichtung sind i
den Unteransprüchen angegeben.
Die Erfindung wird nachstehend anhand der Zeich nungen näher erläutert. Es zeigt
Fig. 1 einen Ausschnitt einer Decodiertabelle de
modifizierten Huffman-Codes, wie sie bei einem her kömmlichen Bit-für-Bit-Decodierverfahren unter Ver
wendung eines Codebaums benutzt wird,
ίο F i g. 2 ein Schema für die Verfahrensschritte bei de Decodierung des Eingangscodewortes »11011« für cim Weißdurchlauflänge von 64 unter Verwendung der De codiertabellenach Fig. 1.
ίο F i g. 2 ein Schema für die Verfahrensschritte bei de Decodierung des Eingangscodewortes »11011« für cim Weißdurchlauflänge von 64 unter Verwendung der De codiertabellenach Fig. 1.
F i g. 3 ein Blockschaltbild der in der US-PS 38 83 84: beschriebenen Decodiervorrichtung,
F i g. 4A1 B ein Ausführungsbeispiel einer Decodicrta
belle für Weißcode, wie sie bei der erfindungsgemäßei Decodiervorrichtung verwendet wird,
F i g. 5A ein Austührungsbeispiei für das Datenforma
von Enddaten,
F i g. 5B ein Ausführungsbeispiel für das Datenforma
von Zwischendaten,
F i g. 6 ein Schema für die Verfahrensschritte zum De
codieren eines Eingangscodewortes »11011« für eine Weißdurchlauflänge von 64 bei Verwendung der Deco
diertabelle nach F i g. 4,
F i g. 7 ein Blockschaltbild einer Ausführungsform dei
erfindun^ »gemäßen Decodiervorrichtung, welche vor der Decodiertabelle nach F i g. 4 Gebrauch macht,
F i g. 8 einen Teil einer Decodiertabelle für Weißcode zur Verwendung bei einer weiteren Ausführungsform der erfindungsgemäßen Decodiervorrichtung,
F i g. 8 einen Teil einer Decodiertabelle für Weißcode zur Verwendung bei einer weiteren Ausführungsform der erfindungsgemäßen Decodiervorrichtung,
F i g. 9 ein Schema für die Verfahrensschritte bei der Decodierung eines Eingangsdatenwortes »11011« für
eine Weißlauflänge von 64 bei Verwendung der Decodiertabelle nach F i g. 8,
Fig. 10 ein Blockschaltbild für eine weitere Ausführungsform
einer erfindungsgemäßen Decodiervorrichtung, welche von der Decodiertabelle nach F i g. 8 Gebrauch
macht,
Fig. U ein Blockschaltbild einer weiteren Ausführungsform
der erfindungsgemäßen Decodiervorrichtung, welche von der Decodiertabelle nach F i g. 4 Gebrauch
macht und für die Verwendung eines Mikroprozessors ausgebildet ist,
Fig. 12 ein Flußdiagramm für den Betriebsablauf der
Decodiervorrichtung nach F i g. 11,
Fig. 13A, B eine Decodiertabelle entsprechend F i g. 4, jedoch für einen Schwarzcode,
Fig. 14 eine graphische Darstellung für die bei "erschiedenen Decodiersystemen erforderlichen Kapazitäten zur Decodiertabellenspeicherung,
Fig. 14 eine graphische Darstellung für die bei "erschiedenen Decodiersystemen erforderlichen Kapazitäten zur Decodiertabellenspeicherung,
Fig. 15 eine graphische Darstellung für die bei verscniedenen
Decodiersystemen erforderliche Anzahl von Abfragezyklen für den oder die Decodiertabellenspeicher,
und
Fig. 16 eine Tabelle für die Beziehungen zwischen den Kapazitäten des oder der Decodiertabellenspeicher
und der Anzahl der bei jeder Decodiervorrichtung erforderlichen Abfragezyklen, und zwar bezogen auf den
Fall, daß die Speicherkapazität des Decodiertabellenspeichers
und die bei der ersten Ausführungsform der erfindungsgemäßen Decodiervorrichtung benötigte
Anzahl von Abfragezyklen jeweils gleich 1 ist
Zurr, besseren Verständnis der Erfindung soii zunächst die herkömmliche Bit-für-Bit-Decodierung erläutert werden. F i g. i zeigt einen Teil eines Weißcodebaums des modifizierten Huffman-Code, welcher auf
Zurr, besseren Verständnis der Erfindung soii zunächst die herkömmliche Bit-für-Bit-Decodierung erläutert werden. F i g. i zeigt einen Teil eines Weißcodebaums des modifizierten Huffman-Code, welcher auf
der herkömmlichen Bit-für-Bit-Decodierung beruht, wobei der Codebaum eine Decodiertabelle darstellt. Bei
dem dargestellten Codebaum teilt sich eine Wurzel 1 in zwei Zweige 4, von denen jeder an einem Knoten 2
endet. Der Knoten 2 wird in zwei Zweige 4 unterteilt, von denen jeder an einem Knoten 2 weiter unterteilt ist.
Auf diese Weise werden die Endknoten 3 erreicht. Oberhalb jedes Zweiges 4 sind an jedem Knoten 2 vor
dessen Verzweigung eine Adresse (XX) der Decodiertabelle sowie ein Datenwort (XX) oder eine Durchlauflänge
IXXI aufgetragen. Die dabei verwendeten Symbole »Λ« können einen der Zahlen werte 0, 1, 2, 3,... 9
oder einen der Buchstaben A, B, C, D, E und F annehmen, da mit »XX« zwei Ziffern einer Hexadezimalzahl
bezeichnet sind. Im Falle der Durchlauflänge bedeutet jedoch X eine Dezimalzahl. Ein Kleinbuchstabe »c«
weist auf eine weitere Verlängerung des Codebaums hin.
F i g. 2 zeigt ein Beispiel für die Decodierung eines einer Weißdurchlaufslänge von 64 entsprechenden codierten
Binärwortes »11011«, das als Eingangscodezug
(Datenzug) in die Decodiertabelle nach Fig. 1 eingespeist
wird. Der Decodiervorgang beginnt mit der Erzeugung eines Datenwortes (00) als Anfangsdatenwort.
Das erste Bit »1« des Eingangsdatenwortes wird eingespeist, das dem Anfangsdatenwort (00) zur Erzielung
einer Sprungadresse (01) hinzuaddiert wird. Anschließend wird das Datenwort (04) der Sprungadresse ausgelesen.
Das Datenwort (04) wird dahingehend geprüft, ob ein Endknoten des Codebaums erreicht worden ist oder
nicht Die Daten Pf2=O1A-I =4) werden durch Binärzahlen
repräsentiert, so daß die Entscheidung, ob ein Endknoten erreicht ist oder nicht, davon abhängt, ob das
höchstwertige Bit (nachstehend als »MSB« bezeichnet) des Datenwortes »Λ^ΛΊ«, d. h., der Ziffernfolge
»00000100« eine »1« oder eine »0« ist Da in diesem Falle das höchstwertige Bit (MSB) = »0« ist, wird entschieden,
daß der Endknoten noch nicht erreicht worden ist Falls das höchstwertige Bit = »l« ist, wird entschieden,
daß der Endknoten erreicht worden ist. Anschließend wird das nächste Bit, nämlich »1«, des Eingangsdatenwortes
zum gebildeten Datenwort (04) addiert, um eine Sprungadresse (05) zu erhalten. Auf diese
Weise werden ein oder zwei Zweige für jeden Knoten 2 selektiert, und zwar in Abhängigkeit davon, ob das Ein-Bit-Wort
= »0« oder = »1« ist. Anschließend werden der Zugriff bzw. Abfragevorgang der Decodiertabelle, die
Entscheidung über den Endknoten und die Bildung einer Sprungadresse für jedes weiteres Bit des Eingangsdatenwortes
in gleicher Weise wiederholt, bis schließlich der Endknoten erreicht wird.
Auf diese Weise wird eine Adresse (21) erreicht und das zugehörige Datenwort (Cl), d. h, das Binärwort
»11000001« wird ausgelesen. Da das höchstwertige Bit
dieses Datenwortes eine »1« ist, wird entschieden, daß der Endknoten erreicht worden ist, so daß die Durchlauflänge
unter Verwendung des Datenwortes (Cl), dieses Endknotens decodiert wird. Dies bedeutet, daß der
Inhalt des dem höchstwertigen Bit nächstliegenden Bit des Datenwortes Cl = 11000001 angibt, ob es sich um
einen Schlußcode oder um einen Aufbaucode handelt Falls dieses erwähnte Bit eine »1« ist, handelt es sich um
einen Aufbaucode, wobei man die Durchlauflänge durch
Multiplikation der Zahl 64 mit der Dezimalzahl der hinter dem zweiten Bit folgenden sechs restlichen Bit, d. h,
der Bitfoige »00000Ί« entsprechend der Dezimaizahi 1
erhält Falls der Dateninhalt des dem höchstwertigen Bit nächstliegenden Bit des ausgelesenen Datenwortes eine
»0« ist, so bedeutet dies das Vorliegen eines Schlußcode, mit der Folge, daß der Dezimalwert der restlichen sechs
Bit des Datenwortes der Durchlauflänge entspricht. Beim Stand der Technik ist es erforderlich, die Decodiertabelle
für jedes Datenbit abzufragen und die erläuterte Entscheidung über den Dateninhalt zu treffen.
Dies führt zwangsläufig zu einer Verringerung der Decodiergeschwindigkeit.
Anschließend soll unter Bezugnahme auf F i g. 3 die Decodiervorrichtung nach der US-PS 38 83 847 kurz erläutert werden. Die Eingangsdaten werden in ein Eingangsregister 210 eingespeist, von welchem nur K Bit der Eingangsdaten in ein Register 211 übertragen werden. Das dem Register 211 zugeführte /C-Bit-Datenwort wird in einem Addierglied 212 um 1 inkrementiert. Das inkrementierte Datenwort am Ausgang des Addiergliedes 212 dient als Adresse zum Abfragen eines ersten Decodiertabellenspeichers 214 über eine Adressierschaltung 213 und ein Inhibitierglied 281. Falls das von dem Speicher 2)4 ausgelesene Datenwort ein decodiertes Ergebnis ist, wird der decodierte Code von einem Register 217 über ein Inhibitierglied 241 und ein ODER-Glied 242 einer Ausgangsleitung 243 zugeführt. Die Anzahl der in dem eingespeisten /C-Bit-Datenwort verwendeten Bits wird von einem Register 216 über ein Inhibitierglied 283 und ein ODER-Glied 286 einem Binärtakt-Multiplizierglied 218 vorgegeben. Das Eingangsregister
Anschließend soll unter Bezugnahme auf F i g. 3 die Decodiervorrichtung nach der US-PS 38 83 847 kurz erläutert werden. Die Eingangsdaten werden in ein Eingangsregister 210 eingespeist, von welchem nur K Bit der Eingangsdaten in ein Register 211 übertragen werden. Das dem Register 211 zugeführte /C-Bit-Datenwort wird in einem Addierglied 212 um 1 inkrementiert. Das inkrementierte Datenwort am Ausgang des Addiergliedes 212 dient als Adresse zum Abfragen eines ersten Decodiertabellenspeichers 214 über eine Adressierschaltung 213 und ein Inhibitierglied 281. Falls das von dem Speicher 2)4 ausgelesene Datenwort ein decodiertes Ergebnis ist, wird der decodierte Code von einem Register 217 über ein Inhibitierglied 241 und ein ODER-Glied 242 einer Ausgangsleitung 243 zugeführt. Die Anzahl der in dem eingespeisten /C-Bit-Datenwort verwendeten Bits wird von einem Register 216 über ein Inhibitierglied 283 und ein ODER-Glied 286 einem Binärtakt-Multiplizierglied 218 vorgegeben. Das Eingangsregister
210 wird von dem Binärtakt-Multiplizierglied 218 entsprechend der dabei verwendeten Anzahl von Bits gesteuert,
um die entsprechende Eingangsdatenmenge in das Register 211 einzulesen.
Falls die K Bit des in das Register 211 eingespeisten
Datenwortes keinen Code bilden, erhält das Register 217 nach erfolgtem Abfragen des ersten Decodiertabellenspeichers
214 ein Signal, welches angibt, daß kein decodiertes Eregebnis vorliegt. Durch dieses Signal
werden das Inhibitierglied 283 inhibitiert und ein Flip-Flop 285 gesetzt. Das Ausgangssignai des Fiip-Fiop 283
wird den Inhibitiergliedern 241 und 281 zugeführt, um diese zu inhibitieren. Ferner wird das Ausgangssignal
des Registers 217 über das ODER-Glied 286 dem Multiplizierglied 218 zugeführt, worauf dieses die Einspeisung
der K Bit des Eingangsdatenwortes in das Register
211 über das Register 210 bewirkt Die unnötigen Bits
der Daten des Registers 211 werden in einem Decoder 260 mittels des Ausgangssignals des Registers 216 abgedeckt,
um die erforderlichen K Bit auszugeben. Das Datenwort am Ausgang des Decoders 260 wird in einem
Addierglied 261 um 1 inkrementiert und das resultierende Datenwort als Adresse zum Abfragen eines zweiten
Decodiertabellenspeichers 250 über eine Adressierschaltung 251 verwendet. Die Adressierschaltung 251
wird durch das Ausgangssignal des Registers 217 gesteuert,
um festzulegen, weiche Tabelle des zweiten De-Codiertabellenspeichers 250 abgefragt wird. Sobald der
Speicher 250 ausgelesen ist, wird das decodierte Ergebnis von einem Register 272 über ein UND-Glied 292 und
ein ODER-Glied 242 der Ausgangsleitung 243 zugeführt, wobei die Anzahl der zum Decodieren verwendeten
Bits von einem Register 271 über das ODER-Glied 286 dem Multiplizierglied 218 zugeführt wird. Sobald
das Ende des Eingangsdatenwortes von einer Enderfassungschaltung 221 erfaßt ist, wird ein Flip-Flop 222 gesetzt,
dessen Ausgangssignal einem Inhibitierglied 224 zugeführt wird, welches daraufhin schließt und die Decodierrichtung
stülsetzt.
Die Decodiervorrichtung nach der US-PS 33 83 847 ist dergestalt ausgebildet, daß sie den ersten Decodier-
tabellenspeicher 214 unter Verwendung mehrerer Bits des Eingangsdatenwortes abfragt und nicht für jedes Bit
prüft, ob es decodiert ist oder nicht. Damit ist die Anzahl der erforderlichen Speicherabfragevorgänge gering,
was eine Decodierung mit hoher Geschwindigkeit erlaubt. Bei dieser Decodiervorrichtung müssen jedoch
erste und zweite Decodiertabellenspeicher 214 und 250 vorgesehen wurden, was zu einem Anstieg der Speichergröße
führt.
Fig.4 zeigt ein Ausführungsbeispief einer für eine
erfindungsgemäße Decodiervoi richtung verwendbaren DecodiertabeHe, weiche einen Weißcodebaum des modifizierten
Huffman-Code benutzt. Im betrachteten Beispielsfall haben die Datenworte (XX) und die Speicheradresse
(XX) eine Länge von 8 Bit, wobei die Anzahl der zu einem Zeitpunkt zu selektierenden Zweige, d. h.,
die Anzahl der zu einem Zeitpunkt zu decodierenden Codebits -1,2 oder 4 ist. Die Datenlänge, die Länge der
Speicheradresse und die Anzahl der zu einem Zeitpunkt zu selektierenden Zweige ist beliebig. Ferner kann die
Anzahl der zu einem Zeitpunkt zu selektierenden Zweige festgelegt oder auf beispielsweise zwei Zweige begrenzt
werden. Mit den Bezagszeichen 1 bis 4 sind in F i g. 1 dieselben Begriffe wie in F i g. 1 bezeichnet, wohingegen
ein im Laufe der Decodierung auftretendes Datenwort durch einen Innenknoten 5 bezeichnet ist.
Die Anzahl der zu einem beliebigen Zeitpunkt zu wählenden Zweige ist im Falle von F i g. 1 so gewählt, daß
sie die Anzahl der Zweige 4 zwischen der Wurzel 1 oder dem Innenknoten 5 und dem nächsten Endknoten 3
nicht überschreitet. In F i g. 4 liegen die der Wurzel 1 am
nächsten liegenden Endknoten 3 mit den Adressen (07), (08), (OB), (OC), (OE) und (OF) auf einer strichpunktierten
Linie 61 und sind vier Zweige von der Wurzel 1 entfernt. Prüft man die Innenknoten auf der Linie 61, beispielsweise
mit der Adresse (03), so wird der nächste Endknoten 3 auf der Adresse (ID) erreicht, welche den der
Adresse (Ö3) nächstüegenden Zweig darstellt, so daß die
Anzahl der selektierten Zweige = 1 ist. Im Falle der Adresse (00) befindet sich ein Endknoten erst im zweiten
Zweig, d. h, einem Zweig auf der strichpunktierten Linie 62 mit der Adresse (13). Die Anzahl der selektierten
Zweige zwischen der Adresse (00) und dem nächstliegenden Endknoten ist daher=2.
Das in Fig.4 am unteren Rand mit * bezeichnete Verzweigungsmuster enthält die Datenworte (FF) und
(EF) für ein Zeilensynchronisiersignal EOL sowie ein Datenwort (8F) für einen Decodierfehler.
Unter jeder Adresse [XX) eines mit der Decodiertabelle
nach F i g. 4 geladenen Decodiertabellenspeichers ist aas zugehörige Datenwort (XX) abgelegt Mit dem
Ausdruck IXXI ist die Durchlauflänge bezeichnet, wobei hier X eine Dezimalzahl ist Der Decodiertabellenspeicher
besitzt einen Speicherbereich zum Speichern von Enddaten und einen Speicherbereich zum Speiehern
von Zwischendaten. In dieser Ausführungsform ist der Decodiertabellenspeicher ein Ein-Wort-8-Bit-Speicher,
wobei die End- und Zwischendaten jeweils aus 8 Bit bestehen. Das Format der Enddaten ist in F i g. 5A
dargestellt Wenn das geringstwertige Bit B\ eine »1«ist,
so entspricht dies einem Endknoten 3, d. h, dem Vorliegen von Enddaten. Das dem geringstwertigen Bit B\
nächstliegende Bit B2 gibt die Art des decodierten Code
wieder; im betrachteten Beispielsfalle gibt das Bit Bi an,
ob das decodierte Ergebnis ein Schlußcode oder ein Äufbaucode ist Die 6 Bits B3 bis Bg sind Informationen
über das decodierte Ergebnis, d. ru, die Durchlauflänge.
Falls das Bit B2 eine »0« ist ist die Information über das
decodierte Ergebnis ein Schlußcode, so daß, wie anhand der Bezugszahl 44 abgedeutet ist, die Bits Bz bis Bt
vorgegebene Wertigkeiten 2° bis 25 besitzen. Wenn dagegen
das Bit B2 eine »1« ist, handelt es sich bei der
Information über das decodierte Ergebnis um einen Aufbaucode, so daß, wie anhand des Bezugszeichens 45
angedeutet ist, die Bits Ö3 bis Bs vorgegebene Wertigkeiten
von 26 bis 21' besitzen.
Das Format der Zwischendaten ist in Fig.5B dargestellt.
Wenn das geringstwertige Bit B\ eine »0« ist, entspricht es dem Innenknoten 5, d. h., es gibt an, daß es sich
um Zwischendalen im Verlauf der Decodierung handelt. Das zweite Bit Pi gibt die Anzahl derjenigen Bits an,
welche als nächste von dem Eingangscodezug eingespeist werden sollen. Falls das Bit Bi eine »0« ist, wird
ein Bit eingespeist, während dann, wenn das Bit Bi ein;·
»1« ist, zwei Bit eingespeist werden. Die Bits Bi bis flh
repräsentieren eine Information zur Bestimmung der Adresse des als nächstes abzufragenden Dccodieriabellenspeichers.
In F i g. 6 ist ein Decodierbeispiel veranschaulicht, bei dem eine einer Weißdurchlauflänge von 64 entsprechende
Binärzahl »11011« als Eingangsdaten wort in die
DecodiertabeHe gemäß Fig.4 eingespeist wird. Der Decodiervorgang ist für diesen Beispielsfall anhand von
F i g. 6 erläutert. Bei der Einspeisung des Eingangsdatenwortes wird zunächst ein Anfangsdatenwort (00) erzeugt.
Wie vorstehend bereits ausgeführt wurde, ist die Anzahl der zuerst zu selektierenden Zweige, d. hM die
Anzahl der bei Beginn der Decodierung je Code einzuspeisenden Bits, =4, so daß dem Anfangsdaten wort (00)
4 Bits »1101« (entsprechend »0D« im Hexadezimalsystem)
des Eingangsdatenwortes hinzuaddiert werden, um die Sprungadresse (OD) zu erhalten. Von dieser
Sprungadressc wird deren Datenwort (34) ausgelesen. Durch Erfassung des geringstwertigen Bits B\ der binären
Entsprechung »00110100« dieses Datenwortes wird entschieden, ob ein Endknoten 3 des Codebaums erreicht
worden ist oder nicht. Da im betrachteten Beispielsfalle das geringstwertige Bit B\ eine »0« ist handelt
es sich hier um Zwischendaten, so daß du Decodierung noch nicht abgeschlossen ist. Aufgrund des zweiten
Bits £2 = 0 der binären Entsprechung des ausgelesenen
Datenwortes (34) wird entschieden, daß die Anzahl der als nächste zu selektierenden Zweige = 1 ist. Anschließend
wird das nächste eine Bit »1« des Eingangsdatenwortes eingespeist und einem Datenwort hinzuaddiert,
in welchem die Bits B\ und Bi des ausgelesenen Datenwortes
(34)=»0« sind, wodurch man eine Sprungadresse (35) erhält. Von dieser Sprungadresse wird deren Datenwort
(07) ausgelesen. Das das geringstwertige Bit ßi der binären Entsprechung »00000111« des Datenwortes
(07) eine »1« ist, wird entschieden, daß ein Endknoten des Codebaums erreicht worden ist. Aufgrund des Bit
Ä2=»l« des ausgelesenen Datenwortes wird entschieden,
daß es sich bei den Daten um den Aufbaucode handelt Damit bedeutet die Information über das decodierte
Ergebnis B8B7... B3 =000001 eine Durchlauflänge
von 64, die man durch Multiplizieren des decodierten Ergebnisses (entsprechend der Dezimalzahl »1«) mit der
Zahl 64 erhält
In Fig.7 ist ein Ausführungsbeispiel einer erfindungsgemäßen
Decodiervorrichtung dargestellt welches auf der in F i g. 4 dargestellten DecodiertabeHe des
modifizierten Huffman-Code beruht Die Funktionsweise dieser Decodiervorrichtung soll nachstehend für den
Fall beschrieben werden, daß in gleicher Weise wie im Beispielsfalle von F i g. 6 die Binärkombination »11011«
als Ein<*angsdatenwort eingespeist wird. Zum Beginn
des Decodiervorganges wird ein Üecodierstartsignal in Form eines High-Zustandes »1« von einer Leitung 11 an
eine Erfassungsschaltung 12 für den Abschluß der Decodierung angelegt, beispielsweise für eine bestimmte
Zeitspanne. Die dadurch erzeugte Anstiegsflanke des Ausgangssignals der Erfassungsschaltung 12 auf einer
Signalleitung 32 bewirkt die Rücksetzung eines Toggle-Flip-Flop 14, welches angibt, ob es sich bei den Eingangsdaten
um Weiß- oder Schwarzdaten handelt. Durch das Rücksetzen des Flip-Flop 14 ist dieses für die
Decodierung eines Weißcode vorbereitet, wobei gleichzeitig ein Speicheradressenregister 15 rückgesetzt wird.
Bei dem modifizierten Huffman-Codierschema beginnt der Decodie-vorgang eines Faksimilecodes mit einem
Weißcode. Ein mit der Decodiertabelle nach F i g. 4 geladener Decodiertabellenspeicher 16 wird mittels einer
Speicheradresse aus dem Adressenregister 15 ausgelesen, wobei das ausgelesene Anfangsdatenwort (00) einem
Datenregister Yi zugeführt wird. Das erwähnte Decodierstartsignal erzeugt in der Erfassungsschaltung
12 für den Abschluß der Decodierung einen Low-Zustand, der über ein ODER-Glied 33 und ein Invertierglied
34 auf eine Ausgangsleitung 18 gegeben wird Gleichzeitig gelangt dieser Low-Zustand vom Ausgang
des Invertiergliedes 34 über eine aus einem Verzögerungsglied und einem UND-Glied bestehende Impulsdehnungsschaltung
3 auf eine Ausgangsleitung 38. Infolge dieser Low-Zustände werden Datenwählschalter 19,
20 und 21 auf ihren jeweiligen Lhoschaltkontakt b umgeschaltet.
Infolge dieses Umschaltvorganges wird der Datenwählschalter 20 mit einem Anfangsdatenspeicher
23 unmittelbar nach Beginn des Decodiervorganges verbunden. Der Anfangsdatenspeicher 23 wird durch
ein »O«-Ausgangssignal des Flip-Flop 14 (welches eine Weißcode-Decodierung anzeigt) gesteuert wodurch
der Anfangsdatenspeicher 23 über den Datenwählschalter 20 einen Eingangsdatcr.zähler 24 auf den Wert 4
setzt. Dem Zähler 24 werden über einen Anschluß 25 Taktsignale zugeführt, wobei synchron hierzu von einem
Anschluß 27 ein 4-Bit-Eingangsdatenwort 01« einem Serien-Parallel-Umsetzer 26 für die Eifit ^daten
zugeführt wird. Das Eingangsdatenwort »1101« wird anschließend von dem Serien-Parallel-Umsetzer
26 einem 8-Bit-Addierglied 22 zugeführt, nachdem der
Umsetzer 26 rückgesetzt wurde. Dies bedeutet, daß dessen Eingangszustand zu »0000« gemacht wird, während
dessen Ausgänge unverändert bleiben, d. h., den Zustand »1101« besitzen. Das geringstwertige Bit Si=O
des in das Datenregister 17 eingelesenen Anfangsdatenwortes (00) wird in der vorstehend beschriebenen Weise
der Erfassungsschaltung 12 für den Abschluß der Decodierung zugeführt, um über das ODER-Glied 33 auf der
Ausgangsleitung 18 einen High-Zustand hervorzurufen und damit die Datenwählschalter 19 und 21 auf den
Wählkontakt a umzuschalten. Hierdurch werden die Bits B8 bis B3 des Eingangsdatenwortes (00) von dem
Datenregister 17 über den Wählschalter 21 dem 8-Bit-Addiergüed
22 zugeführt Das Anfangsdatenwort (00) und das von dem Serien-Parallel-Umsetzer 26 gelieferte
Eingangsdatenwort »1101« werden in dem 8-Bit-Addierglied 22 miteinander addiert, um eine Sprungadresse
(OD) zu erzeugen. Der Wählschalter 20 wird nach dem Umschalten der Wählschalter 19 und 21, d. h, nach Ausgabe
der Sprungadresse (OD), von der Impulsdehnungsschaltung
39 auf seinen Wählkontakt a umgeschaltet.
Die Sprungadresse (OD) wird dem Speicheradressenregister 15 zugeführt Der Speicher 16 wird durch das
Lesesignal auf einer Signalieitung 28 abgefragt, um das der Sprungadresse (OD) zugeordnete Datenwort (34) an
das Datenregister 17 auszulesen. Die Bits B\ ;ind B2 des
ausgelesenen Datenwortes (34) sind gleich »0«. Da das geringstwertige Bit B\ =»0« ist, handelt es sich bei diesem
Datenwort nicht um Enddaten, sondern um Zwischendaten.
Dementsprechend werden die Datenwählschalter 19 bis 21 von der Erfassungsschaltufig 12 für
den Abschluß der Decodierung auf ihrem jeweiligen Wählkontakt a gehalten. Das Bit Bi = O wird als Adresse
für einen Datenspeicher 36 verwendet, um den Inhalt »1« auszulesen, welcher über den Wählschalter 20 den
Eingangsdatenzähler 24 setzt. Infolge dessen wird von dem Eingangsdatenwort am Anschluß 27 das nächste
ei.te Bit »1« in den Umsetzer 26 synchron mit dem Eingangstakt eingespeist. Das Ausgangssignal des Umsetzers
26 nimmt den Zustand »0001« an, wodurch der Eingang des 8-Bit-Addiergliedes 22 das Datenwort (01)
erhält. Dem 8-Bit-Addierglied 22 werden ferner von dem Datenregister 17 die Bits B$ bis Bz des Datenwortes
(34) zugeführt. Das 8-Bit-Addierglied 22 addiert die Datenworte (01) und (34) zu einer Sprungadresse (35), welche
dem Speicheradressenregister 15 zugeführt wird. Von der Adresse (35) des Speichers 16 wird ei« Datenwort
(07) an das Datenregister 17 ausgelesen. Damit werden beide Bits B\ und Bi zu einer »1«.
Da das geringstwertige Bit B\ nunmehr eine »1« ist, stellt die Erfassungsschaltung 12 für den Abschluß der
Decodierung fest, daß es sich um Enddaten handelt, d. h.,
daß nunmehr ein Endknoten erreicht worden ist. Durch das Erfassungssignal am Ausgang der Schaltung 12 werden
die Datenwählschalter 19 und 21 auf ihren jeweiligen Wählkontakt b umgeschaltet. Da das Bit Bi eine »1«
ist, wird ein Datenwählschalter 29 auf seine Wählkontakte
MC umgeschaltet, wodurch die Bits Bs bis B} im
Datenregister 17 den höherwertigen 6 Bits eines Ausgangsregisters 31 für die Durchlauflänge zugeführt werden.
Hierdurch ergibt sich am Ausgang des Registers 31 die Binärkombination »000001000000«, d. h„ es wird die
Durchlauflänge »154« ausgegeben, wodurch der Decodiervorgang abgeschlossen ist. Wenn in dem modifizierten
Huffman-Codierschema eine Durchlauflänge größer als 63 ist, wird die Durchlauflänge durch die Kombination
eines Aufbaucodes und eines Schlußcode·. wiedergegeben.
Beispielsweise wird eine Weißdurchlauflänge von 80 durch eine Weißdurchlauflänge 64 plus
einer Weißdurchlauflänge 16 repräsentiert. Dementsprechend folgt nach der Decodierung eines Aufbaucodes
stets ein Schlußcode der gleichen Farbe wie zuvor, was bei der vorliegenden Decodiervorrichtung dadurch
erreicht wird, daß das decodierte Ergebnis des Aufbaucodes, d. h_ der Enddaten, stets eine »1« an dem bezüglich
des geringstwertigen Bit B\ zweiten Bit B2 erzeugt,
wobei das Bit B2 — 1 der Enddaten der Erfassungsschaltung
12 für den Abschluß der Decodierung zugeführt wird, um dessen Inhibitierglied 35 zu inhibitieren. Das
geringstwertige Bit B\ = 1 wird daher dem ODER-Glied 33 zugeführt wodurch der Decodiervorgang für den
nächsten Code mit dem Weißcode beginnt. Bei dem vorstehend betrachteten Fall einer Weißdurchlauflänge
von 64 werden die Daten in Form einer Weißdurchlauflänge von 64 plus einer Weißdurchlauflänge von 0 decodiert
Falls es sich bei den decodierten Daten um einen Schlußcode handelt, ist das Bit B2 der Enddaten »0«,
wobei das Bit B\ = 1 über das Inhibitierglied 35 dem Flip-Flop 14 zugeführt wird, um diesen zu invertieren,
wodurch der Auslesebetrieb des Decodiertabellenspeichers 16 von der Weißcode-Decodiertabelle auf die
Schwarzcode-Decodiertabelle und umgekehrt geändert
wird Gleichzeitig wird das Speicheradressenregister 15 rückgesetzt, um das nächste Eingangsdaten wort in der
gleichen Weise wie im Falle des Eingangsdatenwortes »11011« zu decodieren.
F i g. 8 zeigt einen Teil der Decodiertabelle des modifizierten
Huffman-Code für eine weitere Ausführungsform der erfindungsgemäßen Decodiervorrichtung. In
F i g. 8 sind die mit F i g. 4 übereinstimmenden Teile mit den gleichen Bezugszeichen versehen. Im Falle von
Fig.8 beträgt die Datenwortlänge 10 Bit, während die
Speicheradresse 8 Bit lang ist und die Anzahl der zu einem Zeitpunkt zu wählenden Zweige, d h, die Anzahl
der im Falle einer nicht abgeschlossenen Decodierung als nächstes einzuspeisenden Bits des Eingangsdatenwortes,
auf 4 festgelegt ist. Auch bei diesem Beispielsfall ist X eine Ziffer einer Hexadezimalzahl. Falls die Bit-Zuordnung
im Falle jeder Ziffer eines in die binäre Entsprechung umgewandelten Datenwortes (XXX) zu (Bi0,
Rh B9, B7, B6, B5 XX A4,B3, B2, Bi) gewählt wird gibt das
Bit Bi das Ende oder die Fortsetzung des Decodiervcrganges
wieder; die Bits Bi und Bz indizieren die Anzahl
der am Ende des Decodiervorganges, d h, wenn es sich
bei den ausgelesenen Daten um Enddaten handelt, als nächste einzulesenden Anfangsdatenbits; das Bit Bt, indiziert,
ob die decodierten Daten am Ende des Decodiervorganges einem Aufbaucode oder einem Schlußcode
entsprechen, während die Bits B5 bis B^0 im Falle
VCi Zwischendaten ein Adreßdatenwon und im Falle
von Enddaten das decodierte Ergebnis ausweisen. »X« ist »1« oder »0«, was für den Decodiervorgang nicht
verwendet wird
In F i g. 9 ist ein Ausführungsbeispiel eines Decodiervorganges veranschaulicht, bei welchem die Decodiertabelle
nach F i g. 8 verwendet wird und als Eingangsdaten das einer Weißdurchlauflänge von 64 entsprechende
Binärwort »11011« eingespeist wird. Dieser Decodiervorgang
wird nachstehend noch näher erläutert.
In Fig. 10 ist eine weitere Ausführungsform der erfindungsgemäßen
Decodiervorrichtung veranschaulicht welche die in Fig.8 dargestellte Decodierlabelle
des modifizierten Huffman-Code verwendet. In Fig. 10
sind die mit F i g. 7 übereinstimmenden Teile mit den gleichen Bezugs;:eichen versehen. Bei der dargestellten
Decodiervorrichtung wird mit Hilfe des Datenwählschalters 20 eine Selektion dahingehend getroffen, ob
der Wert des Eingangsdatenzählers 24 auf eine festgelegte Anzahl von Eingangsdaten aus einem Setzspeicher
35 oder auf die Anzahl von Daten aus einer Setzschaltung 37 für eine Anfangsbitzahl gesetzt wird. Die Setzschaltung
37 weist die Anzahl der Anfangseingangsdaten eines als nächsten zu decodierenden Code aufgrund
der Ausgangsbits Bj und Bi des Datenregisters 17, wobei
diese Anzahl nicht fixiert ist. Dagegen wird zum Einspeisen einer festgelegten Anzahl von Eingangsdaten
im Verlaufe der Decodierung der Setzspeicher 35 verwendet.
Die Funktionsweise der Decodiervorrichtung nach Fig. 10 soll nachstehend für den Fall beschrieben werden,
daß ein in F i g. 9 dargestelltes Eingangsdatenwort »11011000« eingespeist wird Für den Beginn des Decodiervorganges
wird ein Decodierstartsignal über die Leitung 11 der Erfassungsschaltung 12 für den Abschluß
der Decodierung zugeführt, um über die Signalleitung 32 den Flip-Flop 14 rückzusetzen, wodurch der Decodiertabellenspeicher
16 in den Weißcode-Auslesezustand versetzt wird. Gleichzeitig wird auch das Speicheradressenregister
15 rückgesetzt, um ein Datenwort
(000) von dem Speicher 16 an das Datenregister 17 aus zulesen. Andererseits erzeugt die Erfassungsschaltuni
12 auf den Ausgangsleitiingen 18 und 32 aufgrund de
Decodierstartsignals Low-Zustände, wodurch die Da
tenwählschaker 20 und 21 wie im Falle von F i g. 7 au ihren Wählkontakt b umgeschaltet werden. Hierdurcl
wird der Datenwählschalter 20 mit der Setzschaltung 3i
verbunden. Die Setzschaltung 37 wird durch das Deco dierstartsignal rückgesetzt, worauf die Setzschaltung 3Ί
ίο einen Eingangsdatenzähler 24 auf einen Zählwert »4«
setzt. Die ersten 4 Bits »110!« des Eingangsdatenworte;
werden dem Serien-Parallel-Umsetzer 26 von einei Klemme 27 synchron mit den an einer Klemme 25 anliegenden
Eingangstaktimpulsen zugeführt Die eingespeisten Daten können durch den Ausdruck (OD) im Hexadezimalsystem
repräsentiert werden. Der Serien-Parallel-Umsetzer 26 gibt die Eingangsdaten »1101« in paralleler
Form an das 8-Bit-Addiergüed 22 weiter. Das geringstwertige Bit B\ =0 des in das Datenregister 17 ausgelesenen
Anfangsdatenwortes (000) wird der Erfassungsschaltung
12 für das Decodierende zugeführt weiches über das ODER-Glied 33 auf der Ausgangsleitung
18 einen High-Zustand erzeugt wodurch der Wählschalter 21 auf seinen Wählkontakt a umgeschaltet wird
Hierdurch werden die Bits B\o bis Bs des Anfangsdatenwortes
(000) von dem Datenregister 17 über den Datenwählschalter 21 in das 8-Bit-AddiergIied 22 eingespeist
Das Addierglied 22 addiert das Eingangsdatenwort »1101« bzw. (OD) und das Anfangsdatenwort (00), d h,
(000) — »#4 Bi B2 B\« unter Erzeugung einer Sprungadresse
(OD), weiche dem Speicheradressenregister 15 zugeführt wird. Im Anschluß an die Ausgabe der
Sprungadresse (OD) wird zeitlich versetzt zu dem Umschalten des Datenwählschalters 21 auch der Datenwählschalter
20 durch die Impuisdehnungsschaltung 39 auf seinen Wählkontakt 3 umgeschaltet. Durch das von
dem 8-Bit-Addierglied 22 auf dcr Signalleitung 28 hervorgerufene
Signal wird ein der Sprungadresse (OD) zugeordnetes Datenwort (AiX)), welches die binäre Entsprechung
B[0 B9 B8 B7 B6 B5 XX B4 B3 B2
B1 =»101000000000« besitzt, aus dem Decodiertabellenspeicher
16 in das Datenregister 17 ausgelesen. Diese Daten sind Zwischcndaten; für einen Innenknoten, da
das geringstwertige Bit B\ eine »0« ist. Die Datenwählschalter
20 und 21 werden von der Erfassungsschaltung 12 für den Abschluß der Decodierung auf ihrem jeweiligen
Wählkontakt a, d. h., im Zustand »unbeendet« gehalten.
Der Eingangsdaterizähler 24 wird entsprechend der
Der Eingangsdaterizähler 24 wird entsprechend der
so Stellung des Wählschalter 20 durch den Setzspeicher
35 auf den Zählwert »4« gesetzt, so daß 4 Bits »1000« des nächsten Eingangsdatenwortes in den Serien-Parallel-Umsetzer
26 synchron mit den Eingangstaktimpulsen eingespeist werden. Hierdurch entsteht am Ausgang
des Serien-Parallel-Umsetzers 26 der Binärzustand »1000«, wodurch der Eingang des 8-Bit-Addiergliedes
22 zu »00001000« wird (entsprechend der Zahl 08 im Hexadezimalsystem). Die Bits B5 bis Bio am Ausgang
des Datenregisters 17 werden ebenfalls dem 8-Bit-Addierglied 22 als Datenwort (AO) zugeführt, wodurch dieser
unter Addition der zugeführten Datenworte (08) und (AO) eine Sprungadresse (A8) erzeugt, die dem Speicheradressenregister
15 zugeführt wird. Hierdurch wird ein der Adresse (A8) zugeordnetes Datenwort (049)
(welches die binäre Entsprechung Bu, B9 B» B7 B1, B5 XX
Ba B3 B2 B\ =»000001001001« besitzt) von dem Decodiertabellenspeicher
16 in das Datenregister 17 ausgelesen. Das geringstwcrtige Bit B\ dieses Datenwortes ist
eine »1«, welches indiziert, daß es sich bei diesem Datenwort
um Enddaten handelt d. b-, daß ein Endknoten
erreicht und damit der Decodiervorgang beendet ist Durch die Erfassungsschaltung 12 für den Abschluß der
Decodierung werden die Datenwählschalter 20 und 21 auf ihren jeweiligen Wähikontakt b (»Ende«) umgeschaltet
Da das Bü Ät eine »1« ist wird der Datenwählschalter
29 auf seinen MC-Wählkontakt umgeschaltet wodurch das Ausgangssignal des Datenwählschalters 29
als Aufbaucode in das Ausgangsregister 31 unter Erzielung des Binärwortes »000001000000« entsprechend einer
Durchlauflänge von »64« eingespeist wird und damit der Decodiervorgang abgeschlossen ist
Die Setzschaltung 37 wird mit einem Datenwort Bz
ß2=»00« aus dem Datenregister 17 versehen, wo das Binärwort »00« um eine »1« inkrementiert wird, um
einen Wert »1« zu erzeugen, welcher der Differenz zwischen
der festgelegten Anzahl »4« von Eingangsdatenbits und der Anzahl »3« von Bits des zur Decodierung
des Eingangsdatenwortes »11011000« nicht verwendeten Datenwortes »000« entspricht Der Wert »1« wird
als Anfangsdatenwort dem Eingangsdatenzähler 24 zugeführt Da bei diesem Beispielsfall das Bit B4 der ausgelesenen
Enddaten eine »1« ist setzt die Erfassungsschaltung 12 das Speicheradressenregister 15 zurück, während
das Flip-Flop 14 unverändert bleibt d. h, im Weißcode-Decodierzustand
verbleibt Das Datenwort (000) wird von dem Speicher 16 in das Datenregister 17 ausgelesen.
Bei der anschließenden Dateneingabe in den Serien-Parallel-Umsetzer
26 erfolgt die Decodierung des nächsten Eingangsdatenwortes in gleicher Weise wie im Falle
des vorstehend betrachteten Eingangsdatenwortes »11011 L Falls beim Auslesen der Enddaten das Bit Bi,
eine »0« ist, invertiert die Erfassungsschaltung 12 das Flip-Flop 14, um den Auslesebetrieb des Decodiertabellenspeichers
16 auf die Auslegung der Schwarzcodetabelle umzuschalten; ferner setzt die Erfassungsschaltung
12 das Speicheradressenregister 15 zurück. Beim dem anhand der Fig.8 und 10 beschriebenen Ausführungsbeispiel
werden die Daten schrittweise in Gruppen aus einer festgelegten Anzahl von Bits, im betrachteten
Beispielsfalle 4 Bits, eingespeist wobei die für die Decodierung nicht verwendeten Bits der eingespeisten
4-Bit-Datenworte, d. h, die 3 Bits »000« im betrachteten Beispielsfall, für die anschließende Decodierung benutzt
werden. Die Decodierung wird unter Verwendung dieser 3 Bits und eines Bits des nächsten Datenwortes (d. h.,
wiederum mit der festgelegten Anzahl von Bits, nämlich 4 Bits im betrachteten Beispielsfall) fortgesetzt.
Der Aufbau der erfindungsgemäßen Decodiervorrichtung
ist nicht auf eine verdrahtete Logikschaltung entsprechend Fig.7 und 10 beschränkt; vielmehr kann
hierfür auch eine Allzweckschaltung mit einer Speicherzugriffsfunktion sowie einer Datenentscheidungs- und
Rechenfunktion, beispielsweise ein Mikroprozessor, vorgesehen werden. Ein Ausführungsbeispiel einer derartigen
Decodiervorrichtung, welche einen Mikroprozessor benutzt, wird für den Fall einer Verwendung einer
Decodiertabelle gemäß Fig.4 anhand von Fig. 11
erläutert. Bei der Ausfühfungsform nach F i g. 11 sind an
einen Bus (Sammelleitung) 41 ein Mikroprozessor 42, ein Serien-Parallel-Umsetzer 43, ein Empfangs-Pufferspeicher
44, ein Programmspeicher 45, eine Ausgabeschaltung 46 und der Decodiertabellenspeicher 16 angeschlossen.
In dem Decodiertabellenspeicher 16 ist die Decodiertabelle gemäß F i g. 4 gespeichert, d. h., die mit
(XX) repräsentierten Datenworte sind unter jeweils einer Adresse abgelegt die mit (XX) bezeichnet ist Der
mit einer Vielzahl von Allzweckregistern 47 versehene Mikroprozessor 42 fragt den Programmspeicher 45 sequentiell
ab, um die Ausgabebefehle in ein Befehlsregister 48 einzuspeisen, decodiert diese in einem Befehlsdecoder
49 und führt zahlreiche Eingangs/Ausgangs-Steuerfunktionen-Operationen
und -Entscheidungen aufgrund der decodierten Ergebnisse aus. Die logischen
Addiervorgänge und Entscheidungen werden von einem Logikoperator 51 in Verbindung mit den Daten der
Allzweckregister 47 durchgeführt Die Ergebnisse der Operationen werden in den Allzweckregistern 47 gespeichert
Der Decodiertabellenspeicher 16 und der Programmspeicher 46 können von einem einzigen Speieher
gebildet werden. In den Serien-Parallel-Umsetzer
43 wird über den Anschluß 27 ein Eingangscodezug eingespeist Bei jedem Einspeisen des Eingangscodezuges,
beispielsweise von 8 Bits, wird über eine Interre.j.-Leitung
52 von dem Serien-Parallel-Umsetzer 43 einer Interrupt-Schaltung 53 des Mikroprozessor 42 ein Interrupt-Signal
zugeführt Sobald der Mikroprozessor 42 das Interrupt-Signal erhält speichert er ein von dem
Serien-Parallel-Umsetzer 43 kommendes serielles S-Bit-Datenwort
in dem Empfangs-Pufferspeicher 44.
Die Ausgabeschaltung 46 dient zur Ausgabe der decodierten Ergebnisse.
Die Funktionsweise der Decodiervorrichtung nach F i g. 11 soll anhand eines in F i g. 12 dargestellten Flußdiagramms
erläutert werden. Der Decodiervorgang beginnt mit einem Schritt Si, bei welchem die Anzahl der
anfänglichen Eingangsbits, d. h., die Anzahl der von dem
Eingangscodezug als erste einzuspeisenden Bits (im betrachteten Beispielsfalle 4 Bits), in ein Allzweckregister
47a und ein Anfangsadreßdatenwort für den Decodiertabellenspeicher 16 (im betrachteten Beispielsfalle das
Datenwort (00)) in ein Allzweckregister 47 b eingegeben werden. Beim nächsten Schritt 52 wird geprüft, ob beispielsweise
sämtliche Bits des von dem Empfangs-Pufferspeicher 44 in ein Allzweckregister 47c eingespeisten
8 Bit-Eingangscodewortes verwendet wurden oder nicht. Falls der Eingangscode bereits benutzt wurde,
wird der Schritt 53 durchgeführt, bei welchem das nächste
8-Bit-Datenwort von dem Empfangs-Pufferspeicher
44 in das Allzweckregister 47c eingespeist wird. Beim Schritt 54 wird das Datenwort, welches der Anzahl »4«
der während des Schritts Si in das Register 47a eingespeicherten
Anfangsbits entspricht, von dem Register 47czu einem Allzweckregister 47dübertragen.
Die auf diese Weise in das Allzweckregister 47c/übertragenenen
Daten und das beim Schritt Sj in das Register
47b eingespeicherte Anfangsadreßdatenwort (00) werden in einem Schritt 5s miteinander addiert, um eine
Adresse zu erhalten. Diese Adresse wird beim Schritt 5β
zum Abfragen des Decodiertabellenspeichers 16 benutzt. In einem Schritt 57 wird geprüft, ob das geringstwertige
Bit Bi der aus dem Decodiertabellenspeicher 16
ausgelesenen Daten eine »1« ist oder nicht. Falls das Bit Bi nicht eine »1« ist, handelt es sich bei den ausgelesenen
Daten um Zwischendaten, so daß das nächste Adreßdatenwort und die Anzahl der als nächste einzuspeisenden
Eingangscodebits gesetzt werden. Dies bedeutet im Falle des vorstehend betrachteten Beispiels,
daß im Schritt S6 geprüft wird, ob das Bit B2 der ausgelesenen
Daten eine »1« ist oder nicht. Falls das Bit B2
keine »1«ist, ist die Anzahl der als nächste einzuspeisenden
Eingangscodebits = »1«, wobei in einem Schritt S)
die Bits Bj bis Bs der aus dem Decodiertabellenspeicher
16 ausgelesenen Daten als Adreßdaten in dem All-
zweckregister 476 gesetzt werden, während gleichzeitig
die Anzahl der Eingangscodebits »1« in dem Allzweckregister 47a gesetzt wird. Falls bei einem Schritt S8 entschieden
wird, daß das Bit B2 eine »1« ist, ist die Anzahl
der als nächste einzuspeisenden Eingangscodebits=»?«, wobei in einem Schritt Sw die Bits B3 bis B»
der ausgelesenen Daten in das Allzweckregister 476 geladen werden, während gleichzeitig die Anzahl der als
nächste einzuspeisenden Eingangscodebits, nämlich »2«, in das Allzweckregister 487a eingeladen wird. Nach dem
Schritt S9 oder Sw kehrt die Operation auf den Schritt
S2 zurück, um die beschriebene Prozedur zu wiederholen.
Falls beim Schritt S7 entschieden wird, daß das geringstwertige
Bit B\ eine »1« ist, handelt es sich bei den aus dem Decodiertabellenspeicher 16 ausgelesenen Daten
um Enddaten, so daß die Operation auf einen Schritt Sn vorrückt, bei welchem geprüft wird, ob das Bit Bz
der Daten eine »1« ist oder nicht Falls entschieden wird,
daß das Bit B2 eine »1« ist, liegt bei den Daten ein
Aufbaucode ver, wobei eine von den Bits & bis Bg der
Daten repräsentierte Zahl η (welche eine Dezimalzahl darstellt) mit 64 multipliziert werden muß, um die
Durchlauflänge zu erhalten (Schritt Sn). Falls bei dem Schritt Si 1 entschieden wird, daß das geringstwertige Bit
B\ eine »0« ist und damit die ausgelesenen Daten einen Schlußcode darstellen, werden in tinem Schritt Sn die
Bits B3 bis S8 der Daten unmittelbar als Durchlauflänge
gewonnen. Das decodierte Ergebnis des Schritts Si2
oder Si 3 wird als decodiertes Ausgangssignal von der
Ausgabgeschakung 46 (Fig. 11) in einem Schritt Sn
ausgegeben. Anschließend wird in einem Schritt Si 5 geprüft,
ob die Decodierung vollstänc/g abgeschlossen ist
oder nicht. Dies kann aufgrund der Eingangscodedaten oder der decodierten Daten wie b ,4 dem Stand der
Technik entschieden werden. Falls entschieden wird, daß die Decodierung noch nicht abgeschlossen ist, rückt
die Operation auf einen Schritt Si6, bei weichem dann,
wenn der decodierte Code als Schlußcode eingestuft wird, d. h, wenn beim Schritt Si entschieden wird, daß
das Bit B2 eine »0« ist, der nächste Decodiervorgang von
der Weißcode- auf die Schwarzcode-Decodierung umgeschaltet wird und umgekehrt, worauf die Operation
auf den Schritt S1 zurückkehrt. Falls beim Schritt Si 5
entschieden wird, daß die Decodierung noch nicht abgeschlossen ist und das Bit B2 beim Schritt Si als »1«
erkannt wird, kehrt die Operation auf den Schritt Si
ohne Durchlaufen des Schritts Sie zurück.
In Fig. 13 ist ein Beispiel für die Decodiertabelle eines
Schwarzcodes veranschaulicht, die in gleicher Weise wie die Decodiertabelle nach F i g. 4 aufgebaut ist. Wie
aus der Decodiertabelie nach Fig. 13 hervorgeht, liegt
der erste Endknoten zwei Zweige von der Wurzel 1 entfernt, so daß die Anzahl der zuerst einzuspeisenden
Eingangscodebits = »2« ist. Wie aus den Fig.4 und 13
ersichtlich ist, enthalten die dort dargestellten Decodiertabellen
ungenutzte Adressen (beispielsweise die Adressen (OA) und (OB) in F i g. 13), so daß der Decodiertabellenspeicher
in dieser Hinsicht nicht wirtschaftlich ausgenutzt wird. Durch eine Ausgestaltung des Decodiertabellenspeichers
derart, daß solche nutzlosen
Adressen nicht existieren, kann die Speicherkapazität weiter verringert werden.
Da das Ausführungsbeispiel nach F i g. 7 einen Einwort-8-Bit-Speicher
als Decodiertabellenspeicher 16 und 8 Bit als Information für das decodierte Ergebnis
sowie 8 Bit zur Bestimmung der als nächstes abzufragenden Adresse benutzt, ist die Anzahl der für jeden
Code zuerst einzuspeisenden Eingangsbits=»4«, welche in dem Speicher 23 gesetzt wird. Es ist jedoch möglich,
eine solche Anordnung zu treffen, daß dann, wenn die Anzahl der zu einem Zeitpunkt einzuspeisenden Bits
einschließlich der Anzahl der zuerst einzuspeisenden Bits=»2k oder weniger ist, die Anzahl der einzuspeisenden
Bits stets durch eine Information bestimmt wird, welche die Anzahl der Eingangsbits in den von dem
Decodiertabellenspeiche'" 16 ausgelesenen Daten festgelegt
Durch Selektion der ein Wort des Decodiertabellenspeichers 16 bildenden Anzahl von Bits auf mehr
als 8 ist es möglich, daß dann, wenn die Anzahl der zu einem Zeitpunkt einzuspeisenden Bits einschließlich der
zuerst einzuspeisenden Bits größer als 2 ist die entsprechend
einer maximalen Anzahl von Eingangsbits einzuspeisende Anzahl von Bits ebenfalls stets von der Information
bestimmt wird, welche die Anzahl der Eingangsbits aufgrund der aus dem Decodiertabellenspeicher 16
ausgelesenen Daten festlegt
2C Mit Hilfe der vorstehend erläuterten, erfindungsgemäßen
Decodiervorrichtung ist es möglich, die erforderliche Kapazität des Decodiertabellenspeichers zu
verringern. In F i g. 14 sind die erforderlichen Speicherkapazitäten
für verschiedene Decodierverfahren dargestellt Auf der Abszisse des dargstellten Diagrammes
sind die einzelnen Decodierverfahren aufgetragen. Das Verfahren Nr. 1 benutzt eine Codetabelle, bei welchem
die Code der gespeicherten Codetabelle sequentiell zum Vergleich mit einem Eingangscode erzeugt werden, um
ein auf dem Vergleich hiermit basierendes Decodierergebnis zu erzielen. Die Beispiele Nr. 2, Nr. 3 und Nr. 4
beziehen sich jeweils auf das anhand von Fig.7 beschriebene
Decodierverfahren, wobei Nr. 2 den Fall betrifft, bei dem die Anzahl der Eingangscodebits als bevorzugter
Wert jedes Knotens des Codebaums selektiert wird, Nr. 3 den Fall betrifft bei dem die Anzahl der
zu einem Zeitpunkt einzuspeisenden Bits = »1«, »2« und »4« gewählt wird, und Nr. 4 den Fall betrifft bei dem die
Anzahl der zu einem Zeitpunkt einzuspeisenden Bits=-»1« oder »2« gewählt wird. Das Beispiel Nr.5
zeigt das anhand von Fig. 1 erläuterte Bit-für-Bit-Decodierverfahren.
Die Beispiele Nr. 6 bis Nr. 10 beziehen sich jeweils auf ein anhand von Fig. 10 beschriebenes
Decodierverfahren. Bei den Beispielen Nr. 6 bis Nr. 10 w'rd die festgelegte Anzahl der zu einem Zeitpunkt einzuspeisenden
Bits = »2«,»3«, »4«, »5« bzw. >,6« gewählt. Die Beispiele Nr. 11 bis Nr. 17 beziehen sich jeweils auf
ein anhand von F i g. 3 erläutertes Decodierverfahren. Bei den beispielen Nr. 11 bis Nr. 17 wird die Anzahl der
zu einem Zeitpunkt einzuspeisenden Bits = »7«, »8«, »9«,
»10«, »11«, »12« bzw. »13« gewählt. Auf der OrJinate
des Diagramms nach Fig. 14 ist die Speicherkapazität aufgetragen. Die Kurve 63 gibt den Fall der Benutzung
eines Einwort-16-Bit-Speichers an, während die Kurve 16 den Fall einer Benutzung eines Einwort-8-Bit-Speichers
veranschaulicht. Aus Fig. 14 ist ersichtlich, daß die für die Verneinung nach Fi g. 7 erforderliche Speicherkapazität
gleich dem Minimum der für die bekannten Decodierverfahren erforderlichen Speicherkapazitäten
ist und insbesondere etwa ein Drittel der kleinsten, bei dem Verfahren nach F ί g. 3 erforderlichen Speicherkapazität
beansprucht. Bei der Vorrichtung nach Fig. 10 führt eine Vergrößerung der Anzahl der zuerst
einzuspeichernden Bits zwar zu einer Vergrößerung der erforderlichen Speicherkapazität, doch ist diese Speicherkapazität
geringer oder im wesentlichen gleich der bei dem Verfahren nach F i g. 3 erforderlichen Speicherkapazität.
In Fig. 15 ist die Anzahl der für die verschiedenen Decodierverfahren erforderJicbcn Abfragezyklen veranschaulicht.
Auf der Abszisse des dargestellten Diagramms sind die gleichen Verfahren wie bei dem Diagramm
nach Fig. 14 aufgetragen, während auf der Ordinate des Diagramms die Anzahl der Abfragezyklen
aufgetragen ist
Die Kurven 65 und 65' weisen jeweils die maximale Anzahl der Abfragezyklen aus, während die Kurven 66
und 66' eine mittlere Anzahl von Abfragezyklen and die Kurven 67 und 67' eine bezüglich der Wahrscheinlichkeit
des Auftretens jedes Codes gewichtete mittlere Anzahl ναι Abfragezyklen ausweisen. Die Kurven 65', 66'
und 67' zeigen jeweils den Fall der Verwendung eines Einwort-16-Speichers, während die übrigen Kurven jeweils
den Fall der Verwendung eines Einwort-8-Bit-Speichers zeigen. Aus F i g. 15 ist ersichtlich, daß die bei
der erfindungsgemäßen Decodiervorrichtung erforderliche Anzahl von Abfragezyklen wesentlich geringer ist
als die bei dem Bit-für-Bit-Decodierverfahren Nr. 5 erforderliche Anzahl von Abfragezyklen und nur geringfügig
großer ist als im Falle der bekannten Decodiervorrichtung nach F i g. 3. Betrachtet man die Kurve für die
gewichtete mittlere Anzahl der Abfragezyklen, weiche die in der Praxis am häufigsten vorkommenden Fälle
betrifft, so ist die erfindungsgemäße Decodiervorrichtung ziemlich gleichwertig mit der Decodiervorrichtung
nach F i g. 3.
In F i g. 16 sind unter Zugrundelegung der vorstehenden Fakten die Kapazität des Decodiertabellenspeichers
und die Anzahl der Abfragezyklen jeder einzelnen Decodiervorrichtung in Form einer Tabelle veranschaulicht,
wobei als Bezugsgrößen 1 der in der Tabelle angegebenen Werte die Kapazität des Decodiertabellenspeichers
und die Anzahl der Abfragezyklen der Decodiervorrichtung nach F i g. 7 herangezogen sind.
Wie aus den vorstehenden Erläuterungen hervorgeht,
wird bei der erfindungsgemäßen Decodiervorrichtung die Anzahl der als nächste einzulesenden Codebits
durch Auslesen des Decodiertabellenspeichers bestimmt,
währe/id zur Festlegung der als nächste abzufragenden Adresse eine zusätzliche oder ähnliche Operation
bezüglich des aus dem Decodiertabeller.speicher ausgelesenen Datenwortes und des eingespeisten Codewortes
durchgeführt wird, wobei dann unter Verwendung der Adresse der gleiche Decodiertabellenspeicher
abgefragt wird. Diese Vorgehensweise verringert die Speicherkapazität und die Anzahl der Abfragezyklen
bzw. Abfragevorgänge, wodurch eine hohe Decodiergeschwindigkeit bei einer geringen Baugröße der Hardware
erreicht wird. Ferner wird im Falle des Ausführungsbeispiels nach Fig.7 bei der Decodierung eines
Code das vordere Bit des Eingangscode das erste Bit des
nächsten Code, wodurch die nachfolgende Verarbeitung erleichtert wird.
Während bei den vorstehend beschriebenen Ausführungsbeispielen die als nächste abzufragende Adresse
durch Addition des aus dem Decodiertabellenspeicher ausgelesenen Datenwortes mit dem Eingangscodewort
erhalten wird, ist es ebenso möglich, diese Adresse durch andere Operationen, wie beispielsweise einer
Subtraktion oder eine Multipliktion, zu erhalten. Die anhand der Decodierung des modifizierten Huffman-Code,
bei dem die Informationen über die Codeart, d. h, Aufbaucode oder Schlußcode, in dem Endcode enthalten
ist, erfolgte Erläuterung der verschiedenen Ausführungsformen der erfindungsgemäßen Decodiervorrichtung
ist lediglich beispielhaft; im Falle eines reinen Huff
man-Code sind die Informationen über die Codeart nicht erforderlich. Ferner läßt sich die vorliegende Erfindung
auch auf die Decodierung von Code variable.-Länge anwenden, die generell durch einen Codebaum
gebildet werden.
Hierzu 17 Blatt Zeichnungen
Claims (12)
1. Vorrichtung zum Decodieren eines durch einen Codebaum darstellbaren Codes variabler Länge, insbesondere
eines modifizierten Huffman-Codes, mit folgenden Merkmalen:
— in einer Decodiertabellen-Speicheranordnung (16) sind Decodierdaten gespeichert,
— einige Speicherplätze der Decodiertabellen-Speicheranordnung
(16) enthalten Enddaten, die ein Ende des Decodiervorganges bedeuten
und das Decodierergebnis enthalten, und andere Speicherplätze enthalten Zwischendaten, die
bedeuten, daß der Decodiervorgang noch nicht abgeschlossen ist,
— eine Eingabeeinrichtung (26) empfängt serielle, zu decodierende Codedaten,
— eine EEgabedatensteuerung (24) steuert die
Anzahl eier in die Eingabeeinrichtung (26) einzuspeisenden
Bits,
— ein Adreßgenerator (22) erzeugt auf der Grundlage der in die Eingabeeinrichtung eingespeisten
Eingangsbits eine Adresse für die Decodiertabellen-Speicheranordnung(16),
— mittels einer Ausleseeinrichtung (17) werden Daten aus der Decodiertabellen-Speicheranordnung
ausgelesen,
— eine Entscheidungseinrichtung (34) stellt fest,
ob es sich bsi den ausgelesenen Daten um Enddaten oder um Zwischendaten handelt,
— sind die abgelesenen Daten Enddaten, wird das
Decodierergebnis über eine Ausgabeeinrichtung (29,31) ausgegeben, uno
— sind die ausgelesenen Daten Zwischendaten, so erfolgt nach Maßgabe der in den Zwischendaten
enthaltenen Adreßinformation ein weiterer Auslesevorgang der Decodiertabellen-Speicheranordnung
(16),
dadurch gekennzeichnet, daß die Enddaten einen Bitbereich (B\) enthalten, der die Beendigung
des Decodiervorgangs angibt, daß die Zwischendaten einen ersten Bitbereich (B]), der die
Nicht-Beendigung des Decodiervorgangs angibt, einen zweiten Bitbereich (Bi), der eine Anzahl von von
den Eingangsdaten in die Eingabeeinrichtung einzuspeisenden Bits angibt, und einen dritten Bitbereich
(B3-B») enthalten, der eine Adreßinformation für
den nächsten Speicherzugriff auf den Decodiertabellenspeicher (16) enthält, daß ein Anfangsdatenspeicher
(23) vorgesehen ist, mit dem die Eingabedatensteuerung (24) auf einen vorbestimmten Wert
einstellbar ist, der festlegt, wieviel Bits zu Beginn eines jeweiligen Decodiervorgangs in die Eingabeeinrichtung
einzuspeisen sind, daß eine Bitzahl-Einstelleinrichtung (36) die Eingabedatensteuerung auf
die durch den zweiten Bitbereich der Zwischendaten gekennzeichnete Bitzahl einstellt, und daß eine von
dem Ausgangssignal der Entscheidungseinrichtung (34) gesteuerte Umschaltanordnung (21) vorgesehen
ist, die, wenn aus dem Decodiertabellenspeieher (16)
Enddaten ausgelesen wurden, das Decodierergebnis zur Ausgabeeinrichtung (29,31) gibt, und, wenn Zwischendaten
ausgelesen wurden, die darin enthaltene Adreßinformation dem Adreßgenerator (22) zuführt,
der aus den Eingabedaten entsprechend dem zweiten Bitbereich und aus der Adreßinformation eine
Decodiertabellenspeicher-Zugriffsadresse zusammensetzt
2. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet,
daß die Codes Faksimilesignale sind und Codes für Weißdurchlauflängen oder Schwarzdurchlauflängen
sind und daß eine Tabellenauswahleinrichtung (14) vorgesehen ist, mit der eine Tabelle
für Weißdurchlaufläiigen oder eine Tabelle für
Schwarzdurchlauflängen auswählbar ist
3. Vorrichtung nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die Anzahl von in die Eingabeeinrichtung
einzuspeisenden Bits einer veränderlichen Zahl entspricht die nicht die Anzahl von Codebaum-Zweigen
zwischen der Baumwurzel oder einem Zwischenknoten und dem nächsten Endknoten übersteigt
4. Vorrichtung nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet daß der Anfangsdatenspeicher
(23) separat von dem Decodiertabellenspeicher (16) ausgebildet ist
5. Vorrichtung zum Decodieren eines durch einen Codebaum darstellbaren Codes variabler Länge, insbesondere
eines modifizierten Huffman-Codes, mit folgenden Merkmalen:
— in einer Decodiertabellen-Speicheranordnung
(16) sind Decodierdaten gespeichert
— einige Speicherplätze der Decodiertabellen-Speicheranordnung
(16) enthalten Enddaten, die ein Ende des Decodiervorganges bedeuten und das Decodierergebnis enthalten, und andere
Speicherplätze enthalten Zwischendaten, die bedeuten, daß der Decodiervorgang noch nicht
abgeschlossen ist
— eine Eingabeeinrichtung (26) empfängt serielle, zu decodierende Codedaten,
— eine Eingabedatensteuening (24) steuert die Anzahl der in die Eingabeeinrichtung (26) einzuspeisenden
Bits,
— ein Adreßgenerator (22) erzeugt auf der Grundlage der in die Eingabeeinrichtung eingespeisten
Eingangsbits eine Adresse für die DecodiertabeIlen-Speicheranordnung(16),
— mittels einer Ausleseeinrichtung (17) werden Daten aus der Decodiertabellen-Speicheranordnung
ausgelesen,
— eine Entscheidungseinrichtung (34) stellt fest,
ob es sich bei den ausgeiesenen Daten um Enddaten oder um Zwischendaten handelt,
- sind die ausgelesenen Daten Enddaten, wird das Decodierergebnis über eine Ausgabeeinrichtung
(29,31) ausgegeben, und
- sind die ausgeiesenen Daten Zwischendaten, so erfolgt nach Maßgabe der in den Zwischendaten
enthaltenen Adreßinformation ein weiterer Auslesevorgang der Decodiertabellen-Speicheranordnung(16),
dadurch gekennzeichnet, daß die Enddaten einen Bitbereich (Bi) enthalten, der die Beendigung des
Decodiervorgangs angibt, daß die Zwischendaten einen ersten Bitbereich (B%), der die Nicht-Beendigung
des Decodiervorgangs angibt, einen zweiten Bitbereich (Bi), der eine Anzahl von von den Eingangsdaten
in die Eingabeeinrichtung einzuspeisenden Bits angibt, und einen dritten Bitbereich (Bj-Bg) enthalten,
der eine Adreßinformation für den nächsten
Speicherzugriff auf den Decodiertabellenspeicher (16) enthält, daß eine auf den ::weiten Bitbereich der
Zwischendaten ansprechende Einrichtung (37) vorgesehen ist, die bestimmt, wieviel Bits von einem
Code zuerst in die Eingabeeinrichtung einzuspeisen sind, daß in die Eingabeeinrichtung dann, wenn Zwischendaten
ausgelesen wurden, m Bits (mH) eingespeist
werden, und daß eine vom Ausgangssignal der Entscheidungseinrichtung (34) gesteuerte Umschaltanordnung
(21) vorgesehen ist, die dann, wenn aus dem Decodiertabellenspeicher (16) Enddaten ausgelesen
wurden, das Decodierergebnis zur Ausgabeeinrichtung (29,31) gibt, und dann, wenn Zwischendaten
ausgelesen wurden, die darin enthaltene Adreßinformation dem Adreßgenerator (22) zuführt,
der aus den m Bits umfassenden Eingabedaten und aus der Adreßinformation eine Decodiertabellenspeicher-Zugriffsadresse
zusammensetzt
6. Vorrichtung nach Anspruch 5, dadurch gekennzeichnet, daß die Information über die Anzahl der
zuerst einzuspeisenden Bits gleich L—(n— \)m ist,
wobei L die zu diesem Zeitpunkt decodierte Codelänge und η der für die Decodierung vorgenommenen
Zugriffe zu dem Decodiertabellenspeicher ist
7. Vorrichtung nach Anspruch 5, gekennzeichnet durch eine Einrichtung (35) zum Speichern der festgelegten
Anzahl m von einzuspeisenden Bits für den Fall, daß die Entscheidungseinrichtung (34) die ausgelesenen
Daten als Zwischendaten einstuft
8. Vorrichtung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die Enddaten
eine Information über die Art des decodierten Codes enthalten.
9. Vorrichtung nach Anspruch 8, dadurch gekennzeichnet, daß die Ausgabeeinrichtung (29,31) so ausgebildet
ist, daß sie für den Fall, daß die Entscheidungseinrichtung die ausgeiesenen Daten ais Enddaten
einstuft, die Bestimmung der in den Enddaten enthaltenen Information über das decodierte Ergebnis
in Abhängigkeit von der in den Enddaten enthaltenen Information über die Codeart ändert.
10. Vorrichtung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der Adreßgenerator
(22) eine Schahungseinrichtung zur Durchführung einer Addition ist
11. Vorrichtung nach einem der vorhergehenden
Ansprüche, dadurch gekennzeichnet, daß in den Datenformaten der End- und der Zwischendaten dasselbe
Bit der Information über den Abschluß der Decodierung und der Information über den noch
nicht erfolgten Abschluß der Decodierung zugeordnet ist.
12. Vorrichtung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet daß sich in den
Datenformaten der End- und Zwischendaten die Bitzuordnung zu der Information über das decodiertc
Ergebnis und die Bitzuordnung zu der Information zur Bestimmung der Adresse des abzufragenden
Decodiertabellenspeichers wenigstens gegenseitig überlappen.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13186280A JPS5755668A (en) | 1980-09-22 | 1980-09-22 | Decoding method for run-length code |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3137704A1 DE3137704A1 (de) | 1982-04-15 |
DE3137704C2 true DE3137704C2 (de) | 1986-01-09 |
Family
ID=15067855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19813137704 Expired DE3137704C2 (de) | 1980-09-22 | 1981-09-22 | Vorrichtung zum Decodieren eines baumförmigen Codes variabler Länge |
Country Status (5)
Country | Link |
---|---|
JP (1) | JPS5755668A (de) |
DE (1) | DE3137704C2 (de) |
FR (1) | FR2490899A1 (de) |
GB (1) | GB2084366B (de) |
NL (1) | NL190094C (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3711200A1 (de) * | 1986-02-28 | 1987-12-23 | Toshiba Kawasaki Kk | Binaerdatenverdichtungs- und -dehnungs-verarbeitungsgeraet |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5937773A (ja) * | 1982-08-26 | 1984-03-01 | Canon Inc | ランレングス符号復号装置 |
JPS59225676A (ja) * | 1983-06-06 | 1984-12-18 | Usac Electronics Ind Co Ltd | ビツト長可変符号発生回路 |
JPS6041883A (ja) * | 1983-08-17 | 1985-03-05 | Fujitsu Ltd | 符号化デ−タの復号方式 |
JPS6098768A (ja) * | 1983-11-04 | 1985-06-01 | Sony Corp | ランレングス符号のデコ−ド方法 |
JPS61139069U (de) * | 1985-02-18 | 1986-08-28 | ||
GB2178577B (en) * | 1985-07-27 | 1989-01-11 | Plessey Co Plc | A signal converter |
JPH0656958B2 (ja) * | 1986-07-03 | 1994-07-27 | キヤノン株式会社 | 情報デ−タ復元装置 |
JP3227292B2 (ja) * | 1993-12-20 | 2001-11-12 | キヤノン株式会社 | 符号化装置、符号化方法、復号化装置、復号化方法、符号化復号化装置及び符号化復号化方法 |
US6408102B1 (en) | 1993-12-20 | 2002-06-18 | Canon Kabushiki Kaisha | Encoding/decoding device |
KR0152038B1 (ko) * | 1994-10-17 | 1998-10-15 | 김광호 | 상대 주소를 이용한 가변장 복호화 장치 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3701111A (en) * | 1971-02-08 | 1972-10-24 | Ibm | Method of and apparatus for decoding variable-length codes having length-indicating prefixes |
GB1332631A (en) * | 1971-02-26 | 1973-10-03 | Ibm | Data processing system |
US3835467A (en) * | 1972-11-10 | 1974-09-10 | Ibm | Minimal redundancy decoding method and means |
US3883847A (en) * | 1974-03-28 | 1975-05-13 | Bell Telephone Labor Inc | Uniform decoding of minimum-redundancy codes |
US3918047A (en) * | 1974-03-28 | 1975-11-04 | Bell Telephone Labor Inc | Decoding circuit for variable length codes |
-
1980
- 1980-09-22 JP JP13186280A patent/JPS5755668A/ja active Granted
-
1981
- 1981-09-15 GB GB8127757A patent/GB2084366B/en not_active Expired
- 1981-09-21 FR FR8117756A patent/FR2490899A1/fr active Granted
- 1981-09-22 NL NL8104352A patent/NL190094C/xx not_active IP Right Cessation
- 1981-09-22 DE DE19813137704 patent/DE3137704C2/de not_active Expired
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3711200A1 (de) * | 1986-02-28 | 1987-12-23 | Toshiba Kawasaki Kk | Binaerdatenverdichtungs- und -dehnungs-verarbeitungsgeraet |
Also Published As
Publication number | Publication date |
---|---|
JPS5755668A (en) | 1982-04-02 |
FR2490899B1 (de) | 1984-12-28 |
NL190094C (nl) | 1993-10-18 |
GB2084366A (en) | 1982-04-07 |
FR2490899A1 (fr) | 1982-03-26 |
JPS6338153B2 (de) | 1988-07-28 |
NL190094B (nl) | 1993-05-17 |
NL8104352A (nl) | 1982-04-16 |
DE3137704A1 (de) | 1982-04-15 |
GB2084366B (en) | 1985-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2139731C2 (de) | Anordnung zur Code-Umsetzung | |
DE602004010922T2 (de) | Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen | |
DE2210044C2 (de) | Verfahren zum Umsetzen von Codewörtern | |
DE2756890C2 (de) | Schaltungungsanordnung zur Steuerung der Datenübertragung zwischen einer zentralen Verarbeitungseinheit und einer Mehrzahl peripherer Einheiten | |
DE2205422A1 (de) | Verfahren zur Verarbeitung verdichteter Daten | |
DE3137704C2 (de) | Vorrichtung zum Decodieren eines baumförmigen Codes variabler Länge | |
DE2725395A1 (de) | Einrichtung zur echtzeittransformation einer n . n bitkonfiguration | |
DE2208664A1 (de) | Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge | |
DE3302922A1 (de) | Verfahren und vorrichtung fuer speichersteuerungen | |
DE69329092T2 (de) | Huffman-Kode-Decodierungsschaltung | |
DE3330845C2 (de) | ||
DE3711201C2 (de) | ||
DE2805294C2 (de) | Codierende Übertragungsanlage für Faksimile-Signale | |
DE3148099C2 (de) | Anordnung zum Erkennen einer Digitalfolge | |
DE3121742A1 (de) | Mikroprogrammsteuerverfahren und -einrichtung zu dessen durchfuehrung | |
DE3047695A1 (de) | Verfahren und vorrichtung zum herstellen einer speichertabelle fuer farbkontrollbedingungen | |
DE2727627C2 (de) | Dekoder zur Parallelumsetzung von binären Zeichendaten in ein Punktmatrixformat | |
DE2900586C2 (de) | Anordnung zum Decodieren von Codewörtern variabler Länge | |
DE69217931T2 (de) | Fehlererkennungs- und Fehlerkorrektureinrichtung | |
DE69800432T2 (de) | Verfahren und Gerät zur Durchführung eines Fehlerkorrekturprozesses mit kleiner Speicherkapazität | |
DE3644015C2 (de) | ||
DE2826454C3 (de) | Faksimilesignal-Codiersystem | |
DE19645057C2 (de) | Vorrichtung zur Selektion von Adressenwörtern mittels Demultiplex-Decodierung | |
DE3417816C2 (de) | ||
EP0427884B1 (de) | Verfahren und Anordnung zum Komprimieren und Dekomprimieren von Daten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: NIPPON TELEGRAPH AND TELEPHONE CORP., TOKIO/TOKYO, |
|
8328 | Change in the person/name/address of the agent |
Free format text: HOFFMANN, E., DIPL.-ING., PAT.-ANW., 82166 GRAEFELFING |