DE3137704C2 - Vorrichtung zum Decodieren eines baumförmigen Codes variabler Länge - Google Patents

Vorrichtung zum Decodieren eines baumförmigen Codes variabler Länge

Info

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
Application number
DE19813137704
Other languages
English (en)
Other versions
DE3137704A1 (de
Inventor
Hideaki Yokohama Kanagawa Kanayama
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of DE3137704A1 publication Critical patent/DE3137704A1/de
Application granted granted Critical
Publication of DE3137704C2 publication Critical patent/DE3137704C2/de
Expired legal-status Critical Current

Links

Classifications

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

Patentansprüche:
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.
DE19813137704 1980-09-22 1981-09-22 Vorrichtung zum Decodieren eines baumförmigen Codes variabler Länge Expired DE3137704C2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3701111A (en) * 1971-02-08 1972-10-24 Ibm Method of and apparatus for decoding variable-length codes having length-indicating prefixes
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

Cited By (1)

* Cited by examiner, † Cited by third party
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
NL190094C (nl) 1993-10-18
NL190094B (nl) 1993-05-17
GB2084366A (en) 1982-04-07
FR2490899A1 (fr) 1982-03-26
JPS6338153B2 (de) 1988-07-28
JPS5755668A (en) 1982-04-02
NL8104352A (nl) 1982-04-16
FR2490899B1 (de) 1984-12-28
GB2084366B (en) 1985-07-03
DE3137704A1 (de) 1982-04-15

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
DE2227148A1 (de) Verfahren zur verarbeitung digitaler daten
DE3302922A1 (de) Verfahren und vorrichtung fuer speichersteuerungen
DE2801988A1 (de) Arithmetische codierung von symbolfolgen
DE3330845C2 (de)
DE2153517A1 (de) Anordnung zur Codeumsetzung
DE3126363A1 (de) Verfahren und vorrichtung zur steuerung einer datenuebertragung mit direktem speicherzugriff
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
DE2900586C2 (de) Anordnung zum Decodieren von Codewörtern variabler Länge
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
DE2233164B2 (de) Schaltungsanordnung zur uebertragung von aufeinanderfolgenden bitstellen zwischen zwei registern

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