DE2053836B2 - Anordnung zur Korrektur von Fehlerbündeln in binär codierten Datengruppen - Google Patents

Anordnung zur Korrektur von Fehlerbündeln in binär codierten Datengruppen

Info

Publication number
DE2053836B2
DE2053836B2 DE2053836A DE2053836A DE2053836B2 DE 2053836 B2 DE2053836 B2 DE 2053836B2 DE 2053836 A DE2053836 A DE 2053836A DE 2053836 A DE2053836 A DE 2053836A DE 2053836 B2 DE2053836 B2 DE 2053836B2
Authority
DE
Germany
Prior art keywords
data
error
bundle
register
bits
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
DE2053836A
Other languages
English (en)
Other versions
DE2053836C3 (de
DE2053836A1 (de
Inventor
Hal Pond Del Mar Calif. Eastman (V.St.A.)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE2053836A1 publication Critical patent/DE2053836A1/de
Publication of DE2053836B2 publication Critical patent/DE2053836B2/de
Application granted granted Critical
Publication of DE2053836C3 publication Critical patent/DE2053836C3/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
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes
    • 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)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

a2 = b2 V-(S2 · S1)
aA = h V(S4 · O1) V(S3 · O2) V-S2 · [O3 V (a,
55
bO
a, die Adresse des ersten Fehlers des Bündels angibt, bi die Bits im zweiten Teil des Syndroms darstellt
und
Si die in seinem ersten Teil, wobei der zweite Teil im b5 ersten Schieberegister (28) und der erste Teil im rückgekoppelten Schieberegister (34) gespeichert
4. Anordnung nach Anspruch 1, gekennzeichnet durch einen Exklusiv-ODER-Baum (4), an dessen Eingängen parallele Datenkaaäle (Dl — D4) anliegen und an dessen Ausgang die Datengruppe zur Erzeugung der beiden Tcilprüfbündel erhalten wird.
5. Anordnung nach Anspruch 1, dadurch gekennzeichnet, daß der Zähler (22) mit dem iMen Teil (b = maximale Länge des korrigierbaren Fehlerbündels) der Bitfolgefrequenz (Bitrate) !fortgeschaltet wird.
Die Erfindung bezieht sich auf die Fehlererkennung und -korrektur in binären Datenverarbeitungssystemen, insbesondere in Systemen mit Magnetplattenspeichern. Jedoch ist das Prinzip der Erfindung sowohl auf die Datenübertragung als auch auf die Datenspeicherung anwendbar.
Die von modernen programmgesteuerten Rechenanlagen zu verarbeitende Information wind diesen Anlagen in codierter Form angeboten, um von einer Rechenanlage aufgenommen werden zu können. Abhängig von den Umständen können verschiedene Codes für die gleiche Information existieren. Die hier interessierenden Codes stellen die Information in binärdigitaler Form dar, wobei jedes Informauonsbit als eine Null oder eine Eins dargestellt wird.
Eine Reihe von Anordnungen sind vorgeschlagen worden, um codierte Information zu prüfen. Diese Anordnungen haben gewöhnlich ein Paritätsprüfprinzip ausgenutzt, in dem eine oder mehrere Paritäts- oder Prüfziffern zu einer Gruppe codierter Ziffern hinzugefügt wurden, um eine ausgewählte digitale Summe zu erhalten, aufgrund deren Fehler identifiziert werden können. Zum Beispiel kann in einem binären System eine Paritätsziffer in Verbindung mit einer Gruppe von Informationsziffern benutzt werden und die Paritätsziffer kann so variiert werden, daß die Summe alller Ziffern, einschließlich der Paritätsziffer entweder ungerade oder gerade ist Bei einer Paritätsprüfung auf Geradzahligkeit, zeigt daher eine ungerade Gesamtsumme, die aus den Informationsziffern und der Paritätsziffer gebildet wird, das Vorliegen eines Fehlers an.
Die Redundanz, die durch eine Paritätsziffer eingeführt wird, reicht nicht aus, um das Vorliegen einer Reihe verschiedener Fehlerarten zu erkennen. Daher ist eine Vielzahl anderer Fehlererkennungs- und -korrekturverfahren entwickelt wurden, die eine beträchtliche Anzahl von Paritätsziffern benutzen. Dabei ist jede der Paritätsziffern einer ausgewählten Kombination von Informationsziffern und anderen Paritätsziiffern zugeordnet, so daß die Fehlerorte festgestellt und die Gruppe der Informationsziffern entsprechend der ursprünglichen Informationsfolge wieder hergestellt werden kann.
Besonders schwierige Bedingungen für die Fehlererkennung- und -korrektur liegen vor, wenn die Fehlerart, die auftreten kann, Fehlerbündel einschließt,, die eine Reihe aufeinanderfolgender Ziffern umfassen. Solche Bedingungen treten sehr oft auf, wenn digitale Daten zwischen zwei Punkten übertragen werden. Unter diesen Umständen ist es so, daß ein Fehler in einer Ziffernstelle die Wahrscheinlichkeit stark erhöht, daß auch ein Fehler in benachbarten Stellen auftritt. Es ist für solche Fälle daher sehr erwünscht, Fehlerbünde]
durch Verwendung einer minimalen Anzahl von Redundanzziffern zu erkennen, zu lokalisieren und zu korrigieren.
Die Betriebserfordernisse der in jüngster Zeit entwickelten Informationsspeichersysteme, die Magnet- r, platten verwenden, bedingen bestimmte Beschränkungen bezüglich der Fehlererkennung- und -korrektur. In solchen Systemen ist die Länge des längsten Datensatzes wesentlich. Sie beträgt mehr als 130 000 Bits, während die Anzahl der Prüfbits pro Datensatz einen κι kleinen Druchteil davon beträgt (weniger als 200). Binäre Codes, die für die Fehlerkorrektur in solchen Systemen geeignet sind, sollten in der Lage sein, alle Fehlerbündel zn erkennen, die kleiner als eine vorgegebene maximale Länge sind und sollten darüber ι τ hinaus in der Lage sein, einen hohen Prozentsatz derjenigen Fehler, die nicht auf Bündel innerhalb der vorgegebenen maximalen Länge beschränkt sind, zu erkennen. Weiter sollte die Möglichkeit vorhanden sein. Daten parallel aufzunehmen und zu identifizieren, 2» weiche Aufzeichnungsspur große unkorrigierbare Fehlerbündel enthält, so daß der Begrenzungspegel für diese Spur entsprechend eingestellt werden kann. Die zur Implementierung des Codes verwendeten Module sollten selbst paritätsgeprüft sein, so daß Fehler in den :> Schaltungen eines Moduls erkannt werden. Außerdem sollte die Möglichkeit gegeben sein, besondere Arten von Transformationen zu erkennen, die sich aus in regelmäßigen Abständen auftretenden Fehlern ergeben.
Die meisten Fehlererkennungs- und -korrekturcodes, j» die in der Vergangenheit benutzt wurden, weisen bezüglich der oben erwähnten Kriterien schwerwiegende Mängel auf. Die sogenannten Fire-Codes, die ihrer Natur nach zyklische Codes sind, benötigen mehr als die maximal zulässige Decodierzeit und machen auch Schwierigkeiten, wenn parallele Daten korrigiert werden müssen und die Einstellbarkeit des Begrenzungspegels zu fordern ist Bestimmte andere zyklische Codes bereiten ebenfalls Schwierigkeiten, wenn Daten parallel aufgenommen werden müssen und benötigen eine ganz erhebliche Decodierzeit. Verschachtelte Hamming-Codes erfordern beträchtlich mehr Prüfbits pro Datensatz als oben angegeben wurde.
Der Erfindung liegt daher die Aufgabe zugrunde, eine Anordnung zur Fehler-Korrektur in binär codierten 4r> Datengruppen anzugeben, die die Erkennung von Fehlerbündeln mit wenig Prüfbits und eine rasche Bestimmung des Fehlerortes gestattet
Diese Aufgabe wird erfindungsgemäß bei einer Anordnung, wie sie gemäß dem Oberbegriff des Hauptanspruchs vorausgesetzt ist, durch die dortigen kennzeichnenden Merkmale gelöst.
Der Vorteil der Erfindung resultiert aus der Aufteilung der Prüfbits in zwei Teil-Prüfbündel. Da das erste Teil-Prüfbündel durch eine Division der gesamten Eingangsdaten erzielt wird, ermöglicht es eine allgemeine Fehlererkennung. Zum Unterschied hiervon ist das zweite Teil-Prüfbündel eine Funktion der Positionen der binären Einsen in den Eingangsdaten. Diese Art der Aufteilung der Prüfbits ermöglicht eine sehr direkte und ω daher rasche Bestimmung des Ortes von eventuellen Fehlern.
Vorteilhafte Weiterbildungen der Erfindung sind den Unteransprüchen zu entnehmen.
Ein Ausführungsbeispiel der Erfindung soll anschließend beschrieben werden. Von den Zeichnungen zeigt
F i g. 1 ein Blockschaltbild einer Fehlerkorrekturschaltung gemäß der Erfindung,
Fig.2 ein Blockschaltbild, das weitere Einzelheiten eines Teiles der Schaltung nach F i g. I darstellt,
F i g. 3 ein Blockschaltbild einer Anordnung, durch die die Kapazität von Systemen gemäß der Erfindung erhöht werden kann,
F i g. 4 ein Blockschaltbild einer speziellen Schaltung, die in Schaltungen gemäß der Erfindung verwendet werden kann,
F i g. 5 ein das eine Variation der Schaltung nach Fig. 1 darstellt und das Erkennen fehlerhafter Bits bei paralleler Datenverarbeitung ermöglicht,
Fig.6 ein Blockschaltbild einer Anordnung gemäß der Erfindung, durch die die Arbeitsweise der Schaltung nach F i g. 1 vereinfacht wird und
F i g. 7 ein Blockschaltbild eines in F i g. 6 verwendeten. Blocksymbols.
Die in Fig. 1 dargestellte Fehlerkorrekturschaltung 10 enthält einen ersten Prüfbündelgenerator 12 und einen zweiten Prüfbündelgenerator 14, die mit der Datenleitung 16 verbunden sind. Die Schaltung 10 enthält außerdem ein Datenregister 18, das einmal mit dem Ausgang der Datenleitung 16 und zum anderen mit dem Ausgang eines Decodiernetzwerkes 20 verbunden ist, das seinerseits an den zweiten Fehlerbündelgenerator 14 angeschlossen ist.
Beim Betrieb der Schaltung 10 nach F i g. 1 werden die Daten der Datenleitung 16 zugeführt und auch dem ersten Prüfbündelgenerator 12. Die Daten können als eine Anzahl binär codierter und seriell zugeführter Datenbits angesehen werden. Der erste Prüfbündelgenerator 12 dient dazu, ein Prüfbündel zu erzeugen, das repräsentativ ist sowohl für die einzelnen Datenbits als auch ihre jeweilige Stelle. Die Datenleitung 16 kann von ganz allgemeiner Art sein und ist in der Mitte der Figur unterbrochen dargestellt, um anzuzeigen, daß keine kontinuierliche Verbindung zwischen dem Eingang- und Ausgangsteil der Schaltung 10 vorhanden sein muß. Zum Beispiel kann die Datenleitung 16 Teile einer Anordnung zur Aufzeichnung und zur Wiedergabe binärer Daten darstellen. Sie kann auch das Übertragen und Empfangen von Daten darstellen, das in üblicher Weise drahtgebunden oder drahtlos erfolgt. In jedem Fall durchlaufen die Daten zusammen mit dem ersten Prüfbündel des ersten Prüfbündelgenerators 12 seriell die Leitung 16. Am Ausgang des Systems 10 werden die Daten dem Datenregister 18 zugeführt und ebenfalls dem zweiten Prüfbündelgenerator 14. In dem zweiten Prüfbündelgenerator 14, der mit dem ersten Prüfbündelgenerator 12 identisch ist, werden die Daten in gleicher Weise verarbeitet, um ein zweites Prüfbündel zu erzeugen, das eine Aussage über die Datenbits und ihre jeweilige Stelle liefert. Dieses zweite Prüfbündel sollte für den Fall, daß kein Fehler aufgetreten ist, mit dem ersten Prüfbündel identisch sein. Die beiden Prüfbündel werden in dem zweiten Prüfbündelgenerator 14 verglichen und die Vergleichsergebnisse werden dem Decodiernetzwerk 20 zugeführt Wenn ein Unterschied zwischen beiden Prüfbündeln besteht, bestimmt das Decodiernetzwerk 20 den Ort der erkannten Fehler und veranlaßt, daß diejenigen Bits in dem Datenregister 18 invertiert werden, die fehlerhaft sind, wodurch die Daten in dem Datenregister 18 wieder in die Form gebracht werden, die am Eingang der Datenleitung 16 vorhanden war.
In Fig.2 ist der Prüfbündelgenerator 12 genauer dargestellt Er enthält einen m-stufigen Zähler 22, dem Taktimpulse zugeführt werden. Der Zähler 22 ist mit einem UND-Glied 24 verbunden, dem auch die Daten
zugeführt werden. Ein A-Register 26 und ein B-Register 28 sind in einer Schieberegisterschaltung miteinander verbunden, was durch den mit 29 bezeichneten, gestrichelt dargestellten Block »Verschieben« angedeutet ist. Dieser Block stellt keine Schieberegisterstufe dar, sondern soll lediglich andeuten, daC die Register 26 und 28 in Form eines Schieberegisters miteinander verbunden sind. Ein Teil der Ausgänge des A-Registers 26 ist zusammen mit dem Ausgang des UND-Gliedes 24 mit einem exklusiven ODER-Glied 30 verbunden. Das Ausgangssignal des exklusiven ODER-Gliedes 30 und die Ausgangssignale der restlichen Stufen des A-Registers 26 werden gemeinsam nach einer geeigneten Stellenverschiebung durch die Schaltung 29 dem B-Register 28 zugeführt. Der Ausgang des B-Registers 28 ist einmal mit dem A-Register 26 und ebenfalls mit einem durch Taktimpulse gesteuerten UND-Glied 32 verbunden, dessen Ausgang an die Datenleitung 16 angeschlossen ist.
Ein zweiter Pfad für die Verarbeitung von Daten durch den Prüfbündelgenerator 12 enthält ein Schieberegister 34, dessen Ausgang über ein exklusives ODER-Glied 36 mit seinem Eingang verbunden ist. Der Ausgang des Schieberegisters 34 ist außerdem über ein weiteres, durch Taktimpulse gesteuertes UND-Glied 38 mit der Datenleitung 16 verbunden.
Das System nach F i g. 1, bei dem die Prüfbündelgeneratoren 12 und 14 gemäß der Schaltung nach Fig.2 aufgebaut sind, kann dazu benutzt werden, die Stelle von Fehlern zu bestimmen, die in einem Bündel von der Länge kleiner oder gleich b in einem binären Datensatz auftreten, dessen Länge weniger als n=2m1 Bits beträgt. In dem zu beschreibenden Beispiel werden die Daten seriell verarbeitet, was durch die Bezeichnung »(1)« neben dem Wort »Daten« bei der Leitung 16 der F i g. 2 angedeutet ist. Der Wert für b soll 3 und der für m soll 4 sein. In F i g. 2 gibt die in Klammern gesetzte Bezeichnung neben einer Leitung die Anzahl der parallelen Adern an, die durch die betreffende Leitung dargestellt werden. So verlassen z.B. b+m Leitungen das A-Register 26 und führen zum B-Register 28, wobei /77 von ihnen über die exklusiven ODER-Glieder 30 und die restlichen b Leitungen direkt mit dem B-Register 28 verbunden sind.
Bei diesem Beispiel werden vor oder während der Übertragung die η Datenbits seriell der Datenleitung 16 zugeführt. Sie werden bei ihrem Eintreffen an dem UND-Glied 24 durch einen m-stufigen Zähler 22 gezählt, wobei die Stellenbezeichnung der »1 «-Bits dem exklusiven ODER-Glied 30 zugeführt wird.
Der Inhalt des A-Registers 26 und des B-Registers 28 wird zu Beginn zu 0 gemacht. Unmittelbar bevor ein Bit auf der Datenleitung 16 erscheint, wird der Inhalt des B-Registers 28 in das A-Register 26 übertragen. Wenn das eintreffende Datenbit eine »1« ist, wird der Inhalt des Zählers 22 in den exklusiven ODER-Gliedern 30 mit /n der Bits in dem A-Register 26 verknüpft. Das Ergebnis wird dem B-Register 28 zugeführt, während die anderen b Bits des A-Registers 26 direkt dem B-Register 28 zugeleitet werden. Die Verbindungen zwischen den Registern 26 und 28 sind so gewählt, daß, wenn die Eingangsdaten aus lauter Nullen bestehen, der Inhalt des Registers 26 während jedes Bitzyklus um eine Stelle umlaufend verschoben wird. Die Daten werden auch einem üblichen rückgekoppelten Schieberegister 34 mit b+m Stufen zugeführt. Die Länge dieses Registers ist notwendigerweise größer als 2b— 1. Die Länge b+ m wird nur aus Zwcckmäßigkcitsgründcn und aus Gründen der Geschwindigkeit beim Decodieren gewählt.
Wenn alle Daten in dieser Weise verarbeitet und übertragen wurden, ist ein erstes Prüfbündel entwickelt worden, das aus zwei verschiedenen Teilen besteht, die sich im B-Register 28 und im Schieberegister 34 befinden. Dieses Prüfbündel wird über die UND-Glieder 32 und 38 der Datenleitung 16 zugeführt und mit den Daten übertragen. Auf der Empfangsseite enthält der Prüfbündelgenerator 14 ebenfalls die Schaltung nach F i g. 2 und führt mit den empfangenen Daten die gleichen Operationen aus. Dadurch wird ein zweites Prüfbündel entwickelt, das zwei verschiedene Teile besitzt, die in dem B-Register 28 und dem Schieberegister 34 des zweiten Prüfbündelgenerators 14 enthalten sind. Das erste und das zweite Prüfbündel werden zur Erzeugung eines Fehlersyndroms in einem exklusiven ODER-Glied miteinander verknüpft. Wenn die empfangenen Daten die gleichen wie die gesendeten sind, besteht das Fehlersyndrom aus lauter Nullen.
Wenn jedoch zwischen dem Aussenden der Daten und ihrem Empfang einige Datenbits invertiert werden, und wenn diese Fehler auf ein Fehlerbündel der Länge b oder kleiner beschränkt sind, dann können diese Fehler mit Hilfe der Syndrome lokalisiert und korrigiert werden.
Wenn z. B. angenommen wird, daß die zu übertragenden Daten für die angegebenen Stellen:
beträgt und wenn die Länge der Register 26, 28 und 34 gleich 7 ist (b+m = l), dann beträgt der Inhalt des Schieberegisters 34, nachdem alle Daten zugeführt wurden:
10 9 8 7 6 5 4 3 2
0 1 0 1 1 1 0 1 0
und der Inhalt des Registers 28 beträgt:
0 1 0 0 0 0 0
0 1 0 0 0 0
1 0 0 1 1
I 0 1 0
0
0 1
1 1 0
0 0 0 1 0 0
1 0 0 0
0 0
(einmal verschoben)
(dreimal verschoben)
(fünfmal verschoben)
(sechsmal verschoben)
(siebenmal verschoben)
(neunmal verschoben)
0 110 0 11
Daher lautet das erste Prüfbündel, das den Inhalten der Register 34 und 28 entspricht:
1 1
1110
0 110 0 11
Wenn angenommen wird, daß Fehler in den Bits 8 und 10 auftreten, dann lauten die dem Prüfbündelgenerator 14 zugeführten Daten für cüs angegebenen Bitstellen:
Nach dem Verarbeiten der empfangenen Daten beträgt der Inhalt des Schieberegisters 34 in dem Prüfbündelgenerator 14:
Der Inhalt des Registers 28 im Prüfbündelgenerator 14 beträgt:
(einmal verschoben)
(dreimal verschoben)
(fünfmal verschoben)
(sechsmal verschoben)
(siebenmal verschoben)
(achtmal verschoben)
(neunmal verschoben)
(zehnmal verschoben)
0 1110 11
Dementsprechend beträgt das zweite Prüfbündel:
0101110 0111011
und das Fehlersyndrom beträgt:
0 1 0 1 0 0 0
0 0 0 0 0 0
1 0 0 1 1
1 0 1 0
0 1
0 1
1 1 0
0 0 1 1 0
1 0 0 0
1 0
1 1 1 1 I 1 0
V 0 10 1110
0 110 0 11
0 1110 11
1 0 0 0...0 0 0
b— 1 »Nullen«
X X X...X X X
b- 1 Bits
Empfangener Datensatz
10 9 8 7 6
i,= 10 10 0 0 0 b,= 0 0 0 1 0 0 0
Die beiden Teile des Syndroms sind mit s, und b, bezeichnet worden, wie das angegeben ist. Um das in dieser Weise erhaltene Syndrom zu decodieren, sei angenommen, daß sich si anfangs in dem Schieberegister 34 befindet, und daß 6, sich anfangs in dem Register 28 des Prüfbündelgenerators 14 befindet. Der erste für das Lokalisieren der Fehler erforderliche Schritt besteht darin, den Inhalt der Register 26 und 28 und des Schieberegisters 34 so lange zyklisch zu verschieben, bis das Muster
in dem Schieberegister 34 vorliegt. Für das oben betrachtete Beispiel bedeutet dies:
10 10 0 0 0
0 10 10 0 0
0 0 10 10 0
0 0 0 10 10
0 0 0 0 10 1
10 0 0 0 10
0 0 0
0 0 0 0 1
0 0 0 0 0
0 0 0 0 0
b,
10 0 0
0 0
0
1
0 1
0 0 0 0 0 0 10 0 0 0 0
Zu diesem Zeitpunkt wird das Bit in der rechtesten Stelle des Musters b, mit b\ bezeichnet. Das Bit in der zweiten Stelle von rechts wird bi bezeichnet usw. Das linke Bit in dem Muster s,- ist s\. Das ganz rechts befindliche Bit ist S2, das Bit in der zweiten Stelle von rechts S3, usw.
Der Rest der Decodierung wird in dem Decodiernetzwerk 20 aufgrund der folgenden booleschen Verknüpfungen durchgeführt:
a2 = b2 V-(S2 · O1)
a3 = b3 V(s3 · U1) V[s2 · (a2 Va1)]
aA = b4 V(s4 · O1) V(s3 · 52) Ys2 · [a3 Y(O1 · O2)]
Die Bits a, geben die Adresse des führenden Fehlers. In diesem Falle ist
a4 = 1
33 = 0
a2 = 0
ai = 0
Daher ist a, = ACHT {binär 1000). Die übrigen Fehler können relativ zu diesem direkt aus dem Muster s, lokalisiert werden. Das Bit Si ist zu 1 bestimmt worden. Es entspricht dem Fehler, dessen Adresse gefunden wurde. Die anderen Fehler haben alle höhere Adressen. Wenn S2 eine 1 wäre, dann läge an der Adresse NEUN (a, addiert zu 1) ein weiterer Fehler vor. Wenn S3 eine 1 ist, was für das oben angegebene Beispiel der Fall ist (si= 00101, S2 = 0, S3 = I1... lauter Nullen...) dann bedeutet das, daß ein weiterer Fehler an der Adresse ZEHN (a, addiert zu 2) vorhanden ist.
Das Invertieren der Bits 8 und 10 der empfangenen Daten liefert dann einen vollständig richtigen Datensatz.
Korrigierter Datensatz 5 4 3 2
10 9 8 1 1 0 1 0
0 10 1
' 6
1
Fehler in den Prüfbits und Fehler die nicht auf ein Bündel kleiner als b beschränkt sind, können dadurch erkannt werden, daß man beobachtet, welche Teile des Syndroms aus lauter Nullen bestehen und dadurch, daß man die booleschen Funktionen für das Decodieren so erweitert, daß sie mehr Bits des Registers 28 verknüpfen als notwendig sind, um die Adressen a\... am zu erhalten.
Obgleich die obige Beschreibung sich auf ein spezielles Beispiel mit begrenzter Datensatzlänge und begrenzter Länge des Fehlerbündels bezog, ist das beschriebene System in der Lage, alle Fehlerbündel mit b oder weniger Fehlern zu korrigieren, was mathematisch für den allgemeinen Fall bewiesen werden kann. Tatsächlich ist das Problem, zu beweisen, daß die Schaltung und das Verfahren gemäß der Erfindung dazu dienen, alle Fehlerbündel bis zur Länge b zu korrigieren, gleichbedeutend damit, zu beweisen, daß, wenn ein Datensatz, der aus lauter Nullen mit Ausnahme eines Bündels kleiner als b besteht, dem System nach den F i g. 1 und 2 zugeführt wird, die Stellen der Einsen in dem Bündel eindeutig aus den verbleibenden Inhalten des Schieberegisters 34 und des Registers 28 bestimmt werden können. Kurz, das Problem zu beweisen, daß das mit der Schaltung nach den F i g. 1 und 2 durchgeführte Verfahren alle Fehler korrigiert, die auf ein Bündel kürzer als b beschränkt sind, kann in ein gleichwertiges Problem übersetzt werden, bei dem dem Eingang des
Systems 10 nach F i g. 1 lauter Nullen mit Ausnahme eines Bündels, das kurzer als b ist, zugeführt werden. Es läßt sich zeigen, daß die Orte der Einsen in solch einem Eingangsstrom eindeutig aus dem Inhalt des Registers 28 und des Schieberegisters 34 lokalisiert werden können. Daraus folgt, daß das System 10 nach Fig. 1, wenn es in der beschriebenen Weise betrieben wird, dazu dient, alle Bündel, die kleiner als b sind, zu korrigieren.
Es gibt andere fehlerprüfende und fehlerkorrigierende Codes, die weniger Prüfbits zur Korrektur eines Bündels derselben Größe, wie es durch das oben beschriebene Verfahren korrigiert wird, erfordern. Der Hauptvorteil des Systems und des Verfahrens gemäß der Erfindung besteht darin, daß ein Syndrom vergleichsweise schnell decodiert werden kann. Andere Codes, die ebenso schnell decodiert werden können, erfordern weit mehr Prüfbits. Um beispielsweise Fehlerbündel zu korrigieren, deren Längen 6,11 oder 15 Bits in Datensätzen von 217 Bits beträgt, erfordert ein verschachtelter Hamming-Code 96, 176 oder 240 Prüfbits, wogegen der Code der vorliegenden Erfindung lediglich 48, 56 oder 64 Prüfbits erfordert, um Fehlerbündel der angegebenen Länge zu korrigieren. Daraus ist zu ersehen, daß der Unterschied zwischen den beiden Codes und damit der Vorteil, den die Erfindung gegenüber dem verschachtelten Hamming-Code besitzt, wesentlich zunimmt, wenn die Länge des zu korrigierenden Fehlerbündels zunimmt. Dieser
C,- = i. Zählerausgang
D1 = i. Dateneingang
C1 Z)1 C2- Dx
Ci Z)2 C2- D2
C1 -Z)3 C2- Z)3
C, D4 C2- Z)4
Vorteil wird teilweise dadurch aufgewogen, daß der verschachtelte Hamming-Code bestimmte weitverstreute Fehler korrigieren kann, die der vorliegende Code nur erkennen kann. Dieser Code erkennt oder korrigiert jedoch so viele Fehler wie ein verschachtelter Hamming-Code. Die Hauptaufgabe beider Codes ist es natürlich, alle einzelnen Fehlerbündel zu korrigieren, deren Länge kleiner ist als eine vorgegebene Länge b und alle Fehlerbündel zu erkennen, deren Länge kleiner als 2b- list
Die Art des bei der Anwendung der Erfindung benutzten Codes gestattet auch die Fehlerkorrektur bei paralleler Datenübertragung, wenn das UND-Glied 24 in F i g. 2 durch den Block 39 nach F i g. 3 ersetzt wird und wenn m überall mit Ausnahme der Ausgänge des Zählers 22 durch /n+log2U ersetzt wird. Mit dieser Änderung führt die Datenleitung 16 parallele Daten in u Kanälen. Der Zähler 22 hat noch m Stufen und die Anzahl der Leitungen, die die Register 26 und 28 miteinander verbinden und die verschiedene Bezeichnungen einschließlich des Buchstabens m tragen, werden um eine Anzahl erhöht, die äquivalent ist zu log2u.
Für die Verarbeitung paralleler Daten ist der Block 39 der F i g. 3 aus UND-Gliedern und exklusiven ODER-Gliedern zusammengesetzt und nimmt beispielsweise für den Fall, daß u=4 und m=5 ist, die folgenden Verknüpfungen vor:
C3 • D, C4- D1 Cs - D2 O O
C3 D2 Q- D2 C5- Dy O D2
C3 D3 C4- D3 C5- D4 D3 O
C3 D4 C4- D4 C5- D4 D4
Mit den Elementen jeder Spalte wird eine exklusive ODER-Verknüpfung vorgenommen und die in Fig.3 mit 39 bezeichnete Schaltung liefert sieben ( = m+log2u) Ausgangssignale. Die Decodierung erfolgt genau in der gleichen Weise wie das für den Fall der seriellen DatenUbertrag bereits beschrieben wurde und die Ergebnisse sind die gleichen als wenn in all den Spuren die parallelen Daten hintereinander angeordnet worden wären und dem in F i g. 2 dargestellten einzigen Dateneingang zugeführt worden wären.
Bei der Verarbeitung paralleler Daten ist es bisweilen wünschenswert, den Begrenzungspegel eines bestimmten Kanals einzustellen. Dies kann wegen der großen Anzahl von Fehler, die in einer der parallelen Spuren auftreten, erforderlich sein. Bei der Benutzung des Codes der vorliegenden Erfindung, soweit sie bis jetzt beschrieben wurde zur Korrektur von Fehlerbündeln in parallelen Daten, führt diese Situation wahrscheinlich zu einer Erkennung von Fehlern jedoch ohne eine Anzeige, in welcher Spur die Fehler auftreten. Eine Identifizierung der Fehlerspur kann durch die Verwendung zusätzlicher Schaltungen, wie sie in den Fig.4 und 5 dargestellt sind, in Verbindung mit den F i g. 1 bis 3 beschriebenen Schaltungen erzielt werden. Die in F i g. 4 im Blockschaltbild dargestellte Schaltung ist ein Baum aus den exklusiven ODER-Gliedern 40,41 und 42, die zwischen den parallelen Eingangsleitungen und einer einzigen Ausgangsleitung angeordnet sind. Die Anzahl der exklusiven ODER-Glieder kann soweit erhöht werden als erforderlich ist, um alle parallelen Datenleitungen zu erfassen. Der Ausgang der Schaltung nach Fig.4 ist mit dem Eingang des UND-Gliedes 24 und des exklusiven ODER-Gliedes 36 der Fig. 2 verbunden. Das Blockschaltbild der F i g. 4 zeigt nur vier parallele Eingänge, obgleich die Schaltung für acht Eingänge erweitert werden kann, wie das in F i g. 5 dargestellt ist.
Die zusätzlichen Prüfbits die so erzeugt werden, werden mittels der Schaltung nach F i g. 5 errechnet, in der ein Block 44 dargestellt ist, der drei exklusive ODER-Bäume zur parallelen Verarbeitung der Daten aus acht Datenspuren enthält. Die drei Ausgänge, an denen die Ergebnisse der drei angegebenen exklusiven ODER-Verknüpfungen erscheinen, führen zu drei über ein exklusives ODER-Glied 48 auf den Eingang rückgekoppelten Schieberegistern 46. Das Decodieren der Syndrombits des Prüfbündelgenerators nach F i g. 2 ist genau das gleiche wie es bereits beschrieben wurde mit der Ausnahme, daß die Adressen der erkannten
Mi Fehler genügend Information enthalten, um anzugeben, welche Bitgruppen fehlerhaft sind. Die zusätzlichen von den Schieberegistern 46 gelieferten Syndrome ijeben an, welches Bit jeder Bitgruppe fehlerhaft ist und geben damit auch die Spur an, für die der Begrenziingspegel
b5 eingestellt werden muß. Trotz der zusätzlichen Prüfbits, die für die weitere Information zur Bestimmung des fehlerenthaltenden Spurteiles benötigt werden, erfordert der vorliegende Code nur etwa halb so«viel Prüfbits
als ein verschachtelter Hamming-Code. Die früher in Verbindung mit den F i g. 1 und 2 beschriebenen Decodierfunktionen können beträchtlich vereinfacht werden und die zur Decodierung benötigte Zeit kann wesentlich verkürzt werden, wenn der Zähler 22 nach F i g. 2 so gesteuert wird, daß er nicht nach dem Eintreffen jedes Bits, sondern nur nach dem Eintreffen von b Bits weitergeschaltet wird. In dem gegebenen Beispiel mit b=3 liefert das Weiterschalten des Zählers 22 jeweils nach dem Eintreffen von drei Bits für das angegebene Fehlermuster folgendes Syndrom:
Fehlermuster: 10 9 8 7 6 = 5 4 3 2 1 0 Zähler von 3 auf
1 0 1 0 0 0 0 0 0 0 4 weitergeschaltet
1 1 0
0 0 0 = Syndrom
0
1 0
0 0 0 b, 1 1 0 1 0
10 10
Da der Zähler nur einmal während eines Bündels von b oder weniger Bits weiterschaltet, werden die Decodierverknüpfungen in folgender Weise reduziert:
α, = bt
a2 = b2 V-[S2S2(J1 + ^g2(O1)]
a3 = b3 ¥[s2g2a2
= b„+l
s2g2[am V (am _,«„,.,«,)] V s3g3 [>n_2
Das Blockschaltbild der F i g. 6 stellt die Schaltung zur y, Implementierung dieser Funktionen dar. Die Schaltung besteht aus einer Reihe von UND-Gliedern 50, aus exklusiven ODER-Gliedern 52 und 60 sowie mit der Bezugsziffer 54 bezeichnete Blöcke, die in der dargestellten Weise miteinander verbunden sind. Einzelheiten der mit der Bezugsziffer 54 versehenen Blöcke sind in F i g. 7 dargestellt aus der zu ersehen ist, daß ein solcher Block 54 ein paar UND-Glieder 56 enthält, deren Ausgänge an ein ODER-Glied 58 angeschlossen sind. «
Die Bits £■, der vorher angegebenen Decodierfunktion bilden folgendes während des Ausrichtteiles der Syndromdecodierung berechnete Muster:
typisches £·,= 11110 0 0 0 0
Die Anzahl der Einsen in einer Funktion g, ist genau die Anzahl der Stellen, um die b/ und s, während des anfänglichen Ausrichtens verschoben werden mußten. Die Anzahl der Datenbits ist ein Vielfaches der Länge des Schieberegisters 34. Diese Bits zeigen daher die Stelle in dem Fehlerbündel an, bei dem der Zähler weitergeschaltet wurde. Sie werden ebenfalls decodiert, um anzuzeigen, welches der b Bits das erste fehlerhafte Bit war. Am Ausgang der Decodierschaltung nach Fig.6 erscheint das Bit a/. Die Bits a,·... am geben die ωι Adresse der Gruppe aus b Bits, die den ersten Fehler enthält. Wenn eins der a Bits am von Null verschieden ist, dann ist ein unkorrigierbarer Fehler erkannt worden. Diese besondere Anordnung reduziert die Anzahl der erforderlichen Prüfbits etwas und dient auch dazu, die Decodierschaltung zu vereinfachen.
Die in Fig.6 gezeigte Schaltung kann weiter vereinfacht werden, wenn die Berechnung jedes der Bits a\ bis am nacheinander vorgenommen wird. Dann wird nur ein aus exklusiven ODER-Gliedern bestehender Baum 60 mit b Eingängen benötigt. Ferner sind b Blöcke 54 und die UND-Glieder 50 und die exklusiven ODER-Glieder 52 an der Spitze der F i g. 6 erforderlich. Für dieses Decodierverfahren sind etwa drei Mikrosekunden erforderlich.
Die beschriebenen fehlerprüfenden Codes und die Schaltungen zu ihrer Implementierung, die vorher beschrieben worden sind, bieten wesentliche Vorteile gegenüber anderen Codes, die bisher verwendet wurden. Bestimmte dieser Dodes erfordern mehr als 30 Mikrosekunden für das Decodieren und bereiten außerdem Schwierigkeiten, wenn parallele Daten korrigiert werden müssen und der Begrenzungspegel einstellbar sein muß. Andere Codes bereiten Schwierigkeiten bei der Verarbeitung paralleler Daten und benötigen außerdem zuviel Zeit für das Decodieren, während noch andere Codes beträchtlich mehr Prüfbits als der vorliegende Code erfordern. Dieser Code gestattet das Decodieren in weniger als 4 Mikrosekunden, benötigt weniger als die Hälfte an Prüfbits, die ein verschachtelter Hamming-Code erfordert und liefert noch Informationen für die Einstellung des Begrenzungspegels einer Spur.
Hierzu 2 Blntt Zeichnungen

Claims (3)

Patentansprüche:
1. Anordnung zur Fehlerkorrektur mittels eines zyklischen Codes in einer seriell übertragenen und eventuell zwischengespeicherten Datengruppe, wobei sende- und empfangsseitig nach demselben Verfahren aus den Datenbits ein Prüfbündel abgeleitet wird und die beiden Prüfbündel empfangsseitig zur Fehlerbestimmung und Fehlerortung verglichen werden, dadurch gekennzeichnet, daß die Datengruppe zur Erzeugung eines vom Dateninhalt abhängigen ersten Teil-Prüfbündels über ein rückgekoppeltes Schieberegister (36, 34, Fig.2) geleitet werden, und daß die Daten zur Erzeugung eines von den Positionen der binären Einsen in der Datengruppe abhängigen zweiten Teilprüfbündels über die folgende Anordnung geleitet werden:
- eine Torschaltung (24), die für jede binäre Eins in der Datengruppe den Inhalt eines die Position dieser binären Eins in der Datengruppe anzeigenden Zählers (22) an eine Exclusiv-ODER-Schaltung (30) überträgt, deren Ausgänge (m) parallel mit entsprechenden Positionen eines ersten Schieberegisters (28) verbunden sind,
— ein zweites Schieberegister (26) dessen Eingänge mit den Ausgängen des ersten Registers (28) verbunden sind und von dem ein erster so Teilinhalt (m) dem anderen Eingang der Exclusiv-ODER-Schaltung (30) zugeführt wird und dessen restliche Stufenausgänge (b) entsprechenden Stufen des ersten Schieberegisters (28) direkt zugeführt werden.
2. Anordnung nach Anspruch 1, dadurch gekennzeichnet, daß beim Empfang durch jeweils der beiden übertragenen, mit den empfangsseitig erzeugten beiden Teilprüfbündel ein zweiteiliges Syndrom erzeugt wird, das so lange verschoben wird, bis es in seinem ersten, durch Vergleich der beiden ersten Teilprüfbündel entstandenen Teil eine führende binäre Eins aufweist, auf die b-\ Nullen (b = maximal korrigierbare Länge des Fehlerbündels) folgen, an die sich mehrere Binärziffern 4r> anschließen, die den Wert 1 oder 0 haben können.
3. Anordnung nach den Ansprüchen 1 und 2, dadurch gekennzeichnet, daß das Decodieren des vorgegebenen Bitmusters zur Gewinnung der Adresse des Fehlerbündels mit Hilfe der folgenden Boolschen Verknüpfungen erfolgt:
DE2053836A 1969-11-05 1970-11-03 Anordnung zur Korrektur von Fehlerbündeln in binär codierten Datengruppen Expired DE2053836C3 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US87423469A 1969-11-05 1969-11-05

Publications (3)

Publication Number Publication Date
DE2053836A1 DE2053836A1 (de) 1971-05-13
DE2053836B2 true DE2053836B2 (de) 1978-10-19
DE2053836C3 DE2053836C3 (de) 1979-06-13

Family

ID=25363281

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2053836A Expired DE2053836C3 (de) 1969-11-05 1970-11-03 Anordnung zur Korrektur von Fehlerbündeln in binär codierten Datengruppen

Country Status (7)

Country Link
US (1) US3622984A (de)
CA (1) CA918807A (de)
CH (1) CH526168A (de)
DE (1) DE2053836C3 (de)
FR (1) FR2071745A5 (de)
GB (1) GB1328163A (de)
NL (1) NL7016107A (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3032468A1 (de) * 1980-08-28 1982-03-04 Siemens AG, 1000 Berlin und 8000 München Schaltungsanordnung zur erkennung und korrektur von fehlerbuendeln

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4320511A (en) * 1979-03-13 1982-03-16 Kokusai Denshin Denwa Co., Ltd. Method and device for conversion between a cyclic and a general code sequence by the use of dummy zero bit series
JPS5758210A (en) * 1980-09-26 1982-04-07 Hitachi Ltd Error correction range controlling circuit
JPS57136833A (en) * 1981-02-17 1982-08-24 Sony Corp Time-division multiplex data transmitting method
US5631909A (en) * 1995-05-31 1997-05-20 Quantum Corporation Method and apparatus for determining burst errors in an error pattern
US6430714B1 (en) * 1999-08-06 2002-08-06 Emc Corporation Failure detection and isolation
AUPR440901A0 (en) * 2001-04-12 2001-05-17 Silverbrook Research Pty. Ltd. Error detection and correction
GB2377142A (en) * 2001-06-29 2002-12-31 Motorola Inc Encoder for generating an error checkword
US20070283208A1 (en) * 2006-06-01 2007-12-06 International Business Machines Corporation Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code with bus diagnostic features
US20070283207A1 (en) * 2006-06-01 2007-12-06 International Business Machines Corporation Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code with bus timing improvements
US7721178B2 (en) * 2006-06-01 2010-05-18 International Business Machines Corporation Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code
US20070283223A1 (en) * 2006-06-01 2007-12-06 International Business Machines Corporation Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code with all checkbits transferred last
US9379739B2 (en) * 2014-08-11 2016-06-28 Qualcomm Incorporated Devices and methods for data recovery of control channels in wireless communications

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3222643A (en) * 1961-06-22 1965-12-07 Ibm Error detecting and correcting systems
NL130511C (de) * 1963-10-15
US3411135A (en) * 1965-03-15 1968-11-12 Bell Telephone Labor Inc Error control decoding system
US3437995A (en) * 1965-03-15 1969-04-08 Bell Telephone Labor Inc Error control decoding system
US3465287A (en) * 1965-05-28 1969-09-02 Ibm Burst error detector
US3466601A (en) * 1966-03-17 1969-09-09 Bell Telephone Labor Inc Automatic synchronization recovery techniques for cyclic codes
US3487361A (en) * 1966-12-15 1969-12-30 Ibm Burst error correction system
US3487362A (en) * 1967-04-10 1969-12-30 Ibm Transmission error detection and correction system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3032468A1 (de) * 1980-08-28 1982-03-04 Siemens AG, 1000 Berlin und 8000 München Schaltungsanordnung zur erkennung und korrektur von fehlerbuendeln

Also Published As

Publication number Publication date
CA918807A (en) 1973-01-09
CH526168A (de) 1972-07-31
FR2071745A5 (de) 1971-09-17
GB1328163A (en) 1973-08-30
NL7016107A (de) 1971-05-07
US3622984A (en) 1971-11-23
DE2053836C3 (de) 1979-06-13
DE2053836A1 (de) 1971-05-13

Similar Documents

Publication Publication Date Title
DE2060643C3 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE2260850C2 (de) Schaltungsanordnung zur Erkennung von Einzel- und Mehrfachfehlern und zur korrektur von Einzel- und bestimmten Mehrfachfehlern
DE3128599C2 (de) Verfahren und Vorrichtung zur Fehlererfassung und Fehlerkorrektur
DE2942825A1 (de) Verfahren und vorrichtung zur verarbeitung sequentiell uebertragender digitaler informationsworte
DE3040004A1 (de) Verfahren und vorrichtung zum codieren von pruefworten geringer redundanz aus ursprungsdaten
DE2425823A1 (de) Einrichtung zur fehlererkennung und fehlerkorrektur
DE3125048A1 (de) Erzeugung von fehlerkorrekturpruefbits unter benutzung von paritaetsbits zur durchlaufkontrolle
DE2053836C3 (de) Anordnung zur Korrektur von Fehlerbündeln in binär codierten Datengruppen
DE3787034T2 (de) Digitale Signalfehlerkorrektur.
DE2622184A1 (de) Fehlerkorrekturverfahren
EP0219917B1 (de) Vermittlungsanlage mit Fehlerkorrektur
DE102005022107B4 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE2659031B2 (de) Fehlerkorrektur- und -Steuersystem
DE2460263A1 (de) Schaltungsanordnung zum korrigieren des schlupffehlers in datenuebertragungssystemen unter verwendung von zyklischen codes
DE2047868A1 (de) Schaltung zur Korrektur von Einzel fehlern in den Wortern eines zyklischen (n, k) Codes
DE2104132C3 (de) Anordnung zur Mehrfachfehlererkennung und Einzelfehlerkorrektur
DE2000565A1 (de) Fehlerkorrigierendes System zur Korrektur mehrfacher,zufaelliger Fehler
DE1168677B (de) System zur Fehlerermittlung und Fehlerkorrektur
DE4300025C1 (de) Verfahren und Einrichtung zur fehlercodierenden Datenübertragung
DE2657408A1 (de) Fehlerkorrekturschaltung
DE2742881C2 (de)
DE3134831A1 (de) System zur uebertragung digitaler informationssignale
DE3229111C1 (de) Verfahren zur Fehlerkorrektur von Daten
DE1524891B2 (de) Schaltungsanordnung zur Korrektur von Fehlerbündeln
DE2817863C (de) Einrichtung zur Fehlerkorrektur

Legal Events

Date Code Title Description
C3 Grant after two publication steps (3rd publication)
8339 Ceased/non-payment of the annual fee