DE2205422A1 - Verfahren zur Verarbeitung verdichteter Daten - Google Patents

Verfahren zur Verarbeitung verdichteter Daten

Info

Publication number
DE2205422A1
DE2205422A1 DE19722205422 DE2205422A DE2205422A1 DE 2205422 A1 DE2205422 A1 DE 2205422A1 DE 19722205422 DE19722205422 DE 19722205422 DE 2205422 A DE2205422 A DE 2205422A DE 2205422 A1 DE2205422 A1 DE 2205422A1
Authority
DE
Germany
Prior art keywords
code
length
bits
bit
register
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.)
Granted
Application number
DE19722205422
Other languages
English (en)
Other versions
DE2205422C2 (de
Inventor
John Mt. Kisco; Mommens Jacques Henri Briarcliff Manor; Raviv Josef Yorktown Heights; N.Y. Cocke (V.St.A.)
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 DE2205422A1 publication Critical patent/DE2205422A1/de
Application granted granted Critical
Publication of DE2205422C2 publication Critical patent/DE2205422C2/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/4025Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code constant length to or from Morse code conversion
    • 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, 2. Februar 1972 ko-fr
Anmelderin: International Business Machines
Corporation, Armonk, N.Y. 10504
Amtl. Aktenzeichen: Neuanmeldung
Aktenzeichen der Anmelderin: Docket YO 970 073
Verfahren zur Verarbeitung verdichteter Daten
Die Erfindung bezieht sich auf ein Verfahren zur Verarbeitung verdichteter Daten in einem datenverarbeitenden System mit Speichern und Registern vermittels Codeumwandlung.
Die Verdichtung von Daten bei ihrer übertragung oder während sie in Langzeitspeichern abgespeichert sind kann über eine Codierung veränderlicher Länge vorgenommen werden. Ein Codierschema dieses Typs bewirkt, daß Bitreihen fest vorgegebener Länge in Bitreihen veränderlicher Länge umcodiert werden, wobei die häufiger vorkommenden Codes von Bitreihen dargestellt werden, die kürzer sind als die der Codes fest vorgegebener Länge. Diese Umwandlung von Codes fester Länge in Codes veränderlicher Länge ist als Huffman-Codierung bekannt (K. Steinbuch, Taschenbuch der Nachrichtenverarbeitung, Springer-Verlag, 1962, Seiten 83, . 1020, 1023). Bei sehr sinnvoller Zuordnung von Codes veränderlicher Länge ergibt sich bei gegebenen Daten dann eine wesentlich geringere Länge derartiger Codes gegenüber den entsprechenden Codes fest vorgegebener Länge, obwohl viele Codes veränderlicher Länge wesentlich länger als die entsprechenden Codes fester Länge sind.
Während die Codierung auf der Basis veränderlicher Länge für eine Verdichtung der Daten sehr nützlich ist, müssen die in die-
209836/1106
ser Form codierten Daten, bevor sie von einem Datenprozessor verarbeitet werden können, wieder in eine Codeform mit fester Länge umgewandelt werden. Zu diesem Zweck sind Decodierschemata vorgeschlagen worden, die jedoch den Nachteil haben, daß sie spezielle Hardware erforderlich machen, die in konventionellen Datenprozessoren normalerweise nicht vorhanden ist. Es besteht die Notwendigkeit für ein günstiges Verfahren für die Verarbeitung von Codes veränderlicher Länge in konventionellen Datenprozessoren, ohne dafür unkonventionelle Hardware verwenden zu müssen und ohne bei der Verarbeitung dieser Daten einen wesentlichen Zeitverlust in Kauf nehmen zu müssen.
Der Erfindung liegt die Aufgabe zugrunde, ein Verfahren zur Verarbeitung verdichteter Daten der eingangs genannten Art zu schaffen, das die genannten Nachteile nicht aufweist. Durch Codierung veränderlicher Länge verdichtete Daten sollen ohne weiteres von Datenprozessoren verarbeitet werden können, deren Decodiermöglichkeiten nur für die Verarbeitung von Code-Bitreihen fest vorgegebener Länge ausgelegt sind, die wesentlich kürzer als einige Code-Bitreihen veränderlicher Länge sind. Eine weitere Aufgabe der Erfindung liegt darin, zu ermöglichen, daß die Decodierung dieser längeren Code-Bitreihen nur ungefähr die gleiche Zeit beansprucht wie die der kürzeren Code-Bitreihen.
Diese Aufgaben werden dadurch gelöst, daß als Bitstreifen veränderlicher Länge codierte Daten in für die Verarbeitung von Bitstreifen fester Länge geeigneten Speichern und Registern eines datenverarbeitenden Systems einer aus den nachfolgenden Schritten bestehenden Codeumwandlung unterworfen werden:
a) Serielles Einlesen einer vorgegebenen Anzahl der führenden Bits einer Eingangsbitreihe mit aufeinanderfolgenden Codes veränderlicher Länge in ein erstes Register;
b) Abspeichern der folgenden untereinander zusammenhängenden Informationen in einen Speicher bei Adressen, die durch die
Docket YO 970 073 209835/1106
in das erste Register eingelesenen verschiedenen Bitkombinationen gekennzeichnet sind:
bl) eines Codes fester Länge, der dem ersten Code veränderlicher Länge oder einem Teil davon entspricht, welcher bei der Eingabe der jeweiligen Bitkombination in das erste Register festliegt und
b2) einer damit verknüpften Information über die Anzahl der in dem Code veränderlicher Länge vorhandenen Bits;
c) Auslesen des durch die in dem ersten Register gespeicherte Bitkombination adressierten Codes fester Länge (bl) und der damit verknüpften Information (b2) aus dem Speicher in ein zweites Register zur Weiterverarbeitung in einem nachgeschalteten Teil des datenverarbeitenden Systems;
d) Verschieben des Inhalts des ersten Registers um eine Anzahl Bitpositionen, die durch die verknüpfte Information (b2) vorgegeben ist und
e) Wiederholung der Schritte c) und d), bis die Information des nachfolgenden Codes veränderlicher Länge von dem System verarbeitet werden kann.
Damit werden die Vorteile erzielt, daß für das Codieren und das Decodieren lediglich konventionelle Hardware verwendet werden kann, die keine speziellen Zusätze mehr erfordert. Es können Datenprozessoren benutzt werden, deren Decodiermöglichkeiten auf die Verarbeitung von Code-Bitreihen fest vorgegebener Länge beschränkt sind. Die Verarbeitung geschieht ohne wesentliche Einbuße an der Leistungsfähigkeit des Systems als Ganzes.
Ein Ausführungsbeispiel der Erfindung ist in den Zeichnungen dargestellt und wird anschließend näher beschrieben. Es zeigen:
Fig. 1 eine Tabelle mit einem einfachen Beispiel der
konventionellen Huffman-Codierung zur Umwandlung von Codes mit fester Länge in Codes mit veränderlicher Länge,
209838/1106
Docket YO 970 073
Fig. 2 eine Tabelle mit einem Beispiel einer neuen
Form der Huffman-Codierung, worin die Codes, die eine bestimmte vorgegebene Länge (in diesem Fall 4 Bits) überschreiten, so eingeschränkt werden, daß der Vorgabeteil eines solchen Codes eindeutig die Codelänge bezeichnet,
Fig. 3 die in einem Primärprozessor P und einem Sekundärprozessor S gespeicherten Decodiertabellen zur Decodierung von Codes mit veränderlicher Länge, die nach dem Codeschema in Fig. 2 erzeugt wurden,
Fig. 4 in einem Schaubild das Decodierschema und die
Art, in welcher die beiden Prozessoren P und S zum Decodieren der einzelnen Codes mit unterschiedlicher Länge unabhängig voneinander benutzt werden. Diese Betriebsart wird nachfolgend als unabhängige Decodierung bezeichnet im Gegensatz zur abhängigen Decodierung (s. Fig. 8), bei der die Decodierung eines jeden Codes mit veränderlicher Länge bedingt wird durch das Decodierergebnis des vorhergehenden Codes mit veränderlicher Länge,
Fig. 5 in einer Tabelle ein Beispiel für das abhängige
Codierschema, worin die Codierung eines jeden Zeichens von der des vorhergehenden Zeichens abhängt,
Fig. 6 in einer Tabelle ein Beispiel der abhängigen
Codierung,
Fig. 7 den aus dem Codebeispiel der Fig. 6 resultierenden Bitstrom und die Art der Analyse eines solchen Bitstromes nach der Erfindung,
209835/1106
Docket YO 970 073
Fig. 8 in einem Diagramm den für ein abhängiges Deco-
dierschema verwendeten Prozessor, der als eines seiner Bestandteile den in Fig. 4 gezeigten unabhängigen Decodierer verwendet,
Fig. 9 * die im abhängigen Decodierer (Fig. 8) zum Decodieren der Information, die nach dem in Fig. 5 gezeigten Schema codiert wurde, verwendeten Tabellen D und D1,
Fig. 10 - in einem allgemeinen Blockdiagramm den unabhängigen Decodierer als Ganzes mit seinen verschiedenen Bauteilen,
Fig. 11 ein Ablaufdiagramm der unabhängigen Decodierung,
die durch das Ausführungsbeispiel der Fign. 12 bis 16 ausgeführt wird,
Fig. 12-16 einzelne Schaltbilder eines unabhängigen Decodierers für die Ausführung der in Fig. 11 dargestellten Decodierung,
Fig. 17 ein allgemeines Blockdiagramm des abhängigen
Decodierers als Ganzes mit den einzelnen Bauteilen,
Fig. 18 ein Ablaufdiagramm der abhängigen Decodierung,
die durch das in den Fign. 19 bis 2ID in Verbindung mit dem in den Fign. 12, 13, 15 und 16 gezeigten Gerät dargestellte Ausführungsbeispiel ausgeführt wird und
Fig. 19-2ID detaillierte Schaltbilder von Teilen des abhängigen Decodierers zur Ausführung des in Fig. gezeigten Decodierprozesses.
Docket YO 970 073 209835/1106
- 6 AllGEMEINE BESCHREIBUNG (Fig. 1-9)
Für ein angemessenes Verständnis der Erfindung sind einige Vorkenntnisse der Codierung mit veränderlicher Länge wesentlich. Eine der bekanntesten Arten der Codierung mit veränderlicher Länge ist die Huffman-Codierung, von der ein Eleraentarbeispiel in Fig. gezeigt ist. Mit gewissen Änderungen, die später genauer erklärt werden, wird diese Art der Codierung im vorliegenden illustrativen System benutzt. In diesem Beispiel wird angenommen, daß die ganze in Betracht kommende Datenbasis nur vier verschiedene Zeichen A, B, C und D enthält, die zur Darstellung von zu sendenden oder zu speichernden Informationen in verschiedener Weise angeordnet sind. Es wird weiter angenommen, daß von dieser Datenbasis am häufigsten das Zeichen A verwendet wird, wobei genau die Hälfte aller Zeichen in der Datenbasis durch ein solches A dargestellt wird. In der Häufigkeitsreihenfolge folgt in diesem speziellen Beispiel das Zeichen B, welches in der angenommenen Datenbasis ein Viertel aller Zeichen darstellt. Die übrigen Zeichen sind Cs und D's, von denen angenommen wird, daß sie jeweils ein Achtel aller in der Datenbasis verwendeten Zeichen bilden.
Da nur vier verschiedene Zeichen vorhanden sind, kann jedes dieser Zeichen in gewöhnlicher Notierung mit einem festen Längencode durch ein anderes Codewort aus zwei Bits dargestellt werden. So kann z.B. das A durch das Bitpaar 00, B durch 01, C durch 10 und D durch 11 in der angenommenen 2 Bit großen Codenotierung mit fester Länge dargestellt werden. In der nachfolgenden Beschreibung werden die Codes mit fester Länge oft als "ID"-Codes oder Identitätscodes bezeichnet. Das soll heißen, sie sind mit Codes identisch, die in konventionellen Datenverarbeitungssystemen benutzt werden.
Wenn eine Datenverdichtung erreicht werden soll, dann werden die Zeichen A, B, C und D nicht durch Codes mit einer festen Länge von unveränderlich je 2 Bits dargestellt, sondern statt dessen durch Codes, deren Bitreihen unterschiedliche Längen von je 1 bis
209835/1106
Docket YO 970 073
3 Bits haben. Die Länge einer solchen Bitreihe wird umgekehrt in Beziehung gesetzt zu der Häufigkeit, mit der die entsprechenden Codes benutzt werden. Durch angemessene Zuordnung dieser Codes mit veränderlicher Länge (VL-Codes) zu den entsprechenden Zeichen kann die durchschnittliche der zur Darstellung der aus der Datenbasis abgeleiteten Zeichen verwendeten Codewörter kleiner als 2 Bits gehalten und dadurch die Obertragungszeit sowie der Speicherplatz bei der Handhabung solcher Daten vor ihrer Verwendung in einem konventionellen Datenprozessor eingespart werden.
Das Huffman-Codeprinzip wird jetzt im Zusammenhang mit dem einfachen Beispiel in Fig. 1 erklärt. Zur Codierung der Zeichen A, B, C und D im Huffman-Code werden diese zuerst in der Reihenfolge abnehmender Erscheinungswahrscheinlichkeit geordnet, wie es in Fig. 1 durch die vertikale Anordnung von A, B, C und D in dieser Reihenfolge von oben nach unten wiedergegeben ist. Der Code ist so aufgebaut, daß die Wahrscheinlichkeiten der beiden am wenigsten wahrscheinlichen Zeichen addiert werden, und das Ergebnis in die Wahrscheinlichkeitsliste der anderen hineingemischt wird und dieses Verfahren fortgesetzt wird, indem immer die beiden geringsten Wahrscheinlichkeiten eingemischt werden, bis nur zwei Wahrscheinlichkeiten übrigbleiben. Jetzt läuft das Verfahren rückwärts von rechts nach links und ordnet erst die VL-Codes O und 1 den beiden Wahrscheinlichkeiten zu, die nach dem oben beschriebenen Mischverfahren übriggeblieben sind. Dann werden die VL-Codes 10 und 11 entsprechend den beiden vorhergehenden Wahrscheinlichkeiten zugeordnet, deren Kombination die Wahrscheinlichkeit ergab, welcher soeben die 1 zugeordnet wurde. Dieses Verfahren läuft dann genauso weiter, bis man einen VL-Code für jedes der vier Zeichen A, B, C und D erhält, aus denen die angenommene Datenbasis aufgebaut ist.
Durch diese Codierung wird das am häufigsten verwendete Zeichen A jetzt durch den 1 Bit großen VL-Code O dargestellt, das am nächsthäufigsten verwendete Zeichen B durch den 2 Bit großen VL-Code 10 und die beiden am wenigsten verwendeten Zeichen C und
209835/1106
Docket YO 970 073
D durch 3 Bit große VL-Codes 110 und 111 gemäß Darstellung in Fig. 1. Diese Codes mit veränderlicher Länge haben keinen Vorsatz, d.h. keiner dieser Codes kann den Anfang eines längeren Codes in diesem Satz bilden. Multipliziert man die Codelänge eines jeden Zeichens mit der Wahrscheinlichkeit des Auftretens dieses Zeichens und addiert dann die Ergebnisse, so erhält man eine durchschnittliche Codelänge von 1,75 Bits pro Zeichen, was weniger ist als eine Länge von 2 Bits der ID-Codes für diese Zeichen. Somit wurde eine Datenverdichtung durch diese Codierung mit veränderlicher Länge erzielt.
Aus diesem Beispiel ist nicht zu schließen, daß die Huffman-Codierung einer bestimmten Datenbasis notwendigerweise für den am häufigsten auftretenden Code eine Länge von nur 1 Bit aufweist. Die Zuordnung von Codes verschiedener Länge zu den verschiedenen Zeichen oder Datenelementen, die eine gegebene Datenbasis bilden, hängt ab von der jeweiligen Beziehung der zugehörigen Erscheinungswahrscheinlichkeiten. In einigen Fällen kann die Erscheinungs- oder Auftretungswahrscheinlichkeit so fein abgestuft sein, daß viele verschiedene Zeichen durch Codes mit derselben Länge dargestellt werden.
Bei der Huffman-Codierung kann kein Code den Anfang eines längeren Codes bilden, zwei verschiedene Codes derselben Länge können jedoch gemeinsam einen Vorsatzteil haben. In Fig. 1 stellen z.B. die 3 Bit langen Codes 110 und 111 die Zeichen C bzw. D dar und haben gemeinsam den 2 Bit großen Vorsatzteil 11. Bei der normalen Huffman-Codierung können Codes verschiedener Längen auch gemeinsame Vorsatzteile haben, vorausgesetzt, daß dieser Vorsatzteil nicht ein ganzes Codewort darstellt. So haben z.B. in Fig. 1 die Codes 10 bzw. 110, welche die Zeichen B bzw. C darstellen, gemeinsam den 1 Bit großen Vorsatz 1.
Um die vorliegende Erfindung zu praktizieren, wird der Huffman-Codierung eine besondere Beschränkung so auferlegt/ daß keine zwei Codes unterschiedlicher Länge, welche N Bits überschreiten,
209838/1106
Docket YO 970 073
— Q —
denselben N-Bit-Vorsatz haben, worin N eine feste Zahl ist, welche z.B. die Anzahl der Eingangscodebits angibt, die bequem durch den verfügbaren Speicher gleichzeitig verarbeitet werden können. Diese Beschränkung reduziert den erzielbaren Verdichtungsgrad etwas, dieser Nachteil ist jedoch relativ klein im Vergleich zu gewissen später zu beschreibenden Vorteilen, die sich auf diese Weise realisieren lassen. Mit diesen eingeschränkten Codes unterschiedlicher Länge ist jeder N-Bit-Vorsatz eindeutig einer bestimmten Codelänge zugeordnet. Dadurch wird die Art des hier betrachteten Decodxerprozesses stark vereinfacht, da Codes mit einer größeren Länge als N Bits bequem durch ein Gerät verarbeitet werden können, das gleichzeitig nur N Bits verarbeiten kann.
Ein spezifisches Beispiel der eingeschränkten Codierung mit veränderlicher Länge ist in Fig. 2 gegeben. In diesem Beispiel wird eine Datenbasis mit 32 verschiedenen Zeichen angenommen, die normalerweise durch ID-Codes mit einer festen Länge von 5 Bits dargestellt werden. Diese 32 Zeichen können z.B. aus den 26 alphabetischen Zeichen und sechs nichtalphabetischen Zeichen bestehen, wie ?, ., &, +, * und dem Leerschritt. Die Auftretenswahrscheinlichkeit der entsprechenden Zeichen wird so angenommen, daß ihre eingeschränkten Huffman-Codes zwischen 3 und 8 Bits Länge schwanken. Im vorliegenden Beispiel wird die Länge des Vorsatzes N angenommen mit 4 Bits (N muß nicht unbedingt genauso lang sein wie ein ID-Code). Für ein Codewort mit einer Länge von 4 Bits oder weniger enthält der 4 Bit lange Vorsatz das ganze Codewort und vielleicht einen Teil des nächstfolgenden Codewortes. In solchen Fällen wird der 4 Bit lange Vorsatz nicht als Längen-
vorsatz behandelt. Wo die Codelänge 4 Bits überschreitet, geben die ersten vier Bits eindeutig die Codelänge an.
Die nach dem soeben beschriebenen neuen Codierkonzept aufgebaute Tabelle in Fig. 2 enthält 32 Codes mit veränderlicher Länge (VL-Codes), welche die 32 verschiedenen in dieser angenommenen Datenbasis verwendeten Zeichen darstellen und mit den zugehörigen Codelängen, den 4 Bit langen Vorsätzen und den Festlängen-ID-
209835/1106
Docket YO 970 073
- ίο -
Codes in der Tabelle aufgeführt sind. Die 4 Bit großen Vorsätze werden nur dann als "LängenvorsätzeM behandelt, wenn die Länge der VL-Codes fünf oder mehr Bits beträgt. Für einen kürzeren Code hat der 4 Bit große in der Tabelle gezeigte Vorsatz (der in manchen Fällen ein Bit vom nächstfolgenden VL-Code enthalten kann) keine Längenbedeutung. Wo das Codewort kleiner als 4 Bits ist, stellen die 4 Bit großen in der Tabelle gezeigten Vorsätze alle möglichen Konfigurationen aus 4 Bits dar, die dieses Codewort als gemeinsamen Vorderteil enthalten können.
Wie bereits erwähnt wurde, braucht der 4 Bit große Längenvorsatz eines größeren Codewortes (d.h. eines Codewortes mit mehr als 4 Bits Länge) nicht unbedingt eine direkt numerische Darstellung der Codelänge zu sein. Die einzige Forderung besagt, daß dieser Vorsatz eine bestimmte Codelänge und keine andere darstellen muß. Eine gegebene Codelänge kann aber natürlich durch irgendeinen von verschiedenen Längenvorsätzen dargestellt werden, von denen jeder eine bestimmte Codelänge und keine andere wiedergibt. In der Tabelle der Fig. 2 können z.B. Codewörter mit einer Länge von 6 Bits jeden der Längenvorsätze 0011, 0001 und 0010 haben, die alle ausschließlich für 6 Bit große Codewörter reserviert sind.
Das Schaubild in Fig. 3 zeigt die Anlage der Tabellen in einem Primärprozessor P und in einem Sekundärprozessor S zur Decodierung von Zeichen, die nach dem in Fig. 2 gezeigten eingeschränkten Huffman-Code codiert wurden. Fig. 4 zeigt allgemein die Beziehung zwischen diesen beiden Prozessoren. Die N Bit großen Vorsätze aller mit veränderlicher Länge codierten Zeichendarstellungen werden durch den Primärprozessor P decodiert. Wenn ein Eingabecode mit seiner Länge N Bits nicht überschreitet (für N werden im vorliegenden Beispiel vier Bits angenommen), liefert der Primärprozessor P die fertigdecodierte Ausgabe. Wenn ein Eingabecode eine größere Länge als 4 Bits hat, erfolgt die Decodierung in zwei Stufen. In der ersten Stufe des Decodierprozesses wird der Längenvorsatz (die ersten vier Bits) des Eingabecodes decodiert und daraus der Basisteil einer Adresse in dem Sekundär-
209835/1106 Docket YO 970 073
prozessor S gewonnen. Zu dieser Basisadresse wird ein Verschiebungswert addiert, der durch die übrigen Stellen des Eingangscodes dargestellt ist. Die fertigdecodierte Ausgabe, ein 5 Bit großer ID-Code, findet sich an der durch die Kombination dieser beiden Adreßteile angegebenen Adresse. Die Kombination dieser Adreßteile braucht keine arithmetische Addition mit sich zu bringen. Sie läßt sich erreichen durch serielle Zuführung und Verschiebung von Adreßbits gemäß späterer Erklärung.
Strukturell können die in den Fign. 3 und 4 gezeigten Primär- und Sekundärprozessoren P und S aus konventionellen Speichereinheiten (oder Teilen solcher Einheiten) bestehn, die für diese Decodierfunktionen speziell zugeordnet sind. Obwohl es sich bei diesem Speichertyp um konventionelle Bauelemente handelt, ist ihre Betriebsweise zur Erzielung der oben beschriebenen Ergebnisse hier eindeutig. XM das Konzept der vorliegenden Erfindung auszuführen, weist die in dem Primärprozessor P gespeicherte Tabelle drei Felder auf, die entsprechend mit AB, L und C bezeichnet sind. Das AB-FeId speichert die Codes mit fester Länge, die abhängig von der Länge des eingegebenen VL-Codes in einigen Fällen den decodierten ID-Ausgang und in anderen eine teilweise decodierte Adresse für den Sekundärprozessor S darstellen. Das L-FeId speichert binäre Darstellungen, die sich auf die zugehörigen Codelängen beziehen. Im vorliegenden Beispiel ist L um den Zahlenwert 1 kleiner als die Codelänge im Fall aller Codes, deren Länge 4 Bits nicht übersteigt (da in diesem Beispiel N den Wert von 4 Bits hat). Ho die Codelänge 4 Bits nicht übersteigt, ist L um den Zahlenwert 1 kleiner als die Differenz zwischen der Codelänge und den 4 Bits. Das C-FeId des Primärprozessors P speichert ein 1-Bit, wenn die Codelänge 4 Bits übersteigt und speichert ein O-Bit, wenn die Codelänge 4 Bits nicht überschreitet.
Der Sekundärprozessor S, Fign. 3 und 4, enthält eine Tabelle der verschiedenen 5 Bit großen ID-Codes, die allen VL-Codes entsprechen, deren Länge 4 Bits überschreitet. 25 der 32 möglichen ID-Codes sind in der Tabelle S gespeichert. Die übrigen ID-Codes
209835/1106
Docket YO 970 073
sind in der Tabelle P gespeichert, da sie entsprechend den sieben VL-Codes zugeordnet sind, deren Länge 4 Bits nicht überschreitet. In der Tabelle S sind die ID-Codes in Gruppen angeordnet. Diejenigen ID-Codes, welche in den Stellen O bis 10 gespeichert sind, entsprechen den elf möglichen VL-Codes, deren Länge 8 Bits (Fig. 2) beträgt. Diejenigen ID-Codes, die in den Stellen 12 bis 23 der Tabelle S gespeichert sind, entsprechen den zwölf VL-Codes, deren Länge 6 Bits beträgt. Die in den Stellen 24 und 25 der Tabelle S gespeicherten ID-Codes entsprechen den zwei möglichen VL-Codes, deren Länge 5 Bits beträgt. Die übrigen Adressen in Tabelle S werden in diesem speziellen Beispiel nicht benutzt. Die Bedeutung dieser einzelnen ID-Code-Gruppen in der Tabelle S geht aus der späteren Beschreibung hervor.
Jetzt werden als Beispiel einige Decodieroperationen unter Bezug auf die Fign. 2, 3 und 4 beschrieben. Als erstes Beispiel wird ein Eingabe-VL-Code 001(X)I angenommen. Die ersten vier Bits, 0010, stellen den Längenvorsatz dar, da N = 4. In diesem speziellen Codierschema gibt der Vorsatz 0010 die Codelänge eindeutig mit 6 Bits an. Der 4 Bit große Vorsatz wird seriell in das 4-Bit-Adreßregister 10 der Fig. 4 geleitet, wo er eine Stelle in der Speichereinheit des Primärprozessors P adressiert, die der Zahl 2 in der Tabelle P der Fig. 3 entspricht. An dieser Speicherstelle speichert das AB-FeId die binäre Darstellung 00100; das L-FeId die binäre Darstellung 01 und das C-FeId ein 1-Bit und gibt damit eine Eingangscodelänge von mehr als 4 Bits an. Somit ist eine Decodieroperation in zwei Schritten erforderlich. Im ersten Schritt wird die Eintragung im AB-FeId 00100 ausgelesen in ein Datenregister 20, von welchem sie in ein 5-Bit-Adreßregister 24 im Sekundärprozessors S in Fig. 4 übertragen wird. Die L-Feldeintragung 01 wird ausgelesen und um 1 erhöht, um die Anzahl der zusätzlichen VL-Codebits anzugeben, die in das Register 24 zu leiten sind. In diesem Fall werden zwei weitere VL-Codebits benötigt, nämlich die beiden verbleibenden wertniederen Bits 01 des Eingabe VL-Codes 001001. Da diese beiden zusätzlichen Bits in das Register 24 vom wertniederen Ende her hineingelangen,
209835/1106
Docket YO 970 0.73
wird der vorhandene Inhalt des Registers 24 um zwei Positionen zum oberen Ende dieses Registers verschoben, wodurch die werthöchsten Bits OO der Anfangsadresse 00100 ausfallen. Durch diese serielle Eingabe und Verschiebung speichert das Register 24 jetzt die binäre Adresse 10001 oder in Dezimalschreibweise 17. An der Stelle 17 der· Tabelle S in Fig. 3 findet sich der 5 Bit große ID-Code 10010. Dieser wird aus dem in Fig. 4 gezeigten Speicher 26 des Sekundarprozessors ausgelesen in ein Datenregister 28, wo er als Ausgabe-ID-Code wiedergewonnen wird, der dem Eingabe-VL-Code 001001 entspricht.
Wenn in obigem Beispiel die aus dem Speicher 12 ausgelesene Eintragung 00100 im AB-FeId anschließend aus dem Datenregister 20 der Fig. 4 in das Adreßregister 24 übertragen und dann um zwei Stellen nach links im Register 24 verschoben wurde, so wird dadurch effektiv auf eine Basisadresse 10000 (oder 16) im Speicher 26 des Sekundarprozessors S hingewiesen. Zum Zeitpunkt dieser Linksverschiebung wurden die beiden übrigen Bits 01 des VL-Codes jedoch an die verkettete Bitreihe 100 angehängt, die übrigblieb, nachdem die beiden ersten Bits 00 aus dem Register 24 geschoben wurden, so daß die Endadresse 10001 (oder 17) um 1 gegenüber der Basisadresse verschoben war. Dasselbe Ergebnis kann man erzielen, indem aus dem AB-FeId des Primärprozessorspeichers 12 ein Wert 10000 ausgelesen wird, der direkt eine Basisadresse darstellt und dann hierzu den Verschiebungswert 00001 arithmetisch addiert, ohne den Inhalt des Adreßregisters 24 zu verschieben. Das zuerst beschriebene Verfahren wird jedoch bevorzugt, weil hierbei eine arithmetische Addition ver-
mieden wird.
Sobald der Inhalt des Datenregisters 20 in das Adreßregister 24 übertragen und die übrigen Bits des laufenden VL-Codes in das Register 24 geschoben wurden, kann die Decodierung des nächstfolgenden VL-Code beginnen, indem die Bits dieses neuen VL-Codes in das Register 10 übertragen werden. Während also der Sekundärprozessor S noch an der Vervollständigung der Decodierung eines
Λ „ 20983S/1106
Docket YO 970 073
VL-Codes arbeitet, kann bereits die Decodierung des nächsten VL-Codes im Primärprozessor P beginnen. Auf diese Weise können EIngabe-VL-Codes, deren Länge größer als N Bits sind, ungefähr mit derselben Geschwindigkeit decodiert werden, wie VL-Codes decodiert werden, deren Länge N Bits nicht übersteigt, obwohl die längeren Codes einen zusätzlichen oder zweiten Decodierschritt erfordern.
Jetzt wird ein Beispiel beschrieben, in welchem der Eingabe-VL-Code eine Länge von nur drei Bits oder ein Bit weniger als N hat. Dieser VL-Code sei mit 110 angenommen. Da das Adreßregister 10 vier Bitpositionen hat, speichert es den hereinkommenden 3 Bit großen Code 110 in den drei werthöchsten Positionen und die vierte Positionen wird mit dem ersten Bit des nächstfolgenden VL-Codes (der 1 oder 0 sein kann) aufgefüllt. In diesem Fall muß der Speicher 12 so angeordnet sein, daß der Ausgabe-ID-Code sich an einer von zwei binären Adressen findet, 1100 oder 1101, d.h., entweder an der Adreßzahl 12 oder an der Adreßzahl 13 der Tabelle P in Fig. 3. In jedem Fall wird der 5 Bit große Code 00010 in das Datenregister 20 als der ID-Code ausgelesen, der dem 3 Bit großen VL-Code 110 entspricht. In diesem Fall speichert das C-FeId ein O-Bit und zeigt dadurch an, daß keine zweite Decodieroperation erforderlich ist. Das L-FeId speichert die binäre Darstellung 10 (oder 2), die bei Erhöhung um 1 die Zahl der Bits angibt (3), die aus dem Adreßregister 10 ausgeschoben werden, um den nächstfolgenden VL-Code in die für die Decodierung richtige Lage zu bringen.
Der bisher im Zusammenhang mit den Fign. 2-4 beschriebene Decodierprozeß behandelt diesen Eingabe VL-Code oder jedes Zeichen als einzelne zu decodierende Einheit ohne Bezug auf einen anderen Code oder ein anderes Zeichen im hereinkommenden Informationsstrom. Diese Betriebsart wird unabhängige Decodierung genannt, da sie unabhängig von der an benachbarten Zeichen vorgenommenen Decodierung ausgeführt wird. Wie oben jedoch schon ausgeführt wurde, läßt sich eine höhere Datenverdichtung oft dadurch errei-
209835/1106
Docket YO 970 073
chen, daß die Eingabezeichen in Sätzen (z.B. in Paaren) verarbeitet werden. Wenn z.B. das Zeichen "U" unabhängig von benachbarten Zeichen codiert wird, ergibt sich ein ziemlich langer VL-Code. Bei Codierung in Kombination mit seinem vorhergehenden Zeichen weist es jedoch einen sehr kurzen VL-Code auf, sobald vorher ein Konsonant steht wie z.B. "QH. Es ist daher vorteilhaft, Zeichen in Sätzen und nicht einzeln zu codieren und zu decodieren. Solche Codier- und Decodieroperationen werden hier als abhängige Codierung und Decodierung bezeichnet. Die abhängige Codierung oder Decodierung kann dasselbe Geräte benutzen, das für die unabhängige Codierung oder Decodierung erforderlich ist zusammen mit einem zusätzlichen Gerät zur Übernahme einiger weniger Funktionen, die bei dieser Betriebsart benötigt werden.
Fig. 5 zeigt in einer tabellarischen Darstellung ein abhängiges Codierschema, welches für eine beispielhafte Datenbasis mit 32 verschiedenen Zeichen (26 alphabetische Zeichen und 6 nichtalphabetische Zeichen: Leerschritt, ?, ., #, + und *) aufgestellt wurde. Jedes Zeichen kann jederzeit in eine der drei Gruppen O, 1 und 2 entsprechend dem ihm in der in Frage kommenden Aufzeichnung oder Nachricht vorhergehenden Teil eingeordnet werden. Zur Illustration sind diese drei Gruppen wie folgt definiert:
Gruppe O enthält das erste Zeichen einer Aufzeichnung und jedes einem Vokal folgende Zeichen.
Gruppe 1 enthält jedes einem nichtalphabetischen Zeichen (Leerschritt, ?, ., $, + oder *) folgende Zeichen.
Gruppe 2 enthält jedes Zeichen nach einem Konsonanten.
Zur Codierung eines Zeichens gehört zuerst seine Einteilung in die entsprechende Gruppe O, 1 oder 2 gemäß obiger Definition in Abhängigkeit von dem vorhergehenden Zeichen. Innerhalb jeder dieser Gruppen erhält das zu codierende Zeichen eine bestimmte Zahl (nach der Tabelle in Fig. 5) zur Bezeichnung seiner Rang-
209835/1106
Docket YO 970 073
Ordnung relativ zu anderen Mitgliedern dieser Gruppe auf der Basis der Auftrittswahrscheinlichkeit. Je niedriger diese Zahl ist, um so höher ist die Auftrittswahrscheinlichkeit dieses Zeichens innerhalb der jeweiligen Gruppe. Die dem Zeichen zugeordnete Zahl bestimmt dann den Code mit veränderlicher Länge, der diesem Zeichen nach der in Fig. 2 aufgestellten Tabelle zugeordnet wird.
Das soeben beschriebene Codierprinzip läßt sich am besten an einem Beispiel zeigen. Es sei angenommen, daß der Name "C. BRICE" im abhängigen Schema zu codieren ist. Fig. 6 zeigt die Codierung dieses Namens nach der Tabelle in Fig. 5. Vor dem ersten Zeichen "C" steht kein anderes Zeichen und somit wird es in Gruppe O eingeordnet und erhält in dieser Gruppe die Rangordnungszahl 2. Um den diesem Zeichen zugeordneten VL-Code zu finden, wird jetzt auf die in Fig. 2 gezeigte Tabelle für die unabhängige Codierung Bezug genommen, aus welcher hervorgeht, daß die Ziffer 2 dargestellt wird durch den VL-Code 110. Ein ähnliches Verfahren wird im Fall aller nachfolgenden Zeichen befolgt, und die resultierende Zuordnung von VL-Codes zu dem als Beispiel gewählten Zeichensatz ist in Fig. 6 gezeigt. Wenn der codierte Name "C. BRICE" übertragen oder aus dem Speicher ausgelesen wird, erscheint er als die Folge von VL-Codebits, die in Fig. 7 gezeigt ist.
Noch einmal zur Wiederholung: Bei der abhängigen Codierung wird jeder VL-Code auf der Basis 1. der Art oder Identität des Zeichens codiert, welches dem gerade codiert werdenden Zeichen vorhergeht (z.B. ein Vokal, ein Konsonant oder nichtalphabetisches Zeichen) und 2. der Wahrscheinlichkeit, daß das laufende Zeichen einem solchen vorhergehenden Zeichen in der verwendeten Datenbasis folgt. Alle diese Auftrittswahrscheinlichkeiten müssen für die in Frage kommende jeweilige Datenbasis vorher bestimmt werden. Der Wahrscheinlichkeitsrang des Zeichens innerhalb der Gruppe (Fig. 5) bestimmt seine VL-Codezuordnung nach der in Fig. 2 gezeigten Tabelle.
209835/1106
Docket YO 970 0.73
Eine Besonderheit der abhängigen Codierung besteht darin, daß derselbe VL-Code zu verschiedenen Zeiten unterschiedliche Zeichen darstellen kann. So stellt der VL-Code 110 in Fig. 6 z.B. in einem Fall das Zeichen "I" und in einem anderen Fall das Zeichen "C" dar, wobei diese beiden Zeichen allerdings in verschiedenen Gruppen liegen.
Um eine Folge von VL-Codebits zu decodieren, die im abhängigen Betrieb gebildet wurden, wie es z.B. in Fig. 7 gezeigt ist, wird jedes Zeichen in der Bitreihe zuerst daraufhin untersucht, ob es im unabhängigen Betrieb (Fig. 7) codiert wurde und wird dann entsprechend decodiert. Die Ausgabe dieser unabhängigen Decodierung wird jedoch nichb direkt verwendet. Sie wird weiter daraufhin decodiert, welches Zeichen vorhergegangen ist, und 'die endgültige Ausgabe ist das Ergebnis dieser weiteren Decodieroperation. Diese Betriebsart läßt sich besser im Zusammenhang mit Fig. 8 verstehen, die allgemein die abhängige Decodierung zeigt und im Zusammenhang mit Fig. 9, die fragmentarisch die Anlage der Decodiertabellen D und D1 zeigt, die im abhängigen Prozessor verwendet werden.
Nach der Darstellung in Fig. 8 übernimmt der in Fig. 4 gezeigte unabhängige Decodierer die erste Decodierung im abhängigen Decodierprozeß. Die Ausgabe des unabhängigen Decodierers ist ein ID-Code, der als Zwischenfunktion zur Erzielung des endgültigen ID-Codes dient. Dieser Zwischen-ID-Code (im vorliegenden Beispiel fünf Bits) wird in den wertniederen Positionen eines Adreßregisters 34 gespeichert, welches zu einem Speicher 36 gehört, in dem die Tabelle D (Fig. 9) gespeichert ist.
Zuerst werden die werthohen Positionen des Registers 34 mit Nullen gefüllt und das erste aus dem Speicher 36 bei jedem neuen Decodierlauf ausgelesene Stück ist ein ID-Code, der in der Gruppe O gespeichert wird. Das erste Zeichen C in dem Beispiel der Fig. 6 hat z.B. einen VL-Code 110, der zu einem ID-Code 00010 durch den in Fign. 3 und 4 gezeigten unabhängigen Decodierer decodiert wird. Dieser ID-Code wirß in die fünf unteren Stellen des Registers 34
209835/1106
Docket YO 970 073
gesetzt und, da, die höchsten Stellen (zwei Stellen) gegenwärtig mit Nullen gefüllt sind, ist die resultierende Adresse OOOOOIO oder 2. Aus Fig. 9 ist zu ersehen, daß die Tabelle D unter der Adresse 2 den ID-Code 00010 speichert, der dann der endgültige ID-Code wird, welcher in das Datenregister 38 der Fig. 8 ausgelesen wird. In diesem Fall sind der Zwischencode und der endgültige ID-Code einmal identisch, das ist jedoch nicht immer der Fall.
Bei der Decodierung des nächsten VL-Code 01000, der das Zeichen "." darstellt, erzielt der unabhängige Decodierer beim vorliegenden Codierschema (Fign. 5 und 2) den Zwischen-ID-Code 00111. Dieser wird jetzt in die fünf wertniedersten Stufen des Adreßregisters 34 in Fig. 8 gesetzt. In der Zwischenzeit wird der in das Datenregister 38 ausgelesene vorhergehende ID-Code (00010, der das vorhergehende decodierte Zeichen "C" darstellt) zur Adresse für eine in der Tabelle D1 (Fig. 9), die im Speicher 40 der Fig. 8 gespeichert ist, ausgeführte Suchoperation. An dieser Adresse (00010 oder 2) in Tabelle D1 ist der 2 Bit große Gruppencode 10 gespeichert. Dieser Gruppencode 10 wird jetzt in die beiden werthohen Positionen des Adreßregisters 34 gesetzt, wo er mit dem Zwischen-ID-Code 00111 in den fünf unteren Positionen kombiniert wird und die 7 Bit große Adresse 1000111 oder die Zahl 71 liefert. An der Adreßzahl 71 in Tabelle D (Fig. 9) findet sich der ID-Code 11100, der bei dem vorliegenden Codierschema dem Zeichen H." zugeordnet ist. Dieser ID-Code 11100 wird dann in das Datenregister 38 als endgültiger ID-Code ausgelesen. Er wird außerdem als neue Adresse (28) benutzt, um in der Tabelle D1 den richtigen Gruppencode (01) für die Decodierung des nächstfolgenden VL-Codes nach obiger Beschreibung zu suchen.
Die obige Beschreibung, welche erklärt, wie die ersten beiden VL-Codes im Bitstrom der Fig. 7 zu ID-Codes decodiert werden, welche die Zeichen "C" und "." darstellen, zeigt die Art, in welcher die übrigen VL-Codes dieses Stromes im abhängigen Decodierschema decodiert werden. Fig. 7 zeigt außerdem, wie der unabhängige
209835/1106
Docket YO 970 073
Decodierer diesen Bitstrom in die ihn bildenden VL-Codes zerlegt. Die horizontalen Klammern (wie 5, 6 und 7) in dieser Figur zeigen die 4 Bit großen "Fenster", durch welche der Primärprozessor P des unabhängigen Decodierers (Fign. 3 und 4) diesen Bitstrom betrachtet. Die vertikalen Pfeile, wie z.B. der Pfeil 8 in Fig. 7 zeigt auf die Bits im Strom, die im Sekundärprozessor S in den Decodieroperationen benutzt werden, in denen dieser Prozessor verwendet werden muß. Die Bits, die zwischen dem linken Ende einer Fensterklammer und dem linken der folgenden Fensterklammer (oder dem Ende des Bitstromes) stehen, sind die Bits eines VL-Codes. Somit liegen zwischen dem linken Ende der ersten Klammer 5 in Fig. 7 und im linken Ende der nächsten Klammer 6 die drei Bits 110 des VL-Codes (Fig. 6), der in diesem Beispiel benutzt wird. Zwischen dem linken Ende der Klammer 6 und dem linken Ende der Klammer 7 liegen die fünf Bits 01000 des zweiten VL-Codes, von denen sich nur vier in der Klammer 6 befinden. Der Pfeil 8 zeigt auf das fünfte Bit, 0, mit welchem im Sekundärprozessor S die unabhängige Decodierung auf diesen zweiten VL-Code vervollständigt wird. Fig. 7 zeigt außerdem die den verschiedenen Codes während der abhängigen Decodierung zugeordneten Gruppenzahlen sowie die endgültig decodierten Zeichen.
Die vorstehende allgemeine Beschreibung basiert auf den Fign. 2 bis 9 und nimmt ein Beispiel an, in welchem nur 32 verschiedene Zeichen in der Datenbasis vorhanden sind. Diese Zeichenzahl kann dargestellt werden durch 5 Bit große ID-Codes und durch VL-Codes, die nicht länger als 8 Bits sind. Der Vorsatz N wurde bisher mit einer Länge von 4 Bits angenommen. In der Praxis sind diese Parameter jedoch unbequem. Die meisten Datenverarbeitungssysteme sind auf die Verarbeitung von Einheiten aus acht Bits, sogenannte Bytes ausgelegt. Somit ist es praktischer, sich ID-Codes mit einer Länge von 8 Bits oder 1 Byte vorzustellen. Für die praktische Verwendung muß die Datenbasis außerdem viel mehr als 32 verschiedene Codes enthalten. In einem solchen System haben die VL-Codes in vielen Fällen eine größere Länge als 8 Bits. Diese Forderungen wurden bei der obigen allgemeinen Beschreibung nicht
209835/1106
Docket YO 970 073
berücksichtigt, um diese nicht zu kompliziert zu machen. Im verbleibenden Teil der Beschreibung, der sich mit Ausführungsbeispielen der Erfindung befaßt, werden jedoch diese praktischen Betriebsbedingungen angenommen.
GENAUE BESCHREIBUNG DER AUSFÜHRUNGSBEISPIELE
Ausführungsbeispiele für das unabhängige und das abhängige Decodierschema sind in den Fign. 10 bis 2ID gezeigt. Im Gegensatz zu den in den Fign. 3 bis 9 gezeigten einfacheren Decodierschemata sind diese Decodierschemata auf folgenden Annahmen aufgebaut:
ID Codelänge = 8 Bits
VL-Codelänge = 1 bis 16 Bits
Vorsatz N =8 Bits
Im Prinzip arbeitet das in den Fign. 10 bis 21D gezeigte Gerät genauso wie das in den Fign. 3 bis 9 gezeigte zur Decodierung von Codes mit veränderlicher Länge (VL-Codes) in entsprechende Codes mit fester Länge (ID-Codes). Daher befaßt sich die folgende Beschreibung mehr mit der spezifischen Funktion der gezeigten Schaltung als mit dem hier zugrundeliegenden Arbeitsprinzip, welches aus der vorhergehenden Beschreibung als bekannt vorausgesetzt wird.
Bei der anschließenden genaueren Beschreibung wird zuerst angenommen, daß nur unabhängige Decodieroperationen auszuführen sind und eine derartige Operation wird im Zusammenhang mit den Fign. bis 16 beschrieben. Daran anschließend wird eine abhängige Decodieroperation im Zusammenhang mit dem in Fign. 17 bis 2ID gezeigten System beschrieben. Der Betrieb des unabhängigen Decodierers ist notwendigerweise eine Vorphase dieses abhängigen Decodierprozesses.
Docket YO 970 073 209835/1106
— 21 —
unabhängige Decodierung (Fign. 10-16)
Das Gerät zur Ausführung dieser Funktion ist allgemein in Fig. gezeigt. Es umfaßt einen Primärprozessor, der in Fig. 12 dargestellt ist, und den in Fig. 13 gezeigten Sekundärprozessor, die unabhängige in den Fign. 14-14C gezeigte Steuerlogik, den in Fig. 15 gezeigten Primär-Impulsgenerator und den in Fig. 16 gezeigten Sekundär-Impulsgenerator. Die unabhängige Steuerlogik der Fig. IO spricht auf Taktimpulse an, die durch die primären und sekundären Impulsgeneratoren geliefert werden und steuert den Betrieb des Primär- und des Sekundärprozessors. Die gegenseitigen Beeinflussungen dieser verschiedenen Einheiten werden jetzt erklärt.
Bekanntlich wird vorausgesetzt, daß jeder durch den Decodierprozeß erzeugte ID-Code 8 Bits oder 1 Byte lang ist. Es wird angenommen, daß die Anzahl von in einem bestimmten Decodierlauf zu erzeugenden decodierten Informationsbytes vorher bekannt ist. Im ersten Schritt einer Decodieroperation wird daher die Gesamtzahl der zu erzeugenden decodierten Bytes in einen Bytezähler 50 in Fig. 14B eingegeben. Ein Impuls wird dann auf eine Startleitung 52 in Fig. 15 gelegt, um den Decodierprozeß einzuleiten.
Fig. 11 zeigt in einem Ablaufdiagramm den unabhängigen Decodierprozeß. Die verschiedenen Kästen oder Schritte in diesem Ablaufdiagramm sind durch Zeichen wie Pl, Sl usw. bezeichnet, die ebenfalls für die verschiedenen Leitungen verwendet werden, die von 'den entsprechenden monostabilen Kippschaltungen MK der in den Fign. 15 und 16 gezeigten Impulsgeneratoren kommen. Das Anlegen eines Impulses an eine dieser Leitungen leitet den durch die entsprechende Zahl im Ablaufdiagramm der Fig. 11 bezeichneten OperationsschrLtt ein. Um die Arbeitsweise der hier beschriebenen Schaltung besser verstehen zu können, sollte dauernd auf dieses Ablaufdiagramm Bezug genommen werden.
Docket «> »70 073 20S)8-JS/ 11 06
Der an die Leitung 52 in Fig. 15 angelegte Startimpuls wird über das ODER-Glied 54 an die monostabile Kippschaltung 56 weitergeleitet. Dadurch wird ein Unterprogramm begonnen, welches aus den Schritten Pl bis P5 besteht (Fig. 11) und acht Datenbits in den Primärprozessor einleitet. Wenn die monostabile Kippschaltung 56 einschaltet, legt sie einen Impuls auf eine Leitung Pl, der über das Kabel 58 in den Fign. 15, 14C, 14B und 14A und von dort durch das Kabel 60 in den Fign. 14A und 12 an eine Einheit läuft und die Eingabe der binären Menge 111 (dezimal 7) in einem Zähler 62 im Primärprozessor der Fig. 12 veranlaßt. Dieser Zähler 62 ist eigentlich ein Teil des in Fig. 4 gezeigten Datenregisters 20, welches zum Priraärprozessor P gehört und empfängt in nachfolgenden Operationen die Längendarstellungen (L), die aus dem Speicher 12 ausgelesen werden. Aus diesem Grunde wird er auch gelegentlich als Längenzähler bezeichnet.
Die Einstellung des Zählers 62 in Fig. 12 wird durch den Konverter 64 entweder in ein O-Ausgangssignal auf der Leitung 66 oder ein Nicht-O-Ausgangssignal auf der Leitung 68 umgewandelt. Diese Leitungen 66 und 68 laufen durch das Kabel 70 in den Fign. 12 und 14A zu einem Tor 72/ welches zum gegenwärtigen Zeitpunkt zur Leitung von Signalen nicht vorbereitet ist.
Wenn die monostabile Kippschaltung 56 in Fig. 15 abschaltet, legt sie ein Signal über das ODER-Glied 74 an die monostabile Kippschaltung 76, die eingeschaltet wird und einen Impuls auf die Leitung P2 leitet, welcher über das Kabel 58 in Fign. 15 und 14C, 14B und 14A läuft und von dort durch das ODER-Glied 78 in Fig. 14A und die Ader 80 in Kabel 60 in den Fign. 14A und 12 zu einer nicht dargestellten Schiebeeinheit, so daß der Inhalt des Adreßregisters 10 in Fig. 12 um 1 Bit nach links verschoben und dadurch die wertniederste Position des Registers 10, welches mit einer Kapazität von 8 Bits angenommen wird, zum Empfang eines hereinkommenden Bit vorbereitet wird.
Wenn die monostabile Kippschaltung 76 in Fig. 15 auschaltet, schaL-
209835/1106
Docket ¥0 970 07 3
tet sie die monostabile Kippschaltung 82 ein, die einen Impuls auf die Leitung P 3 setzt, die zum ODER-Glied 84 in Fig. 14A führt und einen Impuls über die Leitung 86 in den Fign. 14A und 12 zu einem Tor 88 leitet, um ein neues Bit in das Adreßregister 10 an dessen wertniederem Ende einzugeben. Gleichzeitig wird die Erregung über eine Verzögerungseinheit 90 in Fig. 12 auf die Eingabeeinheit ausgedehnt, so daß ein neues Bit zur Einleitung beim nächsten Mal bereitsteht, wenn das Tor 88 gepulst wird.
Wenn die monostabile Kippschaltung 82 in Fig. 15 ausschaltet, schaltet sie die monostabile Kippschaltung 92 ein, so daß ein Impuls durch die Ader P4 in den Fign. 15 und 14A zum oben erwähnten Tor 72 läuft, an welches auch das Ausgangssignal des Konverters 64 in Fig. 12 angelegt wird. Wenn die Einstellung des Zählers 62 nicht 000 ist, wird die Schaltung weitergeführt durch die Ader 94 in Kabel 96 der Fign. 14A, 14B, 14C und 15 zu einer monostabilen Kippschaltung 98, um diese einzuschalten. Es wird angenommen, daß dieser Vorgang im vorliegenden Beispiel abläuft. Wenn die monostabile Kippschaltung 98 einschaltet, legt sie einen Impuls über die Ader P4 in den Fign. 15 und 14A an das ODER-Glied 100 und die Ader 102 in den Fign. 14A und 12 an eine Rückschalteinheit für den Zähler 62. Dadurch wird die Einstellung des Zählers 62 um 1 zurückgeschaltet.
Wenn die monostabile Kippschaltung 98 in Fig. 15 abschaltet, erweitert sie den Stromkreis rückwärts durch eine Ader 104 und das ODER-Glied 74 zur monostabilen Kippschaltung 76, die sie wieder erregt. Die oben beschriebenen Schritte zur Erregung der Leitungen P2, P3 und P4 werden dann nacheinander wiederholt. Wenn der Impuls P4 angelegt wird, wird die stellung des Zählers 62 in Fig. 12 wieder geprüft und wenn sie von 000 verschieden ist, ein weiterer Zyklus der Schritte P5, P2, P3 und P4 ausgeführt. Die verschiedenen zur Erzeugung der Impulse P2 bis P5 gehörenden Aktionen sind unten aufgeführt:
Docket YO 970 073 209835/1106
P2 Inhalt des Argumentenregisters 10 um 1 Bit nach links schieben.
P3 Ein Bit von der Eingabeeinheit in die niederste Stelle des Registers IO einleiten.
P 4 Stellung des Zählers 62 prüfen. Wenn von 000 verschieden, nach P5 gehen, sonst nach P6.
P5 Stellung des Zählers 62 um 1 erniedrigen. Zurück nach P2 gehen.
Wenn schließlich acht Bits in das Adreßregister 10 der Fig. 12 eingeleitet wurden, ist die Einstellung des Zählers 62 zurück auf OOO erfolgt. Wenn unter diesen Umständen die Leitung P4 in den Fign. 15 und 14A zur Betätigung des Tores 72 einen Impuls erhält, läuft das OOO-Ausgangssignal vom Konverter 64 in Fig. 12 durch die Ader 66 und das ODER-Glied 72 sowie die Leitung 106 in Kabel 96 und von dort durch das ODER-Glied 108 in Fig. 15 zur monostabilen Kippschaltung 110. Damit wird angezeigt, daß die acht Datenbits in das Adreßregister 10 eingegeben wurden und der Primärprozessor ist jetzt zum Beginn der Decodierung dieser Information bereit.
Wenn die monostabile Kippschaltung 110 in Fig. 15 einschaltet, leitet sie einen Impuls über die Leitung P6 zur Einleitung des entsprechenden Schrittes P6 im Ablaufdiagramm der Fig. 11. Der Impuls auf der Leitung 6 wird durch die Kabel 58 und 60 in den Fign. 15 und 12 zu Einrichtungen zur Ausführung eines Lesezugriffs des' £p«£chers 12 im Primärprozessor geführt. Dadurch wird die in SpelxÄDpf 12 an der im Register 10 angegebenen Adresse gespeicherte^ Information in das Datenregister 20 ausgelesen. Dieses Datenregister 20 besteht aus drei Teilen, die entsprechend zu den Feldern C, L und AB des Speichers 12 gehören. Das aus dem C-FeId ausgelesene einzelne Bit wird in ein Flip-Flop' 112 gegeben, welches ein Teil des Registers 20 ist. Der Inhalt des L-Feldes
209835/1106
Docket YO 970 073
ORIGINAL INSPECTED
em der adressierten Stelle wird im vorliegenden Beispiel mit drei Datenbits angenommen und in den im Register 20 enthaltenen Zähler 62 eingegeben. Der aus dem AB-FeId ausgelesene Teil besteht aus einem 8 Bit großen Code und wird in einem Coderegister 114 gespeichert, welches den dritten Teil des Datenregisters 20 bildet.
Wenn die Leitung P6 in den Fign. 15 und 14A einen Impuls zur Einleitung der gerade beschriebenen Ausleseaktion erhielt, so wurde dadurch auch eine Leitung 114 in den Fign. 14A und 14B erregt, um den Bytezähler 50 zurückzuschalten. Für den vorliegenden Fall wird angenommen, daß diese Aktion den Bytezähler nicht auf 0 zurückstellt. Ein in Fig. 14B gezeigter Konverter 116, der zum Bytezähler 50 gehört, liefert ein 0- oder ein l?icht-O-Ausgangssignal in Abhängigkeit von der Zählereinstellung. Die Auswirkungen dieses Ausgangssignales werden jetzt beschrieben.
Wenn die monostabile Kippschaltung 110 in Fig. 15 abschaltet, sendet sie einen Impuls über das ODER-Glied 118 zu einer monostabilen Kippschaltung 120, die eingeschaltet wird und die Leitung P7 in den Fign. 15 und 14A erregt. Dadurch wird ein Tor 122 zur Weiterleitung des Ausgangssignales eines Flip-Flops 124 vorbereitet, dessen Einstellung angibt, ob die im Schritt P6 (Fig. 11) ausgeführte Lese-Zugriffsoperation abgeschlossen ist oder nicht. Wenn die Einstellung des Flip-Flops 124 eine 1 ist, heißt das, daß der Zugriff nicht beendet ist und dadurch wird ein Stromkreis weitergeführt über das Tor 122 und die Leitung 126 in den Fign. 14A und 15 zur monostabilen Kippschaltung 128, welche eingeschaltet wird und den Stromkreis weiterführt über eine Leitung P8 und ein ODER-Glied 118, zurück zur monostabilen Kippschaltung 120. Dadurch wird sichergestellt, daß diese eingeschaltet bleibt, bis die Lese-Zugriffsoperation abgeschlossen ist. Wenn diese Operation abgeschlossen ist, liefert der Speicher 12 in Fig. 12 ein Signal auf die Leitung 132 in den Fign. 12 und 14A, um das Flip-Flop 124 auf 0 zurückzustellen. Das Tor 122 leitet jetzt das Signal über eine Leitung 134 in den Fign. 14A und 15 auf eine mono-
209836/1106
Docket YO 970 073
stabile Kippschaltung 36 zur Einleitung des nächsten Schrittes (P9) der Operation.
Wenn die monostabile Kippschaltung 136 einschaltet, liefert sie einen Impuls auf die Leitung P9 in den Fign. 15 und 14B zur Betätigung eines Tores 138, welches als Eingangssignale über die Leitungen 140 oder 142 in den Fign. 14B und 12 das O-Ausgangssignal oder das 1-Ausgangssignal des Flip-Flops 112 empfängt, welches das einzelne C-Bit speichert. Wenn das C-Bit eine 1 ist, heißt das bekanntlich, daß der gegenwärtig zu decodierende VL-Code eine Länge von mehr als 8 Bits hat. Wenn das nicht der Fall ist, hat das Flip-Flop 112 in Fig. 12 eine O gespeichert. Für den vorliegenden Fall wird angenommen, daß der laufende VL-Code eine Länge von 8 Bits nicht überschreitet und somit ist das C-Bit O und demzufolge wird die Leitung 140 in den Fign. 12 und 14B erregt. Unter diesen Umständen wird durch das Signal auf der Leitung Pd das Tor 138 so erregt, daß ein Signal auf die Leitung 144 in den Fign. 14B und 15 gegeben wird, welches dann über das ODER-Glied 146 zur monostabilen Kippschaltung 148 weiterläuft.
Wenn die monostabile Kippschaltung 148 einschaltet, gibt sie einen Impuls auf die Leitung PlO in den Fign. 15 und 14B und betätigt ein Tor 150. Durch diese Einleitung einer Prüfung soll festgestellt werden, ob die Operation des Sekundärprozessors abgeschlossen wurde. Wenn der Sekundärprozessor zur Decodierung eines vorhergehenden VL-Codes mit einer Länge von mehr als 8 Bits in Betrieb genommen wurde, muß sichergestellt werden, daß er diese Decodierung abgeschlossen hat, bevor der Betrieb des Primärprozessors wieder aufgenommen wird. Im vorliegenden Fall wurde ja angenommen, daß der Sekundärprozessor vorher nicht in Betrieb war. Trotzdem muß die Prüfung ausgeführt werden, da sie ein Teil des Verfahrens ist. Es wird angenommen, daß das Flip-Flop 152 in Fig. 14B, welches den Betriebszustand des Sekundärprozessors anzeigt, die O-Einstellung aufweist. Dadurch wird ein Signal über das Tor 150 und die Leitung 154 in den Fign. 14B und 15 auf eine monostabile Kippschaltung 156 geleitet. Wenn der Sekundärprozessor
209838/1106
Docket YO 970 073
in Betrieb war, ist jedoch das Flip-Flop 152 in Fig. 14B auf 1 gestellt und veranlaßt so ein Signal über das Tor 150 und die Leitung 158 in den Fign. 14B und 15 und schaltet eine monostabile Kippschaltung 160 ein, die dann einen Impuls auf die Leitung Pll gibt. Dadurch bleibt eine monostabile Kippschaltung 158 erregt und der Impuls PlO wird so lange gehalten, wie der Sekundärprozessor noch arbeitet.
Wenn jetzt angenommen wird, daß der Sekundärprozessor nicht arbeitet und die monostabile Kippschaltung 156 in Fig. 15 eingeschaltet wurde, dann wird ein Impuls über die Leitung Pl2 in den Fign. 15 und 14C an das Tor 162 gegeben. Durch die Erregung des Tores 162 wird der im Teil 114 des Datenregisters 20 in Fig. 12 gespeicherte ID-Code über die Kabel 163, 70 und 164 in den Fign. 12 und 14C an eine Ausgabeeinheit geleitet. Hierbei handelt es sich um die Ausgabe einer Decodieroperation, die durch den Primärprozessor P ausgeführt wurde, wenn der eingegebene VL-Code höchstens 8 Bits lang war.
Wenn am Ende der soeben beschriebenen Ausgabeoperation die monostabile Kippschaltung 156 ausschaltet, schaltet sie die nächste monostabile Kippschaltung 166 ein, die dann Impulse auf die Leitung P13 in den Fign. 15 und 14B gibt. Dadurch wird ein Tor 168 eingeschaltet und stellt mit einer Prüfung fest, ob die Bytezählereinstellung auf 0 zurückgestellt wurde. Ist das der Fall, wird mit einem erzeugten Signal angezeigt, daß das Ende des Programmes erreicht ist. Wenn die Bytezählereinstellung nicht auf 0 zurückgestellt wurde, läuft die Operation zum nächsten Schritt weiter. Das Nicht-O-Signal von Decodierer 116 läuft über das Tor 168 zur Leitung 170 in den Fign. 14B und 15 und Ober das ODER-Glied 172 zur monostabilen Kippschaltung 174, die dadurch eingeschaltet wird und einen Impuls auf die Leitung P14 gibt. Jetzt wird eine Reihe von in den Fign. 11 bis 14 gezeigten Schritten P14 bis P17 ausgeführt, um den nächstfolgenden VL-Code in Deco* dierposition zu bringen. Zu dieser Schrittfolge gehört die Verschiebung des Inhaltes des Adreßregisters 10 in Fig. 12 nach links
209836/1106
Docket YO 970 073
um eine Anzahl Bitpositionen, die gleich der Länge des soeben decodierten VL-Codes ist. Dadurch wird der nächste VL-Code in die werthöchsten Positionen des Registers 10 gesetzt.
Durch einen an die Leitung P14 in den Fign. 15 und 14A gelegten Impuls wird die Erregung durch das ODER-Glied 78 und die Leitung 80 in den Fign. 14A und 12 auf die Links-Schiebeeinrichtung für das Adreßregister 10 im Primärprozessor P übertragen. Der Inhalt des Registers 10 wird daraufhin um eine Bitposition nach links geschoben. Eine monostabile Kippschaltung 174 in Fig. 15 schaltet ab und dadurch die monostabile Kippschaltung 176, die einen Impuls auf die Leitung P15 in den Fign. 15 und 14A gibt. Dieser Impuls läuft dann durch das ODER-Glied 84 und die Leitung 86 in den Fign. 14A und 12 zu den Eingabeeinrichtungen 88 bis 90 und leitet dadurch ein neues VL-Codebit in die wertniederste Position des Adreßregisters 10.
Wenn der Speicher 12 des Primärprozessors in Fig. 12 während des Schrittes P6 (Fig. 11) gemäß obiger Beschreibung adressiert wurde, wurde der Inhalt der Felder C, L und AB an der gewählten Adresse in das Datenregister 20 ausgelesen. Zu diesem Zeitpunkt wurde der L-Wert im Zähler 62 gespeichert, der ein Teil des Registers 20 ist. Im vorliegenden Ausführungsbeispiel ist der L-Wert um 1 kleiner als die Länge des VL-Codes, wenn diese Codelänge 8 Bits nicht überschreitet. (Die Bedeutung des L bei einer größeren Codelänge als 8 Bit wird später erklärt). Somit speichert der in Fig. 12 gezeigte Zähler 62 jetzt den L-Wert des VL-Codes der gerade decodiert und aus dem Coderegister 114 im Schritt P12 der Fig. ausgelesen wurde. Dieser L-Wert bestimmt die Anzahl der Linksverschiebungen, die im Argumentenregister 10 durchgeführt werden muß, um den nächstfolgenden VL-Code in die richtige Registrierung zur Decodierung zu bringen.
Eine Linksverschiebung wurde bereits aufgrund der Erregung der monostabilen Kippschaltung 174 in Fig. 15 und der Leitung Pl4 vorgenommen, und ein neues Datenbit wurde in das Adreßregister
209835/1106
Docket YO 970 073
eingegeben aufgrund der Erregung der monostabilen Kippschaltung 176 und der resultierenden Pulsbeaufschlagung der Leitung P15. Wenn jetzt die monostabile Kippschaltung 176 ausschaltet, schaltet sie eine monostabile Kippschaltung 178 ein und gibt dadurch einen Impuls auf die Leitung P14 in den Fign. 15 und 14C. Dadurch wird ein Tor 180 zur Leitung eines Signales vorbereitet, welches entweder auf der Leitung 66 oder auf der Leitung 68 in den Pign. 14C und 12 erscheint, abhängig davon, ob die Einstellung des Längenzählers 62 000 beträgt oder nicht. Steht der Zähler nicht auf diesem Wert, setzt der Konverter 64 in Fig. 12 ein Signal auf die Leitung 68 und dieses läuft durch das Tor 180 in Fig. 14C auf eine Leitung 182 und erregt die monostabile Kippschaltung. 184. Infolgedessen wird die Leitung P17 in den Fign. 15 und 14A erregt und dieser Impuls läuft dann durch das ODER-Glied 100 und die Leitung 102 in den Fign. 14A und 12 zu einer Einheit zur Zurückstellung des Längenzählers 62 um 1.
Eine monostabile Kippschaltung 184 (Fig. 15) schaltet aus und legt einen Impuls über die Leitung 186 und das ODER-Glied 172 an die monostabile Kippschaltung 174, wodurch die Folge der Schritte P14 und folgende wieder eingeleitet wird. Diese Folge wird so oft wiederholt, bis die Rückstellung des Längenzählers 62 auf 000 erfolgt ist. Im Laufe dieser Aktionen wurde der Inhalt des Adreßregisters 10 in Fig. 12 um L+l Bitpositionen geschoben aufgrund der Tatsache, daß die erste Verschiebung erfolgt, bevor die Einstellung des Längenzählers das erste Mal geprüft und zurückgestellt wird.
'Schließlich erfolgt die Einstellung des Längenzählers 62 in Fig. 12 auf 000, wenn die Rückstelloperation (Schritt P17) oft genug ausgeführt wurde. Danach folgen noch ein Verschiebeschritt (P14) und ein Einleitungsschritt (P15). Während dann die monostabile Kippschaltung 178 wieder einschaltet, um die Leitung P16 in den Fign. 15 und 14C zu erregen, wird das Tor 180 vorbereitet zur Leitung des O-Ausgangssignales von der Leitung 66 in den Fign. und 14C. Dieses O-Signal läuft dann über eine Leitung 188 und
209838/1106
Docket YO 97O 073
ein ODER-Glied 108 in Fig. 15 zu einer monostabilen Kippschaltung 110, schaltet diese ein und erregt die Leitung P6. Aus den Fign. 11 und 12 ist zu ersehen, daß die Erregung der Leitung P6 einen neuen"Zugriff auf den Primärprozessorspeicher 12 einleitet. Der erste Teil des neuen VL-Codes wurde jetzt in die höchsten Positionen des Adreßregisters 10 verschoben und das System ist daher startbereit für die Decodierung dieses neuen VL-Codes.
Das Unterprogramm/ welches die Schritte P14 bis P17 in Fig. 11 umfaßt, kann folgendermaßen zusammengefaßt werden:
Pl4 Linksverschiebung des Inhaltes des Adreßregisters 10 um 1 Bit.
P15 Ein Bit in Adreßregister 10 einleiten.
Pl6 Einstellung des Längenzählers 62 prüfen. Wenn nicht 000, Weiterführung mit Schritt P17. Wenn 000, Weiterführung mit Schritt P6.
Pl7 Längenzählereinstellung um 1 herabsetzen. Weiterführung mit Schritt P14.
In dieser genauen Beschreibung wurde nur der Fall betrachtet, in welchem die Länge des VL-Codes 8 Bits nicht überschreitet. Die Decodierung eines solchen VL-Codes benötigt den Sekundärprozessor S in den Fign. 4 bis 13 nicht.
Anschließend wird ein Fall betrachtet, in welchem der VL-Code länger als 8 Bits ist. Die ersten 8 Bits dieses VL-Codes werden im Adreßregister 10 in Fig. 12 gespeichert. Dieser aus 8 Bits bestehende Vorderteil des VL-Codes wird am Anfang durch den Primärprozessor P so behandelt, als ob er einen ganzen aus 8 Bits bestehenden VL-Code bildete. D.h., der Primärprozessor führt die Schritte P6 bis P9 in Fig. 11 genauso aus wie für jeden anderen VL-Code. In diesem Fall ist jedoch das im Flip-Flop 112 gespei-
209835/1106
Docket YO 970 073
cherte C-Bit 1 und nicht O. Der L-Wert ist jetzt nicht um 1 kleiner als die Codelänge, sondern um 1 kleiner als die Differenz zwischen der Codelänge und 8 Bits, und dieser Wert ist im Längenzähler 62 gespeichert. Der aus dem AB-FeId gelesene und im Coderegister 114 gespeicherte Wert ist in diesem Fall nicht ein vollständig decodierter ID-Code, sondern ein Wert, der zusammen mit neuen Daten zu einer neuen Adresse zur Lokalisierung des ID-Codes im Sekundärprozessorspeicher 26 der Fign. 4 und 13 umgewandelt werden kann.
Aus der vorhergehenden Beschreibung ist bekannt, daß bei Erreichen des Schrittes P9 im Ablaufdiagramm der Fig. 11 die Leitung P9 in den Fign. 15 und 14B einen Impuls erhält und das Tor 138 vorbereitet zur Leitung entweder eines O-Ausgangssignales oder eines 1-Ausgangssignales vom das C-Bit speichernden Flip-Flop 112 in Fig. 12. Im vorliegenden Fall, wo der VL-Code langer als 8 Bits ist, hat das C-Bit den Wert 1. Somit wird die von der 1-Seite des Flip-Flop 112 kommende Leitung 142 erregt und das Signal auf dieser Leitung 142 läuft jetzt durch das Tor 138 in Fig. 14B zu einer Leitung 190, die über ein ODER-Glied 192 in Fig. 15 mit dem Eingang der monostabilen Kippschaltung 194 verbunden ist. Diese monostabile Kippschaltung schaltet jetzt ein und erregt die Leitung P18 in den Fign. 15 und 14B und bereitet dadurch ein Tor 196 vor zur Leitung des 1-Signales oder O-Signales vom Flip-Flop 152 gemäß obiger Beschreibung. Der Zustand des Flip-Flops 152 zeigt den Betriebsstatus des Sekundärprozessors in einer anschließend beschriebenen Weise an. Wenn der Sekundärprozessor noch von einer vorhergehenden Decodieroperation her in Betrieb ist, steht im Flip-Flop 152 eine 1. Unter diesen Umständen wird das 1-Signal jetzt durch das Tor 196 in Fig. 14B auf eine Leitung 198 geleitet und schaltet eine monostabile Kippschaltung 200 in Fig. 15 ein. Das Ausgangssignal von der monostabilen Kippschaltung 200 erscheint auf einer Leitung P19, von wo es durch das Oder-Glied 192 zur monostabilen Kippschaltung 194 zurückläuft und dadurch die Ausgangsleitung Pl8 und die monostabile Kippschaltung 194 so lange erregt hält, wie der Status des Flip-Flop 152 in Fig. 14B auf
209835/1106
Docket YO 970 073
1 stehen bleibt, d.h. so lange der Sekundärprozessor noch von einer vorhergehenden Decodieroperation her in Betrieb ist.
Jetzt wird angenommen, daß sich der Sekundärprozessor S im Leerlauf befindet und das Flip-Flop 152 auf O steht. Zu dem Zeitpunkt, an welchem die Leitung P18 erregt wird, leitet das Tor 196 in Fig. 14B das O-Ausgangssignal vom Flip-Flop 152 über eine Leitung 202 in den Fign. 14B und 15 zu einer monostabilen Kippschaltung 204, welche eingeschaltet wird und einen Impuls auf die Leitung P20 in den Fign. 15 und 14C gibt. Dieser Impuls bereitet ein Tor 206 in Fig. 14C zur Übertragung des Inhaltes des Coderegisters 114 im Datenregister 20 der Fig. 12 vor auf das Adreßregister 24 des Sekundärprozessors S in den Fign. 13 und 14. Verfolgt man diese Operation im einzelnen, so werden die im Coderegister 114 gespeicherten acht Bits parallel über die Kabel 163 und 70 in den Fign. 12, 14A, 14B und 14C übertragen und laufen von dort über ein Kabel 208 zum Tor 206 und die Kabel 210 und 212 zum Kabel 214 in Fig. 13, welches zum Adreßregister 24 im Sekundärprozessor S führt. Wie bereits gesagt, handelt es sich hierbei um eine parallele Bitübertragung, in welcher aller aus dem Coderegister 14 der Fig. 12 ausgelesenen acht Bits gleichzeitig in das Adreßregister 24 der Fig. 13 eingegeben werden.
Somit wird der aus dem Register 114 aufgrund der ersten acht Bits des laufenden VL-Codes ausgelesene 8 Bit große Code jetzt zur Basisadresse für die Lokalisierung des endgültigen ID-Codes im Sekundärprozessor S. Die durch den Sekundärprozessor S ausgeführte Decodieroperation beginnt mit dem Abschalten der monostabilen Kippschaltung 204 in Fig. 15, wodurch ein Impuls auf die Leitung P201 in Fig. 15 und 14B gegeben wird. Durch diesen Impuls auf der Leitung P201 wird einmal das Status-Flip-Flop 152 auf 1 gesetzt und dadurch angezeigt, daß der Sekundärprozessor jetzt in Betrieb ist. Weiterhin läuft die Leitung P201 über ein Kabel 220 in den Fign. 14B, 14C und 16 zu einer ODER-Schaltung 222 und zu einer monostabilen Kippschaltung 224 im Sekundärimpulsgenerator der Fig. 16. Die Pulsierung der Leitung P201
209835/1106
Docket YO 970 073
resultiert also im Einschalten der monostabilen Kippschaltung 224, wodurch ein Impuls auf die Leitung Sl gelegt wird, die über das Kabel 225 in den Pign. 16 und 14C und von dort über ein Kabel 212 weiterführt zu einer Schiebeeinrichtung für das in Fig. 13 gezeigte Adreßregister 24 im Sekundärprozessor S. Dadurch beginnt eine Folge von Schritten Sl bis S4 in Fig. 11 zur Einleitung der verbliebenen L+l Bits des laufenden VL-Codes in das in Fig. 13 gezeigte Adreßregister 24.
Durch den Impuls auf der Leitung Sl wird der Inhalt des Adreßregisters 24 um.1 Bit nach links geschoben. Wenn dann die monostabile Kippschaltung 224 im Sekundär-Impulsgenerator der Fig. 16 abschaltet, schaltet die monostabile Kippschaltung 228 ein und gibt einen Impuls auf die Leitung S2 in den Fign. IS und 14C, der weiterläuft über die Kabel 226 und 212 zur Einleiteinrichtung für den Sekundärprozessor S in Fig. 13, welche aus einem Tor 230 und einer Verzögerungsschaltung 232 besteht. Die Erregung des Tores 230 gestattet den Durchlauf des nächsten Codebits von der Eingabeeinheit in die wertniederste Position des Adreßregisters 24. Über die Verzögerungsleitung 232 erhält die Eingabeeihheit dann Impulse derart, daß das nächste VL-Codebit zur Eingabe in das Adreßregister 24 bereit steht, wenn das Tor 230 beim nächsten Mal erregt wird.
Wenn die monostabile Kippschaltung 228 in Fig. 16 ausschaltet, schaltet die monostabile Kippschaltung 234 ein und gibt einen Impuls auf die Leitung S3, welche ein Tor 236 in Fig. 14C zum Durchlassen entweder eines O-Ausgangssignales oder eines Nicht-O-Ausgangssignales vom Konverter 64 in Fig. 12 vorbereitet, der zum Längenzähler 62 im Datenregister 20 des Primärprozessors P gehört. Die im Zähler 62 registrierte Zahl ist der laufende L-Wert, der im vorliegenden Beispiel um 1 kleiner ist als die Anzahl der Bits, um welche der laufende VL-Code die 8 Bits überschreitet, die bereits teilweise decodiert wurden. Wenn angenommen wird, daß der Längenzähler 62 gegenwärtig einen von O verschiedenen Wert (d.h. einen anderen Wert als 000) enthält, so wird die Leitung 68 erregt
209835/1106
Docket YO 970 073
und diese Erregung durch das Tor 236 in Fig. 14C weitergeführt über die Leitung 238 in den Fign. 14C und 16 zur monostabilen Kippschaltung 240, welche einschaltet und einen Impuls auf die Leitung S4 in den Fign. 16 und 14A gibt. Der Impuls auf der Leitung S4 läuft weiter durch das ODER-Glied 100 und die Leitung 102 in den Fign. 14A und 12 zu einer Rückschalteinheit im Längenzähler 62 und reduziert die Einstellung dieses Zählers um 1.
Wenn die monostabile Kippschaltung 240 in Fig. 16 abschaltet, sendet sie einen Impuls über die Leitung 242 und das ODER-Glied 222 zurück zur Eingangsseite der monostabilen Kippschaltung 224, die dann einschaltet und eine neue Folge der Schritte ab Sl einleitet, die gerade beschrieben wurde. Diese Folge wird so oft wiederholt, bis die übrigen L+l Bits des vorliegenden VL-Codes in das Adreßregister 24 in Fig. 13 gebracht und der Inhalt dieses Registers um denselben Betrag nach links geschoben ist, wie diese Bits eingegeben wurden. Zum Schluß speichert das Adreßregister 24 den Rest des 8-Bitcode, der am Anfang aus dem Coderegister 114 in Fig. 12 übertragen wurde (nachdem die ersten L+l Bits aus dem Register 24 geschoben wurden), und die L+l Bits, die im laufenden VL-Eingabecode gelassen wurden, nachdem dessen erste acht Bits im Primärprozessor P verarbeitet worden waren. Das Register 24 speichert also effektiv jetzt eine Kombination aus einer Basisadresse und einem relativen Adreßwert, wie oben erklärt wurde. Die im Adreßregister 24 jetzt registrierte Menge ist die Adresse im Speicher 26, bei welcher der endgültige ID-Code zu finden ist.
An diesem Betriebspunkt wird die Einstellung des Längenzählers 62 in Fig. 12 auf 000 reduziert. Unter dieser Bedingung wird bei Pulsierung der Leitung S3 in Fig. 16 das Tor 236 in Fig. 14C vorbereitet zum Durchlassen des O-Ausgangssignales von der Leitung 66 in den Fign. 12 und 14C auf eine Leitung 244 in den Fign. 14C und 16, die zu einer monostabilen Kippschaltung 246 führen. Wenn diese monostabile Kippschaltung einschaltet, gibt sie einen Impuls auf die Leitung S5 in den Fign. 16 und 14B und erregt ein Tor 248 zur Prüfung der Einstellung des ByteZählers 50. Dieser Schritt
209835/1106
Docket YO 970 073
ist in Fig. 11 als Schritt S5 dargestellt. Es wird angenommen, daß die Einstellung des Bytezählers nicht auf O reduziert wurde, und dann läuft ein Nicht-O-Ausgangssignal vom Konverter 116 über das Tor 248 und die Leitung 250 in den Fign. 14B und 15 zum ODER-Glied 54 und zur Eingangsseite der monostabilen Kippschaltung im Primär-Impulsgenerator. Dieselbe Leitung 250 ist auch über ein ODER-Glied 252 in Fig. 16 mit der Eingangsseite einer monostabilen Kippschaltung 254 im Sekundär-Impulsgenerator der Fig. verbunden. Im Ablaufdiagramm der Fig. 11 ist dieser Vorgang durch die Flußlinien dargestellt, die vom "NEIN"-Ausgang des Schrittes S5 zu den Eingängen der Schritte Pl und S6 führen. Diese Doppelaktion hat folgenden Grund:
Wie oben erklärt wurde, kann Betriebszeit eingespart werden, wenn der Primärprozessor mit der Decodierung des nächsten VL-Codes bereits beim Eingeben des Bitstroms beginnen kann, während der Sekundärprozessor S noch arbeitet. Nachdem die übrigen L+l Bits des laufenden VL-Codes in den Sekundärprozessor eingeleitet wurden (Schritte Sl bis S4 in Fig. 11), kann der Primärprozessor die nächsten acht VL-Codebits in dem Bitstrom empfangen, und seine Tätigkeit stört nicht die übrige Operation des Sekundärprozessors. Auf diese Weise wird eine teilweise Überlappung in den entsprechenden Operationen des Primär- und des Sekundärprozessors erreicht und dadurch eine beträchtliche Menge Betriebszeit eingespart.
Die in Fig. 16 gezeigte monostabile Kippschaltung 254 schaltet ein, wenn ein Impuls über die Leitung S6 zur Lese-Zugriffseinrichtung weitergeführt wird, die zum Speicher 26 in Fig. 13 des Sekundärprozessors S gehört. Damit beginnt die Adressierung des Speichers des Sekundärprozessors zur Lokalisierung des durch die jetzt im Register 24 stehende Adresse angegebenen ID-Codes. Um dem Rest des Systemes anzuzeigen, daß diese Adressieroperation abläuft, wird das in Fig. 14C gezeigte Flip-Flop 256 auf 1 gesetzt aufgrund des Impulses auf der Leitung S6.
Docket YO 970 073 209835/1106
In obiger Beschreibung wurde angenommen, daß die Einstellung des Bytezählers 50 in Fig. 14B von OOO verschieden war, wenn er im Schritt S5 der Fig. 11 geprüft wurde. Wenn die Einstellung des Bytezählers 0 war (und damit angezeigt wurde, daß der letzte eingegebene VL-Code jetzt gerade decodiert wird), ist die soeben beschriebene Operation genau dieselbe, jedoch wird kein neues Startsignal zu dem Primärprozessor zurückgesendet. Durch Betätigung des in Fig. 14B gezeigten Tores 248 unter diesen Umständen wird ein O-Signal vom Decodierer 116 über eine Leitung 248 zur ODER-Schaltung 252 in Fig. 16 geleitet, die zu der monostabilen Kippschaltung 254 gehört. Die Auswirkung auf die monostabile Kippschaltung 254 ist also dieselbe ungeachtet dessen, ob die Leitung 250 oder die Leitung 258 erregt ist. Wenn die Leitung 250 jedoch nicht erregt wird, wird der Betrieb des Primärimpulsgenerators in Fig. 15 verhindert, so daß der Primärprozessor unter diesen Umständen im Leerlauf verbleibt.
Wenn der in Fig. 13 gezeigte Speicher 26 des Sekundärprozessors adressiert wird (Schritt S6 in Fig. 11), wird der der im Register 24 gespeicherten Adresse entsprechende ID-Code in ein Datenregister 28 im Sekundärprozessor S gelesen. Wie bereits gesagt, steht zu diesem Zeitpunkt das Status-Flip-Flop 256 in Fig. 14C auf 1. Wenn die monostabile Kippschaltung 254 in Fig. 16 ausschaltet, sendet sie einen Impuls über das ODER-Glied 260 zum Einschalten der monostabilen Kippschaltung 262. Diese gibt einen Impuls auf die Leitung S7 in den Fign. 16 und 14C zur Erregung des zu dem Ausgang des Flip-Flops 256 gehörenden Tores 264. Während der in Fig. 13 gezeigte Speicher 26 zum Lesen adressiert wird, liefert das Flip-Flop 256 ein 1-Ausgangssignal, welches durch das Tor und über die in den Fign. 14C und 16 gezeigte Leitung 266 zu der monostabilen Kippschaltung 268 läuft. Wenn diese monostabile Kippschaltung einschaltet, sendet sie einen Impuls über die Leitung S8 und das Oder-Glied 260 zurück zum Eingang der monostabilen Kippschaltung 262. Somit wird die Leitung S7 so lange erregt, wie der Lesezugriff abläuft.
Docket YO 970 073 209835/1106
Bei Beendigung des Lesezugriffs wird ein Impuls über die Leitung 270 in den Fign. 13 und 14C zu dem Flip-Flop 256 gesendet und dieses dadurch auf 0 zurückgestellt. Das O-Ausgangssignal vom Flip-Flop 256 läuft jetzt über das Tor 264 und die Leitung 272 zur monostabilen Kippschaltung 274 in Fig. 16, die einschaltet und einen Impuls auf die Leitung S9 gibt. Durch diesen Impuls wird das Tor 276 erregt zur übertragung des Inhaltes des in den Fign. 13 und 4 dargestellten Datenregisters 28 an eine Ausgabeeinheit, die im Ablaufdiagramm der Fig. 11 gezeigt ist. Insbesondere wird der jetzt im Datenregister 28 der Fig. 13 gespeicherte ID-Code als fertigdecodierter Ausgang über die Kabel 278 und 271 in den Fign. 13 und 14C und von dort über das Tor 278 auf ein Kabel 278 geleitet, welches zu der Ausgabeeinheit führt.
Wenn die in Fig. 16 gezeigte monostabile Kippschaltung 274 ausschaltet, schaltet sie die monostabile Kippschaltung 280 ein, die dann einen Impuls auf die Leitung SlO in den Fign. 16 und 14B gibt. Dadurch wird das Status-Flip-Flop 152 auf 0 zurückgestellt und angezeigt, daß die Operation des Sekundärprozessors S beendet ist. Diese Information wird an verschiedenen Punkten im Operationsablauf des Primärprozessors während der nachfolgenden Decodieroperation benötigt (d.h. in den Schritten PlO und P18 in Fig. 11). Die Erregung der Leitung SlO liefert gemäß obiger Beschreibung auch einen der Eingänge zu dem mit zwei Eingängen versehenen in Fig. 14B dargestellten UND-Glied 284. Der andere Eingang zu diesem UND-Glied 284 wird durch den Decodierer 116 geliefert, wenn die Einstellung des Bytezählers 50 auf 0 reduziert und dadurch angezeigt wird, daß keine weiteren VL-Codes zu decodieren sind. Wenn diese Bedingungen vorliegen, wird ein Signal "Programmende" an der Ausgangsseite des UND-Gliedes 284 geliefert. Wenn die Einstellung dea Bytezählers jedoch noch nicht auf 0 reduziert wurde, hat der Eingangssignalimpuls auf der Leitung SlO zum UND-Glied 284 keine Auswirkungen.
Bei der laufenden Decodierung ist der Betrieb des Sekundärprozessors jetzt beendet. Wenn weitere VL-Codes vorhanden sind, er-
209835/1106
Docket YO 970 073
folgt in der Zwischenzeit die Decodierung des nächstfolgenden VL-Codes im Primärprozessor. Sobald der Sekundärprozessor S für eine Decodierung gebraucht wird, beginnt die nächste Decodieroperation mit dem Einleiten von acht neuen VL-Codebits in den Primärprozessor P (Schritte Pl bis P5 in Fig. 11), weil alle acht Bits, die am Anfang im P-Adreßregister 10 in Fig. 12 gespeichert sind, zur Bildung einer neuen Adresse zwecks Lokalisierung des Ausgabe-ID-Codes im Sekundärprozessor S benutzt werden und keinen neuen VL-Codebits an den Prozessor P geliefert werden können, bis seine Operation nach dem Schritt S5 (Fig. 11) in der Operation des Sekundärprozessors zurückgestellt ist. Wenn der Betrieb des Prozessors S jedoch nicht betroffen ist, kann der Primärprozessor P über die Schritte P6 bis P17 in Fig. 11 unter Auslassung der Schritte Pl bis P5 selbst zurücklaufen. Wenn der letzte VL-Code in der Reihe kürzer als 9 Bits ist, wird im Schritt P13 das Signal "Programmende" erzeugt, welches sonst im Schritt SlO erzeugt wird.
Abhängige Decodierung (Fign. 17 bis 21C)
Fig. 17 zeigt in einem Blockdiagramm die Komponenten, die in einem erfindungsgemäßen abhängigen Decodierschema benutzt werden. Dieses Schema benutzt die folgenden Komponenten der unabhängigen Decodierung, die oben beschrieben wurden: Primärprozessor (Fig. 12), Sekundärprozessor (Fig. 13), Primär-Impulsgenerator (Fig. 15) und Sekundär-Impulsgenerator (Fig. 16). Außerdem verwendet der abhängige Decodierer einen abhängigen Prozessor (Fig. 19) und einen abhängigen Impulsgenerator (Fig. 20). Mit einer Steuerlogik, Fign. 2IA bis 21D, die eine erweiterte Version der in den Fign. 14A bis 14C gezeigten Steuerlogik ist, werden im abhängigen Prozessor die Operationen der verschiedenen oben erwähnten Einheit gesteuert.
Im abhängigen Betrieb folgt eine Operation des abhängigen Prozessors einer Operation des Sekundärprozessors in den Fällen, in denen dieser benutzt wird, und in den Fällen, in denen nur der
209835/1106
Docket YO 970 073
Primärprozessor benutzt wird, folgt dessen Operation unmittelbar einer Operation des abhängigen Prozessors.
Fig. 18 zeigt das Ablaufdiagramm des abhängigen Decodierprozesses. Die Operation des abhängigen Prozessors (Fig. 19) wird durch die Schritte Dl bis D7 an der rechten Seite der Fig. 18 bezeichnet. Diese Ablaufdiagrammschritte, deren Bezeichnungen die Vorsätze "DP" oder "DS" tragen, beziehen sich auf die Operationen des Primär- und Sekundärprozessors (Fig. 12 und 13) im abhängigen Decodierschema. In diesen Prozessoren oder ihren zugehörigen Impulsgeneratoren sind für deren Benutzung im abhängigen Decodierschema keinerlei strukturelle Änderungen erforderlich. Irgendwelche Unterschiede zwischen den "DP"-Schritten oder den "DS"-Schritten im Ablaufdiagramm der Fig. 18 und den entsprechend numerierten Schritten mit den Vorsätzen in "P" oder "S" im unabhängigen Decodier-Ablaufdiagramm der Fig. 11 sind ausschließlich auf die Steuerungen zurückzuführen, die von der in den Fign. 21A bis 21D gezeigten Steuerlogik ausgeführt werden, wie aus der nachfolgenden Beschreibung hervorgeht.
Die grundsätzliche Arbeitsweise der abhängigen Codierung und Decodierung ist an den Fign. 5-9 erläutert worden wie auch die grundlegende Arbeitsweise des Primär- und Sekundärprozessors und wird in der gegenwärtigen detaillierten Beschreibung als bekannt vorausgesetzt. Daher werden anschließend hauptsächlich die Merkmale und Einrichtungen der abhängigen Decodierung beschrieben, die sich von den Einrichtungen und Merkmalen der oben beschriebenen unabhängigen Decodierung unterscheiden oder zu diesen hinzukommen. In allen anderen Fällen ist auf die im Zusammenhang mit den Fign. 10 bis 16 gegebene Beschreibung Bezug zu nehmen.
Um die Elemente der unabhängigen Steuerlogik in den Fign. 14Ά bis 14C mit den entsprechenden Elementen der abhängigen Steuerlogik in den Fign. 21A bis 21D in Beziehung zu setzen, sind die Elemente in den beiden Logikdiagrammen mit ähnlichen Bezugszahlen bezeichnet. In einigen Fällen ist jeder dieser Bezugszahlen
209835/1106
Docket YO 970 073
in den Fign. 21A bis 21D der Zusatz HD" angehängt. Das Kabel 7OD in Fig. 2IA entspricht z.B. dem Kabel 70 in den Fign. 12 und 14A bis 14C. In anderen Fällen wird ein Zusatz 11D" verwendet im Zusammenhang mit einigen in den Fign. 18 bis 21D benutzten Bezugszeichen. Sobald ein Element in den Einzelzeichnungen des abhängigen Decodiersystems (Fign. 19 bis 21D) gezeigt ist, welches kein Gegenstück im unabhängigen Decodiersystem (Fign. 12 bis 16) hat, ist es mit einer Bezugszahl bezeichnet, die größer als 299 ist.
Fig. 18 zeigt das Ablaufdiagramm für den abhängigen Decodierprozeß und die Operation beginnt mit den Schritten DPI bis DP5, worin die ersten acht Datenbits in das Adreßregister für den Primärprozessor geleitet werden. Diese Betriebsphase stimmt überein mit den Schritten Pl bis P5 der Fig. 11, die oben im Zusammenhang mit der unabhängigen Decodierung beschrieben wurden. In ähnlicher Weise sind die Schritte DP6 bis DP9 der Fig. 18 identisch mit den Schritten P6 bis P9 der Fig. 11 und werden daher hier genauer beschrieben.
Im Schritt DP9 wird eine Entscheidung darüber getroffen, ob der Betrieb des Sekundärprozessors betroffen ist oder nicht, und zwar hängt diese Entscheidung davon ab, ob der eingegebene laufende VL-Code länger ist als 8 Bits oder nicht. Wenn für den vorliegenden Fall angenommen wird, daß der VL-Code nicht länger ist als 8 Bits, läuft der Vorgang weiter zum Schritt DPlO in Fig. 18. An diesem Punkt muß festgestellt werden, ob der Sekundärprozessor oder der abhängige Prozessor noch von einem vorhergehenden Decodierprozeß her in Betrieb ist. Zu diesem Zweck ist die Schaltung so angeordnet, daß der Taktimpuls auf der Leitung DPlO in Fig. 2IC ein Tor 300 erregt, um die Stellung der Flip-Flops 152D und 302 zu prüfen. Das Flip-Flop 152D wird wie das Flip-Flop 152 in Fig. 14B auf 1 gesetzt, während der Sekundärprozessor arbeitet und auf 0 zurückgestellt, wenn die Arbeit des Sekundärprozessors endet. In ähnlicher Weise wird das Flip-Flop 302 auf 1 gesetzt, während der abhängige Prozessor arbeitet und auf 0 zurückgestellt,
209835/1106
Docket YO 970 073
wenn diese Operation beendet ist. Wenn eines der beiden Flip-Flops 152D und 302 auf 1 steht, läuft dessen Ausgangssignal durch ein ODER-Glied 304 und ein Tor 300 auf einer Leitung 158D, die dieselbe Funktion hat wie die Leitung 158 in den Fign. 14B und 15, nämlich das Durchlaufen der aus den Schritten DPIl und DPlO in Fig. 18 bestehenden Schleife so lange, wie der Sekundärprozessor oder der abhängige Prozessor arbeiten.
Wenn angenommen wird, daß der Sekundär- und der abhängige Prozessor nicht arbeiten, veranlaßt die Erregung des Tores 300 in ■ Fig. 21C durch den Impuls aus dem Schritt DPlO ein O-Ausgangssignal von den Flip-Flops 152D und 302, welcher durch ein UND-Glied 306 und ein Tor 300 zur Leitung 154D läuft, die der in den Fign. 14B und 15 gezeigten Leitung 154 entspricht. Dadurch läuft die Operation vom Schritt DPlO in Fig. 18 weiter zum Schritt DP12. Im Falle eines unabhängigen Decodierprozesses stünde der Ausgäbe-ID-Code jetzt zur Verfügung. Da es sich hier aber um einen abhängigen Decodierprozeß handelt, muß der durch den Primärprozessor erzeugte 8 Bit große Zwischen-ID-Code in das Adreßregister des abhängigen Prozessors geleitet werden, um dort bei der Bildung einer neuen Adresse benutzt zu werden, auf welcher der endgültige Ausgabe-ID-Code zu finden ist.
Der Zeitgeberimpuls auf der Leitung DP12 in Fig. 21C erregt ein Tor 308, welches den vom Primärprozessor erzeugten Zwischen-ID-Code vom Ausgangskabel 7OD des Primarprozessors auf das Eingangskabel 310 leitet, welches zu dem in Fig. 19 gezeigten abhängigen Prozessor führt. Von dort wird dieser Zwischen-ID-Code über ein Kabel 312 in Fig. 19 weitergeleitet und läuft in die acht niedersten Bitpositionen des 12 Bit großen Adreßregisters 314 im abhangigen Prozessor. Für die vier höchsten Bitpositionen des Adreßregisters 314 wird angenommen, daß sie am Anfang durch geeignete nicht dargestellte Einrichtungen auf 000 zurückgestellt wurden. Gleichzeitig mit dieser Eingabe in das Adreßregister wird der Zeitimpuls auf der Leitung DP 12 in Fig. 21C über eine Verzögerungseinrichtung 316 und ein ODER-Glied 318 auf den Eingang
209835/1106
Docket YO 970 073
des Status-Flip-Flops 302 geleitet und dadurch dieses auf 1 gesetzt und angezeigt, daß der abhängige Prozessor arbeitet. Dieser verzögerte Impuls wird außerdem Über eine Leitung 320 in Fig. 2IC und ein Kabel 322 in den Fign. 21D und 20 auf eine monostabile Kippschaltung 324 im abhängigen Impulsgenerator geleitet und dadurch der Betrieb des abhängigen Prozessors eingeleitet. Die detaillierte Operation des abhängigen Prozessors wird nachfolgend erklärt.
Wenn der in Fig. 18 gezeigte Schritt DP12 beendet ist, ist der Primärprozessor frei zum Beginn der Verarbeitung des nächsten VL-Codes. Als Voraussetzung hierfür werden zuerst die Schritte DP13 bis DP17 ausgeführt. Im Schritt DP13 wird die Einstellung des Bytezählers 5OD in Fig. 2IB geprüft. Ist diese Einstellung von 0 verschieden, so wird dadurch angezeigt, daß noch weitere Eingabe-VL-Codes zu decodieren sind. Wenn das Nicht-O-Ausgangssignal vom Decodierer 116D und der Zeitimpuls auf der Leitung DP13 am UND-Glied 330 in Fig. 21B gleichzeitig auftreten, wird ein Impuls auf die Leitung 170D gelegt, die dieselbe Funktion hat wie die Leitung 170 in Fig. 15, d.h. die Erregung der Leitung 170D in Fig. 2IB leitet die folgenden Schritte DP14 bis DP17 in Fig. 18 ein. Bei der Ausführung dieser Schritte werden L+l neue Datenbits in das Adreßregister des Primärprozessors geleitet und der Inhalt dieses Adreßregisters um einen entsprechenden Betrag geschoben, um den nächsten VL-Code in Decodierposition im Primärprozessor zu bringen.
Wenn die Bytezählereinstellung auf 0 reduziert war, ist die Erregung der Leitung DP13 in Fig. 2IB ohne Auswirkung. In diesem Fall sind keine weiteren VL-Codes zu decodieren und eine weitere Operation des Primärprozessors nicht erforderlich. Das Signal "Programmende" wird jedoch erst erzeugt, wenn der Betrieb des abhängigen Prozessors abgeschlossen ist.
In der obigen Beschreibung wurde angenommen, daß die Länge des VL-Codes 8 Bits nicht überschritt, so daß der Primärprozessor die
209835/1106
Docket YO 970 073
Schritte DPlO bis DP17 in Fig. 18 ausführte und dadurch der aus dem Primärprozessor ausgelesene ID-Code zum Eingabecode des abhängigen Prozessors wurde (Schritt DP12). Wenn der VL-Code jedoch länger als 8 Bits ist, verzweigt die Operation vom Schritt DP9 zum Schritt DP18. Von diesem Punkt an ist die Operation dieselbe wie für eine unabhängige Decodieroperation bis zum Schritt DS6 in Fig. 18.
Im Schritt DS7 wird nicht nur geprüft, ob die Lesezugriffsoperation des Sekundärprozessorspeichers beendet ist, sondern auch der Betriebszustand des abhängigen Prozessors. Zu diesem Zweck wird der Taktimpuls auf der Leitung DS7 in Fig. 2ID an ein Tor 332 gelegt, welches Eingangssignale von einem UND-Glied 334 und einem ODER-Glied 336 empfängt. Das UND-Glied 334 empfängt Eingangssignale von der O-Seite des Status-Flip-Flops 256D für den Speicher des Sekundärprozessors und über die Leitung 338 von der O-Seite des Status-Flip-Flops 302 in Fig. 21C für den abhängigen Prozessor. Das ODER-Glied 336 in Fig. 21D empfängt Eingaben von der 1-Seite des Flip-Flops 256D und über die Leitung 340 von der 1-Seite des Flip-Flops 302 in Fig. 21C. Wenn eines dieser Flip-Flops auf 1 steht und dadurch anzeigt, daß der Speicher des Sekundärprozessors noch adressiert wird oder der abhängige Prozessor noch arbeitet, leitet das Tor 332 ein Signal auf die Leitung 226 in Fig. 21D, welches denselben Effekt hat wie die Erregung der Leitung 226 in den Fign. 14C und 16, nämlich das Durchlaufen der aus den Schritten DS7 und DS8 in Fig. bestehenden Schleife, solange diese Bedingung herrscht.
Wenn beide Flip-Flops 302 und 256D in den Fign. 2IC und 2ID auf O zurückgestellt sind, leitet das Tor 332 ein Signal auf die Leitung 272D, welches sich genauso auswirkt wie das Signal auf der Leitung 272 in den Fign. 14C und 16 und die Operation zum nächsten Schritt DS9 in Fig. 18 weiterführt. Dieser Schritt unterscheidet sich jedoch vom Schritt S9 in Fig. 11. Anstatt lediglich den 8 Bit großen ID-Code aus dem Sekundärprozessor als endgültigen Ausgabecode auszugeben, erregt der Impuls auf der Leitung DS9
209835/1106
Docket YO 970 073
in Fig. 21D ein Tor 342, wodurch dieser ID-Code vom Ausgangskabel 271D des Sekundärprozessors auf das Eingangskabel 310 des abhängigen Prozessors in Fig. 19 läuft. Von dort gelangen die acht Bits des ID-Code über ein Kabel 312 in die acht wertniedersten Bitpositionen des Adreßregisters 314 im abhängigen Prozessor.
Der Schritt DSlO in Fig. 18 zeigt nicht nur das Ende des Betriebes des Sekundärprozessors an, sondern leitet auch den Betrieb des abhängigen Prozessors ein. In Fig. 2IC ist zu sehen, wie der Taktimpuls auf der Leitung DSlO durch das ODER-Glied 318 zum Flip-Flop 302 läuft, dieses auf 0 setzt und damit das Ende des Betriebes des Sekundärprozessors anzeigt und außerdem auf die Leitung 320, die gemäß obiger Erklärung zur ersten monostabilen Kippschaltung 324 in Fig. 20 im abhängigen Impulsgenerator führt. Dadurch wird der Betrieb des abhängigen Prozessors gestartet und dieser Vorgang ist in den Schritten Dl bis D6 des Ablaufdiagrammes in Fig. 18 wiedergegeben.
Wenn die monostabile Kippschaltung 324 in Fig. 20 arbeitet, gibt sie Impulse auf die Leitung Dl im Kabel 346 der Fign. 20 und 2ID. Dadurch wird das Status-Flip-Flop 346 für den abhängigen Prozessor auf 1 gesetzt und angezeigt, daß dieser Prozessor arbeitet. Der Impuls auf der Leitung Dl läuft außerdem über das Kabel 310 in den Fign. 21D und 19 zur Lesezugriffsschaltung für den Speicher 350 des abhängigen Prozessors, die die Tabelle D (siehe Fig. 8 und 9) speichert. Im Laufe dieser Lesezugriffsoperation wird der ID-Code, welcher an der Adresse im Speicher 350 gespeichert ist, die durch die Einstellung des Adreßregisters 314 angegeben ist, in das zum abhängigen Prozessor gehörende Datenregister 352 ausgelesen.
Wenn die monostabile Kippschaltung 324 in Fig. 20 ausschaltet, sendet sie ein Signal über das ODER-Glied 354 und schaltet die monostabile Kippschaltung 356 ein. Dies ergibt einen Impuls auf die Leitung D2 in den Fign. 20 und 2ID, schaltet ein Tor 358 durch und prüft so, ob die Lesezugriffsoperation abgeschlossen ist. Wenn
209835/1106
Docket YO 970 073
das Status-Flip-Flop 346 noch auf 1 steht, wird dadurch angezeigt, daß der Lesezugriff noch nicht beendet ist, und es wird ein Signal von der 1-Seite des Flip-Flops 346 über das Tor 358 auf die Leitung 360 in den Fign. 2IB und 20 geleitet. Dadurch wird die monostabile Kippschaltung 362 eingeschaltet, die einen Impuls auf die Leitung D3 gibt und dadurch die Erregung durch das ODER-Glied 354 auf die monostabile Kippschaltung 356 zurückführt. Somit wird die aus den Schritten D2 und D3 in Fig. 18 bestehende Schleife so lange durchlaufen, bis die Lesezugriffsoperation abgeschlossen ist.
Am Ende der Lesezugriffsoperation im abhängigen Prozessor wird ein Beendigungssignal durch den Speicher 350 in Fig. 19 über eine Leitung 364 in den Fign. 19 und 21D auf das Flip-Flop 346 gesendet und diese auf 0 zurückgestellt. Dadurch läuft ein Signal vom Flip-Flop 346 durch das Tor 358 auf eine in den Fign. 21D und 20 gezeigte Leitung 366 und schaltet die monostabile Kippschaltung 368 zur Einleitung des Schrittes D4 in Fig. 18 ein.
Der Impuls auf der Leitung D4 in den Fign. 20 und 2ID hat verschiedene Effekte. Zuerst wird ein Tor 370 in Fig. 21D durchgeschaltet und läßt den Ausgabe-ID-Code vom Datenregister 352 des abhängigen Prozessors in Fig. 19 über die Kabel 372 und 374 in den Fign. 19 und 2IA bis 2ID an die Ausgabeeinheit durch. Dieser Code ist die fertigdecodierte Ausgabe des abhängigen Prozessors. Das Signal auf der Leitung D4 leitet außerdem einen Lesezugriff eines Speichers 376 ein, der die Tabelle D1 im abhängigen Prozessor der Fig. 19 speichert. Gleichzeitig mit dem Auslesen des ID-Codes ,aus dem Datenregister 352 in die Ausgabeeinheit wird dieser Code auch über die Kabel 372 und 378 in Fign. 19 als eine Adresse an den Speicher 376 weitergeleitet. An der durch diese Adresse im Speicher 376 bezeichneten Stelle wird ein 4 Bit großer Code ausgelesen und über ein Kabel 380 den vier werthöchsten Stellen des Adreßregisters 314 zugeführt, das zum Speicher 350 gehört. Dieser 4 Bit große Code bildet einen Teil der neuen 12 Bit großen Adresse, die bei der nächsten Decodieroperation zum Speicher 350 geleitet wird. Bei der abhängigen Decodierung wird bekanntlich der
209835/1106
Docket YO 970 073
fertige Ausgabe-ID-Code aus einer Stelle im Speicher 350 ausgelesen, die teilweise durch den Zwischen-ID-Code bestimmt wird, der dem laufenden VL-Code entspricht und teilweise durch den endgültigen ID-Code, der aus der Decodierung des vorhergehenden VL-Codes resultierte. Die Beschreibung wurde im Zusammenhang mit Fig. 8 gegeben.
Die dritte Folge der Erregung der Leitung D4 in Fig. 2ID besteht darin, daß das Status-Flip-Flop 382 auf 1 gesetzt und damit angezeigt wird, daß ein Lesezugriff zum Speicher 376 in Fig. 19 erfolgt. Wenn die monostabile Kippschaltung 368 in Fig. 20 ausschaltet, sendet sie einen Impuls über das ODER-Glied 384 und schaltet die monostabile Kippschaltung 386 ein, die die Leitung D5 in den Fign. 20 und 2ID erregt. Dadurch wird ein Tor 388 betätigt und der Ausgang des Status-Flip-Flops 382 geprüft. Wenn dieser Ausgang ein 1-Signal ist, wird ein Signal durch das Tor 388 auf die Leitung 390 in den Fign. 21D und 20 geleitet und eine monostabile Kippschaltung 392 eingeschaltet. Dadurch wird ein Impuls über die Leitung D6 und das ODER-Glied 384 auf die monostabile Kippschaltung 386 geleitet, die die Leitung D5 erregt. So wird die aus den Schritten D5 und D6 in Fig. 18 bestehende Schleife so lange durchlaufen, wie der Speicher 376 in Fig. 19 adressiert wird.
Wenn die adressierte Information vollständig aus dem Speicher 376 ausgelesen worden ist, wird ein Signal für die Beendigung des Lesezugriffs über die Leitung 394 in den Fign. 19 und 21D an das Flip-Flop 382 gegeben und dieses dadurch auf O zurückgestellt. Jetzt wird ein Signal über das Tor 388 und die Leitung 396 in den Fign. 21D und 2O an die monostabile Kippschaltung geleitet, die einschaltet und die Leitung D7 erregt.
Durch die Erregung der Leitung D7 wird einmal das Status-Flip-Flop 302 in Fig. 21C auf 0 zurückgestellt und dadurch das Ende des Betriebes des abhängigen Prozessors angezeigt. Diese Information wird in bestimmten Schritten der nachfolgenden Operationen
209835/1106
Docket YO 970 073
- 47 gebraucht (z.B. bei den Schritten DPlO und DS7 in Fig. 18).
Außerdem wird durch die Erregung der Leitung D7 die Stellung des Bytezählers 5OD geprüft. Wurde diese Einstellung auf O reduziert, wird damit angezeigt, daß keine weiteren VL-Codes mehr zu decodieren sind, und wenn das O-Ausgangssignal vom Decodierer 116D und der Impuls auf der Leitung D7 gleichzeitig auftreten, wird das UND-Glied 400 in Fig. 21B veranlaßt, das Signal "Programmende" weiterzuleiten. Wenn die Bytezählereinstellung noch nicht auf 0 reduziert wurde, wird kein derartiges Signal abgegeben. Die folgende Operation im unabhängigen Prozessor wird jetzt eingeleitet, da die Operationen des abhängigen und des unabhängigen Decodierers überlappt sind.
209835/1106
Docket YO 970 073

Claims (1)

  1. - 48 PATENTANSPRÜCHE
    1. Verfahren zur Verarbeitung verdichteter Daten in einem datenverarbeitenden System mit Speichern und Registern vermittels Codeumwandlung, dadurch gekennzeichet, daß als Bitstreifen veränderlicher Länge codierte Daten in für die Verarbeitung von Bitstreifen fester Länge geeigneten Speichern und Registern eines datenverarbeitenden Systems einer aus den nachfolgenden Schritten bestehenden Codeumwandlung unterworfen werden (Fig. 4):
    a) Serielles Einlesen einer vorgegebenen Anzahl der führenden Bits einer Eingangsbitreihe mit aufeinanderfolgenden Codes veränderlicher Länge in ein erstes Register (10);
    b) Abspeichern der folgenden untereinander zusammenhängenden Informationen in einen Speicher (12) bei Adressen, die durch die in das erste Register (10) eingelesenen verschiedenen Bitkombinationen gekennzeichnet sind:
    bl) eines Codes fester Länge, der dem ersten Code veränderlicher Länge oder einem Teil davon entspricht, welcher bei der Eingabe der jeweiligen Bitkombination in das erste Register (10) festliegt und
    b2) einer damit verknüpften Information über die Anzahl der in dem Code veränderlicher Länge vorhandenen Bits ;
    c) Auslesen des durch die in dem ersten Register (10) gespeicherte Bitkombination adressierten Codes fester Länge (bl) und der damit verknüpften Information (b2) aus dem Speicher (12) in ein zweites Register (20) zur Weiterverarbeitung in einem nachgeschalteten Teil (S) des datenverarbeitenden Systems;
    d) Verschieben des Inhalts des ersten Registers (10) um
    Docket YO 970 073 209835/1106
    eine Anzahl Bitpositionen, die durch die verknüpfte Information (b2) vorgegeben ist und
    e) Wiederholung der Schritte c) und d), bis die Information des nachfolgenden Codes veränderlicher Länge von dem System (Fig. 4) verarbeitet werden kann.
    2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die verknüpfte Information (b2) der Anzahl der bezeichnenden Bits entspricht, die in jedem Code veränderlicher Länge vorhanden sind, dessen Länge eine festgesetzte An*· zahl Bits nicht überschreitet, und daß die Verschiebung des Inhalts des ersten Registers (10) bei Schritt d) der Anzahl dieser Bitpositionen entspricht.
    3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß der im Schritt c) in das zweite Register (20) eingegebene Code fester Länge das decodierte Äquivalent des in Schritt bl) angegebenen Codes veränderlicher Länge bildet.
    4. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die verknüpfte Information (b2) angibt, ob der jeweilige Code veränderlicher Länge länger als die festgesetzte Anzahl Bits ist oder nicht, und daß bei Schritt d) der Inhalt des ersten Registers (10) immer dann um die festgesetzte Anzahl Bitpositionen verschoben wird, wenn der jeweilige Code veränderlicher Länge länger als die festgesetzte Zahl ist.
    5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß der bei Schritt c) in das zweite Register (20) eingegebene Code fester Länge dann in ein drittes Register (24) übertragen wird, wo er mindestens einen Teil einer Adresse bildet, die in einem zweiten Speicher (26) das in Schritt bl) angegebene decodierte Äquivalent des Codes veränderlicher Länge angibt.
    Docket YO 970 073 209836/1106
    6. Verfahren zur Verarbeitung von Daten in der Form von Bitreihen veränderlicher Länge unter Benutzung von Daten-■ Verarbeitungseinheiten wie Speichern und Registern, die in der Lage sind, Daten in der Form von Bitreihen fester Länge zu verarbeiten, dadurch gekennzeichnet, daß das Verfahren aus folgenden Schritten besteht:
    a) Darstellung codierbarer Informationen in Codes entsprechender veränderlicher Länge derart, daß die ersten N Bits eines Codes, der länger als N Bits ist, eindeutig dieser betreffenden Codelänge entsprechen unter Bildung eines N Bit langen Vorsatzes für diesen Code;
    b) Serielles Eingeben der ersten N Bits einer Eingabe-Bitfolge, die derartige Codes veränderlicher Länge enthält, in ein erstes mit einem ersten Speicher (12) verbundenes Adreßregister (10);
    c) Speichern einer Information in dem ersten Speicher (12) bei jeder darin durch die verschiedenen N Bit langen Vorsätze, die in dem ersten Register (10) gespeichert werden können« angegebenen Adressen, wobei diese Information einen Code fester Länge enthält, der einen wesentlichen Teil einer Basisadresse in einem zweiten Speicher (26) darstellt, wie er von einem entsprechenden in dem erste Adreßregister (10) gespeicherten Längenvorsatz festgestellt wurde;
    d) Speichern der Codes fester Länge, die die entsprechenden decodierten Äquivalente der Codes veränderlicher Länge bilden, in dem zweiten Speicher (26) bei Adressen, die teils durch die Basisadresse, teils durch die restlichen Bits der entsprechenden Codes veränderlicher Länge festgelegt sind, deren Länge größer als N sind;
    β) Auslesen des von dem in dem ersten Adreßregister (10) gespeicherten und von dem Längenvorsatz adressierten Codes fester Länge aus dem ersten Speicher (12) in ein Datenregister (20)ι
    209835/1106
    Docket YO 970 073
    f) Übertragen des in dem Datenregister (20) gespeicherten Codes fester Länge in ein mit dem zweiten Speicher (26) verbundenes zweites Adreßregister (24);
    g) Eingeben der restlichen Bits des Codes veränderlicher Länge, dessen Längenvorsatz in dem ersten Adreßregister (10) gespeichert ist f in das zweite Adreßregister (24), wobei in Kombination mit mindestens einem wesentlichen Teil des in dem zweiten Adreßregister (24) gespeicherten Codes fester Länge eine neue Adresse gebildet wird, die in dem zweiten Speicher (26) den Code fester Länge angibt, welcher das decodierte Äquivalent des Codes veränderlicher Länge darstellt, wobei die Anzahl der restlichen Bits mindestens teilweise von dem Längenvorsatz bestimmt ist;
    h) Verschieben des Inhalts des ersten Adreßregisters (10) um N Bits zur Aufnahme der nachfolgenden N Bits der Eingabe-Bitfolge in dem ersten Adreßregister (10);
    i) Auslesen des adressierten Codes fester Länge aus dem zweiten Speicher (26) und
    j) Wiederholung der Schritte e bis i so lange, bis jeder nachfolgende Code veränderlicher Länge mit mehr als N Bits in der Eingabe-Bitfolge decodiert ist.
    7. Verfahren zur Codeumwandlung, dadurch gekennzeichnet, daß als Bitreihen veränderlicher Länge decodierty Daten in einem Datenverarbeitungssystem mit Speichern und Registern verwendet werden können, die als Bitreihen fester Länge decodierte Daten verarbeitet werden, wobei das Verfahren aus folgenden Schritten besteht:
    a) Serielles Einlesen der führenden Bits einer Eingangsbitreihe mit aufeinanderfolgenden Codes veränderlicher Länge in ein erstes Register (10), bis die Anzahl der eingelesenen Bits einer fest vorgegebenen Anzahl entspricht ;
    209835/1106
    Docket YO 970 073
    b) Abspeichern der folgenden untereinander zusammenhängenden Informationen in einen ersten Speicher (12) bei Adressen, die durch die in das erste Register (10) eingelesenen verschiedenen Bitkombinationen gekennzeichnet sind:
    bl) einen Code fester Länge, der dem ersten Code veränderlicher Länge oder einem Teil davon entspricht, welcher bei der Eingabe der jeweiligen Bitkombination in das erste Register (10) festliegt und
    b2) eine damit verknüpfte Information über die Anzahl der in dem Code veränderlicher Länge vorhandenen Bits;
    c) Speichern der die entsprechenden decodierten Äquivalente der Codes veränderlicher Länge bildenden Codes fester Länge in einem zweiten Speicher (26) auf adressierbaren Plätzen, die teilweise von denjenigen Codes fester Länge in dem ersten Speicher (12) festgelegt sind, die den Codes veränderlicher Länge entsprechen, die mehr als die fest vorgegebene Anzahl von Bits enthalten;
    d) Auslesen des durch die in dem ersten Register (10) gespeicherte Bitkombination adressierten Codes fester Länge (bl) und der damit verbundenen Information (b2) aus dem ersten Speicher (12) in ein zweites Register (20);
    e) Durchführen einer der beiden folgenden Arbeitsabläufe entsprechend dem Inhalt der damit verbundenen Information (b2) :
    el) wenn die damit verbundene Information (b2) anzeigt, daß der im Schritt bl) angegebene Code veränderlicher Länge nicht mehr als die fest vorgegebene Anzahl Bits enthält, so wird der Inhalt des zweiten Registers (20) als der das decodierte Äquivalent eines solchen Codes veränderlicher Länge aus-
    209836/1106
    Docket YO 970 073·
    gelesenen und danach wird der Inhalt des ersten Registers (10) um eine der Länge eines solchen Codes veränderlicher Länge entsprechende Anzahl Bitpositionen verschoben; oder
    e2) wenn die damit verbundene Information (b2) angibt, •daß der im Schritt bl) angegebene Code veränderlicher Länge mehr als die fest vorgegebene Anzahl Bits enthält, so wird der Code fester Länge von dem zweiten Register (20) in ein drittes Register (24) übertragen, und in dieses Register werden ebenfalls diejenigen Bits übertragen, die einen übergroßen Teil des Codes veränderlicher Länge bilden, wodurch eine neue Adresse gebildet wird, die eine Kombination solcher Bits mit mindestens einem Teil des übertragenen Codes enthält, dann wird der Inhalt des ersten Registers (10) um die genannte fest vorgegebene Anzahl Bitpositionen verschoben, und der der neuen Adresse als dem decodierten Äquivalent des Codes veränderlicher Länge entsprechende Code fester Länge wird aus dem zweiten Speicher (26) ausgelesen; und
    f) Wiederholung der Schritte d) und e), bis die Information des nachfolgenden Codes veränderlicher Länge von dem System verarbeitet werden kann.
    Verfahren zur Umwandlung aufeinanderfolgender Codes veränderlicher Länge, deren Bits in einem seriellen Bitstrom in entsprechenden Codes fester Länge enthalten sind unter Benutzung von Datenverarbeitungseinheiten wie Speichern und Registern, die in der Lage sind, Daten nur in der Form von Codes fester Länge zu verarbeiten, dadurch gekennzeichnet, daß das Verfahren aus folgenden Schritten besteht:
    a) Speichern eines ersten Satzes von Codes fester Länge in einem ersten Speicher (12) bei Adressen, die durch
    *o 970 073 209835/1106
    ORIGINAL INSPECTED
    verschiedene N-Bitkombinationen (mit "N" als fester ganzer Zahl) gekennzeichnet sind;
    b) Speichern eines zweiten Satzes von Codes fester Länge in einem zweiten Speicher (26) bei verschiedenen Adressen, die durch verschiedene M-Bitkombinationen (mit "M" als fester ganzer Zahl) gekennzeichnet sind;
    c) Eingeben der ersten verfügbaren N Bits des Bitstroms in ein erstes Adreßregister (10);
    d) Auslesen des Codes fester Länge in dem ersten Satz, dessen Adresse durch die in dem ersten Adreßregister (10) gespeicherte N-Bitkombination gekennzeichnet ist, aus dem ersten Speicher (12);
    e) Eingeben des aus dem ersten Speicher (12) ausgelesenen Codes fester Länge in ein zweites Adreßregister (24);
    f) Eingeben zusätzlicher ausgewählter Bits in das zweite Adreßregister (24) zur Bildung einer charakteristischen N-Bitkombination im Zusammenwirken mit mindestens einem beim Schritt e) dort eingegebenen bezeichnenden Teil des Codes fester Länge; und
    g) Auslesen des Codes fester Länge in dem zweiten Satz, dessen Adresse von der in dem zweiten Adreßregister (24) gespeicherten M-Bitkorabination gekennzeichnet ist, aus dem zweiten Speicher (26).
    Datenverarbeitungsanlage zur Anwendung des Verfahrens nach Anspruch 1, 2 und 4 zur Umwandlung von Daten aus Bitreihen veränderlicher Länge in Daten aus Bitreihen fester Länge mit Speichern und Registern, die nur Bitreihen fester Länge verarbeiten können, dadurch gekennzeichnet, daß die Anlage aus folgenden Teilen besteht:
    a) einem Adreßregister mit der Möglichkeit der Bitverschiebung zum Speichern von N Bits, wobei "N" eine feste ganze Zahl bedeutet;
    b) Mittel zum seriellen Eingeben von bis zu N Codebits
    209835/1106
    Docket YO 970 073
    veränderlicher Länge in das Adreßregister;
    c) einem Speicher mit Adressen entsprechend den verschiedenen Kombinationen der N Bits, die in dem Adreßregister gespeichert werden können und die bei jeder Adresse die folgenden untereinander zusammenhängenden Informationen speichern können:
    el) einen Code fester Länge entsprechend dem ersten Code veränderlicher Länge oder einem Teil davon, der beim Eingeben der entsprechenden N-Bitkombination in das Adreßregister definiert ist und
    c2) damit verbundene Information, die sich aus der Anzahl der Bits in dem Code veränderlicher Länge ergibt;
    d) Mittel zum Auslesen des Codes fester Länge (el) und der damit verbundenen Information (c2), die von der in dem Adreßregister gespeicherten N-Bitkombination adressiert wird, aus dem Speicher; und
    e) Mittel die von den Auslesemitteln gesteuert werden und den Inhalt des Adreßregisters um eine von der Information (c2) festgelegte Anzahl Bitpositionen verschieben.
    10. Anlage zur Anwendung des Verfahrens nach Anspruch 8 zur Verarbeitung von in der Form von Bitstreifen veränderlicher Länge codierten Daten, dadurch gekennzeichnet, daß die ersten N Bits eines Codes veränderlicher Länge, die länger als N Bits sind, einen Längenvorsatz bilden, der eindeutig die betreffende Codelänge identifiziert, wobei "N" eine feste ganze Zahl bedeutet, und daß die Anlage aus folgenden Teilen besteht:
    a) einem Adreßregister mit der Möglichkeit der Bitverschiebung zum Speichern von N Bits;
    b) Mitteln zum seriellen Eingeben von bis zu N Codebits veränderlicher Länge in das erste Adreßregister;
    209835/1106
    Docket YO 970 073
    c) einem ersten Speicher mit Adressen entsprechend den verschiedenen Kombinationen der N Bits, die in dem Adreßregister gespeichert werden können und die bei jeder Adresse die folgenden untereinander zusammenhängenden Informationen speichern können:
    el) einen Code fester Länge entsprechend dem ersten Code veränderlicher Länge oder einem N Bit großen Teil davon, der beim Eingeben der entsprechenden N-Bitkombination in das Adreßregister definiert ist und
    c2) damit verbundene Informationen, die sich aus der Anzahl der Bits in dem Code veränderlicher Länge ergibt, wobei die Information im Fall eines N Bits in der Länge überschreitenden Codes die Anzahl Bits angibt, die von dem jeweiligen N-Bitvorsatz dargestellt wird;
    d) Mitteln zum Auslesen des Codes fester Länge (el) und der damit verbundenen Information (c2), die von der in dem ersten Adreßregister gespeicherten N-Bitkombination adressiert ist, aus dem ersten Speicher;
    e) Mitteln, die von den Auslesemitteln gesteuert und wirksam werden, wenn die Information (c2) aufzeigt, daß der damit verbundene Code veränderlicher Länge N Bits in der Länge nicht übertrifft, um den Inhalt des ersten Adreßregisters um die Anzahl der in diesem Code veränderlicher Länge enthaltenen Bits zu schieben;
    f) einem zweiten Adreßregister mit der Möglichkeit der Bitverschiebung zum Speichern von M Bits, wobei "M" eine feste ganze Zahl ist;
    g) Mitteln, die von den Auslesemitteln (d) gesteuert werden und dann, wenn die Information (c2) aufzeigt, daß der damit verbundene Code veränderlicher Länge N Bits in der Länge übertrifft, den Code fester Länge (el) in das
    209835/1106
    Docket YO 970 073
    zweite Adreßregister überträgt und weiterhin die restlichen Bits des Codes veränderlicher Länge in das zweite Adreßregister eingeben, wobei die Anzahl dieser Bits
    durch die Information (c2) angegeben wird, wodurch eine kombinierte M-Bitadresse gebildet wird, und die schließlich dahingehend wirksam werden, den Inhalt des ersten Adreßregisters um N Bits zu schieben;
    h) einem zweiten Speicher mit adressierbaren Speicherplätzen, die den jeweiligen verschiedenen M-Bitkombinationen entsprechen, die in dem zweiten Adreßregister gespeichert werden können und in jedem dieser Plätze einen
    kennzeichnenden Code fester Länge speichern; und
    i) Mitteln, die wirksam werden, wenn die Information (c2) aufzeigt, daß der damit verbundene Code veränderlicher Länge N Bits in der Länge übertrifft, und die den Code fester Länge, der von der in dem zweiten Adreßregister gespeicherten M-Bitkombination adressiert ist, aus dem zweiten Speicher auszulesen.
    Docket YO 970 073 209835/1106
    se
    Leerseite
DE2205422A 1971-02-08 1972-02-05 Verfahren und Einrichtung zur Dekompression verdichteter Daten Expired DE2205422C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11347371A 1971-02-08 1971-02-08

Publications (2)

Publication Number Publication Date
DE2205422A1 true DE2205422A1 (de) 1972-08-24
DE2205422C2 DE2205422C2 (de) 1981-09-17

Family

ID=22349650

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2205422A Expired DE2205422C2 (de) 1971-02-08 1972-02-05 Verfahren und Einrichtung zur Dekompression verdichteter Daten

Country Status (6)

Country Link
US (1) US3701111A (de)
JP (1) JPS5223706B1 (de)
DE (1) DE2205422C2 (de)
FR (1) FR2141000A5 (de)
GB (1) GB1328061A (de)
IT (1) IT946994B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0063912A1 (de) * 1981-04-24 1982-11-03 Iomega Corporation Datenkodierung und -dekodierung in einem Datenspeichersystem

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3914586A (en) * 1973-10-25 1975-10-21 Gen Motors Corp Data compression method and apparatus
US3883847A (en) * 1974-03-28 1975-05-13 Bell Telephone Labor Inc Uniform decoding of minimum-redundancy codes
US4044347A (en) * 1975-05-19 1977-08-23 International Business Machines Corporation Variable-length to fixed-length conversion of minimum-redundancy codes
US4099257A (en) * 1976-09-02 1978-07-04 International Business Machines Corporation Markov processor for context encoding from given characters and for character decoding from given contexts
JPS54170409U (de) * 1978-05-23 1979-12-01
US4506325A (en) * 1980-03-24 1985-03-19 Sperry Corporation Reflexive utilization of descriptors to reconstitute computer instructions which are Huffman-like encoded
JPS5755668A (en) * 1980-09-22 1982-04-02 Nippon Telegr & Teleph Corp <Ntt> Decoding method for run-length code
JPS59148467A (ja) * 1983-02-14 1984-08-25 Canon Inc デ−タ圧縮装置
CA1228925A (en) * 1983-02-25 1987-11-03 Yoshikazu Yokomizo Data decoding apparatus
EP0145396B1 (de) * 1983-12-08 1990-04-04 Crosfield Electronics Limited Coderwörter-Decodierer
US4837634A (en) * 1984-06-05 1989-06-06 Canon Kabushik Kaisha Apparatus for decoding image codes obtained by compression process
US4899149A (en) * 1986-02-28 1990-02-06 Gary Kahan Method of and apparatus for decoding Huffman or variable-length coees
FR2608806B1 (fr) * 1986-12-23 1989-03-17 Valero Robert Procede et appareil programmable pour le transcodage de chaines de caracteres
FR2640096A1 (fr) * 1988-12-06 1990-06-08 Trt Telecom Radio Electr Dispositif de decodage de mots statistiques a longueur variable
JPH03106127A (ja) * 1989-09-20 1991-05-02 Fujitsu Ltd 可変長符号化回路
US5034741A (en) * 1990-03-22 1991-07-23 United Technologies Corporation Variable length bit patterns for data representation
US5173695A (en) * 1990-06-29 1992-12-22 Bell Communications Research, Inc. High-speed flexible variable-length-code decoder
JP3123792B2 (ja) * 1991-11-05 2001-01-15 株式会社リコー 算術符号を用いる符号化装置および復号化装置
US5233348A (en) * 1992-03-26 1993-08-03 General Instrument Corporation Variable length code word decoder for use in digital communication systems
JPH0583383U (ja) * 1992-04-13 1993-11-12 日東工器株式会社 ポンプ用リード弁
JP3003894B2 (ja) * 1992-07-29 2000-01-31 三菱電機株式会社 可変長復号器
JP3008685B2 (ja) * 1992-08-03 2000-02-14 日本電気株式会社 可変長符号の復号化回路
KR0138971B1 (ko) * 1992-10-13 1998-06-15 세끼모또 다다히로 허프만 부호 복호회로
US5446916A (en) * 1993-03-26 1995-08-29 Gi Corporation Variable length codeword packer
US6408102B1 (en) * 1993-12-20 2002-06-18 Canon Kabushiki Kaisha Encoding/decoding device
KR0152038B1 (ko) * 1994-10-17 1998-10-15 김광호 상대 주소를 이용한 가변장 복호화 장치
US5850260A (en) * 1995-03-08 1998-12-15 Lucent Technologies Inc. Methods and apparatus for determining a coding rate to transmit a set of symbols
US5696563A (en) * 1995-03-08 1997-12-09 Lucent Technologies Inc. Apparatus and methods for performing huffman coding
US5872599A (en) * 1995-03-08 1999-02-16 Lucent Technologies Inc. Method and apparatus for selectively discarding data when required in order to achieve a desired Huffman coding rate
JP3406440B2 (ja) * 1995-10-30 2003-05-12 Smk株式会社 パルス変調方法とパルス変調装置及びパルス復調装置
US5870631A (en) * 1995-12-15 1999-02-09 International Business Machines Corporation System for operating system software providing input buffer for receiving variable-length bit stream with a header containing synchronization data recognized by universal serial controller
US5721891A (en) * 1995-12-15 1998-02-24 International Business Machines Corporation Detection of N length bit serial communication stream
US5745504A (en) * 1996-06-25 1998-04-28 Telefonaktiebolaget Lm Ericsson Bit error resilient variable length code
US5954806A (en) * 1996-09-30 1999-09-21 Lsi Logic Corporation Method to handle SCSI messages as a target
US6018524A (en) * 1997-09-09 2000-01-25 Washington University Scalable high speed IP routing lookups
US6449256B1 (en) 1998-05-07 2002-09-10 Washington University Fast level four switching using crossproducting
US6212184B1 (en) 1998-07-15 2001-04-03 Washington University Fast scaleable methods and devices for layer four switching
US20010030615A1 (en) * 2000-03-03 2001-10-18 Minhua Zhou Variable length decoding system and method
US6731686B1 (en) * 2000-05-31 2004-05-04 Sun Microsystems, Inc. Apparatus and method for pipelining variable length decode and inverse quantization operations in a hybrid motion-compensated and transform coded video decoder
GB2367459A (en) * 2000-09-28 2002-04-03 Roke Manor Research Method of compressing data packets
US6958715B2 (en) * 2001-02-20 2005-10-25 Texas Instruments Incorporated Variable length decoding system and method
US20020118885A1 (en) * 2001-02-27 2002-08-29 Bernard Smeets Font compression and retrieval
US7193541B2 (en) * 2001-12-04 2007-03-20 Sun Microsystems, Inc. Representation of sign in encoding scheme
CN1331360C (zh) * 2004-02-24 2007-08-08 上海交通大学 可变长码解码方法
US7702883B2 (en) * 2005-05-05 2010-04-20 Intel Corporation Variable-width memory
US9086871B2 (en) 2013-09-26 2015-07-21 International Business Machines Corporation Reordering the output of recirculated transactions within a pipeline
CN106076759A (zh) * 2016-07-25 2016-11-09 铜陵海源超微粉体有限公司 粉体涂装装置
US10558704B2 (en) * 2017-07-20 2020-02-11 Sap Se Smart rollover
KR102103392B1 (ko) 2017-12-15 2020-04-22 주식회사 포스코 정련방법 및 강재
US10541954B1 (en) * 2018-08-05 2020-01-21 Gideon Samid Cyber companion: attaching a secondary message to a primary one

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1249924B (de) * 1962-07-17
US3331056A (en) * 1964-07-15 1967-07-11 Honeywell Inc Variable width addressing arrangement
US3422405A (en) * 1966-03-25 1969-01-14 Burroughs Corp Digital computer having an indirect field length operation
US3593309A (en) * 1969-01-03 1971-07-13 Ibm Method and means for generating compressed keys
US3618027A (en) * 1970-03-27 1971-11-02 Research Corp Associative memory system with reduced redundancy of stored information

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Steinbuch, K.: Taschenbuch der Nachrichtenver- arbeitung, 1962, S. 83, 1020, 1023 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0063912A1 (de) * 1981-04-24 1982-11-03 Iomega Corporation Datenkodierung und -dekodierung in einem Datenspeichersystem

Also Published As

Publication number Publication date
FR2141000A5 (de) 1973-01-19
GB1328061A (en) 1973-08-30
DE2205422C2 (de) 1981-09-17
JPS5223706B1 (de) 1977-06-25
US3701111A (en) 1972-10-24
IT946994B (it) 1973-05-21

Similar Documents

Publication Publication Date Title
DE2205422A1 (de) Verfahren zur Verarbeitung verdichteter Daten
DE2210044C2 (de) Verfahren zum Umsetzen von Codewörtern
DE2139731A1 (de) Anordnung und Verfahren zur Code Um Setzung mit einem Assoziativ Speicher
DE2614916C2 (de) Konverter zur Codeumwandlung
DE2227148A1 (de) Verfahren zur verarbeitung digitaler daten
DE2153517A1 (de) Anordnung zur Codeumsetzung
DE2652459C2 (de) Umsetzvorrichtung für Binärsignale variabler Länge
DE2725395B2 (de) Einrichtung zur Echtzeittransformation von m in Zeilen angeordneten Wörtern der Bitlänge n in n in Spalten angeordnete Wörter der Bitlänge n
DE2208664A1 (de) Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge
DE2031194A1 (de) Verfahren zum Suchen in einem ver dichteten Index mit mehreren Ebenen
DE3330845C2 (de)
DE2900586C2 (de) Anordnung zum Decodieren von Codewörtern variabler Länge
DE1449544A1 (de) Datenverarbeitende Maschine mit ueberlappend abrufbarem Speicherwerk
DE1262641B (de) Mikroprogrammsteuerwerk
DE1115488B (de) Datenverarbeitungssystem
DE1474576A1 (de) Fehlerkontrolliereinrichtung
DE1171650B (de) Maschine zur serienmaessigen Verarbeitung von Daten in binaerer Zeichenverschluesselung
DE3137704C2 (de) Vorrichtung zum Decodieren eines baumförmigen Codes variabler Länge
DE2355786A1 (de) Verfahren und anordnung zur decodierung von codes mit minimaler redundanz
DE1296428B (de) Einrichtung zur Ermittlung von Speicheradressen aus Schluesselwoertern
EP0427884B1 (de) Verfahren und Anordnung zum Komprimieren und Dekomprimieren von Daten
DE1296427B (de) Datenbearbeitungssystem
DE2426253B2 (de) Vorrichtung zum ziehen der quadratwurzel aus einer binaeren zahl
DE1499237A1 (de) Verfahren und Vorrichtung zur Binaer-Dezimal-Umwandlung
DE2233164B2 (de) Schaltungsanordnung zur uebertragung von aufeinanderfolgenden bitstellen zwischen zwei registern

Legal Events

Date Code Title Description
OD Request for examination
D2 Grant after examination
8339 Ceased/non-payment of the annual fee