-
Es ist bekannt, dass in elektronischen Schaltungen und in Speichern permanente bzw. transiente Fehler auftreten können. Derartige Fehler können zu Bitfehlern in binären Wörtern führen. Ein binäres Wort umfasst hierbei mehrere Bits, z.B. 8 Bits, 16 Bits, oder allgemein eine Vielzahl von Bits.
-
Aus [C. Badack, T. Kern, M. Gössel: Modified DEC BCH codes for parallel correction of 3-bit errors comprising a pair of adjacent errors, IEEE 20th International On-Line Testing Symposium (IOLTS), 2014, Seiten 116 bis 121] ist ein Verfahren zur Korrektur eines Fehlermusters bekannt.
-
Die Aufgabe der Erfindung besteht darin, eine Möglichkeit für eine effiziente Fehlererkennung und/oder Fehlerkorrektur bereitzustellen.
-
Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind insbesondere den abhängigen Ansprüchen entnehmbar.
-
Zur Lösung der Aufgabe wird ein Verfahren vorgeschlagen zur Korrektur eines Fehlers in einem Fehlermuster,
- - bei dem die Korrektur des Fehlers unter Verwendung eines modifizierten Fehlersyndroms durchgeführt wird,
- - wobei das modifizierte Fehlersyndrom unter Verwendung des Fehlermusters bestimmt ist,
- - wobei die Korrektur mittels eines Fehlercodes mit einem Codeabstand 2(t + 1) für K Fehlermuster aus jeweils M Bits durchgeführt wird, wobei K · M = t + 1, t ≥ 2, K ≥ 1 und M ≥ 2 gelten.
-
Die Korrektur des Fehlers kann dabei eine Korrektur mindestens eines fehlerhaften Bits, mindestens einer fehlerhaften Position oder mindestens eines fehlerhaften Werts in dem Fehlermuster umfassen.
-
Das modifizierte Fehlersyndrom kann unter Verwendung eines unmodifizierten Fehlersyndroms (eines Fehlercodes) bestimmt sein.
-
Insbesondere kann das modifizierte Fehlersyndrom als ein Fehlersyndrom eines K-Bitfehler korrigierenden Codes zur Fehlerkorrektur jeweils eines Bits der K Fehlermuster bestimmt sein.
-
Weiterhin kann das modifizierte Fehlersyndrom so gebildet sein, dass es ein Fehlersyndrom eines K-Bitfehler korrigierenden Codes zur Fehlerkorrektur jeweils eines ersten Bits der K Fehlermuster ist.
-
Es ist eine Weiterbildung, dass das modifizierte Fehlersyndrom und ein unmodifiziertes Fehlersyndrom Teilsyndrome aufweisen und ein Teilsyndrom des modifizierten Fehlersyndroms aus einem entsprechenden Teilsyndrom des unmodifizierten Fehlersyndroms unter Verwendung des Fehlermusters bestimmt ist.
-
Es ist eine Weiterbildung, dass ein Teilsyndrom des modifizierten Fehlersyndroms aus einem entsprechenden Teilsyndrom des unmodifizierten Fehlersyndroms durch Multiplikation mit einer Konstanten bestimmt ist.
-
Insbesondere kann die Multiplikation mit der Konstanten in einem entsprechenden Galoisfeld durchgeführt werden.
-
Es ist eine Weiterbildung, dass das Fehlermuster benachbarte Bits aufweist.
-
Es ist eine Weiterbildung, dass das Fehlermuster mindestens zwei Bits oder mindestens zwei Bitpositionen aufweist.
-
Es ist eine Weiterbildung, dass das Fehlermuster eine Anzahl von M Bits aufweist, wobei jedes weitere Bit des Fehlermusters durch einen Abstand von einem ersten Bit des Fehlermusters bestimmt ist.
-
Es ist eine Weiterbildung, dass dann, wenn mindestens ein Bit des Fehlermusters fehlerhaft ist, ein erstes Bit des Fehlermusters aus dem modifizierten Fehlersyndrom bestimmt ist.
-
Es ist eine Weiterbildung, dass die Korrektur basierend auf einer Anzahl der Fehlermuster durchgeführt wird.
-
Es ist eine Weiterbildung, dass eine Anzahl von K zu korrigierende erste Bits der K gleichen Fehlermuster unter Verwendung des modifizierten Fehlersyndroms bestimmt sind.
-
Es ist eine Weiterbildung, dass die K Fehlermuster jeweils M Bits umfassen, die den Wert 1 aufweisen.
-
Es ist eine Weiterbildung, dass
- - der Fehlercode mit dem Codeabstand 2(t + 1) ein t-Bitfehler korrigierender BCH-Code über einem Galoisfeld GF(2m) mit einbezogener Gesamtparität und einer H-Matrix
ist,
- - Teilsyndrome
des modifizierten Fehlersyndroms aus den unmodifizierten Teilsyndromen s1, s3,..., s2K-1 des Fehlersyndroms des BCH-Codes gemäß
bestimmt sind, wobei
- - si ein Teilsyndrom des Fehlersyndroms,
- -
ein Teilsyndrom des modifizierten Fehlersyndroms,
- - βi eine Konstante und
- - i = 1,..., (2K - 1) eine Laufvariable
bezeichnen.
-
Hierbei sei angemerkt, dass vorzugsweise 1 ≤ K < t gilt, wobei die Konstanten β1, β3,..., β2K-1 durch jeweils m Komponenten einer komponentenweisen XOR-Summe von M-Spalten der H-Matrix bestimmt sind, die einem Fehlermuster entsprechen. Weiterhin gelten insbesondere: t ≥ 2, m ≥ 3 und K · M = t + 1. Vorzugsweise ist für i = 1, 3, 5, ... , 2K - 1 die Konstante βi gleich der komponentenweise XOR-Summe der M-Spalten der Matrix Hi, die den Komponenten der normierten Fehlervektoren des Fehlermusters entsprechen, die gleich 1 sind.
-
Es ist eine Weiterbildung, dass zusätzlich eine Korrektur von beliebigen τ-Bitfehlern mit 1 ≤ τ ≤ t erfolgt, wobei im Falle eines τ-Bitfehlers mit 1 ≤ τ ≤ t die zu korrigierenden τ Bitpositionen durch die Teilsyndrome s1, s3, ... , s2t-1 bestimmt sind.
-
Es ist eine Weiterbildung, dass gilt:
- - wobei die Operationen in den Exponenten der Elemente der H-Matrix modulo 2m - 1 auszuführen sind,
- - wobei a ein erzeugendes Element des Galoisfelds GF(2m) ist und
- - wobei die Elemente αj der H-Matrix Elemente des Galoisfelds GF(2m) in ihrer Vektordarstellung als m-dimensionale binäre Spaltenvektoren sind.
-
Es ist eine Weiterbildung, dass gilt:
-
Es ist eine Weiterbildung, dass die Konstanten β
1, β
3, ..., β
2t-1 so bestimmt sind, dass für einen Fehler, der K gleiche Fehlermuster F
m mit dem normierten Fehlervektor
aufweist, gilt:
-
Hierbei sei angemerkt, dass
ein transponierter n-dimensionaler Spaltenvektor des n-dimensionalen Zeilenvektors
ist. Insbesondere gilt für die obige Beziehung auch K ≥ 1.
-
Es ist eine Weiterbildung, dass die Konstanten β
1, β
3, ..., β
2t-1 so bestimmt sind, dass für einen Fehler, der K gleiche Fehlermuster F
m mit dem normierten Fehlervektor
aufweist, gilt:
-
Es ist eine Weiterbildung, dass für das Fehlermuster F
m = [M, D
1,... ,D
M-1] gilt:
-
Es ist eine Weiterbildung, dass für das Fehlermuster F
m = [M, D
1,... ,D
M-1] gilt:
-
Es ist eine Weiterbildung, dass die Korrektur eines Fehlers eine Korrektur eines Fehlervektors umfasst, wobei der Fehlervektor mindestens ein Fehlermuster umfasst.
-
Es ist eine Weiterbildung, dass das erste Bit des Fehlermusters nur vorgegebene Bitpositionen des Fehlervektors annehmen kann.
-
Es ist eine Weiterbildung, dass das Fehlermuster aus zwei Bits besteht und der Fehlervektor eines 4-Bitfehlers aus zwei 2-Bitfehlern besteht.
-
Das Fehlermuster kann insbesondere zwei benachbarte Bits umfassen; beispielsweise kann das Fehlermuster aus zwei Bits mit einem festen Abstand bestehen. Auch eine Permutation der Bits oder Positionen (der Bits) ist möglich.
-
Es ist eine Weiterbildung, dass das Fehlermuster aus zwei Bits besteht und der Fehlervektor eines 6-Bitfehlers aus drei 2-Bitfehlern besteht.
-
Es ist eine Weiterbildung, dass das Fehlermuster aus drei Bits besteht und der Fehlervektor eines 6-Bitfehlers aus zwei 3-Bitfehlern besteht.
-
Es ist eine Weiterbildung, dass das Verfahren wenigstens teilweise durch eine Schaltungsanordnung in Hardware und/oder wenigstens teilweise mittels Software implementiert ist.
-
Es ist eine Weiterbildung, dass ein einer Anzahl der Fehler entsprechendes Lokatorpolynom iterativ nach dem Berlekamp-Massey-Algorithmus bestimmt wird.
-
Insbesondere ist es eine Option, dass unter Verwendung von zusätzlichen Prüfbits (t + 1)-Bitfehler mit einem Fehlervektor, der K gleiche Fehlermuster aus M Bits aufweist, von (t + 1)-Bitfehlern mit einem Fehlervektor, der nicht K gleiche Fehlermuster aus M-Bits, die gleich 1 sind, aufweist, unterschieden werden.
-
Auch wird zur Lösung der oben genannten Aufgabe eine Vorrichtung zur Korrektur eines Fehlers vorgeschlagen, wobei die Vorrichtung eine Verarbeitungseinheit aufweist, die derart eingerichtet ist, dass
- - die Korrektur des Fehlers mittels modifizierter Fehlersyndrome durchführbar ist,
- - wobei der Fehler auf mindestens einem Fehlermuster basiert,
- - wobei die Korrektur mittels eines Fehlercodes mit einem Codeabstand 2(t + 1) für K Fehlermuster aus jeweils M Bits durchgeführt wird, wobei K · M = t + 1, t ≥ 2, K ≥ 1 und M ≥ 2 gelten.
-
Die hier genannte Verarbeitungseinheit kann insbesondere als eine Prozessoreinheit und/oder eine zumindest teilweise festverdrahtete oder logische Schaltungsanordnung ausgeführt sein, die beispielsweise derart eingerichtet ist, dass das Verfahren wie hierin beschrieben durchführbar ist. Besagte Verarbeitungseinheit kann jede Art von Prozessor oder Rechner oder Computer mit entsprechend notwendiger Peripherie (Speicher, Ein-/Ausgabe-Schnittstellen, Ein-Ausgabe-Geräte, etc.) sein oder umfassen.
-
Die vorstehenden Erläuterungen betreffend das Verfahren gelten für die Vorrichtung entsprechend. Die Vorrichtung kann in einer Komponente oder verteilt in mehreren Komponenten ausgeführt sein.
-
Auch wird die oben genannte Aufgabe gelöst mittels eines Systems umfassend mindestens eine der hier beschriebenen Vorrichtungen.
-
Weiterhin wird zur Lösung der Aufgabe ein Computerprogrammprodukt angegeben, das direkt in einen Speicher eines digitalen Computers ladbar ist, umfassend Programmcodeteile, die dazu geeignet sind, Schritte des hier beschriebenen Verfahrens durchzuführen.
-
Auch wird zur Lösung der Aufgabe ein computerlesbares Speichermedium angegeben, umfassend von einem Computer ausführbare Anweisungen, die dazu geeignet sind, dass der Computer Schritte des hier beschriebenen Verfahrens durchführt.
-
Die oben beschriebenen Eigenschaften, Merkmale und Vorteile dieser Erfindung sowie die Art und Weise, wie diese erreicht werden, werden nachfolgend beschrieben im Zusammenhang mit einer schematischen Beschreibung von Ausführungsbeispielen, die im Zusammenhang mit den Zeichnungen näher erläutert werden. Dabei können zur Übersichtlichkeit gleiche oder gleichwirkende Elemente mit gleichen Bezugszeichen versehen sein.
-
Es zeigen:
- 1 eine Tabelle, die unterschiedliche Darstellungsformen von Elementen eines Galoisfelds GF(2m) mit m = 5 veranschaulicht;
- 2 eine beispielhafte Schaltungsanordnung, die unter Verwendung eines BCH-Codes zur Korrektur beliebiger 3-Bitfehler zusätzlich eine Korrektur spezieller 4-Bitfehler erlaubt, die sich aus zwei benachbarten 2-Bitfehlern zusammensetzen;
- 3 eine beispielhafte Schaltungsanordnung, die unter Verwendung eines BCH-Codes zur Korrektur beliebiger 3-Bitfehler zusätzlich eine Korrektur spezieller 4-Bitfehler erlaubt, die sich aus zwei benachbarten 2-Bitfehlern in ungeraden Bitpositionen zusammensetzen;
- 4 eine beispielhafte Schaltungsanordnung, die unter Verwendung eines BCH-Codes zur Korrektur beliebiger 5-Bitfehler zusätzlich eine Korrektur spezieller 6-Bitfehler erlaubt, die sich aus drei benachbarten 2-Bitfehlern zusammensetzen;
- 5 eine beispielhafte Schaltungsanordnung, die unter Verwendung eines BCH-Codes zur Korrektur beliebiger 5-Bitfehler zusätzlich eine Korrektur spezieller 6-Bitfehler erlaubt, die sich aus zwei benachbarten 3-Bitfehlern zusammensetzen;
- 6 eine beispielhafte Schaltungsanordnung, die unter Verwendung eines BCH-Codes zur Korrektur beliebiger 2-Bitfehler und beliebiger 1-Bitfehler zusätzlich eine Korrektur benachbarter 3-Bitfehler erlaubt;
- 7 eine beispielhafte Schaltungsanordnung, die unter Verwendung eines BCH-Codes zur Korrektur beliebiger 3-Bitfehler und 2-Bitfehler zusätzlich eine Korrektur spezieller 4-Bitfehler erlaubt, die sich aus zwei benachbarten 2-Bitfehlern zusammensetzen;
- 8 eine mögliche Implementierung einer Teilschaltung zur Erkennung von 1-Bit-, 2-Bit-, 3-Bit- und 4-Bitfehlern.
-
Es ist möglich, Bitfehler in Binärwörtern durch fehlererkennende und/oder fehlerkorrigierenden Codes zu erkennen und/oder zu korrigieren. Derartige Codes werden nachfolgend auch als Fehlercodes bezeichnet. Ein Fehlercode kann eine bestimmte Anzahl von Fehlern erkennen und/oder eine bestimmte (ggf. andere) Anzahl von Fehlern korrigieren. Häufig erfolgt die Fehlererkennung und/oder Fehlerkorrektur mittels bekannter Blockcodes, bei denen jeweils Blöcke von n Bits betrachtet werden. Die Zahl n wird auch als die Anzahl der Bits eines Blocks oder als Länge des Codes bezeichnet.
-
Beispielsweise können lineare Blockcodes verwendet werden, die durch eine Generatormatrix G und durch eine H-Matrix H beschrieben werden.
-
Ist die Länge des Codes gleich n und werden k Datenbits (auch bezeichnet als Informationsbits)
als ein Codewort
codiert, dann gilt für den linearen Code
-
Es ist möglich, dass Datenbits eines Codeworts Bits der Leseadresse oder Bits der Schreibadresse oder aus Bits der Leseadresse oder aus Bits der Schreibadresse abgeleitete Bits sind oder enthalten. Dies gilt insbesondere in dem Fall, dass ein Teil der Datenbits in einem adressierbaren Speicher gespeichert ist. Eine andere Option besteht darin, dass Datenbits auch mindestens ein Invertierungsbit umfassen können, das angibt, ob ein Bit oder eine Gruppe von Bits invertiert gespeichert werden/wurden.
-
Die Generatormatrix G ist eine (k, n) -Matrix und die entsprechende H-Matrix H ist eine (m, n)-Matrix mit m = n - k. Die Bitkombination v = v
0, ..., v
n-1 ist genau dann ein Codewort des Codes C, wenn
gilt, wobei v
T den transponierten Spaltenvektor des Zeilenvektors v bezeichnet. Ist
ein durch Bitfehler aus v entstandenes Wort, dann gilt für das Fehlersyndrom s
T
-
Dabei heißt
-
Fehlervektor, und das i-te Bit
von v' ist
- - fehlerhaft, wenn ei = 1 ist und
- - korrekt, wenn ei = 0 ist.
-
Das Fehlersyndrom sT ist ein (n - k)-dimensionaler transponierter Spaltenvektor des Zeilenvektors s, wobei hier beispielhaft sT bzw. s das unmodifizierte Fehlersyndrom bezeichnen.
-
Ein Hamming-Abstand d(v
1,v
2) zwischen zwei Wörtern
und
ist durch die Anzahl ihrer Komponenten bestimmt, in denen sie sich unterscheiden. Somit gilt:
wobei ⊕ die Addition modulo 2 (auch: Exklusiv-Oder-Verknüpfung, XOR-Verknüpfung) bezeichnet.
-
Der Codeabstand d
C eines Codes C ist der minimale Abstand zwischen zwei Codewörtern des Codes C, so dass
gilt.
-
Bei der Fehlerkorrektur eines fehlerhaften Wortes v' kann das Wort v' in das Codewort vi korrigiert werden, das von dem Wort v' den kleinsten Hamming-Abstand aufweist.
-
Beispielsweise ist für einen bekannten 3-Bitfehler korrigierenden und 4-Bitfehler erkennenden BCH-Code mit einbezogener Parität der Codeabstand dC = 8. Zwei beliebige Codewörter dieses Codes unterscheiden sich dann mindestens in den Werten von 8 Komponenten. Sind v1 und v2 Codewörter dieses Codes, für die d(v1, v2) = 8 gilt, und wird das Codewort v1 in einem Bit in das fehlerhafte Wort v1' gestört, dann gilt d (v1, v1') = 1 und d(v2, v1') ≥ 7.
-
In diesem Fall wird das fehlerhafte Wort v1' in das Codewort v1 korrigiert, d.h. in das Codewort, das von dem fehlerhaften Wort v1' den kleinsten Abstand hat.
-
Wird das Codewort v1 in zwei Bits gestört, so dass sich das fehlerhafte Wort v1' ergibt, gilt d(v1, v1') = 2 und d (v2, v1') ≥ 6. In diesem Fall wird das fehlerhafte Wort v1' in das Codewort v1 korrigiert.
-
Werden drei Bits des Codeworts v1 gestört, so dass sich das fehlerhafte Wort v1' ergibt, gilt d(v1, v1') = 3 und d (v2, v1') ≥ 5. In diesem Fall wird das fehlerhafte Wort v1' in das Codewort v1 korrigiert.
-
Werden vier Bits des Codeworts v1 gestört, so dass sich das fehlerhafte Wort v1' ergibt, d(v1, v1') = 4 und d(v2, v1') ≥ 4. In diesem Fall ist es möglich, dass sich das fehlerhafte Codewort v1' sowohl von dem Codewort v1 als auch von dem Codewort v2 jeweils in 4 Bits unterscheidet. Somit kann das in 4 Bits fehlerhafte Wort v1' nicht mehr eindeutig in v1 oder v2 korrigiert werden.
-
Nach diesem Beispiel kann somit ein 4-Bitfehler erkannt und es kann ein 1-Bitfehler, ein 2-Bitfehler oder ein 3-Bitfehler korrigiert werden.
-
Allgemein gilt somit: Im Falle eines t-Bitfehler korrigierenden und (t+1)-Bitfehler erkennenden Codes wird ein Wort v', das durch τ Bitfehler mit 1 ≤ τ ≤ t aus einem Codewort v entstanden ist, in das Codewort v korrigiert, wobei dC(v,v') = τ ≤ t ist. Ist ein Wort durch einen (t + 1)-Bitfehler aus einem Codewort entstanden, dann wird der (t + 1)-Bitfehler bislang nicht korrigiert und als (t + 1)-Bitfehler erkannt.
-
Fehlermuster
-
Der hier vorgeschlagene Ansatz ermöglicht es, ein fehlerhaftes Wort v', das durch einen (t + 1)-Bitfehler aus dem Codewort v entstanden ist, unter Verwendung eines t-Bitfehler korrigierenden und (t + 1)-Bit erkennenden Codes mit einem Codeabstand dC = 2(t + 1) eindeutig in das Codewort v zu korrigieren, wenn der (t + 1)-Bitfehler ein bestimmtes Fehlermuster aufweist. Ein solches Fehlermuster kann beispielsweise in Speichern auftreten, deren Speicherzellen mehr als zwei Werte speichern können.
-
Nachfolgend werden beispielhaft Fehlermuster beschrieben, die in Kombination mit der hier erläuterten Lösung verwendet werden können.
-
Ein Fehlermuster Fm wird beispielhaft beschrieben durch
- - eine Anzahl M fehlerhafter Bits und
- - Abstände D1, ... , DM-1 aufeinanderfolgender M - 1 fehlerhafter Bitpositionen.
-
Sind M fehlerhafte Bits in dem Fehlermuster vorhanden, wird das Fehlermuster durch ein Tupel
beschrieben.
-
Besteht ein Fehlermuster
aus M = 2 aufeinanderfolgenden Bits, wird es durch
beschrieben. Das zweite der fehlerhaften Bits hat dann den Abstand
1 von dem ersten fehlerhaften Bit.
-
Besteht ein Fehlermuster
aus M = 3 aufeinanderfolgenden Bits, wird es durch
beschrieben. Das zweite der fehlerhaften Bits hat dann den Abstand
1 von dem ersten fehlerhaften Bit und das dritte der fehlerhaften Bits hat den Abstand
1 von dem zweiten fehlerhaften Bit.
-
Das Fehlermuster
beschreibt ein Fehlermuster mit M = 4 fehlerhaften Bits. Der Abstand des zweiten fehlerhaften Bits von dem ersten fehlerhaften Bit ist 2, der Abstand des dritten fehlerhaften Bits von dem zweiten fehlerhaften Bit ist 1 und der Abstand des vierten fehlerhaften Bits von dem dritten fehlerhaften Bit ist 2.
-
Den Fehlermustern
(mit i = 1,2,3) kann jeweils die folgende Binärfolge fehlerhafter Bits zugeordnet werden:
- -
Binärfolge 1,1,
- -
Binärfolge 1,1,1 und
- -
Binärfolge 1,0,1,1,0,1.
-
Es ist möglich, die Bitpositionen eines Fehlermusters in unterschiedlicher Reihenfolge zu betrachten. Die Abstände aufeinander folgender fehlerhafter Bits D1,..., DM-1 können beispielsweise auch negativ sein. So beschreiben beispielsweise [2,1] und [2, -1] die gleichen Tupel. In der ersten Beschreibung [2,1] folgt dem ersten fehlerhaften Bit nach rechts im Abstand 1 das zweite fehlerhafte Bit. Das erste fehlerhafte Bit des Paars fehlerhafter Bits ist das linke Bit. In der zweiten Beschreibung [2, -1] ist das erste fehlerhafte Bit das rechte Bit und das zweite fehlerhafte Bit folgt dem ersten fehlerhaften Bit nach links im Abstand -1.
-
Im Folgenden werden die verwendeten Fehlermuster beispielhaft mit positiven Abständen D1,..., DM-1 verwendet.
-
Das erste Bit eines Fehlermusters kann in einem Fehlervektor an unterschiedlichen Bitpositionen positioniert sein.
-
Ein Fehlervektor
der Länge n = 10 enthält das Fehlermuster
Das erste Bit des Fehlermusters ist das Bit
des Fehlervektors, da
gilt.
-
Entsprechend enthalten die Fehlervektoren
und
jeweils das Fehlermuster [2; 1].
ist das erste Bit des Fehlermusters [2; 1] in dem Fehlervektor e
2; entsprechend ist
das erste Bit des Fehlermusters [2; 1] in dem Fehlervektor e
3.
-
Handelt es sich bei dem betrachteten Code um einen zyklischen Code der Länge n, können für ein Fehlermuster
die Abstände D
1,... , D
M-1 zyklisch modulo n interpretiert werden.
-
Beispiel: Der zyklische Code hat eine Länge n = 7 und den Fehlervektor
-
Ist das erste Bit des Fehlermusters
das Bit
ergibt sich aufgrund der modulo 7-Interpretation der Fehlervektor zu
-
Mit dem Abstand D
1 = 1 ist dem zweiten Bit des Fehlermusters das Bit
zugeordnet. Entsprechend ist mit dem Abstand D
2 = 1 dem dritten Bit des Fehlermusters das Bit
zugeordnet. Da die Indizes modulo 7 zu interpretieren sind, gelten:
und
-
Ist das erste Bit eines Fehlermusters F
m in der ersten Bitposition eines Fehlervektors positioniert, wird der Fehlervektor
als normierter Fehlervektor des Fehlermusters F
m bezeichnet.
-
Beispielsweise sind für eine Länge von n = 12 die normierten Fehlervektoren der Fehlermuster
-
Es ist möglich, dass ein Fehlermuster Fm in einem Fehlervektor mehrmals enthalten ist:
- - Der Fehlervektor
enthält das Fehlermuster
zweimal, ein erstes Mal beginnend in der Bitposition
und ein zweites Mal beginnend in der Bitposition
- - Der Fehlervektor
enthält das Fehlermuster
dreimal, ein erstes Mal beginnend in der Bitposition
ein zweites Mal beginnend in der Bitposition
und ein drittes Mal beginnend in der Bitposition
- - Der Fehlervektor
enthält das Fehlermuster
zweimal, ein erstes Mal beginnend in der Bitposition
ein zweites Mal beginnend in der Bitposition
-
Enthält ein Fehlervektor ein Fehlermuster mehrfach, nimmt für eine Bitposition des Fehlervektors, für die eines der Fehlermuster den Wert 1 annimmt, kein weiteres Fehlermuster den Wert 1 an.
-
Damit gilt, dass die Anzahl der 1-Komponenten eines Fehlervektors e, der K-Mal ein Fehlermuster [M;D1,... ,DM-1] annimmt, gleich K · M ist. Durch den Fehlervektor e wird dann ein (K-M)-Bitfehler beschrieben.
-
So ist beispielsweise das Fehlermuster
in dem Fehlervektor e
5 zweimal (K = 2) enthalten, der Fehlervektor e
5 weist K · M = 2 · 2 = 4 Einsen auf und beschreibt einen 4-Bitfehler .
-
Das Fehlermuster
ist in dem Fehlervektor e
6 dreimal (K = 3) enthalten, der Fehlervektor e
6 weist K · M = 3 · 2 = 6 Einsen auf und beschreibt einen 6-Bitfehler.
-
Das Fehlermuster
ist in dem Fehlervektor e
7 zweimal (K = 2) enthalten, der Fehlervektor e
7 weist K · M = 2 · 4 = 8 Einsen auf und beschreibt einen 8-Bitfehler.
-
BCH-Codes
-
Zur Fehlerkorrektur zufällig verteilter Mehrbitfehler können BCH-Codes verwendet werden. Dies ist beispielsweise in [Lin, S., Costello, D.: „Error Control Coding", Prentice Hall, 1983, vgl. z.B. Seiten 143 bis 160] beschrieben.
-
Ein BCH-Code ist ein linearer Code, der durch eine Paritätsprüfmatrix H und eine Generatormatrix G, die beispielsweise aus der Paritätsprüfmatrix ableitbar ist, beschrieben werden kann. Hat der Code die Länge N und weist er k Informationsbits auf, dann ist die Paritätsprüfmatrix H eine (L,N)-Matrix mit L Zeilen und N Spalten, wobei L = N - k ist. Die Generatormatrix G ist dann eine (k, N)-Matrix mit k Zeilen und N Spalten und der Code hat L Prüfbits.
-
Ein t-Bitfehler korrigierender unverkürzter BCH-Code kann durch die H-Matrix
beschrieben werden, wobei die H-Matrix in separierter Form dargestellt ist. Beispielsweise werden H
1, H
3, ..., H
2t-1 als
gewählt, wenn der Code nicht verkürzt ist. Dabei kann α ein primitives Element eines endlichen Körpers GF(2
m) (auch bezeichnet mit GF(2
q)) sein, der auch Galoisfeld genannt wird. In diesem Fall gilt: N = 2
m - 1. Die Exponenten von
sind modulo 2
m - 1 bestimmt. Ist α ein primitives Element des verwendeten Galoisfelds, kann der entsprechende BCH-Code auch als primitiver BCH-Code bezeichnet werden.
sind allgemein jeweils (m,N)-Matrizen mit m Zeilen und N = 2
m - 1 Spalten. Es ist möglich, dass einige der m Zeilen einer der Matrizen H
i linear abhängig sind. In einem solchen Fall können Zeilen der Matrix H
i weggelassen werden, bis alle Zeilen linear unabhängig sind. Die Anzahl der Zeilen beispielsweise der Matrix H
i kann somit auch kleiner als m sein.
-
Die Elemente ai des Galoisfelds GF(2m) sind hier in ihrer Vektordarstellung m-stellige binäre Spaltenvektoren.
-
Werden Q Spalten der H-Matrix des unverkürzten BCH-Codes gestrichen, so ergibt sich eine H-Matrix eines verkürzten BCH-Codes der Länge n = N - Q. Für den verkürzten Code gilt: n = N - Q < 2m - 1.
-
Optional kann die H-Matrix H um eine Zeile aus lauter Einsen ergänzt werden. Einer zusätzlichen Zeile aus Einsen in der H-Matrix entspricht die zusätzliche Berücksichtigung einer Gesamtparität. Bei Berücksichtigung der Gesamtparität kann die H-Matrix die Form
haben, wobei P die Zeile aus Einsen darstellt.
-
Nachfolgend wird ein verkürzter BCH-Code der Länge n betrachtet, wobei
gilt. Ein Codewort dieses BCH-Codes v = v
0,..., v
n-1 (auch bezeichnet als Codevektor) besteht aus n Komponenten v
0, v
1,... , v
n-1. Dabei kann ein Codevektor als ein Zeilenvektor oder als ein Spaltenvektor beschrieben sein. Wird eine Matrix von rechts mit einem Vektor multipliziert, dann ist der Vektor als Spaltenvektor zu interpretieren und das Ergebnis ist ein Spaltenvektor. Wird eine Matrix von links mit einem Vektor multipliziert, dann ist der Vektor ein Zeilenvektor und das Resultat der Multiplikation ist ebenfalls ein Zeilenvektor. Es ist dann nicht erforderlich, die entsprechenden Vektoren explizit als Spaltenvektoren oder Zeilenvektoren hervorzuheben, da aus dem Kontext klar ist, ob es sich um einen Spaltenvektor oder einen Zeilenvektor handelt. Weiterhin sei angemerkt, dass ein Vektor w, der als Spaltenvektor dargestellt ist, in der Form w
T notiert sein kann.
-
Wird ein Codewort v = v
0, ..., v
n-1 in ein Wort
gestört, dann kann der Unterschied zwischen dem Codewort v und dem gestörten Wort v' durch einen Fehlervektor e mit
beschrieben werden.
-
Eine Komponente e
i des Fehlervektors e ist gleich 1, wenn sich das Codewort v
i und das gestörte Codewort
unterscheiden und wenn
gilt. Eine Komponente e
j des Fehlervektors e ist gleich 0, wenn das Codewort v
j und das gestörte Codewort
gleich sind und wenn
gilt.
-
Das Symbol „⊕“ bezeichnet die Exklusiv-Oder-Verknüpfung (auch bezeichnet als XOR-Verknüpfung).
-
Kann ein Fehler durch eine Fehlerkorrekturschaltung korrigiert werden, dann können die Korrekturwerte, die die Fehlerkorrekturschaltung ausgibt, gleich den Komponenten des Fehlervektors sein, und die Korrekturschaltung gibt in diesem Fall an einem i-ten Ausgang ihrer n Ausgänge den Korrekturwert e
i aus. Der Korrekturwert e
i kann dann mit der zu korrigierenden Komponente
zu
XOR-verknüpft werden. Die Korrekturwerte e
i können auch zu einem Korrekturvektor zusammengefasst werden.
-
Der Korrekturvektor ist gleich dem Fehlervektor, wenn der Fehler durch den Code korrigiert werden kann und die Komponenten des Korrekturvektors und des zu korrigierenden Vektors komponentenweise XOR-verknüpft werden.
-
Kann ein Fehler durch eine Fehlerkorrekturschaltung korrigiert werden, dann können die Korrekturwerte, die die Fehlerkorrekturschaltung ausgibt, auch gleich den invertierten Komponenten des Fehlervektors sein, und die Korrekturschaltung gibt in diesem Fall an dem i-ten Ausgang ihrer N Ausgänge den invertierten Korrekturwert
e i aus. Der invertierte Korrekturwert
e i kann dann mit der zu korrigierenden Komponente
zu
-
XNOR-verknüpft werden. Es ist auch möglich, eine Teilmenge der Korrekturwerte zu invertieren.
-
Hierbei sei angemerkt, dass das XNOR-Gatter die Funktion (Exklusiv-Nicht-ODER) wahrnimmt; an dessen Ausgang liegt genau dann eine logische 1 an, wenn an beiden Eingängen 1 oder an beiden Eingängen 0 anliegt. Die XNOR-Verknüpfung wird auch als Äquivalenz bezeichnet.
-
Nachfolgend werden beispielhaft nicht-invertierte Korrekturwerte verwendet. Eine Anwendung der hier beschriebenen Lösungen auf invertierte Korrekturwerte ist entsprechend möglich.
-
Grundsätzlich ist es nicht notwendig, dass alle n Bits eines eventuell fehlerhaften n-stelligen Binärwortes
korrigiert werden. Es ist zum Beispiel möglich, T Bits dieser n Bits zu korrigieren, wobei T ≤ n gilt. Erfolgt die Korrektur unter Verwendung eines t-Bitfehler korrigierenden Codes, gilt allgemein T > t. So ist es möglich, nur Datenbits des Binärwortes v unter Verwendung des t-Bitfehler korrigierenden Codes zu korrigieren. Es ist aber auch möglich, dass T = n gilt und alle Bits korrigiert werden. Beispielhaft wird der Fall betrachtet, dass t < T ≤ n gilt.
-
Ist der Vektor v ein Codevektor eines separierbaren Codes, bei dem Datenbits und Prüfbits in dem Codevektor v getrennt vorhanden sind, ist es möglich, nur die Datenbits oder nur einen Teil der Datenbits des Vektors v' zu korrigieren.
-
Ein Fehlersyndrom s = (s
1, s
3,... ,s
2t-1, s
p) eines gestörten Wortes v' ist für einen t-Bitfehler korrigierenden BCH-Code mit einbezogener Gesamtparität durch
bestimmt, wobei
gelten.
-
Das Fehlersyndrom eines Codewortes v ist gleich
0, so dass für ein Codewort v gilt:
-
Entsprechend gilt für ein Nicht-Codewort v' = v ⊕ e:
-
Das Fehlersyndrom s ist durch den Fehlervektor e bestimmt. Das Fehlersyndrom s wird hier als unmodifiziertes Fehlersyndrom bezeichnet. Entsprechend sind s1, s3, ..., s2t-1 Teilsyndrome des unmodifizierten Fehlersyndroms s. Die Teilsyndrome s1, s3, ..., s2t-1 sind ihrerseits Elemente des Galoisfelds GF(2m) und können in den verschiedenen Darstellungen von Galoisfeld-Elementen wiedergegeben sein. Beispielsweise können diese Elemente in ihrer Vektordarstellung in dem Galoisfeld GF(2m) jeweils m binäre Komponenten (d.h. Werte in dem Galoisfeld GF(2m)) aufweisen. Die Teilsyndrome s1, s3, ..., s2t-1 werden auch als Komponenten des Fehlersyndroms s = (s1, s3, ..., s2t-1) bezeichnet, wobei die Komponenten s1, s3, ..., s2t-1 dann Werte des Galoisfelds GF(2m) annehmen.
-
Um aus dem fehlerhaften, gestörten Nicht-Codewort v' das zugehörige korrekte Codewort zu ermitteln, sind diejenigen Komponenten
zu invertieren, für die e
j =
1 gilt, so dass die eine Komponente e
j des Fehlervektors der entsprechende Korrekturwert ist, den die Fehlerkorrekturschaltung bestimmt.
-
Für den betrachteten verkürzten BCH-Code kann der Fehlervektor e aus dem unmodifizierten Fehlersyndrom
mit der H-Matrix
bestimmt werden.
-
Die Matrizen H
1, H
3, ..., H
2t-1 der H-Matrix können durch ihre jeweiligen Spalten wie folgt angegeben werden:
-
Die Exponenten von α sind modulo 2m - 1 bestimmt, und die Exponenten i0, i1, ..., in-i sind paarweise verschieden. Es ist dabei nicht erforderlich, dass ij = j für j = 0, ..., n - 1 gilt.
-
Beispielhaft kann die H-Matrix in der Form
verwendet werden.
-
Für ein Fehlermuster F
m = [M, D
1,... ,D
M-1] gilt für diese H-Matrix
und Konstanten β
1, ... , β
2t-1 sind durch
bestimmt, wobei
der transponierte n-dimensionale Spaltenvektor des n-dimensionalen Zeilenvektors
ist. Ferner gilt K ≥
1.
-
Zur Bestimmung von β
1 wird die Teilmatrix H
1 mit dem normierten Fehlervektor
des Fehlermusters F
m multipliziert. Dabei werden die Spalten der Teilmatrix H
1 komponentenweise XOR-verknüpft, die den Positionen des normierten Fehlervektors
entsprechen, die gleich
1 sind. Das Resultat wird als Element des Galoisfelds durch
dividiert oder gleichwertig mit
multipliziert. Ist i
0 =
0 und damit
dann ist keine weitere Operation erforderlich.
-
Zur Bestimmung von β
3 wird die Teilmatrix H
3 mit dem normierten Fehlervektor
des Fehlermusters F
m multipliziert. Dabei werden die Spalten der Teilmatrix H
3 komponentenweise XOR-verknüpft, die den Positionen des normierten Fehlervektors
entsprechen, die gleich
1 sind. Das Resultat wird als Element des Galoisfelds durch
dividiert oder gleichwertig mit
multipliziert. Ist i
0 =
0 und damit
dann ist keine weitere Operation erforderlich.
-
Entsprechend werden β
5,..., β
2t-1 bestimmt.
ist hier ein n-komponentiger Spaltenvektor, da die Matrizen H
1, H
3, ... von rechts mit
multipliziert werden.
-
Für den speziellen Fall i
0 =
0 und d =
1 gilt für die H-Matrix:
-
Für ein Fehlermuster F
m = [M, D
1,... ,D
M-1] gilt
und weiter mit
-
Speziell für ein Fehlermuster F
m = [M;D
1,... ,D
M-1] folgt somit
-
Es wird die Korrektur eines Fehlers betrachtet, der K Mal ein Fehlermuster
aufweist, wobei
gilt. Für k =
1, ... , K ist beispielhaft das erste Bit des k-ten Fehlermusters das j
k-te Bit des Fehlervektors. Für die Teilsyndrome des Fehlersyndroms s ergibt sich
mit
-
Aus der Gleichung (14) folgt:
-
Für die jeweils ersten Bitpositionen j
1, j
2, ... , j
K der K Fehlermuster gelten die Gleichungen für einen K-Bitfehler eines K-Bitfehler korrigierenden BCH-Codes, wenn man das unmodifizierte Fehlersyndrom durch das modifizierte Fehlersyndrom ersetzt. Das unmodifizierte Fehlersyndrom umfasst die Teilsyndrome s
1, ... , s
2t-1 und das modifizierte Fehlersyndrom umfasst die Teilsyndrome
-
Mit anderen Worten: Das modifizierte Fehlersyndrom
wird so gebildet, dass es als Fehlersyndrom eines K-Bitfehler korrigierenden Codes für jeweils ein erstes Bit der K Fehlermuster dient.
-
Das modifizierte Fehlersyndrom
wird unter Verwendung des unmodifizierten Fehlersyndroms
und des Fehlermusters F
m bestimmt, wobei das Fehlermuster F
m beispielsweise durch seinen normierten Fehlervektor
beschrieben ist.
-
Beispielsweise sind die Konstanten β
1, ... , β
2K-1 zu
bestimmt und die Teilsyndrome
des modifizierten Fehlersyndroms ergeben sich durch Multiplikation der entsprechenden Teilsyndrome s
1,..., s
2k-1 des unmodifizierten Fehlersyndroms mit jeweils einer Konstanten
-
Die Korrektur dieses K-Bitfehlers kann unter Verwendung der modifizierten Teilsyndrome
erfolgen, wenn bereits bestimmt wurde, dass ein t +
1-Bitfehler vorliegt. Für den t +
1-Bitfehler wird dann angenommen, dass es sich um einen Fehler handelt, dessen Fehlervektor K mindestens ein Fehlermuster [M;D
1,...,D
M-1] aufweist.
-
Entsprechend ist es möglich, die Korrektur unter Verwendung aller modifizierten Teilsyndrome
vorzunehmen.
-
In manchen Anwendungsbeispielen ist es möglich, dass die ersten Bitpositionen der K Fehlermuster nur bestimmte Werte annehmen. Liegt beispielsweise ein Speicher vor, dessen Speicherzellen vier verschiedene Zustände und damit vier verschiedene binär codierte Werte 00, 01, 10, 11 annehmen können, kann eine Anzahl von K benachbarten 2-Bitfehlern auftreten, deren erste Bits die Bits 1, 3, 5, ... sind, sofern der i-ten Speicherzelle die Bits 2i - 1, 2i zugeordnet sind. Wenn die ersten Bitpositionen der Fehlermuster nur bestimmte Werte annehmen können, kann dadurch eine vereinfachte Decodierung und Fehlerkorrektur genutzt werden.
-
Für d =
1 und k
1 =
0 gilt
mit F
m = [M;D
1,...,D
M-1].
-
Nachfolgend wird ein Ausführungsbeispiel für einen 3-Bitfehler korrigierenden und 4-Bitfehler erkennenden BCH-Code mit einem Codeabstand 8 betrachtet. Beliebige 3-Bitfehler und 4-Bitfehler aus zwei benachbarten 2-Bitfehlern können korrigiert werden. Das Fehlermuster ist in diesem Beispiel [2;1].
-
Es wird die H-Matrix
verwendet.
-
Liegt ein
1-Bitfehler im j-ten Bit vor, dann gilt
und es ist
-
Liegt ein
2-Bitfehler in den Bitpositionen j und l vor, gilt
und es ist
-
Liegt ein
3-Bitfehler in den Bitpositionen i, j und l vor, gilt
und es ist
-
Ein 1-Bitfehler, ein 2-Bitfehler oder ein 3-Bitfehler wird unter Verwendung der Teilsyndrome s1, s3 und s5 korrigiert, wie dies bei der Verwendung eines BCH-Codes üblich ist.
-
Liegt ein 4-Bitfehler in den Bitpositionen j, j + 1, l und l + 1 vor, ist das Fehlermuster [2, 1] zweimal in dem Fehlervektor e enthalten. Das erste Fehlermuster eines benachbarten 2-Bitfehlers beginnt in der Bitposition j und das zweite Fehlermuster aus zwei benachbarten 2-Bitfehlern beginnt in der Bitposition l. Diese Bitpositionen sollen bestimmt werden.
-
Es gelten:
Mit
ergibt sich
und die Bitpositionen j und l sind, wenn schon bekannt ist, dass ein
4-Bitfehler (mit t +
1 =
4) aus
2 benachbarten
2-Bitfehlern vorliegt, wie ein
2-Bitfehler aus den modifizierten Teilyndromen
des BCH-Codes bestimmbar.
-
Es ist auch möglich, die Teilsyndrome
zur Bestimmung der Bitpositionen j und l zu verwenden.
-
Weiterhin ist es eine Option, anstelle des
4-Bitfehlers aus zwei benachbarten
2-Bitfehlern einen
4-Bitfehler aus vier benachbarten Bitfehlern zu betrachten: Der so modifizierte BCH-Code korrigiert dann beliebige
3-Bitfehler und einen
4-Bit-Burst-Fehler, wobei ein
4-Bit-Burst-Fehler ein beliebiger Fehler innerhalb von
4 aufeinanderfolgenden Bits ist. Das Fehlermuster ist in diesem Fall F
m = [
4;
1,1,1] und der Fehlervektor ergibt sich zu
-
Für einen
4-Bitfehler mit
4 benachbarten Bitfehlern mit der ersten Bitposition j gilt somit
wobei die Position j aus der Gleichung
mit
bestimmt werden kann.
-
Es ist möglich, den Ort eines Fehlers als Nullstelle eines Lokatorpolynoms zu bestimmen. Liegt ein µ-Bitfehler vor, dann ist es möglich, die Fehlerorte durch die µ Nullstellen eines Lokatorpolynoms µ-ten Grades L
µ (x) mit
zu ermitteln. Weiterhin ist es möglich, (µ -
1) Fehlerorte eines (µ -
1)-Bitfehlers durch die Nullstellen des Lokatorpolynoms µ-ten Grades zu bestimmen. Im Falle eines (µ -
1)-Bitfehlers ist eine erste Nullstelle des Lokatorpolynoms µ-ten Grades gleich
0, während die weiteren (µ -
1) Nullstellen den (µ -
1) Fehlerorten entsprechen.
-
Es ist bekannt, das der Anzahl der Fehler entsprechende Lokatorpolynom iterativ nach dem Berlekamp-Massey-Algorithmus zu bestimmen (siehe z.B. [Lin, S., Costello, D.: „Error Control Coding", Prentice Hall, 1983, vgl. z.B. Seiten 155 bis 160]).
-
Weiterhin können die Koeffizienten der entsprechenden Lokatorpolynome durch Lösen einer linearen Gleichung aus den Teilsyndromen bestimmt werden. Dies wird nachfolgend erläutert.
-
Zunächst werden beispielhaft Lokatorpolynome für µ = 1,2,3,4,5 angegeben.
-
Für µ =
1 hat das Lokatorpolynom die Form
für µ =
2 hat das Lokatorpolynom die Form
für µ =
3 hat das Lokatorpolynom die Form
für µ =
4 hat das Lokatorpolynom die Form
und für µ =
5 hat das Lokatorpolynom die Form
-
Liegt ein µ-Bitfehler vor, dann sind die µ Fehlerorte i
1, i
2, i
3, ... , i
µ die Exponenten der Nullstellen
des Lokatorpolynoms L
µ(x).
-
Wird in dem Lokatorpolynom Lµ(x) die Variable x durch
ersetzt und wird weiter
gesetzt, so gilt
-
Das Polynom
kann ebenfalls als Lokatorpolynom verwendet werden. Die µ Fehlerorte j
1, j
2, j
3, ... , j
µ sind dann die negativen Exponenten der Nullstellen
des Lokatorpolynoms
wobei die Exponenten jeweils modulo 2
m -
1 zu betrachten sind, wenn das verwendete Galoisfeld GF(2
m) ist.
-
Nachfolgend wird beispielhaft das Lokatorpolynom Lµ (x) verwendet.
-
Die Koeffizienten der Lokatorpolynome können als Lösungen der folgenden linearen Gleichungssysteme bestimmt werden.
-
Für µ =
2 gilt
mit der Lösung
-
Hierbei ist berücksichtigt, dass im Galoisfeld GF(2
m) gilt:
-
Für µ =
3 gilt
wobei
durch Lösen der linearen Gleichung zu
bestimmt sind, wobei in dieser Lösung berücksichtigt ist, dass im Galoisfeld GF(2
m) gilt:
-
Für µ =
4 gilt
wobei
durch Lösen der linearen Gleichung zu
bestimmt sind, wobei in dieser Lösung berücksichtigt ist, dass im Galoisfeld GF(2
m) gilt:
-
Für µ =
5 gilt
wobei die konkreten Werte für
wieder durch Lösen einer linearen Gleichung (24) bestimmt sind und beispielsweise [Wicker, S.: „Error Control Systems for digital Communication and Storage“, Prentice Hall,
1995, Seite
208] angegeben sind.
-
Allgemein ist eine Matrix M(t) zu
bestimmt und für mehr als fünf Bitfehler (t >
5) gilt:
-
Die Werte für
sind wieder durch Lösen einer linearen Gleichung, hier durch Lösen der linearen Gleichung (25) bestimmt.
-
Eine Aufgabe einer Fehlerkorrekturschaltung besteht darin, die Fehlerpositionen eines beliebigen 1-Bitfehlers, eines beliebigen 2-Bitfehlers oder eines beliebigen 3-Bitfehlers, ..., oder eines beliebigen τ-Bitfehlers mit 1 ≤ τ ≤ t aus dem Fehlersyndrom, d.h. aus den Teilsyndromen s1, s3, ..., s2t-1 des BCH-Codes effizient zu bestimmen und in den bestimmten Bitpositionen des Datenwortes durch einen Korrekturwert eine Korrektur des mindestens einen als fehlerhaft erkannten Bits vorzunehmen.
-
Der hier vorgeschlagene Ansatz ermöglicht es darüber hinaus, dass ein (t + 1)-Bitfehler korrigiert werden kann, wenn der (t + 1)-Bitfehler ein bestimmtes Fehlermuster einmal oder mehrmals enthält.
-
Bei der Fehlerkorrektur kann zunächst die Anzahl der Fehler bestimmt werden.
-
Liegt ein τ-Bitfehler mit 1 ≤ τ ≤ t vor, wird der τ-Bitfehler unter Verwendung der Teilsyndrome s1,..., s2t-1 des Fehlersyndroms des BCH-Codes korrigiert, wie das bei BCH-Codes üblich ist.
-
Liegt ein (t +
1)-Bitfehler vor, der ein bestimmtes Fehlermuster aus M Bits K Mal aufweist, wobei K · M = t +
1 gilt, kann der Fehlervektor unter Verwendung von modifizierten Teilsyndromen
bestimmt werden, wobei β
1, ... , β
2k-1 konstante Werte des Galoisfelds sind, die durch das Fehlermuster aus M Bits und die Spalten der H-Matrix des betrachteten BCH-Codes bestimmt sind.
-
Unter Verwendung der modifizierten Teilsyndrome
des Fehlersyndroms werden jeweils K erste Bits der K Fehlermuster aus M Bits korrigiert. Der Korrekturwert der weiteren M -
1 Bits der K Fehlermuster ist dann gleich dem Korrekturwert des jeweils ersten korrigierten Bits.
-
Besteht beispielsweise ein Fehlermuster aus zwei aufeinanderfolgenden Bits, dann kann das erste Bit des Fehlermusters unter Verwendung der Teilsyndrome des modifizierten Fehlersyndroms korrigiert werden. Weiterhin wird das zweite Bit des Fehlermusters ebenfalls korrigiert, wenn das erste Bit des Fehlermusters korrigiert wird.
-
Weist beispielsweise ein Fehlervektor zwei Fehlermuster aus drei aufeinanderfolgenden Bits auf, dann wird beispielsweise das erste Bit der beiden Fehlermuster unter Verwendung der Teilsyndrome des modifizierten Fehlersyndroms korrigiert und die jeweils zweiten Bits der beiden Fehlermuster und die jeweils dritten Bits der beiden Fehlermuster werden ebenfalls korrigiert, wenn das erste Bit der Fehlermuster korrigiert wird.
-
Ist bereits bestimmt worden, dass ein (t +
1)-Bitfehler vorliegt, dann ist es möglich, zur Korrektur eines ersten Bits der K Fehlermuster lediglich die modifizierten Teilsyndrome
des Fehlersyndroms zu verwenden, wobei die Korrektur mittels modifiziertem Fehlersyndrom wie für einen K-Bitfehler korrigierenden BCH-Code erfolgt.
-
Bei einem derartigen Vorgehen ist unter Verwendung der nicht modifizierten Teilsyndrome s1, ... , s2t-1 zu bestimmen, ob ein (t + 1)-Bitfehler vorliegt oder nicht.
-
Wird erkannt, dass ein τ-Bitfehler mit 1 ≤ τ ≤ t vorliegt, dann kann die Fehlerkorrektur mit dem t-Bitfehler korrigierenden BCH-Code unter Verwendung der Syndrome s1,... , s2t-1 durchgeführt werden.
-
Tritt ein (t +1)-Bitfehler auf, ist es auch möglich zur Dekodierung die modifizierten Teilsyndrome
zur Fehlerkorrektur zu verwenden.
-
Eine Möglichkeit zur Bestimmung der Anzahl der aufgetretenen Fehler ist beispielsweise in [Wicker, S.: „Error Control Systems for digital Communication and Storage“, Prentice Hall, 1995, Seite 206] beschrieben.
-
Aus
kann gefolgert werden, dass τ-Bitfehler oder (τ-
1)-Bitfehler vorhanden sind. Entsprechend gilt
wenn weniger als (τ -
1)-Bitfehler vorhanden sind.
-
Sind τ-Bitfehler vorhanden, sind die τ Fehlerorte durch die τ Nullstellen des Lokatorpolynoms Lτ(x) bestimmt.
-
Sind (τ- 1)-Bitfehler vorhanden, sind die (τ - 1) Fehlerorte durch die (τ - 1) Nullstellen ≠ 0 des Lokatorpolynoms Lτ(x) bestimmt, wobei in diesem Fall eine weitere Nullstelle gleich 0 vorhanden ist. Das Vorhandensein eines Fehlers wird durch s ≠ 0 angezeigt.
-
Wird vorausgesetzt, dass maximal ein t-Bitfehler vorliegt, kann aus
gefolgert werden, dass entweder ein t-Bitfehler oder ein (t -
1)-Bitfehler vorliegt. Liegt ein t-Bitfehler vor, sind die Fehlerorte durch die t Nullstellen des Lokatorpolynoms L
t(x) t-ten Grades bestimmt. Liegt ein t -
1-Bitfehler vor, sind die t -
1 Fehlerorte durch die t -
1 Nullstellen ≠
0 des Lokatorpolynoms L
t(x) t-ten Grades bestimmt. Eine weitere Nullstelle des Lokatorpolynoms t-ten Grades ist dann
0.
-
Gilt
liegt weder ein t-Bitfehler noch ein (t -
1)-Bitfehler vor. In diesem Fall kann höchstens ein (t -
2)-Bitfehler vorliegen.
-
Ist
kann gefolgert werden, dass entweder ein (t -
2)-Bitfehler oder ein (t -
3)-Bitfehler vorliegt:
- - Liegt ein (t - 2)-Bitfehler vor, sind die Fehlerorte durch die t - 2 Nullstellen des Lokatorpolynoms Lt-2(x) bestimmt, das den Grad t - 2 hat.
- - Liegt ein (t - 3)-Bitfehler vor, sind die t - 3 Fehlerorte durch die t - 3 Nullstellen ≠ 0 des Lokatorpolynoms Lt-2(x) bestimmt, das den Grad t - 2 aufweist. Eine weitere Nullstelle des Lokatorpolynoms (t - 2)-ten Grades ist in diesem Fall 0.
-
Ist
kann gefolgert werden, dass maximal ein (t -
4)-Bitfehler vorliegt.
-
Um die Anzahl der Fehler zu bestimmen, können die Determinanten
betrachtet werden, bis eine Determinante ≠
0 gefunden wird.
-
Für einen 4-Bitfehler korrigierenden BCH-Code mit zusätzlicher Gesamtparität soll nachfolgend das Vorgehen erläutert werden:
-
Beispielsweise wird s = (s
1, s
3, s
5, s
7, P) ≠
0 angenommen. Die Determinanten werden jeweils nach den Elementen der ersten Zeile entwickelt und die Determinante der verbliebenen 3×3-Matrizen wird direkt berechnet. Es folgt:
-
Der so erhaltene algebraische Ausdruck lässt sich aus den Werten der Teilsyndrome unter Verwendung von bekannten Galoisfeldmultiplizierern von einem Fachmann implementieren und mit Hilfe eines Synthesetools optimieren.
-
Gilt Det (M(5)) ≠ 0, dann liegt ein 5-Bitfehler oder ein 4-Bitfehler vor. Ist die Parität P = 1, handelt es sich um einen 5-Bitfehler, ist die Parität P = 0, handelt es sich um einen 4-Bitfehler.
-
Gilt Det (M(5)) = 0, dann liegt ein 3-Bitfehler, ein 2- Bitfehler oder ein 1-Bitfehler vor, wenn s = (s1, s3, s5, s7) ≠ 0 ist. Ist P = 0, dann liegt ein 2-Bitfehler vor. Ist P = 1, dann liegt entweder ein 1-Bit oder ein 3-Bitfehler vor. Weiterhin kann die Determinante Det (M(3)) bestimmt werden. Ist Det (M(3)) = 1, liegt ein 3-Bitfehler vor, ist Det (M(3)) = 0, liegt ein 1-Bitfehler vor.
-
Zur Unterscheidung zwischen einem
1-Bitfehler und einem
3-Bitfehler, kann auch geprüft werden, ob
s
3 oder ob
s
3 gilt. Ist
liegt ein
1-Bitfehler vor, ist
s
3, liegt ein
3-Bitfehler vor.
-
Ein bestimmtes Fehlermuster kann beispielsweise in einem Speicher dadurch verursacht werden, dass eine Speicherzelle, die mehr als ein Bit speichern kann, fehlerhaft ist. Es ist möglich, dass eine Speicherzelle vier unterschiedliche Werte speichern kann, indem sie vier verschiedene Zustände annimmt. Beispielsweise werden die Zustände mit 0, 1, 2, 3 bezeichnet, die binär als 00, 01, 10, 11 bereitgestellt werden können. Wird der interne Zustand 2 (binär 10) der Speicherzelle in den Zustand 1 (binär 01) verfälscht, tritt ein benachbarter 2-Bitfehler auf, da die korrekte binäre Ausgabe 10 in die fehlerhafte Ausgabe 01 verfälscht wird. Wird der interne Zustand 3 in den internen Zustand 0 gestört, tritt ebenfalls ein benachbarter 2-Bitfehler auf, weil anstelle von des binären Werts 11 der binäre Wert 00 ausgegeben wird. Die fehlerhaften Bits sind benachbart. Es ist auch möglich beispielsweise durch eine Vertauschung der Ausgangsleitungen zu erreichen, dass anstelle eines Fehlermusters [2,1] ein Fehlermuster [2,3] oder ein anderes Fehlermuster entsteht.
-
Sind zwei Speicherzellen gleichzeitig fehlerhaft, sind die folgenden Bitfehler möglich:
- - Beide Speicherzellen verursachen einen 1-Bitfehler. Es ist dann ein 2-Bitfehler mit beliebigen Bitpositionen zu korrigieren.
- - Eine erste Speicherzelle verursacht einen benachbarten 2-Bitfehler und damit ein Fehlermuster [2; 1]. Die zweite Speicherzelle verursacht einen 1-Bitfehler. Es tritt ein 3-Bitfehler in zwei benachbarten Bits und einer beliebigen Bitposition auf.
- - Beide Speicherzellen verursachen einen benachbarten 2-Bitfehler, jeweils mit dem Fehlermuster [2; 1] und das Fehlermuster [2; 1] ist in dem Fehlervektor zweimal vorhanden.
-
Ein Code, der beliebige τ-Bitfehler mit 1 ≤ τ ≤ 3 korrigiert und einen 4-Bitfehler aus K = 2 Fehlermustern aus M = 2 Bits korrigiert, korrigiert alle beschriebenen Fehler.
-
Dabei wird beispielhaft angenommen, dass 4-Bitfehler mit jeweils zwei benachbarten 2-Bitfehlern, die durch zwei fehlerhafte Speicherzellen hervorgerufen werden, häufiger auftreten als beliebige 4-Bitfehler, bei denen mindesten 3 Speicherzellen gleichzeitig fehlerhaft sind.
-
Beispiel im Galoisfeld GF(2m) mit m = 5
-
Für die Ausführungsbeispiele wird beispielhaft m = 5 gewählt, so dass das zugrundeliegende Galoisfeld GF(2m) = GF(25) = GF(32) insgesamt 32 Elemente umfasst.
-
Elemente des Galoisfelds GF(
32) sind in ihren verschiedenen Darstellungsformen in
1 dargestellt. Das Modularpolynom des Galoisfelds GF(
32) ist das Polynom
-
Die erste Spalte der in
1 gezeigten Tabelle umfasst die Elemente α
i ≠ 0 des GF(2
5) für i = 0,1,...,30 in Exponentendarstellung (auch bezeichnet als Exponentialdarstellung). Das Nullelement des Körpers besitzt keine Exponentendarstellung. In der zweiten Spalte der Tabelle sind alle Elemente in ihrer Polynomdarstellung für das zugehörige Modularpolynom p(x) aufgelistet. Die dritte Spalte der Tabelle zeigt die Tupel- oder Vektordarstellung der Elemente des GF(2
5). Die Vektordarstellung eines Elementes kann direkt aus der Polynomdarstellung abgelesen werden. Die fünf Komponenten der Vektordarstellung entsprechen dabei von links nach rechts den Koeffizienten der zugehörigen Potenzen
in der Polynomdarstellung.
-
Die entsprechende Polynomdarstellung ergibt sich aus der Potenzdarstellung α
i, indem [x
i modulo (
1 +x
2 +x
5)] bestimmt wird. Beispielsweise ist die Polynomdarstellung von α
5 gleich
1 + x
2, da
gilt.
-
Die Multiplikation zweier Elemente des Galoisfelds kann in der Exponentendarstellung oder in der Polynomdarstellung vorgenommen werden. Sind zwei Elemente des Galoisfelds GF(2
m) = GF(2
5) in der Exponentendarstellung α
i und α
j gegeben, ergibt sich deren Produkt zu:
-
Liegen die zu multiplizierenden Elemente des Galoisfelds in ihrer Vektordarstellung oder in ihrer Polynomdarstellung vor, kann ihre Multiplikation mit einem Galoisfeld-Multiplizierer vorgenommen werden. Nachfolgend wird beispielhaft die Multiplikation zweier Elemente in ihrer Polynomdarstellung beschrieben. Um zwei Elemente, die als Elemente des Galoisfelds GF(2m) = GF(25) in ihrer Polynomdarstellung gegeben sind, miteinander zu multiplizieren, dann sind die Polynome direkt in der üblichen Weise miteinander zu multiplizieren, und das Ergebnis ist modulo des Modularpolynoms zu bestimmen.
-
Sind beispielsweise die Polynome
1 + x
2 + x
3 und x + x
3 gegeben, so ergibt ihre direkte Multiplikation
-
Wegen
und
folgt
-
Somit gilt im Ergebnis:
-
Nachfolgend wird der Fall beschrieben, wonach ein erstes Element a(x) mit
und und ein zweites Element b(x) mit
in dem Galoisfeld GF(2
5) mit dem Modularpolynom
multipliziert werden. Durch direktes Ausmultiplizieren der Polynome a(x) und b(x) ergibt sich zunächst ein Polynom
8-ten Grades. Mit
ergibt sich ein Polynom vierten Grades wie folgt:
-
Diese Beziehung wird durch einen Galoisfeld-Multiplizierer mit fünf ersten binären Eingängen, fünf zweiten binären Eingängen und fünf binären Ausgängen realisiert. Dies wird nachfolgend näher erläutert.
-
An den ersten fünf Eingängen des Galoisfeld-Multiplizierers liegen die binären Werte a
0, a
1, a
2, a
3, a
4 und an den zweiten fünf Eingängen liegen die binären Werte b
0, b
1, b
2, b
3, b
4 an, während an den fünf binären Ausgängen die Werte c
0, c
1, c
2, c
3, c
4 mit
ausgegeben werden. Hierbei bezeichnet das Symbol „+“ die Addition modulo
2 (XOR-Operation).
-
Die Implementierung der Gleichungen (27) bis (31) kann mittels eines Galoisfeld-Multiplizierers erfolgen, beispielsweise unter Verwendung von UND-Gattern und XOR-Gatter (Exklusiv-Oder-Gattern). Beispielsweise kann im Rahmen der Implementierung auch ein Synthesetool eingesetzt werden.
-
Wird ein Element des Galoisfelds quadriert, ist es mit sich selbst zu multiplizieren. Ist in der Polynomdarstellung ein Element als Polynom
gegeben, gilt
-
Das Quadrieren eines Elementes im Galoisfeld GF(2
5) kann entsprechend mit einem Quadrierer mit fünf binären Eingängen und fünf binären Ausgängen realisiert werden. An seinen fünf binären Eingängen werden die binären Werte a
0, a
1, a
2, a
3, a
4 zugeführt und an den fünf binären Ausgängen werden die binären Werte d
0, d
1, d
2, d
3, d
4 bereitgestellt. Es gelten
wobei das Symbol „+“ wieder die Addition modulo
2 (XOR-Verknüpfung) bezeichnet.
-
Zur Realisierung eines Quadrierers in dem Galoisfelds GF(25) mit dem Modularpolynom m(x) = 1 + x2+ x5 können die Gleichungen (32) bis (36) beispielsweise mittels XOR-Gattern implementiert werden.
-
Am Beispiel des Galoisfelds GF(25) wird beschrieben, wie die dritte Potenz eines Elements bestimmt werden kann, das in seiner Polynomdarstellung angegeben ist.
-
Wird die dritte Potenz (a(x))
3 eines Polynomes
-
Modulo des Modularpolynoms m(x) =
1 + x
2+ x
5 bestimmt, gilt:
-
Das Bilden der dritten Potenz eines Elements im Galoisfeld GF(2
5) kann entsprechend mit einem Dritte-Potenz-Bildner mit fünf binären Eingängen und fünf binären Ausgängen realisiert werden. Den fünf binären Eingängen werden die binären Werte a
0, a
1, a
2, a
3, a
4 zugeführt und an den fünf binären Ausgängen werden die binären Werte f
0, f
1, f
2, f
3, f
4 bereitgestellt. Es gilt:
-
Beispielsweise kann ein Dritte-Potenz-Bildner realisiert werden, im vorliegenden Beispiel in dem Galoisfelds GF(25) mit dem Modularpolynom m(x) = 1 + x2+ x5, indem lediglich die Gleichungen (37) bis (41) implementiert werden.
-
Alternativ kann ein Dritte-Potenz-Bildner aus einem Quadrierer und einen nachgeschalteten Galoisfeld-Multiplizierer realisiert werden. Auch können höhere Potenzen des Elements a(x) in entsprechender Weise unter Verwendung geeigneter Bausteine realisiert werden.
-
Eine Implementierung eines Konstanten-Multiplizierers in dem Galoisfeld GF(2
m) wird nachfolgend beispielhaft für m =
5 dargestellt. Das Modularpolynom ist
-
Es sei a ∈ GF(2
5) ein beliebiges Element des Galoisfelds mit der folgenden Polynomdarstellung
-
Als zu multiplizierende Konstante wird beispielhaft α
9 gewählt, deren Polynomdarstellung gemäß der in
1 gezeigten Tabelle mit
gegeben ist. Als Multiplikation ergibt sich
mit
-
Die Ausgabewerte b0, ... , b4 werden aus den Eingabewerten a0, ..., a4 entsprechend der in den Gleichungen (45) bis (49) dargestellten Beziehungen abgeleitet, so dass die Ausgabewerte durch XOR-Verknüpfungen aus den Eingabewerten bestimmt sind. Hierbei bezeichnet das Symbol „+“ die Addition modulo 2 (XOR-Operation). Entsprechend kann der Multiplizierer mittels XOR-Gatter realisiert werden.
-
Beispiel: Korrektur spezieller 4-Bitfehler, die sich aus zwei benachbarten 2-Bitfehlern zusammensetzen
-
Nachfolgend wird gezeigt, wie unter Verwendung eines BCH-Codes zur Korrektur beliebiger
1-Bit-,
2-Bit- und
3-Bitfehler, eine Korrektur spezieller
4-Bitfehler erfolgen kann, die sich aus zwei benachbarten
2-Bitfehlern zusammensetzen. Eine nachfolgende Gleichung (50) stellt beispielhaft eine Prüfmatrix eines 3-Bitfehler korrigierenden BCH-Codes mit einbezogener Gesamtparität für m = 5 und n = 31 dar, wobei der BCH-Code eine minimale Hamming-Distanz d
min = 8 aufweist:
-
Die Potenzen von α
i sind dabei modulo (2
5 -
1) =
31 zu interpretieren. Die letzte Zeile der H-Matrix (
50) besteht aus lauter Einsen. Durch diese Zeile ist die Gesamtparität P bestimmt. In der nachfolgend dargestellten Gleichung (51) sind zur verbesserten Übersichtlichkeit die einzelnen Elemente der Teilmatrizen H
1, H
3 und H
5 nur anhand ihre Potenz dargestellt:
-
Unter Berücksichtigung der in
1 gezeigten Tabelle kann eine binäre Prüfmatrix H aufgestellt werden, indem die in der Gleichung (51) für H
1, H
3 und H
5 gezeigten Potenzen der Elemente durch ihre zugehörige Vektordarstellung als Spaltenvektoren ersetzt werden. Damit ergibt sich eine binäre Prüfmatrix H zu
-
2 zeigt eine Schaltungsanordnung bestehend aus einem Syndromgenerator SG 11 mit n = 31 binären Eingängen und 3 · 5 + 1 = 16 binären Ausgängen, einer Fehler- erkennungseinheit FE 12 mit (3·5 + 1) = 16 binären Eingängen und 4 binären Ausgängen, Konstantenmultiplizierern 131, 132, 133 mit jeweils 5 binären Eingängen und 5 binären Ausgängen, Multiplexern 141, 142, 143 mit jeweils (2·5 + 1) = 11 binären Eingängen und 5 binären Ausgängen, einem BCH-Decoder DEC BCH 15 mit (3·5) = 15 binären Eingängen und n = 31 binären Ausgängen, UND-Gattern 161, 162, ..., 1630 mit jeweils 2 binären Eingängen und einem binären Ausgang, ODER-Gattern 171, 172, ..., 1730 mit jeweils 2 binären Eingängen und einem binären Ausgang und XOR-Gattern 181, 182, ..., 1831 mit jeweils 2 binären Eingängen und einem binären Ausgang.
-
Der Syndromgenerator SG
11 weist n =
31 binäre Eingänge auf, an denen das möglicherweise fehlerhafte Binärwort
anliegt. An seinem (
3 · 5+
1)-Bit breiten Ausgang gibt der Syndromgenerator SG
11 ein Fehlersyndrom s = (s
1, s
3, s
5, s
p) der Wortbreite (3·5 +
1) aus. Dabei ist der Syndromgenerator SG
11 so konfiguriert, dass er die Teilsyndrome des Fehlersyndroms s auf Basis der Prüfmatrix H gemäß Gleichung (52) so bestimmt, dass gilt:
-
Für i = 1, 2, 3 sind die i-ten 5 binären Ausgänge des Syndromgenerators SG 11, die das Teilsyndrom s2i-1 tragen, in die i-ten 5 binären Eingänge der Fehlererkennungseinheit FE 12, in den 5-Bit breiten 0-Eingang des Multiplexers MUX 14i und in den 5-Bit breiten Eingang des Konstantenmultiplizierers 13i geführt.
-
Der Konstantenmultiplizierer
13i ist so konfiguriert, dass er ein modifiziertes Teilsyndrom
an seinen
5 binären Ausgängen erzeugt, die in den
5-Bit breiten
1-Eingang des Multiplexers MUX
14i geführt sind. Der
5-Bit breite Ausgang des Multiplexers MUX
14i ist mit den i-ten
5 binären Eingängen des BCH-Decoders DEC BCH
15 verbunden.
-
Der BCH-Decoder DEC BCH 15 erzeugt auf Basis der Syndromkomponenten s1, s3 und s5 einen Korrekturvektor e = (e0, e1,...., e30) an seinen 31 binären Ausgängen. Dabei ist der BCH-Decoder DEC BCH 15 so konfiguriert, dass, wenn die an den Eingängen bereitgestellten Teilsyndrome s1, s3 und s5 dem Fehlersyndrom eines i-Bitfehlers in den Bitpositionen b1, b2,..., bi mit 0 ≤ b1 < b2 < ... < bi ≤ 30 entsprechen, ein Korrekturvektor e = (e0, e1,..., e30) erzeugt wird, der in den Komponenten eb
1 , eb
2 ,...,eb
i , eine binäre 1 in allen anderen Komponenten eine binäre 0 aufweist. Zeigen die Teilsyndrome keinen Fehler an und gilt s1 = s3 = s5 = 0, so wird ein Korrekturvektor e = (e0, e1,..., e30) = (0, 0,..., 0) an den Ausgängen des BCH-Decoders DEC BCH 15 erzeugt.
-
Der binäre Ausgang des Syndromgenerators SG 11, der das 1-Bit breite Teilsyndrom sp trägt, ist mit einem binären Eingang der Fehlererkennungseinheit FE 12 verbunden.
-
Die Fehlererkennungseinheit FE
12 ist so konfiguriert, dass in Abhängigkeit von den an ihren Eingängen anliegenden Teilsyndromen s
1, s
3, s
5, s
p vier
1-Bit breite Fehlererkennungssignale det
i für i = 1,2,3,4 an ihren Ausgängen ausgegeben werden, wobei det
i genau dann
1 ist, wenn das binäre Wort v' durch einen i-Bitfehler gestört ist. Die Fehlererkennung kann in diesem Beispiel durch Berechnung der Determinante
erfolgen, wobei s = (s
1, s
3, s
5, s
p) ≠
0 angenommen wird. Es folgt:
-
Gilt Det
so ist das gestörte (bzw. fehlerhafte) Binärwort v' durch einen
3-Bitfehler oder einen
4-Bitfehler gestört. Ist s
p =
1, handelt es sich um einen
3-Bitfehler; ist s
p =
0, handelt es sich um einen
4-Bitfehler.
-
Gilt Det
so liegt ein
1-Bitfehler oder ein
2-Bitfehler vor. Ist s
p =
1, handelt es sich um einen
1-Bitfehler; ist s
p =
0, handelt es sich um einen
2-Bitfehler.
-
Für die vier Fehlererkennungssignale deti gilt somit:
- - det1 = 1 genau dann, wenn
- - det2 = 1 genau dann, wenn
- - det3 = 1 genau dann, wenn
- - det4 = 1 genau dann, wenn
-
Der algebraische Ausdruck
kann mittels Galoisfeldmultiplizierern, komponentenweiser XOR-Verknüpfungen und/oder Potenzbildnern im Galoisfeld implementiert werden.
-
Ein binärer Ausgang der Fehlererkennungseinheit trägt das Signal det4 zur 4-Bitfehler-Erkennung und wird sowohl mit einem jeweils zweiten 1-Bit breiten Eingang der UND-Gatter 161, 162, ..., 1630 verbunden, als auch in den jeweils 1-Bit breiten Kontrolleingang der Multiplexer MUX 141, 142 und 143 geführt.
-
Der erste Ausgang des BCH-Decoders DEC BCH
15 trägt die binäre Komponente e
0 des Korrekturvektors und ist in einen zweiten binären Eingang des XOR-Gatters
181 und in den ersten Eingang des UND-Gatters
161 geführt, wobei der Ausgang des UND-Gatters
161 mit einem ersten Eingang des ODER-Gatters
171 verbunden ist. Die erste binäre Komponente
des möglicherweise fehlerhaften Wortes v' liegt am ersten Eingang des XOR-Gatters
181 an, an dessen Ausgang die erste Komponente
des korrigierten Wortes v
cor erzeugt wird.
-
Für i = 2,3,..., 30 trägt der i-te Ausgang des BCH-Decoders DEC BCH
15 die binäre Komponente e
i-1 des Korrekturvektors und ist in einen zweiten Eingang des ODER-Gatters
17(i-
1) und in den ersten Eingang des UND-Gatters 16
i geführt, wobei der Ausgang des UND-Gatters 16
i mit einem ersten Eingang des ODER-Gatters
17i verbunden ist. Der Ausgang des ODER-Gatters
17(i -
1) ist mit dem zweiten Eingang des XOR-Gatters
18i verbunden, wobei an dessen ersten Eingang die i-te Komponente
des Wortes v' anliegt. Die i-te Komponente
des korrigierten Wortes wird am binären Ausgang des XOR-Gatters
18i ausgegeben.
-
Der letzte Ausgang des BCH-Decoders DEC BCH
15 trägt die binäre Komponente e
30 und ist mit dem zweiten Eingang des ODER-Gatters
1730 verbunden. Der Ausgang des ODER-Gatters
1730 ist in einen zweiten Eingang des XOR-Gatters
1831 geführt, an dessen erstem Eingang die binäre Komponente
des Wortes v' anliegt. Der Ausgang des XOR-Gatters
1831 trägt das Signal
-
Hierbei sei angemerkt, dass die Notation
16i mit i =
1,... ,30 meint, dass
30 UND-Gatter vorgesehen sind, die die Bezugszeichen
tragen. Insoweit stellt die Ziffernfolge
16 einen ersten Teil des Bezugszeichen, der mit einem zweiten Teil i des Bezugszeichens verkettet (konkateniert) wird. Dies gilt entsprechend für die ODER-Gatter
17i sowie die XOR-Gatter
18i.
-
Liegt ein 1-Bitfehler, 2-Bitfehler oder 3-Bitfehler vor, ist det4 = 0 und die 0-Eingänge der Multiplexer MUX 141, 142 und 143, die die unveränderten Teilsyndrome s1, s3, s5 tragen, werden an die zugehörigen Eingänge des BCH-Decoders DEC BCH 15 weitergeleitet.
-
Liegt ein
4-Bitfehler vor, ist det
4 =
1 und die
1-Eingänge der Multiplexer MUX
141,
142 und
143, die die modifizierten Teilsyndrome
tragen, werden an die zugehörigen Eingänge des BCH-Decoders DEC BCH
15 weitergeleitet.
-
Im Falle eines
4-Bitfehlers, der sich aus zwei benachbarten
2-Bitfehlern zusammensetzt, ist das binäre Wort v' in vier Bitpositionen i, (i +
1) und j, (j +
1) für i, j ∈ {0,1,..., 29} gestört. Der Syndromgenerator SG
11 erzeugt dann an seinen Ausgängen das Fehlersyndrom
dessen Teilsyndrome s
1, s
3 und s
5 durch die Konstantenmultiplizierer
131,
132 und
133 modifiziert werden. Die Konstantenmultiplizierer
131,
132 und
133 sind so konfiguriert, dass die unveränderten Teilsyndrome s
1, s
3 und s
5, die dem Fehlersyndrom eines
4-Bitfehlers in den Bitpositionen [i, (i +
1), j, (j +
1)] entsprechen, auf die modifizierten Teilsyndrome
abgebildet werden, die dem Fehlersyndrom eines
2-Bitfehlers in den Bitpositionen [i, j] entsprechen, wie das in den nachfolgenden Gleichungen gezeigt ist:
-
Beispiel: Korrektur spezieller 4-Bitfehler, die sich aus zwei benachbarten 2-Bitfehlern in ungeraden Bitpositionen zusammensetzen
-
In einem weiteren Beispiel wird gezeigt, wie unter Verwendung eines BCH-Codes zur Korrektur beliebiger 1-Bitfehler, 2-Bitfehler und 3-Bitfehler eine Korrektur spezieller 4-Bitfehler erfolgen kann, die sich aus zwei benachbarten 2-Bitfehlern in ungeraden Bitpositionen zusammensetzen.
-
3 zeigt eine schematische Schaltungsanordnung, die weitgehend der in 2 gezeigten Schaltungsanordnung entspricht. Im Unterschied zu 2 entfallen in 3 für j = 2,4,6,...,30 die UND-Gatter 16j und die ODER-Gatter 17j. Der 1-Bit breite Ausgang det4 der Fehlererkennungseinheit FE 12 ist somit nur mit dem ersten Eingang der UND-Gatter 16(j - 1) verbunden.
-
Für i = 1,3,5,...,29 trägt der i-te Ausgang des BCH-Decoders DEC BCH
15 die binäre Komponente e
i-1 des Korrekturvektors und ist in einen zweiten Eingang des XOR-Gatters
18i und in den ersten Eingang des UND-Gatters
16i geführt, wobei der Ausgang des UND-Gatters
16i mit dem ersten Eingang des ODER-Gatters
17i verbunden ist. Während am ersten Eingang des XOR-Gatters
18i die i-te Komponente
des gestörten binären Wortes v' anliegt, wird an dessen Ausgang die i-te Komponente
des korrigierten Wortes erzeugt.
-
Der (i + 1)-te Ausgang des BCH-Decoders DEC BCH 15 trägt die binäre Komponente ei des Korrekturvektors und ist in den zweiten Eingang des ODER-Gatters 17i geführt.
-
Der Ausgang des ODER-Gatters
17i ist mit dem zweiten Eingang des XOR-Gatters
18(i +
1) verbunden, wobei an dessen ersten Eingang die (i +1)-te Komponente
des Wortes v' anliegt. Die (i +
1)-te Komponente
des korrigierten Wortes wird am binären Ausgang des XOR-Gatters
18(i +
1) ausgegeben.
-
Der letzte Ausgang des BCH-Decoders DEC BCH
15 trägt die binäre Komponente e
30 und ist mit dem zweiten Eingang des XOR-Gatters
1831 verbunden, an dessen erstem Eingang die binäre Komponente
des Wortes v' anliegt. Der Ausgang des XOR-Gatters
1831 trägt das Signal
-
Durch die vorgenommenen Änderungen an der Schaltungsanordnung von 3 können derartige 4-Bitfehler korrigiert werden, die sich aus zwei benachbarten 2-Bitfehlern zusammensetzen, und das binäre Wort v' in den vier Bitpositionen i, (i + 1), j, (j + 1) für i, j ∈ {0,2,...,28} stören.
-
Die Schaltungsanordnung gemäß 3 erfordert einen geringeren Schaltungsaufwand als die in 2 gezeigte Schaltungsanordnung. Die Schaltungsanordnung gemäß 3 setzt voraus, dass benachbarte 2-Bitfehler nur an bestimmten Bitpositionen auftreten. Dies ist beispielsweise dann der Fall, wenn Speicherzellen verwendet werden, bei denen vier verschiedene interne Zustände unterschieden werden können. Ein Fehler des internen Zustandes kann zu einem benachbarten 2-Bitfehler in den beiden Bitpositionen führen, die der fehlerhaften Speicherzelle entsprechen.
-
Beispiel: Korrektur spezieller 6-Bitfehler, die aus drei benachbarten 2-Bitfehlern bestehen
-
Nachfolgend wird veranschaulicht, wie unter Verwendung eines 5-Bitfehler korrigieren BCH-Codes eine Korrektur spezieller 6-Bitfehler erfolgen kann, die sich aus drei benachbarten 2-Bitfehlern zusammensetzen. In Gleichung (58) ist die Prüfmatrix eines 5-Bitfehler korrigierenden BCH-Codes mit einbezogener Gesamtparität in separierter Form für m = 5 und n = 31 dargestellt, wobei der verwendete BCH-Code eine minimale Hamming-Distanz d
min = 12 aufweist.
-
Die Potenzen von αi sind dabei modulo (25 - 1) = 31 zu interpretieren. Die letzte Zeile der H-Matrix (58) besteht aus lauter Einsen. Durch diese Zeile ist die Gesamtparität P bestimmt.
-
Zur besseren Übersichtlichkeit sind die einzelnen Elemente der Teilmatrizen H
1, H
3, H
5, H
7 und H
9 in der nachfolgenden Gleichung (59) durch ihre Potenz dargestellt.
-
Unter Verwendung der in
1 gezeigten Tabelle kann die binäre Prüfmatrix H aufgestellt werden, indem die in Gleichung (59) für die Teilmatrizen H
1, H
3, H
5, H
7 und H
9 vorhandenen Potenzen der Elemente durch ihre zugehörige Vektordarstellung als Spaltenvektoren ersetzt werden. Die binäre Prüfmatrix H ergibt sich dann zu
-
4 zeigt eine Schaltungsanordnung umfassend einen Syndromgenerator SG 41 mit n = 31 binären Eingängen und (5·5 + 1 = 26) binären Ausgängen, eine Fehlererkennungseinheit FE 42 mit (5·5 + 1 = 26) binären Eingängen und einem binären Ausgang, Konstantenmultiplizierer 431 bis 435 mit jeweils 5 binären Eingängen und 5 binären Ausgängen, Multiplexer MUX 441 bis 445 mit jeweils (2·5 + 1) = 11 binären Eingängen und 5 binären Ausgängen, einen BCH-Decoder DEC BCH 45 mit (5 · 5) = 25 binären Eingängen und n = 31 binären Ausgängen, 30 UND-Gatter 461 bis 4630 mit jeweils 2 binären Eingängen und einem binären Ausgang, 30 ODER-Gatter 471 bis 4730 mit jeweils 2 binären Eingängen und einem binären Ausgang und 31 XOR-Gatter 481 bis 4831 mit jeweils 2 binären Eingängen und einem binären Ausgang.
-
Der Syndromgenerator SG
41 weist n =
31 binäre Eingänge auf, in die das möglicherweise fehlerhafte Binärwort
geführt ist. An seinem
26-Bit breiten Ausgang gibt der Syndromgenerator SG
41 ein Fehlersyndrom
der Wortbreite (5·5 +
1) aus. Dabei ist der Syndromgenerator SG
41 so konfiguriert, dass er die Komponenten des Fehlersyndroms s auf Basis der Prüfmatrix H gemäß der Gleichung (60) so bestimmt, dass gilt:
-
Für i = 1, 2,..., 5 sind die i-ten 5 binären Ausgänge des Syndromgenerators SG 41, die das Teilsyndrom s2i-1 tragen, in die i-ten 5 binären Eingänge der Fehlererkennungseinheit FE 42, in den 5-Bit breiten 0-Eingang des Multiplexers MUX 44i und in den 5-Bit breiten Eingang des Konstantenmultiplizierers 43i geführt.
-
Der Konstantenmultiplizierer
43i ist so konfiguriert, dass er ein modifiziertes Teilsyndrom
an seinen
5 binären Ausgängen erzeugt, die in den
5-Bit breiten
1-Eingang des Multiplexers MUX
44i geführt sind. Der
5-Bit breite Ausgang des Multiplexers MUX
44i ist mit den i-ten
5 binären Eingängen des BCH-Decoders DEC BCH
45 verbunden.
-
Der BCH-Decoder DEC BCH 45 erzeugt auf Basis der Syndromkomponenten s1, s3, ..., s9 einen Korrekturvektor e = (e0, e1,...,e30) an seinen 31 binären Ausgängen. Dabei ist der BCH-Decoder DEC BCH 45 so konfiguriert, dass, wenn die an den Eingängen bereitgestellten Teilsyndrome dem Fehlersyndrom eines i-Bitfehlers in den Bitpositionen b1, b2,..., bi mit 0 ≤ b1 < b2 < ··· < bi ≤ 30 entsprechen, ein Korrekturvektor e = (e0, e1,...,e30) erzeugt wird, der in den Komponenten eb
1 , eb
2 ,... ,eb
i . eine binäre 1 und in allen anderen Komponenten eine binäre 0 aufweist. Zeigen die Teilsyndrome keinen Fehler an und gilt s1 = s3 = ··· = s9 = 0, so wird ein Korrekturvektor e = (e0,e2, ..., e30) = (0, 0,..., 0) an den Ausgängen des BCH-Decoders DEC BCH 45 erzeugt.
-
Der binäre Ausgang des Syndromgenerators SG 41, der das 1-Bit breite Teilsyndrom sp trägt, ist mit einem binären Eingang der Fehlererkennungseinheit FE 42 verbunden.
-
Die Fehlererkennungseinheit FE
42 ist so konfiguriert, dass in Abhängigkeit von den Teilsyndromen s
1, s
3, ..., s
9, s
p ein
1-Bit breites Fehlererkennungssignal det
6 an ihrem Ausgang erzeugt wird, wobei det
6 genau dann
1 ist, wenn das binäre Wort v' durch einen
6-Bitfehler gestört ist. Die Fehlererkennung kann in diesem Beispiel durch Berechnung der Determinante
erfolgen. Gilt Det
so ist das gestörte Binärwort v' durch einen
5-Bitfehler oder durch einen
6-Bitfehler gestört. Ist s
p =
1, handelt es sich um einen
5-Bitfehler; ist s
p =
0, handelt es sich um einen
6-Bitfehler.
-
Für das Fehlererkennungssignal det6 gilt entsprechend:
- - det6 = 1 genau dann, wenn Det
-
Der algebraische Ausdruck, der sich durch die Entwicklung der Determinante Det
ergibt, kann mit Hilfe von Galoisfeldmultiplizierern, komponentenweiser XOR-Verknüpfungen und/oder Potenzbildnern im Galoisfeld implementiert und mit Hilfe von Synthesetools optimiert werden.
-
Der Ausgang der Fehlererkennungseinheit FE 42 trägt das Signal det6 zur 6-Bitfehler-Erkennung und wird sowohl mit einem jeweils zweiten 1-Bit breiten Eingang der UND-Gatter 461, 462, ..., 4630 verbunden, als auch in den jeweils 1-Bit breiten Kontrolleingang der Multiplexer MUX 441, 442, ..., 445 geführt.
-
Der erste Ausgang des BCH-Decoders DEC BCH
45 trägt die binäre Komponente e
0 des Korrekturvektors und ist in einen zweiten binären Eingang des XOR-Gatters
481 und in einen ersten Eingang des UND-Gatters
461 geführt, wobei der Ausgang des UND-Gatters
461 mit einem ersten Eingang des ODER-Gatters
471 verbunden ist. Die erste binäre Komponente
des möglicherweise fehlerhaften Wortes v' liegt an einem ersten Eingang des XOR-Gatters
481 an, an dessen Ausgang die erste Komponente
des korrigierten Wortes v
cor erzeugt wird.
-
Für i = 2,3,..., 30 trägt der i-te Ausgang des BCH-Decoders DEC BCH
45 die binäre Komponente e
i-1 des Korrekturvektors und ist in einen zweiten Eingang des ODER-Gatters
47(i -
1) und in den ersten Eingang des UND-Gatters
46i geführt, wobei der Ausgang des UND-Gatters
46i mit einem ersten Eingang des ODER-Gatters
47i verbunden ist. Der Ausgang des ODER-Gatters
47(i -
1) ist mit einem zweiten Eingang des XOR-Gatters
48i verbunden, wobei an dessen ersten Eingang die i-te Komponente
des Wortes v' anliegt. Die i-te Komponente
des korrigierten Wortes wird am binären Ausgang des XOR-Gatters
48i ausgegeben.
-
Der letzte Ausgang des BCH-Decoders DEC BCH
45 trägt die binäre Komponente e
30 und ist mit dem zweiten Eingang des ODER-Gatters
4730 verbunden. Der Ausgang des ODER-Gatters
4730 ist in einen zweiten Eingang des XOR-Gatters
4831 geführt, an dessen erstem Eingang die binäre Komponente
des Wortes v' anliegt. Der Ausgang des XOR-Gatters
4831 trägt das Signal
-
Liegt ein 1-Bitfehler, 2-Bitfehler, 3-Bitfehler, 4-Bitfehler oder 5-Bitfehler vor, ist det6 = 0 und die 0-Eingänge der Multiplexer MUX 441, 442, ..., 445, die die unveränderten Teilsyndrome s1, s3, ..., s9 tragen, werden an die zugehörigen Eingänge des BCH-Decoders DEC BCH 45 weitergeleitet.
-
Liegt ein
6-Bitfehler vor, ist det
6 =
1 und die
1-Eingänge der Multiplexer MUX
441,
442, ...,
445, die die modifizierten Teilsyndrome
tragen, werden an die zugehörigen Eingänge des BCH-Decoders DEC BCH
45 weitergeleitet.
-
Im Falle eines
6-Bitfehlers, der sich aus drei benachbarten
2-Bitfehlern zusammensetzt, ist das binäre Wort v' in sechs Bitpositionen
für i, j, k ∈ {0,1, ... , 29} gestört. Der Syndromgenerator SG
41 erzeugt dann an seinen Ausgängen das Fehlersyndrom
dessen Teilsyndrome s
1, s
3, ..., s
9 durch die Konstantenmultiplizierer
431 bis
435 modifiziert werden.
-
Die Konstantenmultiplizierer
431,
432, ...,
435 sind so konfiguriert, dass die unveränderten Teilsyndrome s
1, s
3, ..., s
9, die dem Fehlersyndrom eines
6-Bitfehlers in den Bitpositionen [i, (i +
1), j, (j +
1), k, (k +
1)] entsprechen, auf die modifizierten Teilsyndrome
abgebildet werden, die dem Fehlersyndrom eines
3-Bitfehlers in den Bitpositionen [i, j, k] entsprechen, wie das in den nachfolgenden Gleichungen gezeigt ist:
-
Beispiel: Korrektur spezieller 6-Bitfehler, die aus zwei benachbarten 3-Bitfehlern bestehen
-
In einem weiteren Beispiel wird gezeigt, wie unter Verwendung eines BCH-Codes zur Korrektur beliebiger 1-Bit-, 2-Bit-, ..., 5-Bitfehler, eine Korrektur spezieller 6-Bitfehler erfolgen kann, die sich aus zwei benachbarten 3-Bitfehlern zusammensetzen.
-
5 zeigt eine beispielhafte Schaltungsanordnung, die auf der in
4 dargestellten Schaltungsanordnung basiert.
5 unterscheidet sich von
4 insoweit, dass für i = 1,2,...,5 der Konstantenmultiplizierer
43i durch den Konstantenmultiplizierer
53i ersetzt wurde, wobei die Konstantenmultiplizierer
53i so konfiguriert sind, dass ein modifiziertes Teilsyndrom
an dessen jeweiligen
5 binären Ausgängen erzeugt wird.
-
Weiterhin wurden für j = 2,3,..., 30 die ODER-Gatter 47j durch ODER-Gatter 57j mit drei binären Eingängen und einem binären Ausgang ersetzt. Das ODER-Gatter 471 hat unverändert zwei binäre Eingänge.
-
Weiterhin weist 5 im Unterschied zu 4 die folgenden Veränderungen auf:
- Der erste Ausgang des BCH-Decoders DEC BCH 45 trägt die binäre Komponente e0 des Korrekturvektors e und ist in einen zweiten binären Eingang des XOR-Gatters 481 und in den ersten Eingang des UND-Gatters 461 geführt, wobei der Ausgang des UND-Gatters 461 mit einem jeweils ersten Eingang der ODER-Gatter 471 und 572 verbunden ist. Die erste binäre Komponente
des möglicherweise fehlerhaften Wortes v' liegt an einem ersten Eingang des XOR-Gatters 481 an, an dessen Ausgang die erste Komponente
des korrigierten Wortes vcor erzeugt wird.
-
Der zweite Ausgang des BCH-Decoders DEC BCH 45 trägt die binäre Komponente e1 des Korrekturvektors e und ist mit einem zweiten binären Eingang des ODER-Gatters 471 und mit einem ersten Eingang des UND-Gatters 462 verbunden, wobei der Ausgang des UND-Gatters 462 mit einem zweiten Eingang des ODER-Gatters 572 und mit einem ersten Eingang des ODER-Gatters 573 verbunden ist.
-
Der Ausgang des ODER-Gatters
471 ist mit einem zweiten Eingang des XOR-Gatters
482 verbunden. Die zweite binäre Komponente
des möglicherweise fehlerhaften Wortes v' liegt an einem ersten Eingang des XOR-Gatters
482 an, an dessen Ausgang die zweite Komponente
des korrigierten Wortes v
cor erzeugt wird.
-
Für i = 3,...,29 trägt der i-te Ausgang des BCH-Decoders DEC BCH 45 die binäre Komponente ei-1 des Korrekturvektors e und ist in einen dritten Eingang des ODER-Gatters 57(i - 1) und in einen ersten Eingang des UND-Gatters 46i geführt, wobei der Ausgang des UND-Gatters 46i mit einem zweiten Eingang des ODER-Gatters 57i und mit einem ersten Eingang des ODER-Gatters 57(i + 1) verbunden ist.
-
Der Ausgang des ODER-Gatters
57(i -
1) ist mit einem zweiten Eingang des XOR-Gatters
48i verbunden, wobei an dessen ersten Eingang die i-te Komponente
des Wortes v' anliegt. Die i-te Komponente
des korrigierten Wortes wird am binären Ausgang des XOR-Gatters
48i ausgegeben.
-
Der vorletzte Ausgang des BCH-Decoders DEC BCH 45 trägt die binäre Komponente e29 des Korrekturvektors e und ist in einen dritten Eingang des ODER-Gatters 5729 und in einen ersten Eingang des UND-Gatters 4630 geführt, wobei der Ausgang des UND-Gatters 4630 mit einem zweiten Eingang des ODER-Gatters 5730 verbunden ist.
-
Der Ausgang des ODER-Gatters
5729 ist mit einem zweiten Eingang des XOR-Gatters
4830 verbunden, wobei an dessen ersten Eingang die
30-te Komponente
des Wortes v' anliegt. Die
30-te Komponente
des korrigierten Wortes wird am binären Ausgang des XOR-Gatters
4830 ausgegeben.
-
Der letzte Ausgang des BCH-Decoders DEC BCH
45 trägt die binäre Komponente e
30 und ist mit einem dritten Eingang des ODER-Gatters
5730 verbunden. Der Ausgang des ODER-Gatters
5730 ist in einen zweiten Eingang des XOR-Gatters
4831 geführt, an dessen erstem Eingang die binäre Komponente
des Wortes v' anliegt. Der Ausgang des XOR-Gatters
4831 trägt das Signal
-
Durch die in
5 gegenüber
4 gezeigten Änderungen können statt drei benachbarten
2-Bitfehlern nun zwei benachbarte
3-Bitfehler korrigiert werden. Im Falle eines
6-Bitfehlers, der sich aus zwei benachbarten
3-Bitfehlern zusammensetzt, ist das gestörte binäre Wort v' an sechs Bitpositionen
für i, j ∈ {0,1,...,28} gestört. Der Syndromgenerator SG
41 erzeugt dann an seinen Ausgängen das Fehlersyndrom
dessen Teilsyndrome s
1, s
3, ..., s
9 durch die Konstantenmultiplizierer
531 bis
535 modifiziert werden.
-
Die Konstantenmultiplizierer
531 bis
535 sind so konfiguriert, dass die unveränderten Teilsyndrome s
1, s
3, ..., s
9, die dem Fehlersyndrom eines
6-Bitfehlers an den Bitpositionen [i, (i +
1), (i +
2), j, (j +
1), (j +
2)] entsprechen, auf die modifizierten Teilsyndrome
abgebildet werden, die dem Fehlersyndrom eines
2-Bitfehlers in den Bitpositionen [i, j] entsprechen, wie das in den nachfolgenden Gleichungen gezeigt ist:
-
Beispiel: Korrektur benachbarter 3-Bitfehler mittels Teilschaltung DEC (H1)
-
Nachfolgend wird gezeigt, wie unter Verwendung eines BCH-Codes zur Korrektur von 1-Bitfehlern und 2-Bitfehlern und durch Nutzung einer Teilschaltung DEC (H1) eine Korrektur benachbarter 3-Bitfehler erfolgen kann.
-
Gemäß der nachfolgend dargestellten Gleichung (67) ist die Prüfmatrix eines 2-Bitfehler korrigierenden BCH-Codes mit einbezogener Gesamtparität in separierter Form für m = 5 und n = 31 dargestellt. Der hier verwendete BCH-Code weist eine minimale Hamming-Distanz d
min = 6 auf.
-
Die Potenzen von αi sind dabei modulo (25 - 1) = 31 zu interpretieren. Die letzte Zeile der H-Matrix gemäß Gleichung (67) besteht aus lauter Einsen. Durch diese Zeile ist die Gesamtparität P bestimmt.
-
Zur besseren Übersichtlichkeit sind die einzelnen Elemente der Teilmatrizen H
1 und H
3 in der nachfolgenden Gleichung (68) durch ihre Potenz dargestellt.
-
Unter Verwendung der in
1 gezeigten Tabelle kann die binäre Prüfmatrix H aufgestellt werden, indem die in Gleichung (68) für die Teilmatrizen H
1 und H
3 aufgelisteten Potenzen der Elemente durch ihre zugehörige Vektordarstellung als Spaltenvektoren ersetzt werden. Die binäre Prüfmatrix H ergibt sich dann zu
-
6 zeigt eine Schaltungsanordnung umfassend einen Syndromgenerator SG 61 mit n = 31 binären Eingängen und 2 · 5 + 1 = 11 binären Ausgängen, eine Fehlererkennungseinheit FE 62 mit (2 · 5 + 1) = 11 binären Eingängen und einem binären Ausgang, einen Konstantenmultiplizierer 63 mit 5 binären Eingängen und 5 binären Ausgängen, einen BCH-Decoder DEC BCH 64 mit (2·5) = 10 binären Eingängen und n = 31 binären Ausgängen, eine Teilschaltung DEC (H1) 65 mit 5 binären Eingängen und n = 31 binären Ausgängen, einen Multiplexer 66 mit (2·31+1) = 63 binären Eingängen und 31 binären Ausgängen, 30 UND-Gatter 671 bis 6730 mit jeweils 2 binären Eingängen und einem binären Ausgang, ein ODER-Gatter 681 mit 2 binären Eingängen und einem binären Ausgang, 29 ODER-Gatter 682 bis 6830 mit jeweils 3 binären Eingängen und einem binären Ausgang und 31 XOR-Gatter 691 bis 6931 mit jeweils 2 binären Eingängen und einem binären Ausgang.
-
Der Syndromgenerator SG
61 weist n =
31 binäre Eingänge auf, in die das möglicherweise fehlerhafte Binärwort
geführt ist. An seinem
11-Bit breiten Ausgang gibt der Syndromgenerator SG
61 ein Fehlersyndrom
der Wortbreite (2·5 +
1) aus. Dabei ist der Syndromgenerator SG
61 so konfiguriert, dass er die Komponenten des Fehlersyndroms s auf Basis der Prüfmatrix H (
69) so bestimmt, dass gilt:
-
Für i = 1, 2 sind die i-ten 5 binären Ausgänge des Syndromgenerators SG 61, die das Teilsyndrom s2i-1 tragen, in die i-ten 5 binären Eingänge der Fehlererkennungseinheit FE 62, und in die i-ten 5 binären Eingänge des BCH-Decoder DEC BCH 64 geführt.
-
Der BCH-Decoder DEC BCH
64 erzeugt auf Basis der Syndromkomponenten s
1 und s
3 einen Korrekturvektor
an seinen
31 binären Ausgängen. Dabei ist der BCH-Decoder DEC BCH
64 so konfiguriert, dass wenn die an den Eingängen bereitgestellten Teilsyndrome s
1, und s
3 dem Fehlersyndrom eines i-Bitfehlers in den Bitpositionen b
1, b
2, ..., b
i mit
0 ≤ b
1 < b
2 < ··· < b
i ≤
30 entsprechen, ein Korrekturvektor e' erzeugt wird, der in den Komponenten
eine binäre
1 und in allen anderen Komponenten eine binäre
0 aufweist. Zeigen die Teilsyndrome keinen Fehler an und gilt s
1 = s
3 =
0, so wird ein Korrekturvektor
an den Ausgängen des BCH-Decoders DEC BCH
64 erzeugt.
-
Die ersten
5 binären Ausgänge des Syndromgenerators SG
61, die das Teilsyndrom s
1 tragen, sind zusätzlich mit dem
5-Bit breiten Eingang des Konstantenmultiplizierers
63 verbunden. Der Konstantenmultiplizierer
63 ist so konfiguriert, dass er ein modifiziertes Teilsyndrom
an seinen
5 binären Ausgängen erzeugt, die in den
5-Bit breiten Eingang der Teilschaltung DEC (H
1)
65 geführt sind.
-
Die Teilschaltung DEC (H
1)
65 basiert auf der Teilmatrix H
1 von Gleichung (69) und erzeugt auf Basis der Syndromkomponente s
1, einen Korrekturvektor
an ihren
31 binären Ausgängen.
-
Die Teilschaltung DEC (H
1)
65 ist so konfiguriert, dass, wenn das Teilsyndrom s
1, dem Fehlersyndrom eines
1-Bitfehlers in der Bitposition b mit
0 ≤ b ≤
30 entspricht, ein Korrekturvektor e'' erzeugt wird, der in der Komponente
eine binäre
1 und in allen anderen Komponenten eine binäre
0 aufweist. Zeigt das Teilsyndrom s
1 keinen Fehler an und gilt s
1 =
0, so wird ein Korrekturvektor
an den Ausgängen der Teilschaltung DEC (H
1)
65 erzeugt.
-
Der binäre Ausgang des Syndromgenerators SG 61, der das 1-Bit breite Teilsyndrom sp trägt, ist mit einem binären Eingang der Fehlererkennungseinheit FE 62 verbunden.
-
Die Fehlererkennungseinheit FE
62 ist so konfiguriert, dass in Abhängigkeit von den Teilsyndromen s
1, s
3, s
p ein
1-Bit breites Fehlererkennungssignal det
3 an ihrem Ausgang erzeugt wird, das genau dann gleich
1 ist, wenn das binäre Wort v' durch einen
3-Bitfehler gestört ist. Die Fehlererkennung kann in diesem Beispiel durch Prüfung der Bedingungen
erfolgen.
-
Im Falle eines
1-Bitfehler ist
bei einem
2-Bitfehler gilt
und bei einem
3-Bitfehler ergibt sich
-
Für das Fehlererkennungssignal gilt also:
- - det3 = 1 genau dann, wenn
und sp = 1
-
Der algebraische Ausdruck
kann mit Hilfe von Galoisfeldmultiplizierern oder Potenzbildnern im Galoisfeld implementiert werden.
-
Der 31-Bit breite Ausgang des BCH-Decoders DEC BCH 64, der den Korrekturvektor e' trägt, ist in den 31-Bit breiten 0-Eingang des Multiplexers MUX 66 geführt, während der 31-Bit breite Ausgang der Teilschaltung DEC (H1) 65, der den Korrekturvektor e'' trägt, mit dem 31-Bit breiten 1-Eingang des Multiplexers MUX 66 verbunden ist.
-
Der binäre Ausgang der Fehlererkennungseinheit FE 62 trägt das Signal det3 zur 3-Bitfehler-Erkennung und wird sowohl mit einem jeweils zweiten 1-Bit breiten Eingang der UND-Gatter 671 bis 6730 verbunden, als auch in den 1-Bit breiten Kontrolleingang des Multiplexers MUX 66 geführt.
-
Der erste Ausgang des Multiplexers MUX
66 trägt die binäre Komponente e
0 des Korrekturvektors e und ist in einen zweiten binären Eingang des XOR-Gatters
691 und in einen ersten Eingang des UND-Gatters
671 geführt, wobei der Ausgang des UND-Gatters
671 mit einem jeweils ersten Eingang der ODER-Gatter
681 und
682 verbunden ist. Die erste binäre Komponente
des möglicherweise fehlerhaften Wortes v' liegt an einem ersten Eingang des XOR-Gatters
691 an, an dessen Ausgang die erste Komponente
des korrigierten Wortes v
cor erzeugt wird.
-
Der zweite Ausgang des Multiplexers MUX 66 trägt die binäre Komponente e1 des Korrekturvektors e und ist mit einem zweiten binären Eingang des ODER-Gatters 681 und mit einem ersten Eingang des UND-Gatters 672 verbunden, wobei der Ausgang des UND-Gatters 672 mit einem zweiten Eingang des ODER-Gatters 682 und mit einem ersten Eingang des ODER-Gatters 683 verbunden ist.
-
Der Ausgang des ODER-Gatters
681 ist mit einem zweiten Eingang des XOR-Gatters
692 verbunden. Die zweite binäre Komponente
des möglicherweise fehlerhaften Wortes v' liegt an einem ersten Eingang des XOR-Gatters
692 an, an dessen Ausgang die zweite Komponente
des korrigierten Wortes v
cor erzeugt wird.
-
Für i = 3,...,29 trägt der i-te Ausgang des Multiplexers MUX 66 die binäre Komponente ei-1 des Korrekturvektors e und ist in einen dritten Eingang des ODER-Gatters 68(i-1) und in einen ersten Eingang des UND-Gatters 67i geführt, wobei der Ausgang des UND-Gatters 67i mit einem zweiten Eingang des ODER-Gatters 68i und mit einem ersten Eingang des ODER-Gatters 68(i+1) verbunden ist.
-
Der Ausgang des ODER-Gatters
68(i -
1) ist mit einem zweiten Eingang des XOR-Gatters
69i verbunden, wobei an dessen ersten Eingang die i-te Komponente
des Wortes v' anliegt. Die i-te Komponente
des korrigierten Wortes wird an dem binären Ausgang des XOR-Gatters
69i ausgegeben.
-
Der vorletzte Ausgang des Multiplexers MUX 66 trägt die binäre Komponente e29 des Korrekturvektors e und ist in einen dritten Eingang des ODER-Gatters 6829 und in einen ersten Eingang des UND-Gatters 6730 geführt, wobei der Ausgang des UND-Gatters 6730 mit einem zweiten Eingang des ODER-Gatters 6830 verbunden ist.
-
Der Ausgang des ODER-Gatters
6829 ist mit einem zweiten Eingang des XOR-Gatters
6930 verbunden, wobei an dessen ersten Eingang die
30-te Komponente
des Wortes v' anliegt. Die
30-te Komponente
des korrigierten Wortes wird am binären Ausgang des XOR-Gatters
6930 ausgegeben.
-
Der letzte Ausgang des Multiplexers MUX
66 trägt die binäre Komponente e
30 und ist mit einem dritten Eingang des ODER-Gatters
6830 verbunden. Der Ausgang des ODER-Gatters
6830 ist in einen zweiten Eingang des XOR-Gatters
6931 geführt, an dessen erstem Eingang die binäre Komponente
des Wortes v' anliegt. Der Ausgang des XOR-Gatters
6931 trägt das Signal
-
Liegt ein 1-Bitfehler oder ein 2-Bitfehler vor, ist det3 = 0 und der 0-Eingang des Multiplexers MUX 66, an dem der Korrekturvektor e' anliegt, ist mit dessen Ausgang verbunden; es gilt: e = e'.
-
Liegt ein 3-Bitfehler vor, ist det3 = 1 und der 1-Eingang des Multiplexers MUX 66, an dem der Korrekturvektor e'' anliegt, ist mit dessen Ausgang verbunden; es gilt: e = e''.
-
Im Falle eines benachbarten 3-Bitfehlers ist das gestörte binäre Wort v' in drei Bitpositionen i, (i + 1) und (i + 2) für i ∈ {0,1,..., 28} gestört. Der Syndromgenerator SG
61 erzeugt dann an seinen Ausgängen das Fehlersyndrom
dessen Teilsyndrom s
1 durch den Konstantenmultiplizierer
63 modifiziert wird. Der Konstantenmultiplizierer
63 ist so konfiguriert, dass das Teilsyndrom s
1 des Syndroms s, das dem Fehlersyndrom eines
3-Bitfehlers an den Bitpositionen [i, (i +
1), (i +
2)] entspricht, auf das modifizierte Teilsyndrom
abgebildet wird, das dem Fehlersyndrom eines
1-Bitfehlers an der Bitposition [i] entspricht, wie das in der nachfolgenden Gleichung gezeigt ist:
-
Beispiel: Korrektur von 4-Bitfehlern, die auf benachbarten 2-Bitfehlern basieren mittels Teilschaltung DEC (H1,H3)
-
Im folgenden Beispiel wird erläutert, wie unter Verwendung eines BCH-Codes zur Korrektur von 1-Bitfehlern, 2-Bitfehlern und 3-Bitfehlern und durch Nutzung einer Teilschaltung DEC (H1,H3) eine Korrektur von 4-Bitfehlern, die sich aus zwei benachbarten 2-Bitfehlern zusammensetzen, erfolgen kann.
-
Der verwendete BCH-Code basiert dabei auf der binären Prüfmatrix H gemäß der oben eingeführten Gleichung (52).
-
7 zeigt eine Schaltungsanordnung umfassend einen Syndromgenerator SG 71 mit n = 31 binären Eingängen und (3 · 5 + 1) = 16 binären Ausgängen, eine Fehlererkennungseinheit FE 72 mit (3 · 5 + 1) = 16 binären Eingängen und einem binären Ausgang, Konstantenmultiplizierer 731 und 732 mit jeweils 5 binären Eingängen und 5 binären Ausgängen, einen BCH-Decoder DEC BCH 74 mit (3 · 5) = 15 binären Eingängen und n = 31 binären Ausgängen, eine Teilschaltung DEC (H1, H3) 75 mit (2·5) = 10 binären Eingängen und n = 31 binären Ausgängen, einen Multiplexer 76 mit (2·31 + 1) = 63 binären Eingängen und 31 binären Ausgängen, 30 UND-Gatter 771 bis 7730 mit jeweils 2 binären Eingängen und einem binären Ausgang, 30 ODER-Gatter 781 bis 7830 mit jeweils 2 binären Eingängen und einem binären Ausgang und 31 XOR-Gatter 791 bis 7931 mit jeweils 2 binären Eingängen und einem binären Ausgang.
-
Der Syndromgenerator SG
71 weist n =
31 binäre Eingänge auf, in die das möglicherweise fehlerhafte Binärwort
geführt ist. An seinem
16-Bit breiten Ausgang gibt der Syndromgenerator SG
71 ein Fehlersyndrom s = (s
1, s
3, s
p) der Wortbreite (3·5 +
1) aus. Dabei ist der Syndromgenerator SG
71 so konfiguriert, dass er die Komponenten des Fehlersyndroms s auf Basis der Prüfmatrix H (
52) so bestimmt, dass gilt:
-
Für i = 1,2,3 sind die i-ten 5 binären Ausgänge des Syndromgenerators SG 71, die das Teilsyndrom s2i-1 tragen, in die i-ten 5 binären Eingänge der Fehlererkennungseinheit FE 72 und in die i-ten 5 binären Eingänge des BCH-Decoder DEC BCH 74 geführt.
-
Der BCH-Decoder DEC BCH
74 erzeugt auf Basis der Syndromkomponenten s
1, s
3 und s
5 einen Korrekturvektor
an seinen
31 binären Ausgängen. Dabei ist der BCH-Decoder DEC BCH
74 so konfiguriert, dass, wenn die Teilsyndrome dem Fehlersyndrom eines i-Bitfehlers in den Bitpositionen b
1, b
2,..., b
i mit
0 ≤ b
1 < b
2 < ··· < b
i ≤
30 entsprechen, ein Korrekturvektor e' erzeugt wird, der in den Komponenten
eine binäre
1 und in allen anderen Komponenten eine binäre
0 aufweist. Zeigen die Teilsyndrome keinen Fehler an und gilt s
1 = s
3 = s
5 =
0, so wird ein Korrekturvektor
an den Ausgängen des BCH-Decoders DEC BCH
74 erzeugt.
-
Die ersten 5 binären Ausgänge des Syndromgenerators SG 71, die das Teilsyndrom s1 tragen, sind zusätzlich mit dem 5-Bit breiten Eingang des Konstantenmultiplizierers 731 verbunden. Die zweiten 5 binären Ausgänge des Syndromgenerators SG 71, die das Teilsyndrom s3 tragen, sind zusätzlich mit dem 5-Bit breiten Eingang des Konstantenmultiplizierers 732 verbunden.
-
Für i =
1,
2 ist der Konstantenmultiplizierer
73i so konfiguriert, dass er ein modifiziertes Teilsyndrom
an seinen
5 binären Ausgängen erzeugt, die mit den i-ten
5 binären Eingängen der Teilschaltung DEC (H
1, H
3)
75 verbunden sind.
-
Die Teilschaltung DEC (H
1,H
3)
75 basiert auf den Teilmatrizen H
1 und H
3 von Gleichung (52) und erzeugt auf Basis der Syndromkomponenten
einen Korrekturvektor
an seinen
31 binären Ausgängen. Die Teilschaltung DEC (H
1,H
3)
75 ist so konfiguriert, dass, wenn die Teilsyndrome
dem Fehlersyndrom eines
2-Bitfehlers in den Bitpositionen b
1 und b
2 mit
0 ≤ b
1 < b
2 ≤
30 entsprechen, ein Korrekturvektor e'' erzeugt wird, der in den Komponenten
eine binäre
1 und in allen anderen Komponenten eine binäre
0 aufweist.
-
Der binäre Ausgang des Syndromgenerators SG 71, der das 1-Bit breite Teilsyndrom sp trägt, ist mit einem binären Eingang der Fehlererkennungseinheit FE 72 verbunden.
-
Die Fehlererkennungseinheit FE
72 ist so konfiguriert, dass in Abhängigkeit von den Teilsyndromen s
1, s
3, s
5, s
p ein
1-Bit breites Fehlererkennungssignal det
4 an ihrem Ausgang erzeugt wird, das genau dann gleich
1 ist, wenn das binäre Wort v' durch einen
4-Bitfehler gestört ist. Die Fehlererkennung kann in diesem Beispiel durch Prüfung der Bedingungen
erfolgen. Der algebraische Ausdruck
kann mit Hilfe von Galoisfeldmultiplizierern, Addierern und Potenzbildnern im Galoisfeld implementiert werden.
-
Die 31-Bit breite Ausgang des BCH-Decoders DEC BCH 74, der den Korrekturvektor e' trägt, ist in den 31-Bit breiten 0-Eingang des Multiplexers MUX 76 geführt, während der 31-Bit breite Ausgang der Teilschaltung DEC (H1,H3) 75, der den Korrekturvektor e'' trägt, mit dem 31-Bit breiten 1-Eingang des Multiplexers MUX 76 verbunden ist.
-
Der binäre Ausgang der Fehlererkennungseinheit FE 72 trägt das Signal det4 zur 4-Bitfehler-Erkennung und wird sowohl mit einem jeweils zweiten 1-Bit breiten Eingang der UND-Gatter 771 bis 7730 verbunden als auch in einen 1-Bit breiten Kontrolleingang des Multiplexers MUX 76 geführt.
-
Der erste Ausgang des Multiplexers MUX
76 trägt die binäre Komponente e
0 des Korrekturvektors und ist in einen zweiten binären Eingang des XOR-Gatters
791 und in einen ersten Eingang des UND-Gatters
771 geführt, wobei der Ausgang des UND-Gatters
771 mit einem ersten Eingang des ODER-Gatters
781 verbunden ist. Die erste binäre Komponente
des möglicherweise fehlerhaften Wortes v' liegt an einem ersten Eingang des XOR-Gatters
791 an, an dessen Ausgang die erste Komponente
des korrigierten Wortes v
cor erzeugt wird.
-
Für i = 2,3,..., 30 trägt der i-te Ausgang des Multiplexers MUX
76 die binäre Komponente e
i-1 des Korrekturvektors und ist in einen zweiten Eingang des ODER-Gatters
78(i -
1) und in einen ersten Eingang des UND-Gatters
77i geführt, wobei der Ausgang des UND-Gatters
77i mit einem ersten Eingang des ODER-Gatters
78i verbunden ist. Der Ausgang des ODER-Gatters
78(i -
1) ist mit einem zweiten Eingang des XOR-Gatters
79i verbunden, wobei an dessen ersten Eingang die i-te Komponente
des Wortes v' anliegt. Die i-te Komponente
korrigierten Wortes wird am binären Ausgang des XOR-Gatters
79i ausgegeben.
-
Der letzte Ausgang des Multiplexers MUX
76 trägt die binäre Komponente e
30 und ist mit einem zweiten Eingang des ODER-Gatters
7830 verbunden. Der Ausgang des ODER-Gatters
7830 ist in einen zweiten Eingang des XOR-Gatters
7931 geführt, an dessen erstem Eingang die binäre Komponente
des Wortes v' anliegt.
-
Der Ausgang des XOR-Gatters
7931 trägt das Signal
-
Liegt ein 1-Bitfehler, 2-Bitfehler oder 3-Bitfehler vor, ist det4 = 0 und der 0-Eingang des Multiplexers MUX 76, an dem der Korrekturvektor e' anliegt, ist mit dessen Ausgang verbunden; es gilt: e = e'.
-
Liegt ein 4-Bitfehler vor, ist det4 = 1 und der 1-Eingang des Multiplexers MUX 76, an dem der Korrekturvektor e'' anliegt, ist mit dessen Ausgang verbunden; es gilt: e = e''.
-
Im Falle eines
4-Bitfehlers, der sich aus zwei benachbarten
2-Bitfehlern zusammensetzt, ist das gestörte binäre Wort v' in vier Bitpositionen i, (i +
1) und j, (j +
1) für i, j ∈ {0,1,..., 29} gestört. Der Syndromgenerator SG
71 erzeugt dann an seinen Ausgängen das Fehlersyndrom
dessen Teilsyndrome s
1 und s
3 durch die Konstantenmultiplizierer
731 und
732 modifiziert werden. Die Konstantenmultiplizierer
731 und
732 sind so konfiguriert, dass die unveränderten Teilsyndrome, die dem Fehlersyndrom eines
4-Bitfehlers in den Bitpositionen [i, (i +
1), j, (j +
1)] entsprechen, auf die modifizierten Teilsyndrome
abgebildet werden, die dem Fehlersyndrom eines
2-Bitfehlers in den Bitpositionen [i, j] entsprechen, wie das in den nachfolgenden Gleichungen gezeigt ist:
-
Beispielhafte Implementierung einer Fehlererkennungsschaltung
-
8 zeigt eine mögliche Implementierung der Fehlererkennungsschaltung FE 12 aus 2 oder 3. 8 umfasst einen Dritte-Potenzbildner 81 mit 5 binären Eingängen und 5 binären Ausgängen, Galoisfeld-Quadrierer 821 und 822 mit jeweils 5 binären Eingängen und 5 binären Ausgängen, Galoisfeld-Multiplizierer 831 und 832 mit jeweils zwei 5-Bit breiten Eingängen und 5 binären Ausgängen, ODER-Gattern 841, 842, 843 und 844 mit jeweils 5 binären Eingängen und einem binären Ausgang, ein ODER-Gatter 845 mit 3 binären Eingängen und einem binären Ausgang, Galoisfeld-Addierern 851, 852 und 853 mit jeweils zwei 5-Bit breiten Eingängen und 5 binären Ausgängen zur komponentenweisen XOR-Verknüpfung ihrer Eingänge, UND-Gatter 861, 862 und 863 mit jeweils 2 binären Eingängen und einem binären Ausgang und ein UND-Gatter 864 mit 3 binären Eingängen und einem binären Ausgang.
-
Die ersten 5 binären Eingänge der Teilschaltung, die das Teilsyndrom s1 tragen, sind mit den 5 binären Eingängen des Dritte-Potenzbildners 81, mit einem ersten 5-Bit breiten Eingang des Multiplizierers 831 und den 5 binären Eingängen des ODER-Gatters 841 verbunden.
-
Die zweiten 5 binären Eingänge der Teilschaltung, die das Teilsyndrom s3 tragen, sind mit den 5 binären Eingängen des Quadrierers 821, mit einem zweiten 5-Bit breiten Eingang des Multiplizierers 832 und den 5 binären Eingängen des ODER-Gatters 842 verbunden.
-
Die dritten 5 binären Eingänge der Teilschaltung, die das Teilsyndrom s5 tragen, sind mit dem zweiten 5-Bit breiten Eingang des Multiplizierers 831 und den 5 binären Eingängen des ODER-Gatters 843 verbunden.
-
Der Ausgang des Dritte-Potenzbildners
81, der das Signal
trägt, ist in den ersten
5-Bit breiten Eingang des Multiplizierers
832 und die in die
5 binären Eingänge des Quadrierers
822 geführt, dessen Ausgang das Signal
trägt und mit einem ersten
5-Bit breiten Eingang des Addierers
853 verbunden ist.
-
Der Ausgang des Quadrierers
821 trägt das Signal
und ist in einen ersten
5-Bit breiten Eingang des Addierers
851 geführt, dessen zweiter
5-Bit breiter Eingang mit dem Ausgang des Galoisfeldmultiplizierers
831 verbunden ist.
-
Der Ausgang des Addierers
851 ist in einen zweiten
5-Bit breiten Eingang des Addierers
852 geführt. Der erste
5-Bit breite Eingang des Addierers
852 ist mit dem Ausgang des Galoisfeldmultiplizierers
832 verbunden. Der Ausgang des Addierers
852 ist in den zweiten
5-Bit breiten Eingang des Addierers
853 geführt, dessen Ausgang das Signal
trägt und mit den
5 binären Eingängen des ODER-Gatters
844 verbunden ist.
-
Für i = 1, 2, 3 ist der Ausgang der 1-Bit breite Ausgang des ODER-Gatters 84i in den i-ten Eingang des ODER-Gatters 845 geführt, dessen Ausgang mit einem dritten binären Eingang des UND-Gatters 864 verbunden ist.
-
Der Ausgang des ODER-Gatters 844 ist sowohl in einen jeweils negierten zweiten Eingang der UND-Gatter 861 und 864 geführt, als auch mit einem jeweils zweiten Eingang der UND-Gatter 862 und 863 verbunden.
-
Die letzte binäre Eingang der Teilschaltung, der das Teilsyndrom sp trägt, ist in den jeweils ersten Eingang der UND-Gatter 861 und 862 geführt, als auch mit einem jeweils negierten ersten Eingang der UND-Gatter 863 und 864 verbunden.
-
Das Signal det1 zur 1-Bitfehler-Erkennung wird am Ausgang des UND-Gatters 861 erzeugt, das Signal det2 zur 2-Bitfehler-Erkennung wird am Ausgang des UND-Gatters 864 erzeugt, das Signal det3 zur 3-Bitfehler-Erkennung wird am Ausgang des UND-Gatters 862 erzeugt und das Signal det4 zur 4-Bitfehler-Erkennung wird am Ausgang des UND-Gatters 863 erzeugt.
-
Obwohl die Erfindung im Detail durch das mindestens eine gezeigte Ausführungsbeispiel näher illustriert und beschrieben wurde, so ist die Erfindung nicht darauf eingeschränkt und andere Variationen können vom Fachmann hieraus abgeleitet werden, ohne den Schutzumfang der Erfindung zu verlassen.