DE2262070A1 - Mit schieberegistern arbeitendes fehlerkorrektursystem - Google Patents

Mit schieberegistern arbeitendes fehlerkorrektursystem

Info

Publication number
DE2262070A1
DE2262070A1 DE19722262070 DE2262070A DE2262070A1 DE 2262070 A1 DE2262070 A1 DE 2262070A1 DE 19722262070 DE19722262070 DE 19722262070 DE 2262070 A DE2262070 A DE 2262070A DE 2262070 A1 DE2262070 A1 DE 2262070A1
Authority
DE
Germany
Prior art keywords
byte
matrix
bytes
shift register
subdivision
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.)
Withdrawn
Application number
DE19722262070
Other languages
English (en)
Inventor
Se June Hong
Arvind Motibhai Patel
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 DE2262070A1 publication Critical patent/DE2262070A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • 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/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming 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

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

Aktenzeichen der Anmelderin: PO 971 057
Mit Schieberegistern arbeitendes Fehlerkorrektursystern
Die Erfindung betrifft ein mit Schieberegistern arbeitendes Fehlerkorrektursystem, welches ein eine Anzahl von Bits umfassendes Nachrichtenbyte ungeachtet der Anzahl fehlerhafter Bits in diesem Byte korrigieren kann.
Die Anwendung von Fehlerkorrekturcodes zur Verbesserung der Zuverlässigkeit wird in modernen Rechnern zu einem Standardverfahren. Besonders im Speicher und in den direkten Datenübertragungswegen hat man die Vorteile der Fehlerkorrekturcodes klar erkannt.
Codes zur Korrektur zufälliger Fehler eignen sich für Speicher, bei denen jedes Bit eines Wortes sich auf einer anderen Speicherkarte befindet., und gewisse homogene Bitanordnungen. Die Forderung nach größerer Schnelligkeit und Leistungsfähigkeit eines Systems haben dazu geführt, den Speicher so zu organisieren, daß auf einer Speicherkarte nicht nur ein Bit, sondern eine Gruppe von Bits eines Wortes gespeichert wird. Ebenso übertragen die Datenkanäle gewöhnlich eine Gruppe von Bits parallel. Eine solche Bitgruppe wird häufig als Byte bezeichnet. Der Ausdruck "byteorganisierte Maschine" ,trifft daher, für die meisten
309827/0786
modernen Rechenanlagen zu. Ein einziger Fehler im System, entweder im Speicher oder in den Datenwegen, beeinflußt daher wahrscheinlich viele Bits innerhalb eines Datenbytes.
Ein einziger Fehler im System, entweder im Speicher oder in den Datenwegen, beeinflußt mit großer Wahrscheinlichkeit viele Bits innerhalb eines Bytes. Demzufolge wird die Fähigkeit zur Byte-Fehlerkorrektur von den in diesen Systemen zu benutzenden Codes gefordert. Die bekannten Codes zur Korrektur mehrerer zufällig auftretender Fehler, die die Fehlerabhängigkeit innerhalb des Bytes nicht ausnutzen, benötigen eine ungewöhnlich hohe Redundanz und erfordern komplizierte Decodierverfahren. Eine andere Anwendung eines Byte-Korrekturcodes findet sich bei Digitalsystemen mit mehreren Kanälen, in denen die Kanalstörungen oft mehr als ein benachbartes Bit in jedem Kanal unabhängig beeinflussen.
Wenn eine Bitgruppe fester Größe in jedem Kanal als Byte betrachtet wird, führt das zur Anwendung sogenannter Byte-Fehlerkorrekturcodes. Ein Byte ist eine Gruppe von b Datenbits, für die es wahrscheinlich ist, daß sie gemeinsam durch Kanalstörungen oder Schaltungsfehler beeinflußt werden. Die Länge b eines Bytes ist allgemein eine positive ganze Zahl.
Es ist bekannt, daß ein Fehlerkorrektürcode für Symbole des Galois-Feldes von 2 Elementen, GF(2 ) zur Korrektur von Bytefehlern benutzt werden kann. In all diesen Byte-Fehlerkorrekturcodes wird jedes Prüfsignal im GF(2b) durch b binäre Prüfziffern ausgedrückt und jedes Informationssymbol im GF(2 ) ebenfalls durch b binäre Informationsziffern. Alle Codier- und Decodieroperationen werden mit diesen Gruppen von b Binärziffern durchgeführt, so daß man eine Korrektur von b benachbarten Ziffern erhält entsprechend der Korrektur eines Symbols des GF(2 ).
Fehlerkorrektürsysterne, die alle Ziffern eines Zeichens oder Informationsbytes korrigieren können, sind bekannt und ζ. Β
309827/0786
PO 971 057
beschrieben in der US-Patentschrift 3 319 223 vom 9. Mai 1967. In diesem System werden mehrere mehrziffrige Informationszeichen, denen zwei zugehörige mehrziffrige ~Prüfzeichen folgen, durch eine Prüfzeichen-Nachrechnungsschaltung bearbeitet, die mit den Prüfzeichen-Erzeugungsschaltungen identisch ist, die in der Sendestation enthalten sind.
Diese Anordnung ist insofern begrenzt, als nur zwei Prüfzeichen erzeugt werden können, wodurch die Länge der zu codierenden Informationsbytes eingeschränkt ist. Für lange Bytefolgen mußte beim bisherigen Stand der Technik entweder die Information in verschiedene Codewörter aufgeteilt werden oder man mußte zu einer größeren Bytelänge greifen, was die Anzahl von Schieberegistern und damit die benötigte Zeit entsprechend erhöht.
Der Erfindung lag daher die Aufgabe zugrunde, ein Fehlerkorrektursystem zu schaffen, das die Korrektur eines fehlerhaften Bytes ungeachtet der Anzahl seiner fehlerhaften Bits für eine Folge von Informationsbytes beliebiger Länge ermöglicht, in welchem mehrere Prüfbytes erzeugt werden können und bei dem der Code maximal ist, d. h. eine Mindestanzahl von Prüfbits für die gegebene Informationslänge benutzt wird, und welches mit Schieberegistern verwirklicht wird.
Die Aufgabe der Erfindung wird gelöst durch ein Fehlerkprrektursystem zur Korrektur von bis zu b benachbarten Fehlern in einem b Bits umfassenden Byte einer byteorientierten binären Nachricht, das gekennzeichnet ist durch eine Mehrzahl von Schieberegisterpaaren, deren jedes die Bits einer Untermatrix verarbeitet, die eine Unterteilung einer Η-Matrix bildet, eine Mehrzahl von Registern, die die Ausgangssignale der Schieberegisterpaare verarbeitet, um Prüfbits zur Codierung der binären Nachricht entsprechend der Η-Matrix zu liefern, eine Vorrichtung zum Anfügen der Prüfbits an die binäre Nachricht, eine Vorrichtung zur Decodierung der codierten Folge von Nachrichtenbytes nach deren Benutzung und eine Vorrichtung zur Korrektur der durch die Decodierung festgestellten Fehler.
309827/0788
PO 971 057
Ein Ausführungsbeispiel der Erfindung ist in den Zeichnungen dargestellt und wird anschließend näher beschrieben. Es zeigen:
Fig. 1 in einem Blockschaltbild das Fehlerkorrektursystem nach der Erfindung,
Fig. 2 eine Η-Matrix mit den Untermatrizen und den
für gegebene Generatorpolynome erzeugten Prüfbits,
Fig. 3 schematisch genauer die Unterteilung und Abstufung der nacheinander verbundenen Untermatrizen der Η-Matrix der Fig. 2,
Fig. 4 das Schaltbild eines in den Unterteilungen
und 2 benutzten Schieberegisterpaares und den zur Akkumulation von Prüfbyte und Syndrombyte benutzten Schieberegisterakkumulator,
Fig. 5 die Schaltung zur Bestimmung der Lage der das
Fehlermuster enthaltenden Unterteilung und
Fig. 6 das Schaltbild der Fehlerkorrekuranordnung.
In Fig. 1 ist gezeigt, wie die Daten in Form von Blocks aus parallelen Bytes von b Bits in den Codierer 11 laufen, wo Prüfbytes nach einer später zu entwickelnden Η-Matrix erzeugt werden, Die zu den verschiedenen Teilen der Η-Matrix gehörenden Informationsbytes werden den entsprechenden Paaren von Schieberegistern 10, 12, 14 durch den Datenverteiler 16 zugeführt. Diese Schieberegisterpaare verarbeiten die Informationsbytes aus den entsprechenden Unterteilungen so, daß Teil-Prüfbytes erzeugt werden. Diese Teilprüfbytes werden modulo 2 im Prüfbitregister und im Akkumulator 18 addiert. Die Prüfbytes werden an das Ende der Nachrichtenbytes angehängt, um die codierte Nachricht zu bil-
309827/0788
PO 971 057
den, die in einer Mehrspuranlage oder einem Mehrkanal-Übertragungssystem 20 benutzt wird.
Nach dem Lesen oder dem Empfang durch das benutzend Gerät läuft die Information in den Datenverteiler 28, von wo sie zur Decodierung verteilt wird. Die Decodierung erfolgt durch Erzeugen eines Syndroms für die empfangene Nachricht, welches die Prüfbytes einschließt. Die Teilsyndrome werden durch Paare von Schieberegistern 22, 24, 26 erzeugt, die mit den Informationsbytes der entsprechenden Unterteilungen der Η-Matrix arbeiten. Zur Erzeugung der Syndrome können in der Praxis dieselben Schieberegister benutzt werden wie für die Erzeugung der Prüfbits. Die Teilsyndrome werden zu den zugehörigen Prüfbits modulo 2 addiert und bilden das vollständige Syndrom, welches im Syndromschieberegister 30 akkumuliert wird. Das Syndrom enthält das Fehlermuster, d. h. die Fehler, die gegebenenfalls bei der Benutzung oder übertragung der codierten Nachricht entstanden sind. Durch logische Schaltungen zeigt die Unterteilungs-Fehlerlokalisierschaltung 32 aufgrund des Syndromes die Unterteilung an, in welcher das Fehlermuster steht. Wenn diese Unterteilung einmal bestimmt wurde, läßt sich das fehlerhafte Byte innerhalb der Unterteilung durch einfachen Vergleich mit Hilfe der Schieberegister in Block 34 finden. Wenn das fehlerhafte Byte gefunden wurde, lassen sich die jeweiligen Fehler durch Invertieren in der Fehlerkorrekturschaltung 36 korrigieren. Die Schieberegister 22, 24, 26, 30 und 34 sind nur der Einfachheit halber dargestellt, da die durch diese Schieberegister ausgeführten Funktionen tatsächlich durch die Schieberegister 10, 12, 14 und 18 im Decodierbetrieb übernommen werden können.
Die vorliegende Erfindung läßt sich auf Informationsverarbeitungssysteme unterschiedlicher Kapazitäten anwenden und wird daher in algebraischen Ausdrücken beschrieben, die sich auf Systeme jeder Größe anwenden lassen, und anschließend an einem spezifischen Systembeispiel.
3098 27/0786
PO 971 057
22S2070
Zur Entwicklung der Matrixtheorie, aus welcher die Erzeugung von Codier- und Prüfbits zu ersehen ist, müssen einige mathematische Ausdrücke entwickelt werden. Diese Ausdrücke sind die Nullverkettung, die verkürzte Matrix und die Begleitmatrix.
Gegeben sei ein Vektor von der Länge d, dann ist der Nullverkettungsoperator Φ , definiert als die folgende r · d Matrix: r ,α
r,d
r-d,d
(D
r, r > d
worin I, eine d · d Einheitsmatrix ist und 0 eine Nullmatrix bezeichnet. Wenn ν ein Spaltenvektor der Länge d ist, dann ist für "r > d
0] =
r-d Nullen
(2)
worin T die Punktion des Transponierens anzeigt. Der resultierende Vektor ist eine r-d-Nullverkettung zum Originalvektor ν.
Der Verkürzungsoperator ϊ, ist natürlich definiert als eine d · r Matrix:
•d,r
5
,r-dJ * *r,d
(3)
also wenn ν =
r V2' ··" vd]
(4)
PO 971 057
309827/0788
welches ein Fortfallen von (r-d) -Bits von ν ist. Außerdem ist das Verkürzen der Verkettung eine Identitätsoperation und £ ist eine Linksinverse von Φ ,, d. h.
r,u
o.,r
Gegeben sei ein Polynom a(x) des Grades d, dann ist die a(x) entsprechende Begleitmatrix T folgendermaßen definiert:
a(x) = Σ i=O
a.χ , an = a, = 1
000 1Ci-I - 00 ao
ai
i
ad-i
(6)
(d χ d)
Eine äquivalente Definition von T ist, daß die i-te"Spalte (1 <_ i £ d) von T dieselbe ist wie der Koeffizientenvektor von χ modulo a(χ). Einige nützliche Eigenschaften der_Begleitermatrix sind folgende:
Eigenschaft 1:
Es soll e der Exponent von a(x) sein, d. h. γ = e ist die kleinste positive Lösung x^ «= 1 modulo a (χ) .
i). T ist nicht Singular;
ii). T° = Te = I-
r i i
iii).T = TJ wenn i = j modulo e
309827/0786
PO 971 057
Eigenschaft 2:
Die i-te Spalte von T3 ist dieselbe wie der Koeffizientenvektor des Polynoms x1+ -1 modulo a(x) des (d-1) . Grades.
Eigenschaft 3: d-1
Es soll ν der Koeffizientenspaltenvcktor von v(x) = Σ V. x sein
I=O1
d-1 i . i
und v1 für v1(x) = Σ ν ' χ · T · ν = ν1, wenn, und nur wenn
1=0 X
χ ν (x) = v'(x) modulo a(x). ..
Das der Multiplikation von χ mit dem Inhaltspolynom modulo a(χ) entsprechende lineare Rückkopplungsschieberegister ist äquivalent der Multiplikation von T mit dem Koeffizientenvektor des Inhaltspolynoms. Bei der Rückwärtsverschiebung entspricht eine Verschiebung der Multiplikation τ"1 mit dem Koeffizientenvektor des Inhal tspolynoins..
Wenn α ein primitives Element im Galois-Feld GF(2r) und eine Wurzel eines primitiven Polynoms g(x) des Grades r ist, dann kann die Begleitmatrix T auch durch den folgenden Ausdruck beschrieben v/erden, da α der Koeffizientenvektor von χ modulo g(x) ist.
m Γ 2 3 rl „i Pi+1 i+2 i+r~J ._, T=Lotaa...aJf 1=|_α / α ...α _J (7)
Die Rechtsmultiplikation der Nullverkettung von T (oder T .) er gibt:
welches interessanterweise die (r-d) verkürzten Spalten der ur sprünglichen T-I^atrix sind.
309827/0788
PO 9 71 057
Anschließend wird ein Lehrsatz für die folgende Beschreibung ' bewiesen.
•Lehrsatz 1:
Wenn e der Exponent eines irreduzlblen Polynoms a(x) des Grades d und v{x) Φ O ein Polynom des Grades m oder kleiner ist, dann
ist ■ · ' ■ .
x1 v(x) + x^ v(x) Ξ O modulo a(x) (9)
Daraus folgt: - "'"-.·
i Ξ j modulo e . , (10)
wenn, und nur wenn ·
m < d · (11)
Beweis;
Aus Gleichung (9) folgt (1 + x3"1) v(x) = O modulo a(x). Wenn Gleichung (11) zutrifft, ist der größte gemeinsame Teiler von (v(x), a(x)) = 1 und somit:
(1 + χ3"1) ξ 0 modulo a(χ)
was Gleichung (10) impliziert. Wenn m { d ist, soll m = d und v(x) = a(x) sein. Dadurch wird die Anwendbarkeit der Gleichung (10) verletzt. Q.E.D.
Folgesatz 1;
Die Größen e, a(x) und d sollen wie 'i"m Lehrsatz 1 definiert sein und T die Begleitmatix der Größe a(x). Wenn ν ein Spaltenvektor der Länge ρ ist, ρ < d, dann gilt:
309327/0786
PO 971 Ö57 BAOORIGINAL
ΪΧ Φ , ν + d,p
und das impliziert
Φ , ν = Ο
d,p
(12)
i = j modulo e
(13)
Eine natürliche Beschreibungsart der Codestruktur der Erfindung bedient sich der Paritatsprufniatrix. Der Prüf teil mit vorgegebenen r Prüfbits wird durch eine Einheitsmatrix I dargestellt. Da jedes Byte nicht durch ein Symbol aus dem GF(2 ), sondern als eine Ansammlung von b Einzelbits betrachtet wird, unterliegt r keiner Beschränkung. Grundsätzlich ist r = kb + c, wobei O <^c < b ist. Die restlichen c Prüfbits können, wenn überhaupt welche vorhanden sind, ein besonderes Prüfbyte bilden. Eine andere Behandlungsmöglichkeit für die restlichen Prüfbits besteht in der Bildung von k - 1 Prüfbytes regulärer Größe und einem Sonderprüfbyte der Länge b + c. Die nach Bytes unterteilte Einheitsmatrix kann folgendermaßen dargestellt werden:
I =
b+c
(k-1) Ib's
(15)
In der folgenden Matrix H^, worin r >. 2b ist, sind r Prüfbits und eine Bytelänge b gegeben.
BAO ORIGINAL
309827/0786
PO 971 057
r,b
1
1
1 1
1
1 1
1
1 1
"1
1 b-2
. .a
ο0«1.. .α*"1 ο1«2. +1 α*-+*»-* b-2a°.
α1«1 α"
(17)
Der Spaltenvektor α ist ein primitives Element im GF (2 ). Bezeichnet man mit g(x) die Minimalfunktion von α und mit Τ(Γ_^) die Begleitmatrix von g(x), so kann die Gleichung (15) folgendermaßen unter verwendung der oben entwickelten mathematischen Ausdrücke als Gleichung (16) umgeschrieben v/erden:
r,b"
T(r-b)*I(r-b),b|
.2r-b-2
(18)
Diese Matrix wird als Teil des Informationsteiles der hier entwickelten Paritätsprufmatrix verwendet.
Es kann gezeigt werden, daß die Matrix H . bei Verwendung als
r ,ο
Einheitsiaatrix I- eine Pari tätspruf matrix H bildet, die alle
Einzelbytefehler korrigieren kann.
H -
(19)
Jedes Byte beginnt mit dem nächstfolgenden höheren Spaltenvektor, der bezeichnet ist durch den nächsten Exponenten von α, der höher ist als derjenige, mit welchem das vorhergehende Byte begonnen hat.
309827/0786
PO 971 Ο57
ΪΓ—fo
Die Infornationsbits sind die Verkettung von 2 - 1 Bytes, BQ, B ... B . . Die Prüfbits sind ähnlich ausgedrückt in
Form von Prüfbytes C-C2...C, , wobei C, das Spezialprüfbyte mit der Länge b -ι- c ist, das in der Gleichung (15) angegeben ist.
Das Codev/ort I = B,J3....B , C-C,,...C, erfüllt die zur Ent-
O 1 „r""_p 12 k
wicklung des nachfolgend aufgeführten Syndroms notwendige Beziehung:
H · [BoBr.B2r.b_2ClC2;;.Ck]T = O ■ . (20)
Das fehlerhafte Codcv/ort I erzeugt dann das Syndrom S, welches gegeben ist durch:
T
HI = S = [S1S2S3...Sk] · (21)
worin S. das dem Prüfbyte C. entsprechende Syndrombyte darstellt. Die Leistungsfähigkeit des Codes läßt sich demonstrieren, indem man zeigt, daß unterschiedliche Syndrome für jeden unterschiedlichen Bytefehler vorhanden sind. Zunächst liefert ein Fehlerbyte im Informationsteil, z. B. das Fehlermuster E / O im i~ten Byte das folgende Syndrom aus den Gleichungen (18) und (21):
Sl = E ' (22)
[S2S3...Sk] = [T1^ . I(r-b)b] . E (23)
Da S1 - E £ 0 ist, ist der Vektor $(r_b) b · E von null verschieden. Aus der Eigenschaft 1 der T-Matrix geht dann hervor, daß:
309827/0786
PO 971 057
2S3...sk]
Das Fehlerbyte im Prüfteil ergibt jedoch die folgenden Syndrome, wobei E φ O im j~ten Prüfbyte sein soll.
. Sx « O, λ ^ j -
S. = E ji O . · '■**· .- ■'' (25)
Somit muß ein Fehler im Informationsteil in mindestens zwei Bytes aus von null verschiedenen Syndromen resultieren und ein Fehler im Prüfteil in nur einem von null verschiedenen Syndrombyte. Unterschiedliche Fehler im Prüfteil ergeben offensichtlich unterschiedliche Syndrome, wie ans den Gleichungen (24) und (25) zu ersehen ist. Wenn man jetzt annimmt, daß die Bytefehler E^O und E2 fi O im i-ten und j-ten Informationsbyte (i ^ j) identische Syndrome hatten, dann ergibt sich aus den Gleichungen (22) und (23) : / " ,
tung ohnehin klar ist.) Durch Einsetzen von E3 = E in Gleichung
(Die Indizes bei T und I werden weggelassen, sobald ihre Bedeutung ohnehin klaj
(27) ergibt sich
(T1 Φ + T^ Φ)- · E1 = O . -
Aufgrund des Folgesatzes 1 bedeutet das i = j modulo
-2 ist, ergibt s
309827/Ö786
und da O < i, j £ 2r"b-2 ist, ergibt sich i = j. Das widerspricht
PO 971 057
der Annahme i / j. Damit ist bewiesen, daß jedes fehlerhafte Informationsbyte zu einem anderen Syndrom führt. Außerdem ist das Fehlermuster gegeben durch das Syndrombyte S., wie aus Gleichung C22) zu ersehen ist.
Der durch die nachfolgende Paritätsprüfmatrix H beschriebene Code korrigiert alle Einzelbytefehler v/o r > 3b ist.
TI _
r,b
°b,b(2r-2b-l)
(r-b) ,b
(28)
Die der Größe H , und H, . . , entsprechenden Informationsteile
r,b (r-b) ,b
können die erste und zweite Unterteilung der Informationsbytes genannt werden. Ein Fehlerbyte in der ersten Unterteilung ergibt S. / O und mindestens ein weiteres von null verschiedenes Syndrombyte. Ein Fehlerbyte in der zweiten Unterteilung ergibt S. s O, S, / O und mindestens ein weiteres von null verschiedenes Syndrombyte, da H, , . . selbst ein einen Einzelbytefehler korrigierender Code für r-b Prüfbits ist. Ein Fehlerbit im Prüfteil ergibt ein, und nur ein von null verschiedenes Syndrombyte. Unterschiedliche Fehler in derselben Unterteilung ergeben verschiedene Syndrome.
Eine wiederholte Verkettung von Einzelfehler korrigierenden Untermatrizen H . ; H, , . , sind mögliche definierende Unterteilungen, r,D tr-Dj ,ο
Wi^s aus Gleichung (2B) zu ersehen ist, die die Fähigkeit der Einzelbytefehlerkorrektur aufrechterhalten.
Es gibt Grenzen dafür, wieweit die Wiederholung ausgeführt werden kann. Ein nicht trivialer Code zur Korrektur von Bytefehlern muß z. B. mindenstens ein Informationsbyte außer den Prüfbytes haben. Es wird angenommen, daß der durch die nachfolgende Paritätsprüfmatrix bezeichnete Code ein nicht trivialer Code zur Korrektur von Einzelbytefehlern ist.
309827/0786
PO 971 057
H = [V1, V2, ... vb j W1, W2, .... wb I ] (29)
In obiger Gleichung sind ν. und w. Spaltenvektoren der Länge r.
V*
Alle Fehlerrauster in dem ersten Byte erzeugen 2 -1 von null verschiedene unterschiedliche Syndrome. Diese Syndrome können als b-dimensionaler Vektorraum V betrachtet v/erden, der gebildet wird durch v. , V2, ... v, . Die Fehlefmuster im zweiten Byte erzeugen ebenfalls Syndrome, die einen anderen dimensionalen Vektorraum W bilden. Außerdem müssen V und W bei einem Code zur Korrektur von Einzelbytefehlern disjunkt sein. Somit gilt für die Dimensionen: - ,
dim (V + W) = dim (V) + dim (W) - dim (V Ω W) . = dim (V) .+ dim (W)
und daraus folgt, daß r ^> dim (V· +. W) = 2b ist. Somit muß für einen nicht trivialen Code zur Korrektur von Bytefehlern r ^ 2b sein. Für r < 2b ist der Trivialcode gegeben durch H= [I ].
Aus obigen Ausführungen geht hervor, daß für r — kb + c vorgegebene Prüfbits (O £ c < b), H(2b+cl b äer kleinste derartige Code zur Korrektur von Einzelbytefehlern mit 2b+c Prüfbits ist. Damit ist die Grenze der iterativen Verkettung festgelegt.
Der Code der Erfindung wird gemäß der folgenden Paritätsprüfmatrix H erzeugt, wobei de:
chung (15) unterteilt ist.
matrix H erzeugt, wobei der Prüfteil I in Bytes gemäß der Glei-
309827/0788
PO 971 057
H S=
r-b
r,b
°bx
H(r-b),b
H(r-2b),h
(30)
H =
t *, I
Ir J (31)
Die zweite, oben gezeigte Form dient der Definition von k-1 Unter den Informat
-l) Spalten.
teilungen für den Informationsteil. Jede Unterteilung P. enthält bx(2(k-j)b + c
Die Information kann also gemäß der oben definierten H-Matrix codiert werden. Die Η-Matrix ist unterteilt und jede Unterteilung enthält eine Untermatrix H, ., . , , die gemäß obiger Definition einzeln in der Lage sind, eine Korrektur von Einzelbytefehlern durchzuführen. Die Untermatrizen sind, wie oben gezeigt, wiederholt verkettet und bilden die geforderte H-Matrix.
Die Prüfbits werden in der letzten Unterteilung in Form einer Identitätsmatrix I zugefügt. Wenn die Nachricht länger wird, wird der Code natürlich wirksamer, da jedes Prüfbit der Reihe nach seine Funktion relativ zu einem längeren Nachrichtenteil ausübt.
309827/0786
PO 971 057
Es kann gezeigt werden, daß in einer nach der Matrix H codierte Nachricht alle Einzelbytefehler' korrigiert werden können. Je zwei verschiedene Fehler innerhalb einer Unterteilung oder innerhalb des Prüfteiles ergeben unterschiedliche Syndrome, wie bereits gezeigt wurde. Ein Einzelfehler E / O im i-ten Byte der Unterteilung P. ergibt das Syndrom:
St=S= = «? = O
1 2 '* * j-1
und .·.;," (32)
welches von dem Syndrom eines Einzelbytefehlers in einer anderen Unterteilung oder im Prüfteil verschieden ist.
Ein Code wird dichtgepackt genannt, wenn alle möglichen 2r Syndrome benutzt werden, um 2 verschiedene Fehlermuster.zu korrigieren. (Fehlerfreiheit wird auch als Fehlermuster gewertet.) Ein Code wird maximal genannt, wenn kein längerer Code mit derselben Fehlerkorrekturmöglichkeit für ein gegebenes r existiert. Definiert man M. als die Anzahl unterschiedlicher Fehlermuster, die der Code bei einem gegebenen r korrigieren kann, so kann man mit Hilfe der Gleichungen (15), (17) und (30) mit r j> 2b schreiben:
M, = V" (2b-l) (2(k"j)b+C-l)·+ (k-1) (2b-l) + (2b+C"l) + 1
j = l - ■
worin der erste Ausdruck der Summe über allen Unterteilungen das Produkt der Anzahl von Bytes und der Anzahl von von null verschiedenen Mustern pro Byte, welche 2D-1 ist, summiert. Der zweite Ausdruck ist für die (k-1) Prüfbytes regulärer Größe und der dritte reflektiert das Spezialprüfbyte. Die letzte 1 ist vorgesehen für die fehlerfreie Situation.· Die Umschreibung ergibt:
309827/0786
PO 9 71 057
M1 = (2b-l) V 2ib+C + 2b+C 1 il
2-1
r
Damit ist bewiesen, daß der Code ein dichtgepackter Code ist.
Die Struktur des codes wird in Form einer Η-Matrix gegeben, die iterative Verkettung von Unterteilungen definierenden Untermatrizen aufweist. Jede Unterteilung definiert durch sich selbst einen Code zur Korrektur von Bytefehlern, der v/iederum in Form eines generierenden primitiven Polynoms und seiner Begleitmatri^c beschrieben ist. Die Bytes werden als eine zweckmäßige Ansammlung einzelner Bits und nicht als ein Symbol aus dem GP(2 ) betr<- jhte't und somit braucht die Bytegröße b nicht durch die Anzahl von Prüfbits r teilbar zu sein.
Wendet man sich nun vom theoretischen, allgemeinen Fall einem spezifischen Ausführungsbeispiel der Erfindung zu, so zeigt Fig. 2 die Paritätsprüfmatrix des Codes für die Bytelänge b = 2 und die Prüfbits r = 7. Die die erste Unterteilung P.
des Informationsteiles der Η-Matrix bildende Untermatrix wird
? durch das primitive Polynom fünften Grades g (x) = 1 + x" + χ - 101001 gebildet. Wie aus der vorhergehenden theoretischen Beschreibung bekannt ist, sind die Spaltenvektoren α primitive
r—b
Elemente im GF(2 ). In diesem Fall ist r-b = 5 und somit wird das primitive Polynom fünften Grades zur Erzeugung der Untermatrix in der ersten Unterteilung P benutzt. Die tatsächlichen Spalten der Untermatrix in der ersten Unterteilung erhält man aus den folgenden Werten von α:
BAD ORiGlNAL
309827/0786
PO 971 057
α = 01000
α2 s= 00100
α3 = 00010
α4 = 00001
α5 = 10100
α31 = 01001
Diese Werte von α werden erzeugt, indem man die binäre Zahl als um ein Bit nach rechts verschoben und das letzte ausgeschobene Bit als erstes wieder zugeführtes betrachtet, wenn dieses Bit eine Null ist. Wenn das ausgeschobene Bit eine Eins ist, dann wird der Wert des primitiven Polynoms 101001 antivalent mit "■ dem Inhalt verknüpft.
Die Anzahl r*er in der ersten Unterteilung P1 enthaltenen Bytes
5 - *■
beträgt 2 - 1 = 31 und stellt 62 Informationsbits dar.. In gleicher Weise wird die zweite Unterteilung Pn des Informationsteir les der Matrix erzeugt durch das primitive Polynom dritten Grades g2(x) = 1 + χ + χ = 1101. Das primitive Polynom dritten Grades wurde gewählt, da die zweite Unterteilung P9 die Unter-
r—2b matrix H _, mit Elementen α aus dem GF(2 ) enthält, was 3 ergibt, wenn r = 7 und b = 2 ist. Die Anzahl von Bytes inner-
halb der zweiten Unterteilung ist 2 -1=7 und stellt 14 Informationsbits dar. BQ bis B_ bezeichnen die Bytes der ersten Unterteilung P. und A_ bis A4. die Bytes der zweiten Unterteilung P„. Der Prüfteil C der Gesamt-H-Matrix umfaßt drei separate Bytes C-, C~ und C^, von denen das letzte Prüfbyte C_ ein Byte spezieller Größe der Länge 3 ist. Der durch diese Paritätsprüfmatrix vorgeschriebene Code ist ein dichtgepackter Byte-Fehlerkorrekturcode mit sieben Prüfbits entsprechend der oben beschriebenen Theorie. Die Bits innerhalb eines zwei Bit großen Bytes werden weiter dadurch bezeichnet, daß man das linke Bit eines Bytes mit "a" und das rechte Bit mit "b" bezeichnet. Fig. 3
309827/0786
PO 971 057
BAD-ORIGINML
zeigt schematisch die Paritätsprüfmatrix der Fig. 2 mit den drei Unterteilungen P., P2 und C und der Byte- sowie Bitbezeichnung. Die Untermatrizen enthalten Einheitsmatrizen I, mit einer Länge von zwei Bits. Die zweite Untermatrix definiert die zweite Unterteilung P«, die nach obiger Beschreibung erzeugt wurde, und ist mit der Untermatrix der ersten Unterteilung P. verkettet oder wird zu dieser hinzugefügt. In diesem Fall ist also die zweite, zur ersten hinzugefügte Untermatrix relativ zur ersten Untermatrix, der ersten Unterteilung P., um zwei Bits nach unten verschoben. Die übrigen Biträume werden mit Nullen gefüllt. Diese iterative Verkettung von Matrizen kann bis zu den in der theoretischen Beschreibung definierten Grenzen ausgeführt werden. Die dritte Unterteilung C der Gesamtmatrix H besteht aus der Identitätsmatrix I-, die in diesem Fall in die ersten und zweiten Bytes C, und C„ unterteilt ist und ein drittes Spezialbyte C3 aus drei Bits enthält.
Wie bereits gesagt wurde, muß die hereinkommende Nachricht so codiert werden, daß sie einfach und schnell wieder decodiert werden kann.
Fig. 4 zeigt mehrere Paare von Schieberegistern für die Codierung nach der oben besprochenen Theorie. Die in Gleichung 31 gegebene Struktur zeigt bekanntlich unterteilte Informationsteile des Codes. Jede Unterteilung enthält ihre eigene Untermatrix, die aus einer Begleitmatrix und dem entsprechenden primitiven Polynom besteht. Das Paar von Schieberegistern, welches in Fig. 4 mit SRBl und SRB2 bezeichnet ist, verarbeitet die Informationsbytes B , B , ..., B30 und ist die Realisierung der ersten Unterteilung der Η-Matrix. In gleicher Weise verarbeitet das Paar von Schieberegistern, welches mit SRAl und SRA2 bezeichnet ist, die Informationsbytes A_, A., ...,A, und realisiert die zweite Unterteilung der Η-Matrix. Nachfolgende Schieberegisterpaare werden für jeweils nachfolgende Unterteilungen benutzt. Die Informationsbytes im Beispiel bestehen bekanntlich
309827/0786
PO 971 057
aus zwei Bits. Somit werden die Eingangssignale den Registern SRBl und SRB2 parallel zugeführt und bestehen aus beiden Bits eines Byte.
Die Inforraationsbytes in jeder Unterteilung werden gemeinsam verarbeitet, um den Beitrag einer jeden Unterteilung zu den Prüfbytes zu ergeben. Die Summe dieser Beiträge liefert das Prüfbyte. Die Eingangssignale für das erste Schieberegisterpaar stellt beispielsweise die Unterteilung P, dar mit den Informationsbytes BQ, B1, ..., B2*r~3b*-2 als Eingangssignale. Die Schieberegisteranordnung hinter 2tr~-J '-1 liefert dieses Teil-Prüfbyte. Das erste Matrixschieberegxster SRBl multipliziert jedes der hereinkommenden Bytes mit I. , welches die Identitätsmatrix ist, und akkumuliert die Ergebnisse. Das zweite Schieberegister SRB2 multipliziert T- _.,. , mit dem Inhalt einer jeden Verschiebung und addiert die Ergebnisse zu dem hereinkommenden Byte $(r_^b\ hB·· Kehren wir zu unserem Beispiel zurück, worin B = 2 ist, so werden bei der Erzeugung der Prüfbits die Informationsbytes für die Unterteilung P1 (B ... B3 ) und die Informationsbytes für die Unterteilung P3 (AQ ... Ag) als Eingangssignale den Schieberegistern SRBl und SRB2 sowie SRAl und SRA2 gleichzeitig in umgekehrter Reihenfolge zugeführt. Wenn AQ verarbeitet ist, unterbrechen die Schieberegister SRAl und SRA2 der zweiten Unterteilung ihre Schiebeoperation, bis das letzte Byte der ersten Unterteilung B in die Schieberegister SRBl und SRB2 geschoben ist.
Aus Fig. 4 ist zu ersehen, daß jede der Stufen 40, 41 im Schieberegister SRBl eine Rückkopplungsverbindung 42, 44 vom Ausgang zu einem Modulo 2-Addierer-45, 46 am Eingang hat, wo die Rückkopplungssignale antivalent mit den hereinkommenden Bits des Bytes verknüpft werden. Die Bits des Bytes werden parallel in die Schieberegister eingegeben. Das Schieberegister SRB2 ist
4 mit seinem Ausgang von der fünften Stufe X rückgekoppelt zum
2 Modulo 2-Addierer 52, der zwischen der Stufe X und X liegt. In
309827/0786 -
PO 971 057
ähnlicher Weise wird derselbe Ausgang auf die Antivalenzschaltung 50 rückgekoppelt, der vor der ersten Stufe des Schieberegisters liegt. Diese Rückkopplungsverbindungen erfolgen entsprechend dem primitiven Polynom g(x), welches im benutzten Beispiel gleich ist 1 + X2 + X5 oder gleich 101001. In ähnlicher Heise ist das zweite Schieberegisterpaar 55 und 56, welches die zweite unterteilung AQ bis Aß verarbeitet, so angeordnet, daß die Bits eines Bytes bei SRAl parallel ankommen und jede Registerstufe eine Rückkopplung 57, 58 aufweist, die an die Modulo 2-Addierer 59 bzw. 60 angeschlossen ist, welche die Eingangsbits mit den Rückkopplungssignalen antivalent verknüpft. Das Schieberegister SRA2 ist in gleicher Weise entsprechend dem primitiven Polynom g(x) aufgebaut, welches das Generatorpolynom für die Untermatrix der zweiten Unterteilung darstellt. Dieses Generatorpolynom g2(x) = 1 + x + x ist gleich 1101. Somit führt die Rückkopplungsverbindung von der Ausgangsstufe X zur ersten und zweiten Stufe nach Darstellung in Fig. 4. Wenn ein zweistelliges Byte X z. B. in SRBl enthalten und Z der Inhalt von SRB2 ist und Y jetzt durch eine Schiebeoperation eingegeben wird, dann wird der nächste Inhalt im SRBl Y φ X und im SRB2 Y | T . Z. Die Ausgänge des ersten Schieberegisterpaares 10 sind mit 11 bis 17 numeriert und die Ausgänge des zweiten Schieberegisterpaares mit den Zahlen 21 bis 25. Die entsprechend numerierten Eingänge stellen die Verbindung von den zugehörigen Ausgängen dar und führen zum Register SRCS, wo die Eingangssignale an die Antivalenzschaltung 62 angelegt werden, deren Ausgangssignale mit einem Taktsignal in entsprechenden UND-Gliedern 64 verknüpft und im Akkumulator 66 gespeichert werden. Wenn AQ, das letzte Eingangsbit des Bytes der zweiten Unterteilung durch die Schieberegister SRAl und SRA2 verarbeitet wird, werden die Schiebeoperationen gestoppt, bis das letzte Byte des ersten Schieberegisterpaares SRBl und SRB2, die die erste Unterteilung verarbeiten, verarbeitet ist. Am Ende der insgesamt 31 Verschiebungen werden die UND-Glieder 64 durch das Signal "Ende des Zählerstandes" 31 durchgeschaltet. Zu diesem Zeitpunkt gelan-
309827/0786
PO 971 057
gen die modulo 2 summierten Signale 11 bis 17 und 21 bis 25 in die Verriegelungsschaltungen des SRCS-Registers, dessen Ausgangssignale Cla, Clb, C2a, C2b und C3a, C3b, C3c die Prüfbytes bilden. Diese Prüfbytes werden, wie bereits gesagt, zur Codierung an die Nachricht angehängt. Die Beiträge der verschiedenen Schieberegisterpaare 10, 1.2 zum Akkumulatorregister 18 (SRCS) sind besonders zu beachten. Die Ausgangssignale des Schieberegisters SRBl mit den Bezeichnungen 11 und 12 werden z. B. zur Bildung des C.-Teiles des Prufbytes benutzt, der aus den Prüfbits C1 und C,, besteht. In gleicher Weise wird das Prüfbyte C2 zusammengesetzt aus den Ausgangssignalen 13 und 14 des Schieberegisters SRB2 und den Ausgangssignalen 21 und 22 des Schieberegisters SRAl. Das Prüfbyte C, wird zusammengesetzt durch Ausgangssignale des Schieberegisters SRB2, wie die Verbindungen 15, 16 und 17 zeigen, und durch Ausgangssignale des Schieberegisters SRA2, wie die Verbindungen 23, 24 und 25.zeigen. Die verschiedenen Beiträge der Schieberegister zu den unterschiedlichen Teilen der gesamten Prüfbytes sind wichtig für die Bestimmung oder Lokalisierung der Unterteilung, in welcher der Fehler liegt.
Nachdem die erzeugten Prüfbytes C1, C2 und C3 an die Nachricht angehängt wurden, wird die codierte Information in der Benutzungseinheit, wie z. B. einer mehrspurigen Bandeinheit oder einem Mehrkanal -tibertragungsmedium benutzt. Bei der Benutzung kann in der codierten Nachricht ein Fehler aufgetreten sein und diese sollte daher der Fehlerkorrektur unterworfen werden. Zur Decodierung für die Fehlerkorrektur werden nach der Benutzung mit den codierten Nachrichtenbytes dieselben Operationen ausgeführt wie mit den ursprünglichen Nachrichtenbytes vor der Benutzung. Der einzige Unterschied besteht darin, daß die empfangenen Prüfbytes in die Operation miteinbezogen werden, was in der Erzeugung eines Syndroms resultiert. Aus dem erzeugten Syndrom kann die Lage der Unterteilung bestimmt werden, in welcher der Fehler liegt, und nachträglich aus dem Fehlermuster innerhalb des Syndroms das
309827/0786 PO 971 057
tatsächliche Byte innerhalb der Unterteilung, welches fehlerhaft ist. Die mit den empfangenen Införmationebytes ausgeführten Operationen können in denselben Schieberegistern vorgenommen werden, die in Verbindung mit den Operationen der entsprechenden Unterteilung der Originalinformation benutzt wurden. Der einzige Unterschied liegt darin, daß die PrÜfbitinformation in die entsprechenden Modulo 2-Addierschaltungen 62 an den Eingängen des SRCS-Registers 18 eingegeben wird. Da die Prüfbytes dem Ergebnis der O den mit den Informationsbytes ausgeführten mathematischen Operationen entsprechen, sollte die Hinzufügung des Prüfbits zu den Informationsbits durch die Antivalenzoperation eine Null für die erzeugten Syndrome ergeben, wenn in der Information oder den Prüfbits kein Fehler war. Das Syndrom, welches nicht null ist, enthält das Fehlermuster, d. h. die Sits in dem Syndrom sind von Null verschieden nach einem Muster, welches so identifiziert werden kann, daß die Lage der Fehler zu finden ist. Die Prüfbytes werden in das Register SRCS beim Erreichen des Zählerendstandes 31 eingegeben. Die Ausgangssignale des SRCS-Registers sind die Syndrome S., S_ und S3. Daraus ist zu ersehen, daß die Tel!syndrome zu den Prüfbytes gehören, die zu ihrer Erzeugung benutzt wurden.
Hat man einmal das Syndrom S = (S., S2, ..«, S, ) erhalten, läßt sich die den Fehler enthaltende Unterteilung nach Gleichung (32) finden. Zum Beispiel
a) Wenn S = O ist, ist die Nachricht fehlerfrei«
b) Wenn ein, und nur ein Syndrombyte, S. |ί 0 und S. = für alle i φ j ist, dann liegt der Fehler im Prüfbyte C. und das Fehlermuster ist EsS..
c) Wenn mehr als ein Syndrombyte von Null verschieden ist, wenn z. B. j das erste von Null verschiedene Syndrombyte ist, dann ist (Sj, Ot^t ···# S4*i7 * °' s-j J* ° x3nä
··· Sk> /O.
309827/0786
PO 971 057
Dementsprechend ist die Unterteilung P. fehlerhaft. Wenn die Unterteilung P. einmal als fehlerhaft bestimmt ist, läßt sich aus der Gleichung (32) ableiten, daß das Fehlermuster E=S. ist. Die Byteposition i innerhalb der Unterteilung kann bestimmt werden durch entsprechende Anwendung des Schieberegisters der Fig. 1. Dazu gibt es zwei Möglichkeiten. Bei der einen Möglichkeit besteht die Operation aus der Übertragung von S. ., S.+2# .... f S, in das dem Generatorpolynom g(x) entsprechende Schieberegister. Dann wird verschoben, bis der Inhalt gleich , , Φ, ., y , S . ist. Die Anzahl der Verschiebungen ist m (< 2x~^h-2]'. Die Byteposition I ist gleich (2r"^b-l) - m oder I=O, wenn m = O. Wenn ein verkürzter Code benutzt wird, können die Verschiebungen niemals übereinstimmen, wodurch das Auftreten eines"%nkorrigierbaren Fehlers angezeigt wird. Das kann natürlich als zusätzliche Fehlererkennurigsmöglxchkeit genutzt werden. Die zweite Art, die Byteposition i innerhalb der Unterteilung zu bestimmen, besteht in der Übertragung von S. in das dem Polynom g(x) entsprechende Schieberegister und dem Start der Verschiebung bis der Inhalt mit den Syndromen S..., S -+2V ..., S^ übereinstimmt. Die Anzahl der Zählerstellungeri geben in diesem Fall die fehlerhafte Byteposition innerhalb der Unterteilung an.
Die Schaltung zur Bestimmung der Lage der fehlerhaften Unterteilung aus dem Syndrom ist in Fig. 5 gezeigt und entspricht der in Fig. 1 gezeigten tTn€er1feiLli1mgs-Fehfe Die verschiedenen Syndrbmbits S. , Ö , , S2 , S3, und S, , S3, sowie S_ , wie man sie aus dem Syndromakkumulator 30 erhält, werden in Bytefoiam den entsprechenden ODER-Gliedern 71, 72 und 73 zugeführt. Die Bits des Byte S.", nämlich S. und S1, , werden z. B. an das ODER-Glied 71 geleitet. In ähnlicher Weise sind S3
und S0, mit dem ODER-Glied 72 und S'V und S,, und S ' mit den 2b 3a 3b . 3c r
Eingängen des ODER-Gliedes 73 verbunden. Wenn S1 und S ^ beide null sind, liefert das ODER-Glied 71 kein Ausgangssignal und demzufolge auch das UND-Glied 75 nicht. Damit steht fest, daß der
309827/0786
PO 971 057
.■<.■■ ■/ ■■ ■ ■·■ ■ . ·. ::ϊ
Fehler nicht in S1 liegt. Das UND-Glied 75 erzeugt ein Ausgangs-, signal, wenn allen seinen drei Eingängen Eins-Signale zugeführt werden. Das vom ODER-Glied 71 stammende Eingangssignal ist Eins, wenn die Eingangssignale S. und S.. nicht beide null sind. Das vom ODER-Glied 72 stammende Signal ist gleicherweise ein Eins-Signal, wenn S33 und S3, nicht beide null sind. In ähnlicher Weise ist das vom ODER-Glied 73 stammende Signal ein Eins-Signal, wenn S3 , S-, und S- nicht alle null sind. Das vom UND-Glied 75 gelieferte Eins-Signal zeigt somit an, daß der Fehler in der ersten Unterteilung liegt, was daraus zu entnehmen ist, daß das Fehlermuster im ersten Byte des Syndroms (S.) liegt. Das UND-Glied 79 erzeugt ein Ausgangssignal, wenn das vom ODER-Glied 72 und 73 erhaltene Signal ein Eins-Signal ist und das vom ODER-Glied 71 erhaltene Signal nach Inversion durch die Negationsschaltung 77, die dazwischengeschaltet ist, ebenfalls ein Eins-Signal ist. Damit wird angezeigt, daß das Fehlermuster in S- liegt und die zweite Unterteilung als die fehlerhafte bezeichnet. Das UND-Glied 80 erzeugt ein Eins-Ausgangssignal, wenn seine drei Eingangssignale Eins-Signale sind. Das vom ODER-Glied 73 stammende Signal ist ein Eins-Signal, wenn eines der drei Eingangsbits S- , S-. und S. von Null verschieden ist. Die anderen beiden Eingangssignale sind Eins-Signale, wenn die Ausgangssignale der ODER-Glieder 71 und 72 null sind, weil die Verbindung der ODER-Glieder 71 und 72 mit dem UND-Glied 80 die Negationsschaltungen 77 bzw. 89 enthält. Das Eins-Ausgangssignal zeigt somit an, daß das Fehlermuster im Syndrombyte S- liegt und daher der F^hJ^eoi^mjP.rüfbyte C3. Das UND-Glied 81 erzeugt ein Eins-Ausgangssignal, welches die Lage des Fehlermusters in S. bezeichnet und den Fehler im Prüfbyte C., wenn alle drei Eingangssignale Eins-Signale sind, d. h. wenn S. und S^ nicht beide null sind und S, , S3. , S-, S-. und S- alle null sind. Die von den ODER-Gliedern 72 und 73 ausgehenden Verbindungsleitungen führen über die Negationsschaltungen 89 bzw. 85. Wenn also das Syndrom S. das Fehlermuster enthält und die, anderen Syndrome S3 und S3 null sind, liegt der Fehler im Prüfbyte C1.
309827/0786
PO 971 057
In ähnlicher Weise bezeichnet ein Eins-Signal an beiden Eingängen des UND-Gliedes 83 S2 als das Byte, welches das Fehlermus ter^ enthält und S^ ist null, da das Ausgangssignal des ODER-Gliedes 73 null ist und eine Negationsschaltung zwischen dem ODER-Glied 73 und dem UND-Glied 83 liegt* Unter diesen Bedingungen liegt der Fehler laut Anzeige im Prüfbyte C3. Das UND-Glied 87 erzeugt ein Ausgangssignal, welches anzeigt, daß kein Fehler vorliegt, wenn das ganze Syndrom S lauter Nullen enthält. Jedes der ODER-Glieder 71, 72 und 73 gibt eine Null aus, die an das UND-Glied 87 über die Negationsschaltugen 77, 89 bzw. 85 angelegt werden.
Bei der Einzelbytekorrektur laufen folgende Schritte ab, um das fehlerhafte Byte herauszufinden und die Korrektur daran vorzunehmen.
1. Wenn alle Syndrombits null sind, liegt kein Fehler vor und der Informationsteil der Daten wird als fehlerfrei betrachtet.
2. Wenn nur ein Syndrombyte von null verschieden ist, (d. h. nicht QQ oder 000) liegt der Fehler in den Prüfbytes. Das Fehlermuster ist dasselbe wie das von null verschiedene Syndrommuster pid das fehlerhafte Prüfbyte entspricht dem von null verschiedenen Syndrombyte.
3. Wenn mehr als ein Syndrombyte von null verschieden ist, liegt der Fehler im Informationsteil. Wenn unter den Syndromen Sf S« und S3 das erste von null verschiedene Byte S. ist, dann liegt der Fehler in der ersten Unterteilung. Somit ist das Fehlermuster dasselbe wie S und die Position des fehlerhaften Bytes innerhalb der Unterteilung wird folgendermaßen festgestellt:
a) S, in das Schieberegister SRB2 übertragen.
b) Zähler 68 auf null setzen.
c) Wenn der Inhalt des Schieberegisters SRB2 derselbe ist
309827/0786
PO 971 057
wie S_ und S_ im Schieberegister SRCS, dann gibt der Inhalt des Zählers 68 die fehlerhafte Byteposition an.
d) Wenn eine Übereinstimmung nicht erzielt wird, ist zum Zählerinhalt eine Eins zu addieren und der Inhalt des Schieberegisters SRB2 noch einmal zu verschieben.
e) c) und d) wiederholen bis eine Übereinstimmung auftritt und die fehlerhafte Byteposition durch die Zahl im Zähler 68 angegeben wird.
4. Wenn S2 das erste von null verschiedene Byte ist, liegt der Fehler in der zweiten Unterteilung und das Fehlerniuster wird durch den Inhalt von S2 bestimmt. Die fehlerhafte Byteposition innerhalb der unterteilung wird folgendermaßen bestimmt:
a) S2 in das Register SRA2 übertragen.
b) Zähler 68 auf null setzen.
c) Wenn der Inhalt des Schieberegisters SRA2 gleich dem Inhalt von S- ist, enthält der Zähler 68 die fehlerhafte Bytepos i ti on.
d) Wenn eine Übereinstimmung nicht erzielt wird, eine Eins zum Inhalt des Zählers addieren und den Inhalt des Schieberegisters SRA2 einmal verschieben.
e) c) und d) wiederholen bis eine Übereinstimmung auftritt und die fehlerhafte Byteposition bestimmt ist.
Die eigentliche Fehlerkorrektur wird durch eine Einrichtung vorgenommen, in welcher die empfangenen fehlerhaften Daten durch Modulo 2-Addition des entsprechenden Fehlermusters zu diesen Daten zu korrigierten Daten berichtigt werden. Die Fehlerkorrektur schaltung 88 besteht aus den Pufferspeichern 90, die alle Datenbytes festhalten, die bei Bestimmung des Fehlermusters und Fehlerbytelage aus dem Pufferspeicher herausgeschoben werden und als Eingangssignale den Antivalenzgliedern 91 und zugeleitet werden. Das Fehlermuster wird durch die UND-Glieder 93 und 94 zur richtigen Zeit weitergeleitet. Der richtige Zeit-
309827/07 86 PO 971 057
punkt wird bestimmt durch den Fehlerpositionszähler, der das fehlerhafte Byte ermittelt..Die Ausgänge der UND-Glieder 9 3 und 9 4 sind als weiterer Eingang mit den Antivalenzgliedern 91 und 9 2 verbunden und liefern dadurch die Inversion der fehlerhaften Bits des fehlerhaften Byte.
309827/0786
PO 971 057 N

Claims (9)

  1. PATENTANSPRÜCHE
    Fehlerkorrektursystem zur Korrektur von bis zu b benachbarten Fehlern in einem b Bits umfassenden Byte einer byteorientierten binären Nachricht, gekennzeichnet durch eine Mehrzahl von Schieberegisterpaaren (10, 12, 14; Fig. 1), deren jedes die Bits einer Untermatrix verarbeitet, die eine Unterteilung einer Η-Matrix bildet, eine Mehrzahl von Registern (18), die die Ausgangssignale der Schieberegisterpaare verarbeitet, um Prüfbits zur Codierung der binären Nachricht entsprechend der H-Matrix zu liefern,
    eine Vorrichtung (66; Fig. 4) ζure Anfügen der Prüfbits an die binäre Nachricht,
    eine Vorrichtung (28, 22, 24, 26, 30, 32, 34} zur Decodierung der codierten Folge von Nachrichtenbytes nach deren Benutzung und
    eine Vorrichtung (88) zur Korrektur der durch die Decodierung festgestellten Fehler.
  2. 2. Fehlerkorrektursystem nach Anspruch 1, dadurch gekennzeichnet, daß jedes Schieberegister-Paar die Bits der Bytes seiner Untermatrix parallel verarbeitet.
  3. 3. Fehlerkorrektursystem nach den Ansprüchen 1 und 2, dadurch gekennzeichnet, daß das erste Schieberegister (SRBl, Fig. 4} jedes Schieberegisterpaares (SRBl, SRB2) eine Modulo-2-Addition mit den eintreffenden Bits der Bytes vornimmt.
  4. 4. Fehlerkorrektursystem nach den Ansprüchen 1 bis 3, dadurch gekennzeichnet, daß das zweite Schieberegister (SRB2) jedes Schieberegisterpaares eine Modulo-2-Addition eines eintreffenden Bytes mit dem Produkt aus dem Schieberegisterinhalt und der Begleitmatrix T vornimmt.
    309827/0786
    PO 971 057
  5. 5. Fehlerkorrektursystem nach den Ansprüchen 1 bis 4, dadurch gekennzeichnet/ daß die Decodiervorrichtung eine Mehrzahl weiterer Schieberegisterpaare (SRAl, SRA2) enthält, Von denen jedes die Bits einer Untermatrix verarbeitet, die eine. Unterteilung der Η-Matrix definiert, und eine Mehrzahl weiterer Schieberegister (SRCS), die die Ausgangssignale der weiteren Schieberegisterpaare verarbeitet, wobei die Prüfbits mit den AusgangsSignalen der weiteren Schieberegisterpaare modulo-2-addiert werden, zur Erzeugung von Syndrombits, die zu Syndrombytes gruppiert werden.
  6. 6. Fehlerkorrektursystem nach den Ansprüchen 1 bis 5, dadurch gekennzeichnet, daß die Vorrichtung (32; Fig. 1) zur Identifizierung der fehlerhaften Unterteilung eine boolesche Schaltung (71 bis 83; Fig. 5) zur Erzeugung einer ersten Gruppe von Ausgangssignalen enthält, die das erste von Null verschiedene·.Byte in dem Syndronv erzeugen, wenn die nachfolgenden Bytes von Null verschieden «sind, welche boolesche Schaltung eine zweite Gruppe von AusgangsSignalen , erzeugt, die das erste von Null verschiedene Byte in dem Syndrom anzeigen, wenn alle anderen Bytes null sind, was anzeigt, daß der Fehler sich in dem Prüfbyte befindet, das dem ersten von Null verschiedenen Byte des Syndroms entspricht, und eine dritte Gruppe von AusgangsSignalen, die anzeigen, daß alle Bytes des Syndroms null sind.
  7. 7. Fehlerkorrektursystem nach den Ansprüchen 1 bis 6, dadurch gekennzeichnet, daß die Schaltung zur Lokalisierung des fehlerhaften Bytes in der als fehlerhaft identifizierten Unterteilung eine Schaltung zum übertragen des ersten, von Null verschiedenen Syndrombytes in das zweite Schieberegister des Paares von Schieberegistern enthält, das der als fehlerhaft angezeigten Unterteilung zugeordnet ist,
    30 9827/0786 !
    PO 971 057 ■" ·
    daß eine Vorrichtung zum Verschieben des Inhaltes des zweiten Schieberegisters vorgesehen ist, bis dessen Inhalt Kdt den nachfolgenden von Null verschiedenen restlichen Syndrombytes übereinstimmt und daß eine Vorrichtung (6 8; Fig. 4) zur Zählung der bis zur Übereinstimmung erforderlichen Verschiebungen vorgesehen ist, welche Zählung das fehlerhafte Byte in der als fehlerhaft angezeigten Unterteilung ergibt.
  8. 8. Fehlerkorrektursystem nach den Ansprüchen 1 bis 7, dadurch gekennzeichnet, daß das Codieren entsprechend einer Matrix H durchgeführt wird, die eine Reihe von Untermatrizen
    Hr,b; V-b),b; H(r-2b),b'· ···' H(2b4-c),b enthält, die mittels eines primitiven Polynoms vom Grade r-jb mit j = 1, 2, 3 ... erzeugt werden, wobei jede folgende Untermatrix wiederholt verkettet ist in aufeinanderfolgenden Schritten b und die Untermatrizen die Unterteilungen der Η-Matrix bildet, daß eine Prüfbit-Unterteilung an die letzte Unterteilung angefügt wird, die eine Einheitsmatrix I enthält, wodurch die Η-Matrix für das Codieren und Decodieren der binären Nachricht gebildet wird.
  9. 9. Fehlerkorrektursystem nach den Ansprüchen 1 bis 8, dadurch gekennzeichnet, daß jede der Untermatrizen H -; H. , . , ;
    H(r-2b),b; ·*· H(2b+c),b b benachbarte Fehler'korrigie-' ren kann und die durch sie gebildete Η-Matrix b benachbarte Fehler in längeren binären Nachrichten mit einer minimalen Anzahl von Prüfbits korrigieren kann.
    309827/0786
    PO 971 057
    Leerseite
DE19722262070 1971-12-20 1972-12-19 Mit schieberegistern arbeitendes fehlerkorrektursystem Withdrawn DE2262070A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US20996471A 1971-12-20 1971-12-20

Publications (1)

Publication Number Publication Date
DE2262070A1 true DE2262070A1 (de) 1973-07-05

Family

ID=22781055

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19722262070 Withdrawn DE2262070A1 (de) 1971-12-20 1972-12-19 Mit schieberegistern arbeitendes fehlerkorrektursystem

Country Status (5)

Country Link
US (1) US3745526A (de)
JP (1) JPS535101B2 (de)
DE (1) DE2262070A1 (de)
FR (1) FR2165446A5 (de)
GB (1) GB1371970A (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE30187E (en) * 1972-11-15 1980-01-08 International Business Machines Corporation Plural channel error correcting apparatus and methods
US3913068A (en) * 1974-07-30 1975-10-14 Ibm Error correction of serial data using a subfield code
US3982226A (en) * 1975-04-03 1976-09-21 Storage Technology Corporation Means and method for error detection and correction of digital data
US4077028A (en) * 1976-06-14 1978-02-28 Ncr Corporation Error checking and correcting device
US4205324A (en) * 1977-12-23 1980-05-27 International Business Machines Corporation Methods and means for simultaneously correcting several channels in error in a parallel multi channel data system using continuously modifiable syndromes and selective generation of internal channel pointers
US4201976A (en) * 1977-12-23 1980-05-06 International Business Machines Corporation Plural channel error correcting methods and means using adaptive reallocation of redundant channels among groups of channels
US4185269A (en) * 1978-06-30 1980-01-22 International Business Machines Corporation Error correcting system for serial by byte data
DE2855807A1 (de) * 1978-12-22 1980-06-26 Siemens Ag Schaltungsanordnung zur korrektur von bytestrukturierten fehlern
US4276647A (en) * 1979-08-02 1981-06-30 Xerox Corporation High speed Hamming code circuit and method for the correction of error bursts
DE3122381A1 (de) * 1981-06-05 1982-12-23 Ibm Deutschland Gmbh, 7000 Stuttgart Verfahren und einrichtung zur erzeugung von pruefbits zur sicherung eines datenwortes
JPS5972838A (ja) * 1982-10-20 1984-04-24 Victor Co Of Japan Ltd リ−ド・ソロモン符号生成回路
GB2136248A (en) * 1983-02-25 1984-09-12 Philips Electronic Associated Text error correction in digital data transmission systems
US4736376A (en) * 1985-10-25 1988-04-05 Sequoia Systems, Inc. Self-checking error correcting encoder/decoder
AU687286B2 (en) * 1994-12-12 1998-02-19 Stratos Global Limited Digital transmission system for encoding and decoding attribute data into error checking symbols of main data
AU1769999A (en) * 1997-12-19 1999-07-12 British Aerospace Public Limited Company Weightless binary n-tuple thresholding hierarchies
US6158040A (en) * 1998-07-29 2000-12-05 Neomagic Corp. Rotated data-aligmnent in wade embedded DRAM for page-mode column ECC in a DVD controller
US7458007B2 (en) * 2000-02-18 2008-11-25 Texas Instruments Incorporated Error correction structures and methods
US7418645B2 (en) 2003-09-24 2008-08-26 Hitachi Global Storage Technologies Netherlands B.V. Error correction/detection code adjustment for known data pattern substitution
US20050071595A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation Methods and apparatus for allocating memory
WO2007019187A2 (en) * 2005-08-03 2007-02-15 Novowave, Inc. Systems and methods for a turbo low-density parity-check decoder
US7934147B2 (en) * 2005-08-03 2011-04-26 Qualcomm Incorporated Turbo LDPC decoding
US8196025B2 (en) 2005-08-03 2012-06-05 Qualcomm Incorporated Turbo LDPC decoding
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
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
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
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
US8762821B2 (en) * 2012-03-30 2014-06-24 Intel Corporation Method of correcting adjacent errors by using BCH-based error correction coding
US11547450B2 (en) 2015-04-17 2023-01-10 Apifix Ltd. Expandable polyaxial spinal system
US9979417B2 (en) * 2015-06-16 2018-05-22 SK Hynix Inc. Enhanced chip-kill schemes by using ECC syndrome pattern

Also Published As

Publication number Publication date
GB1371970A (en) 1974-10-30
JPS4873041A (de) 1973-10-02
JPS535101B2 (de) 1978-02-23
US3745526A (en) 1973-07-10
FR2165446A5 (de) 1973-08-03

Similar Documents

Publication Publication Date Title
DE2262070A1 (de) Mit schieberegistern arbeitendes fehlerkorrektursystem
DE2357004C3 (de) Verfahren und Einrichtung zur Fehlerkorrektur für Daten
DE2060643C3 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE2916710C2 (de)
DE2834963A1 (de) Verfahren und einrichtung zur fehlerkorrektur von uebertragenen daten
DE3231956A1 (de) Anordnung zum uebertragen von binaerdaten ueber eine vielzahl von kanaelen mit hilfe eines faltungscodes
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE2159108A1 (de) Anordnung zur Erzeugung zyklischer Redundanzprüfzeichen
DE2106314A1 (de) Anordnung zur Fehlererkennung und korrektur in einem aus b Bits bestehen den Byte eines K Datenbytes enthaltenden Datenblocks
DE2263488C2 (de) Einrichtung zur Erkennung und Korrektur von Fehlern in zwei fehlerbehafteten Spuren eines Vielspur-Datensystems
DE2217935C3 (de) Anordnung und Verfahren zur Korrektur von Doppelfehlern in einer Nachricht
DE102017125617B4 (de) Bestimmung und Verwendung von Bytefehlerpostionssignalen
DE2260846A1 (de) Fehlerkorrektursystem
DE2704627B2 (de) Anordnung zur Fehlerkorrektur von binärer Information
DE102005022107B4 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE2053836C3 (de) Anordnung zur Korrektur von Fehlerbündeln in binär codierten Datengruppen
DE2000565A1 (de) Fehlerkorrigierendes System zur Korrektur mehrfacher,zufaelliger Fehler
DE102013219088B9 (de) Schaltungsanordnung und Verfahren zur Realisierung von Prüfbitkompaktierung für Cross-Parity-Codes
DE1774225A1 (de) Fehlerkorrekturschaltung
DE102015118668B4 (de) Fehlerkorrektur
DE2300505A1 (de) Vorrichtung zur schwellwertdecodierung
DE1944963A1 (de) Stoerungsgesichertes UEbertragungssystem
EP0046963B1 (de) Schaltungsanordnung zur Erkennung und Korrektur von Fehlerbündeln
DE102021123727B4 (de) Bytefehlerkorrektur
DE102022111624A1 (de) Fehlerkorrektur mit schneller Syndromberechnung

Legal Events

Date Code Title Description
OD Request for examination
8176 Proceedings suspended because of application no:

Ref document number: 2260846

Country of ref document: DE

Format of ref document f/p: P

8139 Disposal/non-payment of the annual fee
8178 Suspension cancelled