DE2262070A1 - Mit schieberegistern arbeitendes fehlerkorrektursystem - Google Patents
Mit schieberegistern arbeitendes fehlerkorrektursystemInfo
- 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
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/19—Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear 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
,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:
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
iii).T = TJ wenn i = j modulo e
309827/0786
PO 971 057
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
ΪΧ Φ , ν +
d,p
und das impliziert
Φ , ν = Ο
d,p
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.
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 | α2Γ" | |||||||||
(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.
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)
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
(27) ergibt sich
(T1 Φ + T^ Φ)- · E1 = O . -
Aufgrund des Folgesatzes 1 bedeutet das i = j modulo
-2 ist, ergibt s
309827/Ö786
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
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.
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.
-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
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
PO 9 71 057
M1 = (2b-l) V 2ib+C + 2b+C 1 il
2-1
r
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 α:
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
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
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)
- PATENTANSPRÜCHEFehlerkorrektursystem 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 undeine Vorrichtung (88) zur Korrektur der durch die Decodierung festgestellten Fehler.
- 2. Fehlerkorrektursystem nach Anspruch 1, dadurch gekennzeichnet, daß jedes Schieberegister-Paar die Bits der Bytes seiner Untermatrix parallel verarbeitet.
- 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. 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/0786PO 971 057
- 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. 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. 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. Fehlerkorrektursystem nach den Ansprüchen 1 bis 7, dadurch gekennzeichnet, daß das Codieren entsprechend einer Matrix H durchgeführt wird, die eine Reihe von UntermatrizenHr,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. 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/0786PO 971 057Leerseite
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)
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 |
-
1971
- 1971-12-20 US US00209964A patent/US3745526A/en not_active Expired - Lifetime
-
1972
- 1972-11-16 JP JP11438472A patent/JPS535101B2/ja not_active Expired
- 1972-11-21 GB GB5367072A patent/GB1371970A/en not_active Expired
- 1972-11-29 FR FR7243290A patent/FR2165446A5/fr not_active Expired
- 1972-12-19 DE DE19722262070 patent/DE2262070A1/de not_active Withdrawn
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 |