DE2227148A1 - Verfahren zur verarbeitung digitaler daten - Google Patents

Verfahren zur verarbeitung digitaler daten

Info

Publication number
DE2227148A1
DE2227148A1 DE2227148A DE2227148A DE2227148A1 DE 2227148 A1 DE2227148 A1 DE 2227148A1 DE 2227148 A DE2227148 A DE 2227148A DE 2227148 A DE2227148 A DE 2227148A DE 2227148 A1 DE2227148 A1 DE 2227148A1
Authority
DE
Germany
Prior art keywords
bit
bits
register
word
length
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
DE2227148A
Other languages
English (en)
Other versions
DE2227148C3 (de
DE2227148B2 (de
Inventor
Peter Anthony Franaszek
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 DE2227148A1 publication Critical patent/DE2227148A1/de
Publication of DE2227148B2 publication Critical patent/DE2227148B2/de
Application granted granted Critical
Publication of DE2227148C3 publication Critical patent/DE2227148C3/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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/14Digital recording or reproducing using self-clocking codes
    • G11B20/1403Digital recording or reproducing using self-clocking codes characterised by the use of two levels
    • G11B20/1423Code representation depending on subsequent bits, e.g. delay modulation, double density code, Miller code
    • G11B20/1426Code representation depending on subsequent bits, e.g. delay modulation, double density code, Miller code conversion to or from block codes or representations thereof
    • 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

Landscapes

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

Description

Aktenzeichen der Anmelderin: YO 971 012
Verfahren und Vorrichtung zur Verarbeitung digitaler Daten
Die Erfindung bezieht sich auf ein Verfahren und eine Vorrichtung zur Verarbeitung digitaler Daten, die aus originalen Bitfolgen unterschiedlicher Länge in Codewörter unterschiedlicher Länge codiert wurden.
Es sind verschiedene Wege vorgeschlagen worden, um die Dichte zu erhöhen, mit der Daten auf Magnetplatten oder ähnlichen Speichermedien datenverarbeitender Systeme aufgezeichnet werden können oder um die Geschwindigkeit zu erhöhen, mit der Daten zuverlässig über vorhandene Kanäle übertragen werden können. Ein solches Verfahren stellt die lauflängenbegrenzte Codierung dar, die es erfordert, daß jede Eins in einer codierten Bitfolge von der nächsten benachbarten Eins durch eine Anzahl von Nullen getrennt sein muß, die zumindest gleich einer Mindestanzahl d ist, um die Freiheit von gegenseitigen Störungen der Symbole beim Aufzeichnen oder bei der übertragung sicherzustellen, die aber aus Gründen der Selbsttaktierung eine maximale Anzahl k nicht überschreiten sollte. Solche Codes werden auch als "dk-begrenzte" Codes bezeichnet. Die vorliegende Erfindung ist insbesondere.auf sol-
209881/0622
2227H8
ehe Datenverarbeitungssysteme gerichtet, in denen diese Art der Codierung angewandt wird.
Bekannte Systeme für lauflängenbegrenzte Codierung sind auf der Vorraussetzung entworfen worden, daß die aufgezeichnete oder übertragene Information in Verarbextungseinheiten oder "Wörter" fester Länge verarbeitet wird. Eine wirksame Codierung erfordert, daß diese Wörter fester Länge eine bestimmte Länge aufweisen, wie sie z. B. das aus acht Bits bestehende Standardwort, das als "Byte" bezeichnet wird, besitzt, wogegen kürzere Wörter viel weniger wirksam codiert werden können. Auf der anderen Seite wächst die Kompliziertheit der Codier- und Decodiergeräte sehr stark (d. h. exponentiell) mit der Wortlänge. Als ein Aspekt der vorliegenden Erfindung wurde gefunden, daß die gewünschte wirksame Codierung ohne ungebührliche Komplizierung des Entwurfs der Codier- und Decodiergeräte erreicht werden kann, wenn die codierte Information in der Form von Codewörtern unterschiedlicher Länge anstelle von Codewörtern fester Länge verarbeitet wird. Die maximale Wortlänge, die erforderlich ist, um einen vorgegebenen Grad der Datendichte zu erreichen, ist bei einem System, das mit unterschiedlicher Wortlänge arbeitet, beträchtlich geringer als die Wortlänge, die in einem System benötigt wird, das mit fester Wortlänge arbeitet und die gleiche Datendichte aufweist, und auch die Codier-Decodiergeräte sind in einem System, das mit unterschiedlicher Wortlänge arbeitet, längst nicht so kompliziert wie das in einem System der Fall ist, das mit fester Wortlänge arbeitet.
Die Anwendung einer Codierung mit Wörtern unterschiedlicher Länge kann jedoch andere Probleme aufwerfen. Da es in einem solchen System keine feste "Rahmenlänge" oder Codewortlänge gibt, müssen besondere Maßnahmen ergriffen werden, um sicherzustellen, daß der codierte Bitstrom an den richtigen Stellen unterteilt oder "gerahmt" wird, um die darin enthaltenen Codewörter abzugrenzen. Ein zu diesem Zweck vorgeschlagenes bakarntes System erfordert die Verwendung besonderer j-ferkierbius, von denen eins als Vorsil-
209881/0622
YO 971 012
2227U8
be jedem zu decodierenden Codewort unterschiedlicher Länge zugefügt wird, um den Beginn dieses Wortes mit Sicherheit zu markieren. Dieses Codewort mit seinem Vorsilbenbit wird dann bitseriell als Argument einem Schieberegister zugeführt, und mit dem Eintreffen jedes neuen Bits wird eine Prüfung vorgenommen, um festzustellen, ob das Bitmuster, das sich hinter dem Markierbit aufgebaut hat, als ein vollständiges Codewort mit Hilfe eines Tabellenlese-Verfahrens erkannt werden kann. Dies bedeutet aber, daß eine Decodieroperation mit jedem neuen Fragment des Argumentes, das schrittweise in dem Argumentregister aufgebaut wird, versucht werden muß, bis eine Übereinstimmung gefunden wird. Ein Decodierverfahren dieser Art ist verhältnismäßig langsam.
Ein weiterer Nachteil der Codierung mit unterschiedlicher Wortlänge, wie sie gegenwärtig praktiziert wird, ist ihre Empfindlichkeit gegenüber Rahmenproblemen, die dann entstehen, wenn das Bitmuster eines Codewortes unrichtig dargestellt wird, beispielsweise aufgrund einer fehlerhaften Biterkennung. Um diesem Problem zu begegnen, ist es üblich, sich auf die statistische Wahrscheinlichkeit zu verlassen, daß ein richtiges Wortende mit fortschreitender Decodierung wahrscheinlich gefunden wird, ohne daß sich der Rahmenfehler ungewöhnlich weit in die nachfolgenden Teile des Bitstroms fortpflanzt. Verfahren zur Codierung mit unterschiedlicher Länge, die entworfen wurden, um die Fehlerfortpflanzung auf der Basis einer statistischen Wahrscheinlichkeit zu begrenzen, haben sich aus einer Reihe von Gründen als unbefriedigend erwiesen. Einmal arbeiten diese Verfahren in der Praxis nicht gut, da viele, wenn nicht die meisten Datenbasen sich nicht für das statistische Verfahren der Begrenzung der Fehlerfortpflanzung eignen. Unter bestimmten Bedingungen läßt sich der Synchronismus nicht wiedergewinnen, ohne das System anzuhalten und neu zu starten.. Zum andern weisen solche Codes nicht die Beschränkungen hinsichtlich der Lauflänge auf, die sich als höchst wünschenswert für das Erreichen wirksamer Datenübertragungs- und Aufzeichnungsoperationen erwiesen haben. Aus diesen und anderen Gründen wird der-;srtar:- tistische Weg zur Begrenzung der Fehlerfortpflanzung nicht aMge-
209881/0622
YO 971 012
2227U8
mein als günstig angesehen.
Der Erfindung liegt die Aufgabe zugrunde, ein Verfahren anzugeben, das eine raschere Verarbeitung von digitalen Daten gestattet als dies die bekannten Verfahren ermöglichen und bei dem außerdem die Fehlerfortpflanzung eingeschränkt ist.
Die genannte Aufgabe wird gelöst mit Hilfe eines Verfahrens zur Verarbeitung digitaler Daten, die aus originalen Bitfolgen unterschiedlicher Länge in Codewörter unterschiedlicher Länge derart codiert wurden, daß jedes gültige Codewort in einer bestimmten, ein Wortende kennzeichnenden Bitfolge endet, die aus mehreren solcher Folgen ausgewählt ist, und daß die Länge der Codewörter in einem festen Verhältnis zur Länge der originalen Bitfolgen steht, das durch folgende Verfahrensschritte gekennzeichnet ist:
a) serielle Eingabe der Bits eines eine Reihe von Codewörtern unterschiedlicher Länge enthaltenden Bitstromes in ein Schieberegister,
b) Abfragen derjenigen Bitstellen, die sich in einer oder mehreren Gruppen speziell bezeichneter Bitstellen befinden, zur Feststellung, ob eine ein Wortende kennzeichnende Bitfolge sich in ihnen befindet, wobei die betreffenden Bitstellen, die eine Gruppe bilden, eine Funktion der verschiedenen Längen der Codewörter sind,
c) Erzeugen eines "Erfüllungs"-Signals für jede Bitstellengruppe, die eine Wortende-Bitfolge speichert,
d) Abgrenzen eines ausgewählten Satzes der Schieberegisterstellen während bestimmter ausgewählter Intervalle zwischen aufeinanderfolgender Verschiebungen als ein "Rahmen", der ein zu decodierendes "Codewort unterschiedlicher Länge enthält, wobei die Anzahl der Bitstellen eines Rahmens in jedem Augenblick durch das Vorliegen oder Fehlen von "Erfüllungs"-Signalen der abgefragten Gruppen von Bitstellen bestimmt wird und
e) Decodieren des in dem ausgewählten Satz von Bitstellen gerade gespeicherten Bitmusters.
209881/0622
2227 HS
Ein Ausführungsbeispiel der Erfindung ist in den Zeichnungen dargestellt und wird anschließend näher beschrieben. Es zeigen:
Fign. IA und IB ein allgemeines Schaltbild eines Codier-Deco-
diersystems, nach der Erfindung, das für die Verarbeitung von zustandeunabhängigen Codes geeignet ist
Fig. 2 in einem allgemeinen Ablaufdiagramm ein Codierverfahren, welches mit dem in den Fign. IA und IB gezeigten System ausgeführt werden kann
Fig. 3 in einem allgemeinen Ablaufdiagramm ein Decodier-
verfahren, welches mit dem in den Fign. IA und IB gezeigten System ausgeführt werden kann
Fig. 4 ein Schaltplan eines Codiertaktgebers oder Impulsgenerators, der die Taktimpulse für die durch das System nach den Fign. IA und IB ausgeführten Codierfunktionen liefert
Fig. 5 einen Schaltplan eines Decodiertaktgebers oder
Impulsgenerators, der die Taktimpulse für die von dem in den Fign. IA und IB gezeigten System ausgeführten Decodierfunktionen liefert
Fign. 6 bzw. 7 Codeumsetzungstabellen, die von einem System
der in Fign. IA und IB gezeigten Art benutzt werden für Codier- und Decodieroperationen in Systemen zur Codierung von dk-begrenzten Wörtern unterschiedlicher Länge, worin die (d, k) Begrenzungen (1,8) bzw. (2,7) sind,
Fign. 8 und 9 Schaltbilder der durch das in den Fign. IA und IB
gezeigte System verwendeten Rahmenlogik zum Tref-
YO971012 · 209881/0622
fen der Rahmenentscheidungen im Hinblick auf dkbegrenzte Codes mit unterschiedlicher Länge, in welchen die (d, k) Beschränkungen (1,8) bzw.
(2.7) sind
Fign. 10 und 11 in Tabellenform die Rahmenoperationen, die durch
das vorliegende System an Mustercodefolgen in
(1.8) bzw. (2,7) Codierung ausgeführt werden
Fig. 12 in einem Diagramm die Assoziativspeicher-Steuerschaltung und
Fig. 13 in einem fragmentarischen Schaltbild eines abgewandelten Codier-Decodiersystems zur Verarbeitung von ζustandsabhängigen Codes.
In Verbindung mit der in den Fign. 4 und 5 gezeigten Taktgeberschaltung zeigen die Fign. IA und IB die wesentlichen Teile eines" Gerätes, welches die Codierung und Decodierung nach der vorliegenden Erfindung vornehmen kann. Als Beispiel dienende Codes, die durch ein derartiges System verarbeitet werden können, sind in den Codeumwandlungstabellen der Fign. 6 und 7 gezeigt. Alle diese Codes haben die folgenden Merkmale gemeinsam:
a) es handelt sich um Codes mit Lauflängenbegrenzung, in denen die aufeinanderfolgenden Einsen einer jeder codierten Bitfolge durch nicht weniger als d und nicht mehr als k Nullen voneinander getrennt sind, wobei die Wahl der Werte für d und k abhängt von dem jeweils verwendeten Code;
b) die codierte Information wird in Codegruppen oder in Codewörtern unterschiedlicher Länge verarbeitet und die Längen der codierten Wörter haben ein konstantes. Verhältnis zu den entsprechenden Längen ihrer zugehörigen Originalen (oder decodierten) Bitreihen und stellen da-
209881/0822
YO 971 012
22271Αβ
durch eine konstante Geschwindigkeit der Datenübertragung oder Datenaufzeichnung sicher;
c) jedes codierte Wort (wenn es richtig codiert und erkannt wurde) endet in einer von mehreren verschiedenen Bitfolgen, die leicht als Wortende erkannt werden können, um einen Rahmenpunkt im codierten Bitstrom festzusetzen.
Die vorliegende Erfindung befaßt sich mehr mit der praktischen Durchführung der Verfahren, durch welche Information nach den obengezeigten Prinzipien codiert und decodiert wird und nicht mit den der Bildung der Codeumsetzungstabellen selbst zugrundeliegenden theoretischen Faktoren. Trotzdem werden jedoch einige grundlegende Überlegungen für den Aufbau der durch das vorliegende System zu verwendenden Codeumsetzungstabellen erklärt. Eine genauere Behandlung der mathematischen Theorie findet sich in dem Aufsatz "Sequence-state Methods for Run-length-limited Coding", von P. A. Franaszek, im "IBM Journal of Research and Development, Juli 1970, Seiten 376 bis 383.
Vor der genaueren Beschreibung des dargestellten Systems werden zuerst die Ausdrücke "Codewort" oder "Codegruppe", so wie sie hier verwendet werden, erklärt. Ein "Wort" wird als eine individuell verarbeitbare Folge von Bits, d. h. also als eine Bitreihe, von beliebiger Länge betrachtet, die vom System als eine Einheit verarbeitet werden kann. Für die vorliegende Erfindung wird die Art, in welcher ein Bitstrom unterteilt oder in seine ihn bildenden Wörter oder Bitreihen "gerahmt" wird, ausschließlich durch die Einfachheit der Verarbeitung bestimmt. Die Art der Unterteilung steht dabei nicht notwendig in Beziehung zu der Nachricht, die durch den Bitstrom übertragen wird. Das soll heißen, daß hier kein Versuch in der Richtung unternommen wird, den Bitstrom so zu rahmen, daß die Codegruppe innerhalb eines jeden Rahmens ein einzelnes Zeichen oder andere leicht zu identifizierende Einheit numerischer oder textlicher Information definiert.
209881/0622
YO 971 012
2227U8
Die in den Fign. 6 und 7 gezeigten Codeumsetzungstabellen zeigen die Art des hier verwendeten Codierschemas. Die in Fig. 6 gezeigte Tabelle ist für einen Code mit Lauflängenbegrenzung ausgelegt/ in welchem d = 1 und k = 8 ist. Die in Fig. 7 gezeigte Tabelle ist für einen Code ausgelegt, dessen Lauflängenbegrenzungen d = 2 und k = 7 sind. Aus der Betrachtung z. B. der Tabelle in Fig. 6 geht hervor, daß nach dem (1,8) Code die OO-Bitreihe jedesmal zum Wort 010 codiert wird, wenn eine Bitfolge 00 an dem Punkt auftritt, der den Anfang eines Wortes im originalen Bitstrom markiert. Als weiteres Beispiel sei die Bitfolge 1000 angeführt, die unmittelbar hinter einem Wortanfangspunkt auftritt. Dann wird diese Reihe zum Wort 101000 codiert. In jedem Fall stehen drei codierte Bits für zwei originale Bits und dieses Verhältnis 3 : 2 ist für den (1,8) Code konstant. In ähnlicher Weise ist für den (2,7) Code das Verhältnis zwischen der Anzahl codierter Bits und den originalen Bits mit 2 : 1 konstant. Grundsätzlich bleibt für ein nach der Erfindung aufgebautes Codesystem das Verhältnis von codierten zu originalen Bits konstant bei N/a, wobei N und a die kleinsten ganzen Zahlen sind, die dieses Verhältnis ausdrücken. (Die beiden Symbole haben hier dieselbe Bedeutung wie in dem obenerwähnten Artikel.)
Ein wichtiger Punkt der gemäß der Erfindung aufgebauten Codeumsetzungstabelle ist ihr kleines Ausmaß. Im Falle des in Fig. 6 gezeigten (1.8) Code umfaßt das ganze Codewörterbuch nur 16 Wörter, deren Länge in Vielfachen von drei zwischen drei und neun Bits schwankt. Im Falle des in Fig. 7 gezeigten (2,7) Code enthält das Codewörterbuch nur sieben Codewörter, deren Länge in Vielfachen von zwei zwischen zwei und acht Bits wechselt. Wenn eine Information mit einem äquivalenten Bit-pro-Symbol-Wert in einem Codiersystem mit begrenzter Lauflänge und festen Wortlängen zu codieren wäre, würde die Größe des Codewörterbuchs enorm um einige Größenordnungen zunehmen aufgrund der relativen Inflexibilität der Codierung in einem System mit fester Länge und begrenzter Lauflänge. Dadurch nimmt die Komplexität des für Tabellenleseoperationen oder gleichwertige Codier- und Decodierfunktio-
2Ü9881/0622
YO 971 012
2227H8
nen erforderlichen Gerätes enorm zu. Wie in den obenerwähnten Artikeln auf Seite 380 ausgeführt wird, hat ein (4,9) Code ein Codewörterbuch von 512 Wörtern bei einem Format fester Länge, jedoch von nur sechs Wörtern bei einem Format mit unterschiedlicher Länge.
In den Fign. 6 und 7 sind die Codetabellen in der Form wiedergegeben, die sie bei einer Speicherung in den in Fig. IA gezeigten Assoziativspeicher 20 hätten. Dieser Speicher enthält Speicherzellen mit drei Zuständen in seinen Teilen 22 und 24, in welchen die codierten Wörter bzw. Originalwörter gespeichert werden. Das Zeichen 11X" in Fign. 6 und 7 bezeichnet eine Speicherzelle mit drei möglichen Zuständen in ihrem drittem oder X-Zustand, in welchen sie versetzt wird, wenn sie keines der wertdarstellenden Bits eines Wortes speichert. Jede Speicherzelle in den Teilen 22 und 24 kann wunschgemäß in einen der drei folgenden Zustände versetzt werden:
1. Im Zustand einer binären 1 erzeugt die Zelle ein Ungleichheits-Signal, wenn sie durch ein O-Bit abgefragt wird, erzeugt jedoch kein Ausgangssignal, wenn sie durch ein 1-Bit abgefragt wird.
2. Im O-Zustand erzeugt die Zelle ein Ungleichheits-Signal, wenn sie durch ein 1-Bit abgefragt wird, erzeugt jedoch kein Ausgangssignal, wenn sie durch ein O-Bit abgefragt wird.
3. Im X-Zustand kann die Zelle kein Ungleichheits-Signal erzeugen ungeachtet der Abfrage durch ein 1-Bit oder ein 0-Bit. In diesem Zustand ist die Zelle für die Abfrage effektiv maskiert.
Die spezielle Konstruktion des Assoziativspeichers 20 mit seinen Speicherzellen, die drei Zustände einnehmen können, wird hier nicht im einzelnen beschrieben, da solche Speicher allgei/ain
ΪΟ971οΐ2 · 209881/0622
2227H8
bekannt sind. Der Vorteil solcher Speicherzellen für drei Zustände besteht darin, daß sie individuell für die Abfrage maskiert werden können, ohne daß alle anderen Zellen in derselben Spalte maskiert werden.
Der dritte Teil 26 des in Fig. IA gezeigten Assoziativspeichers 20 speichert Längenanzeiger L, mit denen bei der Codierung die Anzahl der Wert darstellenden Bits im Originalwort angegeben wird. So gehört z. B. in Fig. 6 zum Originalwort 00 die binäre Längenangabe (L) von 010 oder 2 in Dezimalnotierung, die besagt, daß zwei Bits in diesem Originalwort stehen. Da das Verhältnis (Ν/<χ) der codierten zu den originalen Bits in diesem speziellen Codesystem 3 : 2 beträgt, ist die Länge des entsprechenden Codewortes (010) drei Bits. Die Längenangabe L wird nur bei Codieroperationen gebraucht. Bei Decodieroperationen wird die benötigte Wortlängeninformation abgeleitet aus der Rahmenfunktion.
Das Codierverfahren wird im Zusammenhang mit den Fign. IA und IB, 2, 4, 6 und 7 erklärt. Wie bereits oben gesagt wurde, wird für die vorliegenden Zwecke angenommen, daß das System Information nach einem zustandsunabhängigen Codierschema verarbeitet, wie es der zur Illustration gewählte (1,8) Code oder der (2,7) Code (Fig. 6 und 7) ist. Das bedeutet, daß eine Codier-Decodiertabelle verwendet werden kann und die nach dieser Tabelle erzeugten Codewörter frei verkettet werden können, ohne daß die angegebenen (d, k) Beschränkungen verletzt werden.
Bei Verwendung eines zustandsabhängigen Codierschemas ist die Codierung ähnlich, bringt jedoch eine Auswahl unter mehreren Codiertabellen abhängig von dem Endzustand des vorher codierten Wortes mit sich. Die erforderlichen Änderungen des gezeigten Systemes für diese Art der zustandsabhängigen Codierung werden später kurz beschrieben.
Das Codierverfahren wird folgendermaßen durchgeführt: Die zu codierenden Informationsbits werden seriell in ein xn Fig. IA ge-
209881/0622
YO 971 012
2227H8
zeigtes Argumentregister 30 eingegeben. Am Anfang wird in das Register eine Anzahl von Bits eingegeben, die gleich ist aW/N und der Maximallänge der im Speicherteil 24 gespeicherten Wörter entspricht. Die Assoziation wird aufgrund dieses Arguments ausgeführt und das übereinstimmende Codewort aus dem Speicherteil 22 ausgelesen und in ein Datenregister 32 eingegeben. Gleichzeitig wird die zugehörige Längenangabe L aus dem Speicherteil ausgelesen und in einen in Fig. IB gezeigten Längenzähler 34 eingegeben. Somit ist jetzt die Länge des übereinstimmenden Originalwortes im Längenzähler 34 registriert.
Es folgt eine Periode, in welcher das im Datenregister 32 gespeicherte Codewort aus diesem Register seriell ausgelesen wird. Gleichzeitig werden neue Bits des originalen Bitstroms seriell in das Argumentregister 30 eingegeben, dessen Inhalt fortschreitend nach links verschoben wird, um den neu eingegebenen Bits aufzunehmen. Die Anzahl der aus dem Datenregister 32 ausgelesenen Bits muß mit der Länge des Codewortes übereinstimmen und die Anzahl der in das Argumentregister 30 neu eingegebenen Bits muß gleich sein der Anzahl der Bits im Originalwort, das gerade codiert wurde. Dieses Wort wird fortschreitend aus dem Argumentregister ausgeschoben, während die neue Eingabe erfolgt. Der Längenzähler 34, der entsprechend dem L-Wert eingestellt wurde, steuert diese beiden Aktionen so, daß die richtige Bitzahl ausgelesen bzw. eingegeben wird. Der Zählerstand des Längenzählers 34 wird jedesmal um eins vermindert, wenn ein neues Bit in das Argumentregister 30 eingegeben wird, und wenn der Längenzähler den Zählerstand 0 erreicht hat, endet die Eingabe neuer Bits in das Register 30, bis die nächste Codieroperation erfolgt.
Die Kapazität des Datenregisters reicht aus, um ein Codewort mit der maximalen Länge L aufzunehmen. Wenn das während der durch den Speicher 20 ausgeführten Assoziation ausgelesene Codewort eine kleinere Länge als W hat, wird nur die entsprechende Anzahl von Bits aus dem Register 32 in den codierten Bitstrom ausgelesen. Auf jeden Fall muß das Verhältnis zwischen der Anzahl der aus dem
209881/0622
YO 971 012
2227H8
Register 32 ausgelesenen Bits und der in das Register 30 eingegebenen Bits konstant auf dem Wert Ν/α gehalten werden. Das bedeutet anders ausgedrückt/ daß für jede Menge von α Bits, die in das Argumentregister 30 eingegeben werden, N Bits aus dem Datenregister 32 ausgelesen werden müssen. Dieses Verhältnis wird aufrechterhalten, indem man zwei Bitzähler 36 und 38 in Fig. IB auf die entsprechenden Werte einstellt. Der Zähler 36, der hier als Ausgabebitzähler bezeichnet wird, wird bei der Codieroperation am Anfang auf den Wert N eingestellt und jeweils um eins heruntergezählt, wenn ein Bit aus dem Datenregister 32 ausgegeben wird. Der hier mit Eingabebitzähler bezeichnete Zähler 38 wird bei Codieroperationen am Anfang auf den Wert α gesetzt und jedesmal um eins heruntergezählt, wenn ein Bit in das Argumentregister 30 gelangt.
Das Auslesen codierter Bits und die Eingabe neuer originaler Bits erfolgen ungefähr gleichzeitig. Wenn also eine Gruppe von α Bits in das Register 30 gelangt ist, wird dadurch der Zählerstand des Eingabebitzählers 38 auf null reduziert. Die Eingabe der nächstfolgenden Gruppe von α Bits in das Register 30 wird verzögert, bis die laufende Gruppe von N codierten Bits aus dem Datenregister 32 ausgelesen wurde. Wenn der Zählerstand des Ausgabebitzählers 36 dann auf den Wert 0 reduziert wurde/ werden die beiden Bitzähler 36 und 38 wieder auf N bzw. α eingestellt und steuern die Eingabe von α Bits in das Register 30 sowie die Ausgabe von N Bits aus dem Register 32, bis das laufende Codewort ganz aus dem Register 32 ausgelesen wurde. Diese Tatsache wird dadurch angezeigt, daß der Zählerstand des Längenzählers 34 auf 0 reduziert wurde.
Während neue Bits in das Argumentregister 30 eingegeben werden, wird der Inhalt dieses Registers entsprechend nach links verschoben. Die Einstellung des Längenzählers bestimmt die Anzahl der Linksverschiebungen, die entsprechend der Länge der Bitgruppe oder Bitreihe, die gerade codiert wurde, vorgenommen wird. Wenn das letzte Bit der alten Gruppe also aus dem Argumentregister
20988T/0622
2227H8
ausgeschoben wurde, gelangt demzufolge das erste Bit der neuen Gruppe an die Stelle, die für eine durch den Assoziativspeicher 20 auszuführende neue Assoziation richtig ist.
Anschließend wird im Zusammenhang mit dem Ablaufdiagramm der Fig. 2 das Codierverfahren genauer erklärt. Die verschiedenen Schritte in diesem Ablaufdiagramm sind durch Bezugszahlen mit dem Vorsatz "E" gekennzeichnet (z. B. El, E2r E3 usw.). Damit sind Schritte des Verfahrens bezeichnet, die durch die Taktimpulse eingeleitet werden, welche auf den mit denselben Bezeichnungen versehenen Leitungen der in Fig. 4 gezeigten Taktgeberschaltung erzeugt werden. Jeder dieser Taktimpulse wird durch eine monostabile Kippschaltung bei deren Einschaltung erzeugt. Wenn z. B. die in Fig. 4 gezeigte monostabile Kippschaltung 40 aufgrund eines an die Leitung 42 angelegten Startimpulses in den instabilen Zustand geschaltet oder eingeschaltet wird, erzeugt sie einen Taktimpuls auf der Leitung El. Dadurch wird der in Fig. 2 mit El bezeichnete Schritt des Codierverfahrens eingeleitet, in welchem der Längenzähler 34 in Fig. IB auf den Anfangswert aW/N und ein in Fig. IA gezeigtes Flipflop 44 (das Ende-Flipflop) auf Null rückgestellt wird. Diese beiden Vorgänge werden ausgeführt durch Anlegen des Impulses El an eine in Fig. IA gezeigte Torschaltung 46. Dadurch wird diese Torschaltung durchgeschaltet, so daß sie einen vorgewählten Anfangswert aW/N dem Längenzähler 34 der Fig. IB zuleitet. Außerdem wird der Impuls El auch an den O-Eingang des Ende-Flipflop 44 in Fig. IA anlegt.
Wenn die monostabile Kippschaltung 40 in Fig. 4 wieder in den Ruhezustand zurückkehrt oder ausschaltet, sendet sie einen Impuls über das ODER-Glied 48 zu der monostabilen Kippschaltung 50, die daraufhin in den instabilen Zustand gelangt oder einschaltet wird und den Taktimpuls E2 zur Einleitung des Schrittes E2 des Codierverfahrens (Fig. 2) erzeugt. Aus der gemeinsamen Betrachtung der Fign. IA und 2 ist zu ersehen, daß der Impuls E2 einer Einrichtung zugeführt werden kann, die eine Linksverschiebung des Inhaltes des Argumentregisters 30 um eine Bit-Position bewirkt
· 209881/0622
2227U8
und dieses Register zum Empfang eines vom originalen Bitstrom hereinkommenden Bits vorbereitet.
Wenn die in Fig. 4 gezeigte monostabile Kippschaltung 50 in den stabilen Zustand zurückkehrt oder ausschaltet, schaltet sie die monostabile Kippschaltung 52 ein und erzeugt so den Taktimpuls E3. Dadurch wird der in Fig. 2 gezeigte Schritt E3 eingeleitet, in welchem der Impuls E3 einer in Fig. IA gezeigten Torschaltung 54 zugeführt und dadurch ein Bit dem Argumentregister 30 zugeleitet wird. Gleichzeitig wird der Taktimpuls E3 auch über ein in Fig. IB gezeigtes ODER-Glied 56 an eine Einrichtung angelegt, welche den Zählerstand des Längenzählers um eins vermindert. Somit wurde ein Bit in das Argumentregister 30 eingegeben und der Zählerstand des Längenzählers entsprechend vermindert.
Wenn die in Fig. 4 gezeigte monostabile Kippschaltung 52 in den stabilen Zustand zurückkehrt, gelangt die monostabile Kippschaltung 58 in den instabilen Zustand und erzeugt so den Taktimpuls E4. Dieser leitet eine Prüfung des Zählerstandes des Längenzählers ein, um festzustellen, ob er zu Null reduziert wurde. Der Impuls E4 wird an die in Fig. IB gezeigte Torschaltung 60 angelegt und leitet das O-Ausgangssignal oder das Nicht-O-Ausgangssignal eines zum Längenzähler 34 gehörenden Umsetzers 62 weiter. Der Umsetzer 62 erregt eine Ausgangsleitung 64, wenn der Längenzähler die Einstellung 0 erreicht hat und eine Ausgangs leitung 66, wenn der Längenzähler einen von Null verschiedenen Zählerstand aufweist. Im vorliegenden Fall wird angenommen, daß die Leitung 66 erregt wird, da der Zählerstand des Längenzählers noch nicht den Wert 0 erreicht hat. Unter diesen Umständen wird beim Durchschalten der Torschaltung 60 durch den Taktimpuls E4 eine in den Fign. IB und 4 gezeigte Leitung 68 erregt, über ein ODER-Glied 48 wird die monostabile Kippschaltung 50 in den instabilen Zustand versetzt, die wieder einen Taktimpuls E2 erzeugt. Dadurch wird, wie aus Fig. 2 zu ersehen ist, wieder die Reihenfolge der Schritte E2, E3 und E4 eingeleitet, in welcher im Argumentregister 30 eine Linksverschiebung erfolgt, ein neues
209881/0622
YO 971 012
2227U8
Bit in dieses Register 30 eingegeben, der Zählerstand des Längenzählers 34 um eins herabgesetzt und der Inhalt des Längenzählers wieder auf den Wert 0 geprüft wird. Diese Folge der Schritte E2, E3 und E4 wiederholt sich so lange, bis der erste Satz von aW/N Bits in das Argumentregister 30 gebracht ist. Wenn alle diese Bits eingegeben worden sind, ergibt die nächste Prüfung des Zählerstandes des Längenzählers im Schritt E4, daß der Zählerstand den Wert 0 erreicht hat.
Wenn der Torschaltung 60 der Taktimpuls E4 zugeführt wird, während die 0-Ausgangsleitung 64 des Umsetzers 62 erregt ist, dann wird deren Ausgangsimpuls über die Leitung 70 und das ODER-Glied 72 in Fig. 4 der monostabilen Kippschaltung 74 zugeführt, die daraufhin in den instabilen Zustand gelangt und den Taktimpuls E5 erzeugt. Dieser leitet eine neue Reihenfolge von Schritten E5, E6 und E7 ein, die in Fig. 2 gezeigt ist und während welcher die eigentliche Decodierung erfolgt.
Wenn also der Taktimpuls E5 erzeugt wird, setzt er die verschiedenen Übereinstimmungs-Anzeiger der in den Fign. IA und 12 gezeigten Assoziativspeichersteuerschaltungen 80 in den Eins-Zustand. Der Taktimpuls E5 gelangt über ein in Fig. IA gezeigtes ODER-Glied 82 auf eine in Fig. 12 gezeigte Leitung 84, die parallel mit den 1-Eingangsanschlüssen der Übereinstimmungs-Anzeige Flipflops 86 in den Steuerschaltungen 80 des Assoziativspeichers verbunden ist. Dadurch werden diese für eine Suchoperation vorbereitet.
Wenn die in Fig. 4 gezeigte monostabile Kippschaltung 74 in den stabilen Zustand zurückkehrt, schaltet sie eine monostabile Kippschaltung 88 in den instabilen Zustand zur Erzeugung eines Taktimpulses E6 ein, der einer Assoziationsleitung des in Fig. IA gezeigten Argumentregisters zugeleitet wird. Dadurch wird der Assoziativspeicher 20 zur Suche nach einem Wort im Speicherteil 24 veranlaßt, das mit dem Inhalt des Argumentregisters 30 übereinstimmt. Eine Übereinstimmung tritt auf, wenn das Muster der wertdarstellenden Bits in einem der im Speicherteil 24 gespeicher-
209881/0622
YO 971 012
2227U8
ten Wörter übereinstimmt mit den entsprechenden Bits im Argumentregister 30. Wenn bei Verwendung des (1,8) Codes z. B. angenommen wird, daß die beiden äußersten linken Positionen des Argumentregisters 30 Nullen enthalten, dann besteht eine Übereinstimmung zwischen diesem Argument und dem obersten Wort des in Fig. 6 gezeigten Speicherteiles 24. Die übrigen Bits im Argumentregister 30 werden in diesem Fall ignoriert, da die übrigen Zellen dieser Zeile im Teil 24 des Assoziativspeichers sich im X-Zustand befinden. Somit wird eine Übereinstimmung festgestellt zwischen dem Argument 00 und dem gespeicherten Wort 00 ungeachtet der übrigen Bits im Argumentregister 30.
Die im Teil 24 des Assoziativspeichers 20 gespeicherten Wörter, die alle originale Bitreihen darstellen, welche codiert werden können, sind so ausgewählt, daß kein Wort den Anfang eines längeren Wortes in demselben Satz bilden kann. Aus Fig. 6 ist z. B. zu ersehen, daß keines der anderen codierbaren im Teil 24 gespeicherten Wörter mit 00 beginnen kann, da das erste Wort im Speicherteil 24 das Wort 00 ist. In diesem Zusammenhang ist jedoch zu beachten, daß eine besondere Zeile von Zellen im Teil vorhanden ist, die ein aus lauter Nullen bestehendes Pseudowort enthält. Dieses Pseudowort gehört jedoch zu einer anderen Kategorie und stellt eine fehlende Übereinstimmung dar, die nur bei Decodieroperationen auftreten kann. Bei Codieroperationen wird dieses Wort nicht benutzt und wird daher bei der Beschreibung von Decodieroperationen besonders behandelt. Bei Codieroperationen wird angenommen, daß für jedes im Argumentregister 30 der Fig. IA gespeicherte Argument eine eindeutige Übereinstimmung zwischen dem Argument und einem der im Speicherteil 24 mit Ausnahme dieses Pseudowortes gespeicherten Wörter besteht.
Befindet sich in einer Zeile des abgefragten Teils des Assoziativspeichers (in diesem Fall Teil 24) ein nicht übereinstimmendes Wort, so wird dadurch ein Signal auf der Ungleichheit anzeigenden Leitung 90 für diese Zellenzeile erzeugt. Dieses Ungleichheit anzeigende Signal wird dem O-Eingangsanschluß des zugehörigen über-
209881/0622
2227U8
einstimmungsanzeige-Flipflop 86 zugeführt und dieses dadurch auf 0 rückgestellt. Da angenommen wird, daß nur eine Zellenzeile ein übereinstimmendes Wort enthält, werden Ungleichheit anzeigende Signale für alle Zeilen mit Ausnahme der Zeile erzeugt, in welcher dieses übereinstimmende Wort gespeichert ist. Somit bleibt nur einer der Übereins timmungs anzeiger 86 im E ins-Zustand,' die anderen werden in den Null-Zustand rückgestellt.
Wenn die in Fig. 4 gezeigte monostabile Kippschaltung 88 in ihren stabilen Zustand zurückkehrt, sendet sie einen Impuls über eine Leitung 92 zum Einschalten der nächsten monostabilen Kippschaltung 94 und Erzeugen eines Taktimpulses E7, der über ein ODER-Glied 96 in Fig. IA der in Fig. 12 gezeigten Leseleitung 98 zugeführt wird. Zu jedem Übereinstimmungs-Anzeiger 86 gehört ein UND-Glied 100. Ein Eingang eines jeden UND-Gliedes 100 ist mit der Leseleitung 98 verbunden, der andere mit dem 1-Ausgang des entsprechenden Übereinstimmungs-Anzeigers. Wenn der Übereinstimmungs-Anzeiger sich im Eins-Zustand befindet, wird ein Signal über das entsprechende UND-Glied 100 an die zugehörige Leseleitung 102 weitergegeben und dadurch das Auslesen der Speicherzellenzeile vorbereitet, die das übereinstimmende Wort enthält, d. h., das Wort, welches mit dem im Argumentregister 30 der Fig. 2A gespeicherten Argument übereinstimmt. Alle anderen Leseleitungen 102 erhalten kein Signal. Wie bereits gesagt wurde, gibt es bei jeder Codieroperation nur ein übereinstimmendes Wort.
Der in Fig. IA gezeigte Teil 22 des Assoziativspeichers 20 ist jetzt zum Auslesen des in der Zellenzeile gespeicherten codierten Wortes vorbereitet, die das übereinstimmende Originalwort im Speicherteil 24 enthält. Wenn der Taktimpuls E7 nach obiger Beschreibung erzeugt wird, wird er auch einer Torschaltung 104 in Fig. IA zugeführt und koppelt damit den Ausgang des Speicherteiles 22 mit der Eingangsseite des Datenregisters 32. Dadurch kann das dem codierten Argument entsprechende codierte Wort in das Datenregister 32 geleitet werden und steht dort jetzt zum seriellen Auslesen zur Verfügung.
209881/0622
YO 971 012
2227U8
Durch den Taktimpuls E7 wird weiterhin die in Fig. IA gezeigte Torschaltung 106 durchgeschaltet und überträgt die zugehörige Längenangabe L aus dem Speicherteil 26 in den in Fig. IB gezeigten Längenzähler 34. Dessen Zählerstand gibt daher die Anzahl der im Originalwort enthaltenen wertdarstellenden Bits an, die soeben als Codier-Argument benutzt wurden.
Wenn die in Fig. 4 gezeigte monostabile Kippschaltung 94 in den stabilen Zustand zurückkehrt, bringt sie die monostabile Kippschaltung 108 in den instabilen Zustand und erzeugt damit den Taktimpuls E8. Wie im Ablaufdiagramm der Fig. 2 gezeigt ist, wird dadurch der Eingabebitzähler 38 in Fig. IB auf den Wert α und der Ausgabebitzähler 36 auf den Wert N eingestellt. Entsprechend obiger Beschreibung stellt der Wert N die Anzahl von aus dem Datenregister 32 in Fig. IA auszulesenden Datenbits für je α von in das Argumentregister 30 eingegebenen Datenbits dar. Das heißt, das Verhältnis Ν/α ist ein festes Verhältnis zwischen der Anzahl von im codierten Wort enthaltenen Bits und der Anzahl der in der originalen Bitreihe enthaltenen Bits, von denen dieses codierte Wort abgeleitet wurde.
Wenn die in Fig. 4 gezeigte monostabile Kippschaltung 108 in den stabilen Zustand zurückkehrt, sendet sie einen Impuls über die ODER-Glieder 110 und 112 an eine monostabile Kippschaltung 114 und einen zweiten Impuls über die ODER-Glieder 110 und 116 an die monostabile Kippschaltung 118. Jetzt folgt eine Phase der Codieroperation, in welcher zwei Schrittfolgen E9 bis Eil und E12 bis E14 gleichzeitig ausgeführt werden. Während der Schritte E9 bis Eil werden α Datenbits seriell in das Argumentregister in Fig. IA eingegeben und dessen Inhalt entsprechend nach links verschoben. Während der Schritte E12 bis E14 werden N Datenbits seriell aus dem Datenregister 32 ausgelesen und dessen Inhalt entsprechend nach links verschoben. Diese beiden gleichzeitigen Schrittfolgen werden so oft ausgeführt als nötig (was durch die Einstellung des Längenzählers bestimmt ist), um ein neues Argument zur Assoziierung in das Argumentregister 3O zu bringen und
YO 971 012 209881/0622
das Auslesen des gerade codierten Codewortes aus dem Datenregister 32 zu beenden.
Betrachtet man die gerade beschriebenen Operationen im einzelnen, so erzeugt die monostabile Kippschaltung 114 in Fig. 4 beim Einschalten einen Taktimpuls E9, welcher den Inhalt des in Fig. IA gezeigten Argumentregister 30 um ein Bit nach links verschiebt. Wenn die monostabile Kippschaltung 114 in Fig. 4 in den stabilen Zustand zurückkehrt, bringt sie die monostabile Kippschaltung in den instabilen Zustand und erzeugt den Taktimpuls ElO. Das hat drei Auswirkungen. Erstens wird die Torschaltung 54 in Fig. IA betätigt und ein Bit in das Argumentregister 30 eingegeben. Zweitens wird der Zählerstand des Eingabebitzähler 38 in Fig. IB um eins heruntergezählt. Drittens wird der Zählerstand des Längenzählers 34 um eins erniedrigt.
Wenn die monostabile Kippschaltung 120 in den stabilen Zustand zurückkehrt, bringt sie die in Fig. 4 gezeigte monostabile Kippschaltung 122 in den instabilen Zustand und erzeugt dadurch den Taktimpuls Eil. Durch diesen Impuls wird der Zählerstand des Eingangsbitzählers 38 in Fig. IB auf den Wert Null abgefragt. Mit dem Eingabebitzähler 38 ist ein Umsetzer 128 verbunden, der ein Ausgangssignal auf der Leitung 124 erzeugt, wenn der Zählerstand des Eingabebitzählers von 0 verschieden ist und ein Signal auf einer anderen Ausgangsleitung 126, wenn der Zählerstand des Eingabebitzählers 0 beträgt. Der Taktimpuls Eil wird einer in Fig. IB gezeigten Torschaltung 130 zugeführt und wenn die Leitung 124 erregt ist (was für den vorliegenden Fall angenommen wird), gelangt der Ausgangsimpuls der Torschaltung 130 über eine in den Fign. IB und 4 gezeigte Leitung 132 und über ein ODER-Glied 112 zu der monostabilen Kippschaltung 114. Daher wird die Schrittfolge E9 bis Eil in Fig. 2 wiederholt,, bis der Eingabebitzähler auf 0 zurückgezählt wurde.
Wenn schließlich α neue Bits in das Argumentregister 30 in Fig. IA eingegeben wurden, beträgt der Zählerstand des Eingabebit-
YO 97X012 209881/0622
2227U8
Zählers 38 in Fig. IB Null. Wenn unter diesen Umständen der Taktimpuls Eil erzeugt wird, liefert die Torschaltung 130 einen Ausgangsimpuls über eine Leitung 134 und das ODER-Glied 136 zu einem Eingang eines in den Fign. IB und 2 gezeigten UND-Gliedes 138. Ein zweites Eingangssignal für das UND-Glied 138 wird vom Eingabebitzähler über die Leitung 126 geliefert. Das UND-Glied 138 schaltet jedoch erst durch, wenn ihm ein drittes Eingangssignal dann zugeführt wird, wenn der Zählerstand des Ausgabebitzählers 36 den Wert 0 erreicht. Die Rückführung des Zählerstandes des Eingabebitzählers zum Wert 0 unterbricht also die weitere Ausführung der Schritte E9 bis Eil in Fig. 2, hat jedoch keinen weiteren Einfluß, bis der Zählerstand des Ausgabebitzählers auf 0 reduziert wurde.
Wenn die in Fig. 4 gezeigte monostabile Kippschaltung 118 gemäß obiger Beschreibung in den instabilen Zustand gelangt, erzeugt sie den Taktimpuls E12 zum Ausgeben eines Bits aus dem Datenregister 32, indem der Taktimpuls E12 der in Fig. IA gezeigten Torschaltung 140 zugeführt wird, welche das ausgegebene Bit durchläuft. Dieses ist das erste von N Bits, die aus dem Datenregister 32 auszugeben sind.
Wenn die monostabile Kippschaltung 118 in den stabilen Zustand zurückkehrt, bringt sie die monostabile Kippschaltung 142 in den instabilen Zustand und erzeugt den Taktimpuls El3. Dadurch wird erstens der Inhalt des Datenregisters 32 um ein Bit nach links verschoben und zweitens der Zählerstand des Ausgabebitzählers 36 gemäß Darstellung in Fig. IB um eins herabgesetzt.
Wenn die monostabile Kippschaltung 142 in den stabilen Zustand zurückkehrt, bringt sie die monostabile Kippschaltung 144 in den instabilen Zustand und erzeugt den Taktimpuls E14. Dadurch wird der Zählerstand des in Fig. IB gezeigten Ausgabebitzählers 36 geprüft. Mit dem Zähler 36 ist ein Umsetzer 146 verbunden, der Ausgangssignale liefert, und zwar auf der Leitung 148, wenn der Ausgabebitzähler einen von 0 verschiedenen Zählerstand besitzt
209881/0622
und auf der Leitung 150, wenn der Zählerstand des Ausgabebitzählers den Wert 0 hat. Der Taktimpuls E14 wird einer Torschaltung 152 zugeführt, und wenn die Ausgangsleitung 148 erregt ist, erzeugt die Torschaltung 150 einen Impuls, der über eine Leitung 154 in den Fign. IB und 4 und ein ODER-Glied 116 zu einer monostabilen Kippschaltung 118 weitergeführt wird. Dadurch wird die Reihenfolge der Schritte E12 bis E14 in Fig. 2 wiederholt, und zwar so lange, bis N Datenbits aus dem Datenregister 32 ausgegeben und der Zählerstand des Ausgabebitzählers auf 0 reduziert wurde.
Wenn der Zählerstand des in Fig. IB gezeigten Ausgabebitzählers 36 auf 0 reduziert wurde, führt das Anlegen des Taktimpulses E14 an die Torschaltung 152 zur Weiterleitung eines Ausgangsimpulses über die Leitung 156 und das ODER-Glied 136 zu dem UND-Glied 138. Da beide Zähler jetzt auf 0 stehen, empfängt das UND-Glied 138 Eingangssignale von den Leitungen 126 und 150 sowie vom ODER-Glied 136. Somit wird der Ausgangsimpuls des UND-Gliedes 138 über die Leitung 160 in den Fign. IB und 4 der monostabileis Kippschaltung 162 im Taktimpulsgenerator zugeleitet.
Wenn die monostabile Kippschaltung 162 in den instabilen Zustand gebracht wird, erzeugt sie den Taktimpuls E15, welcher der Torschaltung 164 in Fig. IB zugeführt wird. Wenn der Zählerstand des Längenzählers einen von 0 verschiedenen Wert hat, wird ein entsprechendes Signal auf der Ausgangsleitung 66 über die Torschaltung 164 und eine Leitung 170 der monostabilen Kippschaltung 172 in Fig. 4 zugeleitet.
Wenn die monostabile Kippschaltung 172 in den instabilen Zustand gebracht wird, erzeugt sie den Taktimpuls E16 und aus den Fign. 2 und IB ist zu ersehen, daß dadurch der Eingabebitsähler 38 wieder auf den Wert α und der Ausgabebitzähler 36 auf den Wert N eingestellt werden. Wenn die in Fig. 4 gezeigte monostabile Kippschaltung 172 in den stabilen Zustand zurückkehrt, sendet sie einen Impuls über die ODER-Glieder 110,, 112 und 116 su den
so 971 ol2 · 209881/0622
2227U8
monostabilen Kippschaltungen 114 bzw. 118, wodurch die beiden Schrittfolgen E9 bis Eil und E12 bis E14 in Fig. 2 wieder einge leitet werden. Infolgedessen wird eine weitere Gruppe von α Bits seriell in das Argumentenregister 30 der Fig. IA eingegeben und eine weitere Gruppe von M Bits seriell aus dem Datenregister ausgelesen.
Die Reihenfolge der in Fig. 2 gezeigten Schritte E9 bis E16 wird wiederholt, bis der Zählerstand des Längenzählers auf 0 reduziert ist. Wenn diese Bedingung erreicht wird, heißt das, daß L neue Bits in das Argumentregister 30 gelesen und eine damit in Beziehung stehende Anzahl von Bitsf nämlich ML/a, aus dem Datenregister 32 ausgelesen wurde. Somit isc ein ganzes der Codewörter unterschiedlicher Länge aus dem Datanregister 32 ausgelesen und eine nachfolgende zu codierende Bitreihe an die für die Assoziation im Argumentregister 30 richtige Steile gesetzt worden. Wenn unter diesen Umständen der Taktimpuls E15 erzeugt wird, fließt ein Strom von der O-Ausgangsleitung 64 des Umsetzers 62 des Längenzählers in Fig. IB über die Torschaltung 164 und die Leitung 176 zu der in Fig. 4 gezeigten monostabilen Kippschaltung 178. Wenn diese in den instabilen Zustand gelangt, erzeugt sie einen Taktimpuls E17 und leitet eine Prüfung ein, mit welcher festgestellt wird, ob das letzte Wort codiert wurde. Die hierfür nötigen Prüfeinrichtungen werden jetzt beschrieben.
Es wird angenommen, dal? jede su codierende Aufzeichnung oder Nachricht in einem erkennbare Code "Ende des Datensatzes (EDD)" endet. Als solcher kann z. B, eines der ±m Assoziativspeicherteil 22 gespeichertem codierten Wörter angesehen werden. Der originale Bitstrom endet in einer Reihe von Bits, die in die-se EDD-Darstellung umgesetzt werdenc Siisn. Datenregister 32 gehört ein Detektor 180 für das codierte EDD, Pig. IA. Wenn ein EDD-Code aus dem Datenregister 32 des Assoziativspeichers 20 gelesen wird, erzeugt der Detektor 180 ein Ausgangssignal auf der Leitung 182, welches über ein ODER-Glied 184 zum 1-Eingang des Ende-Flipflop 44 läuft und dieses in den "1"-Zustand bringt.
YO971O12 2Ü9881/0622
Wenn das Ende-Flipflop 44 im "1"-Zustand ist, erscheint ein Ausgangssignal auf der Leitung 188. Ist das Ende-Flipflop 44 im "0"-Zustand, erscheint ein Signal auf der Leitung 186. Die Erregung einer der beiden Leitungen 186 oder 188 hängt davon ab, ob der Detektor 180 einen EDD-Code im Datenregister 32 festgestellt hat oder nicht. Wenn das Ende des Datensatzes zum Zeitpunkt des Taktimpulses E17 noch nicht erreicht ist, wird die Leitung 186 erregt, sonst die Leitung 188.
Der Taktimpuls E17 wird zum entsprechenden Zeitpunkt der in Fig. IA gezeigten Torschaltung 190 zugeführt. Wenn das Ende der Aufzeichnung noch nicht erreicht ist, fließt Strom von der Leitung 186 über die Torschaltung 190, Leitung 19 2 und das in Fig. 4 gezeigte ODER-Glied 72 zu der monostabilen Kippschaltung 74. Diese kommt dadurch in den instabilen Zustand und erzeugt einen Taktimpuls E5 und leitet dadurch eine neue Codierfolge ein, die mit dem in Fig. 2 gezeigten Schritt E5 beginnt. Das System codiert dann das neue Argument weiter, welches jetzt im Argumentregister 30 steht.
Diese neue Codieroperation beginnt also erst, wenn alle Bits des vorher codierten Wortes aus dem Datenregister 32 ausgelesen worden sind und sie beginnt außerdem, sobald das letzte Bit des alten Codeworts ausgelesen wurde. Zwischen der Codierung aufeinanderfolgender Codewörter besteht also keinerlei Verzögerung.
Wenn der Taktimpuls E17 zu einem Zeitpunkt erzeugt wird, an welchem das Ende-Flipflop im "1"-Zustand ist, heißt das, daß ein EDD-Codewort erzeugt wurde. Dann führt die Torschaltung 190 in Fig. IA den Strom auf der Leitung 188 einer zur Beendigung der Codieroperation des Systems geeigneten Einrichtung zu. Das EDD-Codewort ist mittlerweile aus dem Datenregister 32 ausgeschoben worden, um den letzten Teil der codierten Nachricht zu bilden.
Das Decodierverfahren wird anschließend im Zusammenhang mit den Fign. IA, IB, 3 und 5 bis 12 beschrieben.
YO 971 012 2 Ü9 88 1/062 2
Wie ist aus Fig. IB zu ersehen ist werden die Bits des codierten Bitstromes seriell in ein Eingangsregister 200 eingegeben. Die Bit-Speicherstellen 200 sind der Reihe nach von eins an aufwärts numeriert. Das Register 200 ist ein Schieberegister und sein Inhalt wird intermittierend um jeweils eine Bitstelle nach links verschoben (mit Blickrichtung auf Fig. IB), während die Decodieroperation fortschreitet. Das zwischen zwei aufeinanderfolgenden Verschiebungen liegende Zeitintervall (oder auch das vor der ersten Verschiebung liegende Zeitintervall) wird hier als Schiebeintervall bezeichnet.
Die Bits des codierten Bitstromes werden im Eingangsregister 200 gespeichert, um bestimmte Rahmenprüfungen an einem bestimmten Teil dieses Bitstromes ausführen zu können, welcher W Bits enthält, wobei W die größtmögliche Wortlänge ist. Im Falle des in Fig. 6 gezeigten (1,8) Code ist W z. B. gleich neun Bits. Beim in Fig. 7 gezeigten (2,7) Code ist W gleich acht Bits. Der Punkt im Register 200, der zwischen der Bitstelle W und der Bitstelle W+l liegt, ist als Rahmenbezugspunkt bekannt. Für den (1,8) Code liegt der Rahmenbezugspunkt zwischen der neunten und zehnten Bitstelle im Register 200, wie das in Fig. 8 dargestellt ist, und für den (2,7) Code zwischen der achten und neunten Bitstelle, wie das in Fig. 9 dargestellt ist. Dieser Rahmenbezugspunkt markiert effektiv die Vorderkante eines aus W Bits bestehenden Decodierargumentes, welches zu gegebener Zeit in das Argumentregister 204 des Assoziativspeichers 20 der Fig. IA übertragen wird. Alle Bits im Eingangsregister, die zu dieser Zeit rechts vom Rahmenbezugspunkt stehen, werden in dieses Argument eingeschlossen, auch wenn die Rahmenlänge kleiner als W ist.
Zum Eingangsregister 200 gehört eine mit Rahmen-Logik bezeichnete Schaltung 202 in Fig. IB. Diese Einheit 202 enthält logische Schaltungen für die Rahmenentscheidungen, die in bezug auf den hereinkommenden Bitstrom getroffen werden müssen, d. h., die Schaltungen entscheiden, an welchen Punkten der Bitstrom unterteilt werden muß, um die Anfänge und Enden der diesen Strom bil-
YO 971 012 209881/0622
2227U8
denden Codewörter zu markieren. Die Schaltung stellt in Wirklichkeit die Länge eines jeden der Rahmen mit unterschiedlicher Länge fest, die die entsprechenden Codewörter enthalten. Die in der Einheit 202 jeweils verwendeten logischen Schaltungen hängen von dem Code ab, der benutzt wird. Fig. 8 zeigt die Rahmen-Logik für den (1,8) Code und Fig. 9 für den (2,7) Code.
Die Einheit 202 stellt vorher die Länge fest, die das decodierte Wort haben wird. Genauer gesagt stellt die Einheit 202 zuerst einmal die laufende Rahmenlänge fest, das ist die Länge des zu decodierenden Codewortes. Dann liefert die Einheit 202 an ihrem Ausgang eine binäre Anzeige für die durch das Verhältnis N/& der codierten Bits zu den originalen Bits dividierte Rahmenlänge. Dieser Längenwert wird in den Längenzähler 34 der Fig. IB zu gegebener Zeit eingegeben. Der Zählerstand des Längenzählers steuert dann die Decodieroperation, die im normalen Ablauf folgt.
Zur Decodieroperation gehört zuerst die parallele übertragung der in den ersten W Stellen des Eingaberegisters 200 gespeicherten Bits in das in Fig. IA gezeigte Argumentregister 204 zwecks Benutzung als Decodierargument. Mit diesem W Bits umfassenden Decodierargument wird dann eine Assoziation ausgeführt, um ein übereinstimmendes Codewort im Abschnitt 22 des Assoziativspeichers 20 zu finden. Wenn eine Übereinstimmung gefunden ist, wird das entsprechende decodierte Wort aus dem Speicherabschnitt 24 in ein Datenregister 206 ausgelesen, aus dem es anschließend bitseriell ausgelesen wird.
Sowohl das im Argumentregister 204 gespeicherte Codewort als auch das aus dem Datenregister 206 ausgelesene decodierte Wort haben veränderliche Längen. Die Anzahl der aus dem Datenregister 206 ausgelesenen Bits wird gesteuert durch die Länge des decodierten Wortes, die bereits durch die Einheit 202 festgestellt wurde. In gleicher Weise wird die Anzahl der neu in das Eingaberegister 200 einzugebenden Bits entsprechend der Rahmenlänge, festgestellt durch die Einheit 2O2r gesteuert. Beide Aktionen
YO 971 012
209881/062 2
2227U8
- 26 laufen unter Steuerung durch den Längenzähler ab.
In der Zeit, in welcher die Bits des decodierten Wortes aus dem Datenregister 206 ausgelesen und neue Bits in das Eingangsregister 200 eingegeben werden, wird vom Assoziativspeicher 20 weder eine Decodierfunktion noch eine Rahmenprüfung durch die Einheit 202 durchgeführt. Wie bereits erklärt wurde, werden diese beiden Funktionen nur einmal pro Rahmen ausgeführt, nachdem das gerade decodierte Wort durch ein neues Codewort ersetzt wird. Diese Rahmenprüfung wird durchgeführt, wenn dieses neue Codewort am Rahmenbezugspunkt registriert wurde (Fig. 8 oder Fig. 9).
Wenn das im Eingangsregister 200 registrierte Codewort aufgrund falscher Codierung oder Biterkennung falsch dargestellt wird, trifft die Einheit 202 trotzdem eine Entscheidung, die die beste Wahl darstellt, welche unter den gegebenen Umständen getroffen werden kann. Wenn zwischen dem falschen Codewort und einem der im Speicherteil 22 der Fig. IA gespeicherten codierten Wörter keine Übereinstimmung festgestellt werden kann, wird ein Pseudowort (welches angenommenermaßen aus lauter Nullen bestehen soll) aus dem Datenregister 206 ausgelesen. Ein neues Codewort wird zur Prüfung in das Eingangsregister 200 gebracht und die Decodieroperation läuft weiter, als ob gerade eine gültige Decodierung stattgefunden hätte. Das Feststellen des ersten gültigen Wortendes, welches dem fehlerhaften Teil der hereinkommenden Nachricht folgt, stellt die Synchronisation wieder her.
Die interne Schaltung der Einheit 202 in Fig. IB ist nach dem jeweils verwendeten Codierschema ausgelegt. Fig. 8 zeigt die logischen Schaltungen der Einheit 202 bei der Verwendung eines (1,8) Codes mit begrenzter Lauflänge, d. h. eines Codes, in welchem der Wert für d = 1 und für k = 8 ist. Fig. 9 zeigt die logischen Schaltungen der Einheit 202 für einen (2,7) Code mit begrenzter Lauflänge. Allgemein sollen diese logischen Schaltungen das gegenwärtig im Eingangsregister 200 gespeicherte Bitmuster daraufhin prüfen, ob ein Wortende an bestimmten strategischen Punkten in-
209881/0622
YO 971 012
2227U8
nerhalb dieser Bitreihe festgestellt werden kann. Bei der Durchführung dieser Prüfung werden die wertniedrigen Bitstellen ignoriert und versucht, irgendwo innerhalb des übrigen Teiles der im Register 200 gespeicherten Bitreihe ein Wortende zu finden. Wenn kein derartiges Wortende in diesem Teil der Reihe festgestellt werden kann, wird angenommen, daß ein Codewort von maximaler Länge (W Bits) im Register 200 gespeichert ist und die Decodieroperation wird dann entsprechend ausgeführt. Diese Annahme kann richtig oder falsch sein, unter den gegebenen Umständen stellt sie jedoch die einzig mögliche Entscheidung dar. Ist diese Entscheidung falsch, verläßt man sich auf die Wortendprüfungen, die durch die Einheit 202 beim nachfolgenden Teil des Bitstromes vorgenommen werden, nachdem dieser in das Eingaberegister 200 gelangt, um dort ein gültiges Wortende zu finden.
Fig. 8 zeigt die logischen Schaltungen der Einheit 202 für den (1,8) Code und Fig. 6 die Code-Umsetztabelle für diesen speziellen Code mit begrenzter Lauflänge, wobei zuerst zu beachten ist, daß alle codierten Wörter in diesem System Längen von drei, sechs oder neun Bits aufweisen, wobei neun die größte Codewortlänge ist. Außerdem endet jedes codierte Wort auf nicht weniger als eine und nicht mehr als drei Nullen. Somit kann allgemein von allen Codewörtern im (1,8) Code festgestellt werden, daß sie mindestens eine 0 in den Bitstellen 1, 4 oder 7 enthalten, abhängig von der Länge des Codewortes. Wenn eine 0 in Stelle 7 und eine 1 in den Stellen 8 oder 9 steht, wird vernünftigerweise angenommen, daß eines der drei Bit großen Codewörter in diesem System gegenwärtig in den Bitstellen 7, 8 und 9 des Eingangsregisters 200 gespeichert ist. Die in Fig. 8 gezeigte Schaltung erkennt diese Tatsache. Somit wird das O-Ausgangssignal von der Bitstelle 7 durch einen Inverter 208 invertiert und als 1-Eingangssignal einem UND-Glied 210 zugeleitet. Das 1-Ausgangssignal von der Bitstelle 8 oder 9 durchläuft ein ODER-Glied 212 und wird als zweites Eingangssignal dem UND-Glied 210 zugeleitet. Unter diesen Umständen wird auf der Ausgangsleitung A des UNDrGMedes 210 ein Signal erzeugt, welches hier als "Erfüllungs"-Signal; bezeichnet,-
209 8817 0 62 2
YO 971 012
2227U8
Wenn mit Bezug auf die in Fig. 6 gezeigte Codier-Tabelle in Bitstelle 4 in Fig. 8 gegenwärtig eine 0 und in den Bitstellen 5, und 7 eine 1 gespeichert ist, wird vernünftigerweise angenommen, daß eines der vier sechs Bit großen Codewörter gegenwärtig in den Stellen 4 bis 9 des Eingangsregisters 200 gespeichert ist. Unter diesen Bedingungen wird das O-Ausgangssignal der Bitstelle 4 durch den in Fig. 8 gezeigten Inverter 213 invertiert und in dieser Form dem UND-Glied 214 zugeleitet. Das 1-Ausgangssignal in Stelle 5, 6 oder 7 durchläuft ein ODER-Glied 216 und wird dem anderen Eingang des UND-Gliedes zugeführt, welches daraufhin ein Ausgangssignal auf der B-Leitung erzeugt, welches hier ebenfalls als "Erfüllungs"-Signal bezeichnet wird.
Mit den drei Bitstellen 1, 2 und 3 des Eingangsregisters 2OO sind keine logischen Schaltungen verbunden. Wenn auf der A-Leitung oder der B-Leitung kein Erfüllungssignal erzeugt wird, besteht die einzig mögliche Alternative darin, die gesamte neun Bit große, in den Stellen 1 bis 9 des Registers 200 gespeicherte Bitfolge als ein neun Bit großes Codewort zu behandeln, ungeachtet dessen, ob diese Annahme richtig ist oder nicht. Es hat also keinen Zweck, die Stelle 1 auf ein Wortende zu überprüfen. Wenn die Folge von in den Stellen 1 bis 9 des Registers gespeicherten Bits kein echtes Codewort ist, enthält die nächste Folge von neun Bits aller Wahrscheinlichkeit nach ein gültiges Wortende.
Die im unteren Teil der Fig. 8 wiedergegebene Rahmen-Entscheidungstabelle1 bezeichnet die Rahmen-Entscheidungen, die unter verschiedenen Umständen, abhängig von der Existenz oder dem Fehlen der Erfüllungssignale auf den Leitungen A und B von der Einheit 202 getroffen werden. Wenn kein Signal auf einer der Leitungen A oder B vorhanden ist, wird, wie gerade gesagt, angenommen, daß die Rahmenlänge neun Bits beträgt. Ein Erfüllungssignal nur auf der Leitung B bezeichnet eine Rahmenlänge von sechs Bits,
209881/0622
ein Erfüllungssignal nur auf der Leitung A eine Rahmenlänge von drei Bits. Wenn ein Erfüllungssignal auf der Leitung A und auf der Leitung B gleichzeitig erscheint, wird dadurch eine in mindestens einer der beiden Gruppen der Bitstellen 4 bis 6 und 7 bis 9 vorliegende Fehlerbedingung bezeichnet. Diese Frage nach der Fehlerbedingung wird bei der Konstruktion der Schaltung dadurch gelöst, daß man annimmt, daß der Fehler innerhalb der Gruppe der Bitstellen 7, 8 und 9 auftritt, so daß nur diese drei Bits ersetzt werden müssen. Es wird daher die Rahmenlänge 3 angenommen, wenn Erfüllungssignale auf den beiden Leitungen A und B festgestellt werden.
Der im unteren Teil der in Fig. 8 dargestellten Einheit 202 allgemein mit der Zahl- 218 bezeichnete Teil der logischen Schaltungen setzt das Signalmuster auf den Leitungen A und B in einen Wert für den Längenzähler um, der in diesem Fall 2/3 der angegebenen Rahmenlänge beträgt. Der Wert im Längenzähler gibt bekanntlich die Länge des decodierten Wortes an, und beim (1,8) Code mit begrenzter Lauflänge ist nach der vorliegenden Erfindung die decodierte Wortlänge immer zwei Drittel der Länge des entsprechenden codierten Wortes. Bei der Decodieroperation wird das Ausgangssignal der Schaltung 218 zum geeigneten Zeitpunkt über eine Torschaltung 220 in den Längenzähler 34 eingegeben. Wenn z. B. die angegebene Rahmenlänge sechs Bits beträgt, dann wird der binäre Wert 100 oder dezimal 4 in die drei untersten Bitstellen des Längenzählers 34 eingegeben. Die entsprechenden Dezimalwerte dieser drei Bitstellen im Zähler 34 sind in Fig. 8 angegeben.
In das in Fig. 8 gezeigte ODER-Glied 212 führen drei Eingangsleitungen, die im vorliegenden Falle von den entsprechenden Bitstellen 8, 9 und 10 des Eingangsregisters 200 ausgehen. Die Stelle 10 liegt über dem Rahmenbezugspunkt und enthält das letzte Bit des vorher decodierten Wortes. Wenn die Codewörter richtig codiert und erkannt wurden, steht in der Registerstelle 10 immer eine 0. Steht in Stelle IO jedoch einmal eine 1* so bedeutet das, daß entweder das Bit falsch ist oder daß ein Rahmenfehler aufge-
209881/0622
YO 971 012
2227ΊΑ8
treten ist, durch welchen die 1 in dieser Stelle erscheint. Unter diesen Umständen kann man nicht sicher sein, daß das in Stelle gespeicherte Bit tatsächlich der Anfang eines neuen Codewortes ist. Wenn z. B. angenommen wird, daß die Bitfolge OOIQOO in den Stellen 9 bis 4 des Registers 200 gespeichert ist und daß eine in Stelle 10 steht, so könnte normalerweise angenommen werden, daß die in den Stellen 9 bis 4 gespeicherten Bits ein sechs Bit großes Codewort darstellen, welches in Stelle 9 beginnt und in Stelle 4 endet. Die 1 in Stelle 10 sagt jedoch, daß das nicht richtig sein kann. Wenn also ein Erfüllungssignal nur auf der Leitung B erzeugt würde, kann das eine Fehleranzeige für die Rahmenlänge sein. Leitet man jedoch das Ausgangssignal der Stelle 10 über ein ODER-Glied 212 dem UND-Glied 210 zu, so wird dadurch auch ein Erfüllungssignal auf der Leitung A erzeugt, so daß die Rahmenlänge mit drei und nicht mit sechs Bits angegeben wird. Setzt man diese kleinere Bitzahl im Register 200 bei dieser Fehlerbedingung ein, dann erfolgt die nächste Wortendeprüfung bereits, wenn nur drei Bits aus dem Register 200 geschoben wurden und nicht erst nach sechs Bits. Dadurch wird das Risiko vermieden, drei Bits zu zerstören, die nicht fehlerhaft waren.
Aus der in Fig. 7 gezeigten Code-Umsetztabelle für den (2,7) Code geht hervor, daß alle Codewörter in diesem System bei richtiger Codierung entweder vier, sechs oder acht Bits enthalten. Außerdem endet jedes gültige Codewort in diesem System auf nicht weniger als zwei und nicht mehr als drei Nullen. Fig. 9 zeigt die Einheit 202 für den (2,7) Code. Unter normalen Bedingungen kann man erwarten, daß zwei Nullen in den Stellen 1 und 2 oder 3 und 4 oder 5 und 6 des Eingangsregisters 200 gespeichert sind. Das Vorhandensein solcher Nullen-Paare an den angegebenen Stellen zeigt die Möglichkeit an, daß ein gültiges Codewort an einer dieser Stellen endet. Nullen können auch in den Stellen 7 und 8 erscheinen, unter diesen Umständen sollten jedoch in den Stellen 9 und 10 auch Nullen gespeichert sein. Normalerweise enthalten die Stellen 9 und 10 die beiden letzten Bits des vorhergehenden Codewortes, das decodiert wurde, und diese Bits sollten Nullen sein, wenn kein
V0 971 012 209881/0622
Fehler gemacht wurde. In den Stellen 7 und 8 befinden sich normalerweise die beiden ersten Bits des laufenden zu codierenden Codewortes. Die bei einem Fehler in der Codewortdarstellung vorherrschenden Bedingungen werden anschließend beschrieben.
Die in Fig. 9 dargestellte Schaltung prüft die Stelle 3 oder die Stelle 5 des Eingangsregisters 200 auf ein gültiges Wortende und die Stelle 7 auf ein ungültiges Wortende. Die Stelle 1 wird nicht geprüft, weil angenommen wird, daß das im Register 200 gespeicherte Codewort ein acht Bit großes Wort ist, wenn keine der beiden anderen Prüfbedingungen erfüllt ist. Die Stelle 1 wird nicht auf ein Wortende geprüft, da in jedem Fall die in den Stellen 1 bis des Registers 200 gespeicherten Bits für die nächste Decodieroperation ersetzt werden müssen, wenn die anderen Wortende-Prüfungsbedingungen nicht erfüllt sind.
Im einzelnen werden die Ausgangssignale der Stellen 3 und 4 des Registers 200 in der in Fig. 9 dargestellten Einheit 202 invertiert durch die Inverter 224 und 226 und dem UND-Glied 228 zugeleitet. Das Ausgangssignal der Stelle 5 oder 6 kann außerdem über das ODER-Glied 230 als zusätzliches Eingangssignal dem UND-Glied 228 zugeleitet werden.
Wenn Nullen in den beiden Stellen 3 und 4 und in einer der Stellen 5 oder 6 eine Eins stehen, erzeugt das UND-Glied 228 ein Erfüllungssignal auf seiner Ausgangsleitung C. Aus der Rahmen-Entscheidungstabelle im unteren Teil der Fig. 9 ist zu ersehen, daß ein Erfüllungssignal auf der Leitung C eine Rahmenlänge von 6 Bits bezeichnet. Das entspricht dem Zählerstand 3 des Längenzählers 3.
Auf ähnliche Weise haben eine 0 in den Stellen 5 und 6 und eine 1 in einer der Stellen 7 oder 8 die Erzeugung eines Erfüllungssignales auf der Leitung B mittels des UND-Gliedes 236 zur Folge. Wenn auf der Leitung B ein Signal erscheint, kann bei diesem speziellen Schema nicht auch gleichzeitig ein Signal auf der Leitung
YO 971 012 2U988 1/0622
2227U8
C oder der Leitung A (noch zu beschreiben) erscheinen. Ein Signal auf der Leitung B gibt an, daß ein Codewort mit einer Rahmenlänge von vier Bits festgestellt wurde und in den Stellen 5 bis 8 des Registers 200 gespeichert 1st. Die Rahmenlänge 4 entspricht einer Längenzählereinstellung 2.
Der Teil der in Fig. 9 mit 242 bezeichneten Schaltung wandelt die Erfüllungssignale auf den Leitungen A, B und C in äquivalente Werte für den Längenzähler nach der Rahmen-Entscheidungstabelle um. Zu gegebener Zeit erhält also die Torschaltung 220 Impulse, um die Ausgangssignale der Schaltung 242 an den Längenzähler 34 weiterzuleiten.
Das UND-Glied 240 erzeugt ein Erfüllungssignal auf der Leitung Ar wenn in den Stellen 7 und 8 Nullen und in einer der Stellen 9 und 10 des Eingangsregisters 200 eine Eins erscheint. Damit wird eine Fehlerbedingung angezeigt, weil bei richtiger Codierung und Decodierung der Wörter diese spezielle Bitkombination in den Stellen 7 bis 10 des Registers 200 nicht erscheint. Wenn z.B. angenommen wird, daß die Bitfolge 001000 in den Stellen 8-3 des Eingangsregisters 200 und eine 1 in einer der Stellen 9 oder 10 gespeichert ist, so wird die Bitfolge 001000 in den Stellen 8-3 normalerweise als ein 6 Bit großes Codewort interpretiert, welches ein Erftillungssignal auf der Leitung C hervorruft. Da jedoch in den Stellen 9 oder 10 eine Eins steht, heißt das, daß dieser Fall nicht vorliegen kann. Trotzdem ist die Schaltung so ausgelegt, daß sie einen Zweifel an der Möglichkeit zuläßt, daß ein gültiges Wortende in Bitposition 3 vorliegt. Somit haben gleichzeitig auf den Leitungen A und C auftretende Signale denselben Effekt wie ein Signal auf der Leitung C alleine.
Wenn ein Signal nur auf der Leitung A erscheint, heißt das, daß in der gerade vorher decodierten Codegruppe ein Fehler aufgetreten ist und daß die Registerstellen 1 bis 8 nicht ein Codewort mit einer Länge von 4 oder 6 Bits enthalten. Es besteht die Möglichkeit, daß ein Codewort mit einer Länge von 8 Bits in die-
209881/0622
YO 971 012
sen Stellen gespeichert ist. In diesem Fall wird jedoch keine Annahme zugunsten eines 8 Bit großen Codewortes gemacht, sondern statt dessen willkürlich angenommen, daß die Rahmenlänge 2 Bits beträgt und es wird ein weiterer Versuch gemacht, ein gültiges Codewortende zu finden, nachdem 2 Bits in das Register 200 eingegeben wurden.
Diese Rahmen-Entscheidungen sind bis zu einem gewissen Ausmaß insofern willkürlich, als die Verwendung des A-Signales betroffen ist. Die Erfahrung mag für eine andere Wahl der Rahmen-Entscheidungen sprechen, wenn eine Fehlerbedingung festgestellt wird. Diese Möglichkeiten stehen jedoch dem Konstrukteur des Gerätes frei.
Das Decodierverfahren wird anschließend genauer im Zusammenhang mit dem in Fig. 3 gezeigten Ablaufdiagramm beschrieben. Um das Decodierverfahren einzuleiten, wird ein Startimpuls über ein in Fig. 5 gezeigtes ODER-Glied 250 der monostabilen Kippschaltung 252 im Decodier-Taktgeber zugeführt. Wenn diese monostabile Kippschaltung 252 in den instabilen Zustand gelangt, erzeugt sie ein Taktsignal Dl, welches verschiedene Aktionen auslöst. Als erstes wird die Menge N in den Eingabebitzähler und die Menge α in den Ausgabebitzähler in Fig. IB eingegeben. Für alle aus dem Decodier-Datenregister 206 ausgelesenen α Bits wird eine entsprechende Anzahl von N Bits in das Eingangsregister 200 eingegeben. Als zweites wird das Ende-Flipflop 44 in Fig. IA auf Null rückgestellt und dann wird der Dl-Taktimpuls der in den Fign. IB, 8 und 9 gezeigten Torschaltung 220 zugeleitet, um den Längenzähler 34 auf den Längenwert des decodierten Wortes einzustellen, der durch die Einheit 202, basierend auf der im Eingangsregister 200 gespeicherten Information, festgestellt wurde.
An diesem Punkt sollte erklärt werden, daß das Eingangsregister 200 am Ende eines Decodierlaufes immer (lauter Nullen) gelöscht ist (lauter Nullen enthält). Es wird angenommen, daß das Register 200 am Anfang eines neuen Decodierlaufes sich in diesem Zu-
209881/0622
YO 971 012
2227H8
stand befindet. Unter diesen Umständen wird der Inhalt des Eingangsregisters 200 als ein Codewort von maximaler Länge behandelt, welches aus lauter Nullen besteht. Aus den Pign. 8 und 9 ist zu ersehen, daß das Fehlen des Erfüllungssignales bei den durch die Einheit 202 durchgeführten Wortendprüfungen eine maximale Wortlänge angibt. Das System kann natürlich für eine andere Betriebsart so ausgelegt werden, daß die Decodieroperation erst startet, wenn die ersten W Bits in das Eingangsregister eingegeben wurden. Dieser Punkt wird jedoch als weniger bedeutende Einzelheit angesehen.
Wenn die in Fig. 5 gezeigte monostabile Kippschaltung 252 in den stabilen Zustand zurückkehrt, bringt sie die monostabile Kippschaltung 254 in den instabilen Zustand und erzeugt dadurch den Taktimpuls D2, der die in Fig. IB gezeigte Torschaltung 256 öffnet und die in den wertniederen W Bitstellen des Eingangsregisters 200 gespeicherte Information parallel zum Decodier-Argumentregister 204 in Fig. IA überträgt. Der Taktimpuls D2 wird außerdem der in den Fign. IA und 12 gezeigten Leitung 84 zugeführt und bringt die Übereinstimmungsanzeiger 86 in den Assoziativspeichersteuerschaltungen 80 in den 1-Zustand. Dadurch wird der Assoziativspeicher 20 auf eine Suchoperation an dem im Argumentregister 204 gespeicherten Argument vorbereitet.
Wenn die monostabile Kippschaltung 254 in den stabilen Zustand zurückkehrt, bringt sie die monostabile Kippschaltung 258 in den instabilen Zustand und erzeugt den Taktimpuls D3. Dieser Impuls wird der Assoziationsleitung für das Argumentregister 204 zugeführt und damit die Suchoperation eingeleitet. Jede Zellenzeile im Assoziativspeicherteil 22, Fign. IA, 6 oder 7, die kein Codewort speichert, welches mit dem Argument im Register 204 übereinstimmt, erzeugt ein Ungleichheitsignal auf der entsprechenden Leitung 90 in Fig. 12. Der zugehörige Übereinstimmungsanzeiger 86 wird daraufhin in den O-Zustand rückgestellt. Das übereinstimmende Codewort, falls ein solches vorhanden ist, wird in der Zellenzeile gespeichert, dessen Übereinstimmungsanzeiger 86 im
209831 /0622
YO 971 012
2227U8
1-Zustand bleibt.
Zu jedem in Fig. 12 gezeigten Übereinstimmungsanzeiger gehört ein UND-Glied 260, dessen einer Eingang mit dem O-Ausgang des zugehörigen Übereinstimmungsanzeigers verbunden ist. Wenn der übereinstimmungsanzeiger in den O-Zustand rückgesetzt wurde, wird dadurch das entsprechende UND-Glied 260 teilweise vorbereitet. Die möglichen Auswirkungen dieses Vorganges werden jetzt beschrieben.
Wenn die monostabile Kippschaltung 258 in Fig. 5 in den stabilen Zustand zurückkehrt, bringt sie die monostabile Kippschaltung in den instabilen Zustand und erzeugt den Taktimpuls D4. Dieser Impuls wird der in den Fign. IA und 12 gezeigten Leseleitung der Assoziativspeichersteuerschaltungen 80 zugeführt. Für jede Zeile von Speicherzellen im Assoziativspeicher 20 befindet sich entweder die eine oder die andere der beiden UND-Schaltungen und 260, die dieser Zeile zugeordnet sind, im leitenden Zustand, abhängig von dem Zustand des zugehörigen Übereinstimmungsanzeigers 86. Wenn der Übereinstimmungsanzeiger 86 im 1-Zustand ist, wird die durch die von der Leseleitung 98, das zugehörige UND-Glied 100 und die entsprechende Leseleitung 102 gebildete geschlossene Schaltung vervollständigt. Gleichzeitig wird der Taktimpuls D4 der in Fig. IA dargestellten Torschaltung 264 zugeführt und dadurch das dem übereinstimmenden Codewort entsprechende decodierte Wort aus dem Speicherteil 24 in das Decodier-Datenregister 206 ausgelesen. Das Datenregister 206 enthält also jetzt das decodierte Wort, welches dem Codewort im Argumentregister 204 entspricht.
Wie bereits gesagt wurde, ist nicht sichergestellt, daß das im Register 204 gespeicherte Argument mit einem der im Teil 22 gespeicherten Codewörter übereinstimmt. Wenn ein übereinstimmendes Codewort fehlt, wird das durch die Rückstellung aller in Fig. gezeigten Übereinstimmungsanzeiger 86 in den O-Zustand angezeigt und dadurch alle UND-Glieder 260 durchgeschaltet. Unter diesen Umständen wird eine Serienschaltung von der Leseleitung 98 über
vo97io12 209881/0622
2227H8
alle UND-Glieder 260 zu der die Nichtübereinstimmung anzeigenden Leitung 266 hergestellt. Sobald die Leitung 266 erregt wird, wird ein Pseudowort (Fig. 6 oder 7) aus dem Speicherteil 24 in das in Fig. IA gezeigte Datenregister 206 ausgelesen. Im vorliegenden Beispiel soll dieses Pseudowort lauter Nullen enthalten, es kann jedoch auch ein beliebiges Bitmuster enthalten, welches keine Störung des Systems verursacht.
Das decodierte Wort steht jetzt im Datenregister 206. Die LMnge des decodierten Wortes wird durch den laufenden Wert im Längenzähler 34 angegeben. Jetzt müssen aus dem Datenregister 206 so viele Bits ausgelesen werden, wie durch den Zählerstand des Längenzählers 34 angegeben werden. Dementsprechend muß eine angemessene Anzahl neuer Bits aus dem codierten Bitstrom in das Eingangsregister 200 in Fig. IB eingegeben werden. Das Ausgeben der Bits aus dem Datenregister 206 und das Eingeben von Bits in das Eingangsregister 200 erfolgen so, daß für je α Bits, die aus dem Register 206 ausgelesen werden, N Bits in das Eingangsregister 200 eingelesen werden. Dieses Verhältnis von Ausgabezu Eingabebits wird aufrechterhalten, bis das decodierte Wort vollständig aus dem Register 206 ausgelesen wurde. Dieses Verhältnis wird wiedergegeben durch die Beziehung zwischen dem laufenden Zählerstand des Ausgabebitzählers 36 zum laufenden Zählerstand des Eingabebitzählers 38, Fig. IB.
Aus Fig. 5 ist zu ersehen, daß bei Rückkehr der monostabilen Kippschaltung 262 in den stabilen Zustand ein Impuls über die entsprechenden ODER-Glieder 268, 270 bzw. 272 den monostabilen Kippschaltungen 274 und 276 zugeleitet und dadurch die Taktimpulse D5 bzw. D8 erzeugt werden. Dadurch werden zwei Teil-Schrittfolgen eingeleitet, die aus den Schritten D5 bis D7 in Fig. 3 bzw. D8 bis DlO bestehen und getrennt betrachtet werden.
Der Taktimpuls D5 wird der in Fig. IA gezeigten Torschaltung zugeführt und bewirkt das Ausgeben des ersten Bits des im Register 206 gespeicherten decodierten Wortes als Teil des decodier-
209881/0622
YO 971 012
_ 37 - 2227H8
ten Bitstromes. Wenn die in Fig. 5 gezeigte monostabile Kippschaltung 274 in den stabilen Zustand zurückkehrt, bringt sie die monostabile Kippschaltung 280 in den instabilen Zustand und erzeugt einen Taktimpuls D6, wodurch 3 Vorgänge ausgelöst werden. Zuerst erregt der Taktimpuls D6 eine Schiebeeinrichtung, die den Inhalt des Datenregister 206 um ein Bit nach links verschiebt. Dann bewirkt der Taktimpuls, daß der Zählerstand des in Fig. IB gezeigten Ausgabebitzählers 36 und als drittes, daß der Zählerstand des Längenzählers 34, beide in Fig. IB gezeigt, um 1 vermindert wird.
Wenn die in Fig. 5 gezeigte monostabile Kippschaltung 280 in den stabilen Zustand zurückkehrt, bringt sie die monostabile Kippschaltung 282 in den instabilen Zustand und erzeugt den Taktimpuls D7. Dieser wird der in Fig. IB gezeigten Torschaltung 284 zugeführt, die den Ausgang des zum Ausgangsbitzähler 36 gehörenden Umsetzers 146 abfragt. Wenn der Zählerstand des Ausgabebitzählers gegenwärtig von 0 verschieden ist, gelangt das Signal auf der Ausgangsleitung 150 über die Torschaltung 284, eine in den Fign. IB und 5 gezeigten Leitung 286 und das ODER-Glied 270 zur monostabilen Kippschaltung 274, welche dadurch in den instabilen Zustand gelangt. Dadurch wird erneut die Reihenfolge der in Fig. 2 gezeigten Schritte D5 bis D7 eingeleitet. Dieser Zyklus wird wiederholt, bis der Zählerstand des Ausgabebitzählers Null beträgt. Ist das der Fall, dann verursacht die nächste Erzeugung des Taktimpulses D7 einen Stromfluß von der O-Ausgangsleitung des Umsetzers 146 über die Torschaltung 284, die Leitung 288 und das ODER-Glied 290 zu einem der Eingänge des UND-Gliedes 29 2 in Fig. IB. Dieser Vorgang bleibt jedoch ohne Wirkung, wenn der Zählerstand des Eingabebitzählers 38 noch nicht Null beträgt.
Wenn die monostabile Kippschaltung 276 in den instabilen Zustand gelangt, erzeugt sie den Taktimpuls D8, wie aus den Fign. 2 und zu ersehen ist. Dadurch wird die Schiebeeinrichtung für das Eingangsregister 200 in Fig. IB erregt und der Inhalt dieses Registers um 1 Bit nach links verschoben. Wenn die monostabile Kipp-
Yo 971 012 209881/0622
2227U8
— 3σ —
schaltung 276 in den stabilen Zustand zurückkehrt, bringt sie die monostabile Kippschaltung 294 in den instabilen Zustand und erzeugt den Taktimpuls D9. Dieser Impuls wird einer in Fig. IB gezeigten Torschaltung 296 zugeführt und dadurch ein Bit aus dem codierten Bitstrom in die niedrigste Stelle des Eingangsregisters 200 gebracht. Gleichzeitig wird der Taktimpuls D9 an die Dekrementiereinrichtung für den Eingabebitzähler 38 angelegt und dessen Zählerstand um 1 herabgesetzt.
Wenn die monostabile Kippschaltung 294 in den stabilen Zustand zurückkehrt, bringt sie die monostabile Kippschaltung 298 in den instabilen Zustand, die einen Taktimpuls DlO erzeugt und den Zählerstand des Eingabebitzählers 38 prüft. Wenn N Informationsbits noch nicht in das Eingangsregister 200 eingegeben wurden, hat der Eingabebitzähler noch nicht die Stellung 0 erreicht. Daher wird die Ausgäbeleitung 124 erregt und wenn der Taktimpuls DlO an die in Fig. IB gezeigte Torschaltung 300 angelegt wird, wird das Signal auf der Leitung 124 über die Torschaltung 300, die Leitung 302, Fig. IB und 5, sowie das ODER-Glied 272 der monostabilen Kippschaltung 276 zugeführt, die dadurch wieder in den instabilen Zustand gelangt. Dadurch wird erneut die Reihenfolge der in Fig. 2 gezeigten Schritte D8 bis DlO eingeleitet und dieser Schrittzyklus wird wiederholt, bis der Eingabebitzähler die Stellung 0 erreicht hat. Wenn diese Bedingung erfüllt ist, sind N Informationsbits in das Eingaberegister 200 eingegeben worden und entsprechen α Informationsbits, die aus dem Datenregister 206 ausgelesen worden sind.
Wenn der Taktimpuls DlO an die in Fig. IB gezeigte Torschaltung 300 zu einem Zeitpunkt angelegt wird, an welchem der Zählerstand des Eingabebitzählers 0 ist, so wird das Signal auf der Leitung 126 über die Torschaltung 300, Leitung 304 und das ODER-Glied 290 dem UND-Glied 292 zugeführt. Zu diesem Zeitpunkt sind die Ausgabebitzählerleitung 150 und die Eingabebitzählerleitung 126 erregt und zeigen damit an, daß beide Bitzähler auf 0 stehen. Das UND-Glied 292 schaltet daher durch und erregt die Leitung 306 in den
209881/0622
YO 971 012
2227U8
Fign. IB und 5r die zur monostabilen Kippschaltung 308 führt. Die monostabile Kippschaltung kommt daher in den instabilen Zustand und erzeugt den Taktimpuls DIl zur Prüfung des Zählerstandes des Längenzählers 34 in Fig. IB.
Wenn der Längenzähler noch nicht auf 0 steht, bedeutet das, daß das Auslesen des decodierten Wortes noch nicht abgeschlossen ist. Somit muß ein weiterer Satz von α Bits aus dem Datenregister aus- und ein entsprechender Satz von N Bits in das Eingaberegister 200 eingelesen werden. Wenn also der Taktimpuls DIl an die Torschaltung 310 in Fig. IB zu einem Zeitpunkt angelegt wird, an welchem die Leitung 66 des Längenzähler-Umsetzers 62 erregt ist, dann erhält die in Fig. 5 gezeigte monostabile Kippschaltung über die Torschaltung 310 und die Leitung 312 einen Impuls, der sie in den instabilen Zustand bringt und dadurch den Taktimpuls D12 erzeugt. Durch den Impuls D12 wird wieder die Zahl N in den Eingabebitzähler 38 und die Zahl α wieder in den Ausgabebitzähler 36 der Fig. IB eingegeben.
Die Reihenfolge der Schritte D5 bis D12 in Fig. 2 wird wiederholt, bis der Zählerstand des Längenzählers auf den Wert 0 heruntergezählt worden ist. Die Erzeugung des Taktimpulses DIl zu einem Zeitpunkt, an welchem der Zählerstand des Längenzählers 0 beträgt, veranlaßt, daß ein Signal auf der O-Ausgangsleitung 64 des Längenzählers 34 über eine Torschaltung 310 und die Leitung 316 der monostabilen Kippschaltung 318 zugeleitet wird, die in den instabilen Zustand gelangt und dadurch den Taktimpuls D13 erzeugt und eine Prüfung einleitet, mit welcher festgestellt wird, ob das letzte Wort der Nachricht decodiert worden ist.
Aus Fig. IA ist zu ersehen, daß zum Decodier-Datenregister 206 eine Einheit 320 gehört, die die Darstellung des Endes des Datensatzes (EDD-Darstellung) im Datenregister 206 feststellt. Hierbei handelt es sich um das decodierte Äquivalent der codierten EDD-Darstellung, die die übertragung der codierten Daten beendet. Diese EDD-Darstellung kann jedes der decodierten Wörter in der
209881/0622
-40- 2227H8
Codeumsetztabelle bilden (Fig. 6 oder 7). Eine Fehlerbedingung kann die EDD-Darsteilung natürlich so verändern, daß sie als solche nicht erkannt wird, wenn sie in das Datenregister 206 eingelesen wird. Diese unerwünschte Bedingung kann durch verschiedene Maßnahmen verhindert werden. Man kann z.B. mehrere EDD-Darstellungen übertragen, wobei die Wahrscheinlichkeit besteht, daß mindestens eine von ihnen richtig interpretiert wird. Eine"andere Alternative besteht darin, die PseudoWörter zu zählen, die nacheinander aus dem Datenregister 206 ausgelesen werden und dann die Decodieroperationen zu beenden, wenn diese Zahl einen vorgegebenen Wert überschreitet.
Im vorliegenden Beispiel wird angenommen, daß ein EDD-Code richtig interpretiert und durch den EDD-Detektor 320 in Fig. IA festgestellt wurde. Von der Ausgangsleitung 322 des Detektors 320 läuft dann ein Signal über das ODER-Glied 184 zum 1-Eingang des Ende-Flipflop 44 und bringt dieses Flipflop in den 1-Zustand. Unter diesen Umständen wird die ein Signal auf der Leitung 188 über die Torschaltung 324 einer geeigneten Einrichtung zum Beenden der Decodieroperationen zugeleitet, wenn der Taktimpuls Dl3 durch die monostabile Kippschaltung 318 in Fig. 5 erzeugt und an die Torschaltung 324 in Fig. IA angelegt wird.
Wenn der EDD-Code noch nicht zu dem Zeitpunkt festgestellt wurde, an welchem der Taktimpuls D13 erzeugt wird, gelangt ein Signal von der O-Ausgangsseite des Ende-Flipflop 44 in Fig. IA über die Leitung 186, die Torschaltung 324, die Leitung 326 und das ODER-Glied 250 zur monostabilen Kippschaltung 252 in Fig. 5. Wenn die monostabile Kippschaltung 252 in den instabilen Zustand gelangt, erzeugt sie einen neuen Taktimpuls Dl und leitet dadurch ein neues Decodierverfahren zur Decodierung des nächsten Codewortes ein, welches jetzt inzwischen richtig im Eingangsregister 200 steht. Dieses Verfahren wird wiederholt, bis das letzte Codewort decodiert wurde.
Fig. 10 zeigt als Beispiel eine Decodieroperation, die unter
YO 971 012 209881/0622
erschwerten Bedingungen ausgeführt wurde. Der (1,8) Code und die (1,8) Rahmen-Schaltung in Fig. 8 werden für dieses Beispiel benutzt. Wie im oberen Teil der Fig. 10 gezeigt ist, sind drei Fehler beim Erkennen der Bits aufgetreten. Der erste Fehler führt zur fälschlichen Interpretation eines sechs Bit großen Codewortes als zwei drei Bit große Codewörter* Die Synchronisation wird jedoch bei der zweiten Rahmen-Entscheidung wieder hergestellt. Sie geht wieder verloren aufgrund von zwei Fehlern, die die falsche^Interpretation zweier drei Bit großer Codewörter als, ein sechs Bit großes Codewort veranlassen. Die Synchronisation wird wiedergewonnen mit der dritten Rahmen-Entscheidung. Die durch das Eingangsregister durchgeführten Eingabe- und Schiebeoperationen sind tabellarisch im unteren Teil der Fig. 10 dargestellt. Es wird angenommen, daß im Intervall TO das Eingangsregister lauter Nullen enthält. Die Rahmen-Schaltung (Fig. 8) interpretiert diese Stellung als ein neun Bit großes Codewort, um die ersten neun Bits der echten Codenachricht in das Eingangsregister zu bringen (Intervall T9). Es folgen dann die Rahmen-Entscheidungen, die den Bitstrom in Codewörter der Längen 3, 3, 6, 6 usw. aufteilen.
Fig. 10 zeigt, daß die durch die Einheit 202 der Fig. IB und den Assoziativspeicher 20 der Fig. IA ausgeführten Decodierfunktionen während der Periode ausgesetzt werden, während der jeder neue Rahmen in die richtige Ausrichtung relativ zum Rahmenbezügspunkt gebracht wird, bevor er decodiert wird; Dadurch braucht das Bitmuster des neuen Rahmens während seinem schrittweisen Aufbau im Schieberegister 200 nicht immer wieder geprüft zu werden, wodurch wertvolle Zeit gespart wird. Die Rahmen-Entscheidung wird nur einmal pro Rahmen vorgenommen am Anfang der pecodieroperation, ohne daß diese dadurch irgendwie verzögert wird.
Fig. 11 zeigt eine Decodieroperätion für ein angenommenes Beispiel im (2,7) Code (Fig. 7 und 9). Durch zwei Fehler bei der Biterkennung wird eine Bitfolge, die nacheinander einen vier Bit-Code, einen sechs Bit-Code und einen acht Bit-Code enthält, in Rahmen von einem acht Bit-Code/ einem folgenden sechs Bit-
ϊο 97X0X2 209881/(1622
_ 42 - 2227H8
Code und wiederum einem vier Bit-Code eingeteilt. Nach der dritten Rahmen-Entscheidung ist die Synchronisation wieder hergestellt.
Die obigen Beispiele zeigen die Schnelligkeit, mit der die Wiedergewinnung der Synchronisation durch das vorliegende System erfolgt, auch unter Bedingungen, die sonst ungewöhnlich schwere Rahmen-Probleme aufwerfen. Diese Lösung ergibt sich aus der Verwenduha von Codes mit begrenzter Lauflänge in dem hier beschriebenen eindeutigen Format mit veränderlicher Länge.
Die Auswahl der Bitstellen des Eingangsregisters 200, Fign. 8 und 9, an denen die logischen UND- und ODER-Prüfungen durch die Einheit 202 vorgenommen werden, hängt ab von den im verwendeten Codesystem benutzten Wortende-Bitmustern. Die Festlegung dieser Prüfpunkte kann zumindestens für den hier betrachteten (1,8) Code und den (2,7) Code folgendermaßen verallgemeinert werden. Wenn Z die Höchstzahl aufeinanderfolgender Nullen und Y die Mindestzahl aufeinanderfolgender Nullen ist, auf die ein Codewort im gegebenen Codesystem enden kann, wenn weiterhin N die kleinste ganze Zahl ist, die bei Division durch eine andere ganze Zahl (α) das Verhältnis angibt, in welchem die Anzahl codierter Bits zur Anzahl der Originalbits im jeweils verwendeten Code steht, wenn weiterhin eine Gruppe von Bitspeicherstellen im Eingangsregister 200 so definiert ist, daß jede Gruppe mit der Stelle beginnt, deren Zähl N+i+(i-l) (Z-Y) ist und mit der Stelle endet, deren Zahl Z plus der besagten Anfangszahl 1st, wobei "i" ein Glied eines Satzes von ganzen Zahlen einschließlich 1 und jeder höheren ganzen Zahl ist, deren Wert eine Anfangsstelle definiert, deren Zahl nicht den Wert W übersteigt (die Höchstlänge eines Codewortes im be- '^n trachteten Codesystem), dann ist für jede so definierte Gruppe eine UND-Prüfung festzulegen, deren Eingangssignale die entsprechenden Inversionen der in den Y-niederwertigsten Stellen der entsprechenden Gruppe gespeicherten Bits zusammen mit de» Ergebnis der ODER-Verknüpfung der verbleibenden Bits innerhalb dieser Gruppe umfassen.
971 oi2 209881/062.2
2227H8
Wendet man die so festgelegte Regel auf die Einheit 202 für den (1,8) Code, Fign. 8 und 6, an, so ist zunächst festzustellen, daß die Höchstzahl Z der Endnullen in einem codierten Wort 3 beträgt und die Mindestzahl von Endnullen 1* In diesem Codesystem ist das Verhältnis Ν/α =3:2; somit ist H =3. Wenn in dem Ausdruck N+i+(i-l) (Z-Y) i = 1 ist, so ergibt sich als Startstelle für die erste Gruppe die Stelle Nummer 4. Die Endstelle dieser Gruppe ist 4+Z oder 7. Die Stellen 4 bis 7 des Eingangsregisters 200 in Fig. 8 bilden also die erste Gruppe von Prüfstellen. Die untersten Υ Stellen dieser Gruppe (in diesem Fall die Stelle 4, da Y = 1 ist) liefern die invertierten Eingangssignale für das UND-Glied 214. Die übrigen Stellen (Nummer 5, 6 und 7) dieser Gruppe liefern die ODER-verknüpften Eingangssignale für das UND-Glied 214. Ein Erfüllungssignal wird auf der Leitung B erzeugt, wenn diese UND-Prüfbedingung durch eine O in Stelle 4 und eine 1 in mindestens einer der drei Stellen 5, 6 und 7 erfüllt ist.
Setzt man in dem Ausdruck N+i+(i-l) (Z-Y) für i die Zahl 2 ein, so ist die zweite Gruppe von Prüfstellen im Register 200 definiert als die Gruppe, die mit der Stelle 7 beginnt und in Stelle 10 endet. Die Stelle 7 ist beiden Gruppen gemeinsam, in der zweiten Gruppe liefert sie jedoch das invertierte Bitsignal für das UND-Glied 210. Die Stellen 8, 9 und 10 liefern ODER-verknüpfte Bitsignale für das UND-Glied 210. Die Erfüllung dieser UND-Prtifbedingung erzeugt ein Erfüllungssignal auf der Leitung A.
Im Falle des in den Fign. 9 und 7 gezeigten (2,7) Codes sind . die verschiedenen Parameter N = 2, Z = 3 und Y = 2. Es ergeben sich drei entsprechende Gruppen von Prüfstellen, Stellen 3 bis 6, 5 bis 8 und 7 bis 10, deren Anfangsstellen dadurch definiert sind, daß man i nacheinander die Werte 1, 2 und 3 in dem Ausdruck n+i(i-l) (Z-Y) einnehmen läßt. Ihre Endstellen.,sind definiert durch die Addition von Z =3. zu jeder Startstelle* Die untersten. Y (oder 2) Stellen einer jeden Gruppe liefern im einzelnen invertierte Bitsignale an die entsprechenden UND-Glieder 228, 236 oder 240 in Fig. 9, während die ODER-verknüpften Bitsignale von den
2227H8
übrigen Stellen der Gruppe die übrigen Eingänge zu dem jeweiligen UND-Glied liefern. Erfüllungssignale werden auf den Leitungen A, B und C erzeugt, wenn die entsprechenden UND-Prüfbedingungen erfüllt sind.
Die Art der Umwandlung dieser Erfüllungssignale in Rahmen-Entscheidungen wurde oben erklärt und geht außerdem aus den in Fig. 8 und 9 gezeigten Rahmen-Entscheidungstabellen hervor. Ähnliche Rahmen-Prüfungen können für andere Codes mit begrenzter Lauflänge entworfen werden, die vorgegebenen Wortendebeschränkungen nach dem Erfindungsgedanken entsprechen.
Zustandsabhängige Codierung und Decodierung
Der in den Fign. 6 bzw. 7 gezeigte (1,8) Code und der (2,7) Code ist zustandsunabhängig, d.h., daß jedes der codierten Wörter in diesen Systemen neben irgendein anderes Wort desselben Systems gesetzt werden kann, ohne daß die (d, k) Lauflängenbegrenzungen verletzt werden. Bei anderen Codesystemen mit begrenzter Lauflänge, die für die vorliegende Erfindung auch ausgewählt werden können, hängt die Decodierung und/oder Codierung eines gegebenen Wortes vom Zustand des vorhergehenden Codewortes ab, damit die gewählten (d; k)-Beschränkungen nicht verletzt werden. Derartige Codesysteme sind in dem obenerwähnten Artikel von P. A. Franaszek beschrieben.
Zustandsabhängige Codier- und Decodieroperationen können unter Steuerung der Zustands-Wahlschaltungen 350 und 352 in Fig. 13 ausgeführt werden. Diese Schaltungen arbeiten ähnlich wie die Einheit 202 in dem in den Fign. IA bis 12 gezeigten Ausführungsbeispiel. Bei Verwendung eines zustandsabhängigen Codesystems können separate Codier-Decodiereinrichtungen, wie die Assoziativspeicher 2OA und 2OB in Fig. 13, benutzt werden. Bei der Codierung eines jeden Wortes wird sein Endzustand durch die Schaltung 350 festgestellt, um zu bestimmen, welcher der beiden Assoziativspeicher 2OA und 2OB für die nächste Codieroperation zu wählen ist.
YO 971 012
209881/0622
2227U8
Wenn die Decodierfunktionen auch zustandsabhängig sind, kann zum Wählen des Assoziativspeichers eine geeignete Schaltung 352 vorgesehen werden, die dann bei der Decodierung entsprechend dem Endzustand des vorher decodierten Wortes benutzt wird. Die Zustandsabhängigkeit bei der Codierung bedeutet nicht unbedingt eine zustandsabhängige Decodierung, wenn eine geeignete Redundanz vorhanden ist.
209881/0622

Claims (1)

  1. 2227U8
    PATENTANSPRÜCHE
    Verfahren zur Verarbeitung digitaler Daten, die aus originalen Bitfolgen unterschiedlicher Länge in Codewörter unterschiedlicher Länge derart codiert wurden, daß jedes gültige Codewort in einer bestimmten, ein Wortende kennzeichnenden Bitfolge endet, die aus mehreren solcher Folgen ausgewählt ist, und
    daß die Länge der Codewörter in einem festen Verhältnis zur Länge der originalen Bitfolgen steht, gekennzeichnet durch folgende Verfahrensschritte:
    a) serielle Eingabe der Bits eines eine Reihe von Codewörtern unterschiedlicher Länge enthaltenden Bitstromes in ein Schieberegister,
    b) Abfragen derjenigen Bitstellen, die sich in einer oder mehreren Gruppen speziell bezeichneter Bitstellen befinden, zur Feststellung, ob eine ein Wortende kennzeichnende Bitfolge sich in ihnen befindet, wobei die betreffenden Bitstellen, die eine Gruppe bilden, eine Funktion der verschiedenen Längen der Codewörter sind,
    c) Erzeugen eines "Erfüllungs"-Signals für jede Bitstellengruppe, die eine Wortende-Bitfolge speichert,
    d) Abgrenzen eines ausgewählten Satzes der Schieberegisterstellen während bestimmter ausgewählter Intervalle zwischen aufeinanderfolgender Verschiebungen als ein "Rahmen" , der ein zu decodierendes Codewort unterschiedlicher Länge enthält, wobei die Anzahl der Bitstellen eines Rahmens in jedem Augenblick durch das Vorliegen oder Fehlen von "Erfüllungs"-Signalen der abgefragten Gruppen von Bitstellen bestimmt wird und
    e) Decodieren des in dem ausgewählten Satz von Bitstellen gerade gespeicherten Bitmusters.
    YO 971 012
    209881/0622
    2227H8
    2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Anzahl der Verschiebeoperationen, die zwischen jeder Durchführung der Verfahrensschritte d) und e) und ihrer nächsten Durchführung erfolgt, in jedem Augenblick durch die Anzahl der Bitstellen des zuletzt abgegrenzten Rahmens bestimmt wird.
    3. Verfahren nach den Ansprüchen 1 und 2, dadurch gekennzeichnet, daß die im Schritt b) abgefragten Gruppen von Bitstellen des Schieberegisters so angeordnet sind, daß jede Gruppe mit einer Stelle beginnt, deren relative Ntunmer innerhalb der Schieberegisterstellen N+i+(i-l)(Z-Y) beträgt, und mit einer Stelle endet, deren Nummer Z plus der Anfangsnummer ist, wobei:
    "N" die kleinste ganze Zahl ist, die, durch eine andere ganze Zahl dividiert, das erwähnte feste Verhältnis ergibt, "Z" und "Y" die maximalen und minimalen Zahlen aufeinanderfolgender Bits mit einem gegebenen Binärwert (z. B. 0) sind, die das Ende eines gültigen Codewortes bilden können , und
    i einem Satz ganzer Zahlen angehört, der die Zahl 1 und alle höheren Zahlen einschließt, wobei i einen Wert besitzt, der die Startstelle definiert, deren Nummer die maximal zulässige Codewortlänge nicht übersteigt.
    4. Verfahren nach den Ansprüchen 1 bis 3, dadurch gekennzeichnet, daß die Abfrage im Schritt b) für jede Bitgruppe mittels einer UND-Verknüpfung erfolgt, für die die invertierten Bits der Y niedrigsten Stellen der Gruppe zusammen mit dem Ergebnis einer ODER-Verknüpfung der restlichen Bits der Gruppe herangezogen werden, und daß für jede Gruppe, für die die UND-Bedingung erfüllt ist, ein "Erfüllungs"-Signal erzeugt wird.
    5. Verfahren nach den Ansprüchen 1 bis 4, dadurch gekennzeich-
    Y0 971 012 209881/0622
    2227H8
    net, daß der besondere Satz von Schieberegisterstellen, der jedesmal im Schritt d) ausgewählt wird, als höchste Stelle die Stelle W einschließt, wobei W die maximal zulässige Codewortlänge ist.
    6. Verfahren nach den Ansprüchen 1 bis 5, dadurch gekennzeichnet, daß beim Vorliegen eines Rahmens der Länge W keine der abgefragten Gruppen von Schieberegisterstellen ein "Erfüllungs"-Signal liefert.
    7. Verfahren nach den Ansprüchen 1 bis 6, dadurch gekennzeichnet, daß beim Codieren auch die Lauflänge in jedem Codewort in der Weise berücksichtigt wird, daß jede 1 der Bitfolge von der benachbarten 1 durch eine Anzahl von Nullen getrennt ist, die innerhalb eines vorgegebenen Bereichs ganzer Zahlen fällt.
    8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß der Bereich der ganzen Zahlen sich von 1 bis 8 einschließlich erstreckt.
    9. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß der Bereich der ganzen Zahlen sich von 2 bis 7 einschließlich erstreckt.
    10. Vorrichtung zur Durchführung des Verfahrens nach den Ansprüchen 1 bis 9, dadurch gekennzeichnet,
    a) daß ein Assoziativspeicher (20; Fig. IA) vorgesehen ist, von" dessen in Zeilen angeordneten Speicherelementen zumindest einige auch einen drii.--i-.--n, neutralen Zustand einnehmen können, daß der Assoziativspeicher in drei Teile (22, 24, 26) unterteilt ist, von denen der erste Teil (22), in dem die Codewörter unterschiedlicher Länge gespeichert sind, mindestens soviele Speicherelemente pro Zeile enthält, als das längste Codewort unterschiedlicher
    209881/0622
    YO 971 012
    2227H8
    Länge Bits aufweist,
    daß der zweite Teil (24) des Speichers, in dem die ursprünglichen Bitfolgen gespeichert sind, pro Zeile soviele Speicherelemente enthält als die längste der originalen Bitfolgen Bits aufweist, daß die in diesem Teil des Speichers zur Speicherung von Bits nicht benötigten Speicherelemente sich in ihrem neutralen Zustand befinden, daß im dritten Teil (26) des Speichers in jeder Zeile eine Längenangabe gespeichert ist, die die Anzahl der Bits der in der gleichen Zeile gespeicherten Bits der ursprünglichen Bitfolge bezeichnet,
    b) daß ein als Schieberegister ausgebildetes Argumentregister (30; Fig. IA) vorgesehen ist, dem die Bits eines originalen Bitstromes, der eine Reihe von Bitfolgen unterschiedlicher Länge enthält, seriell zugeführt werden und mit den im zweiten Speicherteil gespeicherten Bits verglichen werden,
    c) daß für ein aus dem ersten Teil des Speichers aus der gleichen Zeile, die die übereinstimmende Bitfolge enthält, ausgelesenes Wort ein als Schieberegister ausgebildetes Datenregister (32) vorgesehen ist, aus dem die parallel in dieses Register übertragenen Bits seriell ausgeschoben werden,
    d) daß eine Steuerschaltung (34, 36, 38; Fig. IB) vorgesehen ist, die aufgrund der im dritten Speicherteil gespeicherten Längenangabe den Ausgabevorgang aus dem Datenregister und die Eingabe in das Argumentregister so steuert, daß die Anzahl der seriell aus dem Datenregister ausgelesenen Bits der Längenangabe, multipliziert mit dem konstanten Verhältnis, entspricht und die Anzahl der seriell in das Argumentregister vor dem nachfolgenden Vergleich eingegebenen Bits der Längenangabe entspricht.
    YO 971 012 · 209881/0622
    2227U8
    lL Vorrichtung nach Anspruch 10 zur Umsetzung eines eine Reihe von Codewörtern unterschiedlicher Länge enthaltenden Bitstromes in eine Reihe decodierter Bitfolgen, deren Längen ein konstantes Verhältnis zu den Längen der entsprechenden Codewörter bilden, von denen jedes in einer von mehreren unterschiedlichen Wortende-Bitfolgen endet, dadurch gekennzeichnet, daß
    a) ein als Schieberegister ausgebildetes Eingangsregister (200; Fig. IB) vorgesehen ist, dessen Stufen fortlaufend numeriert sind und das einen sog. Rahmenbezugspunkt am Ende einer solchen Stufenfolge aufweist,
    b) eine Eingabevorrichtung (296) vorgesehen ist zur seriellen Eingabe der Bits eines Bitstromes,
    c) eine Schaltung (202) zur Entscheidung über die Rahmengröße vorgesehen ist, die das Vorliegen oder Fehlen von Wortende-Bitfolgen in den speziell bezeichneten Gruppen von Bitstellen feststellt und eine Längenangabe entsprechend den abgefühlten Bitfolgen erzeugt, die einen bestimmten Satz von dem Rahmenbezugspunkt voraufgehenden Stellen des Eingangsregisters abgrenzt, in dem das gerade zu decodierende Bitmuster als gespeichert angenommen wird,
    und daß Mittel zum Decodieren des Bitmusters vorgesehen sind.
    12. Vorrichtung nach den Ansprüchen 10 und 11, dadurch gekennzeichnet, daß eine Steuerschaltung vorgesehen ist, die auf die von der Schaltung zur Entscheidung über die Rahmengröße anspricht zum Bestimmen der Biteingabe- und Verschiebeintervalle, die während der Betätigung der Eingabevorrichtung zwischen der laufenden Operation der Decodiereinrichtung und deren nächster Operation verstreichen.
    yo 971 012 209881/0622
DE2227148A 1971-06-07 1972-06-03 Schaltungsanordnung zur Umsetzung digitaler Daten Expired DE2227148C3 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US15031771A 1971-06-07 1971-06-07

Publications (3)

Publication Number Publication Date
DE2227148A1 true DE2227148A1 (de) 1973-01-04
DE2227148B2 DE2227148B2 (de) 1975-03-27
DE2227148C3 DE2227148C3 (de) 1975-11-06

Family

ID=22534004

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2227148A Expired DE2227148C3 (de) 1971-06-07 1972-06-03 Schaltungsanordnung zur Umsetzung digitaler Daten

Country Status (8)

Country Link
US (1) US3689899A (de)
JP (1) JPS5321257B1 (de)
BE (1) BE784541A (de)
CA (1) CA969670A (de)
DE (1) DE2227148C3 (de)
FR (1) FR2140408A1 (de)
GB (1) GB1336824A (de)
IT (1) IT950859B (de)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3753228A (en) * 1971-12-29 1973-08-14 Westinghouse Air Brake Co Synchronizing arrangement for digital data transmission systems
US3835467A (en) * 1972-11-10 1974-09-10 Ibm Minimal redundancy decoding method and means
US3906485A (en) * 1973-06-13 1975-09-16 Ibm Data coding circuits for encoded waveform with constrained charge accumulation
US3860907A (en) * 1973-06-21 1975-01-14 Ibm Data resynchronization employing a plurality of decoders
US3852687A (en) * 1973-07-02 1974-12-03 Ibm High rate digital modulation/demodulation method
US3914586A (en) * 1973-10-25 1975-10-21 Gen Motors Corp Data compression method and apparatus
US3886522A (en) * 1974-02-28 1975-05-27 Burroughs Corp Vocabulary and error checking scheme for a character-serial digital data processor
NL7508096A (nl) * 1975-07-08 1977-01-11 Philips Nv Inrichting voor het overdragen van digitale infor- matie.
US5253244A (en) * 1980-07-16 1993-10-12 Discovision Associates System for recording digital information in a pulse-length modulation format
DE3028734A1 (de) * 1980-07-29 1982-03-04 Siemens AG, 1000 Berlin und 8000 München Verfahren zur umwandlung von positiven linear codierten digitalen signalen sowie deren zweierkomplement in nichtlinear codierte digitale signale gemaess einer der a-gesetz gehorchenden mehrfachsegmentkennlinie
US4398225A (en) * 1981-04-24 1983-08-09 Iomega Corporation Combined serializer encoder and decoder for data storage system
US4451819A (en) * 1981-06-22 1984-05-29 Memorex Corporation Method and apparatus for decoding binary data
US4544962A (en) * 1981-07-06 1985-10-01 Matsushita Electric Industrial Co., Ltd. Method and apparatus for processing binary data
US4413251A (en) * 1981-07-16 1983-11-01 International Business Machines Corporation Method and apparatus for generating a noiseless sliding block code for a (1,7) channel with rate 2/3
EP0071680B1 (de) * 1981-08-07 1988-10-26 International Business Machines Corporation Datenaufzeichnungs- oder Übertragungssystem unter Verwendung von Codierung mit begrenzter Lauflänge
US4502036A (en) * 1981-09-25 1985-02-26 Mitsubishi Denki Kabushiki Kaisha Encoding and decoding systems for binary data
US4488142A (en) * 1981-12-31 1984-12-11 International Business Machines Corporation Apparatus for encoding unconstrained data onto a (1,7) format with rate 2/3
US4463344A (en) * 1981-12-31 1984-07-31 International Business Machines Corporation Method and apparatus for generating a noiseless sliding block code for a (2,7) channel with rate 1/2
NL8203575A (nl) * 1982-09-15 1984-04-02 Philips Nv Werkwijze voor het coderen van een stroom van databits, inrichting voor het uitvoeren van de werkwijze en inrichting voor het decoderen van een stroom databits.
US4484176A (en) * 1982-11-24 1984-11-20 Storage Technology Corporation Run length limited data encoder
US4567464A (en) * 1983-01-28 1986-01-28 International Business Machines Corporation Fixed rate constrained channel code generating and recovery method and means having spectral nulls for pilot signal insertion
US4530088A (en) * 1983-02-15 1985-07-16 Sperry Corporation Group coding system for serial data transmission
JPS59167165A (ja) * 1983-03-11 1984-09-20 Toshiba Corp 可変長符号化復号化方式
US4644545A (en) * 1983-05-16 1987-02-17 Data General Corporation Digital encoding and decoding apparatus
US4538189A (en) * 1984-02-06 1985-08-27 Storage Technology Corporation (1,8) Data encoder/decoder
EP0162558B1 (de) * 1984-05-21 1991-08-21 Matsushita Electric Industrial Co., Ltd. Verfahren und Vorrichtung zur Erzeugung eines lauflängenbegrenzten Kodes
DE3587535T2 (de) * 1984-10-01 1994-01-20 Matsushita Electric Ind Co Ltd Verfahren und Vorrichtung zur numerischen Datenkodierung.
US4609907A (en) * 1984-10-31 1986-09-02 International Business Machines Corporation Dual channel partial response system
JPH07118657B2 (ja) * 1985-04-15 1995-12-18 三菱電機株式会社 2進デ−タ符号化及び復号化方式
CA1255390A (en) * 1985-06-13 1989-06-06 Wilson W. Fok Rll (1,7) encoder with single state bit
US4675652A (en) * 1986-04-11 1987-06-23 Quantum Corporation Integrated encoder decoder for variable length, zero run length limited codes
JPS62298234A (ja) * 1986-06-13 1987-12-25 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 非対称ランレングス制限コ−ド化方法
JPH0656958B2 (ja) * 1986-07-03 1994-07-27 キヤノン株式会社 情報デ−タ復元装置
US4833470A (en) * 1986-07-15 1989-05-23 Matsushita Electric Industrial Co., Ltd. Code conversion apparatus
DE3632682A1 (de) * 1986-09-26 1988-03-31 Philips Patentverwaltung Schaltungsanordnung zur umcodierung eines datensignales
US4928187A (en) * 1987-02-20 1990-05-22 Laserdrive Limited Method and apparatus for encoding and decoding binary data
US4873680A (en) * 1987-03-13 1989-10-10 Laserdrive Ltd. Apparatus and method for detecting and compensating for pit extension in an optical disk recording system
US4804959A (en) * 1987-11-10 1989-02-14 International Business Machines Corporation Method and apparatus using multiple codes to increase storage capacity
JP2713574B2 (ja) * 1988-03-26 1998-02-16 株式会社日立製作所 アドレスマーク発生方法および回路
US5016258A (en) * 1988-06-10 1991-05-14 Matsushita Electric Industrial Co., Ltd. Digital modulator and demodulator
FR2641434B1 (fr) * 1988-12-30 1991-03-15 Thomson Csf Dispositif de transmission d'informations utilisant un codage statistique
US5184125A (en) * 1989-06-28 1993-02-02 Digital Equipment Corporation Data encoding and demodulation system
DE69026904T2 (de) * 1989-10-31 1997-01-02 Sony Corp Schaltung zur digitalen Modulation
WO1991011058A1 (en) * 1990-01-12 1991-07-25 Research Corporation Technologies, Inc. Method and apparatus for providing maximum rate modulation or compression encoding and decoding
GB2242104B (en) * 1990-02-06 1994-04-13 Digital Equipment Int Method and apparatus for generating a frame check sequence
US5034741A (en) * 1990-03-22 1991-07-23 United Technologies Corporation Variable length bit patterns for data representation
US5099237A (en) * 1990-07-10 1992-03-24 Research Corporation Technologies, Inc. Method and apparatus for providing maximum rate modulation or compression encoding and decoding
US5392168A (en) * 1990-08-31 1995-02-21 Matsushita Electric Industrial Co., Ltd. Method of recording digital video and audio data
NL9002841A (nl) * 1990-12-21 1992-07-16 Philips Nv Werkwijze en inrichting voor het langs optische weg inschrijven, uitlezen, en wissen van een meervlaks registratiedrager, en registratiedrager geschikt voor deze werkwijze en inrichting.
JP3427392B2 (ja) * 1992-05-25 2003-07-14 ソニー株式会社 符号化方法
JP3428039B2 (ja) * 1992-06-30 2003-07-22 ソニー株式会社 同期信号検出器、同期信号検出方法及び復号化装置
US5347276A (en) * 1992-07-13 1994-09-13 Trw Inc. Serial binary pattern generator
US5461631A (en) * 1992-12-15 1995-10-24 International Business Machines Corporation Method for bit resynchronization of code-constrained sequences
US5424881A (en) * 1993-02-01 1995-06-13 Cirrus Logic, Inc. Synchronous read channel
JP3127655B2 (ja) * 1993-03-22 2001-01-29 ソニー株式会社 変調装置及び復調装置
JPH0730431A (ja) * 1993-04-02 1995-01-31 Toshiba Corp データ変復調方式および変復調装置
US5561656A (en) 1994-11-18 1996-10-01 International Business Machines Corporation Pulse width modulation optical disk drive with pulsed laser preheating between marks
US5808998A (en) * 1995-12-27 1998-09-15 Lucent Technologies Inc Bit error rate reduction by reducing the run length of same-state pixels in a halographic process
US5931968A (en) 1996-02-09 1999-08-03 Overland Data, Inc. Digital data recording channel
US6543024B2 (en) 1996-02-09 2003-04-01 Overland Storage, Inc. Write format for digital data storage
US6167550A (en) * 1996-02-09 2000-12-26 Overland Data, Inc. Write format for digital data storage
US6597526B1 (en) 1998-08-14 2003-07-22 Overland Storage, Inc. Magnetic tape drive apparatus including a variable rate encoder
US6665359B1 (en) 1999-10-28 2003-12-16 Stmicroelectronics, Inc. Digital data separator
US6574773B1 (en) * 2000-03-09 2003-06-03 Stephen A. Turk Cost-effective high-throughput enumerative ENDEC employing a plurality of segmented compare tables
US7290184B2 (en) * 2001-08-23 2007-10-30 Seagate Technology Llc Emulation system for evaluating digital data channel configurations
US7864471B2 (en) * 2008-07-24 2011-01-04 Seagate Technology Llc Converting timing errors into symbol errors to handle write mis-synchronization in bit-patterened media recording systems
CN113037300B (zh) * 2021-03-04 2023-05-23 中国能源建设集团广东省电力设计研究院有限公司 电力传感器在线监测数据压缩方法、解压方法及监测系统
CN115037419B (zh) * 2022-08-11 2023-01-31 德州鲲程电子科技有限公司 用于芯片测试过程中的不定长编码数据串行传输的方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3051940A (en) * 1958-09-04 1962-08-28 Bell Telephone Labor Inc Variable length code group circuits
US3016527A (en) * 1958-09-04 1962-01-09 Bell Telephone Labor Inc Apparatus for utilizing variable length alphabetized codes
US3208049A (en) * 1960-08-25 1965-09-21 Ibm Synchronous transmitter-receiver
BE656364A (de) * 1963-11-29
US3457562A (en) * 1964-06-22 1969-07-22 Massachusetts Inst Technology Error correcting sequential decoder
US3444522A (en) * 1965-09-24 1969-05-13 Martin Marietta Corp Error correcting decoder
US3456234A (en) * 1966-12-16 1969-07-15 Cambridge Thermionic Corp Electric clip connector
US3576947A (en) * 1969-01-16 1971-05-04 Us Navy Rapid frame synchronism of serial binary data
BE754349A (fr) * 1969-08-07 1971-01-18 Burroughs Corp Procede et appareil de cadrage et de conversion de numeration

Also Published As

Publication number Publication date
DE2227148C3 (de) 1975-11-06
CA969670A (en) 1975-06-17
DE2227148B2 (de) 1975-03-27
BE784541A (fr) 1972-10-02
US3689899A (en) 1972-09-05
IT950859B (it) 1973-06-20
FR2140408A1 (de) 1973-01-19
JPS5321257B1 (de) 1978-07-01
GB1336824A (en) 1973-11-14

Similar Documents

Publication Publication Date Title
DE2227148A1 (de) Verfahren zur verarbeitung digitaler daten
DE2540472C3 (de) Verfahren und Schaltungsanordnungen zur Codierung binärer Daten unter Anwendung eines abgewandelten Null-Modulationscodes
DE2508706C2 (de) Schaltungsanordnung zur Codierung von Datenbitfolgen
DE2364212C3 (de) Schaltungsanordnung zur Codierung von Binärziffern
DE2513862C2 (de) Vorrichtung zum Decodieren von Codes minimaler Redundanz und variabler Länge
DE2210044C2 (de) Verfahren zum Umsetzen von Codewörtern
DE1082435B (de) Addierwerk
DE2205422A1 (de) Verfahren zur Verarbeitung verdichteter Daten
DE2139731A1 (de) Anordnung und Verfahren zur Code Um Setzung mit einem Assoziativ Speicher
CH656760A5 (de) Verfahren und anordnung zur sicherstellung der start-synchronisation eines aus bit-impulsfolgen bestehenden telegramms innerhalb eines empfaengers.
DE2264090B2 (de) Datenverdichtung
DE2614916A1 (de) Konverter zur codeumwandlung
DE2153517A1 (de) Anordnung zur Codeumsetzung
DE2735319A1 (de) Schaltungsanordnung zur zusammenhaengenden codierung von zeichen und zur zeichendecodierung der ursprungszeichen
DE2805294C2 (de) Codierende Übertragungsanlage für Faksimile-Signale
DE3303269C2 (de)
DE2047868A1 (de) Schaltung zur Korrektur von Einzel fehlern in den Wortern eines zyklischen (n, k) Codes
DE3137704A1 (de) Vorrichtung zum decodieren eines baumfoermigen codes variabler laenge
DE2000565A1 (de) Fehlerkorrigierendes System zur Korrektur mehrfacher,zufaelliger Fehler
DE1119567B (de) Geraet zur Speicherung von Informationen
DE2826454C3 (de) Faksimilesignal-Codiersystem
DE3329023A1 (de) Einrichtung zum pruefen logischer schaltwerke
DE1562051B2 (de) Schaltungsanordnung zur erzeugung einer eindeutigen gruppe von m x n bits
DE2645621A1 (de) Blockfolgenverarbeitender prozessor fuer nicht gleichmaessig kodierte digitale daten
DE2525394C3 (de) Verfahren und Schaltungsanordnung zum Übertragen, Einspeichern und Ausspeichern von binärcodierten Datenblöcken

Legal Events

Date Code Title Description
C3 Grant after two publication steps (3rd publication)
E77 Valid patent as to the heymanns-index 1977
8339 Ceased/non-payment of the annual fee