DE2355786A1 - Verfahren und anordnung zur decodierung von codes mit minimaler redundanz - Google Patents

Verfahren und anordnung zur decodierung von codes mit minimaler redundanz

Info

Publication number
DE2355786A1
DE2355786A1 DE19732355786 DE2355786A DE2355786A1 DE 2355786 A1 DE2355786 A1 DE 2355786A1 DE 19732355786 DE19732355786 DE 19732355786 DE 2355786 A DE2355786 A DE 2355786A DE 2355786 A1 DE2355786 A1 DE 2355786A1
Authority
DE
Germany
Prior art keywords
bit
node
counter
path
path vector
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.)
Pending
Application number
DE19732355786
Other languages
English (en)
Inventor
Luther Jay Woodrum
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE2355786A1 publication Critical patent/DE2355786A1/de
Pending 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

Landscapes

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

Description

Böblingen, den 2. November 1973 ne-sn
Anmelderini International Business Machines
Corporation, Armonk, N.Y. 10504
Amtliches Aktenzeichen; Neuanmeldung
Aktenzeichen der Anmelderin: PO 971 060
Verfahren und Anordnung zur Decodierung von Codes mit minimaler Redundanz
Die Erfindung betrifft allgemein ein Verfahren und eine Anordnung zur Decodierung von Datenzeichensätzen unterschiedlicher Länge, die in Huffmann-Codierung mit minimaler Redundanz vorliegen.
Der Stand der Technik, von dem die Erfindung ausgeht ist niedergelegt in den Büchern "Fundamental Algorithms, The Art of Computer Programming11, von D.E. Knuth, veröffentlicht von der Addison-Wesley Publishing Company, "Automatic Data Processing" von F.P. Brooks und K.E. Iverson, veröffentlicht von Wiley und "A Programming Language" von K.E. Iverson, veröffentlicht von Wiley, sowie in den US Patentschriften 3 694 813, 3 701 108 und den OffenlegungsSchriften 2 208 664 und 2 219 652.
Der Erfindung liegt die Aufgabe zugrunde, ein Verfahren zur Decodierung übertragener, ihre Länge selbstdefinierender codierter Signale anzugeben, die entsprechend den Pfadvektoren in einem binären Baum codiert sind, der einen Satz zu übertragender Zeichen darstellt.
Diese Aufgabe wird durch ein Verfahren der vorher genannten Art gelöst, das durch folgende Verfahrensschritte gekennzeichnet ist:
409820/1088
a) anfängliches Setzen der Bitspeicherelemente eines Bitfolgespeichers zur Darstellung der Ergebnisse einer links beginnenden Abtastung der Knoten des binären Baumes, v/obei in jeder Bitstelle entweder der Binärwert Null eines Endknotens oder der Binärwert Eins zur Darstellung eines inneren Knotens gespeichert wird,
b) Abtasten des Bitfolgespeichers von der Bitstelle aus, in der das erste Ergebnis der links beginnenden Abtastung gespeichert wurde, um eine Bitstelle festzustellen, die einem Endknoten entspricht, der durch die eingegebenen codierten Pfadvektorsignale bestimmt wird.
Ausführungsbeispiele der Erfindung sind in den Zeichnungen dargestellt und werden anschließend näher beschrieben. Es zeigen:
Fig. IA ein Beispiel eines binären Baumes zur Illustration der Beziehungen zwischen Pfadvektoren und den durch die Endknoten des Baumes dargestellten Zeichen,
Fig. IB eine Bitfolge T einer links beginnenden Abtastung der Endknoten des binären Baumes in Fig. IA, worin ein Einerbit einen inneren Knoten und ein Nullbit einen Endknoten darstellt. Die Bezeichnungen der Knoten, die Indices j der abgetasteten Knoten und die Indices der Endknoten sind auch angegeben,
Fig. IC in einer Tabelle die Beziehungen zwischen den
angegebenen Endzeichen, ihren Indices i und den die Zeichen darstellenden Bytecodes mit fester Länge,
Fig. ID der Tabelle nach Fig. IC ähnliche Tabelle zum
Umsetzen der Indizes i in Zeichenbytes, wie sie auf einem programmierten Allzweckrechner ver-
po 971 060 4 0 9 8 2 0/1088
wirklicht werden kann f
Fig. IE die von und zu einem Modem gelieferten Signale,
die als Eingangssignale für die beschriebene Anordnung dienen,
Fig. 2 ein Ablaufdiagramm des Verfahrens der Erfindung,
Fig. 3 e-iit Modem, welcher binär codierte Eingangs-
signale zur Verwendung bei der Verwirklichung der vorliegenden Erfindung decodiertu
Fig. 4 eine Taktgeberschaltung z:ur Erzeugung; der to der
Deeodier schaltung? der Fig., 5 benötigten impnils-■ feige·,.
Fig- 5 eine- Decodierschaltung fur empfangene codierte
Pfadvektorsignale,
Fig. 5A eine Schaltung zrar flexiblen; Becodierung; ver-
ä'nderlieher Pfadvektorcodes: für einen bestimmten Äusgabezeichehsatz,,
Figrt. 6A und 6B durch einen dedadiierten Pfädivektor gesteuerte
Schaltungen zum Aufbau einer bestimmten Schalt— : verbindung, und '
Fig. 6C in einer Tabelle die Beziehungen für die
Decodierung der inneren Knoten»
Die in der Beschreibung verwendeten Abkürzungen haben die folgenden Bedeutungen:
PV: Pfadvektor
PVB: Pfadvektorbit
i: die Knotenreihenfolgezahl in T im Satz 0,1...,i. Somit ist I die höchste Knotenreihenfolgezahl im Satz.
po 971 060 409820/1088 .
T: Eine einen binären Baum in links beginnender Reihenfolge darstellende Bitfolge, in der eine 1 einen inneren Knoten
und eine 0 einen Endknoten darstellen» j: Index des laufenden Bit in Ti Es ist ein Wert im Satz 0,1...,J. Somit ist J der Index der höchsten Bitposition
in T.
c: Sprungzahl. Sie stellt die arithmetische Differenz zwischen der während einer Abtastung auftretenden Anzahl
der inneren Knoten und der Anzahl der Endknoten dar, um alle Bits für einen linken Unterbaum in T zu überspringen, um den Wert für das nächste T [j] längs einer rechten Linie in dem Pfad festzulegen.
T [j]: Das Bit in T am Index j.
Decodierbeziehungen des binären Baumes
Die Erfindung benutzt zur Darstellung einer Umsetzung eines binären Codebaumes, der im Zusammenhang mit Huffmann-Codes allgemein bekannt ist. Ein Beispiel eines Codeumsetzungsbaumes ist in Fig. IA gezeigt, wo der binare Baum mehrere Knoten A bis K umfaßt. Der Knoten A ist die Wurzel des Baumes und C, E, F, H, J und K sind seine Endknoten. Die inneren Knoten des Baumes einschließlich der Wurzel sind A, B, D, G und I.
Der Pfadvektor zu einem Endknoten stellt einen Pfad durch den Baum von seiner Wurzel zu diesem Knoten dar. Jedes Bit im Pfadvektor entspricht einer Linie im Pfad. Jedes Bit in dem Pfadvektor gibt durch seinen Null-Wert oder seinen Eins-Wert an, ob die linke oder rechte Linie von dem entsprechenden inneren Knoten bei der Verfolgung des Pfades zu wählen ist. Die Bits im Pfadvektor stellen somit von links nach rechts die Linienwahl in dem Pfad von der Wurzel zum gewählten Endknoten dar. In Fig. IA lautet der Pfadvektor zum Knoten F Oll und zum Endknoten C lautet er OO.
Nach Darstellung in Fig. IA entsprechen die Endknoten bestimmten Zeichen in einem "zeichensatz C, E, Fr H, J und K. Fig. IC zeigt in einem Beispiel die Relation von sechs derartigen Zeichen C,
PO 971 060 409820/1088
E, F, H, J und K zu acht Bit großen Bytecodes mit den i-Indizes
0, 1, 2, 3, 4 und 5. Durch einen ähnlichen Baum und eine Tabelle kann jeder Zeichensatz in Entsprechung gesetzt werden zu einem Bytecodesatz. Bekanntlich kann mit einem binären Baum eine Huffmann-Codierung mit minimaler Redundanz für einen Zeichensatz dargestellt werden, wie"z.B. BCD, EBCDIC, USASCII usw.
Die Erfindung arbeitet mit einer schaltungsgemäßen oder elektronischen Darstellung des bihären Baumes in Form einer Bitreihe T, die durch eine links beginnende Abtastung aller Knoten im binären Baum vorher erzeugt wird. Die Bitreihe T wird während der links beginnenden Abtastung erzeugt durch Einschieben einer 1 oder einer 0 für jedes Bit in der Reihe, abhängig davon, ob die links beginnende Abtastung feststellt, daß es sich bei dem betreffenden Knoten um einen inneren Knoten oder um einen Endknoten handelt. Die links beginnende Abtastung der Knoten in Fig. IA trifft auf die Knoten in der Reihenfolge A, B, C, D, E, F, G, H,
1, J und K. Fig. IB zeigt die erzeugte Bitreihe T in diesem Beispiel, aus der zu ersehen ist, daß eine Ϊ einen inneren Knoten und eine 0 einem Endknoten des in Fig. IA gezeigten Baumes entsprechen. Die Knotenbits in der Reihe T wurden in der Reihenfolge ihrer Indizes j gesetzt, die in Fig. IB als Satz 0,1,...,10 dargestellt sind. Die allgemeine Darstellung der Indizes der Reihe T ist der Satz 0,1...J.
In Fig. IB sind die Endknoten (d.h. die Nullen) auch durch eine Endknotenzahl i in dem Satz 0, 1, 2, 3, 4 und 5 von links nach rechts dargestellt. Diese Zahl i ist der Endknotenindex. Die allgemeine Darstellung des i-Satzes ist 0,1...I. Die Relation 2I=J gilt für irgendeinen binären Baum.
In Fig. IC werden die i-Zahlen als, Indizes ..für die entsprechenden in der Tabelle gezeigten Bytes benutzt. Bei einem gegebenen Pfadvektor erhält man die i-Zahl aus dem in Fig. IA gezeigten Baum und kann sie in der in Fig. IC wiedergegebenen Tabelle zur Auswahl des durch den Pfadvektor dargestellten Byte (Zeichen) be-
po 971 060 4098 20/ 10 88
nutzen. Die i-Zahl entspricht direkt dem Bytecode in den Zeichensätzen mit binär zusammengefaßten Bytecodes.
Der i-Index braucht nicht in das Zeichenbyte umgesetzt zu werden, wenn er im Zeichensatz identisch ist. Das ist der Fall, wenn die Bytecodierung der Zeichen im gegebenen Zeichensatz dieselbe ist, wie der i-Index für die Zeichen, wenn sie in ihrer Zeichenzu— sammenste1lungsfolge dargestellt werden.
Wenn die i-Zahl einmal mit dem Pfadvektor bestimmt ist, läßt sich das Zeichen in einer Tabelle, wie sie in Fig. ID gezeigt ist, leicht mit herkömmlichen Verfahren mit Hilfe einer Übersetzungsinstruktion finden. In der T^abelle der Fig. ID ist der i-Wert ein Index in der Tabelle, an dem das entsprechende Zeichenbyte entsprechend der im Zusammenhang mit Fig. IC erklärten Beziehung zu finden ist.
Der Ausgang der Ausführungsbeispiele stellt den i-Index als die Decodierung für den eingegebenen Pfadvektor dar, der über eine Telefonleitung oder drahtlos in der in Fig. IE gezeigten Form empfangen werden kann. Die Huffmann-Codes mit unterschiedlicher Länge sind selbstdafinierend in bezug auf ihre Länge, d.h., der im Verfahren der Erfindung decodierende Pfadvektor zeigt automatisch das letzte Bit in einem Pfadvektor an, ohne daß ein die Zeichenlänge definierendes Feld erforderlich ist.
Die durch die Bitreihe T dargestellte binäre Baumstruktur läßt sich leicht mit der links beginnenden Abtastung irgendeiner binären Baumstruktur verändern. Die binäre Baumstruktur kann für die verschiedenen Zeichensätze (d.h. BCD, EBCDIC, ASCII, usw.) verschiedene. Formen haben, aber auch die binäre Baumstruktur kann für denselben Zeichensatz viele verschiedene Formen haben, von denen eine zur Korrelation der Bitzahl im Code für jedes Zeichen zu der Übertragungshäufigkeit eines jeden in einer Datenbasis gefundenen Zeichens benutzt wird, d.h. die Anzahl der gesendeten Bits wird dadurch möglichst klein gehalten, daß man den häufigsten Zeichen
PO 971 060 409820/1088
_ 7 —
Codes mit der kleinsten Bitanzahl zuordnet.
Der Zeichencode mit unterschiedlicher Länge kann leicht ein Paritätsbit (nicht dargestellt) am Ende eines jeden Zeichens unterschiedlicher Länge liefern und eine ungerade Parität würde mindestens eine Pege!umschaltung pro Zeichen für selbsttaktierende Synchronisationszwecke und zur Fehlerprüfung eines jeden empfangenen Pfadvektors sicherstellen. Die Verwendung von Paritätsbits zur Prüfung und Synchronisation ist allgemein bekannt.
Das Ablaufdiagramm der Fig. 2 zeigt die physikalischen Operation nen in einem automatischen Gerät für jeden der GrUridschritte des erfindungsgemäßen Verfahrens. Das Verfahren wird einmal für jedes empfangene Zeichensignal mit veränderlicher Länge im Hüffmann-Code begonnen, welches gemäß obiger Erklärung ein Bitsatz mit unterschiedlicher Länge ist, der einen Pfadvektor in der Darstellung eines bestimmten Zeichensatzes in einem binären Baum enthält. Das Ablaufdiagramm benutzt die empfangenen Pfadvektorbits, um einen Pfad in der Darstellung der links beginnenden Abtastung des binären Baumes in Form der Bitreihe T zu verfolgen. Die Bitreihe T kann physikalisch in einer Vielzahl von verschiedenen Formen dargestellt werden, in der ihre Bits sequentiell vom Anfang der Bitreihe abgetastet werden können, wie z.B. als (1) ein Schieberegister in geschlossener Schleife, (2) ein Satz binärer Selbsthalteschaltungen, (3) ein Kernspeicher, (4) eine Folge mechanischer Schalter,· - (5) ein monolithischer Speieher usw. In der Bitreihe T gibt es mindestens eine Anzahl j von Bitpositionen, von denen jede am Anfang auf den Wert 1 oder ö voreingesteüt wird zur Darstellung der notwendigen;inneren Knoten und der Endknoten des Baumes gemäß obiger Erklärung im Zusammenhang mit den Fign. IA und IB.
Es sind drei Zähler vorgesehen, und zwar der Sprüngzähler C, ein T-Bitfolgezähler j und ein EndknotenzShler i. Hierbei kann es sich um Zählerschaltungen oder um programmierte Zähler handeln. Die Zähler i und j zählen vorwärts, d.h. bei jeder Betätigung wird zu
po 971 O60 409 8 2 0/1088
ihrem Inhalt eine 1 addiert. Der Zähler C ist ein Zweirichtungszähler mit zwei Eingängen, dessen Inhalt je nach dem gelieferten Eingangssignal um eine Einheit erhöht oder vermindert wird.
Das Verfahren untersucht jedes Pfadvektorbit PVB im Pfadvektor PV, beginnend mit dem werthöchsten PVB und der sequentiellen Untersuchung des nächstwertniederen PVB bis zum wertniedersten PVB. Der die Pfadvektoren darstellende Huffmann Code ist selbstdefinierend in bezug auf die Länge eines jedes Pfadvektors, und daher werden keine zusätzlichen Bitpositionen zur Definiton der Länge der Zeichendarstellungen mit veränderlicher Länge benötigt. In einer seriellen Übertragung kann somit das erste PVB eines Pfadvektors unmittelbar dem letzten PVB des vorhergehenden Pfadvektors folgen. Das Übertragungsmedium kann auf Wunsch natürlich zwischen den Zeichen eines oder mehrere Synchronisationsbauds liefern und/oder es kann eine feste Anzahl von Paritätsbits an das Ende eines jeden übertragenen Zeichens angehängt werden.
Die Bitreihe T wird einmal pro Pfadvektor PV abgetastet. Die Abtastung beginnt am ersten T Bit bei j = 0 und endet an dem Bit in T, welches durch den laufenden Pfadvektor bestimmt wird. Dieser kann irgendeinen Wert von j einnehmen, wo T |j| =0 ist, und möglicherweise das J. Bit in T einschließen. Für jedes in T als das laufende PVB untersuchte Bit gibt es im Verfahren eine Unterschleifeniteration. Pro PV können also im Verfahren bis zu J Iterationen auftreten. (Das Ausführungsbeispiel der Decodierung sieht einen Taktunterzyklus für jedes abgetastete Bit im Speicher τ vor).
Das in Fig. 2 gezeigte Verfahren verfolgt im wesentlichen einen Pfad im Baum, der durch die Bitreihe T dargestellt ist, mit jedem laufenden PV.
Um zu verstehen, wie bei der Abtastung des Speichers T die einzelnen Bits im Speicher T ausgewählt werden als Darstellungen der Knoten in dem Pfad, der durch den laufenden PV bestimmt wird, ist das Verständnis des Vorganges wichtig, wie dazwischenliegende,
PO 97X060 409820/1088
keine Pfadknoten des laufenden PV darstellende Bits während der Abtastung im Speicher T übersprungen werden. Ein hierbei angewandtes Prinzip besagt, daß in einem regulären binären Baum, d.h. einem binären Baum, dessen innere Knoten den Grad 2 haben, oder in irgendeinem Unterbaum die Anzahl der Endknoten genau um 1 höher ist als die Anzahl der inneren Knoten. Bei der Darstellung der links beginnenden Ordnung von Endknoten und inneren Knoten durch die Bits im Speicher T stehen alle Bits für jeden Unterbaum zusammenhängend im Speicher T.
Daher kann ein Unterbaum im Speicher T übersprungen werden, während die Bits in diesem Unterbaum sequentiell abgetastet werden, indem ein Zähler C die Anzahl von O-Bits (Enknoten) addiert und die Anzahl von 1-Bits (innere Knoten) subtrahiert, bis nur eine 0 (Endknoten) mehr existiert als 1-Bits vorhanden sind (innere Knoten).
Wenn aber der Vorgänger, eines jeden übersprungenen Unterbaumes in der durch den Zähler C ermittelten·inneren Knoten (d.h. den 1-Bits) enthalten ist, wird die Zahl für die inneren Knoten gleich der Zahl der Endknoten, wenn der gesamte Unterbaum übersprungen wurde. Das geschieht in Fig. 2, wo der Sprungzähler C am Anfang auf 0 gesetzt wird, wenn eine Folge von Bits im Speicher T einläuft, die einen zu überspringenden Unterbaum darstellen. Für jeden inneren Knoten wird der Zähler C um 1 erhöht, einschließlich des Vorgängers (d.h. eines inneren Knotens) des Unterbaumes und C wird für jeden Endknoten (d.h. ein O-Bit) um 1 heruntergesetzt. Wenn der Inhalt des Zählers C den Wert 0 erreicht, ist der, Unterbaum übersprungen worden, und das nächste Bit im Speicher T stellt das Bit für den rechten Nachfolger des Vorgängers des übersprungenen Unterbaumes dar, welches ein Bit in dem rechten Pfad ist, der von dem letzten Bit ausgeht, das einen Knoten im verfolgten Pfad darstellt. Sobald also eine rechte Linie verfolgt wird (d.h. für ein PVB = 1) müssen die im Speicher T dazwischenliegenden linken Unterbaumbits übersprungen werden, um zum nächsten T Bit des verfolgten Pfades zu gelangen.
po 971 060 4 098 20/1088
Das in Fig. 2 gezeigte Decodierverfahren wird am Anfang des Empfanges'eines jeden Pfadvektors PV begonnen und-die Zähler C, i und j alle durch den Schritt 11 in Fig. 2 auf 0 rückgesetzt. Dann wird im Schritt 12 das nächste PVB abgefragt, welches das erste oder höchststellige PVB des laufenden Pfadvektors bei der ersten Ausführung von Schritt 12 im Anschluß an Schritt 11 ist.
Als nächstes wird im Schritt 13 geprüft, ob das laufende PVB eine
0 oder eine 1 ist. Ist es eine 0, muß der im binären Baum verfolgte Pfad die linke Linie des laufenden inneren Knotens wählen. Ist das PVB eine 1, muß von dem laufenden inneren Knoten aus die rechte Linie gewählt werden.
Wenn das PVB 0 ist, folgt der Schritt 14, indem der Zählerinhalt j erhöht wird. Mit dem neuen Wert des Zählers j wird das nächstfolgende Bit T [j] in der Bitreihe T gewählt, welches die Wurzel des linken Unterbaumes des Knotens j-1 darstellt. Im Schritt wird dann der Wert von T j geprüft, und sobald er 0 ist, der Prozeß beendet, weil ein Endknoten erreicht worden ist. Die Iterationen von Schritt 12 erfolgen so lange, solange im Schritt 13 ein PVB mit dem Wert 0 und im Schritt 15 für T [j ] der Wert
1 gefunden wird. Daraufhin wird jedes folgende PVB abgefühlt und im Schritt 13 geprüft.
Sobald im Schritt 13 festgestellt wird, daß das PVB den Wert 1 hat, muß die rechte Linie, die von dem laufenden Knoten ausgeht, gewählt werden, um den geforderten Pfad zu definieren und dann wird die Schleife für das Überspringen des linken Unterbaumes mit dem Schritt 16 gewählt, der das laufende Bit T ^j] prüft. Wenn T [j] =.1 ist, folgt der Schritt 17, in dem der Inhalt des Zählers C erhöht wird, weil es sich bei j um einen inneren Knoten handelt, und im Schritt 20 wird die Zahl j erhöht. Im Schritt 21 wird dann der Inhalt des Zählers C geprüft und in einer Schleife zum Schritt 16 zurückgekehrt, wenn dieser Inhalt von 0 verschieden ist.
Wenn im Schritt 16 jedoch festgestellt wird, daß das Bit T |j j
£09820/1088
PO 971 060
den Wert O hat, folgt der Schritt 18 und der Inhalt des Zählers C wird vermindert, weil es sich bei j um einen Endknoten handelt und es folgt im Schritt 19 die Erhöhung der Endknotenzahl i. Dann wird im Schritt 20 die Zahl j erhöht und im Schritt 21 der laufende Wert des Zählers C geprüft.
Wenn im Schritt 21 im Zähler C der Inhalt 0 vorgefunden wird, ist j die Wurzel des rechten Unterbaumes des Vorganges des über-· sprungenen linken Unterbaumes und es wird der Schritt 15 zur Prüfung des laufenden Wertes T ]jj begonnen.
Sobald das Verfahren beim Schritt 15 ausläuft, entspricht die laufende Zahl i dem durch den empfangenen Pfadvektor PV dargestellten Zeichen. Das entsprechende Zeichen ist der Wert von i für einen dichten Zeichensatz mit einer binären Kollationsfolge für seine Zeichenwerte (wie z.B. ein EBCDIC- oder ASCII-Zeichensatz) . Für Zeichensätze ohne binäre Kollation (wie z.B. der BCD-Zeichensatz) wird eine Umsetzungstabelle benötigt, wie sie in Fig. IC oder ID gezeigt ist.
In- den folgenden Tabellen werden Decodie-rbeispiele gegeben. Im Beispiel 1 wird das in Fig. 2 gezeigte Verfahren schrittweise für einen Eingabevektor (1, 0) durchlaufen. Beispiel 2 ist eine summarische Zusammenfassung, in der jede Zeile eine einzige Iteration des Verfahrens in Fig. 2 für denselben Pfadvektor (PV = 1,0) darstellt, wobei eine Iteration für jedes in- der Bitreihe T untersuchte Bit für jedes PVB erfolgt. Liest man jede Zeile von links nach rechts, so erscheinen nacheinander die Werte der oben in jeder Spalte angegebenen Dinge. Beispiel 3 ist eine zusammengefaßte Darstellung für PV = (1,1,1), den äußersten rechten Weg im Baum der Fig. IA. .
4 09820/1088
PO 971 060
Beispiel 1
(Schrittweise Decodierungen von PV = (1,0)
Nach i j C PVB - τ.
Sehritt(en)
Eingang 0 0 0
11 0 0 0 1
12 & 13 O O O 1
16 0 0 1
17 0 1 1
20 0 1 1 1
21 & 16 0 . 1 2
17 0 2 2
20 O 2 2 O
21 & 16 0 2 1
18 1 2 1
19 1 3 1
20 1 3 1 1
21 & 16 1 3 2 O
17 1 4 2
2O 1 4 2 0
21 & 16 1 4 1
18 2 4 1
19 2 5 1
20 2 5 1 O
21 & 16 2 5 - O
18 3 5 O
19 3 6 0
20 3 6 O
21 3 6 0 1
15 3 6 0
12 & 13 3 7 O
14 3 7 0 O
15
Ausgang 409820/ 1088
PO 971 060
Nach Fig. IB ist für i = 3 das Zeichen H,
Beispiel 2 (Iterationsdecodierung von PV = (1,0)
Eingang
Ausgang
0 1 2 3 4 5 6" 7
PVB
1 1 0
1 . 2 0
0 ι - 1
1 2 1
0 1 2
0 0 3
1 0 3
0 0 3
Da am Ausgang des Verfahrens i Zeichen H in Fig. IB.
= 3 ist, handelt es sich um das
Beispiel 3 (Iterationsdecodierung von PV = (1,1,1)
Eingang
Ausgang
0 1 2 3 4 5 6 7 8 9 10
PVB
Zeichen
1 1 O
1 2 O
O 1 1
1 2 1
O 1 2
O O 3
1 1 3
O O 4
1 1 4
O . O 5
O O 5
Da am Ausgang des Verfahrens i = 5 ist, handelt es sich um das Zeichens in Fig. IB.
PO 971 O6O
0 9 8 2 0/108
Die Schaltungsanordnung empfängt Signale von dem in Fig. 3 gezeigten Datenempfänger, erzeugt Taktsignale, mit.den in Fig. 4 gezeigten Schaltungen zur Betätigung der Pfadvektor-Erkennungsschaltungen in Fig. 5, entsprechend dem Ablaufdiagram in Fig. 2 und die in den Fign. 6A und 6B gezeigten Schaltungen empfangen die Ausgangssignale der in Fig. 5 gezeigten Schaltung und erzeugen elektrische Zeichensignale.
A. Datenempfangsgerät'
Fig. 3 zeigt ein Datemempfangsgerät (oft auch MODEM genannt) handelsüblicher Art zum Empfangen und Verstärken eines Eingangssignales und zur Erzeugung von Synchronisationssignalen aus diesem Eingangssignal, d.h. eines Signales ZEICHENSTART, eines Bitsynchronisationssignales und eines zweipegeligen Zeichensignales, wie es durch die Impulszüge in Fig. IE dargestellt ist. Für den in Fig. gezeigten MODEM ist auch als Eingangssignal das Signal AUSGANG vorgesehen, welches am Ende eines jeden empfangenen Zeichens durch die in Fig. 5 gezeigte Erkennungsschaltung erzeugt wird. Durch den MODEM kann es dazu benutzt werden, das Ende eines jeden eingegebenen Zeichens und den Anfang des nächsten Zeichens durch Erzeugung des Zeichenstartsignales zu bestimmen. Die Ausgabeleitungen vom MODEM sind mit den Namen beschriftet, die in Fig. 4 und 5 dafür benutzt werden.
B. Taktgeber
Die grundlegenden Taktbeziehungen sind durch die Taktimpulse in Fig. 2 als geklammerte Gruppen von Schritten dargestellt und durch das Zeichen φ identifiziert, dem zwei durch einen Dezimalpunkt voneinander getrennte Zahlen folgen. Die Zahl links vom Dezimalpunkt bezeichnet den Takt, der den Impuls erzeugt und die Zahl rechts vom Dezimalpunkt die durch einen gegebenen Takt gelieferte Folge von Impulsen. Der Schritt 11 wird z.B. während des Taktimpulses cO.l ausgeführt, die Schritte 12 und 13 während des Taktimpulses cl.l, der Schritt 14 während des Taktimpulses el.2, der Schritt 15 oder 16 während des Taktimpulses c2.1, die Schritte, 17, 18, 19 und 20 während des Taktimpulses c3.1 und der Schritt 21 oder der Ausgang
po 971 060 4 0 3 8 2 0/ 1088
während des Taktimpulses c3o2»
Fig. 4 zeigt eine Taktgeberschaltung, die die Taktimpulse zur Steuerung der in Fig, 5 gezeigten Schaltungsanordnung zur Durchführung des Verfahrens nach Fig. 2 liefern kann. Es ist ein frei schwingender Oszillator OSZ mit einer Impulsfrequenz-vorgesehen, die es ermöglicht,, daß vier miteinander verbundene Taktgeber 0, I, 2 und 3 einen Satz von 10 Impulsen (d.h. cO.l bis c3.3) während der Untersuchungsperiode eines ,T-Bit im Speicher 70 erzeugen. Da eine Anzahl J von T-Bits vorhanden ist, muß die Impulsfrequenz des Oszillators die Zahl J multipliziert mit den 10 Taktimpulsen und multipliziert mit der übertragungsgeschwindigkeit, gemessen in Bits pro Sekunde, d.h. 1OJ χ Übertragungsgeschwindigkeit übersteigen. Wenn T z.B. 127 Bits hat, die einen Satz von 64 Zeichen darstellen, dann überschreitet die Impulsfrequenz 1270 Impulse pro EingabeZeichenbit (PVB). Mit den heute verfügbaren Hochgeschwindigkeitsschaltungen, deren Schaltgeschwindigkeiten im Bereich von Mikro- und Nanosekunden liegen, stellt das keine Schwierigkeit dar.
In Fig. 4 igt eine Selbsthalteschaltung 29 vorgesehen, die durch das Signal EINGANG jedes Zeichenstartsignals des MODEMS jedesmal gesetzt wird, wenn das Verfahren zur Decodierung eines Pfadvektors angefangen wird. Die Selbsthalteschaltung '29 wird rückgesetzt, wenn die Ausführung des Verfahrens am Ende jedes Eingabezeichens abgeschlossen ist. Dieser Vorgang wird durch das Signal AUSGANG (Fig. 5) angezeigt, mit dem auch die Startbedingung für das nächste eingegebene Zeichen gegeben werden kann. Die Ausgangsleitung der Selbsthalteschaltung 29 mit der Beschriftung AUSFÜHREN wird somit während der Decodierzeit eines jeden PV erregt.
In Fig. 4 sind die vier zusammengefaßten Taktgeberschaltungen mit Taktgeber 0, Taktgeber !,Taktgeber 2 und Taktgeber 3 bezeichnet. Jede Taktgeberschaltung kann konventionell aufgebaut sein und jeweils einen Ausgangsimpuls zu einem gegebenen Zeitpunkt liefern.
po 971 060 4098 20/1088
Jede dieser Taktgeberschaltungen hat einen Rückstelleingang R, der bei Erregung die entsprechende Taktgeberschaltung an den Anfang ihres Zyklus bringt und dadurch den in Fig. 4 am weitesten links dargestellten Ausgangsimpuls benötigt. Jede Taktgeberschaltung wird durch Impulse des Oszillator OSZ gesteuert, die das entsprechende UND-Glied 30, 31, 32 oder 33 durchlaufen. Jede Taktgeberschaltung gibt ihre Ausgangsimpulse nacheinander ab, in Fig. 4 von links nach rechts. Somit empfängt der Taktgeber O Oszillatorimpulse, wenn die Steuerselbsthaiteschaltung 29 gesetzt ist. Nachdem der Taktgeber 20 rückgestellt ist, wird der Impuls cO.l während des ersten Oszillatorimpulses, der das UND-Glied 30 durchläuft, geliefert. Der nächste und jeder folgende das UND-Glied 30 durchlaufende Oszillatorimpuls aktiviert den nächsten Ausgang cO.2 des Taktgebers O, bis sein Rückstelleingang R wieder erregt wird (d.h. durch den nächsten PVB-Synchronisationsimpuls). Dann wird wieder für die Dauer eines einzelnen Oszillatorimpulses der Ausgangsimpuls cO.l geliefert, auf den der Ausgangsimpuls cO.2 während des nächsten und der folgenden Oszillatorimpulse folgt, bis der Taktgeber 0 wieder rückgestellt wird.
Das UND-Glied 31 für den Taktgeber 1 wird durch das Potential des Ausgangs cO.2 des Taktgebers 0 und das des Ausgangs.t der Steuerselbsthalteschaltung der Oszillatorimpulse vorbereitet. Nach der Rückstellung liefert der Taktgeber beim ersten Oszillatorimpuls den Impuls cl.l, auf den beim nächsten Oszillatorimpuls der Ausgangsimpuls el.2 folgt, und diesem folgt dann der Ausgangsimpuls el.3, beim nächsten und allen danach empfangenden Oszillatorimpulsen, bis der Taktgeber 1 rückgestellt wird, woraufhin sich der ganze Vorgang wiederholt.
Das durch das Ausgangssignal el.3 des Taktgebers 1 und durch das Ausgangssignal der gesetzten Steuerselbsthalteschaltung 29 vorbereitete UND-Glied 32 führt Oszillatorimpulse dem Taktgeber 2 zu, der im übrigen genauso aufgebaut ist wie der Taktgeber 0 und nach der Rückstellung die Ausgangssignale c2.1 und c2.2 liefert, wobei das Ausgangssignal c2.2 bis zur nächsten Rückstellung erregt bleibt,
409820/1088
PO 971 O6O
In ähnlicher Weise wird das UND-Glied 33 durch das Ausgangssignal ' c2.2 des Taktgebers 2 und das Ausgangssignal der gesetzten Steuerselbsthalteschaltung 29 vorbereitet und leitet Oszillatorimpulse an den Taktgeber 3 weiter, der genauso konstruiert ist wie der Taktgeber 0, jedoch wird sein letzter Ausgangsimpuls dem Rückstelleingang R des Taktgebers 3 zugeleitet. Dadurch wird der Taktgeber 3 am Ende eines jeden Zyklus rückgestellt und beginnt direkt seinen nächsten Zyklus beim nächsten Oszillatorimpuls nach dem Impuls c3.3, so daß der Taktgeber 3 kontinuierlich nach :je drei aufeinanderfolgenden Oszillatorimpulsen einen Zyklus beginnt, solange das UND-Glied 33 durchlässig ist.
Die Taktgeberschaltungen in Fig» 4 sind so angeordnet, daß sie in die beiden Rückwärtsbeziehungen steuern, die in Fig. 2 für die beiden Unterschleifen vorgesehen sind, von denen eine vom Schritt 15 wieder einen Schritt 12 und die andere vom Schritt 21 wieder zum Schritt 16 hinführt. Aus Fig. 2 ist zu ersehen, daß für das Eintreten in den Schritt 12 das Rückkehren' zum Taktimpuls cl.l erforderlich ist, um den erneuten Durchlauf des Taktgebers dort zu beginnen. Diese Rückkehr wird erreicht durch ein Ausgangssignal· des UND-Gliedes 41 in Fig. 4, das nur die Taktgeber 1, 2 und 3 rückstellt,, indem das Ausgangs signal durch die ODER-Glieder 36 und 37 an die Rückstelleingänge R geleitet wird. (Das Ausgangssignal des UND-Gliedes 41 wird nicht an den Rückstelleingang des Taktgebers 0 angelegt und somit wird dieser dann nicht rückgestellt und hält sein Ausgangssignal cO.2 bei, das das UND-Glied 31 weiter vorbereitet. Nach der Rückstellung des UND-Gliedes 41 beginnt der Taktgeber also seine Impulsfolge mit cl.l beim nächsten, das UND-Glied 31 durchlaufenden Oszillatorimpuls).
Die andere Schlelfenbedingung erhält man durch ein Ausgangssignal eines UND-Gliedes 43, welches nur die Taktgeber 2 und 3 rückstellt, um die Taktimpulsfolge mit c2.1 beim Auftreten des nächsten Oszillatorimpulses zu beginnen. Zu diesem Zweck wird das Ausgangssignal des UND-Gliedes nur dem ODER-Glied 37 zugeleitet, welches den Rückstelleingang R nur den Taktgeber 2 und 3
PO 97i 060 409820/ 1088
erregt. (Der Taktgeber 1 wird nicht rückgestellt und behält sein Ausgangssignal el.3 zur Vorbereitung des UND-Gliedes 32 bei, so daß das Ausgangssignal c2.1 des Taktgebers 2 nach der Rückstellung der Taktgeber 2 und 3 als nächstes erscheint.
Die Eingangsleitungen der UND-Glieder 41 und 43 sind in Fig. 4 so beschriftet, daß sie sowohl die Namen der in Fig. 5 erzeugten elektrischen Signale als auch die in Fig. 2 geforderten Verfahrensbedingungen wiedergeben. D.h. die Eingangsbedingung für die UND-Glieder 41 und 43 sind direkt aus den Ab lauf diagr aminen in Fig. 2 zu ersehen. Daraus geht hervor, daß das UND-Glied 41 für die Bedingungen im Schritt 15 durchgeschaltet wird, gleichgültig, ob man vom Schritt IA oder vom Schritt 21 dorthin gelangt. In jedem Fall muß das Bit T [j] den Wert 1 und der Zähler C den Wert 0 aufweisen, und diese Bedingungen müssen erfüllt sein entweder zur Taktzeit c2.1 oder zur Zeit c3.2.
Die Eingangsbedingungen für das UND-Glied 43 gehen ebenfalls aus Fig. 2 hervor, da die Rückverzweigung vom Schritt 21 zum Schritt 16 nur erfolgt, wenn der rechte Pfad gewählt wurde (d.h. das RST-Sign-al zeigt das an) , der Inhalt des Zählers C von 0 verschieden ist und der Taktimpuls c3.2 vorhanden ist.
Fig. 5 zeigt die booleschen Schaltungen, die die Taktsignale zum Decodieren der Eingabezeichensignale (d.h. Pfadvektoren) benutzen. Eine PVB-Selbsthalteschaltung 50 wird auf den Pegel des laufenden PVB-Eingangssignales eingestellt und liefert zwei komplementäre Ausgangssignale, die als reguläres (t) und als komplementäres (c) Ausgangssignal identifiziert sind. Das Eingangssignal für die Selbsthalteschaltung 50 kommt vom UND-Glied 51, welches das PVB-Eingangssignal vom in Fig. 3 gezeigten MODEM und das Taktsignal cl.l empfängt. Die Ausgänge t und c der Selbsthalteschaltung 50 werden also entgegengesetzt auf hohe und niedrige Spannungspegel gebracht, abhängig davon, ob der PVB-Eingangspegel eine 1 oder 0 ist. Eines der UND-Glieder 52 oder 53 wird durch das t-Signal oder das c-Signal durchgeschaltet, wenn sie durch ein
po 971 060 4098 20/1088
Signal von der Steuerselbsthalteschaltung 29 auf der Ausgabeleitung AUSFÜHREN vorbereitet sind. Eines der UND-Glieder 52 oder 53 liefert also ein Ausgangssignal, bis der Ausgang aus dem Verfahren erreicht und damit das Signal auf der Leitung AUSFÜHREN entfällt. Vom UND-Glied 52 wird ein LST-Signal (linker Zustand) geliefert, wenn dieses UND-Glied durch das Signal auf der Leitung t vorbereitet ist. Das UND-Glied 53 liefert ein RST-Signal (rechter Zustand), wenn es durch ein Signal auf der Leitung c vorbereitet ist.
Zur Erzeugung der Zahlen j, i unc C sind drei elektronische Zähler 56, 57 und 58 vorgesehen, die alle zur Taktzeit cO.l rückgestellt werden.
Der Zähler j wird durch das Ausgangssignal entweder des durch das LST-Signal und das Taktsignal el.1 im.Schritt 14 durchgeschalteten Schaltgliedes 61 oder durch das Ausgangssignal des im Schritt durch das RST-Signal und das Taktsignal c3.1 durchgeschalteten Schaltgliedes 62 erhöht.
Der Inhalt des Zählers 57 wird erhöht durch das Schaltglied 63 zur Taktzeit c3.1, das RST-Signal und ein Signal T |"j"| = 0, welches von der Binärselbsthalteschaltung 73 im Schritt 19 geliefert wird.
Der Inhalt des Zählers 58 wird durch dasselbe Signal des Schaltgliedes 63 im Schritt 18 vermindert. Außerdem wird der Inhalt des Zählers C erhöht durch ein Signal von einem Schaltglied 65, wenn dieses durch das entgegengesetzte Ausgangssignal T j = 1 der Selbsthalteschaltung 73 und das RST-Signal des Schaltgliedes 53 zur Taktzeit c3.1 im Schritt 17 betätigt wird.
Ein ODER-Glied 67 empfängt Ausgangssignale von allen Stufen des Zählers C, um festzustellen, ob sie alle 0 sind, und erregt dann seine Leitung t mit einem Ausgangssignal C=O. Wenn der Inhalt einer Zählerstufe von 0 verschieden ist, erregt das ODER-Glied seine Leitung c für das komplementäre Ausgangssignal C / 0 im Schritt 21.
po 971 060 409 820/1088
Das Schaltglied 66 leitet das Ausgangssignal des i-Zählers 57 weiter, wenn es durch ein Signal auf der Ausgangsleitung entweder des UND-Gliedes 74 oder des UND-Gliedes 75 durchgeschaltet wird, das den Abschluß der Decodierung für jedes empfangene Zeichen anzeigt.
Ein Speicher 70 für die T-Bitfolge speichert eine Bitreihe, die eine linksgerichtete Abtastung eines binären Baumes darstellt. Der Speicher 70 wird geladen, bevor eine PVB-Eingabe in die in Fig. 5 gezeigte Schaltung erfolgt. Die vorhergehende Ladeoperation kann manuell durch Betätigung entsprechender Schalter erfolgen, die jede Bitposition im Speicher 7O umfassen (d.h. ein manueller Schalter pro Bit). Der Speicher mit manuellen Schaltern arbeitet zufriedenstellend, wenn die Zeichensatzattribute nicht zu häufig gewechselt werden. (Bei Verwendung allgemeiner Telegraphiegeräte ' werden die verwendeten Zeichensatzattribute beispielsweise kaum jemals geändert). Der Speicher 70 kann aber auch jeder elektronisch ladbare Speicher sein wie ein Register, ein Schieberegister, ein Kernspeicher, monolithische Schaltungen usw., die allgemein bekannt sind. Wenn die Zeichensatzattribute häufig verändert werden, wird der elektronisch ladbare Speicher bevorzugt und die Bitreihe wird in den Speicher 70 über die Eingangsleitung 76 geladen.
Der Speicher 70 für die T-Bitfolge wird durch die Ausgangssignale des Zählers 56 adressiert, der ein bestimmtes am Index j gespeichertes Bit adressiert. Der ausgewählte Bitwert T fj [ wird einem UND-Glied 71 zugeführt, welches durch das Ausgangssignal des ODER-Gliedes 72 entweder zur Taktzeit el.2 oder c3.1 durchgeschaltet wird, um die T Qj] -Binärselbsthalteschaltung 73 in einen Zustand zu schalten, der direkt dem Wert des dann im Speicher 70 durch den Zähler 56 adressierten Bits entspricht. Somit wird das UND-Glied 71 gleichzeitig (el.2 oder c3.1) mit der Aktivierung des Index j (Zähler 56) und des Bit T Jjj'[ (Speicher 70) durchgeschaltet, Am Ende des entsprechenden Taktimpulses befindet sich demzufolge die Selbsthalteschaltung 73 im richtigen Zustand, und das reicht
po 971 060 409820/1088
aus, da das Ausgangssignal der Selbsthalteschaltung 73 erst in der nächsten Taktperiode c2.1 bzw. 3.2 verwendet wird.
Die komplementären Ausgänge t und c der Selbsthalteschaltung sind mit Leitungen verbunden, die mit Tj=I und Tj=O bezeichnet sind. Das Ausgangssignal T £jj = 0 und das Signal C=O des ODER-Gliedes 67 werden den UND-Gliedern 74 und 75 als Voraussetzungen zur Erkennung der Ausgangs-Bedingung am Ende der Erkennung eines Zeichens zugeführt. Das UND-Glied 74 empfängt außerdem das LST-Signal und das Taktsignal c2.1 zur Erzeugung eines Ausgangssignales beim Eingang in den Schritt 15 vom Schritt 14. Das UND-Glied 75 empfängt außerdem das RST-Signal und das Taktsignal c3.2 zur Erzeugung eines Ausgangssignales beim Eingang in den Schritt 15 vom Schritt 21.
Ein Hauptvorteil der vorliegenden Erfindung gegenüber herkömmlichen Decodiersystemen liegt in der Anpassungsfähigkeit und der Leichtigkeit, mit der die Darstellung des Decodierbaumes im Speicher T so verändert werden kann, daß sie einer Änderung in den übertragenen Codes so entspricht, daß die Decodierung entsprechend verändert werden kann. Die Codes können z.B. so geändert werden, daß sie eine andere Beziehung zwischen den Codes unterschiedlicher Länge und den Zeichen in einem Ausgabezeichensatz wiedergeben, der gedruckt wird. Mit diesen Codeänderungen kann entweder der Wirkungsgrad des ubertragungsprozesses verbessert werden, indem man die Anzahl gesendeter Bits auf bekannte Weise, bei der die am häufigsten gesendeten Zeichen die kleinste Anzahl von Bits in. ihren Codes haben und umgekehrt die am seltensten benutzten Zeichen die größte Anzahl von Bits haben» möglichst klein hält. Solche Häufigkeitsrelationen können von der jeweils übertragenen Datenbasis abhängig gemacht werden, da ein bestimmtes Zeichen (z.B. "s") in der einen Datenbasis sehr häufig, in der anderen aber seltener übertragen werden kann.
Außerdem kann eine feste Sendezeichencodierung so ausgelegt werden, daß sie verschiedenen ausgedruckten Zeichensätzen ent-
po 971 060 A0-.9820/ 10SS
spricht. Dieses Schema findet sich z.B. allgemein bei der IBM/ Selectric Schreibmaschine mit einer IBM 2741-Datenstation, wenn die Kugelköpfe für die verschiedenen Zeichensätze ausgewechselt werden, obwohl sich die an die Datenstation übertragenen Bytecodes nicht ändern. Die in den Fign. 6A, B und C gezeiten Ausführungsbeispiele geben verschiedene Arten der Ausgabedecodierung wieder. In den Fign. 6A, B und C ist eine bestimmte Binärbaum-Netzwerkdecodierung gezeigt,
Fig. 5A zeigt eine Schaltungsanordnung, die eine Form eines binären Baumes im Speicher T decodieren kann, dessen Endknoten irgendwelchen Bitpositionen j entsprechen. Dadurch können verschiedene binäre Bäume in den Speicher T geladen und ohne Schaltung sänderung, ausgenommen eine Rückstellung der Bitposition im Speicher T, für das System verwendet werden. D.h., die Endknoten eines anderen binären Baumes stehen an anderen j-Indizes im Speicher T, bestimmt nach der links beginnenden Abtastung des entsprechenden binären Baumes.
In Fig. 5A liefert das Ausgangssignal des i-Zählers 57 in Fig. ein codiertes Endknoten-Ausgangssignal, wenn während einer Abfrage des Speichers T die Endknoten-Bitposition für einen Pfadvektor abgefühlt wird. Eine Decodiematrix 97 empfängt und decodiert das i-Äusgangssignal auf einer ihrer Ausgabeleitungen bis 110, die entsprechende Zeicheneingabesignale an einen Drucker für die entsprechenden Zeichendruckoperationen liefern können. Die Schaltung 97 kann konventioneller Art sein und hat I + 1 Ausgabeleitungen. Nur eine der durch die Matrix 97 erregten Leitungen 100 bis 110 für die deeodierte Ausgabe liefert das Zeichenausgabesignal an den Drucker zur Darstellung des laufenden Pfadvektors. Somit entspricht die gewählte Äusgabeleitung dem Endzweig-Index für das letzte ausgewählte Endzweigbit in dem Bitfolgespeicher T in Fig. 5 als Ergebnis einer Pfadvektordecodierung.
Die Schaltungsanordnung nach den Fign. 4, 5 und 5A mit einem po 971 060 409820/1088
Speicher T, der J + 1 Bitpositionen hat, paßt für binäre Bäume mit bis zu J + 1 Knoten einschließlich J/2 Endknoten und für Drucker mit bis zu ZJ2 Zeichen in ihren Zeichensatz.
Sobald also die Ergebnisse einer links beginnenden Abtastung eines binären Baumes in den Speicher T eingegeben werden, werden die Indizes für die Endknoten im Speicher T durch die Matrixschaltung 97 in Fig. 5A dynamisch dadurch gewählt", daß die elektronische Version der allgemein bekannten Matrixschaltung verwendet wird.
Im Zusammenhang mit Fig. 5 wurde bereits erklärt, wie die am Ausgang des Verfahrens Vorhände Zahl j dazu verwendet werden kann, das als PV gesendete benötigte Zeichen zu erhalten. Fig. 6A und 6B zeigen Schaltungen für dieselben Zeichenwahloperationen. Fig. 6A enthält einen Baum, der mit der in Fig. IA gezeigten Konfiguration identisch ist. Außerdem enthält Fig. 6A einen Schalter in jedem Knotenpunkt. Die Stellung des Schalters ist durch, ein seiner Relaisspule zugeführfees Signal veränderlich. Die Signale für die Relaisspulen werden durch die Ausgänge in Fig. 6B mit denselben Beschriftungen A, B, D, G oder I geliefert. Sobald ein Schalter in Fig. 6A durch ein Signal von der Schaltung in Fig. 6B eingeschaltet ist, wird die Schalterstellung danach beibehalten, bis der Schalter durch ein nächstes Signal rückgestellt wird.
Wenn für ein gegebenes Zeichen alle Schalter geschaltet sind, ist · ein elektrischer Schaltkreis von einer elektrischen Signaleingangsquelle (+ Pol) hergestellt zum Schalter im Wurzelknotenpunkt A zu.einem der Endknotenpunkte C, E, F, H, J oder K. Mit diesem-Schaltkreis kann ein elektrischer Drucker oder eine Schreibmaschine entsprechend getrieben werden, indem man ihre Endknotenpunkte als Eingänge zum Drucker anschließt.
In Fig. 6B empfängt ein Schaltglied 91 die Ausgangssignale j vom Zähler 56 in Fig. 5, wählt die jeweiligen Ausgangssignale j (ausgenommen für j = 0) aus, die die durch jeden Pfadvektor bestimmten Knoten (ausgenommen Knoten A) darstellen, und leitet jedes gewählte
Ρ0971οβΟ 409820/1088
Ausgangssignal j einer Decodierschaltung 9 2 zu. Der Wurzelknoten A ist ein Sonderfall, der immer gewählt ist. Er wird durch das UND-Glied 85 decodiert, die das PVB-Eingangssignal und das Signal cO.l empfängt, welches nur geliefert wird, wenn j = 0 ist. Somit wird das Α-Signal vom UND-Glied 85 nur zur Taktzeit cO.l geliefert, wenn das PVB-Eingangssignal dann den Eins-Pegel aufweist, wodurch die Spule für den Schalter A in Fig. 6A erregt und dieser nach rechts bewegt wird. Wenn das PVB-Eingangssignal den Null-Pegel aufweist, bleibt der Schalter A in seiner linken Stellung, weil seine Spule nicht erregt wird. Das Schaltglied 91 wählt die von verschiedenen j-Zahlen aus durch Feststellen der j-Zahl, die bei der Rückkehr von Schritt 15 zum Schritt 12 vorhanden ist, was durch Erregung der Ausgangsleitung 82 des UND-Gliedes 41 in Fig. 4 während der Taktzeit c2.1 angezeigt wird. Die Leitung 82 des UND-Gliedes 41 wird nur für innere Knoten erregt, da das UND-Glied 41 durch ein Signal auf der Leitung T [jj =1 vorbereitet wird.
Die von 0 verschiedenen ausgewählten j-Signale werden von einer Decodierschaltung 92 empfangen, die die gewählte j-Zahl entsprechend der Tabelle in Fig. 6C zur Erregung des entsprechenden Signales B, D, G oder I decodiert. Bei der Schaltung 92 handelt es sich um eine Decodiermatrix bekannter Form, die eines ihrer vier Ausgangsschaltglieder 86 bis 89 betätigt zur Darstellung eines gewählten inneren Knotens B...I, die durch die gewählte Zahl j bestimmt wird. Die UND-Glieder, 86, 87, 88 und 89 werden alle durch das PVB-Eingangssignal durchgeschaltet. Das gewählte UND-Glied 86 bis 89 liefert nur ein Ausgangssignal, wenn das laufende PVB-Signal den Eins-Pegel aufweist und dann die angeschlossene Spule in Fig. 6A erregt. Der entsprechende Schalter in Fig. 6A bleibt demzufolge in seiner linken Position, wenn das laufende PVB-Eingangssignal den Null-Pegel aufweist.
Die vorliegende Erfindung kann also zur Decodierung von Pfadvektoren und zur Auswahl entsprechender Ausgabezeichen auf vielerlei Weise verwendet werden.
po 971 060 409820/1088

Claims (9)

PAT ENTAN S P RÜCHE
1. Verfahren zur Decodierung übertragener, ihre Länge selbstdefinierender codierter Signale, die entsprechend den Pfadvektoren in einem binären Baum codiert sind, der einen Satz zu übertragender Zeichen darstellt, gekennzeichnet durch folgende Verfahrensschritte:
a) anfängliches Setzen der Bitspeicherelemente eines Bitfolgespeichers zur Darstellung der Ergebnisse einer links beginnenden Abtastung der'Knoten des binären Baumes, wobei in jeder Bitstelle entweder der Binärwert Null zur Darstellung eines Endknotens oder der Binärwert Eins zur Darstellung eines inneren Knotens gespeichert wird,
b) Abtasten des Bitfolgespeichers von der Bitstelle aus, in der das erste Ergebnis der links beginnenden Abtastung gespeichert wurde, um eine Bitstelle festzustellen, die einem Endknoten entspricht, der durch die eingegebenen codierten Pfadvektorsignale bestimmt wird.
2. Verfahren nach Anspruch 1, gekennzeichnet durch die folgenden weiteren Verfahrenssehritte:
c) Zählen der Bitstellen, die Endknoten bezeichnen, von Beginn jeder Abtastung an, um eine Endknoten-Indexzählung zu gewinnen, und
d) Ausgeben der Endpunkt-Indexzählung bei Feststellen einer Bitstelle als dem Ende eines codierten Pfadvektors, wobei die. Codes leicht änderbar sind durch Ändern des Setzens der Bitspeicherelemente des Bitfolgespeichers.
3. Verfahren nach den Ansprüchen 1 und 2, gekennzeichnet durch folgende weitere Verfahrensschritte:
Decodieren des im Schritt d) erhaltenen Ausgangssignais in ein Signal auf einer Ausgangsleitung, die mit dem Eingang eines elektrischen Druckers verbunden ist.
4 0 9 8 2 0/1088
PO 971 060
Verfahren zur Decodierung übertragener, ihre Länge selbstdefinierender codierter Signale, die entsprechend den Pfadvektoren in einem binären Baum codiert sind, der einen Satz zu übertragender Zeichen darstellt, gekennzeichnet durch folgende Verfahrensschritte:
a) anfängliches Setzen der Bitspeicherelemente eines Bitfolgespeichers zur Darstellung der Ergebnisse einer links beginnenden Abtastung der Knoten des binären Baumes, wobei in jeder Bitstelle entweder der Binärwert Null zur Darstellung eines Endknotens oder der Binärwert Eins zur Darstellung eines inneren Knotens gespeichert wird,
b) Rücksetzen eines Bitreihenzählers, eines Endknotenzählers und eines Stufenzählers auf den Ausgangswert Null,
c) Abfühlen des Binärzustandes jedes laufenden Bits in einem laufenden Pfadvektor, der decodiert wird, wobei der Binärzustand die Auswahl eines linken oder eines rechten Pfades in dem Binärbaum angibt,
d) Prüfen des Zustandes der laufenden Bitstelle in dem Bitfolgespeicher, entsprechend dem den rechten Pfad bezeichnenden Zustand des laufenden Bits,
e) Erhöhen des Stufenzählerinhaltes um den Wert 1, wenn die Zustandsprüfung des laufenden Bits einen inneren Knoten anzeigt, jedoch Erniedrigen des Stufenzählerinhaltes um den Wert 1 und Erhöhen des Inhaltes des Endknotenzählers um 1, wenn der Zustand des laufenden Bits einen Endknoten anzeigt,
f) Erhöhen des Inhaltes des zur Adressierung der nächsten Bitstelle in dem Bitfolgespeicher dienenden Bitstellenzähler und Rückkehr zu dem Prüfschritt, wenn der Inhalt des Stufenzählers von Null verschieden ist,
g) Prüfen des Zustandes der nächsten Bitstelle im Bitfolgespeicher entsprechend den den linken Pfad anzeigenden Zustand des laufenden Bits,
h) Eingabe eines weiteren Bits des laufenden Pfadvektors ent-
PO971O6° 409820/1088
sprechend dem einen inneren Knoten anzeigenden Zustand des laufenden Bits und
i) Beenden des Verfahrens für den laufenden Pfadvektor, wenn der Zustand des laufenden Bits einen Endknoten anzeigt und der Inhalt des Stufenzählers Null ist.
5. Verfahren zur Decodierung von übertragenen Signalen, die aus den Bits eines Pfadvektors, eines binären Baumes bes'tehen, gekennzeichnet durch folgende Verfahrensschritte:
a) anfängliches Setzen einer Folge von Bitspeicherstellen eines Bitfolgespeichers zur Darstellung der Ergebnisse einer links beginnenden Abtastung von Knoten eines binären Baumes, wobei jede Bitspeicherstelle einen beim Abtasten angetroffenen inneren Knoten oder einen Endknoten bezeichnet,
b) Feststellen des Binärzustandes jedes Bits des Pfadvektors, der gerade decodiert wird, welcher Zustand das Wählen eines linken oder eines rechten Pfades von einem inneren Knoten des binären Baumes aus anzeigt,
c) nacheinander erfolgendes Abfühlen der Bitspeicherstellen des Bitfolgespeichers von seinem Anfang an entsprechend jedem Pfadvektor,
d) übergehen zur Abführung der nächsten Bitspeicherstelle, wenn das Bit des laufenden Pfadvektors einen linken Zustand anzeigt und die gerade abgefühlte Bitspeicherstelle auf einen inneren Knoten verweist, jedoch
e) Erhöhen des Ergebnisses einer Zählung jeder abgefühlten Bitspeicherstelle, die einen inneren Knoten des binären Baumes bezeichnet, wenn das laufende Pfadvektorbit einen Rechtspfad anzeigt, aber Erniedrigen des Zählerinhaltes für jede abgefühlte Bitspeicherstelle, die einen Endknoten bezeichnet, wobei die laufende Bitspeicherstelle keinen Pfadknoten"darstellt, wenn der Zählerinhalt nicht auf seinen Anfangswert gebracht wurde, aber einen Pfadknoten bezeichnet, wenn der Zählerinhalt seinen Anfangswert besitzt und die laufende Bitspeicherstelle einen
po 971 060 40-9-8-20/1088
inneren Knoten bezeichnet,
f) Erzeugen eines Signales, das nächste Pfadvektorbit des laufenden Pfadvektors zu liefern, wenn das laufende Bit einem inneren Knoten entspricht und Beenden des Verfahrens für den laufenden Pfadvektor, wenn die abgefühlte laufende Bitspeicherstelle einen Endknoten anzeigt und der Zähler seinen Anfangswert aufweist.
6. Anordnung zur Durchführung des Verfahrens nach den Ansprüchen 1 bis 5, gekennzeichnet durch
a) einen Bitfolgespeicher (70, Fig. 5), dessen Bitspeicherelemente anfänglich entsprechend dem Ergebnis einer links beginnenden Abtastung der Knoten eines binären Baumes in den elektronisch abfragbaren Null- oder Eins-Zustand gebracht werden, je nach dem, ob beim Abtasten ein Endknoten oder ein innerer Knoten angetroffen wurde, und
b) eine Abtastvorrichtung zur Abtastung des Bitfolgespeichers von einer Bitspeicherstelle aus, an der das erste Ergebnis der links beginnenden Abtastung gespeichert ist, um eine Bitspeicherstelle festzustellen, die einen Endknoten bezeichnet und durch die eingegebenen Pfadvektorsignale bestimmt ist.
7. Anordnung nach Anspruch 6, gekennzeichnet durch einen Zähler (57, Fig. 5), zur Zählung der Bitspeicherstellen in dem Bitfolgespeicher, die den bei jeder Abtastung festgestellten Endknoten entsprechen.
8. Anordnung nach den Ansprüchen 6 und 7, gekennzeichnet durch eine Matrix (97, Fig. 5A) zur Decodierung des Ausgangssignals des Endknotenzählers in ein Signal auf einer Ausgangsleitung, die an einen Eingang eines Druckers führt.
PO 971 060 ^09820/1088
9. Anordnung zur Decodierung übertragener Pfadvektorsignale, die entsprechend den Pfadvektoren in einem binären Baum codiert sind, der einön Satz zu übertragender Zeichen darstellt,
gekennzeichnet durch
a) einen Speicher (70, Fig. 5) zur Speicherung einer Bitfolge, deren jedes gespeicherte Bit einen bei einer links beginnenden Abtastung eines binären Baumes angetroffenen Knoten entspricht, der entweder ein Endknoten oder ein innerer Knoten ist,
b) eine Vorrichtung (50, 52, 53) zur Feststellung eines auf einen rechten oder einen, linken Pfad hinweisenden Zustandes eines jeden empfangenen Pfadvektorbits eines laufenden, gerade decodiert werdenden Pfadvektors,
c) einen ersten Zähler (56) zur nacheinander erfolgenden Adressierung jedes gespeicherten Bits, der zu Beginn der Decodierung jedes Pfadvektors das erste gespeicherte Bit des binären Baumes adressiert,
d) eine Vorrichtung (UND-Glied 71, Selbsthalteschaltung 73) zur Feststellung des einen Endknotens oder einen inneren Knoten darstellenden Zustandes des gerade adressierten Bits und eine Vorrichtung (UND-Glieder 61, 62) zur anschließenden Erhöhung des Inhaltes der Adressiervorrichtung,
e) einen zweiten Zähler (58), dessen Inhalt nach Feststellen eines einem rechten Pfad entsprechenden Zu-
, Standes erniedrigt oder erhöht wird, je nach dem, ob der Zustand einem inneren Knoten oder einem Endknoten entspricht,
f) eine Vorrichtung, die der Vorrichtung zur Feststellung des Zustandes des nächsten Pfadvektorbits signalisiert, wenn der zweite Zähler seinen Anfangswert aufweist und das gerade adressierte Bit einem inneren Knoten entspricht, und
g) eine Vorrichtung (UND-Glieder 74,-75) zur Beendigung der
PO 971 060 409820/1088
- 3O
Verarbeitung des laufenden Pfadvektors, wenn der zweite Zähler seinen Anfangswert aufweist und das gerade adressierte Bit einem Endknoten entspricht.'
PO 971 060 4098 20/1088
DE19732355786 1972-11-10 1973-11-08 Verfahren und anordnung zur decodierung von codes mit minimaler redundanz Pending DE2355786A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US00305631A US3835467A (en) 1972-11-10 1972-11-10 Minimal redundancy decoding method and means

Publications (1)

Publication Number Publication Date
DE2355786A1 true DE2355786A1 (de) 1974-05-16

Family

ID=23181627

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19732355786 Pending DE2355786A1 (de) 1972-11-10 1973-11-08 Verfahren und anordnung zur decodierung von codes mit minimaler redundanz

Country Status (5)

Country Link
US (1) US3835467A (de)
JP (1) JPS4979648A (de)
DE (1) DE2355786A1 (de)
FR (1) FR2206630B1 (de)
GB (1) GB1401118A (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3918047A (en) * 1974-03-28 1975-11-04 Bell Telephone Labor Inc Decoding circuit for variable length codes
US4075622A (en) * 1975-01-31 1978-02-21 The United States Of America As Represented By The Secretary Of The Navy Variable-to-block-with-prefix source coding technique
US4044347A (en) * 1975-05-19 1977-08-23 International Business Machines Corporation Variable-length to fixed-length conversion of minimum-redundancy codes
US4177456A (en) * 1977-02-10 1979-12-04 Hitachi, Ltd. Decoder for variable-length codes
JPS5755668A (en) * 1980-09-22 1982-04-02 Nippon Telegr & Teleph Corp <Ntt> Decoding method for run-length code
US4612532A (en) * 1984-06-19 1986-09-16 Telebyte Corportion Data compression apparatus and method
FR2600223B1 (fr) * 1986-01-13 1988-08-19 Thomson Cgr Procede de formattage et de deformattage de donnees resultant du codage d'informations numeriques a l'aide d'un code a longueur variable, et dispositif de mise en oeuvre
US4853696A (en) * 1987-04-13 1989-08-01 University Of Central Florida Code converter for data compression/decompression
US5216423A (en) * 1991-04-09 1993-06-01 University Of Central Florida Method and apparatus for multiple bit encoding and decoding of data through use of tree-based codes
JP3278297B2 (ja) * 1994-07-20 2002-04-30 富士通株式会社 データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
JP2766875B2 (ja) * 1995-04-10 1998-06-18 日本ピラー工業株式会社 軸封システム装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3510576A (en) * 1966-10-03 1970-05-05 Xerox Corp Data sampler circuit for determining information run lengths
US3675211A (en) * 1970-09-08 1972-07-04 Ibm Data compaction using modified variable-length coding
US3694813A (en) * 1970-10-30 1972-09-26 Ibm Method of achieving data compaction utilizing variable-length dependent coding techniques
US3701108A (en) * 1970-10-30 1972-10-24 Ibm Code processor for variable-length dependent codes
US3716851A (en) * 1971-02-09 1973-02-13 Bell Telephone Labor Inc Self-synchronizing sequential encoding systems
US3717851A (en) * 1971-03-03 1973-02-20 Ibm Processing of compacted data
US3689899A (en) * 1971-06-07 1972-09-05 Ibm Run-length-limited variable-length coding with error propagation limitation
US3726993A (en) * 1971-12-10 1973-04-10 Xerox Corp Data compression methods and apparatus

Also Published As

Publication number Publication date
FR2206630A1 (de) 1974-06-07
FR2206630B1 (de) 1976-06-18
GB1401118A (en) 1975-07-16
US3835467A (en) 1974-09-10
JPS4979648A (de) 1974-08-01

Similar Documents

Publication Publication Date Title
DE2228526C3 (de) Verfahren und Anordnung zum Lesen und Decodieren von Strichmarken-Gruppen, die Daten in codierter Form darstellen
DE2250696C3 (de) Optische Dateneingabe und -Anzeige
DE2508706A1 (de) Codieren und decodieren mit einem code variierbarer wortlaenge und gegebenem bitzahlverhaeltnis
DE3618865A1 (de) Maximallaengen-schieberegister-schaltfolge-generator
DE1497696B2 (de) Schaltungsanordnung fuer ein lerngeraet
DE1537062A1 (de) Schluesselgenerator
DE2607842C2 (de)
DE2245360A1 (de) Pseudo-zufallszahlengenerator fuer datenverarbeitung
DE2355786A1 (de) Verfahren und anordnung zur decodierung von codes mit minimaler redundanz
DE1524373C3 (de) Paralleldruckwerk
DE2900586C2 (de) Anordnung zum Decodieren von Codewörtern variabler Länge
DE1119567B (de) Geraet zur Speicherung von Informationen
DE1562051B2 (de) Schaltungsanordnung zur erzeugung einer eindeutigen gruppe von m x n bits
DE2838228A1 (de) Verfahren und anordnung zur synchronisation von datenbitfolgen
DE1299326B (de) Speicherverfahren fuer einen aus einer Verzoegerungsleitung aufgebauten dynamischen Speicher und Anordnung zur Durchfuehrung des Verfahrens
DE3047187A1 (de) Verfahren und vorrichtung zum wahlweisen ansteuern einer dynamischen oder einer statischen anzeigeeinheit
DE2559258A1 (de) Verfahren zum zeilenausschliessen in druckwerken durch vergroessern der wortabstaende
DE1099232B (de) Schaltanordnung fuer einen Pufferspeicher
DE1499170C3 (de) Datenverarbeitungsanlage
DE1186244B (de) Vergleichsschaltung
DE1277921B (de) Codeumsetzer zur UEbertragung von Informationszeichen einer vorgegebenen ersten Codierung in gleichwertige Informationszeichen einer ausgewaehlten zweiten Codierung
DE1762173C3 (de) Kodegenerator
DE2319507A1 (de) Verfahren und vorrichtung zur eingabe eines steuerprogramms in einen rechner fuer die numerische steuerung einer werkzeugmaschine
DE1211687B (de) System zur linearen systematischen Kodierung
DE2746779A1 (de) Taktgebevorrichtung bei einem ausweiskarten-lesegeraet

Legal Events

Date Code Title Description
OHJ Non-payment of the annual fee