DE2139731C2 - Anordnung zur Code-Umsetzung - Google Patents

Anordnung zur Code-Umsetzung

Info

Publication number
DE2139731C2
DE2139731C2 DE2139731A DE2139731A DE2139731C2 DE 2139731 C2 DE2139731 C2 DE 2139731C2 DE 2139731 A DE2139731 A DE 2139731A DE 2139731 A DE2139731 A DE 2139731A DE 2139731 C2 DE2139731 C2 DE 2139731C2
Authority
DE
Germany
Prior art keywords
code
code word
line
length
gate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired
Application number
DE2139731A
Other languages
English (en)
Other versions
DE2139731A1 (de
Inventor
Josef Yorktown Heights N.Y. Raviv
Michael Andrew Somers N.Y. Wesley
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 DE2139731A1 publication Critical patent/DE2139731A1/de
Application granted granted Critical
Publication of DE2139731C2 publication Critical patent/DE2139731C2/de
Expired legal-status Critical Current

Links

Classifications

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

Landscapes

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

Description

Die Erfindung betrifft eine Anordnung zur Code-Umsetzung nach dem Oberbegriff des Hauplanspruchs.
Durch Codierung mit variabler Codewonlänge kann man eine gegebene Datenmenge, die durch Dateneinheiten mit festem Format dargestellt ist, zur Speicherung oder Übertragung reduzieren. Dabei werden den häufiger vorkommenden Bytes oder Wörtern die kürzeren Codewörter zugeordnet, wodurch im Ganzen eine durchschnittliche Codewortlänge erreicht wird, die kleiner als die feste Codewortlänge ist. Die Auswahl und Zuordnung wird aufgrund einer statistischen Analyse
ίο des betreffenden Datenmaterials gemacht. Wenn die Daten z. B. als Bytes zu je 8 Bits vorliegen, kann man dem am häufigsten vorkommenden Byte ein Codewort von nur einem Bit. dem zweithäufigsten ein Codewort aus zwei Bits, usw, zuordnen. Vorzugsweise ist keines der Codewöner im Code variabler Länge identisch mit dem Anfang irgendeines anderen Codewortes. damit eine eindeutige Unterscheidung möglich ist: ein Code mit dieser Eigenschaft ist z. B. der sogenannte Huffman-Code.
λ» Obwohl eine Codierung der Daten in Codewörtem variabler Länge für Speicherung und Übertragung vorteilhaft ist. muß man sie zur Verarbeitung meist wieder in eine Darstellungsform mit fester Länge der Dateneinheiten umsetzen. Der Vorteil, den man durch
>< Codierung mit variabler Wortlänge erzielt, könnte also wegen der notwendigen Umsetzungen wieder verlorengehen. Wenn die Umsetzung aber beschleunigt und mit einer günstigen Anordroing durchgeführt werden kann, wird die Anwendung der Codierung mit variabler
«ι Wortlänge dadurch stark gefördert.
Eine Anordnung zur Codeumsetzung ist beispielsweise aus der deutschen Auslegeschrift 12 88 143 bekannt, bei der alle Codewörter der beiden ineinander umzusetzenden Codes in jeweils einem umlaufenden
r> Speicher angeordnet sind: jedes eintreffende Zeichen wird mit den Codewörtern im ersten Speicher verglichen und bei Übereinstimmung das entsprechende Codewort aus dem zweiten Speicher ausgegeben. Diese Einrichtung ist jedoch nur für Codewörter fester Länge
■in vorgesehen und ist für Codeworte variabler Länge nicht geeignet. In der US-Paicnisciirift 34 48 436 ist ein assoziativer Verglcichsschaltkreis zum Auffinden von Informalionsdarsicllungcn variabler Länge beschrieben, die eingegebene Zeichen variabler Länge mit gcspei-
4-, cherten Zeichen vergleicht: zur Unterscheidung der Zeichen variabler Länge sind zwischen den gespeicherten Zeichen spezielle Trcnnkennzeichen angeordnet. Bei der Speicherung großer Datenmengen führen diese Trenn/eichen zu einer nicht unbeträchtlichen Erhöhung
ν des gesamten Speicherbedarfs. Aus der US-Patentschrift 32 57 646 ist weiterhin bekannt, daß zum schnellen Vergleichen eines vorgegebenen Zeichens mit einer Gruppe von weiteren Zeichen ein assoziativer Speicher zur Aufnahme der Gruppe von Zeichen
v, vorteilhaft ist; bei Verwendung von Zeichen variabler Länge muß dabei das Ende eines jeden Zeichens durch ein besonderes Trennkennzeichen angezeigt werden. Außerdem sind besondere Maßnahmen zur Ausrichtung des zu vergleichenden Zeichens mit den Spoiehcrstellon
ν) des Asso/.iativspeiehcrs erforderlich.
Die vorliegende Erfindung stellt sich daher die Aufgabe, eine Anordnung /ur Cmlciiimct/tinf! der eingangs genannten An anzugeben, die bei einfachem Aufbau die Codeumsetzung in beiden Richtungen
(" (Codierung und Decodierung) mit hoher Arbeitsgeschwindigkeit ermöglicht und in der Lage ist. aufeinanderfolgende Zeichen variabler Lange /n decodieren, die ohne spezielles Trennkcnnzeichen unmittelbar aiifein-
anderfolgend zur Codeumsetzung (Decodierung) eintreffen.
Diese Aufgabe wird durch die im Hauptanspruch gekennzeichnete Erfindung gelöst; Ausgestaltungen der Erfindung sind in den Unteranspröchen gekennzeichnet Bei der hier vorgeschlagenen Anordnung zur Codeumsetzung werden zwei Vergleichseinrichtungen verwendet, mit denen jeweils ein Codewort fester Länge mit allen Codewörtern fester Länge oder jeweils ein Codewort variabler Länge mit allen derartigen Codewörtern verglichen wird. Zur Durchführung des letztgenannten Vergleichs sind die Codewörter variabler Länge rechtsbündig in den Einträgen eines TabeUenfelds enthalten,, die mit dem in der Vergleichseinrichtung ebenfalls rechtsbündig eingeschriebenen Codewort verglichen werden. Bei Codewörtern, die kürzer sind als der Tabelleneintrag, werden die überflüssigen Stellen des Tabelleneintrags so ausgelegt, daß sie beim Vergleichsvorgang immer Obereinstimmung anzeigen. Da der Code variabler Länge so ausgelegt ist, daß kein Codewort mit dem Beginn eines längeren Codeworts übereinstimmt, liefert die so ausgestaltete Vergleichseinrichtung für Codewörter variabler Länge eindeutig das gesuchte Codeyort in der Tabelle. In besonders vorteilhafter Weise werden die Vergleichseinrichtungen als Teile eines assoziativen Speichers ausgelegt, wobei die überzähligen Speicherstellen in den Tabelleneinträgen für Codewörter variabler Länge durch spezielle Schaltungen so eingestellt werden, daß sie beim assoziativen Vergleich immer Übereinstimmung anzeigen. Die Anzahl der Speicherplätze im assoziativen Speicher und die Länge der Tabelleneinträge für Codewörter variabler Länge können reduziert werden, wenn nicht alle Codewörter gespeichert werden, sondern nur die häufigeren (und damit kürzeren); die restlichen Codewörter werden dann nicht codiert, sondern mit einem kennzeichnenden Vorspann direkt in die Folge der Codewörter kopiert, die an sich variable Länge aufweisen.
Ausführungsbeispiele der Erfindung sind in den Zeichnungen dargestellt und werden nachfolgend näher beschrieben Es zeigt
F i g. 1 eine allgemeine Darstellung eines Assoziativspeichers, der Speicherzellen mit drei Zuständen enthält, mit Speicherplätzen für je ein Paar einander zugeordneter Codewörter und eine zugehörige Längenangabe.
F i g. 2 eine schematische Darstellung einer in dem in F i g. 1 gezeigten Assoziativspeicher verwendeten Speicherzelle und der zugehörigen Steuerung,
F i g. 3A und 3B ein genaueres Schaltbild eines Assoziativspeichers gemäß F i g. 1 und der zugehörigen Steuereinrichtungen,
Fig.4 ein Ablaufdiagramm, welches die Operation der in den Fig.3A und 3B gezeigten Anordnung im Codierbetrieb zeigt,
F i g. 5 ein Ablaufdiagramm, welches die Arbeitsweise der in den Fig.3A und 3B gezeigten Anordnung im Decodierbetrieb zeigt,
F i g. 6 eine allgemeine Darstellung eines Assoziativ-Speichers, der ähnlich dem in F i g. 1 gezeigten ist, jedoch Modifikationen zum »Kopieren« von Codewörtern enthält,
F i g. 7 Einzelheiten eines Teils der Steuerung für einen Assoziativspeicher gemäß F i g. 6,
F i g. 8A, B, C ein Schaltbild einer Anordnung, welche einen modifizierten Assoziativspeicher reduzierter Größe mit Kopiereinrichtung verwendet, F ι g, 9 ein Ablaufdiagramm, welches die Arbeitsweise der in den Fig,8A bis 8C gezeigten Anordnung im Codierbetrieb zeigt, und
F i g. 10 ein Ablaufdiagramm, welches die Arbeitsweise der in den F i g, 8A bis 8C gezeigten Anordnung im Decodierbetrieb zeigt
Die Fig, 1 bis 5 zeigen ein Ausführungsbeispiel der Erfindung, in welchem ein Assoziativspeicher 11 je einen Speicherplatz (eine Reihe von Zellen) für jedes
in mögliche Codewort fester Länge (ID-Codewort) aufweist Wenn man annimmt daß die feste Codewort-Länge acht Bits oder ein Byte beträgt so gibt es 256 mögliche Codebitkombinationen, und somit werden 256 Informationswörter in verschiedenen Stellen im Assoziativspeicher 11 gemäß Darstellung F i g. 1 gespeichert Das Feld für Codewörter veränderlicher Länge (VL-Codewörter) wird lang genug gehalten, um das längste vorkommende Codewort aufnehmen zu können, das in diesem speziellen Beispiel mit 16 Bits angenommen wird. Diese VL-Felder des A ssoziativspeichers werden mit Codewörtern veränderlicher Länge geladen, weiche Codewörtern fester Länge zugeordnet sind, die jeweils in demselben Speicherplatz im ID-FeId gespeichert sind. Die VL-Codewörter Srnd einwandfrei unterscheidbar; keines dieser Codewörter veränderlicher Länge stellt den Anfang eines längeren Codewortes dar.
Die VL-Codewörter werden rechtsbündig gesetzt so daß die signifikanten Bits eines jeden Codewortes die
jo äußersten rechten Positionen des VL-Feldes belegen. Die Speicherzellen in diesem Feld, weiche nicht zur Speicherung signifikanter Bits benutzt werden, werden gemäß nachfolgender genauerer Beschreibung in den X-Zustand versetzt, der in F i g. 1 auch durch ein X
r, dargestellt ist Im ersten Speicherplatz sind im VL-FeId eine 1 und eine 0 und 14X in der Reihenfolge von rechts nach links angeordnet Das entsprechende ID-Codewort wird für dieses Beispiel mit 00000000 angenommen. Das Längenfeld enthält eine aus vier Bits bestehende Eintragung 0010, die angibt, daß zwei signifikante Bits in der zugehörigen VL-Codeeintragung enthalten sind. In ähnlicher Weise gibt im letzten Speicherplatz die Eintragung im Längenfeld an, daß 14 signifikante Bits in der VL-Codeeintragung vorhanden
r, sind. Die Eintragungen in den Speicherplätzen des Assoziativspeichers brauchen relativ zueinander nicht in einer gegebenen Reihenfolge vorgenommen zu werden.
Für die Verwirklichung der Erfindung kann jede
beliebige Form eines Assoziativspeichers verwendet
*> werden, vorausgesetzt, daß er im VL-Speicherteil Speicherzellen mit drei möglichen Zuständen enthält. Für die vorliegende Erfindung reicht ein Assoziativspeicher aus, wie ei im USA-Patent Nr. 33 17 898 beschrieben und in F i g. 2 der vorliegenden Anmeldung
V) so modifiziert dargestellt ist, daß der ^-Zustand nur in den Zellen des Speichers vorgesehen ist, die diese Eigenschaft wirklich brauchen.
In F i g. 2 ist in dem gestrichelten Rechteck 20 eine Assoziativspeicherzelle mit drei Zuständen gezeigt
3d Diese Zelle 20 enthält ein Flipflop 22 zum Speichern einer binären 1 oder einer binären 0. Wenn das . gespeicherte Bit signifikant ist, wird ein anderes Flipflop 24 in seinen 1-Zustand gesetzt; ist das gespeicherte Bit jedoch nicht signifikant (d. h. wenn die Zelle 20 im
>5 X-Zustand steht), wird das Flipflop 24 auf 0 zurückgestellt.
Um Informationen in die Zelle 20 zu schreiben, wird eine von den drei Schreib-Eingangsleitungen 26,28 und
30 dieser Bitposition zusammen mit einer Schreib-Wahlleitung 32 erregt, die zu dem Speicherplatz gehört, in welchem die Zelle 20 liegt Wenn die Leitungen 26 und 32 gleichzeitig erregt sind, erzeugt das Zusammentreffen dieser Signale am UND-Glied 34 ein Signal zum Setzen des Flipflops 22 auf 1. Wenn die Leitungen 28 und 32 gleichzeitig erregt sind, wird ein Signal über das UND-Glied 36 zum Setzen des Flipflops 22 auf 0 erzeugt. Jedesmal wenn ein Signal durch das Tor 34 oder das Tor 36 zum Flipflop 22 geleitet wird, läuft dieses Signal auch durch das ODER-Glied 38 und wird an das Flipflop 24 angelegt, um es auf 1 zu setzen. Die 1-Ausgangssignale der Flipflops 22 und 24 werden an das mit drei Eingängen versehene UND-Glied 40 angelegt. Das O-Ausgangssignal vom Flipflop 22 und das 1 --, 1-Ausgangssignal vom Flipflop 24 werden an das mit drei Eingängen versehene UND-Glied 42 angelegt. Der dritte Eingang zum UND-Glied 40 kommt von einer Verzweigung der O-Abfrageleitung 44, während der dritte Eingang zum UND-Glied 42 von einer Verzwei- 2η gung der 1-Abfrageleitung 46 kommt. Die Abfrageleitungen 44 und 46 werden wahlweise mit einem Impuls beaufschlagt, abhängig davon, ob die jeweilige Bitposition auf eine 1 oder eine 0 hin abgesucht wird.
Die Ausgangssignale der beiden UND-Glieder 40 und 42 werden auf eine »Nichtübereinstimmungsw-Leitung 48 geleitet, wobei eine derartige Leitung für jeden Speicherplatz des Assoziativspeichers vorgesehen ist. Im erregten Zustand stellt die Leitung 48 den Übereinstimmungsanzeiger 50 für dieses Wort auf 0 in zurück. Eine Nicht-Übereinstimmung kann auftreten, wenn die Zelle 20 eine 0 speichert und auf die zugehörige 1-Signal-Leitung 46 ein Impuls gegeben wird, oder wenn die Zelle 20 eine 1 speichert zu einem Zeitpunkt, zu welchem die zugehörige 0-Leitung 44 einen Impuls führt, vorausgesetzt, daß die Zelle nicht im X-Zustand steht. Die resultierende Koinzidenz der Eingangssignale entweder am UND-Glied 40 oder am UND-Glied 42 setzt ein Ausgangssignal auf die Leitung 48.
Um in die Zelle in den A"-Zustand zu versetzen, wird die Schreibeingangsleitung 30 gleichzeitig mit der Schreiowahlleitung 32 erregt. Dadurch wird mit einem durch das UND-Glied 52 geleiteten Signal das Flipflop 24 auf 0 zurückgestellt Wenn das Flipflop 24 im 0-Zustand steht, fehlt je eines der Eingangssignale zu jedem der beiden UN D-Glieder 40 und 42. und dadurch werden diese beiden Tore so gesperrt, daß sie kein Signal auf die Leitung 48 weiterleiten können. Wenn die Zelle 20 in ihrem X-Zustand und das Flipflop 24 auf 0 =>o stehen, wirkt die Zelle 20 immer so, als ob eine Übereinstimmung vorläge, ungeachtet dessen, ob die Zelle über die zugehörigen Leitungen 46 oder 44 auf 1 oder 0 abgefragt wurde, wodurch die Zelle 20 effektiv von der Abfrage maskiert wird.
Die Assoziativspeichersteuerung ist in dem gestrichelten Rechteck 56 in F i g. 2 so weit fragmentarisch dargestellt, wie sie für die vorliegende Beschreibung benötigt wird. Weitere Einzelheiten dieser Steuerung sind in dem USA-Patent Nr. 33 17 898 beschrieben, ω Wenn Daten in einen bestimmten Speicherplatz des Assoziativspeichers geschrieben werden sollen, wird eine Schreibleitung 58 erregt, um ein Eingangssignal zu Schreibwahltoren 60 zu liefern, von denen für jeden Speicherplatz eines vorgesehen ist. Wenn ein Wortwarnsignal an den anderen Eingang dieses Tores gelegt wird, wird die entsprechende Schreibwahlieitung, wie 7. B. die Leitung 3Z erregt um die Speicherzellen dieses Speicherplatzes zum Empfang von Daten von den Schreibeingangsleitungen 26, 28 und 30 vorzubereiten.
Wenn eine Abfrage- oder Suchoperation auszuführen ist, werden die Übereinstimmungsanzeiger 50 aller Speicherplätze zuerst durch einen auf eine Rückstelleitung 62 gegebenen Impuls in den 1 -Zustand zurückgesetzt Dann werden auf die verschiedenen Abfrageleitungen, wie die Leitungen 44 und 46, wahlweise zur Abfrage der zugehörigen Speicherzellen Impulse gegeben. Wenn eine oder mehrere Zellen in einem Wort ein Nicht-übereinstimmungssignal auf der entsprechen den Leitung 48 erzeugen, wird der Übereinstimmungsanzeiger 50 für diese1 Wort auf 0 gesetzt und dadurch ein Eingangssignal vom Lesewahltor 64 beendet und verhindert, daß das entsprechende Wort aufgrund der Abfrage ausgelesen wird.
Um ein übereinstimmendes Wort auszulesen, wird die Leseleitung 66 erregt. Beim übereinstimmenden Wort empfängt der Übereinstimmungsanzeiger 50 kein Nicht-Übereinstimmungssignai und bleibt demzufolge im 1-Zustand, in den er am Anfang versetzt wurde, und das Lesewahltor 64 wird daher vorbereitet, um das Lesesignal von der Leitung 66 auf die Lese-Wahlleitung 68 weiterzuleiten. Das Signal auf der Leitung 68 bereitet zwei UND-Glieder 70 und 72 vor zum Lesen der Daten aus allen Speicherzellen des gewählten Speicherplatzes. Abhängig vom Zustand des Flipflops 22 wird ein Signal durch eines oder das andere der beiden UND-Glieder 70 und Tl auf die 1-Leseausgangsleitung 74 oder die 0-Leseausgangsleitung 76 geleitet.
Wenn die Zelle 20 im X-Zustand steht (Flipflop 24 auf
0 gesetzt), hat diese Einstellung keinen Einfluß auf das Auslesen der im Flipflop 22 gespeicherten Daten. Der gerade im Flipflop 22 gespeicherte Wert (0 oder 1) wird ungeachtet dessen ausgHesen, ob die Zelle 20 im X-Zustand steht oder nicht. Andere noch zu beschreibende Anordnungen sind vorgesehen, um die Bits zu übergehen, die aus den Zellen ausgelesen werden, die im -Y-Zustand stehen. Die X-Stellung sperrt lediglich die Tore 40 und 42. Sie beeinflußt die Auslesetore 70 und 72 nicht
Codierung
Die Arbeitsweise der in den Fig.3A und 3B gezeigten Einrichtung wird im Zusammenhang mit den Ablaufdiagrammen der F i g. 4 und 5 beschrieben. Zuerst wird die Codieroperation betrachtet, bei der ein
1 D-Codewort (Code mit fester Länge) in ein zugeordnetes VL-Codewort (Code mit veränderlicher Länge) umgewandelt wird. Es wird angenommen, daß der in Fig.3A gezeigte Assoziativspeicher 11 vorher mit Paaren von I D-Code Wörtern und zugeordneten VL-Codewörtern zusammen mit den zugehörigen Längeneintragungen (zur Bezeichnung der Anzahl signifikanter Bits im betreffenden VL-Codewort) geladen wurde.
Wie bereits gesagt, wird als Beispiel angenommen, daß die 1 D-Codewörter eine Länge von 8 Bits oder einem Byte haben, und daß die VL-Codewörter eine Länge von ein Bit bis zu 16 Bits haben können Um eine Längenzahl von bis zu 16 Bits darzustellen (wobei 0000 eine 16 darstellt), genügen 4 Bits. Dementsprechend hat der in F i g. 3A gezeigte Assoziativspeicher 11 ein 16 Bit großes Feld zur Speicherung von VL-Codewörtern, ein 8 Bit großes Feld zur Speicherung der ID-Codewörter, von denen jedes ein Byte lang ist, und ein 4 Bit großes Feld zu Lär.ger.angabe für das VL-Codewort In dem Ausführungsbeispiel der Fig.3A und 3B wird weiter angenommen, daß der Assoziativspeicher für alle
möglichen ID-Bytekombinationen (insgesamt 256) Platz hat.
Bevor die Codieroperation beginnt, wird die Anzahl der zu codierenden ID-Bytes in den Bytezähler 80 der F i g. 3B eingegeben. Eine Datenquelle oder Eingabeein- ί heit für die Lieferung dieser Bytezahl wird angenommen. Wenn die Eingabeeinheit mit einer anderen Geschwindigkeit arbeitet als der Assoziativspeicher, kan> entsprechend gepuffert werden. Die Einstellung des Bytezählers 80 wird schrittweise heruntergesetzt, während die Bytes codiert werden, und die laufende Einstellung wird durch einen Decodierer 82 zu »Null« oder »Nicht Null« decodiert. Ein O-Ausgangssignal vom Decodierer 82 beendet die Codieroperation, was nachfolgend genauer beschrieben wird. ι -,
Die Codieroperation wird im Zusammenhang mit den F i g. 3A, 3B und 4 beschrieben. Die schematisch in den Fig. 3A und 3B gezeigte Einrichtung dient nur als Ausführungsbeispiel. Es braucht nicht unbedingt diese Form zu sein, in welcher die Erfindung für kommerzielle Zwecke hergestellt wird. Die Codieroperation wird eingeleitet durch einen Startimpuls auf der Leitung 90, der zu einer Codier-Taktschaltung führt. Der Startimpuls läuft über ein ODER-Glied 92 auf eine monostabile Kippschaltung 94 und schaltet diese zur Erzeugung :ϊ eines Impulses auf der Leitung £1 ein, welcher über ein Kabel 96 in den Fig.3A und 3B läuft. Der Impuls auf Leitung EI wird an ein in Fig.3A gezeigtes Tor 98 angelegt und schaltet dieses so ein, daß ein Byte von der nicht dargestellten Eingangseinheit zum ID-Argument- j< > register 100 geleitet wird. Das Argumentregister 100 ent'ält jetzt das Byte, welches gegenwärtig zu codieren ist. Derselbe Impuls wird außerdem von der Leitung E 1 über eine Verzögerungsschaltung 102 einer Eingabeeinheit zugeführt, damit diese das nächste ID-Codebyte auf )5 die zum Tor 98 führenden Eingabeleitungen gibt. Der Impuls auf der Leitung E\ läuft außerdem über ein ODER-Glied 106 in F i g. 3A zur Leitung 62, die auch in Fig.2 gezeigt ist, und stellt so die Übereinstimmungsanzeiger in der Assoziativspeichersteuerung 56 auf 1. 4η letzt ist das Gerät zur Codierung bereit.
Wenn die monostabile Kippschaltung 94 in Fig. 3B abfällt, schaltet sie die monostabile Kippschaltung 108 ein. Dadurch wird ein Impuls auf der Leitung £2 erzeugt, welcher über das Kabel % zum Argumentregister 100 läuft, um ein dem Inhalt des ID-Argumentregisters 100 entsprechendes Muster von Einsen und Nullen auf die Leitungen 110 zu geben. Diese abfragenden Leitungen 110 übernehmen eine ähnliche Funktion wie die Abfrageleitungen 44 und 46, die oben im Zusammenhang mit F i g. 2 beschrieben wurden. Mit den Signalen auf den Leitungen 110 werden die gespeicherten I D-Codewörter abgefragt, um den Speicherplatz zu finden, der ein ID-Codewort enthält, das dem Inhalt des Argumentregisters 100 entspricht. 5;
Wenn die monostabile Kippschaltung 108 in F i g. 3B abfällt, schaltet sie die nächste monostabile Kippschaltung 114 ein, die einen Impuls auf der Leitung £3 im Kabel 96 erzeugt. Der Impuls auf der Leitung £3 wird über ein ODER-Glied 116 in F i g. 3A zur Leseleitung 66 der Assoziativspeichersteuerung 56 in den F i g. 3A und 2 weitergeführt Durch die Erregung der Leitung 66 wird der gesamte Inhalt des Speicherplatzes, bei dem Übereinstimmung im ID-FeId festgestellt wurde, über ein Kabel 118 in Fig.3A auf das Datenregister 120 ausgelesen. Diese Information umfaßt die 16 Bits im VL-FeId zuzüglich der acht Bits im ID-Feid sowie die vier Bits im Längenfeld dieses Wortes. Gleichzeitig mit dieser Aktion wird der Impuls auf der Leitung £3 auch über ein ODER-Glied 122 geführt und schaltet den Bytezähler 80 um eine Einheit herunter.
Wenn die monostabile Kippschaltung 114 abfällt, sendet sie einen Impuls über das ODER-Glied 124 und schaltet die monostabile Kippschaltung 126 ein. Diese Kippscahltung sendet einen Impuls auf die Leitung £4, der zum Tor 128 in Fig.3A weiterläuft und dieses dadurch zur Übertragung des äußersten rechten Bits von vom VL-FeId des Datenregisters 120 auf die Ausgabeeinheit vorbereitet.
Wenn das äußerste rechte Bit des VL-Codewortes auf diese Weise ausgegeben wurde, muß der Inhalt des VL-Feldes im Datenregister 120 um eine Bitspeicherposition nach rechts verschoben werden. Das geschieht, wenn die monostabile Kippschaltung 126 abfällt, wodurch die monostabile Kippschaltung 130 eingeschaltet wird und einen Impuls auf der Leitung £5 erzeugt. Dieser Impuls auf der Leitung £5 wird an eine nicht-dargestellte Verschiebeeinrichtung angelegt, um eine Rechtsverschiebung der im VL-FeId des Datenregisters 120 gespeicherten Bits um ein Bit zu bewirken, wie es durch den Pfeil der Linie £5 in F i g. 3A gezeigt ist.
Der Teil des Datenregisters 120, der die 4-Bit-Längenangabe speichert, wird als Längszähler benutzt. Für jede Rechtsverschiebung der im VL-FeId des Registers 120 gespeicherten Bits wird diese Längenzahl um eine Einheit reduziert Dieses Herunterzählen des Längenzählers erfolgt im vorliegenden Beispiel durch den Impuls £5, der durch ein ODER-Glied 132 zu einer Leitung 134 läuft, die zu der nicht-dargestellten Einrichtung zum Herunterzählen des im Längenzähler (die letzten vier Bits des Datenregisters 120) gespeicherten Wertes führen.
Mit einer Prüfung wird jetzt festgestellt, ob die Längenangabe auf 0 reduziert wurde, d. h. ob alle signifikanten Bits des VL-Codewortes aus dem Datenregister 120 geschoben wurden. Wenn die monostabile Kippschaltung 130 abfällt (F i g. 3B), wird die monostabile Kippschaltung 136 eingeschaltet und gibt einen Impuls auf die Leitung £6, die zum Tor 138 in Fig.3B führt. Die Anzeigeleitungen für Null (0) und Nicht-NuÜ (0) werden zum Tor 138 weitergeführt von einem UND-Glied 140, an welches die Null-Ausgänge aller vier Stellen des Längenzählers angelegt werden. Wenn das UND-Glied 140 kein Ausgangssignal hat, bedeutet das, daß mindestens eines der Bits im Längenzähler auf 1 steht, und dann gibt ein Inverter 142 ein entsprechendes Signal auf die Nicht-Null-Anzeigeleitung 144 und an das Tor 138. Bei einer Einstellung des Längenzählers mit lauter Nullen wird die Null-Anzeigeleitung 146 zum Tor 138 erregt Wenn für den vorliegenden Fall angenoml.ien wird, daß mehr als ein Codebit aus dem VL-FeId des Datenregisters 120 zu entnehmen ist, empfängt das Tor 138 ein Nicht-Null-Anzeigesignal und erregt dadurch eine vom Tor 138 kommende Ausgangsleitung 147. Die Leitung 147 läuft durch die Kabel 148 und 150 zum ODER-Glied 124, wodurch der Impuls für »Nicht-Null« auf die monostabile Kippschaltung 126 gegeben wird. Dadurch wird ein neuer Operationszyklus eingeleitet, zu welchem welchem die aufeinanderfolgende Erregung der monostabilen Kippschaltungen 126, 130 und 136 gehört Während dieser Aktion wird ein anderes Bit aus der äußersten rechten Position des VL-Feldes des Datenregisters 120 ausgelesen und resultiert in einer Rechtsverschiebung der übrigen Bits in diesem Feld um ein BiI und einer Prüfung der Längenzählereinstellung auf lauter Nullen.
Die Operationsschritte, die die Erregungen der monostabilen Kippschaltungen 126, 130 und 136 sowie die resultierende Erregung der Leitungen EA, E5 und EB umfassen, werden so oft wiederholt, bis die Längenangabe auf 0 reduziert ist. Zu diesem Zeitpunkt ist das letzte signifikante Bit aus dem VL-FeId des Datenregisters 120 entnommen worden, und die in diesem Feld verbleibenden Bits sind ohne Interesse, da sie von Speicherzellen kamen, die im X-Zustand standen, oder da sie anderweitig während des ersten Schiebeprozesses in das Register eingeführt wurden. Die Operation läuft jetzt aus der Routine für die Rechtsverschiebung heraus. Wenn das in Fig.3B gezeigte Tor 138 durch den Impuls auf der Leitung £6 betätigt wird, und die Null-Anzeigeleitung 146 aufgrund , -, der Gesamt-Null-Anzeige des Längenzählers erregt ist, wird die Ausgangsleitung 154 vom Tor 138 auch erregt und gibt ein Eingangssignal auf jedes der UND-Glieder 156 und 158 in F i g. 3B. Ein zweites Eingangssignal zum UND-Glied 156 wird durch eine Null-Ausgangsleitung ,„ 160 vom Decodierer 82 nur geliefert, wenn der Bytezähler 80 auf 0 reduziert wurde. Wenn die Einstellung des Bytezählers 80 von 0 verschieden ist, liefert der Decodierer ein Ausgangssignal auf der Leitung 162 zum UND-Glied 158. Wenn jetzt ,-angenommen wird, daß die Bytezählereinstellung von 0 verschieden ist, bedeutet das, daß zusätzliche ID-Bytes zu decodieren sind, und das Zusammentreffen der Eingangssignale am UND-Glied 158 bewirkt einen Impuls auf der Leitung 164, der durch die Kabel 148 und tl, 150 zum ODER-Glied 92 läuft, welches dann einen Impuls zur monostabilen Kippschaltung 94 weiterführt. Damit beginnt -^n neuer Codierzyklus gemäß der Darstellung in F i g. 4 mit den Schritten E1 bis £6.
Der oben beschriebene Codierzyklus wird so oft j-, wiederholt, bis der Bytezähler 80 ganz auf 0 steht. Wenn das letzte ID-Byte codiert wurde und die Einstellung des Bytezählers 0 wird, liefert der Decodierer 82 ein Null-Ausgangssignal an das UND-Glied 156. Wenn dann die Längenzählereinstellung 0 wird und anzeigt. daß die letzte codierte Stelle aus dem Datenregister 120 ausgelesen wurde, erzeugt die gleichzeitige Erregung der Eingänge des UND-Gliedes 156 einen Impuls zur Beendigung der Systemoperation.
Decodierung 4'
Wenn die Einrichtung im Decodierbetrieb betrieben wird, werden die Bits des zu decodierenden VL-Codewortes sequentiell in ein VL-Argumentregister 178 in Fig.3A gegeben, welches über 16 Bitspeicherstellen -)fl verfügt. Die Anzahl der VL-Codewörter. die in diesem Register 178 zu irgendeinem Zeitpunkt gespeichert sind, ist unbestimmt. Zu Anfang einer jeden Decodieroperation muß jedoch das erste Bit eines neuen VL-Codewortes in die am weitesten rechts liegende Stelle des Argumentregisters 178 gesetzt werden.
Die Decodieroperation des Systems wird nun im Zusammenhang mit den F i g. 3A, 3B und 5 beschrieben. Im Ablaufdiagramm der F i g. 5 entsprechen die verschiedenen Schritte D1, D 2, usw., den durch Impulse eo auf den verschiedenen Leitungen Dl, D2, usw. ausgelösten Operationen gemäß nachfolgender Beschreibung. Die Decodieroperation beginnt durch Anlegen eines Impulses an die Startleitung 180 zur Betätigung der monostabilen Kippschaltung 182 im Decodiertaktgeber. Wenn die monostabile Kippschaltung 182 eingeschaltet wird, sendet sie einen impuis über die Leitung D1 und die Kabel 184 und 96 in den F i g. 3A und 3B zu einer Rückstelleinrichtung für den Längenzähler, der die vier äußersten rechten Bitspeicherpositionen im Datenregister 120 umfaßt. Der Impuls auf der Leitung D1 stellt den Längenzähler auf Gesamtnull zurück und bereitet ihn dadurch zum Zählen der ersten 16 Informationsbits vor, die sequentiell in das Argumentregister 178 eingegeben werden. Bevor die Decodieroperationen beginnen können, muß mit Hilfe des Längenzählers festgestellt werden, daß 16 Informationsbits in das Argumentregister 178 eingegeben wurden.
Wenn die monostabil Kippschaltung 182 abfällt, sendet sie einen Impuls durch das ODER-Glied 186 an die monostabile Kippschaltung 190, die dann einen Impuls auf der Leitung D 2 erzeugt. Dieser Impuls auf der Leitung D2 läuft durch ein ODER-Glied 192 in F i g. 3A und eine Leitung 194 zu einem Tor 196, welches dadurch so eingeschaltet wird, daß das erste Bit von der Eingabeeinheit in die äußerste linke Bitspeicherposition des Argumentregisters 178 geleitet wird. Der Impuls auf der Leitung 194 läuft außerdem über eine Verzogerungsschaltung 198 in die Eingabeeinheit, damit das nächste Bit zur Übertragung zur Verfügung gestellt wird. Das gerade in das Argumentregister 178 eingegebene Bit muß schließlich nach rechts verschoben werden, bis es die äußerste rechte Bitspeicherposition in diesem Register einnimmt. Der Impuls D 2 läuft außerdem über das ODER-Glied 132 in F i g. 3A auf die Leitung 134 und vermindert den Inhalt des Längenzählers um eine Einheit. Wenn der Längenzähler am Anfang auf 0000 stand, wird seine Stellung durch den ersten Abzählschritt auf 1111 geändert.
Wenn die monostabile Kippschaltung 190 in Fig.3B abfällt, wird die monostabile Kippschaltung 200 eingeschaltet und erzeugt einen Impuls auf der Leitung D3. Dieser D3-Impuls wird an ein Tor 202 angelegt, welches ein Eingangssignal von der zum Längenzähler gehörenden Nicht-Null-Anzeigeleitung 144 oder der Null-Anzeigeleitung 146 empfängt. Wenn der Längenzähler wie im vorliegenden Beispiel nicht auf 0 steht, läuft ein Signal von der Leitung 144 durch das Tor 202 zur Leitung 204, die zu der in Fig.3B gezeigten monostabilen Kippschaltung 208 führt.
Wenn die monostabile Kippschaltung 208 einschaltet, setzt sie einen Impuls auf die zeitung D4, der dann durch ein ODER-Glied 210 in F i g. 3A auf eine Leitung 212 läuft, die zu einer nicht dargestellten Verschiebeeinrichtung des Argumentregisters 178 führt. Dadurch wird der Inhalt des Argumentregisters 178 um eine Bitspeicherposition nach rechts verschoben, so daß die äußerste linke Bitspeicherstelle dieses Registers zum Empfang eines neuen Eingabebits bereit ist.
Wenn die monostabile Kippschaltung 208 abfällt, sendet sie einen Impuls über die Leitung 216 und das ODER-Glied 186 zur monostabilen Kippschaltung 190 und schaltet diese dadurch ein. Die Reihenfolge der Schritte D2 und D3 in Fig.5 wird jetzt wiederholt, während die monostabilen Kippschaltungen 190 und 200 nacheinander erregt werden. Beim Schritt D 3 wird wieder die Einstellung des Längenzählers geprüft, und wenn sie nicht 0000 ist, wird die monostabile Kippschaltung 208 eingeschaltet zur Ausführung des Schrittes D 4, wodurch der Inhalt des Argumentregisters 178 nach rechts verschoben wird.
Diese Reihenfolge der Eingabe eines Informatic-nsbits in das Argumentregister 178 - Vermindern des Längenzähierinhalts, Prüfung der Längenzählerstellung und Rechtsverschiebung des Inhalts des Argumentregi-
Il
siiTs !78 - w-ird wiederholt, bis die Prüfung im Schritt D 3 schließlich ergibt, daß die Längenzählstellung 0000 ist. Dadurch wird angezeigt, daß die ersten 16 inform.itionsbits in das Argumentregisler 178 geleitet wurden und das erste Bit des ersten VL-Codewortes jetzt in der äußersten rechten Stelle des Registers 178 steht. Wenn an diesem Punkt der D3-Impuls aul'dasTor 202 in Fi g. 3B gegeben wird, läuft die Erregung weiter von der Null-Anzeigeleitung 146 des Längenzählers durch das Tor 202 zu einer Leitung 220, die zum ODER-Glied 222 in Fig. 3B führt, wodurch die Erregung weitergeführt wird zur monostabilen Kippschaltung 224. Wenn die monostabile Kippschaltung 224 eingeschaltet wird, gibt sie einen Impuls auf eine Leitung D 5. der über die Kabel 184 und % zum ODER-Glied 106 in Flg. 3A und die Übereinstimmungsanzeiger-Rückstelleitung 62 weitergeführt wird und dadurch die Übcrcinstimmungsanzcigcr in der Speichersteuerung 56 in den F i g. 3A und 2 auf I zurückstellt. Wenn die mcmos'abile Kippschaltung 224 abfällt, schaltet sie die monosiabiie Kippschaltung 226 ein, und die Leitung DG erhält einen Impuls. Dadurch wird ein Impuls auf das Argumentregister 178 in Fig. 3A gegeben und eine Abfrageoperation eingeleitet, in welcher der Inhalt des Argumentregisters 178 über die Abfrageleitungen 230 an die VL-Felder des Assoziativspeichers übertragen wird. Die Abfrageleitungen 230 umfassen Leitungen wie die Abfrageleitungen 44 und 46 in F i g. 2 zur Abfrage der Speicher/eilen, die die VL-Codewörter im Assoziativspeicher enthalten. Speicherzellen, die im A'-Zustand stehen, können keine Signale für Nicht-Übereinstim-.1Uing erzeugen. Eine Speicherzelle, die weder im Y-Zustand sieht noch einen Bilwert speichert, welcher mit dem Signal auf der zugehörigen Abfrageleitung (230 in Fig. 3A) übereinstimmt, erzeugt ein Nicht-Übereinsiimmungssignal und setzt damit den entsprechenden Übereinstiiiinuingsanzeiger auf 0.
Wie bereits gesagt wurde, stimmt kein VL-Codewort mit dem Beginn eines anderen VL-Codeworts überein. Somit stimmen die Bits im Argumentregister 178 nur mit einem Codewort im Assoziativspeicher überein, und zwar mit dem Codewort. dessen signifikante Bits genau mit der entsprechenden Anzahl Bits übereinstimmen, die am rechten Ende des Argumentregisters 178 stehen. Das gilt ungeachtet der Anzahl anderer VL-Codewörter. die in den übrigen Positionen des Argumentregisters 178 gespeichert sind.
Wenn die monostabile Kippschaltung 226 abfällt, wird die monostabile Kippschaltung 232 eingeschaltet und erzeugt einen Impuls auf der Leitung D 7. der über die Kabel 184 und % zum ODER-Glied 116 in F i g. 3A weiterläuft. Dieser Impuls wird dann über das ODER-Glied 116 auf die Leseleitung 66 der Assoziativspeichersteuerung 56 gegeben. Der Übereinstimmungsanzeiger, der dann auf 1 steht, bezeichnet den Speicherplat im Assoziativspeicher, der das übereinstimmende VL-Codewort enthält. Der gesamte Inhalt dieses Speicherplatzes wird aus dem Assoziativspeicher über die Ausgangsleitungen 118 auf das Datenregister 120 ausgelesen. Diese Daten umfassen das gesuchte I D-Codewort und auch eine Längenangabe. Der Impuls D 7 wird außerdem durch das ODER-Glied 122 in F i g. 3A weitergeführt und vermindert den Inhalt des Bytezählers 80 in F i g. 3B um eine Einheit.
Wenn die monostabile Kippschaltung 232 abfällt, schaltet sie eine monostabile Kippschaltung 236 ein. Diese erzeugt einen Impuls auf der Leitung D 8. der an ein Tor 238 in Fig.3A angelegt wird und dieses zur Übertragung des acht Bit umfassenden I D-Code Wortes aus dem Datenregister 120 an die Ausgabeeinheit veranlaßt.
Zu diesem Zeitpunkt enthält der Vier-Bit-Längenzähler (die ι echten vier F'.iiitionen des Datenregisters 120 in Fig.3A) die Anzahl der in dem gerade decodierten VL-Codewort enthaltenen signifikanten BiK Der Inhalt des Argumentregisters muß jetzt um diese Bit-Anzahl nach rechts verschoben werden, um das erste Bit des nächstfolgenden VL-Codewortes in die äußerste rechte Position des Argumentregisters zu bringen. Das geschieht auf folgende Weise:
Wenn die monostabile Kippschaltung 236 abfällt. überträgt sie einen Impuls über das ODER-Glied 240 /um Einschalten an die monosiabiie Kippschaltung 242. Diese erzeugt einen Impuls auf der Leitung D9 in den F i g. 3B und 3A, der über das ODER-Glied 210 auf die Verschiebeleitung 212 gelangt. Dadurch wird der Iniialt des Argumentregisters 178 um ein Bit nach rechts verschoben. Gleichzeitig läuft der Impuls auf der
Längenzähler-Dekrementierleitung 134 und vermindert den Inhalt des Längenzählers um eine Einheit.
Wenn die monostabile Kippschaltung 242 abfällt, schaltet sie die monostabile Kippschaltung 244 ein und erzeugt dadurch einen Impuls auf der Leitung D 10. Dieser Impuls läuft durch das ODER-Glied 192 und die Leitung 194 zum Tor 196 in F i g. 3A, um das nächste Bit in die äußerste linke Stelle des Argumentregisters 178 einzugeben. Gleichzeitig läuft der Impuls durch die Verzögerungseinheit 198 weiter zur Eingabeeinheit, so daß sie ein neues Bild für die Eingabeseite des Tores 196 zur Verfügung stellen kann.
Wenn die monostabile Kippschaltung 244 abfällt, schaltet sie die monostabile Kippschaltung 246 ein. welche dann einen Impuls auf die Leitung D 11 gibt, der an das in Fig. 3B gezeigte Tor 248 weiterläuft und den Zustand des Längenzählers prüft. Wenn der Längenzähler noch nicht auf 0 reduziert wurde, leitet das Tor 248 einen Impuls von der Nicht-Null-Anzeigeleitung 144 auf eine Leitung 250, die zum in Fig. 3B gezeigten ODER-Glied 240 führt. Die Folge davon ist die erneute Einschaltung der monostabilen Kippschaltung 244 und der erneute Beginn der in F i g. 5 gezeigten Reihenfolge der Schritte D9, DlO undf DIl. Somit wird t c-r Inhalt des Argumentregisters 178 progressiv nach rechts verschoben, bis die laufende Zahl im Längenzähler auf 0 reduziert ist. Wenn diese Bedingung erreicht wird, ist das Bit in der ersten Stelle des nächstfolgenden VL-Codewortes an das rechte Ende des Argumentregisters 178 gesetzt worden, und die Einrichtung ist dann zur Ausführung einer neuen Abfrageoperation mit diesem VL-Codewort bereit.
Wenn die Längenangabe auf 0 reduziert und die monostabile Kippschaltung 246 eingeschaltet ist, wird die Erregung von der Null-Anzeigeleitung 146 über das Tor 248 auf eine Leitung 255 ausgedehnt, die jeweils einen Eingang zu den beiden UND-Gliedern 254 und 256 bildet. Wenn der Bytezähler 80 zu diesem Zeitpunkt noch nicht auf 0 steht, liefert der Decodierer 82 ein Signal auf der Leitung 162, welches durch das UND-Glied 254 zu einer Leitung 260 und von dort durch das in F i g. 3B gezeigte ODER-Glied 222 zur monostabilen Kippschaltung 224 läuft und diese einschaltet. Daraufhin werden die in dem Ablaufdiagramm der Fig.5 gezeigten Schritte D5 bis DIl wiederholt Dieser Vorgang läuft weiter, bis der Bytezähler auf Null steht. Wenn dann die in Fig.3B gezeigte monostabile
Kippschaltung 246 einschaltet, wird das UND-Glied 256 aktiv und erzeugt ein Signal zur Beendigung der Decodieroperation.
Kopierbetrieb
Die anhand der F i g. 1 bis 5 beschriebene Codier-Decodiereinrichtung arbeitet mit einem Assoziativspeicher, der für jedes mögliche I D-Codewort samt dem zugeordneten CL-Codewort einen eigenen Speicherplatz enthält In dem zur Darstellung gewählten Beispiel haben die Codewörter eine Länge von einem Byte (8 Bits), und der Assoziativspeicher muß daher für alle möglichen Bytekombinationen eine Kapazität von 256 Wörtern haben. Es gibt jedoch viele Situationen, in denen für einen kleinen Teil der gesamten Daten die Verdichtung (Codierung mit Codewörtern variabler Länge) geopfert werden kann, um einen großen Teil der Speicherkosten zu sparen. Eine Analyse der in der Praxis wahrscheinlich auftretenden Datenbasen kann zeigen, daß nur für einen sehr kleinen Anteil der Daten die Verdichtung verlorengeht, wenn nur die I5Ö häufigsten I D-Codewörter in eindeutige Codewörtsr eines Codes mit veränderlicher Länge umgewandelt werden. Die übrigen 106 ID-Codewörter, die wesentlich seltener auftreten als die ersten 150 Codewörter, können dann ohne die übliche Codierung und Decodierung verarbeitet werden. Die längeren VL-Codewörter werden normalerweise den ID-Codewörtern zugeordnet, die nicht so häufig auftreten, so daß man durch ihre Verwendung ohnehin nur eine relativ kleine Verdichtung erreicht Sobald eines dieser weniger häufigen ID-Codewörter auftritt, kann es in geeigneter Weise gemäß vorliegender Beschreibung gekennzeichnet und durch das System nicht codiert, sondern »kopiert«, d.h. einfach unverändert übernommen werden. Diese Betriebsart wird in der vorliegenden Beschreibung als »Kopierbetrieb« bezeichnet
Für den Kopierbetrieb wird das mit den F i g. I bis 5 erläuterte System zu einer Einrichtung gemäß Darstellung in den Fig.6 bis 10 modifiziert Ein Vergleich der F i g. 6 mit der F i g. 1 zeigt die erforderlichen Änderungen. In diesem Ausführungsbeispiel hat der Assoziativspeicher 11' in Fig.6 eine Speicherkapazität von 150 Plätzen (für je ein ID-Codewort und ein zugeordnetes VL-Codcwort); dazu kommt ein weiterer Speicherplatz, welcher ein Kopierkennzeichen in seinem VL-FeId enthält Der Inhalt des ID-Feldes in diesem zuletzt genannten Speicherplatz spielt so lange keine Rolle, als er nicht mit einem der in den 150 übrigen Speicherplätzen enthaltenen ID-Codewörter identisch ist. Die nachfolgend noch zu beschriebende Assoziativspeicher' steuerung bewirkt, daß in den Fällen, wo keine Übereinstimmung mit einem der 150 im Assoziativspeicher gespeicherten ID-Codewörter festgestellt wird, das Kopierkennzeichen automatisch abgegeben wird. Das »codierte« Ausgangswort besteht schließlich aus den Kopierkennzeichen-Bits und den unmittelbar anschließenden Bits des unveränderten I D-Code Wortes. Dadurch entsteht zwar ein »VL-Codewort«, das länger ist als die normalen ID-Codewörter; da dies jedoch relativ eo selten eintritt, wird die Gesamtdatenverdichtung nicht wesentlich beeinflußt.
Die Größe des VL-Feldes kann so gewählt werden, daß sie für die längsten VL-Codewörter ausreicht, die unter normalen Codierbedingungen ausgegeben werden. In dem vorliegenden Beispiel wird für die Darstellung ein VL-FeId von 9 Bits Länge angenommen. Bei Verwendung dieses Schemas spart man somit sieben Speicherzellen pro Wort Durch die Modifikation spart man also nicht nur an der Anzahl der im Assoziativspeicher 11' zu speichernden Wörter, sondern auch an der Anzahl der in jedem solchen Wort enthaltenen Bits. Eine Modifikation der Anordnung, die ein Kopieren ermöglicht, gestattet daher eine genügende Datenverdichtung und erfordert nur einen Assoziativspeicher bescheidener Größe.
Das Kopierkennzeichen erfordert nicht unbedingt die mögliche Höchstzahl von Bits. Es muß aber von den andern VL-Codewörtern verwechslungsfrei unterscheidbar sein. Das Kopierkennzeichen stellt effektiv alle 106 ID-Codewörter dar, die im vorliegenden Beispiel ohne normale Codierung behandelt werden. Diese Gruppe von ID-Codewörtern kann als eine Einheit in der Reihe der Häufigkeit zusammen mit den übrigen 150 ID-Codewörtem rangieren, und die Häufigkeit, mit der Glieder dieser Codegruppe auftreten, bestimmt die Länge des zu ihrer gemeinsamen Darstellung verwendeten Kopierkennzeichen. Unter diesen Umständen kann das Kopierkennzeichen eine Länge (d. h. eine Anzahl signifikanter Bits) haben, die beträchtlich unter der Höchstlänge von 9 Bits der normalen VL-Codewörter liegt
Wenn die in Fig.6 gezeigte Einrichtung als Decodierer arbeitet, werden die hereinkommenden Codewörter (die in einigen Fällen auch eine Kombination von Kopierkennzeichen und ID-Codewort sein können) sequentiell dem VL-Argumentregister zugeführt Jedes Kopierkennzeichen leitet eine Sonderoperation ein, in welcher die Bits des Kopierkennzeichens aus dem Argumentregister geschoben und die folgenden acht Bits des ID-Codewortes in die acht am weitesten rechtsstehenden Positionen dieses Argumentregisters gebracht werden. Diese acht Bits des ID-Codewortes werden dann parallel aus dem VL-Argumentregister ausgelesen, und nicht wie sonst aus dem Daten-Decodierregister. Anschließend wird das ID-Codewort aus dem VL-Argumentregister ausgeschoben, um das nächstfolgende VL-Codewort in Decodierposition zu bringen.
Wenn ein ID-Codewort, das im ID-Argumentregister steht, bei einer Codieroperation kein übereinstimmendes ID-Codewort im Assoziativspeicher 11' findet, erfolgt eine Sonderoperation, durch die das Kopierkennzeichen aus dem Assoziativspeicher in das Datencodierregister gelesen wird, von wo die Bits dieses Kopierkennzeichen dann sequentiell ausgelesen werden. Unmittelbar anschließend werden die acht Bits des ID-Codewortes aus dem ID-Argumentregister sequentiell ausgelesen und an die Reihe der Kopierkennzeichen-Bits angehängt, um eine aus Kopierkennzeichen-Bits und ID-Codewort-Bits zusammengesetzte Bitfolge der oben beschriebenen Art zu bilden.
Fig.7 zeigt einen Teil der Schaltung in der Assoziativspeichersteuerung 56' für dieses zweite Ausfuhrungsbeispiel der Erfindung. In dieser sowie in den zugehörigen F i g. 6 und 8A bis 10 tragen die Teile, die Elementen des in den F i g. 1 bis S gezeigten ersten Ausführungsbeispiels entsprechen, dieselben Bezugs· zahlen, an welche jedoch noch ein Strich (') angehängt wurde. In dem in F i g. 7 gezeigten Steuerschema sind eine Nicht-Übereinstimmungsleitung 48' und ein Übereinstimmungsanzeiger 50' jedem der Speicherplätze im Assoziativspeicher 11' der F i g. 6 zugeordnet, angenommen den einen Speicherplatz, welcher das Kopierkennzeichen enthält. Von jedem JD-ArgumentCodewort, das keinem der 150 normal zu codierenden Wörter
entspricht, wird angenommen, daß es zur Gruppe der I D-Codewörter gehört, die gemeinsam durch das Kopierkennzeichen bezeichnet sind Wenn das ID-Argumentcodewort während einer Codieroperation mit keinem der Wörter übereinstimmt, zu denen Obereinstimmungsanzeiger 50' gehören, werden alle diese Obereinstimmungsanzeiger in den O-Zustand zurückversetzt. Dadurch wird ein Schaltungsweg von der Leseleitung 66' in Fig,7 über eine Reihe von UND-Gliedern 290 (von denen jedes ein Eingangssignal von der O-Ausgangsseite des entsprechenden Obereinstimmungsanzeigers 50' empfängt) zu einer Lese-Wahlleitung 292 Tür das Kopierkennzeichen hergestellt, woraufhin das Kopierkennzeichen als erster Teil des Ausgabe-Codewortes in das Datenregister übertragen wird. Gleichzeitig wird das Erregungssignal durch die Leitung 292 und 294 auf ein Kopier-Flipflop 296 weitergeführt und dieses dadurch auf 1 gesetzt Dadurch werden die im ID-Argumentregister gespeicherten I D-Codebits sequentiell als zweiter Teil des Ausgabe-Codewortes ausgelesen. Somit bewirkt die Eintragung eines der nicht im Assoziativspeicher enthaltenen I D-Codewörter in das ID-Argumentregister beim Codieren eine zusammengesetzte Codebitreihe, die aus einem Kopierkennzeichen und einem anschließenden I D-Codewort besteht. Dabei spielt es keine Rolle, ob das ID-Argument-Codewort mit dem ID-FeId im Kopierkennzeichenspeicherplatz übereinstimmt oder nicht Das Kriterium besteht in der Nicht-Obereinstimmung mit allen I D-Code Wörtern, die in den anderen Speicherplätzen des Assoziativspeichers IV gespeichert sind.
Während einer Decodierung stimmt das als Argument verwendete VL-Codewort entweder mit einem der 150 gespeicherten VL-Codewörter überein, oder mit dem gespeicherten Kopierkennzeichen. Wenn das Argument ein Kopierkennzeichen ist werden alle Übereinstimmungsanzeiger 50' in Fig. 7 auf 0 zurückgestellt, und die Leseschaltung wird von der Leitung 66' über die UND-Glieder 290 und die Leitungen 292 und 294 zum Kopier-Flipflop 296 weitergeführt und dieses auf I gesetzt Bei einer Decodierung werden die Kopierkennzcichen-Bits aus dem Argumentregister ausgeschoben, und die Bits des folgenden I D-Codewortes so plaziert daß sie gemäß Darstellung in Fig.6 direkt aus dem Argumentregsiter ausgelesen werden können.
Das Schaltbild in den Fig.8A bis 8C und die Ablaufdiagramme in den Fig.9 und 10 zeigen genauer Aufbau und Arbeitsweise der modifizierten Assoziativspeicher-Anordnung, mit der auch Codewörter kopien werden können. In diesen Figuren sind die Schaltelemente mit den gleichen, nur durch einen Strich (') erweiterte/) Bezugszeichen versehen wie die entsprechenden Elemente im ersten AusfUhrungsbeispiel (F i g. 2 bis 5). Um die Ablaufdiagramme der F i g. 9 und 10 mit der in den F i g. 8A bis 8C gezeigten Einrichtung in Beziehung zu setzen, sind die Schritte in den Ablaufdiagrammen mit den gleichen Bezugszeichen versehen wie die Leitungen, welche die Taktimpulse führen, die diese Schritte einleiten. Der Schritt EV in F i g. 9 wird z. B. eingeleitet durch einen Taktimpuls, welcher über die Leitung EV in den Fig.8C und 8B angelegt wird. Wie bereits gesagt wurde, hat der in F i g. 8A gezeigte Assoziativspeicher 11' eine wesentlich kleinere Kapazität als der in Fig.3A gezeigte Assoziativspeicher 11, da im vorliegenden Ausführungsbeispiel der Assoziativspeicher nicht dazu benötigt wird, eine Codeumwandlungsfunktion for jede mögliche Codebitkombination auszuführen. Die häufiger auftretenden I D-Codewörter (von denen im vorliegenden Beispiel angenommen wird, daß für sie eine VL-Code form von 9 Bits ausreicht), werden im wesentlichen genauso behandelt, wie es oben im Zusammenhang mit den F i g. 1 bis 5 beschrieben wurde. Deshalb werden die solche Codewörter betreffenden Codier- und Decodieropera(ionen hier nicht mehr genauer beschrieben. Hier
ίο werden nur die Operationen beschrieben, welche die weniger häufig auftretenden ID-Codewörter betreffen, solche also, für die bei normaler Codierung VL-Codewörter verwendet würden, die eine Länge von 9 Bits überschreiten. Für solche ID-Codewörter wird ein besonderes Code-Kopierverfahren angewendet, welches jetzt genauer beschrieben wird.
Im vorliegenden Fall wird angenommen, daß ein großer Teil der möglichen 8-Bit-Kombinationer in die Kategorie der weniger häufig auftretenden ID-Code-
2« Wörter fällt, für welche das Kopierverfahren benutzt werden solL Allen Codewörtern in dieser Gruppe wird derselbe Wahrscheinlichkeitsdrang zugeordnet, und sie werden kollektiv durch ein gemeinsames Kopierkennzeichen dargestellt, das im codierten Format vor dem I D-Codewort steht und dieses als ein Codewort kennzeichnet, das nicht umgewandelt, sondern einfach kopien wurde. Außerdem wird jedem Codewort in dieser Gruppe dieselbe Längenzahl entsprechend der Anzahl der signifikanten Bits im Kopierkennzeichen
jo zugeordnet Länge und Format des Kopierkennzeichens hängen vom Wahrscheinlichkeitsrang der Codewörter dieser Sondergruppe relativ zu den anderen Codewörtern ab. Im Zusammenhang mit den Fi g. 8A bis 8C und 9 wird
J5 nun eine Codieroperation beschrieben. Der Bytezähler 80' in Fig.8B wird auf die Anlage der ID-Codewörter gesetzt, die zu codieren sind. Ein Startimpuls wird auf die Leitung 90' in Fi g. 8C gegeben, um die Operation des Codiertaktgebers einzuleiten. Im Schritt EV (Fig.9) wird das zu codierende ID-Codewort in das Argumentregister 100' in Fig.8A eingegeben. Die Übereinstimmungsanzeiger 50' (F i g. 7) in der Assoziativspeichersteuerung werden auf 1 zurückgestellt Im vorliegenden Ausführungsbeispiel wird durch den
4) £ !Taktimpuls eine zusätzliche Funktion übernommen.
Wie aus Fig.8B zu ersehen ist, wird der Impuls EV
über ein ODER-Glied 300 auf das Kopier-Flipflop 296 geleitet und stellt dieses auf 0 zurück.
In den Schritten ET und £3' (Fig.9) wird eine
>o Abfrage (Suchoperation) mit dem ID-Codewort im Argumentregister vorgenommen, um ein übereinstimmendes Wort zu finden. Wenn ein übereinstimmendes Wort im Speicher 1 ϊ' gefunden wird, wird das in diesem Speicherplatz enthaltene VL-Codewort ausgelesen und in das Datenregister 120' in F i g. 8A eingegeben. Wenn kein übereinstimmendes Wort gefunden wird, erregt die Assoziativspeichersteuerung 56' in Fig.7 die Lese* Wahlleitung für das Kopierkennzeichen um dieses auszulesen und in das VL-FeId Das Datenregsiters 120' einzugeben. Gleichzeitig leitet die Assoziativspeichersteuerung die Erregung über die Leitung 294 zum Kopier-Flipflop 296 in Fig. 8B und setzt dieses Flipflop in den !-Zustand. Der Inhalt des Bytezählers 80' wird dann um eine Einheit vermindert.
Der aus den in Fig.9 gezeigten Schritten EV, E5' und £6' bestehende Zyklus wird so oft wiederholt, wie es zum sequentiellen Auslesen der in dem neun Bit großen VL-FeId des Datenregisters 120' (Fig.8A)
gespeicherten signifikanten Codebits erforderlich ist. Das gilt ungeaehtev dessen, ob die in diesem Feld gespeicherte Bitfolge ein VL-Codewort oder em Kopierkennzeichen ist Wenn das letzte signifikante Bit ausgelesen wird, ist der Inhalt des Längenzählers (die vier rechten Positionen des Datenregisters 120') auf 0 reduziert Zu diesem Zeitpunkt ist das Tor 138' in F i g. 8B, an welches der Taktimpuls £6' angelegt wurde, zur Weiterführung der Erregung von der Null-Anzeigeleitung 146' des Längenzählers Ober eine Leitung 302 an ι ο die drei UND-Glieder 304,305 und 306 vorbereitet
Wenn das Kopier-Flipflop 296 auf 1 gesetzt ist und damit anzeigt daß ein Kopierkennzeichen ausgelesen wurde, muß eine Folge von Sonderschritten eingeleitet werden, um die Bits des im Argumentregister gespeicherten ID-Codewortes sequentiell unmittelbar nach dem letzten Bit des Kopierkennzeichens zu übertragen. Diese Folge von Sonderschritten ist in Fig.9 mit El bis £10 bezeichnet und wird eingeleitet wenn Erregungssi^t.ale gleichzeitig an beide Eingänge des UND-Gliedes 3ö4 angelegt werden, d, h, wenn der Längenzähler auf 0 reduziert ist (Schritt £6'), während das Kopier-Flipflop auf 1 steht Durch das UND-Glied 304 wird daraufhin ein Signal über die Leitung 310 geleitet die gemäß Darstellung in den F i g. 8B und SC durch ein Kabel 150' zu einer monostabilen Kippschaltung 312 läuft welche dann durch das Signal eingeschaltet wird und einen Taktimpuls auf der Leitung El erzeugt Dieser Taktimpuls El stellt den Längenzähler auf 1000 (Dezimal 8) ein. Dadurch wird der jo Längenzähler auf die Steuerung des Auslesevorganges der 8 Bits des im Argumentregister 100' in Fig.8A gespeicherten I D-Codewortes vorbereitet
Wenn die monostabile Kippschaltung 312 abfällt liefert sie einen Impuls Ober ein in Fi^. 8C gezeigtes ODER-Glied 314 an eine monostabile Kippschaltung 316, die dadurch eingeschaltet wird und einen Taktimpuls auf der Leitung £8 erzeugt Dadurch wird die Erregung an ein Tor 320 in Fig.8A weitergeführt und daß äußerste rechte Bit vom Argumentregister 100' an die Ausgabeeinheit übertragen.
Danach wird eine in F i g. 8C gezeigte monostabile Kippschaltung 322 eingeschaltet und auf diese Weise ein Taktimpuls auf der Leitung £9 erzeugt. Dieser Taktimpuls erregt einmal die Schiebeimpulsleitung für das ID-Argumentregister 100' in F i g. 8A und setzt zum anderen den Inhalt des Längenzählers um eine Einheit herunter. Danach wird die in Fig.8C gezeigte monostabile Kippschaltung 324 eingeschaltet und so ein Taktimpuls auf der Leitung £10 erzeugt der ein in ίο Fi g. 8B gezeigtes Tor 326 zur Prüfung des Längenzähler-lnhalts vorbereitet
Wenn der Längenzähler nicht auf 0 steht (was bedeutet daß weitere Codebits aus dem ID-Argumentregister auszulesen sind), wird der Erregungsimpuls von der Niclrt-Null-Anzeigeleitung 144' des Längenzählers über das Tor 326 zu einer Leitung 330 und von dort durch ein in Fig.8C gezeigtes ODER-Glied 314 zur monostabilen Kippschaltung 316 weitergeleitet. Dadurch wird die Reihenfolge der Schritte £8, £9 und £ 10 (F i g. 9) erneut eingeleitet und das nächste Codebit aus dem ID-Argumentregister ausgeschoben. Dieser Zyklus wird so oft wie nötig wiederholt, um alle I D-Codebits aus dem Argumentregister auszuschieben.
Da acht ID-Codebits aus dem Argumentregister &5 auszulesen sind und der Längenzähler am Anfang im Schritt El auf den Wert acht (1000) gesetzt wurde, wird durch das Auslesen des letzten ID-Codebits die Einstellung des Längenzählers auf 0000 reduziert Somit veranlassen die Prüfungen im Schritt £10 jetzt das in Fig,8B gezeigte Tor 326 zur Weiterleitung des Erregungsimpulses von der Nicht-Null-Anzeigeleitung 146' zu einer Leitung 332, die zu den UND-Gliedern 334 und 335 führt Wenn angenommen wird, daß zu diesem Zeitpunkt die Bytezählereinstellung von 0 verschieden ist wird der Erregungsimpuls vom UND-Glied 334 über eine Leitung 336 und ein ODER-Glied 92' nxx monostabilen Kippschaltung 94' weitergeführt wodurch eine neue Codierfolge eingeleitet wird, die mit dem Schritt EV (Fig.9) beginnt Zu diesem Zeitpunkt sind die acht Bits des ID-Codewortes aus dem Argumentregister 100' der Fig.8A ausgelesen, und zwar anschließend an die Kopierkennzeichenbits, die vorher aus dem neun Bit großen VL-FeId des Datenregisters 120' ausgelesen worden waren. Somit wurde eine zusammengesetzte Folge aus Kopierksnnzeichenbits und ID-Codewortbits erzeugt
Jetzt wird die oben beschriebene Reihenfolge der Schritte £1' bis £6' wiederholt Wenn das nächstfolgende im Argumentregister 100' gespeicherte ID-Codewort nicht in die Kopier-Sonderkategorie fällt behält das Kopier-Flipflop 296 in Fig.8B seine Anfangseinstellung 0 bei. Unter diesen Umständen gibt das UND-Glied 334 (F i g. 8B und 9) ein Signal zur erneuten Einleitung des Schritte?. EV ab, sobald das letzte signifikante Bit aus dem VL-FeId des Datenregisters ausgelesen wurde, sofern die Bytezählereinstellung: noch nicht auf 0 reduziert wurde. Die bei 0-Stellung des Kopier-Flipflops ablautenden Vorgänge sind die normale Codierung und Decodierung, wie sie im Zusammenhang mit dem ersten in den F i g. 1 bis 5 gezeigten Ausführungsbeispiel beschrieben wurden.
Wenn der Bytezähler auf 0 reduziert ist und da» Kopier-Flipflop zu diesem Zeitpunkt ebenfalls auf 0 steht gibt das UND-Glied 335 einen ENDE-Impuls ab, wenn das letzte Codebit aus dem Datenregister gelesen worden ist Wenn das Kopier-Flipflop jedoch zu diesem Zeitpunkt auf I steht, bedeutet das, daß nur die Kopierkennzeichenbits ausgelesen, wurden und die ID-Codebits, die hinter dem Kopierkennzeichen stehen sollen, noch ausgelesen werden müssen. In diesem Fall wird das UND-Glied 304 (Fig.8B und 9) erregt und leitet die durch die Schritte El bis £10 dargestellte Verzweigungsoperation ein, in welcher die ID-Codebits ausgelesen werden. Wenn das letzte ID-Codebil ausgelesen worden ist und der Bytezähler dann auf Ci steht, wird das UND-Glied 335 eingeschaltet und erzeugt einen ENDE-Impuls zur Beendigung der Operation.
Die Decodieroperation des modifizierten Systems; wird anschließend unter Bezug auf Fig. 10 im Zusammenhang mit den Fig.8A bis 8C beschrieben!. Wenn eine hereinkommende Bitfolge aus einem Kopiefkennzeichen und einem anschließenden ID-Codewort besteht muß das Kopierkennzeichen bekanntlich unbeachtet bleiben, und die nachfolgenden acht Bits, des ID-Codewortes werden dann direkt als Ausgangsbyte ausgelesen, wobei die normale Decodierung umgegangen wird. Für alle anderen empfangenem Bitfolgen erfolgt die normale Decodierung, wie si«: bereits oben im Zusammenhang mit dem in den F i g. I bis 5 gezeigten Ausführungsbeispiel beschrieben wurde.
Die Decodieroperation wird eingeleitet durch Anlegen eines Startimpulses an die Leitung 180'. der eine monostabile Kippschaltung 182' einschaltet (siehe F i g. 8C). Der Bytezähler 80' wurde mit der Anzahl der
einzugebenden Codewörter geladen, die zu decodieren, also in ID-Codewörter umzuwandeln, sind. Wenn die monostabile Kippschaltung 182* einschaltet, wird ein Taktimpuls über die Leitung D V an eine Einrichtung angelegt, die in Fig,8A dargestellt ist und den s Längenzähler auf JOOl (dezimal 9) einstellt. In dieser Operationsstufe muß das neun 3it große VL-Argumentregister 178' mit neun aufeinanderfolgenden Bits aus dem eintreffenden Bitstrom gefüllt werden. Das VL-Argumentregister wird in den Schritten DV, D3' und D4' (Fig.9) gefüllt, die wiederholt werden, bis der Längenzähler im Schritt D 3' den Wert 0000 erreicht. Dajin leitet das in F i g. 8B gezeigte Tor 202' ein Signal von der Null-Anzeigeleitung 146' des Längenzählers auf die Leitung 220' und das ODER-Glied 222', um die monostabile Kippschaltung 224' einzuschalten, die einen Taktimpuls für die Leitung D 5' erzeugt
Der Taktimpuls D 5' stellt die Obereinstimmungsanzeiger 50' der Assoziativspeichersteuerung 56' auf 1 zurück. Der Impuls läuft außerdem durch das in F i g. 8B gezeigte ODER-Glied 300 und stellt das Kopier-Flipflop 296 auf 0 zurück. Die monostabiie Kippschaltung 226' wird dann aktiv und erzeugt den Taktimpuls Do', durch weichen der Inhalt des Argumentregisters 178' nut dem Inhalt der neun Bit großen VL-Felder des Assoziativ-Speichers 11' verglichen wird. Wenn ein übereinstimmendes Wort gefunden wird, wird es in das Datenregister 120' im Schritt DT (Fig. 10) ausgelesen, und das Kopier-Flipflop 26 bleibt auf seiner O-Stellung. Wenn kein übereinstimmendes Wort gefunden wird, wird die in den F i g. 8A und 8B gezeigte Leitung 294, weiche von der Speichersteuerung 56' kommt, erregt und das Kopier-Flipflop auf 1 gesetzt und dadurch angezeigt, daß die im Argumentregister 178' am weitesten rechts gespeicherten Bits ein Kopierkennzeichen darstellen. Der Taktimpuls D T vermindert außerdem den Inhalt des Bytezählers 80'.
Wenn die monostabile Kippschaltung 232', die den Taktimpuls DT erzeugte, abfällt, erzeugt sie einen Impuls auf der in den F i g. 8C und 8B gezeigten Leitung -to 350, die zu den Eingängen der UND-Glieder 352 und 354 läuft Wenn das Kopier-Flipflop 296 auf 0 steht und also kein Kopierkennzeichen betroffen ist wird ein Impuls von der Leitung 350 über das UND-Glied 352 und die Leitung 356 in den Fig.8B und 8C bis zur monostabilen Kippschaltung 236' gegeben, die einschaltet und einen Taktimpuls für die Leitung DV erzeugt Die au» den Schritten DV bis DW (Fig. 10) bestehende Decodierfolge wird dann ausgeführt und die Bits des wiedergewonnenen ID-Codewortes in dem acht Bit großen ID-FeId des Datenregisters 120' gespeichert, um parallel auf die Ausgabeeinheit ausgelesen zu werden. Die im Argumentregister 178' gespeicherten Bits werden dann schrittweise verschoben, bis die Längenzählereinstellung auf 0 reduziert ist
Wenn die Einstellung des Längenzählers auf 0 geht, wird das Signal von der Leitung 146' über das in F i g. 8B gezeigte Tor 248' weitergeführt zu einer zu den UND-Gliedern 362 und 364 führenden Leitung 360. Wenn dig Bytezählereinstellung noch nicht auf 0 reduziert wurde, geht das Signal weiter über das UND-Glied 362, die Leitung 366 und das ODER-Glied 222' in Fig.8C zur monostabilen Kippschaltung 224' zwecks Einleitung einer neuen Reihenfolge der Schritte O5' bis DT (Fig. 10) Wenn die Bytezählereinstellung jedoch 0 ist, wird das in Fig.8B gezeigte UND-Glied 364 erregt und ein EN DE-impuls erzeugt. Abfrage- und Ausleseoperationen werden gemäß obiger Beschreibung weitergeführt, bis ein Kopierkennzeichen im Argumentregister 178' angetroffen wird. Nachdem das Kopierkennzeichen in das Datenregister 120' (Schritt DT in Fig, 10) übertragen wurde, wird das Kopier-Flipflop 296 in F i g. 8B auf 1 gesetzt Wenn unter diesen Umständen die monostabile Kippschaltung 232' in F i g. 8C abfällt, erzeugt sie einen Impuls auf der Leitung 350, und das UND-Glied 354 in F i g. 8B leitet diesen Impuls von der Leitung 350 auf eine in den F i g. 8B und 8C gezeigte Leitung 370 und von dort durch ein ODER-Glied 372 auf eine monostabiie Kippschaltung 374. Wenn die monostabile Kippschaltung 374 einschaltet erzeugt sie einen Taktimpuls auf der Leitung D12 und leitet dadurch eine Folge von Sonderschritten D12 bis Z? 15 (Fig. 10) zur Decodierung der aus einem Kopierkennzeichen und einem anschließenden ID-Codewort bestehenden Kombination eh* die empfangen wurde. Diese Sonder-Decodierung umfaßt kurz gesagt das Ausschieben des Kopierkennzeichens aus dem Argumentregister 178' und dann dar Lesen der acht folgenden Codebits aus diesem Register sowie die spätere Zusammensetzung des wiedergewonnenen ID-Codewortes.
Im folgenden wird diese Sonder-Decodierung im einzelnen betrachtet Der Taktimpuls D12 wird über ein ODER-Glied 210' zur Verschiebeimpulsleitung 212' für das Argumentregister 178' geleitet Dadurch wird der Inhalt des Argumentregisters 178' um eine Bitposition nach rechts verschoben. Gleichzeitig wird der Taktimpuls D12 auch über das ODER-Glied 132' in F i g. 8B an die Leitung 134' angelegt die im erregten Zustand den Inhalt des Längenzählers in Fig.8 um eine Einheit reduziert
Wenn die in F i g. 8C gezeigte monostabile Kippschaltung 374 abfällt schaltet sie die monostabiie Kippschaltung 376 ein und erzeugt einen Taktimpuls auf der Leitung D13. Dieser Impuls D13 läuft dann über das ODER-Glied 192' in Fig.8B zur Leitung 194' und erregt das Eingangstor 196' in F i g. 8A. Dieses Tor führt ein Bit von der Eingabeeinheit in die äußerste linke Stelle des Argumentregisters 178', um das Bit zu ersetzen, welches aus diesem Register ausgeschoben wurde.
Wenn die monostabiie Kippschaltung 376 abfällt, schaltet sie eine monostabile Kippschaltung 378 ein und erzeugt einen Taktimpuls auf der Leitung D14. die zu einem in Fig.8B gezeigten Tor 380 führt Wenn der Längenzähler zu diesem Zeitpunkt nicht auf 0 steht, wird die Erregung von der Nicht-Null-Anzeigeleitung 144' in F i g. 8B über das Tor 380, die Leitung 382 und das ODER-Glied 372 in Fig.8C zur monostabilen Kippschaltung 374 weitergeführt, die einschaltet und erneut dk Reihenfolge der Schritte D12 bis D14 (Fig. 10) einleitet
Wenn das KopieriAinnzeichen bei der Abf/ageoperation (Schritt D 6') angetroffen wurde, wurde bekanntlich das dieses Kopierkennzeichen enthaltende Wort ausgelesen und im Datenregister 120' gespeichert. Dadurch wurde die zum Kopierkennzeichen gehörende Längenangabe im Längenzählerteil des Datenregisters gespeichert. Die Reihenfolge der Schritte D12 bis D W der F i g. 10 muß daher so oft wiederholt werden, wie durch die Einstellung dieses Längenzählers angezeigt wird, d. h. bis alle Kopierkennzeichenbits aus dem Argumentregister 178' ausgesciioben sind. Wenn die Längenzählereinstellung den Wert 0 erreicht und anzeigt daß das letzte Kopierkennzeichenbit aus dem Argumentre-
gister ausgeschoben wurde, stehen in den acht am weitesten rechts liegenden Stellen des Argumentregisters 178' jetzt die acht Bits des I D-Codewortes, die unmittelbar hinter dem Kopierkennzeichen folgen. Diese acht Bits müssen wiedergewonnen werden,
Wenn die durch den Taktimpuls D14 bewirkte Prüfung feststellt, daß der Längenzähler auf 0 steht, wird ein Signal von der Null-Anzeigeleitung 146' in Fig.8B über das Tor 380 und die Leitung 386 in den F i g. 8B und 8C zur monostabilen Kippschaltung 390 weitergeführt, die einschaltet und den Taktimpuls D15 erzeugt. Dieser Taktimpuls wird auf das Tor 392 in F i g. 8A gegeben, um die acht Bits, die in den am weitesten rechts liegenden acht Positionen des Argumentregisters 178' gespeichert sind, parallel an die Ausgabeeinheit zu übertragen. Außerdem wird der Impuls D 15 an eine Einrichtung gegeben, die den Längenzähler im Datenregister 120' auf acht (1000) einstellt, um später die acht entnommenen Bits durch neue Bits aus dem eintreffenden Bitstrom ersetzen zu können. :o
Wenn die monostabile Kippschaltung 390 in Fig.8C abfällt, liefert sie einen Impuls auf die Leitung 394. welche zu den UND-Gliedern 396 und 398 in Fig.8B führt. Wenn die Bytezahl zu dieser Zeit noch nicht auf 0 reduziert wurde, läuft dieser Impuls durch das UND-Glied 396 und die Leitung 400 zur monostabilen Kippschaltung 208' (in F i g. 8C), um über den Schritt D4' die Decodieroperation der F i g. 10 neu einzuleiten. Es werden dann durch wiederholte Ausführung der Schritte DA', DT, D3' acht neue Bits über die linke Position in das Argumentregister 178' eingelesen. Dabei gelangt das einzelne Bit, welches schon im Argumentregister 178' stand, aber nicht zum ausgelesenen ID-Codewort gehörte, von der am weitesten links liegenden Position in die am weitesten rechts liegenden Position. Es folgt dann eine weitere Abfrageoperation mit den Schritten D5'. D%' und DT. wie schon weiter oben beschrieben. Wenn die Bytezahl jedoch 0 beträgt, läuft der Impuls auf der Leitung 394 durch das Tor 398 in Fig. SB und erzeugt ein ENDESignal zur Beendigung der Decodierung.
Hierzu 11 Blatt Zeichnungen

Claims (3)

  1. Patentansprüche:
    J1 Anordnu.-<j zur Codeumsetzung zwischen einem ersten Code mit Codewörtern fester Länge (ID-Codewörtern) lind einem zweiten Code mit Codewörtem variabler Länge (VL-Codewörter), bei dem kein Codewort gleich dem Anfang eines längeren Codeworts ist, unter Verwendung logischer Vergleichseinrichtungen und gespeicherter Tabellen, dadurch gekennzeichnet, daß zur Umsetzung eines ID-Codeworts in ein VL-Codewort (Codierung) eine erste Vergleichseinrichtung das I D-Codewort mit in einem ersten Feld einer Tabelle (ID-FeId) gespeicherten ID-Codewörtern des Codes vergleicht, um das in einem zweiten Feld (VL-FeId) der Tabelle enthaltene zugehörige VL-Codewort mit Hilfe der in einem dritten Feld (Längenfeld) der Tabelle enthaltenen Längenangabe des VL-Codeworts auszulesen, daß aufeinanderfolgende VL-Codewörter unmittelbar aneinander angeschlossen werden, daß zur Umsetzung eines VL-CodewoPts in ein 1 D-Codewort (Decodierung) das VL-Codewort randbündig in eine zweite Vergleichseinrichtung eingelesen wird, deren Länge dem längsten VL-Codewort entspricht, um das VL-Codewort mit allen im VL-FeId randbündig gespeicherten VL-Codeworten zu vergleichen, wobei die Einträge im VL-FeId die Länge der zweiten Vergleichseinrichtung aufweisen und die von einem VL-Codewort kürzerer Länge nicht belegten Plätze besonders markiert sind, um beim Vergleich immer Übereinstimmung anzuzeigen und daß nach erfolgreichem Vergleich das zum VL-Codewort gehörige gespeicherte LD-Codeworl ausgelesen und mil Hilfe der Längenangabe das nächste zu decodierende VL-Codewort randbündig in die r. -eile Vergleichscinrichtung gebracht wird.
  2. 2. Anordnung nach Anspruch I. dadurch gekennzeichnet, daß die erste und die zweite Verglcichseinrichtung als Teile eines Assoziativspeichers (II) mit jeweils zugeordneten Argumentregistern (100 b/.w. 178) ausgebildet sind, daß die Einträge im Assoziativspeicher, die das zweite Feld (VL-FeId) der Tabelle aufnehmen, die Länge des längsten /ti decodicrenden VL-Codcwortes aufweisen, wobei nicht belegte Speicherplätze der Einträge als neutral (don't care) markiert sind, um beim asso/ialiven Vergleich mit dein Inhalt des zugehörigen Argumentregisters immer ein Übercinstimniungssignal zu erzeugen, und daß dem Assoziativspeicher ein Dalenregistcr (120) zugeordnet ist, in das eine vollständige Zeile des Assoziativspeichers ausgelesen wird.
  3. 3. Anordnung nach Anspruch I oder 2, dadurch gekennzeichnet, daß in den Tabellen weniger Codewörter aufgezeichnet sind, als der Gesamlcode enthält, daß für die Gruppe der nicht enthaltenen Codewörter im VL-FeId ein charakterisierender Eintrag vorgesehen ist und daß bei der Codierung eines in der Tabelle nicht enthaltenen ID-Codeworts der kennzeichnende Eintrag zusammen mit dem unveränderten ID-Codcwöfl aus der ersten Vcrglcichseinrichtung ausgegeben wird.
DE2139731A 1970-08-10 1971-08-07 Anordnung zur Code-Umsetzung Expired DE2139731C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US6230670A 1970-08-10 1970-08-10

Publications (2)

Publication Number Publication Date
DE2139731A1 DE2139731A1 (de) 1972-02-17
DE2139731C2 true DE2139731C2 (de) 1983-06-16

Family

ID=22041630

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2139731A Expired DE2139731C2 (de) 1970-08-10 1971-08-07 Anordnung zur Code-Umsetzung

Country Status (5)

Country Link
US (1) US3675212A (de)
JP (1) JPS52339B1 (de)
CH (1) CH534453A (de)
DE (1) DE2139731C2 (de)
NL (1) NL7109574A (de)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3717851A (en) * 1971-03-03 1973-02-20 Ibm Processing of compacted data
US3921143A (en) * 1971-12-29 1975-11-18 Ibm Minimal redundancy encoding method and means
US3805249A (en) * 1972-07-21 1974-04-16 Ultronic Systems Corp Format hard copy display apparatus for a data processing printout system
FR111576A (de) * 1973-12-13 1900-01-01
US4038652A (en) * 1974-05-13 1977-07-26 Sperry Rand Corporation Digital communications line terminal compacter/expander
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
US4188669A (en) * 1978-01-13 1980-02-12 Ncr Corporation Decoder for variable-length codes
US4506325A (en) * 1980-03-24 1985-03-19 Sperry Corporation Reflexive utilization of descriptors to reconstitute computer instructions which are Huffman-like encoded
CA1228925A (en) * 1983-02-25 1987-11-03 Yoshikazu Yokomizo Data decoding apparatus
US5027376A (en) * 1985-10-30 1991-06-25 Microcom Systems, Inc. Data telecommunications system and method for transmitting compressed data
JPH0795269B2 (ja) * 1988-11-04 1995-10-11 富士通株式会社 命令コードのデコード装置
US5532694A (en) * 1989-01-13 1996-07-02 Stac Electronics, Inc. Data compression apparatus and method using matching string searching and Huffman encoding
US5146221A (en) * 1989-01-13 1992-09-08 Stac, Inc. Data compression apparatus and method
JP2956704B2 (ja) * 1989-02-21 1999-10-04 ケイディディ株式会社 可変長符号変成装置
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
US5055841A (en) * 1991-02-01 1991-10-08 Bell Communications Research, Inc. High-speed feedforward variable word length decoder
US5245338A (en) * 1992-06-04 1993-09-14 Bell Communications Research, Inc. High-speed variable-length decoder
US5351047A (en) * 1992-09-21 1994-09-27 Laboratory Automation, Inc. Data decoding method and apparatus
US5537551A (en) * 1992-11-18 1996-07-16 Denenberg; Jeffrey N. Data compression method for use in a computerized informational and transactional network
US5982306A (en) * 1997-12-02 1999-11-09 Daewoo Electronics Co., Ltd. Variable-length coding method and apparatus thereof
GB2332127B (en) * 1997-12-08 2003-05-07 Daewoo Electronics Co Ltd Variable-length coding method and apparatus thereof
US6075470A (en) * 1998-02-26 2000-06-13 Research In Motion Limited Block-wise adaptive statistical data compressor
US6665793B1 (en) * 1999-12-28 2003-12-16 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for managing access to out-of-frame Registers
US7015921B1 (en) 2001-12-31 2006-03-21 Apple Computer, Inc. Method and apparatus for memory access
US7681013B1 (en) 2001-12-31 2010-03-16 Apple Inc. Method for variable length decoding using multiple configurable look-up tables
US6877020B1 (en) 2001-12-31 2005-04-05 Apple Computer, Inc. Method and apparatus for matrix transposition
US7055018B1 (en) 2001-12-31 2006-05-30 Apple Computer, Inc. Apparatus for parallel vector table look-up
US6822654B1 (en) 2001-12-31 2004-11-23 Apple Computer, Inc. Memory controller chipset
US7114058B1 (en) 2001-12-31 2006-09-26 Apple Computer, Inc. Method and apparatus for forming and dispatching instruction groups based on priority comparisons
US6931511B1 (en) 2001-12-31 2005-08-16 Apple Computer, Inc. Parallel vector table look-up with replicated index element vector
US7305540B1 (en) 2001-12-31 2007-12-04 Apple Inc. Method and apparatus for data processing
US7558947B1 (en) 2001-12-31 2009-07-07 Apple Inc. Method and apparatus for computing vector absolute differences
US6693643B1 (en) 2001-12-31 2004-02-17 Apple Computer, Inc. Method and apparatus for color space conversion
US7467287B1 (en) 2001-12-31 2008-12-16 Apple Inc. Method and apparatus for vector table look-up
US6697076B1 (en) 2001-12-31 2004-02-24 Apple Computer, Inc. Method and apparatus for address re-mapping
US7034849B1 (en) 2001-12-31 2006-04-25 Apple Computer, Inc. Method and apparatus for image blending
US6573846B1 (en) 2001-12-31 2003-06-03 Apple Computer, Inc. Method and apparatus for variable length decoding and encoding of video streams
US6781529B1 (en) 2002-10-24 2004-08-24 Apple Computer, Inc. Methods and apparatuses for variable length encoding
US6707398B1 (en) 2002-10-24 2004-03-16 Apple Computer, Inc. Methods and apparatuses for packing bitstreams
US6781528B1 (en) 2002-10-24 2004-08-24 Apple Computer, Inc. Vector handling capable processor and run length encoding
US6707397B1 (en) 2002-10-24 2004-03-16 Apple Computer, Inc. Methods and apparatus for variable length codeword concatenation
US7219325B1 (en) * 2003-11-21 2007-05-15 Xilinx, Inc. Exploiting unused configuration memory cells

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3257646A (en) * 1963-01-24 1966-06-21 Ibm Variable word length associative memory
DE1218761B (de) * 1963-07-19 1966-06-08 International Business Machines Corporation, Armonk, N. Y. (V. St. A.) Datenspeidbereinrichtung
US3402394A (en) * 1964-08-31 1968-09-17 Bunker Ramo Content addressable memory
US3509328A (en) * 1965-03-15 1970-04-28 Bell Telephone Labor Inc Code conversion
US3483528A (en) * 1966-06-20 1969-12-09 Bunker Ramo Content addressable memory with means for masking stored information
US3465303A (en) * 1966-06-20 1969-09-02 Bunker Ramo Content addressable memory employing sequential control
US3448436A (en) * 1966-11-25 1969-06-03 Bell Telephone Labor Inc Associative match circuit for retrieving variable-length information listings
US3461432A (en) * 1966-12-14 1969-08-12 Burroughs Corp Bi-directional code converter
DE1288143B (de) * 1967-08-17 1969-01-30 Starkstrom Anlagenbau Veb K Schaltungsanordnung zur Umwandlung eines beliebigen Programmkodes in einen anderen beliebigen Programmkode
US3533085A (en) * 1968-07-11 1970-10-06 Ibm Associative memory with high,low and equal search

Also Published As

Publication number Publication date
DE2139731A1 (de) 1972-02-17
JPS52339B1 (de) 1977-01-07
NL7109574A (de) 1972-02-14
US3675212A (en) 1972-07-04
CH534453A (de) 1973-02-28

Similar Documents

Publication Publication Date Title
DE2139731C2 (de) Anordnung zur Code-Umsetzung
DE2210044C2 (de) Verfahren zum Umsetzen von Codewörtern
DE2264090B2 (de) Datenverdichtung
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
DE2614916A1 (de) Konverter zur codeumwandlung
DE2153517A1 (de) Anordnung zur Codeumsetzung
DE3148099C2 (de) Anordnung zum Erkennen einer Digitalfolge
DE2730328B2 (de) Schaltungsanordnung zur Feststellung des bestübereinstimmenden Datenworts von in einem Datenwort-Speicher gespeicherten Datenworten mit einem Suchwort
DE3711201C2 (de)
DE2614664C3 (de) Verfahren zum Speichern von Daten in einer Speichereinrichtung und Einrichtung zur Durchführung des Verfahrens
DE2900586C2 (de) Anordnung zum Decodieren von Codewörtern variabler Länge
DE2357654C2 (de) Assoziativspeicher
DE2730543A1 (de) Multiplex-datenuebertragungsanlage
DE3137704C2 (de) Vorrichtung zum Decodieren eines baumförmigen Codes variabler Länge
DE19645057C2 (de) Vorrichtung zur Selektion von Adressenwörtern mittels Demultiplex-Decodierung
DE1296427B (de) Datenbearbeitungssystem
EP0427884B1 (de) Verfahren und Anordnung zum Komprimieren und Dekomprimieren von Daten
DE2426253B2 (de) Vorrichtung zum ziehen der quadratwurzel aus einer binaeren zahl
DE69907622T2 (de) Verfahren zur Fehlerkorrektur in einem in einer Mehrpegelspeicherzelle gespeicherten Binärwort, mit einer Minimumanzahl von Korrekturbits
DE2365957B2 (de) Übertragungsverfahren für umkodierte Nachrichten
DE2144113C3 (de) Verfahren zur Codeumsetzung und Assozjathr-Speichereinrlchtung zur Durchführung dieses Verfahrens
DE1946227C3 (de) Anordnung zur Errechnung von Prüfziffern und zur Kontrolle von Zifferngruppen mit angehängter Prüfziffer auf Fehler
DE3407831C2 (de)
DE4342521C1 (de) Verfahren und Anordnung zur Expansion komprimierter Daten
DE2144113B2 (de) Verfahren zur codeumsetzung und assoziativ-speichereinrichtung zur durchfuehrung dieses verfahrens

Legal Events

Date Code Title Description
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee