DE1524891C3 - Schaltungsanordnung zur Korrektur von Fehlerbündeln - Google Patents

Schaltungsanordnung zur Korrektur von Fehlerbündeln

Info

Publication number
DE1524891C3
DE1524891C3 DE1524891A DE1524891A DE1524891C3 DE 1524891 C3 DE1524891 C3 DE 1524891C3 DE 1524891 A DE1524891 A DE 1524891A DE 1524891 A DE1524891 A DE 1524891A DE 1524891 C3 DE1524891 C3 DE 1524891C3
Authority
DE
Germany
Prior art keywords
circuit
error
bits
shift register
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired
Application number
DE1524891A
Other languages
English (en)
Other versions
DE1524891B2 (de
DE1524891A1 (de
Inventor
Alexander H Frey Jr
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 DE1524891A1 publication Critical patent/DE1524891A1/de
Publication of DE1524891B2 publication Critical patent/DE1524891B2/de
Application granted granted Critical
Publication of DE1524891C3 publication Critical patent/DE1524891C3/de
Expired legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/17Burst error correction, e.g. error trapping, Fire codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Description

groß wie die Höchstzahl der Bits in einem zu korrigierenden Fehlerbündel. Daher sind die bekannten Schaltungen zur Korrektur von Fehlerbündeln sehr kostspielig.
Der Erfindung liegt die Aufgabe zugrunde, eine Schaltungsanordnung zur Korrektur von Fehlerbündeln in den Codewörtern eines systematischen Codes anzugeben, die einen gegenüber bekannten Schaltungen dieser Art verringerten Schaltungsaufwand erfordert. Als systematisch bezeichnet man einen Code, bei dem die Redundanzbits eines Codewortes auf dessen Informationsbits folgen.
Die genannte Aufgabe wird gelöst mit Hilfe einer Schaltungsanordnung zur Korrektur von Fehlerbündeln aus maximal b Bits in binären Codewörtern eines systematischen Codes, in dessen Codewörtern der Informations- und der Redundanzteil gleich groß sind, mit einem Decodierer, der aus einem übertragenen Codewort ein Prüfwort ableitet zur Feststellung, ob ein korrigierbares Fehlerbündel vorliegt, und mit einer an den Decodierer angeschlossenen Fehlerkorrekturschaltung, welche Schaltungsanordnung dadurch gekennzeichnet ist, daß der Decodierer ein r-stufiges [r — Grad des Codepolynoms P(X)] Schieberegister enthält, bei dem ein Antivalenz-Glied auf eine Registerstufe / folgt, wenn einer der dieser Stufe zugeordneten Koeffizienten at oder bt den Wert 1 besitzt, wobei at den Koeffizienten der i. Potenz von X des Codepolynoms P(X) darstellt und der Koeffizient h durch Lösen der Gleichung
b χη-r+i — 1
modulo P(X) bestimmt wird, in der η die Gesamtzahl der Bits eines Codewortes bezeichnet, daß die zweiten Eingänge derjenigen Antivalenz-Glieder, bei denen für die Koeffizienten der zugehörigen Registerstufe / gilt: cn = 0 und bi = 1, an den Eingang der Decodierschaltung angeschlossen sind, daß die zweiten Eingänge derjenigen Antivalenz-Glieder, bei denen für die Koeffizienten der zugehörigen Registerstufe gilt: at = 1 und bi = 0, mit dem Ausgang des Antivalenz-Gliedes der r. Stufe des Schieberegisters verbunden sind, daß der 2. Eingang des Antivalenz-Gliedes der r. Stufe mit dem Eingang der Decodierschaltung und dessen Ausgang mit den zweiten Eingängen derjenigen Antivalenzglieder verbunden ist, bei denen für die Koeffizienten der zugehörigen Registerstufe gilt: at = bt = 1, daß als Schaltung zum Feststellen, ob ein korrigierbares Fehlerbündel vorliegt, ein UND-Glied dient, das an die Ausgänge der / niederstelligsten Stufen des Schieberegisters angeschlossen ist, wobei /
einen Wert zwischen-^- und log2 («+l) besitzt, und daß das Ausgangssignal des UND-Gliedes zur in einem Antivalenz-Glied erfolgenden Korrektur des synchron in einem Pufferspeicher mitverschobenen Codewortes verwendet wird.
Im folgenden wird ein Ausführungsbeispiel der Erfindung in Verbindung mit den Zeichnungen näher erläutert, von denen zeigt
F i g. I ein allgemeines Blockdiagramm eines Systems zur Korrektur von Fehlerbündeln,
F i g. 2 ein Beispiel für eine Codierschaltung zur Codierung von Nachrichten mit einem Codepolynom hundertsten Grades,
F i g. 3 eine Decodier- und Korrekturschaltung gemäß der Erfindung, die mit der Codierschaltung der F i g. 2 zu verwenden ist,
F i g. 4 eine Codierschaltung, die ein Codepolynom achten Grades verwendet,
F i g. 5 eine Decodier- und Korrekturschaltung gemäß der Erfindung, die mit der Codierschaltung der F i g. 4 zu verwenden ist, und
F i g. 6 ein einzelnes Gerät gemäß der Erfindung, das codiert, decodiert und korrigiert.
Um das Verständnis der vorliegenden Erfindung zu erleichtern, folgt vor einer genauen Beschreibung der Erfindung ein kurzer Überblick über die bisher gebräuchlichen Verfahren zur Korrektur von Fehlerbündeln.
Eine Reihe von Datenbits, binären Nullen und Einsen, kann als ein Polynom dargestellt werden, dessen X-Werte als absteigende Potenzen vorliegen und Koeffizienten haben, die Null oder Eins sind, abhängig von den Ziffern der Datenbits.
Eine Folge von KDatenbits Ακ-ι, Ακ-2, ..'.,A1, A0 kann dann als ein Polynom D(X) dargestellt werden:
ηίγ\ — δ υκ
P(X) stellt eine zweite Bitfolge eines geeignet ausgewählten Codepolynoms dar, welches Fehlerbündel korrigieren kann. Der Grad des Codepolynoms sei r, und das ausgewählte Codepolynom kann Fehlerbündel
emer LanSe korngieren, die < b < r ist. (Bei den bisher gebräuchiichen Anlagen gilt allgemein b <-£■).
Bei den meisten herkömmlichen Codiersystemen besteht der erste Schritt in der Multiplikation von D(X) mit Xr um folgenden Ausdruck zu erhalten:
XrD(X) = Ακ-1Χτ+κ~1+Ακ-ζΧτ+κ~2 + ...
10·
Der nächste Schritt ist
durch das Codepolynom
traktion werden modulodas Zeichen © dargestellt
Division ist ein Quotient
dessen Grad kleiner ist als
d. h. XrD(X)IP(X) = Q(X)
schreiben kann
die Division von XrD(X) P(X). Addition und Sub-2 ausgeführt, was durch wird. Das Ergebnis dieser Q(X) und ein Rest R(X), r, der Grad des Polynoms, © R(X)JP(X) was man auch
P(X) O(X) © R(X)
Das übertragene Nachrichtenpolynom mit den ursprünglichen Daten und den Bits R(X) zur Korrektur von Fehlerbündeln wird dargestellt als
M(X) = XrD(X) © R(X) — P(X) O(X)
Es ist zu beachten, daß Addition und Subtraktion lo_2 ^^ Efgebnis ^
Die durch M dargestellte Bitfolge wird mit dem werthöchsten Bit zuerst zum Empfänger übertragen. Die empfangenen Bits werden durch M' dargestellt. Auf der Empfängerseite wird das Polynom M'(X), dessen Koeffizienten M' entsprechen, durch P(X) dividiert. Wenn bei der Übertragung keine Fehler aufgetreten sind, ist der Rest dieser Division Null. Wenn ein Übertragungsfehler ein korrigierbares Fehlerbündel erzeugt hat, d. h., daß alle Fehler in einem Block von b Bits konzentriert sind, findet sich in dem Rest eine Konzentration von Einsen in einem Block von b Bits. Die Einsen in dem Rest stellen dann das Fehlermuster dar und können zur Berichtigung der
Fehler benutzt werden. Wenn die Fehler nicht innerhalb eines korrigierbaren Bündels liegen, konzentrieren sich die Einsen im Rest nicht auf einen Block der Länge b, d. h. zwischen der ersten und der letzten im Rest auftretenden Eins liegen b oder mehr Bit-Positionen. Ein derartiger Fehler wird vom System nicht korrigiert.
Ein Merkmal dieser Erfindung liegt in der Korrektur eines sehr hohen Prozentsatzes (im wesentlichen aller) der Fehlerbündel einer vorgegebenen Länge.
Das bei der Anwendung dieser Erfindung benutzte Codepolynom kann jedes beliebige Polynom vom Grad r sein, das größer oder gleich Z>+2log (n+1) ist, wobei b die Länge des korrigierbaren Fehlerbündels und η die Länge eines Blocks einer übertragenen Nachrieht ist.
Wie bei der bisher üblichen Technik wird die Nachricht codiert, indem man das Polynom D(X), das die eintreffenden Bits einer Information darstellt, mit Xr multipliziert und dann durch das Codepolynom P(X) dividiert, um die Nachricht M(X)
M(X) = XrD(X) © R(X) = P(X) Q(X)
zu erhalten, wobei Q(X) der Quotient ist, den man als Ergebnis der Division erhält.
Auf der Empfangsseite wird die empfangene Nachricht M' multipliziert mit Xa, wobei a = <x—(n—r) und cn die Periode des Codepolynoms P(X) ist, und dann durch das Codepolynom P(X) dividiert. Wenn der Rest dieser Division gleich Null ist, traten bei der Übertragung keine Fehler auf. Wenn der Rest ungleich Null ist, wird er bei der Korrektur verwendet.
Wenn kein Fehler außerhalb der ersten übertragenen b Bits auftrat, sind die wertniedrigsten r—b Bitstellen des Restes Null, und die werthöchsten b Bitstellen des Restes enthalten das Muster des Fehlerbündels. Wenn die Fehler außerhalb der ersten übertragenen b Bits, jedoch keiner außerhalb der ersten übertragenen r Bits liegt, dann erscheinen einige Einsen in den ersten rb Bitstellen des Restes. Wenn Fehler außerhalb der ersten übertragenen r Bits liegen, besteht eine bestimmte Wahrscheinlichkeit E (abhängig vom Codepolynom und der Fehlerzahl außerhalb der übertragenen ersten r Bits), daß jede einzelne Bitstelle des Restes von der Stelle 1 bis zur Stelle r—b Null ist. Wenn man annimmt, daß die Fehlerwahrscheinlichkeit E für jede Stelle unabhängig ist, dann ist die Wahrscheinlichkeit, daß alle Bitstellen von 1 bis r—b gleichzeitig Null sind, ungefähr gleich Er~h. Wenn man dann also die Bedingung von lauter Nullen in den r—b wertniedrigsten Stellen des Restes dazu benutzt, ein Fehlerbündel in den ersten übertragenen b Bits anzuzeigen, wobei das Muster von Einsen in dem Rest das Fehlermuster darstellt, dann besteht eine Fehlerwahrscheinlichkeit Er~b, die durch Vergrößern von r—b beliebig klein gemacht werden kann.
Wenn die Bedingung für das Vorliegen eines korrigierbaren Fehlerbündels nicht erfüllt ist, können die Restbits in ein Schieberegister eingegeben und dieselbe Bedingung geprüft werden, um festzustellen, ob ein korrigierbares Fehlerbündel in den Bits 2 bis b+1 des übertragenen Blocks aufgetreten ist. Jede folgende Verschiebung im Register verschiebt die Bitspanne, in der das· Fehlerbündel erkannt wird, um eine Bitstelle. Das Verschieben kann n—b-mal erfolgen. Die Wahrscheinlichkeit, daß beim Verschieben eines Blocks eine Bedingung unrichtig erkannt wird, die ein Fehlerbündel von einer Länge kleiner gleich b Bits anzeigt, ist dann annähernd (n—b)Er~b. Für große Werte von b ist diese Wahrscheinlichkeit sehr klein. Somit kann von dem Verfahren erwartet werden, daß es bei der Korrektur langer Fehlerbündel voll wirksam wird.
Ein Blockdiagramm mit den Hauptteilen eines Systems zur Korrektur von Fehlerbündeln gemäß der vorliegenden Erfindung ist in F i g. 1 dargestellt. Das dargestellte System kann sowohl eine Nachricht für die Übertragung codieren als auch eine codierte Nachricht empfangen und decodieren. Von einer Quelle gelieferte Daten werden am Eingang 2 des Codierers empfangen. Die Daten werden zwecks Übertragung über einen Übertragungskanal dem Ausgang 3 des Codierers zugeführt und ebenfalls auf die Rückkopplungs- und Ausgangssteuerschaltungen 4. Im rückgekoppelten Schieberegister 5 werden die Restbits für die Fehlererkennung und -korrektur berechnet. Während der Codierung wird die Rückkopplungsverbindung zum Schieberegister 5 durch die Daten gesteuert, die den Rückkopplungs- und Ausgangssteuerschaltungen 4 vom Eingang 2 des Codierers zugeführt werden. Nach der Berechnung der Restbits werden diese dem Ein-, gang 3 des Codierers zwecks Übertragung über einen Übertragungskanal zugeführt. Wie bereits erwähnt, kann dieses System sowohl Nachrichten übertragen als auch empfangen. Wenn das System als Empfänger arbeitet, werden am Eingang 6 des Decoders Datenbits und Redundanzbits von einem anderen nicht dargestellten Codiergerät empfangen. Die Daten^ und Redundanzbits werden in dem rückgekoppelten Schieberegister 7 zur Berechnung des Prüfwortes (Syndrom) entsprechend den empfangenen Daten und der Redundanz benutzt. Jedes Redundanzbit wird fallen gelassen, nachdem es seinen Beitrag zum Prüfwort geleistet hat. Somit braucht beim Decodieren keine Redundanz gespeichert zu werden. Das ankommende Datenwort wird im Speicher 8 gespeichert und das errechnete Prüfwort im Schieberegister 7. Nach vollständiger Errechnung kann das Prüfwort in ein anderes Schieberegister innerhalb der Entscheidungsschaltung 9 gesetzt werden, so daß das Schieberegister 7 zur Errechnung des Prüfwortes für die nächste ankommende Nachricht benutzt werden kann.
Nachdem das Prüfwort vollständig berechnet und im Schieberegister der Entscheidungsschaltung 9 gespeichert worden ist, wird das Muster im Prüfwort von der Entscheidungsschaltung untersucht. Die Entscheidungsschaltung stellt fest, ob ein korrigierbares Fehlerbündel aufgetreten ist oder nicht. Ist entsprechend den oben beschriebenen Verfahren ein solches Fehlerbündel festgestellt worden, wird die Korrekturschaltung 10 zu seiner Korrektur eingeschaltet. Die Korrektur erfolgt bei der Weiterleitung der Daten zum Ausgang 11 des Decoders.
Wenn die Daten aus dem Speicher 8 über die Korrekturschaltung 10 zum Ausgang 11 des Decoders übertragen werden, treten an ihre Stelle im Speicher neue am Eingang 6 des Decoders vorhandene Daten. Wie bei den bisher üblichen Systemen wird der Takt für die Daten dem Eingang des Decoders ebenfalls über den Übertragungskanal zugeführt. Die verschiedenen Arten der Taktsteuerung sind bekannt und bedürfen keiner weiteren Erläuterung.
Die vorigen Abschnitte beschreiben das erfindungsgemäße Verfahren zur Korrektur von Fehlerbündeln und ein Gerät zur Durchführung des Verfahrens. Die folgenden Abschnitte geben als Beispiel die Anwendung
eines bestimmten Codepolynoms und beschreiben im einzelnen die von der Codier- und der Decodierschaltung benutzten Schieberegister, die Rückkopplungs- und Ausgangssteuerschaltungen, die Entscheidungsschaltung und die Korrekturschaltung.
Auswahl eines Codepolynoms
Für dieses Beispiel wird angenommen, daß die Daten in Blocks von 100 Bit Länge dem System zugeführt werden. Wenn wir einen Code benutzen, bei dem gleich viel Informations- und Redundanzbits vorhanden sind, muß für das Codepolynom ein Polynom hundertsten Grades verwandt werden. Da r > b+2log (n+1) sein muß, wobei r der Grad des Codepolynoms, b die größte Länge eines korrigierbaren Fehlerbündels und η die Länge eines Nachrichtenblocks ist, kann das im folgenden Beispiel zu beschreibende System Fehlerbündel erkennen und korrigieren, die bis zu 92 Bitpositionen umfassen. In den folgenden Beispielen wird angenommen, daß Fehlerbündel mit einer größten Länge von 90 Bits korrigiert· werden. Obwohl das System genauere Ergebnisse bei der Korrektur kürzerer Fehlerbündel liefern würde (z. B. 85 Bits), gilt dieses Beispiel zur Illustration. Der hundertste Grad des Polynoms P(X) = X100 + Xi0 + X7t + X" + X3i + F + l wurde als Codepolynom für die folgenden Beispiele gewählt.
Codieren einer Nachricht
In F i g. 2 ist eine Codierschaltung dargestellt, die zur Multiplikation einer ankommenden Nachricht D(X) mit Z100 verwendet werden kann, während sie gleichzeitig diese Nachricht durch das Codepolynom P(X) = X100 + Xao + X7i + X67 + X39 + X20 + 1 dividiert. Der Einfachheit halber wurden viele Einzelheiten über Taktgabe, Verschiebeleitungen usw. in der Zeichnung weggelassen. Außerdem ist zu sehen, daß andere Anlagen, die die obigen Funktionen der Multiplikation und Division (parallel oder nacheinander) ausführen, ebenfalls verwendet werden können. Die Eingangsleitung 12 ist mit einem Eingang einer UND-Schaltung 14 verbunden, deren Ausgang an einen Eingang einer ODER-Schaltung 16 angeschlossen ist, an deren Ausgang wiederum die Ausgangsleitung 18 direkt angeschlossen ist. Die Eingangsleitung 12 ist ebenfalls mit einem Eingang des Modulo-2-Addierers 22 verbunden. (Der Modulo-2-Addierer kann einfach eine ausschließliche ODER-Schaltung sein.) Die Signale am Ausgang 24 des Modulo-2-Addierers 22 sind die Eingangssignale für das Schieberegister 26, dessen Stufen durch die Nummern 1 bis 100 gekennzeichnet sind. In der Zeichnung sind nur die Stufen 1, 20, 39, 57, 74, 90 und 100 des Schieberegisters 26 dargestellt. Die niedrigen Ziffern entsprechen den Stufen niederer Ordnung des Schieberegisters, und die Verschiebung erfolgt von links nach rechts. Das Ausgangssignal der letzten Stufe 100 des Schieberegisters wird den UND-Schaltungen 28 und 30 zugeführt. Der Ausgang der UND-Schaltung 28 speist den zweiten Eingang des Modulo-2-Addierers 22. Der Ausgang der UND-Schaltung 30 speist einen zweiten Eingang der ODER-Schaltung 16. Da die letzte Stufe des Schieberegisters 26 über den Modulo-2-Addierer 22 zwecks Addition auf andere Stufen des Schieberegisters zurückgekoppelt wird, nennt man diese Anordnung allgemein ein lineares rückgekoppeltes Schieberegister.
Beim Codieren von Nachrichtenbits in dem dargestellten Gerät wird zunächst jede Information in dem Schieberegister 26 durch einen Taktimpuls (nicht dargestellt) gelöscht. Zu Beginn wird die UND-Schaltung 14 durch ein Taktsignal auf der Leitung 32 erregt, wodurch die Eingabedaten auf Leitung 12 durch die UND-Schaltung 14 und die ODER-Schaltung 16 direkt auf die Ausgangsleitung 18 gelangen. Die UND-Schaltung 28 wird zu Beginn durch ein Signal auf der
ίο Leitung 34 erregt, während die UND-Schaltung 30 über die Leitung 36 gesperrt wird. Somit wird das Ausgangssignal der letzten Stufe 100 des Schieberegisters 26 über die UND-Schaltung 28 und die Leitung 38 dem Modulo-2-Addierer 22 zugeführt, wo es modulo-2
is mit den Eingangsdaten auf der Leitung 12 addiert wird. Somit erscheinen die Eingangsdaten nach 100 Verschiebungen am Ausgang des Schieberegisters. Das ist gleichzusetzen einer Multiplikation der Eingangsdaten mit Z100. Die von der Leitung 24 ausgehenden Rückkopplungsleitungen geben Rückkopplungsinformationen in das Schieberegister zum Komplementieren der verschobenen Stellen, damit sie dem Codepolynom entsprechen. So komplementiert z. B. der Modulo-2-Addierer 40 das Ausgangssignal der
as Stelle 20 des Schieberegisters entsprechend dem Ausdruck X20 von P(X). Dadurch wird eine Division der Eingangsdaten durch das Codepolynom erreicht, wodurch nur die Restbits R(X) im Schieberegister bleiben, nachdem alle Datenbits am Eingang 12 angekommen sind.
Nachdem alle Informationsbits empfangen wurden, werden die Leitungen 32 und 34 abgeschaltet, so daß jetzt keine Daten mehr auf die Ausgangsleitung und ebenso wenig auf die Rückkopplungsleitung von der Ausgangsstufe 100 des Schieberegisters gelangen können. Gleichzeitig wird die Leitung 36 erregt, so daß der Inhalt des Schieberegisters über die UND-Schaltung 30 und die ODER-Schaltung 16 auf die Ausgangsleitung gelangen kann. Somit wird an die Datenbits der bei der Division durch das Codepolynom erhaltene Rest an das Ende der Nachricht angehängt.
Decodieren einer Nachricht
In der Decodierschaltung wird die empfangene Nachricht untersucht und ein Syndrom (Prüfwort) abgeleitet. Das Syndrom wird dann bei der Fehlerkorrektur benutzt.
Eine erfindungsgemäße Decodierschaltung, die ein Prüfwort errechnet, ist folgendermaßen aufgebaut: P(X) sei das Codepolynom, r der Grad von P(X) und η die Blocklänge der übertragenen Nachrichten. Die Koeffizienten bt sind so zu berechnen, daß
r-l
bt Xn-'+t = 1 modulo P(X).
-0
Es seien α« die Koeffizienten von X( in P(X). Es ist ein r-stufiges, rückgekoppeltes Schieberegister zu benutzen, dessen Stufen von 1 bis r numeriert sind und in welchem die Verschiebung von den niederzahligen zu den hochzahligen Stufen erfolgt. Zwischen die Stufen ί und /+1 ist eine ausschließliche ODER-Schaltung (Modul-2-Addierer) anzuordnen, wenn ai oder bi 1 ist, wobei die /-te Stufe ein Eingangssignal
509 516/262
für die ausschließliche ODER-Schaltung liefert, deren zweites Eingangssignal ein Rückkopplungssignal ist, das später noch näher bestimmt wird. Das Ausgangssignal wird von Stufe i nach Stufe /+1 verschoben.
In den Fällen, in denen at = 1 und bi = 0 ist, kommt das Rückkopplungssignal für die zwischen den Stufen ι und /+1 angeordnete ausschließliche ODER-Schaltung von der r-ten Stufe. In den Fällen, in denen cn = 0 und bi = 1 ist, bildet ein Bit der Eingangsnachricht auch das Rückkopplungssignal. In Fällen, wo flj = 1 und bi = 1 ist, kommt das Rückkopplungssignal vom Ausgang einer ausschließlichen ODER-Schaltung, deren eines Eingangssignal vom Ausgang der r-ten Stufe und deren anderes Eingangssignal ein Bit der Eingangsnachricht ist. In dem rückgekoppelten Register erfolgt für jedes Bit der Eingangsnachricht, die als codierter Block vorliegt, eine Verschiebung. Nach η Verschiebungen befinden sich alle Bits der Eingangsnachricht in dem Register, und dieses enthält das dem empfangenen Nachrichtenblock entsprechende Prüfwort.
Für den Fall des Codepolynoms P(X) = X100 + X90 + X7i + X57 + X39 + X20 + 1 ist at = 1 für / == 0, 20, 39, 57, 74, 90,100 und für alle anderen Werte von i ist at = 0. Da die letzte Stufe des Schieberegisters die Stufe 100 ist, und ihr Eingangssignal a99 entspricht, braucht a100 beim Aufbau des Schieberegisters nicht berücksichtigt zu werden. Für das oben als Beispiel gegebene Codepolynom ergibt eine einfache algebraische Manipulation die Werte für bi. (Wobei alle Additionen und Subtraktionen modulo-2 ausgeführt werden.) Bei Verwendung dieses als Beispiel gegebenen Polynoms ist bi = 1 für die Werte i = 0, 4, 5, 10, 13, 15, 16, 17, 19, 22, 24, 25, 32, 36, 42, 43, 44, 46, 49, 51, 54, 58, 59, 62, 66, 67, 69, 70, 73, 76, 78, 80, 85, 86, 88, 89, 95, 96, 97, 99 und für alle anderen Werte von / ist b{ = 0.
Die in F i g. 3 dargestellte Decodierschaltung 39 enthält ein nach obigen Parametern aufgebautes Schieberegister. Das Schieberegister hat einhundert Stufen, die mit den Zahlen 1 bis 100 gekennzeichnet sind. Dabei entsprechen die höheren Zahlen den höherwertigen Stufen des Schieberegisters. Es sind nur siebzehn Stufen (1 bis 11, 20, 21, 42, 43, 99, 100) des Schieberegisters dargestellt. Die Verschiebung erfolgt von links nach rechts. Durch die oben gegebenen Werte cn und bi ist die Lage der verschiedenen ausschließlichen ODER-Schaltungen bestimmt. Bei Betrachtung der in F i g. 3 dargestellten Schieberegisterstufen ergibt sich, daß eine ausschließliche ODER-Schaltung jeweils auf die Stufen 4, 5, 42, 99 folgt, weil bt, b5, bi2 und b9a alle gleich eins sind. Je eine weitere ausschließliche ODER-Schaltung folgt auf die Stufe 20, da a20 = 1 ist und auf die Stufe 100 (vor Stufe 1) weil sowohl a0 als auch bo—l sind. Hinter den Stufen 1, 2, 3, 6, 7, 8, 9, 10, 11, 21, 43 folgt keine ausschließliche ODER-Schaltung, da weder at noch bi für irgendeinen dieser /-Werte gleich eins ist. Da α« = 0 und bi = 1 für i = 4, 5, 42 und 99 ist, wird das zweite Eingangssignal für die ausschließliche ODER-Schaltung, die jeweils auf die Stufen 4, 5, 42 und 99 folgt, direkt von dem eintreffenden Nachrichtenbit gebildet. Da a20 = 1 und b200 ist, erhält die ausschließliche ODER-Schaltung hinter der zwanzigsten Stufe des Schieberegisters ihr zweites Eingangssignal vom Ausgang der hundertsten (r-ten) Stufe des Schieberegisters. Da ag = 1 und b0 = 1 ist, kommen die Eingangssignale für die erste Stufe des Schieberegisters vom Ausgang der ausschließlichen ODER-Schaltung 41, deren einer Eingang mit dem Ausgang der Stufe 100 des Schieberegisters und deren anderer Eingang mit der Eingangsleitung verbunden ist, auf der die Nachrichtenbits eintreffen. [Wenn z. B. ein Codepolynom P(X) so ausgewählt würde, daß a0 = 1 und b0 = 0 ist, käme das Eingangssignal für die erste Stufe des Schieberegisters direkt vom Ausgang der hundertsten Stufe dieses Registers.]
ίο Wenn eine von dem in F i g. 2 dargestellten Codierer codierte Nachricht von dem in F i g. 3 dargestellten Decodierer empfangen wird, wird bei Empfang der Nachricht ein Prüfwort erzeugt. Wenn die Nachricht ohne Übertragungsfehler empfangen wird, enthält das errechnete Prüfwort lauter Nullen. Wenn während der Übertragung erkennbare Fehler aufgetreten sind, enthält das Prüfwort eine oder mehrere Einsen.
Korrekturschaltung
Wie oben beschrieben, wird die Bedingung von lauter Nullen in den r—b niedrigsten Stellen des Prüfwortes (wobei r die Anzahl der Stufen im Schiebe-, register und b die Länge des korrigierbaren Fehlerbündeis ist) dazu benutzt, ein Fehlerbündel in den ersten übertragenen b Bits (Bits 1 bis 6) anzuzeigen, wobei das Muster von Einsen in dem Rest des Prüfwortes das Fehlermuster darstellt. Wenn die Bedingung für das Vorliegen eines korrigierbaren Fehlerbündels nicht erfüllt ist, wird das Prüfwort in dem ruckgekoppelten Schieberegister verschoben und dieselbe Bedingung wiederum geprüft, um festzustellen, ob ein korrigierbares Fehlerbündel in den Bits 2 bis b + 1 des übertragenen Nachrichtenblocks aufgetreten ist.
Jede weitere Verschiebung im Register verschiebt die Spanne, innerhalb der ein Fehlerbündel erkennbar ist, um eine Bitstelle. Die Verschiebung kann n—o-mal erfolgen, wobei η die Gesamtlänge des Nachrichtenblocks ist. In denVhier betrachteten Beispiel ist r = 100, b = 90 und η = 200 (100 Datenbits + 100 Redundanzbits).
In F i g. 3 ist weiterhin die Korrekturschaltung 50 dargestellt. Während der Zeit, in welcher die eintreffende Nachricht in dem Decoder 39 zur Errechnung eines Prüfwortes benutzt wird, wird die Nachricht ebenfalls in einem Pufferspeicher 52 gespeichert. Der Pufferspeicher kann ein Schieberegister, eine Verzögerungsleitung, ein Kernspeicher, ein Magnetband oder ein anderes geeignetes Speichermedium sein. Nach dem Eintreffen des letzten Bits der Nachricht ist das Prüfwort in den Stufen 1 bis 100 des Schieberegisters im Decodierer 39 enthalten und die empfangene Nachricht im Pufferspeicher 52.
Wenn in den ersten neunzig übertragenen Bits ein Fehlerbündel enthalten ist, dann enthalten die Stufen 1 bis 10 des Schieberegisters lauter Nullen, und die Stufen 11 bis 100 (die b werthöchsten Stufen) des Schieberegisters enthalten das Fehlermuster. Mit der UND-Schaltung 54 kann man feststellen, ob die Stufen 1 bis 10 des Schieberegisters lauter Nullen enthalten. Die UND-Schaltung 54 hat zehn Eingänge, von denen jeder mit dem Ausgang einer der Stufen 1 bis 10 des Schieberegisters verbunden ist. Wenn alle Stufen 1 bis 10 des Schieberegisters Nullen enthalten, erscheint auf der Ausgangsleitung 56 der UND-Schaltung 54 ein Signal. Die Ausgangsleitung 56 der UND-Schaltung 54 speist einen von drei Eingängen der UND-Schaltung 58. Eine andere Eingangsleitung der
UND-Schaltung 58 ist mit dem Ausgang der Stufe 100 (der letzten Stufe) des im Decodierer 39 enthaltenen Schieberegisters verbunden. Der dritte Eingang der UND-Schaltung 58 ist an eine Leitung 60 angeschlossen. Der Ausgang der UND-Schaltung 58 ist mit einem Eingang der ausschließlichen ODER-Schaltung 62 verbunden. Der andere Eingang dieser ausschließlichen ODER-Schaltung 62 ist an den Ausgang des Pufferspeichers 52 angeschlossen. Der Ausgang der ausschließlichen ODER-Schaltung 62 ist direkt mit der Ausgangsleitung 64 des Systems verbunden.
Wenn eine der Stufen 1 bis 10 des Schieberegisters keine Null enthält, zeigt das an, daß einer oder mehrere Fehler außerhalb der ersten neunzig Bits aufgetreten sind. Um zu bestimmen, ob ein korrigierbares Fehlerbündel aufgetreten ist und wo es liegt, wird der Inhalt des rückgekoppelten Schieberegisters verschoben und die ersten 10 Stufen noch einmal auf Nullgehalt geprüft. Diese Verschiebung wird so lange wiederholt, bis die ersten 10 Stufen lauter Nullen enthalten (wodurch die Lage des zu korrigierenden Fehlerbündels angezeigt wird) oder bis n—^-Verschiebungen stattgefunden haben, ohne daß die ersten 10 Stufen alle Nullen enthalten (wodurch ein nicht korrigierbarer Fehler angezeigt wird), wobei η die Gesamtlänge des Nachrichtenblocks und b die größte Länge eines korrigierbaren Fehlerbündels ist.
Wenn die Lage eines Fehlerbündels einmal ermittelt ist, muß, der Inhalt des Schieberegisters des Decodierers 39 "verschoben werden, ohne daß die Rückkopplungsverbindungen wirksam sind. Zu diesem Zweck wird hinter der hundertsten Stufe des Schieberegisters im Decodierer 39 die UND-Schaltung 66 angeordnet. Ein Eingang der UND-Schaltung 66 wird durch den Ausgang der hundertsten Stufe des Schieberegisters gespeist. Der andere Eingang der UND-Schaltung 66 ist mit dem Ausgang einer Inverter-Schaltung 68 verbunden, deren Eingang an den Ausgang der UND-Schaltung 58 angeschlossen ist.
Während der Errechnung des Prüfwortes befindet sich kein Signal auf der Leitung 60. Infolgedessen liefert auch die UND-Schaltung 58 kein Ausgangssignal. Während dieser Zeit liefert der Inverter 68 ein Ausgangssignal und macht über die UND-Schaltung 66 die Rückkopplungsverbindungen des Schieberegisters im Decodierer 39 wirksam. Nach Errechnen des Prüfwortes erscheint ein Signal auf der Leitung 60. Wenn dann in allen Stufen 1 bis 10 des Schieberegisters Nullen erscheinen (dadurch wird angezeigt, daß ein korrigierbares Fehlerbündel lokalisiert wurde), gibt die UND-Schaltung 58 ein Ausgangssignal ab, sobald eine Eins in der Stufe 100 des Schieberegisters erscheint. Dieses Ausgangssignal der UND-Schaltung 58 sperrt über den Inverter 68 die UND-Schaltung 66 und verhindert eine Rückkopplung innerhalb des Schieberegisters. Die beschriebene Anordnung ist nur ein Beispiel von vielen, um die Rückkopplungsverbindungen des Schieberegisters unwirksam zu machen, wenn ein korrigierbarer Fehler lokalisiert worden ist.
Der in F i g. 3 dargestellte Decoder 39 und die Korrekturschaltung 50 erkennen Fehler und korrigieren diese durch Ausführen der folgenden Schritte:
1. Die ganze empfangene Nachricht wird in den Pufferspeicher 52 und gleichzeitig in das Schieberegister des Decoders 39 gelesen. Der Inhalt des rückgekoppelten Schieberegisters des Decoders 39 wird bei jedem eintreffenden Bit verschoben. Der Pufferspeicher 52 weist keine Rückkopplung auf. Während dieser Zeit befindet sich auf der Leitung 60 kein Signal.
2. Die empfangene Nachricht wird dann aus dem Pufferspeicher 52 Bit für Bit ausgelesen und der Inhalt des rückgekoppelten Schiederegisters im Decoder 39 um einen Schritt pro Bit verschoben, ohne daß Eingangsimpulse dem Register zugeleitet werden. Während dieses und des nächsten Schrittes ist ein Signal auf der Leitung 60 vorhanden.
ίο 3. Sobald lauter Nullen in den ersten 10 Stufen des Schieberegisters erscheinen, ist das Fehlermuster in den letzten 90 Stufen des Schieberegisters enthalten, und die falschen Bits erscheinen am Ausgang des Pufferspeichers 52. Da auf den Leitungen 56 und 60 Signale auftreten, liefert die UND-Schaltung 58 jedesmal ein Ausgangssignal, wenn eine Eins in der Stufe 100 des Schieberegisters auftaucht. So wird durch die ausschließliche ODER-Schaltung 62 jedes aus dem Pufferspeicher 52 kommende fehlerhafte Bit komplementiert, bevor es auf die Ausgangsleitung 64 übertragen wird.
Obwohl das beschriebene System Fehler in den Redundanzbits korrigieren kann, ist im allgemeinen nur die Korrektur von Fehlern in den Datenbits erforderlich. Trotzdem müssen in dem Schieberegister genug Verschiebungen vorgenommen werden um festzustellen, ob ein aufgetretener Fehler tatsächlich korrigierbar war.
Obwohl in obiger Beschreibung die Kapazität des' Pufferspeichers 52 so groß angenommen wurde, daß er die ganze übertragene Nachricht aufnehmen kann, ist das nicht unbedingt erforderlich. Wenn nur die Datenbits korrigiert werden sollen, braucht der Pufferspeicher nur so groß zu sein, daß er alle übertragenen Datenbits aufnehmen kann. Für das zugrunde gelegte Beispiel würde ein Pufferspeicher mit einer Kapazität von 100 Bits ausreichen, um alle übertragenen Datenbits festzuhalten. In einem System, in dem die Redundanzbits für die Fehlererkennung und -korrektur nicht im Pufferspeicher gespeichert werden sollen, müßte der Eingang des Pufferspeichers vom Eingang des Systems getrennt werden. Eine Möglichkeit hierzu bietet der Einsatz einer UND-Schaltung 72 zwischen dem Eingang des Pufferspeichers und dem Eingang des Systems. Die Leitung 74 gestattet das Speichern von Bits im Pufferspeicher, während diese beim System eintreffen. Während der Zeit, in welcher die Redundanzbits für die Fehlererkennung und -korrektur in das System gelangen, erscheint kein Signal auf der Leitung 74, und die UND-Schaltung 72 würde daher das Speichern von Redundanzbits in dem Pufferspeicher 52 verhindern.
Wie vorher bereits beschrieben wurde, enthält die Korrekturschaltung 50 ein weiteres Schieberegister (nicht dargestellt), das das Prüfwort aus dem Decoder 39 aufnimmt, so daß dieses sofort mit dem Decodieren der nächsten Nachricht beginnen kann. Ein derartiges Schieberegister in der Korrekturschaltung ist mit dem im Decoder 39 dargestellten identisch mit der Ausnähme, daß die vom Decodereingang ausgehende Rückkopplungsleitung wegfallen kann, weil keine Eingangssignale vorhanden sind, während das Prüfwort untersucht wird.
Die Erfindung ermöglicht durch Verwendung von nur 100 Redundanzbits die Korrektur von Fehlerbündeln bis zu einer Länge von 90 Bits. Das stellt eine große Verbesserung gegenüber dem bisherigen Stand der Technik dar, nach dem mindestens 180 Redundanz-
bits erforderlich waren, um Fehlerbündel mit einer Länge von 90 Bits korrigieren zu können. So würde z. B. die Anwendung eines Fire-Codes für die Korrektur von Fehlerbündeln mit einer Länge von 90 Bits etwa 270 Redundanzbits erfordern.
Ein weiterer bedeutender Vorteil der Erfindung ergibt sich aus dem neuen Merkmal der Verwendbarkeit jedes Polynoms der entsprechenden Länge (oder Grades) als Codepolynom, Das wiederum gestattet die Auswahl eines Polynoms, das eine sehr einfache Schaltung erfordert. Wenn z. B. ein Polynom ausgewählt wird, das nur wenige Rückkopplungsverbindungen für das System verwendeten Schieberegisters erfordert, können viele Stufen des Schieberegisters einfach durch eine Verzögerungsleitung ersetzt werden. Aus diesem Grunde ist bei der Realisierung der Erfindung die Verwendung mikrominiaturisierter Schaltungen viel leichter möglich als das sonst der Fall wäre.
Ein weiterer Vorteil der Erfindung liegt darin, daß die UND-Schaltung 54 zur Untersuchung der ersten r—δ-Stufen des Schieberegisters viel kleiner ist (weit weniger Eingänge hat) als die bisher benutzten. In dem oben gegebenen Beispiel reichte eine UND-Schaltung mit 10 Eingängen aus, um ein Fehlerbündel von einer Länge bis zu .90 Bits zu erkennen und zu lokalisieren, wogegen nach dem Stand der Technik hierzu eine UND-Schaltung mit 180 Eingängen erforderlich gewesen wäre.
,Somit ist ein System gemäß dieser Erfindung einfacher zu realisieren als das nach dem Stand der Technik möglich ist, während gleichzeitig größere Fehlerbündel in kürzerer Zeit korrigiert werden können als bisher.
Um die Beschreibung nicht zu sehr auszudehnen, wurden für das vorher beschriebene Ausführungsbeispiel der Erfindung keine Zahlenbeispiele gebracht, die genau zeigen, wie Nachrichten von dem System verarbeitet werden. Um jedoch ein vollständiges Verständnis dieser Erfindung weiter zu erleichtern, werden jetzt alle Einzelheiten an Hand bestimmter Beispiele für ein kleineres System zur Korrektur von Fehlerbündeln beschrieben, das das Prinzip dieser Erfindung zeigt. Daraus ist zu ersehen, daß sowohl die vorher beschriebene Anordnung als auch noch größere Ausführungen in genau derselben Art und Weise arbeiten wie das im folgenden zu beschreibende Beispiel. Obwohl dieses Beispiel die praktischen Vorteile der Erfindung nicht klarlegt, dient es doch zur Illustration des Arbeitsprinzips der Erfindung.
Für die folgenden einfachen Beispiele wird angenommen, daß Daten in Blocks von 8 Bits Länge in das System gelangen. Wenn weiterhin ein Code mit gleich vielen Informations- und Redundanzbits angenommen wird, wird für das Codepolynom ein Polynom achten Grades benötigt. Das Codepolynom P(X) = Xs + X* + X* + X2 + X + 1 wurde für die folgenden Beispiele ausgewählt. Da r > b-\-2log (n+1) sein muß, wobei r der Grad des Codepolynoms, b die größte Länge eines korrigierbaren Fehlerbündels und η die Länge des Nachrichtenblocks ist, kann das jetzt zu beschreibende System Fehlerbündel erkennen und korrigieren, die drei oder weniger Bitpositionen einnehmen.
Codieren einer Nachricht
In F i g. 4 ist eine Anordnung dargestellt, mit der eine ankommende Nachricht D(X) mit Λ'8 multipliziert werden kann, während sie gleichzeitig durch das Codepolynom P(X) = Xs + X* + Xs + X +1 dividiert wird. Viele Einzelheiten über Taktgabe, Verschiebungsleitungen usw. wurden um der Klarheit der Zeichnung willen weggelassen. Die Eingangsleitung 210 ist mit dem Eingang einer UND-Schaltung 212, die zwei Eingänge hat, verbunden. Deren Ausgang ist mit einem Eingang einer ODER-Schaltung 214 verbunden, deren Ausgang wiederum direkt an die Ausgangsleitung 216 angeschlossen ist. Die Eingangsleitung 210
ίο ist ebenfalls mit einem der Eingänge eines Modulo-2-Addierers 218 verbunden. Am Ausgang 220 des Modulo-2-Addierers 218 erscheinen die Eingangssignale für ein Schieberegister 222, dessen Stufen mit den Ziffern 1 bis 8 bezeichnet sind. Die niedrigen Ziffern entsprechen den niederwertigen Stufen des Schieberegisters, und die Verschiebung erfolgt von links nach rechts. Die Ausgangssignale der letzten Stufe 8 dieses Schieberegisters werden den UND-Schaltungen 224 und 226 zugeführt. Das Ausgangssignal der UND-Schaltung 224 speist den zweiten Eingang des Modulo-2-Addierers 218. Der Ausgang der UND-Schaltung 226 speist einen zweiten Eingang
der ODER-Schaltung 214. ■ -
Beim Codieren von Nachrichtenbits in dem dargestellten G erät werden zunächst sämtliche Informationen im Schieberegister 222 durch einen nicht dargestellten Taktimpuls gelöscht. Die UND-Schaltung 212 wird durch ein Taktsignal auf Leitung 228 erregt, das die Eingangsdaten auf der Leitung 210 direkt über die UND-Schaltung 212 und die ODER-Schaltung 214 auf die Ausgangsleitung 216 gelangen läßt. Die UND-Schaltung 224 wird durch ein Signal auf der Leitung 230 erregt, während die UND-Schaltung 226 durch ein Signal auf der Leitung 232 gesperrt wird. Somit wird das Ausgangsbit der letzten Stufe 8 des Schieberegisters 222 über die UND-Schaltung 224 und die Leitung 234 auf den Modulo-2-Addierer 218 rückgekoppelt, wo es modulo-2 zum Eingangsbit auf der Leitung 210 addiert wird. So erscheint das Eingangsbit nach acht Verschiebungen am Ausgang des Schieberegisters. Das ist gleichbedeutend mit einer Multiplikation des Eingangs mit Xa. Die Rückkopplungsleitungen, die von der Leitung 220 ausgehen, geben die Rückkopplungsinformation in das Schieberegister und komplementieren dadurch die verschobenen Stellen so, daß sie dem Codepolynom entsprechen. So komplementiert z. B. der Modulo-2-Addierer 236 das Ausgangsbit der Stelle 2 des Schieberegisters entsprechend dem Ausdruck X2 von P(X). Dadurch erfolgt eine Division der Eingangsdaten durch das Codepolynom, wodurch nur die Restbits R(X) im Schieberegister bleiben, nachdem alle Datenbits am Eingang 210 eingetroffen sind.
Nachdem alle Informationsbits empfangen wurden, werden die Leitungen 228 und 230 spannungslos gemacht, wodurch sowohl der Datenfluß zur Ausgangsleitung als auch die Rückkopplungsverbindung von der Ausgangsstufe 8 des Schieberegisters unterbrochen wird. Zur gleichen Zeit wird Leitung 232 eingeschaltet und gestattet den Inhalt des Schieberegisters über die UND-Schaltung 226 und die ODER-Schaltung 214 auf die Ausgangsleitung zu geben. Somit wird nach den Datenbits der Rest, der sich bei der Division durch das Codepolynom ergab, ausgeschoben und an das Ende der Nachricht angehängt. Die folgende Tabelle zeigt den Inhalt des Schieberegisters während des Codierens einer als Beispiel gewählten Datenbitfolge 10001001.
1 15 2 3 4 5 16 6 7 8
Eingabe O O O O O O O O
Löschen 1 1 1 O 1 O 1 O
1 O 1 1 1 O 1 O 1
O 1 1 O 1 O O O O
O O 1 1 O 1 O O O
O 1 1 O 1 1 1 1 O
1 O 1 1 O 1 1 1 1
O 1 1 O 1 1 1 O 1
O O 1 1 O 1 1 1 O
1
Der Rest ist O*7 - IX* ■+ IXs - \Xl - I*3 -t- I*2 -f- IX-r 0. Wenn die Restbits an das Ende der Datenbits 10001001 angehängt werden, wird die übertragene Nachricht zu 1000100101110110. Die werthöchsten Bits werden zuerst übertragen.
Decodieren einer Nachricht
Beim Decodieren wird die empfangene Nachricht untersucht und ein Syndrom (Prüfwort) aus ihr gebildet. Das Syndrom wird dann bei der Korrektur benutzt.
Wie bereits oben beschrieben, ist ein Decoder zur Errechnung des Prüfwortes erfindungsgemäß wie folgt konstruiert: Wenn P(X) das Codepolynom bezeichnet und r den Grad von P(X) und η die Blocklänge der übertragenen Nachricht, sind die Koeffizienten von bi so zu berechnen, daß
r-1
35
modul P(X). Ai bezeichnet den Koeffizienten von X* in P(X). Es ist ein rückgekoppeltes Schieberegister für r Bits zu konstruieren, dessen Stufen von 1 bis r numeriert sind und bei dem die Verschiebung von den Stufen mit den niederen zu denen mit den höheren Nummern erfolgt. Zwischen die Stufen / und /-Kl ist eine ausschließliche ODER-Schaltung (Modulo-2-Addierer) zu schalten, wenn a< oder bi = 1 ist, wobei die /-te Stufe ein Eingangssignal für die ausschließliche ODER-Schaltung und die Rückkopplungsverbindung, die weiter unten noch definiert wird, das andere Eingangssignal liefert. Der Inhalt wird von Stufe / nach Stufe /+1 verschoben.
In den Fällen, in denen a< = 1 und A< = 0 ist, geht die Rückkopplungsverbindung für die zwischen den Stufen / und /+1 angeordnete ausschließliche ODER-Schaltung vom Ausgang der r-ten Stufe aus. In den Fällen, in denen a< = 0 und bi = 1 ist, geht die Rückkupplungsverbindung vom Eingang des Schieberegisters aus. In den Fällen, in denen a< = 1 und A< = 1 ist, geht die Rückkopplungsverbindung vom Ausgang einer ausschließlichen ODER-Schaltung aus, deren einer Eingang mit dem Ausgang der r-ten Stufe und deren anderer Eingang mit dem Eingang des Schieberegisters verbunden ist. Der Registerinhalt des rückgekoppelten Schieberegisters wird beim Eintreffen jedes Bits eines codierten Nachrichtenblocks verschoben. Nach η Verschiebungen befinden sich alle Bits in dem Register, und das Register enthält das dem empfangenen Nachrichtenblock entsprechende Prüfwort (Syndrom).
Im Falle des Codepolynoms P(X) 8 + Ρ^Γ - X2 - X -hl sind die a( Werte a0 =1, ax = 1, a, = 1, a3 = 0, a4 = 1, as = 1, as = 1 und G7 = 0. Wie vorher braucht ar, das in diesem Beispiel aB entspricht, beim Aufbau des Schieberegisters nicht berücksichtigt zu werden. Bei dem oben als Beispiel gegebenen Codepolynom erhält man durch einfaches algebraisches Umformen die Werte für b{. Es ist dabei zu berücksichtigen, daß alle Additionen und Subtraktionen modulo-2 auseeführt · werden. Wenn P(X) = Xs - X6 -i- X* τ X1 -r X - 1 ist, dann ist b0 = 1, bx = 1, b2 = 1, 63 = 0, bi = 1, 65 = 1, bt = 1 und b-, = 1.
In F i g. 5 ist ein Decoder 239 dargestellt, der ein nach den obigen Parametern aufgebautes Schieberegister enthält. Das Schieberegister hat 8 Stufen mit den Bezeichnungen Sl bis S8, wobei die höheren Zahlen den höhenvertigen Stellen des Schieberegisters entsprechen. Das Verschieben erfolgt von links nach rechts. Aus den oben gegebenen Werten für a< und bt ist zu ersehen, daß mit Ausnahme der dritten und vierten Stufe eine ausschließliche ODER-Schaltung zwischen je zwei nebeneinanderliegende Stufen des Schieberegisters angeordnet werden muß. (Zwischen der dritten und vierten Stufe wird keine ausschließliche ODER-Schaltung benötigt, da a3 = 0 und b3 = 0 ist.) Da a0 = 1 und b0 = 1 ist, wird das Eingangssignal für die Stufe 51 des Schieberegisters vom Ausgang der ausschließlichen ODER-Schaltung 240 geliefert, deren Eingänge mit dem Ausgang der Stufe S8 des Schieberegisters und der Eingangsklemme für die Nachrichtenbits verbunden sind. [Wenn z. B. ein Codepolynom P(X) so ausgewählt wird, daß a0 = 1 und b0 = 0 ist, würde das Eingangssignal für die erste Stufe des Schieberegisters direkt vom Ausgang der Stufe 58 des Schieberegisters geliefert.] Da für / =1, 2, 4 und 6 at = 1 und bi = 1 ist, ist das zweite Eingangssignal für die hinter den Stufen 51, 52, 54 und 56 des Schieberegisters angeordneten ausschließlichen ODER-Schaltungen die aus dem Ausgangssignal der achten Stufe des Schieberegisters und den eintreffenden Nachrichtenbits gebildete Summe modulo-2. Da für / = 5 und 7 gilt; o< = 0 und bi = 1, wird das zweite Eingangssignal für jede der ausschließlichen ODER-Schaltungen hinter der fünften und siebten Stufe des Schieberegisters direkt von den eintreffenden Nachrichtenbits gebildet. In dem gegebenen Beispiel existiert kein Wert für /, für den U1 = 1 und bi = 0 ist. Wenn ein solcher /-Wert vorläge, erhielte die ausschließliche ODER-Schaltung hinter der /-ten Stufe des Schieberegisters ihr zweites Eingangssignal vom Ausgang der achten (r-ten) Stufe des Schieberegisters.
509 516/262
Bei der Beschreibung der Codierschaltung nach F i g. 5 wurde gezeigt, daß ein Block von Datenbits 10001001 als folgende Nachricht codiert wird 1000100101110110. ~Wenn eine derartige Nachricht ohne Ubertragungsfehler von der Codierschaltung der
F i g. 5 empfangen wird, sollte das errechnete Prüfwort (Sandrom) lauter Nullen enthalten. Die folgende Tabelle zeigt den Inhalt jeder Stufe des Schieberegisters während der Errechnung des Prüfwortes für die Nachricht 1000100101110110.
Eingang 1 2 3 4 5 6 7 8
Löschen O O O O O O O O
1 1 1 1 1 1 1 1 1
O 1 O O H-* 1 1 O 1
O 1 O 1 O O 1 O O
O O 1 O 1 O O 1 O
1 1 1 O O O 1 1 O
O O 1 1 O O O 1 1
O 1 1 O 1 1 O 1 1
1 O 1 1 O 1 O O O
O O O 1 1 O 1 O ο ■
1 1 1 1 1 O H-* O 1
i O 1 1 1 1 1 1 1
1 O O 1 1 1 O 1 O
O O O O 1 1 1 O 1
i O O O O 1 O 1 1
1 O O O O O O O Q
* . O O O O O O O O O
Somit errechnet der Decoder richtig ein Prüfwort, das lauter Nullen enthält, wenn die Nachricht ohne Fehler empfangen wurde.
Korrekturschaltung
Wie oben beschrieben wird die Bedingung von lauter Nullen in den r—b wertniedrigsten Stellen des Restes (wobei r die Anzahl der Stufen des Schieberegisters und b die Länge eines korrigierbaren Fehlerbündels ist) dazu benutzt, ein Fehlerbündel in den ersten übertragenen b Bits anzuzeigen, wobei das Muster von Einsen im Rest das Fehlermuster darstellt. Wenn die Bedingung für das Vorliegen eines korrigierbaren Fehlerbündels nicht erfüllt ist, können die Restbits um eine Position verschoben und dieselbe Bedingung geprüft werden, um zu ermitteln, ob ein korrigierbares Fehlerbündel in den Bits 2 bis b—1 des übertragenen Nachrichtenblocks aufgetreten ist. Jede folgende Verschiebung des Registers verschiebt die Spanne, innerhalb derer das Fehlerbündel erkannt werden kann, um eine Bitstelle. Die Verschiebung kann n—i-mal erfolgen, wobei η die Gesamtlänge des Nachrichtenblocks ist.
In F i g. 5 ist die Korrekturschaltung 250 dargestellt. Während die eintreffende Nachricht in dem Decoder 239 zur Errechnung des Prüfwortes benutzt wird, wird die Nachricht im Pufferspeicher 252 gespeichert. Nachdem das letzte Bit der Nachricht in das System gelangt ist. ist in den Stufen Sl bis S8 des Schieberegisters im Decoder 239 das Prüfwort enthalten und die gesamte empfangene Nachricht im Pufferspeicher 252. Der Pfferspeicher 252 kann aus einem Schieberegister, einer Verzögerungsleitung, einem Kernspeicher, einem Magnetband oder einem anderen geeigneten Speichermedium bestehen.
Wenn ein korrigierbares Fehlerbündel in den ersten drei übertragenen Bits aufgetreten ist. enthalten die Stufen 51 bis S5 des Schieberegisters Nullen und die Stufen 56 bis 58 (die b höchstwertigen Stufen) des Schieberegisters das Fehlermuster. Um zu bestimmen, ob die Stufen 51 bis 55 des Schieberegisters Nullen enthalten, ist die UND-Schaltung 254 vorgesehen.
Die UND-Schaltung 254 hat fünf Eingänge, von denen jeder mit dem Ausgang einer der Stufen 51 bis 55 des Schieberegisters verbunden ist. Wenn alle Stufen 51 bis 55 des Schieberegisters Nullen enthalten, erscheint ein Signal auf der Ausgangsleitung 256 der UND-Schaltung 254. Die Ausgangsleitung 256 der UND-Schaltung 254 speist einen der drei Eingänge der UND-Schaltung 258. Ein anderer Eingang der UND-Schaltung 258 wird durch den Ausgang der Stufe 58 des Schieberegisters, das in dem Decoder 239 enthalten ist, gespeist. Der dritte Eingang der UND-Schaltung 258 ist mit der Leitung 260 verbunden. Der Ausgang der UND-Schaltung 258 ist mit einem Eingang der ausschließlichen ODER-Schaltung 262 verbunden. Der andere Eingang der ausschließlichen ODER-Schaltung 262 ist an den Ausgang des Pufferspeichers 252 angeschlossen. Der Ausgang der ausschließlichen ODER-Schaltung 262 ist direkt mit der Ausgangsleitung 264 des Systems verbunden.
Wenn ein Fehlerbündel einmal lokalisiert worden ist, muß der Inhalt des Schieberegisters des Decoders 239, ohne daß die Rückkopplungsverbindungen wirksam sind, verschoben werden. Zu diesem Zweck ist hinter der achten Stufe des Schieberegisters die UND-
19 20
Schaltung 266 angeordnet. Ein Eingang der UND- empfangene Bit (1) wird vom Pufferspeicher 252 auf
Schaltung 266 ist mit dem Ausgang der Stufe 8 des die Ausgangsleistung gesendet. Nach dieser ersten
Schieberegisters verbunden, der andere Eingang mit Verschiebung enthalten die Stufen Sl bis S8 des
dem Ausgang der Inverterschaltung 268, deren Ein- Schieberegisters die Werte 000101000. Da die ersten
gang vom Ausgang der UND-Schaltung 258 gespeist 5 fünf Stufen des Schieberegisters nicht lauter Nullen
wird. enthalten, gelangt bei der nächsten Verschiebung das
Während der Errechnung des Prüfwortes befindet zweite empfangene Bit (0) vom Pufferspeicher 252 sich kein Signal auf der Leitung 260. Daher liefert die auf die Ausgangsleitung 264. Nach dieser zweiten UND-Schaltung 258 auch kein Ausgangssignal. Da Verschiebung enthalten die acht Stufen des Schiebehierdurch das Ausgangspotential der Inverterschal- io registers die Werte 00001010. Nach der zweiten Vertung 268 positiv wird, gestattet die UND-Schaltung 266 Schiebung stehen immer noch nicht lauter Nullen in den das Wirksamwerden der Rückkopplungsverbindung ersten fünf Stufen des Schieberegisters. Daher gelangt des Schieberegisters in dem Decoder 239. Nachdem nach der dritten Verschiebung die dritte empfangene das Prüfwort errechnet worden ist, erscheint ein Signal Ziffer (0) vom Pufferspeicher auf die Ausgangsleitung, auf der Leitung 260. Wenn dann in den Stufen 51 15 Nach der dritten Verschiebung enthalten die acht bis S5 des Schieberegisters überall Nullen erscheinen Stufen des Schieberegisters die Werte 00000101. Nach (wodurch angezeigt wird, daß ein korrigierbares der dritten Verschiebung enthalten die Stufen 51 Fehlerbündel lokalisiert wurde), liefert die UND- bis 55 des Schieberegisters lauter Nullen und daher Schaltung 258 ein Ausgangssignal, sobald eine Eins erscheint ein Signal auf der Leitung 256. Jetzt wird also in der achten Stufe des Schieberegisters erscheint. 20 bei der vierten Verschiebung die 1 in der achten Stufe Damit wird die UND-Schaltung 266 gesperrt und des Schieberegisters mittels der ausschließlichen ODER-die Rückkopplungsverbindung des Schieberegisters Schaltung 262 modulo-2 zu der 1 addiert, die aus dem unwirksam gemacht. Die angegebene Lösung ist nur Pufferspeicher 252 kommt und auf der Ausgangsein Beispiel aus den vielen Möglichkeiten, das Un- leitung 264 so eine Null erzeugt. Dadurch ist der wirksammachen der Rückkopplungsverbindung des 25 Fehler, der das vierte empfangene Bit zu einer 1 machte, Schieberegisters zu erreichen, wenn ein korrigierbarer korrigiert. Während der Korrektur wird die UND-Fehler lokalisiert worden ist. Schaltung 266 durch das Ausgangssignal der UND-
Die in F i g. 5 dargestellte Korrekturschaltung 250 Schaltung 258 gesperrt und dadurch die Rückkopp---
und der'Decoder 239 erkennen und korrigieren Fehler lungsverbindung innerhalb des Schieberegisters unter-
durch Ausführung der folgenden Schritte: 3° brochen. Somit enthalten nach der vierten Verschie-
1. Die ganze empfangene Nachricht wird in den bung die Stufen 51 bis 58 des Schieberegisters die Pufferspeicher 252 und gleichzeitig in das Schiebe- Ziffern 00000010. Bei der fünften Verschiebung gelangt register des Decoders 239 eingegeben. Der Inhalt des die richtig empfangene fünfte Ziffer (1) aus dem Pufferrückgekoppelten Schieberegisters des Decoders 239 speicher auf die Ausgangsleitung. Diese Ziffer wird wird jedesmal verschoben, wenn ein Bit in das System 35 durch die in der achten Stufe des Schieberegisters ergelangt. Der Pufferspeicher 252 besitzt keine Rück- scheinende Null nicht beeinflußt. Nach der fünften kupplungsverbindung. Während dieser Zeit ist auf Verschiebung enthalten die Stufen 51 bis 58 des der Leitung 260 kein Signal vorhanden. Schieberegisters die Werte 00000001. Somit wird bei
2. Jetzt wird die empfangene Nachricht Bit für Bit der sechsten Verschiebung die 1, die aus dem Pufferaus dem Pufferspeicher ausgelesen und der Inhalt des 4° speicher 252 kommt, modulo-2 zu der 1 addiert, die in rückgekoppelten Schieberegisters im Decoder 239 für der achten Stufe des Schieberegisters erscheint und so jedes Bit einmal verschoben, wobei am Eingang des eine Null auf der Ausgangsleitung erzeugt. Nach der Decoders keine Bits eintreffen. Während dieses sechsten Verschiebung sind beide bei der Übertragung Schrittes (und während des nächsten) ist auf der aufgetretene Fehler korrigiert, und alle Stufen des Leitung 260 ein Signal vorhanden. 45 Schieberegisters enthalten lauter Nullen. Somit ge-
3. Sobald in den ersten fünf Stufen des Schiebe- langen bei allen folgenden Verschiebungen die Stellen registers lauter Nullen erscheinen, befindet sich das unverändert aus dem Pufferspeicher 252 auf die Fehlermuster in den drei werthöchsten Stufen des Angangsleitung 264.
Registers, und die falschen Bits kommen jetzt aus dem Wenn nach n—b-Verschiebungen (wobei η die Pufferspeicher 252. Da sich auf den Leitungen 256 50 Blocklänge der Nachricht und b die Länge eines und 260 Signale befinden, liefert die UND-Schaltung korrigierbaren Fehlerbündel ist) die Bedingung nicht 258 jedesmal ein Ausgangssignal, wenn eine 1 in der erfüllt ist, daß in den ersten fünf Stufen des Schiebeachten Stufe des Schieberegisters erscheint. Somit registers lauter Nuller stehen, zeigt das an, daß ein sorgt die ausschließliche ODER-Schaltung 262 dafür, nicht korrigierbarer Fehler aufgetreten ist. daß die falschen Bits aus dem Pufferspeicher 252 55 Das in F i g. 5 dargestellte System kann ebenfalls komplementiert werden, bevor sie auf die Ausgangs- Fehlerbündel entdecken, die in den Redundanzbits leitung 264 übertragen werden. (zur Fehlererkennung und -korrektur) aufgetreten Um an einem Beispiel die Fehlerkorrektur zu zeigen, sind. Wenn z. B. die empfangene Nachricht in den Bitsei angenommen, daß das vierte und sechste Bit in der stellen 13 und 15 fehlerhafte Bits enthielt (d. h. die empfangenen Nachricht falsch waren. In diesem Fall 60 empfangene Nachricht war 1000100101111100) könnte ist die empfangene Nachricht 1001110101110110. Nach dieser Fehler korrigiert werden. Nachdem das Prüf-Errechnung des Prüfwortes enthalten die Stufen 51 wort errechnet ist, enthalten die Stufen 51 bis 58 des bis 58 des Schieberegisters im Decoder 239 die Werte Schieberegisters die Werte 11001111. Nach jeder Ver-00101000. Da die ersten fünf Stufen des Schiebe- Schiebung enthält dann das Schieberegister die in der registers nicht lauter Nullen enthalten, erscheint kein 65 folgenden Tabelle angegebenen Werte. Die erste EinSignal am Ausgang 256 der UND-Schaltung 254. tragung in der Tabelle zeigt das Prüfwort. Jede nach-Der Inhalt des Pufferspeichers und des rückgekoppelten folgende Eintragung gibt den Inhalt der 8 Stufen des Schieberegisters wird dann verschoben, und das erste Schieberegisters nach einer Verschiebung an.
Prüfwort
1. Verschiebung
2. Verschiebung
3. Verschiebung
4. Verschiebung
5. Verschiebung
6. Verschiebung
7. Verschiebung
8. Verschiebung
9. Verschiebung
10. Verschiebung
11. Verschiebung
12. Verschiebung
1 2 3 4 5 6 7
1 1 0 0 1 . 1 1
1 0 0 0 1 1 0
1 0 1 0 1 1 0
0 1 0 1 0 1 1
0 0 1 0 1 0 1
1 1 1 1 1 1 1
1 0 0 1 0 1 0
1 0 1 0 0 0 0
0 1 0 1 0 0 0
0 0 1 0 1 0 0
0 0 0 1 0 1 0
0 0 0 0 1 0 1
0 0 0 0 0 1 0
1 1 0 0 1 1 1 0 0 0 0 0 1
Wie in der Tabelle dargestellt, enthalten nach Ausführung von zwölf Verschiebungen die ersten fünf Stufen des Schieberegisters lauter Nullen. Zum gleichen Zeitpunkt sind ebenfalls die ersten zwölf (richtig empfangenen) Bits vom Pufferspeicher auf die Ausgangsleitung'gelangt. Die fehlerhaften Bits auf den Stellen 13 und 15 können wie oben beschrieben korrigiert werden.
Im allgemeinen brauchen Fehler in den Redundanzbits .nicht korrigiert zu werden, sondern nur solche in den Datenbits. Im Schieberegister müssen jedoch genügend Verschiebungen vorgenommen werden, um festzustellen, daß ein aufgetretener Fehler korrigierbar ist.
Obwohl in den oben gegebenen Beispielen angenommen wurde, daß der Pufferspeicher 252 die ganze übertragene Nachricht aufnehmen kann, ist das keine notwendige Voraussetzung. Wenn nur Datenbits korrigiert werden sollen, braucht der Pufferspeicher nur so groß sein, daß er alle übertragenen Datenbits aufnehmen kann. In den oben gegebenen Beispielen hätte ein Pufferspeicher mit einer Kapazität von 8 Bits voll ausgereicht, um alle übertragenen Datenbits aufzunehmen. In einem System, in welchem die Redundanzbits nicht im Pufferspeicher gespeichert werden, muß der Eingang des Pufferspeichers vom Eingang des Systems getrennt werden. Das kann durch Anordnen einer UND-Schaltung 72 zwischen den Eingang des Pufferspeichers und den Systemeingang erfolgen. Die Leitung 74 gestattet die Speicherung von Bits in den Pufferspeicher während der Zeit, in welcher Datenbits in das System gelangen. Während der Zeit, in welcher Redundanzbits in das System gelangen, erscheint kein Signal auf der Leitung 74, und die UND-Schaltung 72 sperrt dann für die Redundanzbits den Eingang des Pufferspeichers 252.
System zum Codieren, Decodieren und Korrigieren
In F i g. 6 sind Einzelheiten eines kombinierten Systems zum Codieren, Decodieren und Korrigieren von Nachrichten gegeben, welches die oben beschriebene vereinfachte Version dieser Erfindung enthält. Das System kann eine Nachricht codieren, ein Prüfwort für eine codierte Nachricht erzeugen und Fehlerbündel erkennen und korrigieren, die in einer codierten Nachricht aufgetreten sind.
Das System enthält die oben in Verbindung mit den F i g. 4 und 5 beschriebenen Elemente sowie einige zusätzliche Elemente. Der wichtigste Zusatz ist der so Hauptspeicher 300, dessen Funktion später beschrieben wird. Der Hauptspeicher 300 kann ein Kernspeicher, Magnetplatten- oder Magnettrommelspeicher' oder ein anderes geeignetes Speichermedium sein. Da zum Codieren und Decodieren von Nachrichten
»5 nur ein Schieberegister 302 verwendet wird, muß eine Zeitsteuerung vorgesehen werden, die eine zu codierende von einer zu decodierenden Nachricht getrennt hält. Zu diesem Zweck wird ein Taktsignal 304 auf die Leitung 306 gegeben. Die Frequenz des Taktsignals ist die gleiche wie die Frequenz, mit der Bits dem System zugeführt werden, d. h., während jeder Bitperiode steigt und fällt der Signalpegel 304 einmal.
Eine zu codierende Nachricht wird dem System über die Leitung 308 zugeführt, die an einen Eingang der UND-Schaltung 310 angeschlossen ist. Die Taktsignalleitung 306 ist an den anderen Eingang der UND-Schaltung 310 angeschlossen, so daß die Bits einer zu codierenden Nachricht nur während der Zeit in das System gelangen können, in welcher der Pegel
des Signals 304 hoch ist. Über die Leitung 312 gelangen zu decodierende Nachrichten in das System und werden über die UND-Schaltung 314 weitergegeben. Die Taktgeberleitung 306 ist an die Inverterschaltung 316 angeschlossen, deren Ausgang den anderen Eingang der UND-Schaltung 314 speist, so daß die Bits einer zu decodierenden Nachricht während der Zeit in das System gelangen, in welcher der Pegel des Taktsignals 304 niedrig ist.
Codieren einer Nachricht
Wenn eine zu codierende Nachricht über die Leitung 308 in das System gelangt und die UND-Schaltung 310 durchläuft, werden die Bits dieser Nachricht ebenfalls der UND-Schaltung 318 zugeleitet, deren Ausgang einen Eingang der ODER-Schaltung 320 speist, deren Ausgang wiederum direkt mit der Ausgangsleitung 322 des Codierers verbunden ist. Der andere Eingang der UND-Schaltung 318 ist mit der Taktgeberleitung 324 verbunden, auf der während der Zeit, in welcher eine zu codierende Nachricht empfangen wird, ein Signal vorhanden ist. Die Bits der zu codierenden Nachricht werden ebenfalls dem Modulo-2-Addierer 326 zugeführt. Das Signal auf der Taktgeberleitung 324 wird ebenfalls der ODER-Schaltung 328 zugeleitet, deren Ausgang mit einem Eingang der UND-Schaltung 330 verbunden ist, deren Ausgang wiederum an den zweiten Eingang des Modulo-2-Addierers 326 angeschlossen ist. Somit erfolgt wäh-
23 24
rend der Zeit, in der eine zu codierende Nachricht gen worden sind, enthält das Schieberegister das
empfangen wird, eine Rückkopplung von der wert- später bei der Korrektur zu verwendende Prüfwort,
höchsten Stufe des Schieberegisters 302 über die UND- Das Prüfwort wird im Hauptspeicher 300 gespeichert
Schaltung 330 auf den Modulo-2-Addierer 326 (wo und später, wie im folgenden beschrieben, verwendet,
der Inhalt der werthöchsten Stufe des Schieberegisters 5 Somit wird durch Ein- und Ausspeichern des Schiebe-
modulo-2 mit einem eintreffenden Datenbit addiert registerinhalts in den und aus dem Hauptspeicher 300
wird) und vom Addierer zu den entsprechenden Stufen vor und nach jeder Verschiebung nur ein Schiebe-
des Schieberegisters 302 in der oben in Verbindung register 302 für das Codieren und das Decodieren von
mit F i g. 4 beschriebenen Art. Nach Empfang aller Nachrichten verwendet.
Bits einer zu codierenden Nachricht ist der Rest der io
Division des Polynoms in den Stufen des Schiebe- Fehlererkennung und -korrektur
registers 302 enthalten. Zu diesem Zeitpunkt werden Bei der oben beschriebenen Decodierung ergibt sich der Leitung 324 keine Impulse mehr zugeführt, um ein bei der Korrektur zu verwendendes Prüfwort, das den Eingang 308 des Codierers vom Ausgang 322 zu im Hauptspeicher 300 gespeichert wird. Das Prüfwort trennen. Durch das Ausfallen der Impulse auf der 15 wird dann dem Hauptspeicher entnommen und zum Leitung 324 wird auch die UND-Schaltung 330 ge- Schieberegister 338 übertragen, das in der Korrektursperrt, die eine Rückkopplung auf das Schiebe- schaltung des Spezialrechners enthalten ist. Zur gleiregister 302 während der Zeit verhindert, in der die chen Zeit wird die Nachricht, die während der Deco-Restbits (Redundanzbits) zum Ausgang des Codierers dierung in dem Hauptspeicher 300 gespeichert wurde, gelangen. Da das auf der Leitung 324 vorhandene 20 zum Pufferspeicher 340 in der Korrekturschaltung Signal durch die Inverterschaltung 332 invertiert wird, übertragen. Wie bereits im Zusammenhang mit bevor es der UND-Schaltung 334 zugeführt wird, F i g. 5 erwähnt, braucht nur der Datenbits enthaltende können die Restbits aus dem Schieberegister 302 über Teil der Nachricht zum Pufferspeicher 340 übertragen die UND-Schaltung 334 und die ODER-Schaltung 320 zu werden, jedoch kann auch die ganze Nachricht auf den Ausgang 322 des Codierers zugeleitet werden. 25 (einschließlich Datenbits und Redundanzbits) auf
Nach jeder Verschiebung des Inhalts des Schiebe- Wunsch dorthin übertragen werden,
registers 302 während des Codierens wird der Inhalt Fehlererkennung und -korrektur erfolgt genau so
des Schieberegisters 302 im Hauptspeicher 300 ge- wie in dem in F i g. 5 beschriebenen System. Die,,
speichert. Vor dem nächsten Schiebevorgang beim UND-Schaltung 342 überwacht die r—b wertnied-
Codieren, wird der im Hauptspeicher 300 gespeicherte 30 rigsten Stufen des Schieberegisters, um herauszufinden,
Inhalt des Schieberegisters 302 wieder zu diesem über- ob sie lauter Nullen enthalten. Diese Bedingung zeigt
tragen. an, daß das Fehlermuster in den b höheren Stufen des
Decodieren einer Nachricht Schieberegisters steht. Der Inhalt des Pufferspeichers
314 (der keine Rückkopplungsverbindung hat) und
Wie oben beschrieben, gelangen die Bits einer zu 35 des Schieberegisters 338 (das, wie oben beschrieben, decodierenden Nachricht über die UND-Schaltung 314 eine Rückkopplungsverbindung aufweist) werden während der Zeit in das System in der der Pegel des gleichzeitig verschoben. Das Ausgangssignal der Taktsignals 304 niedrig ist. Die Bits der zu deco- UND-Schaltung 342 und das der werthöchsten Stufe dierenden Nachricht werden ebenfalls dem Haupt- des Schieberegisters 338 speisen die UND-Schaltung speicher 300 zugeleitet, wo sie bis zur Fehlerkorrektur 4° 344, die infolgedessen ein Ausgangssignal erzeugt, gespeichert bleiben. Das auf Leitung 306 erscheinende wenn eine Anzeige für das Vorliegen eines falschen Signal wird nach Umkehrung durch die Schaltung 316 Bits aus der werthöchsten Stufe des Schieberegisters über die ODER-Schaltung 328 der UND-Schaltung 338 ausgeschoben wird. Die Fehleranzeige wird dem 330 zugeleitet und ermöglicht die Rückkopplung inner- Modulo-2-Addierer 346 zugeleitet, damit er das fehlerhalb des Schieberegisters 302 während des Decodie- 45 hafte Bit, das aus dem Pufferspeicher 340 kommt, rens. Die Bits der zu decodierenden Nachricht werden komplementiert. Da eine Rückkopplung innerhalb des dem Modulo-2-Addierer 336 zugeführt, dessen anderes Schieberegisters 338 verhindert werden muß, nachdem Eingangssignal von der letzten Stufe des Schiebe- ein zu korrigierendes Fehlerbündel lokalisiert wurde, registers 302 kommt. Das Ausgangssignal des Modulo- wird das Ausgangssignal der UND-Schaltung 342 2-Addierers 336 bildet ein Rückkopplungssignal für 50 durch die Inverterschaltung 347 invertiert, deren Ausdas Schieberegister, wie das bereits in Verbindung mit gang mit einem Eingang einer UND-Schaltung 348 F i g. 5 beschrieben wurde. Die Bits der zu deco- verbunden ist, die in der Rückkopplungsschleife des dierenden Nachricht werden ebenfalls direkt bestimm- Schieberegisters 338 liegt. Dadurch wird eine Rückten Stufen des Schieberegisters zugeleitet, um die kopplung innerhalb des Schieberegisters 338 verhin-Rückkopplung zu bewirken, wie das in Verbindung 55 dert, nachdem ein zu korrigierendes Fehlerbündel mit F i g. 5 bereits beschrieben wurde. lokalisiert worden ist.
Wiederum wird nach jeder Verschiebung des Schiebe- Wie aus obiger Beschreibung zu ersehen ist, verregisterinhaltes beim Decodieren der Inhalt des Schiebe- arbeitet das in F i g. 6 dargestellte System drei Nachregisters in den Hauptspeicher 300 übertragen, aus richten gleichzeitig. Es codiert eine Nachricht, decoweichem er unmittelbar vor der nächsten Verschiebung 60 diert eine andere Nachricht (und erzeugt ein Prüfwort in das Schieberegister zurückgespeichert wird. Nach- hierfür) und erkennt und korrigiert Fehler in einer dem alle Bits der zu decodierenden Nachricht empfan- dritten Nachricht.
Hierzu 4 Blatt Zeichnungen

Claims (1)

1 2
entwickelt, um Möglichkeiten zum Erkennen und
Patentanspruch: Korrigieren derartiger Fehler zu schaffen. Die Fehler
arten, die durch die verschiedenen Codes erkannt und
Schaltungsanordnung zur Korrektur von Fehler- korrigiert werden können, fallen grundsätzlich in eine bündeln aus maximal b Bits in binären Code- 5 von zwei Kategorien, entweder sind es Einzelfehler Wörtern eines systematischen Codes, in dessen oder es sind Fehlerbündel. Bei der Theorie für das Codewörtern der Informations-und der Redundanz- Korrigieren von Einzelfehlern geht man von der An-. teil gleich groß sind, mit einem Decodierer, der nähme aus, daß eine Störung sich immer nur auf ein aus einem übertragenen Codewort ein Prüfwort Bit auswirkt, und daher die Wahrscheinlichkeit eines ableitet zur Feststellung, ob ein korrigierbares io gegebenen Fehlermusters nur von der Anzahl der Feh-Fehlerbündel vorliegt^ und mit einer an den Deco- ler abhängt. So korrigiert z. B. ein Code zur Korrektur dierer angeschlossenen Fehlerkorrekturschaltung, von Einzelfehlern ein Muster von b oder weniger dadurch gekennzeichnet, daß der De- Fehlern in einem Block von η Bits. Wenn diese Ancodierer (Fig. 5; 239) ein /--stufiges [r = Grad nähme auch für einige Übertragungssysteme zulässig des Codepolynoms P(X)] Schieberegister enthält, 15 ist, so gibt es doch zahlreiche andere Systeme, in denen bei dem ein Antivalenz-Glied (z. B. 240, 247, 246) Fehler vornehmlich in Bündelform auftreten. So treten auf eine Registerstufe / (z. B. S8, Sl, 56) folgt, z. B. Störungen in Telefonleitungen durch überwenn einer der dieser Stufe zugeordneten Koeffi- springende Funken im allgemeinen zeitweise auf und zienten at oder bi den Wert 1 besitzt, wobei at dauern länger als ein Bit. Als weiteres Beispiel seien den Koeffizienten der i. Potenz von X des Code- 20 Schäden auf Magnetbändern angeführt, die im allgepolynoms P(X) darstellt und der Koeffizient bi meinen größer sind als der für die Auftragung eines durch Lösen der Gleichung Bits erforderliche Platz, und derartige Schäden be7
treffen mehrere Bits in einem gegebenen Bandbereich.
^1 h γη-r+i _ ι ^n derartigen Systemen kann das Auftreten von
.-^0 l ~~ 25 Fehlerbündeln erwartet werden.
Gegenwärtig gibt es verschiedene Codes zur Korrek-
modulo P(X) bestimmt wird, in der η die Gesamt- tür von Fehlerbündeln. Im allgemeinen werden Datenzahl der Bits eines Codewortes bezeichnet, daß die bitfolgen codiert, indem man die Datenbitfolge durch * zweiten Eingänge derjenigen Antivalenz-Glieder ein Codepolynom P(X) dividiert und einen Rest R(X) (z. B. 240, 247 und 245 in Fig. 5), bei denen für 30 erhält. Die Restbits bilden die Bits zur Fehlererkendie Koeffizienten der zugehörigen Registerstufe / nung und -korrektur und werden nach den Datenbits gilt: üi = 0 und bi = 1, an den Eingang der Deco- übertragen, wobei das Ganze die aus η Bits bestehende dierschaltung angeschlossen sind, daß die zweiten Nachricht M(X) darstellt. Vor der Nachricht kann eine Eingänge derjenigen Antivalenz-Glieder, bei denen Reihe sogenannter Vorimpulse übertragen werden, für die Koeffizienten der zugehörigen Registerstufe 35 die den Anfang der Nachricht kennzeichnen. Auf der gilt: cn = 1 und bi = 0, mit dem Ausgang des Empfängerseite macht ein aus diesen Vorimpulsen Antivalenz-Gliedes (240) der r. Stufe des Schiebe- gewonnenes Vorsignal die Decodierschaltungen empregisters verbunden sind, daß der 2. Eingang des fangsbereit und stellt den Anfang einer Nachricht fest. Antivalenz-Gliedes der r. Stufe mit dem Eingang Die Decodierschaltung arbeitet dann weiter und divider Decodierschaltung und dessen Ausgang mit 40 diert die Nachricht durch das Codepolynom P(X). den zweiten Eingängen derjenigen Antivalenz- Der sich aus dieser Division ergebende Rest ist Null, glieder (z. B. 241, 242 und 246 in F i g. 5) verbun- wenn keine Fehler bei der Übertragung aufgetreten den ist, bei denen für die Koeffizienten der züge- sind. Wenn jedoch ein korrigierbares Fehlerbündel hörigen Registerstufe gilt: at — bi = 1, daß als auftrat, definiert der durch den Decoder aus dem die Schaltung zum Feststellen, ob ein korrigierbares 45 Korrektur von Fehlerbündeln ermöglichenden Code-Fehlerbündel vorliegt, ein UND-Glied (254) dient, polynom erhaltene Rest ein Fehlermuster, das zur das an die Ausgänge der / niederstelligsten Stufen Lokalisierung und Korrektur der Fehler benutzt wird, des Schieberegisters angeschlossen ist, wobei/einen Der Umfang der Klasse von Polynomen, die als
,,,^ ., r—i ,, / , i\i_ ·* j. jjn Codepolynome bei den bisherigen Systemen zur Wert zwischen -.,- und Io&(«+1) besitzt, und daß 5o KomTk Jr von Fehierbündeln benutzt werden können, das Ausgangssignal des UND-Gliedes (254) zur ist durch bestimmte Merkmale begrenzt. Eines dieser in einem Antivalenz-Glied (262) erfolgenden Merkmale ist, daß die Summe zweier möglicher Korrektur des synchron in einem Pufferspeicher Muster von Fehlerbündeln E1(X) + E2(X), die durch (252) mitverschobenen Codewortes verwendet wird. das Codepolynom P(X) dividiert wird, einen Rest R(X)
55 ergeben muß, der von Null verschieden ist. Somit hängt das Codepolynom ab von der Länge des über-
tragenen Nachrichtenblocks und der Länge des
längsten korrigierbaren Fehlerbündels. Eine der Probleme bei den bisherigen Systemen zur Korrektur
Die Erfindung bezieht sich auf eine Schaltungs- 60 von Fehierbündeln liegt darin, daß außer wiederanordnung gemäß Oberbegriff des Patentanspruchs. holtem Probieren kein Weg bekannt ist, ein wirksames In Digitalrechnern und Datenübertragungssystemen Codepolynom zu finden, das zur Entdeckung und werden sehr häufig binäre Codefolgen verwendet. Korrektur von Fehlerbündeln einer gegebenen Länge Diese binären Codefolgen haben die Form von Folgen verwendet werden kann. Viele Codepolynome, mit positiver und negativer elektrischer Impulse, die Null- 65 denen sich Fehlerbündel korrigieren lassen, sind be- und Eins-Datenbits darstellen. Für Übertragungs- kannt, aber ihre Anwendung führt im allgemeinen nur systeme, die Störungen unterworfen sind, wurden dazu, daß zu der Nachricht eine Anzahl von Redunviele verschiedene Arten von Fehlerkorrekturcodes danzbits hinzugefügt wird, drei- oder mehrmal so
DE1524891A 1966-12-15 1967-12-14 Schaltungsanordnung zur Korrektur von Fehlerbündeln Expired DE1524891C3 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US602101A US3487361A (en) 1966-12-15 1966-12-15 Burst error correction system

Publications (3)

Publication Number Publication Date
DE1524891A1 DE1524891A1 (de) 1970-12-17
DE1524891B2 DE1524891B2 (de) 1975-04-17
DE1524891C3 true DE1524891C3 (de) 1975-12-11

Family

ID=24409972

Family Applications (1)

Application Number Title Priority Date Filing Date
DE1524891A Expired DE1524891C3 (de) 1966-12-15 1967-12-14 Schaltungsanordnung zur Korrektur von Fehlerbündeln

Country Status (4)

Country Link
US (1) US3487361A (de)
DE (1) DE1524891C3 (de)
FR (2) FR1540851A (de)
GB (1) GB1198510A (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3568148A (en) * 1969-04-02 1971-03-02 Radiation Inc Decoder for error correcting codes
US3622984A (en) * 1969-11-05 1971-11-23 Ibm Error correcting system and method
JPS55149551A (en) 1979-05-10 1980-11-20 Toshiba Corp Data correcting circuit
US4410989A (en) * 1980-12-11 1983-10-18 Cyclotomics, Inc. Bit serial encoder

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3373404A (en) * 1964-11-10 1968-03-12 Gustave Solomon Error-correcting method and apparatus
US3389375A (en) * 1965-02-01 1968-06-18 Bell Telephone Labor Inc Error control system
US3402390A (en) * 1965-03-01 1968-09-17 Motorola Inc System for encoding and decoding information which provides correction of random double bit and triple bit errors
US3411135A (en) * 1965-03-15 1968-11-12 Bell Telephone Labor Inc Error control decoding system

Also Published As

Publication number Publication date
GB1198510A (en) 1970-07-15
FR93450E (fr) 1969-03-28
FR1540851A (fr) 1968-09-27
DE1524891B2 (de) 1975-04-17
US3487361A (en) 1969-12-30
DE1524891A1 (de) 1970-12-17

Similar Documents

Publication Publication Date Title
DE2060643C3 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE2357004C3 (de) Verfahren und Einrichtung zur Fehlerkorrektur für Daten
DE3231956A1 (de) Anordnung zum uebertragen von binaerdaten ueber eine vielzahl von kanaelen mit hilfe eines faltungscodes
DE2914515A1 (de) Verfahren und vorrichtung fuer ein wirksames fehlerentdeckungs- und korrektursystem
DE2657826A1 (de) Einrichtung zur fehlererkennung und fehlerkorrektur im speichersystem einer dv-anlage
DE2262070A1 (de) Mit schieberegistern arbeitendes fehlerkorrektursystem
DE2221171C3 (de) Fehlerkorrigierendes Datenübertragungssystem
DE3006958A1 (de) Digitalsignal-uebertragungssystem
DE2447255B2 (de) Verfahren und Schaltungsanordnungen zur Fehlerprüfung In digitalen Datenübertragungsanlagen
DE2217935C3 (de) Anordnung und Verfahren zur Korrektur von Doppelfehlern in einer Nachricht
DE2916619A1 (de) System zum uebertragen binaerer daten ueber eine anzahl von kanaelen
DE1964358C3 (de) Fehlerkorrekturanordnung für ein Datenübertragungssystem
DE1599084A1 (de) Einrichtung zur Korrektur von Fehlerbuendeln
DE2324538A1 (de) Digitale nachrichtenuebertragungsanordnung
DE1524891C3 (de) Schaltungsanordnung zur Korrektur von Fehlerbündeln
DE1290565B (de) Verfahren zur empfaengerseitigen Korrektur dualkodierter Nachrichten
DE1449334A1 (de) Datenverarbeitungsanlage
DE2000565A1 (de) Fehlerkorrigierendes System zur Korrektur mehrfacher,zufaelliger Fehler
DE1168677B (de) System zur Fehlerermittlung und Fehlerkorrektur
DE3852569T2 (de) Verfahren und Gerät zur Dekodierung von blockkodierten Daten, beeinträchtigt durch Ersatz, Einfügungen und Verlust von Symbolen.
DE1774225A1 (de) Fehlerkorrekturschaltung
DE2758952B1 (de) Schaltungsanordnung zum Codieren oder Decodieren von Binaerinformationen
DE2063275B2 (de) Verfahren und Vorrichtung zur Fehlererkennung beim Decodieren einer ursprünglich als Signalfolge mit m Pegelstufen vorliegenden Nachricht
DE2300505A1 (de) Vorrichtung zur schwellwertdecodierung
DE3104762A1 (de) System zur binaeren datenuebertragung

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