-
Es ist bekannt, Fehler in Daten, die in Form von Bytes vorliegen, byteweise zu erkennen und byteweise zu korrigieren. Ein Byte kann dabei mindestens zwei Bit umfassen. Mindestens ein Fehler in mindestens einem Bit eines Bytes wird als ein Bytefehler bezeichnet. Ist mindestens ein Bit eines Bytes fehlerhaft, liegt ein Bytefehler vor. Ist nur mindestens ein Bit eines einzelnen Bytes fehlerhaft, entspricht dies einem 1-Bytefehler.
-
Die Korrektur von 1-Bytefehlern ist beispielsweise in [Bossen, D.: b-Adjacent Error Correction, IBM J. Res. Dev., July 1970, Seiten 402 bis 408] beschrieben.
-
Sind Bit von zwei unterschiedlichen Bytes fehlerhaft, entspricht dies einem 2-Bytefehler. Demnach gilt, dass ein k-Bytefehler vorliegt, wenn Bit in k Bytes fehlerhaft sind (d.h. mindestens ein Bit in jedem der k Bytes einen Fehler aufweist).
-
Es ist eine generelle Motivation, die Fehlerkorrektur eventuell fehlerhafter Bytes schnell durchzuführen. Dies gilt beispielsweise wenn in Bytes vorliegende Daten parallel aus einem Speicher ausgelesen und parallel bereitgestellt werden sollen. In so einem Szenario kann es vorteilhaft sein, auch die Fehlerkorrektur parallel durchzuführen.
-
Parallel bedeutet hierbei insbesondere, dass zumindest teilweise zeitgleich (beispielsweise auch zumindest teilweise zeitlich überlappend) eine Fehlerkorrektur oder ein Teil der Fehlerkorrektur für mindestens zwei Bytes durchgeführt wird.
-
Die Bytefehler-Korrektur kann beispielsweise mittels eines Reed-Solomon-Codes erfolgen.
-
In OKANO [Okano, H., Imai, H.: A Construction Method of High-Speed Decoders Using ROM's for Bose-Chaudhuri-Hocquengiem and Reed-Solomon Codes, IEEE TRANSACTIONS ON COMPUTERS, VOL. C-36, NO. 10, OCTOBER 1987, Seiten 1165 bis 1171] ist eine Schaltungsanordnung zur Korrektur von 2-Bytefehlern unter Verwendung eines Reed-Solomon-Codes beschrieben. Hierbei ist es von Nachteil, dass die in OKANO beschriebene Korrektur von 2-Bytefehlern verhältnismäßig langsam ist.
-
Die Aufgabe der Erfindung besteht darin, Nachteile bekannter Lösungen zur Korrektur von Bytefehlern zu vermeiden und insbesondere eine möglichst schnelle Fehlerkorrektur von Fehlern in mehreren Bytes zu ermöglichen.
-
Insbesondere ist es eine Aufgabe, eine Fehlerkorrektur von m-Bytefehlern mit m ≥ 2 für Speicherzellen, z.B. MRAM-Speicherzellen, RRAM-Speicherzellen, etc. bereitzustellen und so die Zuverlässigkeit von aus den Speicherzellen ausgelesenen Daten zu erhöhen.
-
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 eine Schaltungsanordnung vorgeschlagen zur Bestimmung von mindestens zwei Bytefehlerpositionssignalen
- - zur Identifikation mindestens eines Bytefehlers in einer Binärfolge, die mehrere Bytes umfasst,
- - wobei die Binärfolge im fehlerfreien Fall ein Codewort eines Fehlercodes ist,
- - wobei die Schaltungsanordnung derart eingerichtet ist, dass jedes der mindestens zwei Bytefehlerpositionssignale unter Verwendung von Komponenten eines Fehlersyndroms des Fehlercodes derart bestimmbar ist, dass es anzeigt, ob ein mit dem Bytefehlerpositionssignal assoziiertes Byte der Binärfolge fehlerhaft ist oder nicht,
- - wobei die mindestens zwei Bytefehlerpositionssignale parallel bestimmt werden.
-
Hier sei angemerkt, dass je ein Bytefehlerpositionssignal pro Byte der Binärfolge bestimmt werden kann. Somit ist mit jedem Byte der Binärfolge ein Bytefehlerpositionssignal verknüpft bzw. assoziiert. Der Wert des Bytefehlerpositionssignals zeigt an, ob das mit dem Bytefehlerpositionssignal verknüpfte Byte einen Fehler aufweist oder nicht.
-
Bei dem Fehlercode handelt es sich beispielsweise um einen fehlerkorrigierenden und/oder fehlererkennenden Code. Beispielsweise kann als Fehlercode ein Reed-Solomon-Code verwendet werden.
-
Parallel bedeutet in diesem Zusammenhang insbesondere, dass Werte zumindest teilweise parallel zueinander, also beispielsweise zeitgleich oder zumindest teilweise zeitgleich, bestimmt werden.
-
Es ist eine Weiterbildung, dass die Schaltungsanordnung derart eingerichtet ist, dass Bytefehlerpositionssignale unter Verwendung von Komponenten eines Fehlersyndroms des Fehlercodes derart bestimmbar sind, dass sie für mindestens zwei Bytes der Bytes der Binärfolge anzeigen, dass ein korrigierbarer Fehler vorliegt.
-
Es ist eine Weiterbildung, dass der Fehlercode ein t-Bytefehler-korrigierender Code ist, wobei mindestens (t + 1) Bytefehlerpositionssignale parallel bestimmt werden.
-
Es ist eine Weiterbildung, dass die Binärfolge einen 2-Bytefehler aufweist.
-
Es ist eine Weiterbildung, dass jedes Byte der Binärfolge m-Bit aufweist, wobei m ≥ 2 gilt.
-
Es ist eine Weiterbildung, dass der Fehlercode
- - ein t-Bytefehler-korrigierender Code oder
- - ein t-Bytefehler-korrigierender und (t + 1)-Bytefehler-erkennender Code ist, wobei t ≥ 2 gilt.
-
Es ist eine Weiterbildung, dass die Binärfolge mindestens (t + 1) korrigierbare Bytes aufweist.
-
Es ist eine Weiterbildung, dass das Fehlersyndrom mindestens 2 · t Komponenten s1, s2, ..., s2t aufweist, wobei jede Komponente jeweils m-Bit umfasst mit m ≥ 2.
-
Ein korrigierbares Byte ist ein Byte für das im Falle eine Bytefehlers in diesem Byte eine Fehlerkorrektur vorgesehen ist, wenn der Bytefehler mittels des Bytefehler-korrigierenden Codes korrigierbar ist.
-
Es ist eine Weiterbildung, dass das Bytefehlerpositionssignal einen ersten Wert aufweist, wenn das mit dem Bytefehlerpositionssignal assoziierte Byte fehlerhaft ist und einen zweiten Wert aufweist, wenn das mit dem Bytefehlerpositionssignal assoziierte Byte nicht fehlerhaft ist.
-
Es ist eine Weiterbildung, dass mindestens eines der Bytefehlerpositionssignale für mindestens ein korrektes Byte bestimmt wird.
-
Es ist eine Weiterbildung, dass die Binärfolge Datenbytes und Prüfbytes umfasst, wobei die Datenbytes und/oder die Prüfbytes korrigierbare Bytes bilden.
-
Insbesondere können nur Datenbytes korrigiert werden. Auch ist es möglich, dass nur Prüfbytes oder dass eine Kombination aus Datenbytes und Prüfbytes korrigiert werden. Hierbei können Datenbytes Nutzdaten darstellen und Prüfbytes können zusätzliche Prüfinformation darstellen, die zur Korrektur der Nutzdaten eingesetzt werden kann.
-
Auch wird zur Lösung der Aufgabe eine Schaltungsanordnung vorgeschlagen zur Korrektur mindestens eines Bytefehlers in einer Binärfolge, die mehrere Bytes umfasst, wobei die Binärfolge im fehlerfreien Fall ein Codewort eines Fehlercodes ist, wobei die Schaltungsanordnung eingerichtet ist
- - zur Bestimmung mindestens eines Bytefehlerpositionssignals unter Verwendung von Komponenten eines Fehlersyndroms des Fehlercodes derart, dass mittels des Bytefehlerpositionssignals bestimmbar ist, ob ein Byte der Binärfolge fehlerhaft ist oder nicht,
- - zur Bestimmung mindestens eines Bytefehlerkorrekturwerts anhand dessen eine mittels des Bytefehlerpositionssignals identifizierte fehlerhafte Byteposition korrigierbar ist,
- - wobei mindestens einer der Bytefehlerkorrekturwerte für mindestens ein korrektes Byte bestimmt wird.
-
Es ist eine Weiterbildung, dass das mindestens eine Bytefehlerpositionssignal und/ oder mindestens ein Bytefehlerkorrekturwert parallel bestimmt werden.
-
Insbesondere können mindestens zwei Bytefehlerkorrekturwerte parallel bestimmt werden.
-
Es ist eine Weiterbildung, dass der Fehlercode ein t-Bytefehler-korrigierender Code ist, wobei mindestens (t + 1) Bytefehlerpositionssignale parallel bestimmt werden.
-
Es ist eine Weiterbildung, dass der Fehlercode ein t-Bytefehler-korrigierender Code ist, wobei mindestens (t + 1) Bytefehlerkorrekturwerte parallel bestimmt werden.
-
Es ist eine Weiterbildung, dass die mindestens (t + 1) Bytefehlerkorrekturwerte unter Verwendung von höchstens drei Galoisfeld-Multiplizierern bestimmt werden und wobei t ≥ 2 gilt.
-
Es ist eine Weiterbildung, dass die Schaltungsanordnung eingerichtet ist, einen der Bytefehler zu korrigieren, indem für das fehlerhafte Byte das Bytefehlerpositionssignal mit dem Bytefehlerkorrekturwert verknüpft wird.
-
Es ist eine Weiterbildung, dass die Schaltungsanordnung eingerichtet ist zur Korrektur von t-Bytefehler, wobei t ≥ 2 gilt.
-
Es ist eine Weiterbildung, dass die Schaltungsanordnung zusätzlich zur Korrektur von 1-Bytefehlern eingerichtet ist.
-
Es ist eine Weiterbildung, dass die Schaltungsanordnung zusätzlich zur Korrektur von τ-Bytefehlern eingerichtet ist, wobei t ≥ τ > 2 gilt.
-
Es ist eine Weiterbildung, dass im Falle eines 2-Bytefehlers das i-te Byte ein korrigierbares Byte ist,
- - wobei das Bytefehlerpositionssignal für das i-te Byte einen ersten Wert annimmt, wenn
gilt und
- - wobei das Bytefehlerpositionssignal für das i-te Byte einen zweiten Wert annimmt, wenn
gilt,
- - wobei das i-te Byte fehlerhaft ist, wenn das mit dem i-ten Byte assoziierte Bytefehlerpositionssignal den ersten Wert annimmt.
-
Es ist eine Weiterbildung, dass im Falle eines 2-Bytefehlers der Bytefehlerkorrekturwert des i-ten Byte bestimmt wird gemäß
-
Die Schaltungsanordnung kann in einzelne Teilschaltungsanordnungen unterteilt sein. Insbesondere ist es möglich, dass die hier beschriebene Schaltungsanordnung einteilig oder mehrteilig realisiert ist.
-
Weiterhin kann die Schaltungsanordnung unter Verwendung eines Synthesetools realisiert werden.
-
Es ist eine Weiterbildung, dass im Falle eines 2-Bytefehlers die Korrektur eines korrigierbaren Bytes in Abhängigkeit von drei Komponenten des Fehlersyndroms und von dem Bytefehlerpositionssignal bestimmt wird.
-
Auch wird ein Verfahren angegeben zur Bestimmung von mindestens zwei Bytefehlerpositionssignalen
- - zur Identifikation mindestens eines Bytefehlers in einer Binärfolge, die mehrere Bytes umfasst,
- - wobei die Binärfolge im fehlerfreien Fall ein Codewort eines Fehlercodes ist,
- - bei dem jedes der mindestens zwei Bytefehlerpositionssignale unter Verwendung von Komponenten eines Fehlersyndroms des Fehlercodes derart bestimmt wird, dass es anzeigt, ob ein mit dem Bytefehlerpositionssignal assoziiertes Byte der Binärfolge fehlerhaft ist oder nicht,
- - bei dem die mindestens zwei Bytefehlerpositionssignale parallel bestimmt werden.
-
Weiterhin wird ein Verfahren vorgeschlagen zur Korrektur mindestens eines Bytefehlers in einer Binärfolge, die mehrere Bytes umfasst, wobei die Binärfolge im fehlerfreien Fall ein Codewort eines Fehlercodes ist, umfassend die Schritte:
- - Bestimmung mindestens eines Bytefehlerpositionssignals unter Verwendung von Komponenten eines Fehlersyndroms des Fehlercodes derart, dass mittels des Bytefehlerpositionssignals bestimmbar ist, ob ein Byte der Binärfolge fehlerhaft ist oder nicht,
- - Bestimmung mindestens eines Bytefehlerkorrekturwerts anhand dessen eine mittels des Bytefehlerpositionssignals identifizierte fehlerhafte Byteposition korrigiert wird,
- - wobei mindestens einer der Bytefehlerkorrekturwerte für mindestens ein korrektes Byte bestimmt wird.
-
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 beispielhafte Schaltungsanordnung zur parallelen Bildung von Bytefehlerpositionssignalen für 2-Bytefehler,
- 2 eine alternative Ausgestaltung der in 1 gezeigten Schaltungsanordnung,
- 3 eine weitere Ausgestaltung der in 1 gezeigten Schaltungsanordnung mit einem zentralen Schaltungsteil,
- 4 eine alternative beispielhafte Realisierung des in 3 gezeigten zentralen Schaltungsteils,
- 5 ein Beispiel für eine Schaltungsanordnung zur Bytefehlerkorrektur für 2-Bytefehler,
- 6 ein Beispiel für eine Realisierung der in 5 gezeigten Teilschaltung zur Bildung des Bytefehlerkorrekturwerts,
- 7 ein weiteres Beispiel einer Realisierung der in 5 gezeigten Teilschaltung zur Bildung des Bytefehlerkorrekturwerts,
- 8 ein Beispiel einer Korrekturschaltung für 1-Bytefehler und 2-Bytefehler unter Verwendung einer Schaltungsanordnung zur Bildung von Bytefehlerpositionssignalen für 2-Bytefehler,
- 9 eine beispielhafte Korrekturschaltung für 1-Bytefehler, 2-Bytefehler bis hin zu t-Bytefehlern unter Verwendung einer Schaltungsanordnung zur Bildung von Bytefehlerpositionssignalen für 2-Bytefehler,
- 10 eine beispielhafte Ausgestaltung der in 8 gezeigten Teilschaltung,
- 11 eine Fehlererkennungsschaltung,
- 12 eine Fehlererkennungsschaltung zur Erkennung von 3-Bytefehlern,
- 13 eine Tabelle, die unterschiedliche Darstellungsformen von Elementen eines Galoisfelds GF(2m) mit m = 5 veranschaulicht.
-
Beispielsweise wird nachfolgend auf eine Korrektur von Bytefehlern unter Verwendung eines Reed-Solomon-Codes eingegangen. Ein Byte kann dabei mehrere Bit umfassen.
-
Für jede korrigierbare Byteposition wird ein Signal (auch bezeichnet als ein Bytefehlerpositionssignal) bestimmt, anhand dessen feststellbar ist, ob das Byte fehlerhaft ist oder nicht. Beispielsweise hat das Bytefehlerpositionssignal den Wert 1, wenn das Byte fehlerhaft ist oder den Wert 0, wenn das Byte nicht fehlerhaft ist.
-
Das Bytefehlerpositionssignal ist vorzugsweise durch einen Wert eines Lokatorpolynoms bestimmt. Im Fall von Bytefehler-korrigierenden Codes kann für jede Anzahl von Fehlern ein eigenes Lokatorpolynom verwendet werden.
-
Somit wird insbesondere vorgeschlagen, ein Bytefehlerpositionssignal für korrigierbare Bytepositionen eines Bytefehler-korrigierenden Codes zu bestimmen, wobei der Bytefehler-korrigierende Code insbesondere mindestens zwei Bytefehler korrigieren kann.
-
Eine korrigierbare Byteposition ist hierbei eine Byteposition, für die eine Korrektur vorgesehen ist, wenn ein Fehler auftritt, der durch den Bytefehler-korrigierenden Code korrigierbar ist.
-
Bei den Bytes handelt es sich beispielsweise um Datenbytes, eine Kombination aus Datenbytes und Prüfbytes oder eine Teilmenge davon. Datenbytes enthalten vorzugsweise Nutzdaten.
-
Für eine Byteposition kann ein Bytefehlerkorrekturwert bestimmt werden, anhand dessen die Byteposition dann korrigiert wird, wenn dort ein Fehler aufgetreten ist. Das Bytefehlerpositionssignal gibt an, ob für ein Byte ein Fehler aufgetreten ist und mittels des Bytefehlerkorrekturwerts kann dieser Fehler korrigiert werden. Mittels des Bytefehlerpositionssignals können also einzelne Bytepositionen ausgeblendet (maskiert) werden, an denen keine Korrektur erfolgen soll.
-
Insbesondere ist es eine Option, dass ein Bytefehlerkorrekturwert, der an einer Byteposition nicht zur Korrektur eingesetzt werden soll (z.B. weil diese Byteposition nicht fehlerhaft ist) mit 0 multipliziert wird. Insofern entspricht der Multiplikation des Bytefehlerkorrekturwerts mit 0 auch einem Nichtverwenden des Bytefehlerkorrekturwerts an einer Byteposition.
-
Reed-Solomon-Code, allgemeine Beschreibung
-
Nachfolgend werden einige Begriffe und Eigenschaften von Reed-Solomon-Codes erläutert.
-
Beispielsweise werden
- - t-Bytefehler-korrigierende Codes und
- - t-Bytefehler-korrigierende und (t + 1)-Bytefehler-erkennende Codes
betrachtet. Insbesondere werden die Fälle t = 2 und t = 1 berücksichtigt.
-
Beispielsweise können als Bytefehler-korrigierende Codes bekannte Reed-Solomon-Codes verwendet werden. Für Reed-Solomon-Codes sei beispielhaft verwiesen auf [Lin, S., Costello, D.: Error Control Coding, Prentice Hall, 1983, Seiten 170 bis 177] oder [Wicker, S.: Error Control Systems for Digital Communication and Storage, Prentice Hall, 1995, Seiten 214 bis 224].
-
Ein 1-Bytefehler-korrigierender und 2-Bytefehler-erkennender Reed-Solomon-Code weist eine H-Matrix
auf wie folgt:
-
Hierbei sind αi Elemente des Galoisfelds GF(2m). Diese liegen beispielsweise in einer Exponentialdarstellung vor. α kann ein primitives Element des Galoisfelds GF(2m) sein. Die Exponenten j von αj sind modulo 2m - 1 zu interpretieren.
-
Es ist möglich, aus der H-Matrix gemäß Gleichung (1) eine H-Matrix
abzuleiten, indem für i = 0,..., (2
m - 2) die i-te Spalte mit α
-i multipliziert wird. Hierdurch ändert sich nur die Gestalt der H-Matrix, nicht der Code, da α
-i ≠ 0 ist. Dies ist beispielsweise auch in [Fujiwara, E.: Code Design for Dependable Systems, Wiley, 2006, Seite 65] beschrieben, wobei der Wert „1“ für α
0 verwendet wird, da α
0 das Einselement des verwendeten Galoisfelds ist.
-
Für einen 2-Bytefehler-korrigierenden und 3-Bytefehler-erkennenden Code wird die folgende H-Matrix verwendet:
-
Jede Spalte der in Gleichung (3) angegebenen H-Matrix entspricht einem Byte.
-
Ist die Länge des Codes gleich N Bytes oder m · N-Bit (wobei jedes Byte m-Bit aufweist), werden nur N Spalten der H-Matrizen gemäß Gleichung (1) oder Gleichung (3) verwendet. Beispielsweise können dann die verbleibenden (letzten) 2m - 2 - N Spalten gestrichen werden.
-
Allgemein kann für einen t-Bytefehler-korrigierenden und t + 1-Bytefehler-erkennenden Code die H-Matrix wie folgt angegeben werden:
-
Nachfolgend wird beispielhaft ein Code betrachtet, der 2-Bytefehler korrigieren und 3-Bytefehler erkennen kann.
-
Tritt ein Fehler auf, wird ein korrekter Vektor v = v0,...., vN-1 in einen fehlerhaften Vektor v' = v'0, ... , v'N-1 gestört.
-
Die Komponenten v
0,... , v
N-1 des Vektors v sind Bytes, die jeweils m-Bit umfassen, so dass
für i = 0,...,N - 1 gilt.
sind somit die m-Bit des i-ten Bytes.
-
Ein m-Bit-Byte kann auch als ein Element des Galoisfelds GF(2m) bezeichnet werden.
-
Liegt ein 1-Bytefehler vor, ist nur ein einzelnes Byte fehlerhaft, d.h. für ein bestimmtes i ∈ {0,... , N - 1} ist das zugehörige i-te Byte fehlerhaft.
-
Wird das korrekte i-te Byte mit
und das fehlerhafte i-te Byte mit
bezeichnet, können sich 1 oder 2 oder bis zu m-Bit des korrekten i-ten Bytes von dem fehlerhaften i-ten Byte unterscheiden.
-
Ein Bytefehler im i-ten Byte kann durch
- - die fehlerhafte Byteposition i und
- - einen Bytefehlerwert
beschrieben werden. Hierbei sei angemerkt, dass „⊕“ die exklusiv-oder-Operation kennzeichnet.
-
Die Position eines i-ten Bytes kann auch mit αi bezeichnet werden.
-
Soll ein Bytefehler mit dem Bytefehlerwert ei in der Byteposition i korrigiert werden, so ist für die Byteposition i ein Bytefehlerkorrekturwert zu bestimmen, der gleich dem Bytefehlerwert ist.
-
In diesem Beispiel ist für einen zu korrigierenden Bytefehler der Bytefehlerwert gleich dem Bytefehlerkorrekturwert; insoweit können die Begriffe Bytefehlerwert und Bytefehlerkorrekturwert synonym verwendet werden.
-
Um eine unübersichtliche Anzahl von Indizes zu vermeiden, werden nachfolgend Bytefehlerwerte mit den alphabetischen Buchstaben a, b, c bezeichnet.
-
Ein Bytefehlerkorrekturwert für das i-te Bytes kann auch mit a(i) bezeichnet werden.
-
Byte-Positionen können mit i, j, k, ... oder mit αi, αj, αk, ... bezeichnet werden, wobei α ein erzeugendes Element des Galoisfelds GF(2m) ist.
-
Ein Fehlersyndrom s weist Syndromkomponenten (auch bezeichnet als Komponenten, Fehlersyndromkomponenten, Teilfehlersyndrome oder Teilsyndrome) s
1, s
2, s
3, s
4, s
5 auf, die für die H-Matrix gemäß Gleichung (3) bestimmt sind zu:
-
Dabei ist (v'0,... ,v'N-1)T ein Spaltenvektor mit den Komponenten v'0,... ,v'N-1, der auch als transponierter Vektor des Zeilenvektors (v'0,...,v'N-1) bezeichnet werden kann.
-
Die Syndromkomponenten s1, s2, s3, s4, s5 bilden jeweils ein Byte mit m-Bit.
-
Liegt kein Fehler vor, gilt:
-
Liegt ein 1-Bytefehler mit dem Bytefehlerwert α in der i-ten Bytefehlerposition vor, gilt:
-
Liegt ein 2-Bytefehler mit den Bytefehlerwerten α und b in den Bytefehlerpositionen i und j vor, gilt:
-
Liegt ein 3-Bytefehler mit den Bytefehlerwerten a, b und c in den Bytefehlerpositionen i, j und k vor, gilt:
-
Für die betrachteten Fehler sind die folgenden Beziehungen erfüllt:
- 1. Für einen 1-Bytefehler gelten
und
- 2. Für einen 2-Bytefehler gelten
und
- 3. Für einen 3-Bytefehler ist
-
Die Bytefehlerpositionen α
i und α
j können im Falle des 2-Bytefehlers in dem i-ten und in dem j-ten Byte als Lösung, Wurzeln oder Nullstellen der Gleichung
bestimmt werden.
kann auch als Lokatorpolynom zweiten Grades bezeichnet werden.
-
Entsprechend sind die Bytefehlerpositionen für den 1-Bytefehler durch eine Nullstelle eines Lokatorpolynomes ersten Grades und allgemein die fehlerhaften Byte-positionen eines τ-Bytefehlers für einen t-Bytefehler-korrigierenden Code für
durch Nullstellen eines Lokatorpolynoms τ-ten Grades bestimmt.
-
Besteht ein Codewort aus N · m-Bit und damit aus N Bytes, so gibt es nur N unterschiedliche Bytepositionen, die als Bytefehlerpositionen in Betracht kommen. In einem entsprechenden Bit-korrigierenden Code gibt es hingegen m·N mögliche fehlerhafte Bitpositionen.
-
Bei einem 1-Bytefehler wird ein Lokatorpolynom ersten Grades und bei einem 2-Bytefehler wird ein Lokatorpolynom zweiten Grades verwendet.
-
Reed-Solomon-Code, ergänzende Ausführungen
-
Es ist möglich, im Falle eines 2-Bytefehlers einen Bytefehlerkorrekturwert a(i) für ein i-tes Byte in Abhängigkeit lediglich von den Syndromkomponenten s1, s2, s3 und der Byteposition i zu bestimmen.
-
Hierbei ist es von Vorteil, dass mehrere Bytefehlerkorrekturwerte parallel für beispielsweise mindestens drei korrigierbare Bytes bestimmt werden können.
-
Beispielsweise sei angenommen, dass ein 2-Bytefehler vorliegt. Der Bytefehlerkorrekturwert für jede Byteposition kann auf Grund der bereitgestellten Syndromkomponenten s1, s2, s3 und der bekannten Position jedes der korrigierbaren Bytes parallel bestimmt werden. Ein Bytefehlerkorrekturwert wird für die beiden fehlerhaften Bytes und mindestens für ein nicht fehlerhaftes Byte bestimmt.
-
Ein für eine i-te Byteposition bestimmter Bytefehlerkorrekturwert stimmt mit dem Bytefehlerwert an dieser i-ten Position überein.
-
Ein ebenfalls (ggf. parallel) bestimmtes Bytefehlerpositionssignal legt fest, ob ein Bytefehler in dem betrachteten Byte vorliegt und die Korrektur mit dem Bytefehlerkorrekturwert erfolgt. Zeigt das Bytefehlerpositionssignal an, dass kein Bytefehler in der entsprechenden Position vorliegt, erfolgt keine Korrektur mit dem für diese Position bestimmten Bytefehlerkorrekturwert.
-
Mit anderen Worten: Das Bytefehlerpositionssignal bestimmt, an welchen Bytepositionen eine Korrektur mit dem bereitgestellten Bytefehlerkorrekturwert erfolgt: Zeigt das Bytefehlerpositionssignal für eine Byteposition einen Bytefehler an, erfolgt die Korrektur mit dem Bytefehlerkorrekturwert; zeigt das Bytefehlerpositionssignal für diese Byteposition keinen Bytefehler an, erfolgt keine Korrektur.
-
Wird ein t-Bytefehler-korrigierender Code betrachtet, kann der entsprechende Bytefehlerkorrekturwert für mehr als t korrigierbare Bytepositionen bestimmt werden, noch bevor die Bytefehlerpositionssignale für (alle oder einen Teil der) Bytepositionen bestimmt wurden. Der Bytefehlerkorrekturwert kann auch parallel mit dem Bytefehlerpositionssignal bestimmt werden.
-
Liegt kein Bytefehler in einem i-ten Byte vor, wird der für dieses i-te Byte bestimmte Bytefehlerkorrekturwert auf Grund des Werts des Bytefehlerpositionssignals nicht zur Korrektur verwendet. Es ist in diesem Fall nicht erforderlich, dass der für dieses nicht fehlerhafte Byte bestimmte Bytefehlerkorrekturwert gleich
ist, da auf Grund des Bytefehlerpositionssignals die Korrektur ausgeschlossen ist. Optional kann in diesem Fall der Bytefehlerkorrekturwert für das i-te Byte
gesetzt werden.
-
Ist ein 2-Bytefehler vorhanden, kann für eine Bytefehlerposition i der Bytefehlerkorrekturwert a(i) des i-ten Bytes so bestimmt sein, dass gilt:
-
Ist für einen 2-Bytefehler eine Byteposition i bekannt, in der ein Bytefehler aufgetreten ist, ist auf Grund der Gleichung (13) der Bytefehlerkorrekturwert a(i) für die fehlerhafte Byteposition i durch die Syndromkomponenten s1, s2, s3 und den aus der Byteposition i bestimmten Wert αi bestimmt.
-
Für eine Byteposition k wird der Bytefehlerkorrekturwert a(k) mit
beispielsweise parallel bestimmt, unabhängig davon, ob die Byteposition k tatsächlich fehlerhaft ist.
-
Zeigt das Bytefehlerpositionssignal an, dass in der Byteposition k ein Bytefehler vorliegt, erfolgt eine Fehlerkorrektur des k-ten Bytes mit dem für diese Byteposition k bestimmten Bytefehlerkorrekturwert a(k).
-
Zeigt das Bytefehlerpositionssignal an, dass in der Byteposition k kein Bytefehler vorliegt, erfolgt keine Fehlerkorrektur des k-ten Bytes und der für dieses k-te Byte bestimmte Bytefehlerkorrekturwert a(k) wird nicht zur Fehlerkorrektur verwendet. Optional kann der Bytefehlerkorrekturwert zu 0 gesetzt werden.
-
Der Bytefehlerkorrekturwert für eine Byteposition kann also bereits vorliegen, noch ehe bestimmt worden ist, ob tatsächlich ein Fehler an dieser Byteposition aufgetreten ist.
-
Für verschiedene Bytepositionen können die entsprechenden Bytefehlerkorrekturwerte parallel bestimmt werden. Insbesondere können die Bytefehlerkorrekturwerte für alle korrigierbaren Bytepositionen oder für eine Teilmenge der korrigierbaren Bytepositionen parallel bestimmt werden.
-
Kann der Bytefehler-korrigierende Code bis zu t fehlerhafte Bytes korrigieren, dann können mehr als t Bytefehlerkorrekturwerte parallel bestimmt werden, beispielsweise für alle korrigierbaren Bytepositionen oder auch für eine Teilmenge von mindestens t + 1 korrigierbaren Bytepositionen, unabhängig davon, ob ein Bytefehler an einer Byteposition vorliegt.
-
Der Wert des Bytefehlerpositionssignals bestimmt, ob der Bytefehlerkorrekturwert zur Korrektur des entsprechenden Bytes verwendet wird.
-
Korrigierbare Bytepositionen können beispielsweise alle Datenbytes, eine Teilmenge der Datenbytes, Prüfbytes, alle Bytes eines Codeworts eines t-Bytefehler-korrigierenden Codes oder eine Teilmenge der Bytes eines Codewortes des t-Bytefehler-korrigierenden Codes sein.
-
Das Bytefehlerpositionssignal kann dabei beispielsweise so bestimmt sein, dass es für eine Byteposition einen ersten Wert annimmt, wenn das Byte der Byteposition fehlerhaft ist und dass es einen zweiten, von dem ersten Wert verschiedenen Wert annimmt, wenn das Byte der Byteposition nicht fehlerhaft ist.
-
Das Bytefehlerpositionssignal kann unter Verwendung des entsprechenden Lokatorpolynoms bestimmt werden.
-
Bytefehlerpositionssignal für den 1-Bytefehler
-
Für einen 1-Bytefehler ist das Lokatorpolynom ersten Grades
mit der Lösung oder Nullstelle
Der Bytefehlerkorrekturwert a(i) für die fehlerhafte Byteposition i ist
Für jedes k-te Byte wird ein Bytefehlerkorrekturwert
bestimmt.
-
Liegt ein Fehler in dem i-ten Byte mit dem Bytefehlerkorrekturwert α vor, so dass s1 = α ist, wird für jedes Byte k ein Bytefehlerkorrekturwert a(k) = a nach Gleichung (18) bestimmt, der für das tatsächlich zu korrigierende i-te Byte eingesetzt wird und für die nicht zu korrigierenden Bytes maskiert (z.B. zu Null gesetzt) wird. Die Entscheidung, ob ein Byte korrigiert wird oder nicht, erfolgt auf Grund des Werts des entsprechenden Bytefehlerpositionssignals.
-
Für jedes Byte wird im Falle eines 1-Bytefehlers ein Bytefehlerpositionssignal unter Verwendung der Gleichung (15) bestimmt. Das Bytefehlerpositionssignal für die Byteposition i ist
- - gleich 1, wenn αi eine Nullstelle des Lokatorpolynoms gemäß Gleichung (15) ist und
- - gleich 0, wenn αi keine Nullstelle des Lokatorpolynoms gemäß Gleichung (15) ist.
-
Eine Korrektur des i-ten Bytes erfolgt nur, wenn αi Nullstelle des Lokatorpolynoms gemäß Gleichung (15) ist.
-
Bytefehlerpositionssignal für den 2-Bytefehler
-
Die Wirkung des Bytefehlerpositionssignals bei der Korrektur eines 2-Bytefehlers wird anhand eines Beispiels veranschaulicht:
-
Wird ein t-Bytefehler-korrigierender Code mit t ≥ 2 verwendet, so sind im Falle eines 2-Bytefehlers die fehlerhaften Bytepositionen durch die zwei Nullstellen des Lokatorpolynoms zweiten Grades gemäß Gleichung (12) bestimmt.
-
Sind die fehlerhaften Bytepositionen die Positionen i und j, ist das Bytefehlerpositionssignal beispielsweise gleich 1, wenn αi und αj jeweils eine Nullstelle des Lokatorpolynoms zweiten Grades gemäß Gleichung (12) sind und gleich 0 in allen anderen Fällen.
-
Für jede Byteposition k kann ein Bytefehlerkorrekturwert
bestimmt werden. Diese Bytefehlerkorrekturwerte können zumindest teilweise parallel bestimmt werden.
-
Der Wert des Bytefehlerpositionssignals für die Byteposition k bestimmt, ob an dieser Byteposition k eine Korrektur erfolgt. Ist das Bytefehlerpositionssignal gleich 1, erfolgt eine Korrektur, ist das Bytefehlerpositionssignal gleich 0, erfolgt keine Korrektur.
-
Für die Byteposition k = i ist der Bytefehlerkorrekturwert a(i) so bestimmt, dass das fehlerhafte i-te Byte mittels des Bytefehlerkorrekturwerts a(i) korrigiert wird. Ebenso ist für die Byteposition k = j der Bytefehlerkorrekturwert a(j) so bestimmt, dass das fehlerhafte j-te Byte mittels des Bytefehlerkorrekturwerts a(j) korrigiert wird.
-
Für alle anderen Bytepositionen k mit k ≠ i, j liegt kein Bytefehler vor, so dass für diese Bytepositionen keine Korrektur erforderlich ist. Selbst wenn ein Bytefehlerkorrekturwert a(k) ungleich 0 bestimmt worden ist, wird dieser nicht zur Korrektur eingesetzt, weil das Bytefehlerpositionssignal an dieser Byteposition den Wert 0 annimmt und somit anzeigt, dass für diese Byteposition keine Korrektur erforderlich ist.
-
Behandlung von 1-Bytefehlern, 2-Bytefehlern und 3-Bytefehlern
-
Im Folgenden wird beschrieben, wie Bytefehler erkannt und voneinander unterschieden werden können. Es wird beispielhaft ein 2-Bytefehler-korrigierender Code betrachtet. Ergänzend wird auch eine 3-Bytefehler-Erkennung beschrieben.
- 1. Es wird zunächst von dem Fall ausgegangen, dass nur ein 1-Bytefehler oder ein 2-Bytefehler vorhanden ist. In einem solchen Beispiel gilt für einen 2-Bytefehler gemäß Gleichung (9)
und für einen 1-Bytefehler gelten sowohl die Gleichungen (7) und (8)
Zusätzlich ist noch der Fall zu unterscheiden, dass weder ein 1-Bytefehler noch ein 2-Bytefehler aufgetreten ist. Bereits aus s1 = 0 kann gefolgert werden, dass weder ein 1-Bytefehler noch ein 2-Bytefehler aufgetreten ist.
Wenn die Wahrscheinlichkeit für einen 3-Bytefehler extrem klein ist, kann man für diesen Fall folgern, dass kein Fehler aufgetreten ist.
- 2. Es wird nun der Fall betrachtet, dass nur ein 1-Bytefehler oder nur ein 2-Bytefehler oder nur ein 3-Bytefehler vorhanden ist. Für einen 3-Bytefehler gilt gemäß Gleichung (11)
Entsprechend gilt für einen 2-Bytefehler oder für einen 1-Bytefehler:
Liegt ein 2-Bytefehler vor, gilt zusätzlich Gleichung (9)
Für einen 1-Bytefehler gelten wieder die Gleichungen (7) und (8)
Aus der Bedingung gemäß Gleichung (9) allein kann nicht geschlossen werden, dass ein 2-Bytefehler vorliegt, da diese Bedingung auch für den 3-Bytefehler gilt.
-
Die Korrektur von 2-Bytefehlern kann wie folgt durchgeführt werden: Für jede Byteposition i mit i ∈ {0,1,...,N - 1} wird ein Wert L(α
i) des Lokatorpolynoms zweiten Grades bestimmt gemäß
-
Ist L(α
i) = 0, wird das i-te Byte korrigiert. Ist L(α
i) ≠ 0, dann wird das i-te Byte nicht korrigiert. Ein Bytefehlerpositionssignal BPs
i kann angeben, ob eine Korrektur des jeweiligen Bytes erfolgt oder nicht. Das Bytefehlerpositionssignal BPs
i ist beispielsweise bestimmt durch
-
Bei Schaltungsanordnungen, die Operationen in einem Galoisfeld GF(2m) realisieren, werden beispielsweise Multiplizierer, Konstantenmultiplizierer, Quadrierer, (dritte) Potenzbildner o.ä. eingesetzt. Die schaltungstechnische Umsetzung einzelner derartiger Operationen ist bekannt. Nachfolgend wird beispielhaft dargestellt, wie in einem Galoisfeld, das beispielsweise durch sein Modularpolynom bestimmt ist, Multiplizierer, Quadrierer, dritte Potenz-Bildner und Konstanten-Multiplizierer realisiert werden können. Beispielhaft wird m = 5 angenommen, so dass ein Byte aus m = 5 Bit besteht und das entsprechende Galoisfeld GF(25) ist.
-
Beispiel im Galoisfeld GF(2m) mit m = 5
-
Es wird beispielhaft m = 5 gewählt, so dass das zugrundeliegende Galoisfeld
insgesamt 32 Elemente umfasst.
-
Elemente des Galoisfelds GF(
32) sind in ihren verschiedenen Darstellungsformen in
13 dargestellt. Das Modularpolynom des Galoisfelds GF(
32) ist das Polynom
-
Die erste Spalte der in
13 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(2
m) = GF(2
5) in ihrer Polynomdarstellung gegeben sind, miteinander zu multiplizieren, 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 (22) bis (26) 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 (27) bis (31) 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 (32) bis (36) 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
13 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 (40) bis (44) 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 Konstanten-Multiplizierer mittels XOR-Gatter realisiert werden.
-
Beschreibung eines Bytefehler-Positionssignalbildners zur Bildung von Bytefehlerpositionssignalen
-
1 zeigt eine beispielhafte Schaltungsanordnung zur Bestimmung von Bytefehlerpositionssignalen. Beispielhaft wird ein 2-Bytefehler-korrigierender Fehlercode mit Codewörtern aus n Bytes betrachtet, wobei jedes Byte jeweils m-Bit aufweist.
-
Die Schaltungsanordnung weist N Bytefehler-Positionssignalbildner 10, 11, ..., 1i, ..., 1N - 1 auf, die über ihren jeweils 1-Bit breiten Ausgang binäre Bytefehlerpositionssignale BPs0, BPs1, ..., BPsi, ..., BPsN-1 bereitstellen.
-
An jeweils 4 • m-Bit breiten Eingängen der N Bytefehler-Positionssignalbildner
10,
11, ...,
1i, ...,
1N -
1 liegt ein von einem Syndromgenerator (nicht in
1 dargestellt) bereitgestellte 4 • m-Bit breite Fehlersyndrom
an, das aus den jeweils m-Bit breiten Syndromkomponenten s
1, s
2, s
3, s
4 besteht.
-
Werden alle Bytes im Falle eines Fehlers korrigiert, so gilt N = n. Werden weniger als n Bytes im Falle eines Fehlers korrigiert, gilt N < n. Beispielsweise ist es möglich, dass im Falle eines Fehlers nur Datenbytes korrigiert werden. Prüfbytes könnten in so einem Beispiel dann nicht korrigiert werden.
-
Der Bytefehler-Positionssignalbildner 10 ist beispielsweise so ausgestaltet,
- - dass er das Bytefehlerpositionssignal BPs0 = 1 ausgibt, wenn gilt:
- - dass er das Bytefehlerpositionssignal BPs0 = 0 ausgibt, wenn gilt:
-
Der Bytefehler-Positionssignalbildner 11 ist beispielsweise so ausgestaltet,
- - dass er das Bytefehlerpositionssignal BPs1 = 1 ausgibt, wenn gilt:
- - dass er das Bytefehlerpositionssignal BPs1 = 0 ausgibt, wenn gilt:
-
Der Bytefehler-Positionssignalbildner 1i ist beispielsweise so ausgestaltet,
- - dass er das Bytefehlerpositionssignal BPsi = 1 ausgibt, wenn gilt:
- - dass er das Bytefehlerpositionssignal BPsi = 0 ausgibt, wenn gilt:
-
Der Bytefehler-Positionssignalbildner 1N - 1 ist beispielsweise so ausgestaltet,
- - dass er das Bytefehler-Positionssignal BPsN-1 = 1 ausgibt, wenn gilt:
- - dass er das Bytefehlerpositionssignal BPsN-1 = 0 ausgibt, wenn gilt:
-
Dabei sind die jeweiligen Exponenten von α modulo 2m - 1 zu interpretieren.
-
Liegt ein 2-Bytefehler vor und sind das j-te Byte und das k-te Byte fehlerhaft, dann sind für i=j und für i=k die Bytefehlerpositionssignale BPs
i gleich 1, während alle übrigen Bytefehlerpositionssignale BPs
i mit l ≠ j,k gleich 0 sind, wobei gilt:
und
1 ist das Einselement des Galoisfelds GF(2
m).
-
Bytefehler-Positionssignalbildner gemäß Fig.2
-
2 zeigt eine Schaltungsanordnung, die eine mögliche Ausgestaltung der in 1 gezeigten Schaltungsanordnung darstellt.
-
Der in 1 gezeigte Bytefehler-Positionssignalbildner 10 umfasst
- - eine Teilschaltung 210 mit einem 4 · m-Bit breiten Eingang zur Eingabe der Komponenten s1, s2, s3 und s4 des Fehlersyndromes s = s1, s2, s3, s4 und drei jeweils m-Bit breiten Ausgängen,
- - einen Konstantenmultiplizierer 220 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - einem Konstantenmultiplizierer 230 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - eine XOR-Schaltung 240 mit drei jeweils m-Bit breiten Eingängen und einem m-Bit breiten Ausgang und
- - eine NOR-Schaltung 250 (NICHT-ODER-Schaltung) mit einem m-Bit breiten Eingang und einem 1-Bit breiten binären Ausgang.
-
Die Teilschaltung 210 ist derart eingerichtet, dass sie bei Eingabe des Fehlersyndroms s
- - an dem ersten Ausgang s1 · s4 + s2 · s3 ausgibt,
- - an dem zweiten Ausgang
ausgibt und
- - an dem dritten Ausgang
ausgibt.
-
Der erste Ausgang der Teilschaltung
210 ist mit dem ersten Eingang des Konstantenmultiplizierers
220 verbunden. An dem zweiten Eingang des Konstantenmultiplizierers
220 liegt die Konstante α
0 = 1 an, so dass an dem Ausgang des Konstantenmultiplizierers
220
bereitgestellt wird.
-
Der Ausgang des Konstantenmultiplizierers 220 ist mit dem ersten Eingang der XOR-Schaltung 240 verbunden.
-
Der zweite Ausgang der Teilschaltung
210 ist mit dem ersten Eingang des Konstantenmultiplizierers
230 verbunden. An dem zweiten Eingang des Konstantenmultiplizierers
230 liegt die Konstante a
2·0 = α
0 an, so dass an dem Ausgang des Konstantenmultiplizierers
230
bereitgestellt wird.
-
Der Ausgang des Konstantenmultiplizierers 230 ist mit dem zweiten Eingang der XOR-Schaltung 240 verbunden.
-
Der dritte Ausgang der Teilschaltung 210 ist mit dem dritten Eingang der XOR-Schaltung 240 verbunden.
-
Die XOR-Schaltung
240 bildet beispielsweise eine komponentenweise XOR-Verknüpfung der an ihren drei Eingängen anliegenden jeweils m-Bit breiten Werte und stellt an ihrem m-Bit breiten Ausgang den Wert
bereit, der an den Eingang der NOR-Schaltung
250 geführt wird. Die NOR-Schaltung
250 stellt an ihrem Ausgang
- - den binären Wert BPs0 = 1 bereit, wenn v0 = 0 gilt und
- - den binären Wert BPs0 = 0 bereit, wenn v0 ≠ 0 gilt.
-
Der in 1 gezeigte Bytefehler-Positionssignalbildner 11 umfasst
- - eine Teilschaltung 211 mit einem 4 · m-Bit breiten Eingang zur Eingabe der Komponenten s1, s2, s3, s4 des Fehlersyndromes s = s1, s2, s3, s4 und drei jeweils m-Bit breiten Ausgängen,
- - einen Konstantenmultiplizierer 221 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - einen Konstantenmultiplizierer 231 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - eine XOR-Schaltung 241 mit drei jeweils m-Bit breiten Eingängen und einem m-Bit breiten Ausgang und
- - eine NOR-Schaltung 251 mit einem m-Bit breiten Eingang und einem 1-Bit breiten binären Ausgang.
-
Die Teilschaltung 211 ist derart eingerichtet, dass sie bei Eingabe des Fehlersyndroms s
- - an dem ersten Ausgang s1 · s4 + s2 · s3 ausgibt,
- - an dem zweiten Ausgang
ausgibt und
- - an dem dritten Ausgang
ausgibt.
-
Der erste Ausgang der Teilschaltung
211 ist mit dem ersten Eingang des Konstantenmultiplizierers
221 verbunden. An dem zweiten Eingang des Konstantenmultiplizierers
221 liegt die Konstante α
1 an, so dass an dem Ausgang des Konstantenmultiplizierers
221
bereitgestellt wird.
-
Der Ausgang des Konstantenmultiplizierers 221 ist mit dem ersten Eingang der XOR-Schaltung 241 verbunden.
-
Der zweite Ausgang der Teilschaltung
211 ist mit dem ersten Eingang des Konstantenmultiplizierers
231 verbunden. An dem zweiten Eingang des Konstantenmultiplizierers
231 liegt die Konstante α
2 an, so dass an dem Ausgang des Konstantenmultiplizierers
231
bereitgestellt wird.
-
Der Ausgang des Konstantenmultiplizierers 231 ist mit dem zweiten Eingang der XOR-Schaltung 241 verbunden.
-
Der dritte Ausgang der Teilschaltung 211 ist mit dem dritten Eingang der XOR-Schaltung 241 verbunden.
-
Die XOR-Schaltung
241 bildet beispielsweise eine komponentenweise XOR-Verknüpfung der an ihren drei Eingängen anliegenden jeweils m-Bit breiten Werte an und stellt an ihrem m-Bit breiten Ausgang den Wert
bereit, der an den Eingang der NOR-Schaltung
251 geführt wird. Die NOR-Schaltung
251 stellt an ihrem Ausgang
- - den binären Wert BPs1 = 1 bereit, wenn v1 = 0 gilt und
- - den binären Wert BPs1 = 0 bereit, wenn v1 ≠ 0 gilt.
-
Der in 1 gezeigte Bytefehler-Positionssignalbildner 1i umfasst
- - eine Teilschaltung 21i mit einem 4 · m-Bit breiten Eingang zur Eingabe der Komponenten s1, s2, s3 und s4 des Fehlersyndromes s = s1, s2, s3, s4 und drei jeweils m-Bit breiten Ausgängen,
- - einen Konstantenmultiplizierer 22i mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - einen Konstantenmultiplizierer 23i mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - eine XOR-Schaltung 24i mit drei jeweils m-Bit breiten Eingängen und einem m-Bit breiten Ausgang und
- - eine NOR-Schaltung 25i mit einem m-Bit breiten Eingang und einem 1-Bit breiten binären Ausgang.
-
Die Teilschaltung 21i ist derart eingerichtet, dass sie bei Eingabe des Fehlersyndroms s
- - an dem ersten Ausgang s1 · s4 + s2 · s3 ausgibt,
- - an dem zweiten Ausgang
ausgibt und
- - an dem dritten Ausgang
ausgibt.
-
Der erste Ausgang der Teilschaltung
21i ist mit dem ersten Eingang des Konstantenmultiplizierers
22i verbunden. An dem zweiten Eingang des Konstantenmultiplizierers
22i liegt die Konstante α
i an, so dass an dem Ausgang des Konstantenmultiplizierers
22i
bereitgestellt wird.
-
Der Ausgang des Konstantenmultiplizierers 22i ist mit dem ersten Eingang der XOR-Schaltung 24i verbunden.
-
Der zweite Ausgang der Teilschaltung
21i ist mit dem ersten Eingang des Konstantenmultiplizierers
23i verbunden. An dem zweiten Eingang des Konstantenmultiplizierers
23i liegt die Konstante α
2·i an, so dass an dem Ausgang des Konstantenmultiplizierers
23i
bereitgestellt wird.
-
Der Ausgang des Konstantenmultiplizierers 23i ist mit dem zweiten Eingang der XOR-Schaltung 24i verbunden.
-
Der dritte Ausgang der Teilschaltung 21i ist mit dem dritten Eingang der XOR-Schaltung 24i verbunden.
-
Die XOR-Schaltung
24i bildet beispielsweise eine komponentenweise XOR-Verknüpfung der an ihren drei Eingängen anliegenden jeweils m-Bit breiten Werte und stellt an ihrem m-Bit breiten Ausgang
bereit, der an den Eingang der NOR-Schaltung
25i geführt wird. Die NOR-Schaltung
25i stellt an ihrem Ausgang
- - den binären Wert BPsi = 1 bereit, wenn vi = 0 gilt und
- - den binären Wert BPsi = 0 bereit, wenn vi ≠ 0 gilt.
-
Der in 1 gezeigte Bytefehler-Positionssignalbildner 1N-1 umfasst
- - eine Teilschaltung 21N-1 mit einem 4 · m-Bit breiten Eingang zur Eingabe der Komponenten s1, s2, s3 und s4 des Fehlersyndromes s = s1, s2, s3, s4 und drei jeweils m-Bit breiten Ausgängen,
- - einen Konstantenmultiplizierer 22N-1 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - einen Konstantenmultiplizierer 23N-1 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - eine XOR-Schaltung 24N-1 mit drei jeweils m-Bit breiten Eingängen und einem m-Bit breiten Ausgang und
- - eine NOR-Schaltung 25N-1 mit einem m-Bit breiten Eingang und einem 1-Bit breiten binären Ausgang.
-
Die Teilschaltung 21N-1 ist derart eingerichtet, dass sie bei Eingabe des Fehlersyndroms s
- - an dem ersten Ausgang s1 · s4 + s2 · s3 ausgibt,
- - an dem zweiten Ausgang
ausgibt und
- - an dem dritten Ausgang
ausgibt.
-
Der erste Ausgang der Teilschaltung
21N-
1 ist mit dem ersten Eingang des Konstantenmultiplizierers
22N-
1 verbunden. An dem zweiten Eingang des Konstantenmultiplizierers
22N-
1 liegt die Konstante α
N-1 an, so dass an dem Ausgang des Konstantenmultiplizierers
22N-
1
bereitgestellt wird.
-
Der Ausgang des Konstantenmultiplizierers 22N-1 ist mit dem ersten Eingang der XOR-Schaltung 24N-1 verbunden.
-
Der zweite Ausgang der Teilschaltung
21N-
1 ist mit dem ersten Eingang des Konstantenmultiplizierers
23N-
1 verbunden. An dem zweiten Eingang des Konstantenmultiplizierers
23N-
1 liegt die Konstante α
2·(N-1) an, so dass an dem Ausgang des Konstantenmultiplizierers
23N-
1
bereitgestellt wird.
-
Der Ausgang des Konstantenmultiplizierers 23N-1 ist mit dem zweiten Eingang der XOR-Schaltung 24N-1 verbunden.
-
Der dritte Ausgang der Teilschaltung 21N-1 ist mit dem dritten Eingang der XOR-Schaltung 24N-1 verbunden.
-
Die XOR-Schaltung
24N-
1 bildet beispielsweise eine komponentenweise XOR-Verknüpfung der an ihren drei Eingängen anliegenden jeweils m-Bit breiten Werte und stellt an ihrem m-Bit breiten Ausgang den Wert
bereit, der an den Eingang der NOR-Schaltung
25N-
1 geführt wird. Die NOR-Schaltung
25N-
1 stellt an ihrem Ausgang
- - den binären Wert BPsN-1 = 1 bereit, wenn vN-1 = 0 gilt und
- - den binären Wert BPsN-1 = 0 bereit, wenn vN-1 ≠ 0 gilt.
-
Beispielhafte Zusammenfassung der Teilschaltungen
-
Die Teilschaltungen 210, 211, ..., 21i, ..., 21N-1 in 2 sind funktional gleich. Somit ist es möglich, dass diese Teilschaltungen in einer Teilschaltung 31 zusammengefasst werden.
-
3 zeigt eine solche Teilschaltung 31, die die Teilschaltungen 210, 211, ..., 21i, ..., 21N-1 zusammenfasst. Der restliche in 3 gezeigte Schaltungsteil ist identisch zu 2.
-
Beispielsweise können die Bytefehler-Positionssignalbildner 10, 11, ..., 1i, ... 1N-1 gemäß 1 die gemeinsamen Teilschaltung 31 nutzen.
-
Beispielhafte Implementierung der Teilschaltung 31
-
4 zeigt eine mögliche Implementierung der in 3 dargestellten Teilschaltung 31.
-
Die Teilschaltung 31 weist vier jeweils m-Bit breite Eingänge zur Eingabe der Komponenten s1, s2, s3, s4 auf, die das Syndrom s bilden. Weiterhin sind vier Multiplikatoren 41, 42, 44 und 47 mit jeweils zwei m-Bit breiten Eingängen und einem m-Bit breiten Ausgang, zwei Quadrierer 45 und 48 mit jeweils einem m-Bit breiten Eingang und einem m-Bit breiten Ausgang und drei XOR-Schaltungen 43, 46 und 49 mit jeweils zwei m-Bit breiten Eingängen und einem m-Bit breiten Ausgang vorgesehen.
-
Die XOR-Schaltungen 43, 46, 49 führen jeweils eine komponentenweise XOR-Verknüpfung der an ihren jeweiligen Eingängen anliegenden m-komponentigen Werten aus. Die Multiplikatoren führen eine Multiplikation im Galoisfeld GF(2m) aus und die Quadrierer quadrieren ihren am Eingang anliegenden Operanden ebenfalls im Galoisfeld GF(2m).
-
Der die Komponente s1 führende Eingang ist mit dem ersten Eingang des Multiplikators 41 und mit dem ersten Eingang des Multiplikators 44 verbunden.
-
Der die Komponente s2 führende Eingang ist mit dem ersten Eingang des Multiplikators 42, mit dem ersten Eingang des Multiplikators 47 und mit dem Eingang des Quadrierers 45 verbunden.
-
Der die Komponente s3 führende Eingang ist mit dem zweiten Eingang des Multiplikators 42, mit dem zweiten Eingang des Multiplikators 44 und mit dem Eingang des Quadrierers 48 verbunden.
-
Der die Komponente s4 führende Eingang ist mit dem zweiten Eingang des Multiplikators 41 und mit dem zweiten Eingang des Multiplikators 47 verbunden.
-
Der Ausgang des Multiplikators 41 ist in den ersten Eingang der XOR-Schaltung 43 geführt. Der Ausgang des Multiplikators 42 ist in den zweiten Eingang der XOR-Schaltung 43 geführt. An dem Ausgang der XOR-Schaltung 43 wird das Signal s1s4 + s2s3 bereitstellt.
-
Der Ausgang des Multiplikators
44 ist in den ersten Eingang der XOR-Schaltung
46 geführt. Der Ausgang des Quadrierers
45 ist mit dem zweiten Eingang der XOR-Schaltung
46 verbunden. An dem Ausgang der XOR-Schaltung
46 wird das Signal
bereitstellt.
-
Der Ausgang des Multiplikators
47 ist in den ersten Eingang der XOR-Schaltung
49 geführt. Der Ausgang des Quadrierers
48 ist mit dem zweiten Eingang der XOR-Schaltung
49 verbunden. An dem Ausgang der XOR-Schaltung
49 wird das Signal
bereitstellt.
-
Bytefehlerkorrekturwerte für 2-Bytefehler
-
5 zeigt eine beispielhafte Schaltung zur Bildung von Bytefehlerkorrekturwerten für insgesamt N Bytes im Falle eines 2-Bytefehlers. Die betrachteten N Bytes sind von 0 bis N - 1 nummeriert.
-
Ein Bytefehlerkorrekturwert a(i)
cor für das i-te Byte mit 0 ≤ i ≤ N - 1 wird in Abhängigkeit von dem aktuellen Fehlersyndrom s, der Byteposition i und dem Bytefehlerpositionssignal BPs
i bestimmt gemäß
-
Beispielsweise werden für alle N Bytepositionen Bytefehlerkorrekturwerte bestimmt. Für Bytepositionen, die nicht fehlerhaft sind, werden die Bytefehlerkorrekturwerte maskiert. Beispielsweise kann die Maskierung erfolgen, indem ein Bytefehlerpositionssignal mit dem Wert 0 mit dem Bytefehlerkorrekturwert multipliziert wird.
-
Liegt ein 2-Bytefehler in den Bytepositionen i und j vor, können das i-te und das j-Byte korrigiert werden, indem das i-te und j-te Byte mit einem entsprechenden Bytefehlerkorrekturwert a(i)cor = a(i) ≠ 0 bzw. a(j)cor = a(j) ≠ 0 komponentenweise XOR-verknüpft werden.
-
Die Bytes, die nicht fehlerhaft sind, werden nicht korrigiert. Hierzu werden für deren Bytepositionen die Bytefehlerkorrekturwerte zu 0 gesetzt (z.B. durch die vorstehend erläuterte Multiplikation des Bytefehlerkorrekturwerts mit 0) und die korrekten Bytes werden sodann komponentenweise mit diesem Wert 0 XOR-verknüpft. Durch die XOR-Verknüpfung mit dem Wert 0 bleibt der ursprüngliche Wert unverändert.
-
Für das i-te fehlerhafte Byte ist das Bytefehlerpositionssignal BPs
i = 1 und es gilt:
-
Für das j-te fehlerhafte Byte ist das Bytefehlerpositionssignal BPs
j = 1 und es gilt:
-
Für ein k-tes, nicht fehlerhaftes Byte mit k ≠ i, j ist das Bytefehlerpositionssignal BPs
k = 0 und es gilt:
-
Ist das k-te Byte mit k ≠ i, j nicht fehlerhaft, wird es nicht korrigiert. Dies kann gemäß dem in 5 gezeigten Beispiel erreicht werden, indem das k-te Byte komponentenweise mit dem Wert 0 XOR-verknüpft wird, so dass sich der Wert des k-ten Bytes nicht ändert. Damit maskiert das Bytefehlerpositionssignal den Bytefehlerkorrekturwert zu 0, so dass keine Korrektur erfolgt.
-
Liegt im Falle eines 2-Bytefehlers ein erster Bytefehler in der Byteposition j und ein zweiter Bytefehler in der Byteposition k vor, sind die Bytefehlerkorrekturwerte a(j)
cor und a(k)
cor ungleich 0, während die Bytefehlerkorrekturwerte a(i)
cor für i ≠ j, k jeweils gleich 0 sind. Es gilt dann auch
und
-
5 umfasst N Bytefehler-Positionssignalbildner 10, 11, ..., 1i, ..., 1N-1 zur Bildung der Bytefehlerpostionssignale BPs0, BPs1, ..., BPsi, ..., BPsN-1 mit jeweils einem 4 · m-Bit breiten (bzw. einem 4 · m-dimensionalen) Eingang zur Eingabe des Fehlersyndromes s und einem 1-Bit breiten (bzw. 1-dimensionalen) Ausgang zur Ausgabe der Bytefehlerpositionssignale BPs0, BPs1, ..., BPsi, ..., BPsN-1.
-
5 zeigt weiterhin N Bytefehlerkorrekturwertbildner 510, 511, ..., 51i, ..., 5N-1 mit jeweils
- - einem ersten 1-Bit breiten Eingang zur Eingabe eines Bytefehlerpositionssignals,
- - einem zweiten 3 · m-Bit breiten Eingang zur Eingabe der Komponenten s1, s2, s3 des Fehlersyndromes s und
- - einem m-Bit breiten Ausgang zur Ausgabe eines der Bytefehlerkorrekturwerte a(0)cor, a(1)cor, ..., a(i)cor, ..., a(N - 1)cor für die entsprechenden Bytepositionen.
-
Weiterhin umfasst 5 N XOR-Schaltungen 520, 521, ..., 52i, ..., 52N-1 mit jeweils
- - einem m-Bit breiten ersten Eingang zur Eingabe des entsprechen Bytefehlerkorrekturwerts,
- - einem zweiten m-Bit breiten Eingang zur Eingabe des entsprechenden zu korrigierenden Bytes und
- - einem m-Bit breiten Ausgang zur Ausgabe des jeweils m-Bit breiten korrigierten Bytes.
-
An dem 4 · m-Bit breiten Eingang des Bytefehler-Positionssignalbildners 10 liegt das aktuelle Fehlersyndrom s an. An dem 1-Bit breiten Ausgang des Bytefehler-Positionssignalbildners 10, der mit dem ersten Eingang des Bytefehler-Korrekturwertbildners 510 verbunden ist, wird das Bytefehlerpositionssignal BPs0 ausgegeben.
-
An dem zweiten 3 · m-Bit breiten Eingang des Bytefehler-Korrekturwertbildners
510 liegen die Komponenten s
1, s
2, s
3 des Fehlersyndromes s an. Der Bytefehler-Korrekturwertbildner
510 stellt an seinem Ausgang den Bytefehlerkorrekturwert a(0)
cor bereit. Der Ausgang des Bytefehler-Korrekturwertbildners
510 ist mit dem ersten Eingang der XOR-Schaltung
520 verbunden. An dem zweiten Eingang der XOR-Schaltung
520 liegt der eventuell fehlerhafte Byte-Wert v'
0 des 0-ten Bytes an. Die XOR-Schaltung
520 bildet die komponentenweise XOR-Verknüpfung von dem eventuell fehlerhaften Byte-Wert v'
0 und dem Bytefehlerkorrekturwert a(0)
cor und gibt an ihrem Ausgang den Wert
aus. Der Bytefehlerkorrekturwert a(0)
cor
- - ist gleich 0, wenn das 0-te Byte korrekt ist und BPs0 = 0 ist und
- - ungleich 0, wenn das 0-te Byte fehlerhaft ist und BPs0 = 1 ist.
-
An dem 4 · m-Bit breiten Eingang des Bytefehler-Positionssignalbildners 11 liegt das aktuelle Fehlersyndrom s an. An dem 1-Bit breiten Ausgang des Bytefehler-Positionssignalbildners 11, der mit dem ersten Eingang des Bytefehler-Korrekturwertbildners 511 verbunden ist, wird das Bytefehlerpositionssignal BPs1 ausgegeben.
-
An dem zweiten 3 · m-Bit breiten Eingang des Bytefehler-Korrekturwertbildners
511 liegen die Komponenten s
1, s
2, s
3 des Fehlersyndromes s an. Der Bytefehler-Korrekturwertbildner
511 stellt an seinem Ausgang den Bytefehlerkorrekturwert a(1)
cor bereit. Der Ausgang des Der Bytefehler-Korrekturwertbildner
511 ist mit dem ersten Eingang der XOR-Schaltung
521 verbunden. An dem zweiten Eingang der XOR-Schaltung
521 liegt der eventuell fehlerhafte Byte-Wert v'
1 des 1-ten Bytes an. Die XOR-Schaltung
521 bildet die komponentenweise XOR-Verknüpfung von dem eventuell fehlerhaften Byte-Wert v'
1 und dem Bytefehlerkorrekturwert a(1)
cor und gibt an ihrem Ausgang den Wert
aus. Der Bytefehlerkorrekturwert a(1)
cor
- - ist gleich 0, wenn das 1-te Byte korrekt ist und BPs1 = 0 ist und
- - ungleich 0, wenn das 1-te Byte fehlerhaft ist und BPs1 = 1 ist.
-
An dem 4 · m-Bit breiten Eingang des Bytefehler-Positionssignalbildners 1i liegt das aktuelle Fehlersyndrom s an. An dem 1-Bit breiten Ausgang des Bytefehler-Positionssignalbildners 1i, der mit dem ersten Eingang des Bytefehlerkorrekturwertbildners 51i verbunden ist, wird das Bytefehlerpositionssignal BPsi ausgegeben.
-
An dem zweiten 3 · m-Bit breiten Eingang des Bytefehler-Korrekturwertbildners
51i liegen die Komponenten s
1, s
2, s
3 des Fehlersyndromes s an. Der Bytefehler-Korrekturwertbildner
51i stellt an seinem Ausgang den Bytefehlerkorrekturwert a(i)
cor bereit. Der Ausgang des Bytefehler-Korrekturwertbildners
51i ist mit dem ersten Eingang der XOR-Schaltung
52i verbunden. An dem zweiten Eingang der XOR-Schaltung
52i liegt der eventuell fehlerhafte Byte-Wert v'
i des i-ten Bytes an. Die XOR-Schaltung
52i bildet die komponentenweise XOR-Verknüpfung von dem eventuell fehlerhaften Byte-Wert v'
i und dem Bytefehlerkorrekturwert a(i)
cor und gibt an ihrem Ausgang den Wert
aus. Der Bytefehlerkorrekturwert a(i)
cor
- - ist gleich 0, wenn das i-te Byte korrekt ist und BPsi = 0 ist und
- - ungleich 0, wenn das i-te Byte fehlerhaft ist und BPsi = 1 ist.
-
An dem 4 · m-Bit breiten Eingang des Bytefehler-Positionssignalbildners 1N-1 liegt das aktuelle Fehlersyndrom s an. An dem 1-Bit breiten Ausgang des Bytefehler-Positionssignalbildners 1N-1, der mit dem ersten Eingang des Bytefehlerkorrekturwertbildners 51N-1 verbunden ist, wird das Bytefehlerpositionssignal BPsN-1 ausgegeben.
-
An dem zweiten 3 · m-Bit breiten Eingang des Bytefehler-Korrekturwertbildners
51N-
1 liegen die Komponenten s
1, s
2, s
3 des Fehlersyndromes s an. Der Bytefehler-Korrekturwertbildner
51N-
1 stellt an seinem Ausgang den Bytefehlerkorrekturwert a(N - 1)
cor bereit. Der Ausgang des Bytefehler-Korrekturwertbildners
51N-
1 ist mit dem ersten Eingang der XOR-Schaltung
52N-
1 verbunden. An dem zweiten Eingang der XOR-Schaltung
52N-
1 liegt der eventuell fehlerhafte Byte-Wert v'
N-1 des (N - 1)-ten Bytes an. Die XOR-Schaltung
52N-
1 bildet die komponentenweise XOR-Verknüpfung von dem eventuell fehlerhaften Byte-Wert v'
N-1 und dem Bytefehlerkorrekturwert a(N - 1)
cor und gibt an ihrem Ausgang den Wert
aus. Der Bytefehlerkorrekturwert a(N - 1)
cor
- - ist gleich 0, wenn das (N - 1)-te Byte korrekt ist und BPsN-1 = 0 ist und
- - ungleich 0, wenn das (N - 1)-te Byte fehlerhaft ist und BPsN-1 = 1 ist.
-
So kann ein Byte-Korrektor 530 den Bytefehler-Positionssignalbildner 10 und den Bytefehler-Korrekturwertbildner 510, ein Byte-Korrektor 531 den Bytefehler-Positionssignalbildner 11 und den Bytefehler-Korrekturwertbildner 511, ein Byte-Korrektor 53i den Bytefehler-Positionssignalbildner 1i und den Bytefehler-Korrekturwertbildner 51i und ein Byte-Korrektor 53N-1 den Bytefehler-Positionssignalbildner 1N-1 und den Bytefehler-Korrekturwertbildner 51N-1 umfassen. Entsprechend können die Byte-Korrektoren 530, 531, ..., 53i, ..., 53N-1 als Byte-Korrektoren für 2-Bytefehler bezeichnet werden.
-
In diesem Beispiel geben die Byte-Korrektoren für einen 2-Bytefehler die Bytefehlerkorrekturwerte für diejenigen beiden Bytepositionen aus, die fehlerhaft sind. Für Bytepositionen, die keinen Fehler aufweisen, ist der Bytefehlerkorrekturwert gleich 0.
-
Für eine eine fehlerhafte Byteposition i gilt:
-
Für eine Byteposition j, die nicht fehlerhaft ist, gilt:
Hierbei ist a(i) der Bytefehlerkorrekturwert des i-ten Bytes.
-
Um anschaulich darzustellen, dass die Bytefehler-Positionssignalbildner in Abhängigkeit von den vier Komponenten s1, s2, s3, s4 des Fehlersyndroms s das entsprechende Bytefehlerpositionssignal bilden und dass die Bytefehler-Korrekturwertbildner in Abhängigkeit von den drei Komponenten s1, s2, s3 dieses Fehlersyndromes s den entsprechenden Bytefehlerkorrekturwert bilden, sind in 5 beispielhaft zwei Eingangsleitungen dargestellt, eine Eingangsleitung zur Eingabe der Komponenten s1, s2, s3, s4 und eine weitere Eingangsleitung zur Eingabe der Komponenten s1, s2, s3. Diese Leitungen können für die Komponenten s1, s2, s3 auch zusammengefasst werden.
-
Für r = 0,...,N - 1 ist ein Bytefehler-Korrekturwertbildner
51r so konfiguriert, dass er an seinem m-Bit breiten Ausgang, der mit dem ersten m-Bit breiten Eingang einer XOR-Schaltung
52r verbunden ist, im Falle eines 2-Bytefehlers den Bytefehlerkorrekturwert so bildet, dass gilt:
-
Sind im Falle eines 2-Bytefehlers das j-te und das k-te Byte fehlerhaft, wird von dem Bytefehler-Korrekturwertbildner
51j der Bytefehlerkorrekturwert
und von dem Bytefehler-Korrekturwertbildner
51k der Bytefehlerkorrekturwert
ausgegeben. Für alle anderen Bytefehler-Korrekturwertbildner
51r mit r ≠ j, k und 0 ≤ r ≤ N - 1 ist der Bytefehlerkorrekturwert gleich a(r)
cor = 0.
-
Bytefehler-Korrekturwertbildner
-
6 zeigt eine mögliche Ausgestaltung des Bytefehler-Korrekturwertbildners 51r, wobei r einen Wert von 0 bis N - 1 annehmen kann.
-
Der Bytefehler-Korrekturwertbildner 51r umfasst
- - zwei Multiplikatoren 61, 66 mit jeweils einem ersten und einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - zwei XOR-Schaltungen 63, 64 mit jeweils einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - einen Konstantenmultiplizierer 67 mit einem ersten und einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang, wobei an dem zweiten Eingang ein konstanter Wert α2r anliegt,
- - einen Quadrierer 62 mit einem m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - eine Invertierschaltung 65 mit einem m-Bit breiten Eingang und einem m-Bit breiten Ausgang und
- - eine UND-Schaltung 68 mit einem ersten 1-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang.
-
Am ersten Eingang des Multiplikators 61 liegt der Wert der Komponente s1 und am zweiten Eingang des Multiplikators 61 liegt der Wert der Komponente s3 an. Der Multiplikator 61 bildet im Galoisfeld GF(2m) den Wert s1 · s3 und gibt an seinem Ausgang den Wert s1 · s3 aus. Der Ausgang des Multiplikators 61 ist mit dem ersten Eingang der XOR-Schaltung 63 verbunden.
-
Der zweite Eingang der XOR-Schaltung
63 ist mit dem Ausgang des Quadrierers
62 verbunden, an dessen Eingang der Wert der Komponente s
2 anliegt. Somit gibt der Quadrierer
62 an seinem Ausgang den Wert
aus. Die XOR-Schaltung
63 bildet die komponentenweise XOR-Verknüpfung der an ihrem beiden Eingängen anliegenden Werte und gibt an ihrem Ausgang den Wert
aus. Der Ausgang der XOR-Schaltung
63 ist mit dem ersten Eingang des Multiplikators
66 verbunden.
-
Am ersten Eingang der XOR-Schaltung 64 liegt der Wert der Komponente s3 an. Am ersten Eingang des Konstantenmultiplizierers 67 liegt der Wert der Komponente s1 und am zweiten Eingang des Konstantenmultiplizierers 67 liegt die Konstante α2r an. Der Konstantenmultiplizierer 67 realisiert die Operation α2r · s1 im Galoisfeld GF(2m). Der Konstantenmultiplizierer kann beispielsweise unter Verwendung von XOR-Gattern implementiert werden.
-
Am Ausgang der XOR-Schaltung
64 wird der Wert s
3 + α
2rs
1 bereitgestellt und an den Eingang des Invertierers
65 geführt. Der Invertierer
65 stellt an seinem Ausgang den Wert
bereit.
-
Der Ausgang des Invertierers
65 ist mit dem ersten Eingang des Multiplikators
66 verbunden. Damit stellt der Multiplikator
66 an seinem Ausgang den Wert
bereit. Dabei ist a(r) der Bytefehlerkorrekturwert für das r-te Byte. Am ersten Eingang der UND-Schaltung
68 liegt der Wert des Bytefehlerpositionssignals BPs
r an. Der zweite Eingang der UND-Schaltung
68 ist mit dem Ausgang des Multiplikators
66 verbunden.
-
Die UND-Schaltung realisiert eine bitweise UND-Verknüpfung der an ihren zweiten Eingängen anliegenden m-Bit mit dem Bytefehlerpositionssignal BPs
r, so dass sie an ihrem Ausgang den Wert
bereitstellt.
-
Bytefehler-Korrekturwertbilder, alternative Ausführungsform
-
7 zeigt eine weitere mögliche Ausgestaltung des Bytefehler-Korrekturwertbildners 51r, der wie in 6 für das r-te Byte beschrieben wird, wobei r einen Wert von 0 bis (N - 1) annehmen kann.
-
Der in 7 gezeigte Bytefehler-Korrekturwertbildner 51r umfasst
- - drei Multiplikatoren 71, 75, 76 jeweils mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - zwei XOR-Schaltungen 72, 77 jeweils mit einem m-Bit breiten ersten Eingang, einem m-Bit breiten zweiten Eingang und einem m-Bit breiten Ausgang,
- - einen Konstantenmultiplizierer 78 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang, wobei an dem zweiten Eingang ein konstanter Wert α2r anliegt,
- - einen Quadrierer 73 mit einem m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - zwei Invertierer 74, 79 jeweils mit einem m-Bit breiten Eingang und einem m-Bit breiten Ausgang und
- - eine UND-Schaltung 710 mit einem ersten 1-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang.
-
Am ersten Eingang des Multiplikators 71 liegt der Wert der Komponente s1 und an dem zweiten Eingang des Multiplikators 71 liegt der Wert der Komponente s3 an. Der Multiplikator 71 bildet im Galoisfeld GF(2m) den Wert s1 · s3 und stellt an seinem Ausgang den Wert s1 · s3 bereit Der Ausgang des Multiplikators 71 ist mit dem ersten Eingang der XOR-Schaltung 72 verbunden.
-
Der zweite Eingang der XOR-Schaltung
72 ist mit dem Ausgang des Quadrierers
73 verbunden, an dessen Eingang der Wert der Komponente s
2 anliegt. Damit stellt der Quadrierer
73 an seinem Ausgang den Wert
bereit. Die XOR-Schaltung
72 bildet die komponentenweise XOR-Verknüpfung der an ihrem beiden Eingängen anliegenden Werte und stellt an ihrem Ausgang den Wert
bereit. Der Ausgang der XOR-Schaltung
72 ist mit dem Eingang des Invertierers
74 verbunden. An seinem Ausgang stellt der Invertierer
74 den Wert
bereit.
-
Der Ausgang des Invertierers 74 ist mit dem ersten Eingang des Multiplikators 75 verbunden, an dessen zweitem Eingang der Wert der Komponente s3 anliegt. Weiterhin ist der Ausgang des Invertierers 74 mit dem ersten Eingang des Multiplikators 76 verbunden, an dessen zweitem Eingang der Wert der Komponente s1 anliegt.
-
Der Multiplikator
76 stellt an seinem Ausgang den Wert
bereit. Der Ausgang des Multiplikators
76 ist mit dem ersten Eingang des Konstantenmultiplizierers
78 verbunden. An dem zweiten Eingang des Konstantenmultiplizierers
78 liegt der Wert α
2r an. Der Konstantenmultiplizierers
78 stellt an seinem Ausgang den Wert
bereit. Der Konstantenmultiplizierer
78 multipliziert den Wert, der an seinem ersten Eingang anliegt, im Galoisfeld GF2
m mit dem Wert der Konstanten α
2r, die an seinem zweiten Eingang anliegt. Diese Multiplikation wird durch entsprechende XOR-Verknüpfungen der Bits, die an dem ersten Eingang anliegen, implementiert. Die Konstante α
2r ist dem r-ten Byte eindeutig zugeordnet.
-
Der Multiplikator
75 stellt an seinem Ausgang den Wert
bereit. Der Ausgang des Multiplikators
75 ist mit dem ersten Eingang der XOR-Schaltung
77 verbunden.
-
Der Ausgang des Konstantenmultiplizierers
78, ist mit dem zweiten Eingang der XOR-Schaltung
77 verbunden. Die XOR-Schaltung
77 stellt an ihrem Ausgang den Wert
bereit. Der Ausgang der XOR-Schaltung
77 ist mit dem Eingang des Invertierers
79 verbunden.
-
Der Invertierer
79 stellt an seinem Ausgang den Wert
bereit. Der Ausgang des Invertierers
79 ist mit dem zweiten Eingang der UND-Schaltung
710 verbunden.
-
An dem ersten Eingang der UND-Schaltung
710 liegt der Wert des Bytefehlerpositionssignals BPs
r an. Die UND-Schaltung
710 realisiert eine bitweise UND-Verknüpfung der an ihrem zweiten Eingang anliegenden m-Bit mit dem Bytefehlerpositionssignal BPs
r. Somit stellt die UND-Schaltung
710 an ihrem Ausgang den Wert
bereit.
-
Der in
7 gezeigte Teil umfassend die Multiplikatoren
71,
75,
76, die XOR-Schaltung
72 und den Quadrierer
73 gibt an den Ausgängen der Multiplikatoren
75 und
76 die Werte
und
aus, die allein durch die Werte der Komponenten s
1, s
2, s
3 bestimmt und unabhängig von der Byteposition r sind. Dieser Teil der Schaltung ist für alle in
5 gezeigten Bytefehler-Korrekturwertbildner
510,
511, ...,
51N-
1 gleich. Somit ist es möglich, diesen Schaltungsteil nur einmal vorzusehen und die Ausgabesignale der Multiplikatoren
71,
75 und
76 für alle Bytefehler-Korrekturwertbildner
510 bis
51N-
1 zu nutzen. Für die unterschiedlichen Bytepositionen
0 bis N-1 ist dann nur jeweils der verbleibende in
7 gezeigte Teil
711 der Schaltung zu realisieren, umfassend die XOR-Schaltung
77, den Konstantenmultiplizierer
78, den Invertierer
79 und die UND-Schaltung
710.
-
Es ist eine Option, einen Bytefehler-Korrekturwertbildner für korrigierbare Bytepositionen, beispielsweise für alle korrigierbaren Bytepositionen oder für einen Teil der korrigierbaren Bytepositionen unter Verwendung von höchsten drei Multiplikationen zu realisieren. Dabei können die drei Multiplikationen unter Verwendung von drei Multiplikatoren implementiert sein. Auch ist es eine Option, dass insbesondere weitere Multiplikationen mit einer Konstanten mittels Konstantenmultiplizierer durchgeführt werden.
-
Korrektur sowohl von 1-Byte, als auch 2-Bytefehlern, Fig.8
-
8 zeigt eine beispielhafte Schaltung zur Korrektur von 1-Bytefehlern und 2-Bytefehlern, wobei die Schaltungen zur Bestimmung von Bytefehlerpositionssignalen für 2-Bytefehler und zur Korrektur von 2-Bytefehlern verwendet werden können.
-
Die in 8 gezeigte Schaltung ist beispielsweise derart ausgestaltet, dass
- - ein 2-Bytefehler korrigiert wird, wenn ein 2-Bytefehler vorliegt,
- - ein 1-Bytefehler korrigiert wird, wenn ein 1-Bytefehler vorliegt und
- - keine Korrektur erfolgt, wenn kein Fehler vorliegt.
-
Hierzu umfasst 8
- - N Bytefehler-Korrekturwertbildner 810, ..., 81i, ..., 81N-1 zur Korrektur von 1-Bytefehlern, jeweils mit einem 2 · m-Bit breiten Eingang zur Eingabe der Komponenten s1, s2 und einem m-Bit breiten Ausgang zur Ausgabe eines m-Bit breiten Bytefehlerkorrekturwerts,
- - N Byte-Korrektoren 530, ..., 53i, ..., 53N-1 zur Korrektur von 2-Bytefehlern, jeweils mit einem 4 · m-Bit breiten Eingang zur Eingabe der Komponenten s1, s2, s3, s4 und einem m-Bit breiten Ausgang zur Ausgabe eines m-Bit breiten Bytefehlerkorrekturwerts, wie dies in 5 beschrieben ist,
- - N Multiplexer 820, ..., 82i, ..., 82N-1, jeweils mit
- - einem ersten m-Bit breiten Eingang (0-Eingang),
- - einem zweiten m-Bit breiten Eingang (1-Eingang),
- - einem 1-Bit breiten Steuereingang, an den ein binäres Steuersignal st anlegbar ist, und
- - einem m-Bit breiten Ausgang,
- - N UND-Schaltungen 830, ..., 83i, ..., 83N-1, jeweils mit einem ersten 1-Bit breiten Eingang zur Eingabe eines binären Fehlersignals E, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang und
- - N XOR-Schaltungen 840, ..., 84i, ..., 84N-1, jeweils mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang.
-
Eine Leitung 85 führt die Komponenten s1, s2 und ist mit dem jeweiligen Eingang der Bytefehler-Korrekturwertbildner 810, ..., 81i, ..., 81N-1 verbunden.
-
Eine Leitung 86 führt die Komponenten s1, s2, s3, s4 und ist mit dem jeweiligen Eingang der Byte-Korrektoren 530, ..., 53i, ..., 53N-1 verbunden.
-
Der Bytefehler-Korrekturwertbildner 810 stellt im Falle eines 1-Bytefehlers in der Byteposition 0 an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte 0-te Byte v'0 bereit. Dies gilt entsprechend für die weiteren Bytefehler-Korrekturwertbildner. So stellt der Bytefehler-Korrekturwertbildner 81i im Falle eines 1-Bytefehlers in der Byteposition i an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte i-te Byte v'i bereit. Der Bytefehler-Korrekturwertbildner 81N-1 stellt im Falle eines 1-Bytefehlers in der Byteposition (N - 1) an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte (N - 1)-te Byte v'N-1 bereit.
-
Eine mögliche Realisierung eines Bytefehler-Korrekturwertbildner zur Korrektur eines 1-Bytefehlers wird im Zusammenhang mit 10 erläutert.
-
Im Hinblick auf eine mögliche Realisierung der Byte-Korrektoren 530 bis 53N-1 sei beispielsweise auf die im Zusammenhang mit 2 beschriebenen Bytefehler-Positionssignalbildner und die im Zusammenhang mit 6 und 7 beschriebenen Bytefehler-Korrekturwertbildner verwiesen.
-
Der Ausgang des Bytefehler-Korrekturwertbildners 810 ist mit dem ersten Eingang des Multiplexers 820 verbunden. Der Ausgang des Byte-Korrektors 530 ist mit dem zweiten Eingang des Multiplexers 820 verbunden. Ist der Wert des Steuersignales st gleich 0, dann verbindet der Multiplexer 820 seinen 0-Eingang (den ersten Eingang) mit seinem Ausgang. Ist der Wert des Steuersignales st gleich 1, dann verbindet der Multiplexer 820 seinen 1-Eingang (den zweiten Eingang) mit seinem Ausgang.
-
Am ersten Eingang der UND-Schaltung
830 liegt das binäre Fehlersignal E an. Der Ausgang des Multiplexers
820 ist mit dem zweiten Eingang der UND-Schaltung
830 verbunden. Der Ausgang der UND-Schaltung
830 ist mit dem ersten Eingang der XOR-Schaltung
840 verbunden. An dem zweiten Eingang der XOR-Schaltung
840 liegt das eventuell fehlerhafte Byte v'
0 an. Die XOR-Schaltung
840 stellt an ihrem Ausgang den korrigierten Byte-Wert
bereit.
-
Die UND-Schaltung 830 ermöglicht eine komponentenweise UND-Verknüpfung des an ihrem zweiten Eingang anliegenden m-stelligen Werts mit dem Fehlersignal E. Ist das Fehlersignal E = 0, gibt die UND-Schaltung 830 den m-komponentigen Wert 0 aus. Ist das Fehlersignal E = 1, gibt die UND-Schaltung 830 den an ihrem zweiten Eingang anliegenden Wert aus.
-
Diese Ausführungen gelten für die verbleibenden Bytepositionen entsprechend.
-
Der Ausgang des Bytefehler-Korrekturwertbildners 81i ist mit dem ersten Eingang des Multiplexers 82i verbunden. Der Ausgang des Bytefehler-Korrekturwertbildners 53i ist mit dem zweiten Eingang des Multiplexers 82i verbunden. Ist der Wert des Steuersignales st gleich 0, dann verbindet der Multiplexer 82i seinen 0-Eingang (den ersten Eingang) mit seinem Ausgang. Ist der Wert des Steuersignales st gleich 1, dann verbindet der Multiplexer 82i seinen 1-Eingang (den zweiten Eingang) mit seinem Ausgang.
-
Am ersten Eingang der UND-Schaltung
83i liegt das binäre Fehlersignal E an. Der Ausgang des Multiplexers
82i ist mit dem zweiten Eingang der UND-Schaltung
83i verbunden. Der Ausgang der UND-Schaltung
83i ist mit dem ersten Eingang der XOR-Schaltung
84i verbunden. An dem zweiten Eingang der XOR-Schaltung
84i liegt das eventuell fehlerhafte Byte v'
i an. Die XOR-Schaltung
84i stellt an ihrem Ausgang den korrigierten Byte-Wert
bereit.
-
Die UND-Schaltung 83i ermöglicht eine komponentenweise UND-Verknüpfung des an ihrem zweiten Eingang anliegenden m-stelligen Werts mit dem Fehlersignal E. Ist das Fehlersignal E = 0, gibt die UND-Schaltung 83i den m-komponentigen Wert 0 aus. Ist das Fehlersignal E = 1, gibt die UND-Schaltung 83i den an ihrem zweiten Eingang anliegenden Wert aus.
-
Der Ausgang des Bytefehler-Korrekturwertbildners 81N-1 ist mit dem ersten Eingang des Multiplexers 82N-1 verbunden. Der Ausgang des Bytefehler-Korrekturwertbildners 53N-1 ist mit dem zweiten Eingang des Multiplexers 82N-1 verbunden. Ist der Wert des Steuersignales st gleich 0, dann verbindet der Multiplexer 82N-1 seinen 0-Eingang (den ersten Eingang) mit seinem Ausgang. Ist der Wert des Steuersignales st gleich 1, dann verbindet der Multiplexer 82N-1 seinen 1-Eingang (den zweiten Eingang) mit seinem Ausgang.
-
Am ersten Eingang der UND-Schaltung
83N-
1 liegt das binäre Fehlersignal E an. Der Ausgang des Multiplexers
82N-
1 ist mit dem zweiten Eingang der UND-Schaltung
83N-
1 verbunden. Der Ausgang der UND-Schaltung
83N-
1 ist mit dem ersten Eingang der XOR-Schaltung
84N-
1 verbunden. An dem zweiten Eingang der XOR-Schaltung
84N-
1 liegt das eventuell fehlerhafte Byte v'
N-1 an. Die XOR-Schaltung
84N-
1 stellt an ihrem Ausgang den korrigierten Byte-Wert
bereit.
-
Die UND-Schaltung 83N-1 ermöglicht eine komponentenweise UND-Verknüpfung des an ihrem zweiten Eingang anliegenden m-stelligen Werts mit dem Fehlersignal E. Ist das Fehlersignal E = 0, gibt die UND-Schaltung 83N-1 den m-komponentigen Wert 0 aus. Ist das Fehlersignal E = 1, gibt die UND-Schaltung 83N-1 den an ihrem zweiten Eingang anliegenden Wert aus.
-
Das Fehlersignal E nimmt
- - den Wert 1 an, wenn ein 1-Bytefehler oder ein 2-Bytefehler aufgetreten ist bzw.
- - den Wert 0 an, wenn kein Fehler aufgetreten ist.
-
Das Steuersignal st nimmt
- - den Wert 0 an, wenn ein 1-Bytefehler aufgetreten ist und
- - den Wert 1 an, wenn ein 2-Bytefehler aufgetreten ist.
-
Schaltung zur Korrektur von mehr als zwei Bytefehlern
-
9 zeigt eine Schaltung zur Korrektur von 1-Bytefehlern, 2-Bytefehlern bis hin zu t-Bytefehlern. In dieser Schaltung können die in 8 beschriebenen Elemente entsprechend eingesetzt werden.
-
Die in 9 gezeigte Schaltung ermöglicht es, dass
- - ein 1-Bytefehler korrigiert wird, wenn ein 1-Bytefehler vorliegt,
- - ...
- - ein 2-Bytefehler korrigiert wird, wenn ein 2-Bytefehler vorliegt,
- - ein t-Bytefehler korrigert wird, wenn ein t-Bytefehler vorliegt und
- - keine Korrektur erfolgt, wenn kein Fehler vorliegt.
-
Beispielhaft wird der Fall beschrieben, dass ein t-Bytefehler-korrigierender und (t + 1)-Bytefehler-erkennender Code genutzt wird, wobei insbesondere t > 2 gilt.
-
Die Schaltung gemäß 9 umfasst
- - die N Bytefehler-Korrekturwertbildner 810 bis 81N-1 gemäß 8,
- - die N Byte-Korrektoren 530 bis 53N-1 gemäß 8 (wie auch beschrieben in 5), bis hin zu
- - N Bytefehler-Korrekturwertbildner 910, ..., 91i, ..., 91N-1 zur Korrektur von t-Bytefehlern, jeweils mit einem 2 · t · m-Bit breiten Eingang zur Eingabe der Komponenten s1, s2, ..., s2t und einem m-Bit breiten Ausgang zur Ausgabe eines m-Bit breiten Bytefehlerkorrekturwerts,
- - N Multiplexer 920, ..., 92i, ..., 92N-1, jeweils mit
- - einem ersten m-Bit breiten Eingang (0-Eingang),
- - einem zweiten m-Bit breiten Eingang (1-Eingang),
- - bis hin zu einem t-ten m Bit breiten Eingang ((t - 1)-Eingang)
- - einem Steuereingang, an dem ein Steuersignal st anliegt, das t verschiedene Werte annehmen kann und
- - einem m-Bit breiten Ausgang.
- - N UND-Schaltungen 930, ..., 93i, ..., 93N-1, jeweils mit einem ersten 1-Bit breiten Eingang zur Eingabe eines binären Fehlersignales E, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang und
- - N XOR-Schaltungen 940, ..., 94i, ..., 94N-1, jeweils mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang.
-
Der 0-Eingang eines der Multiplexers 920 bis 92N-1 ist mit seinem Ausgang verbunden, wenn das Steuersignal st den Wert 0 hat. Entsprechend kann eine Verbindung von einem der Eingänge 0 bis (t - 1) mit dem Ausgang hergestellt werden, indem das entsprechende Steuersignal st einen Wert zwischen 0 und (t - 1) annimmt. Gilt beispielsweise st = (t - 1) = 3, dann ist der dritte Eingang (2-Eingang) des Multiplexers mit seinem Ausgang verbunden.
-
Eine Leitung 95 führt die Komponenten s1, s2 und ist mit dem jeweiligen Eingang der Bytefehler-Korrekturwertbildner 810, ..., 81i, ..., 81N-1 verbunden.
-
Eine Leitung 96 führt die Komponenten s1, s2, s3, s4 und ist mit dem jeweiligen Eingang der Byte-Korrektoren 530, ..., 53i, ..., 53N-1 verbunden.
-
Schließlich ist eine Leitung 97 gezeigt, anhand derer die Komponenten s1, s2, ..., s2t an den jeweiligen Eingang der Bytefehler-Korrekturwertbildner 910, ..., 91i, ..., 91N-1 geführt werden.
-
Der Bytefehler-Korrekturwertbildner 810 stellt im Falle eines 1-Bytefehlers in der Byteposition 0 an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte 0-te Byte v'0 bereit. Dies gilt entsprechend für die weiteren Bytefehler-Korrekturwertbildner. So stellt der Bytefehler-Korrekturwertbildner 81i im Falle eines 1-Bytefehlers in der Byteposition i an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte i-te Byte v'i bereit. Der Bytefehler-Korrekturwertbildner 81N-1 stellt im Falle eines 1-Bytefehlers in der Byteposition (N - 1) an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte (N - 1)-te Byte v'N-1 bereit.
-
Der Byte-Korrektor 530 stellt im Falle eines 2-Bytefehlers an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte 0-te Byte v'0 bereit. Dies gilt entsprechend für die weiteren Bytefehler-Korrekturwertbildner. So stellt der Bytefehler-Korrekturwertbildner 53i im Falle eines 2-Bytefehlers an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte i-te Byte v'1 bereit. Der Bytefehler-Korrekturwertbildner 53N-1 stellt im Falle eines 2-Bytefehlers an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte (N - 1)-te Byte v'N-1 bereit.
-
Der Bytefehler-Korrekturwertbildner 910 stellt im Falle eines t-Bytefehlers an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte 0-te Byte v'0 bereit. Dies gilt entsprechend für die weiteren Bytefehler-Korrekturwertbildner. So stellt der Bytefehler-Korrekturwertbildner 91i im Falle eines t-Bytefehlers an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte i-te Byte v'i bereit. Der Bytefehler-Korrekturwertbildner 91N-1 stellt im Falle eines t-Bytefehlers an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte (N - 1)-te Byte v'N-1 bereit.
-
Für nicht-fehlerhafte Bytes sind die zu diesen Bytepositionen zugeordneten Bytefehlerkorrekturwerte jeweils mit dem Wert 0 maskiert.
-
Der Ausgang des Bytefehler-Korrekturwertbildners 810 ist mit dem ersten Eingang (0-Eingang) des Multiplexers 920 verbunden. Der Ausgang des Byte-Korrektoren 530 ist mit dem zweiten Eingang (1-Eingang) des Multiplexers 920 verbunden. Entsprechend ist der Ausgang des Bytefehler-Korrekturwertbildners 910 mit dem t-ten Eingang ((t - 1)-Eingang) des Multiplexers 920 verbunden.
-
Am ersten Eingang der UND-Schaltung
930 liegt das binäre Fehlersignal E an. Der Ausgang des Multiplexers
920 ist mit dem zweiten Eingang der UND-Schaltung
930 verbunden. Der Ausgang der UND-Schaltung
930 ist mit dem ersten Eingang der XOR-Schaltung
940 verbunden. An dem zweiten Eingang der XOR-Schaltung
940 liegt das eventuell fehlerhafte Byte v'
0 an. Die XOR-Schaltung
940 stellt an ihrem Ausgang den korrigierten Byte-Wert
bereit.
-
Die UND-Schaltung 930 ermöglicht eine komponentenweise UND-Verknüpfung des an ihrem zweiten Eingang anliegenden m-stelligen Werts mit dem Fehlersignal E. Ist das Fehlersignal E = 0, gibt die UND-Schaltung 930 den m-komponentigen Wert 0 aus. Ist das Fehlersignal E = 1, gibt die UND-Schaltung 930 den an ihrem zweiten Eingang anliegenden Wert aus.
-
Diese Ausführungen gelten für die verbleibenden Bytepositionen entsprechend.
-
Der Ausgang des Bytefehler-Korrekturwertbildners 81i ist mit dem ersten Eingang (0-Eingang) des Multiplexers 92i verbunden. Der Ausgang des Bytefehler-Korrekturwertbildners 53i ist mit dem zweiten Eingang (1-Eingang) des Multiplexers 92i verbunden. Entsprechend ist der Ausgang des Bytefehler-Korrekturwertbildners 91i mit dem t-ten Eingang ((t - 1)-Eingang) des Multiplexers 92i verbunden.
-
Am ersten Eingang der UND-Schaltung
93i liegt das binäre Fehlersignal E an. Der Ausgang des Multiplexers
92i ist mit dem zweiten Eingang der UND-Schaltung
93i verbunden. Der Ausgang der UND-Schaltung
93i ist mit dem ersten Eingang der XOR-Schaltung
94i verbunden. An dem zweiten Eingang der XOR-Schaltung
94i liegt das eventuell fehlerhafte Byte v'
i an. Die XOR-Schaltung
94i stellt an ihrem Ausgang den korrigierten Byte-Wert
bereit.
-
Die UND-Schaltung 93i ermöglicht eine komponentenweise UND-Verknüpfung des an ihrem zweiten Eingang anliegenden m-stelligen Werts mit dem Fehlersignal E. Ist das Fehlersignal E = 0, gibt die UND-Schaltung 93i den m-komponentigen Wert 0 aus. Ist das Fehlersignal E = 1, gibt die UND-Schaltung 93i den an ihrem zweiten Eingang anliegenden Wert aus.
-
Der Ausgang des Bytefehler-Korrekturwertbildners 81N-1 ist mit dem ersten Eingang (0-Eingang) des Multiplexers 92N-1 verbunden. Der Ausgang des Bytefehler-Korrekturwertbildners 53N-1 ist mit dem zweiten Eingang (1-Eingang) des Multiplexers 92N-1 verbunden. Entsprechend ist der Ausgang des Bytefehler-Korrekturwertbildners 91N-1 mit dem t-ten Eingang ((t - 1)-Eingang) des Multiplexers 92N-1 verbunden.
-
Am ersten Eingang der UND-Schaltung
93N-
1 liegt das binäre Fehlersignal E an. Der Ausgang des Multiplexers
92N-
1 ist mit dem zweiten Eingang der UND-Schaltung
93N-
1 verbunden. Der Ausgang der UND-Schaltung
93N-
1 ist mit dem ersten Eingang der XOR-Schaltung
94N-
1 verbunden. An dem zweiten Eingang der XOR-Schaltung
94N-
1 liegt das eventuell fehlerhafte Byte v'
N-1 an. Die XOR-Schaltung
94N-
1 stellt an ihrem Ausgang den korrigierten Byte-Wert
bereit. Die UND-Schaltung
93N-
1 ermöglicht eine komponentenweise UND-Verknüpfung des an ihrem zweiten Eingang anliegenden m-stelligen Werts mit dem Fehlersignal E. Ist das Fehlersignal E = 0, gibt die UND-Schaltung
93N-
1 den m-komponentigen Wert
0 aus. Ist das Fehlersignal E = 1, gibt die UND-Schaltung
93N-
1 den an ihrem zweiten Eingang anliegenden Wert aus.
-
Das Fehlersignal E nimmt
- - den Wert 1 an, wenn ein 1-Bytefehler oder ein 2-Bytefehler, ... oder ein t-Bytefehler aufgetreten bzw.
- - den Wert 0 an, wenn kein Fehler aufgetreten ist.
-
Das Steuersignal st nimmt
- - den Wert 0 an, wenn ein 1-Bytefehler aufgetreten ist,
- - den Wert 1 an, wenn ein 2-Bytefehler aufgetreten ist,
- - usw.
- - den Wert (t - 1) an, wenn ein t-Bytefehler aufgetreten ist.
-
Bytefehler-Korrektor für 1-Bytefehler
-
10 zeigt eine beispielhafte Schaltung für einen Bytefehler-Korrekturwertbildner 81i für das i-te Byte, wie er z.B. unter Bezugnahme auf 8 erläutert ist.
-
Der Bytefehler-Korrekturwertbildner 81i umfasst
- - einen Konstantenmultiplizierer 101 mit
- - einem ersten m-Bit breiten Eingang,
- - einem zweiten m-Bit breiten Eingang, an dem der konstante Wert αi anliegt und
- - einem m-Bit breiten Ausgang,
- - eine XOR-Schaltung 102 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - eine NOR-Schaltung 103 mit einem m-Bit breiten Eingang und einem 1-Bit breiten Ausgang,
- - eine UND-Schaltung 104 mit einem ersten 1-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang.
-
Weiterhin sind in 10 der Multiplexer 82i und der Bytefehler-Korrekturwertbildner 53i aus 8 (und 5) gezeigt.
-
Der Konstantenmultiplizierer
101, die XOR-Schaltung
102 und die NOR-Schaltung
103 bilden einen Bytefehler-Positionssignalbildner
105 und dienen beispielhaft zur Bildung des Bytefehler-Positionssignals
das anzeigt, ob ein 1-Bytefehler in der i-ten Byteposition vorliegt.
-
An dem Ausgang der UND-Schaltung 104 wird der m-dimensionale Bytefehlerkorrekturwert a(i)cor bereitgestellt, falls ein 1-Bytefehler in der Byteposition i aufgetreten ist. Ist der 1-Bytefehler in einer anderen von i verschiedenen Byteposition j aufgetreten, ist das Bytefehler-Positionssignal BPsi = 0 und somit liegt auch am Ausgang der UND-Schaltung 104 der Wert 0 an.
-
Am ersten Eingang des Konstantenmultiplizierers 101 liegt die Komponente s1 und an dem zweiten Eingang des Konstantenmultiplizierers 101 liegt eine Konstante αi an. Der Ausgang des Konstantenmultiplizierers 101 ist mit dem ersten Eingang der XOR-Schaltung 102 verbunden. An dem zweiten Eingang der XOR-Schaltung 102 liegt die Komponente s2 an. Der Ausgang der XOR-Schaltung 102 ist mit dem Eingang der NOR-Schaltung 103 verbunden. Der Ausgang der NOR-Schaltung 103 ist mit dem ersten Eingang der UND-Schaltung 104 verbunden. An dem zweiten Eingang der UND-Schaltung 104 liegt die Komponente s1 an. Der Ausgang der UND-Schaltung 104 ist mit dem ersten Eingang des Multiplexers 82i verbunden.
-
Der zweite Eingang des Multiplexers 82i ist mit dem Ausgang des Bytefehler-Korrekturwertbildners 53i verbunden.
-
Somit wird an dem ersten Eingang des Multiplexers 82i der Bytefehlerkorrekturwert für einen 1-Bytefehler bereitgestellt und an dem zweiten Eingang des Multiplexers 82i wird der Bytefehlerkorrekturwert für einen 2-Bytefehler bereitgestellt.
-
Entsprechend ist das Steuersignal st für den Multiplexer 82i
- - gleich 0, wenn ein 1-Bytefehler vorliegt, um den ersten Eingang (0-Eingang) des Multiplexers 82i mit seinem Ausgang zu verbinden oder
- - gleich 1, wenn ein 2-Bytefehler vorliegt, um den zweiten Eingang (1-Eingang) des Multiplexers 82i mit seinem Ausgang zu verbinden.
-
Liegt kein Fehler vor, ist der Wert des Steuersignals st beliebig. Er kann beispielsweise zu 0 festgelegt werden, wie das beispielhaft nachfolgend beschrieben wird.
-
Liegt kein Fehler vor, ist der Wert des Fehlersignals E gleich 0. Dies wurde vorstehend im Zusammenhang mit 8 erläutert. Anhand der nachgeschalteten UND-Schaltung 83i, die das Signal am Ausgang des Multiplexers 82i komponentenweise mit dem Fehlersignal E logisch UND-verknüpft, ist sichergestellt, dass bei einem Fehlersignal E = 0 (also wenn kein Fehler vorliegt) am Ausgang der UND-Schaltung 83i der Wert 0 bereitgestellt wird und zwar unabhängig vom Signal am Ausgang des Multiplexers 82i. Somit erfolgt keine Korrektur des i-ten Bytes.
-
Schaltung zur Bestimmung eines Fehlersignals
-
11 zeigt eine beispielhafte Schaltung zur Bestimmung des Fehlersignales E wie es beispielsweise in der in 8 gezeigten Schaltung genutzt wird.
-
Die in 11 gezeigte Anordnung umfasst
- - einen Multiplikator 111 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - eine XOR-Schaltung 113 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - einen Quadrierer 112 mit einem m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - eine OR-Schaltung 114 (ODER-Schaltung) mit einem m-Bit breiten Eingang und einem 1-Bit breiten Ausgang,
- - eine OR-Schaltung 116 mit einem m-Bit breiten Eingang und einem 1-Bit breiten Ausgang und
- - eine OR-Schaltung 115 mit einem ersten binären Eingang, einem zweiten binären Eingang und mit einem binären Ausgang.
-
An dem ersten Eingang des Multiplikators 111 liegt der Wert der Komponente s1 an. An dem zweiten Eingang des Multiplikators 111 liegt der Wert der Komponente s3 an. Der Ausgang des Multiplikators 111 ist mit dem ersten Eingang der XOR-Schaltung 113 verbunden.
-
Die Komponente s1 liegt auch an dem Eingang der OR-Schaltung 116 an. Der Ausgang der OR-Schaltung 116 ist mit dem zweiten Eingang der OR-Schaltung 115 verbunden.
-
Die Komponente s2 liegt an dem Eingang des Quadrierers 112 an. Der Ausgang des Quadrierers 112 ist mit dem zweiten Eingang der XOR-Schaltung 113 verbunden.
-
Der Ausgang der XOR-Schaltung 113 ist mit dem Eingang der OR-Schaltung 114 verbunden und der Ausgang der OR-Schaltung 114 ist mit dem ersten Eingang der OR-Schaltung 115 verbunden.
-
An dem Ausgang der OR-Schaltung 114 wird das Steuersignal st und an dem Ausgang der OR-Schaltung 115 wird das Fehlersignal E bereitgestellt.
-
Das Steuersignal st nimmt den Wert
0 an, wenn gilt:
-
Entsprechend nimmt das Steuersignal st den Wert
1 an, wenn gilt:
-
Das Fehlersignal E nimmt den Wert 0 an, wenn das Steuersignal st gleich 0 ist und wenn der Wert der Komponente s1 gleich 0 ist. In diesem Fall liegt weder ein 1-Bytefehler noch ein 2-Bytefehler vor.
-
Ist der Wert des Steuersignals st gleich 1, erfolgt in der Schaltung gemäß 8 eine 2-Byte-Korrektur unter Verwendung der Byte-Korrektoren 530 bis 53N-1.
-
Ist der Wert des Steuersignals st gleich 0, erfolgt in der Schaltung gemäß 8 zunächst eine 1-Byte Korrektur unter Verwendung der Bytefehler-Korrekturwertbildner 810 bis 81N-1. Ist auch das Fehlersignal E gleich 0, so dass weder ein 1-Byte noch ein 2-Byte Fehler vorliegt, geben die UND-Schaltungen 830 bis 83N-1 alle den Wert 0 aus, so dass keine Korrektur der Bytes v'0 bis v'N-1 erfolgt.
-
Wird ein 3-Bytefehler erkannt, kann die Fehlerkorrektur beispielsweise abgebrochen werden. Ein solcher Abbruch der Fehlerkorrektur kann auf Systemebene erfolgen.
-
Schaltung zur Erkennen eines 3-Bytefehlers
-
12 zeigt eine beispielhafte Schaltung zum Erkennen eines 3-Bytefehlers. Hierzu umfasst die Schaltung
- - vier Multiplikatoren 121, 122, 123, 124, jeweils mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten und einem m-Bit breiten Ausgang,
- - drei Quadrierer 125, 126, 127, jeweils mit einem m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
- - drei XOR-Schaltungen 128, 129, 1210, jeweils mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang und
- - eine OR-Schaltung 1211 mit einem m-Bit breiten Eingang und einem binären Ausgang, wobei die OR-Schaltung 1211 eine komponentenweise ODER-Verknüpfung der an ihrem Eingang anliegenden m-Bit durchführt.
-
An dem ersten Eingang des Multiplikators 121 und an dem zweiten Eingang des Multiplikators 123 liegt der Wert der Komponente s1 an.
-
An dem Eingang des Quadrierers 126 liegt der Wert der Komponente s2 an.
-
An dem Eingang des Quadrierers 125 und an dem zweiten Eingang des Multiplikators 122 liegt der Wert der Komponente s3 an.
-
An dem Eingang des Quadrierers 127 liegt der Wert der Komponente s4 an.
-
An dem zweiten Eingang des Multiplikators 121 und an dem ersten Eingang des Multiplikators 124 liegt der Wert der Komponente s5 an.
-
Der Ausgang des Multiplizierers 121 ist mit dem ersten Eingang der XOR-Schaltung 128 verbunden. Der Ausgang des Quadrierers 125 ist mit dem zweiten Eingang der XOR-Schaltung 128 verbunden. Der Ausgang der XOR-Schaltung 128 ist mit dem ersten Eingang des Multiplizierers 122 verbunden. Der Ausgang des Multiplizierers 122 ist mit dem ersten Eingang der XOR-Schaltung 129 verbunden.
-
Der Ausgang des Quadrierers 127 ist mit dem ersten Eingang des Multiplikators 123 verbunden. Der Ausgang des Multiplikators 123 ist mit dem ersten Eingang der XOR-Schaltung 1210 verbunden.
-
Der Ausgang des Quadrierers 126 ist mit dem zweiten Eingang des Multiplizierers 124 verbunden und der Ausgang des Multiplizierers 124 ist mit dem zweiten Eingang der XOR-Schaltung 1210 verbunden. Der Ausgang der XOR-Schaltung 1210 ist mit dem zweiten Eingang der XOR-Schaltung 129 verbunden. Der Ausgang der XOR-Schaltung 129 ist mit dem Eingang der OR-Schaltung 1211 verbunden und an dem Ausgang der OR-Schaltung 1211 steht ein Signal Err3 bereit, anhand dessen ein 3-Bytefehler bestimmt werden kann.
-
Das Signal Err3 nimmt den Wert
1 an, wenn gilt:
-
Entsprechend nimmt das Signal Err3 den Wert
0 an, wenn gilt:
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- Bossen, D.: b-Adjacent Error Correction, IBM J. Res. Dev., July 1970, Seiten 402 bis 408 [0002]
- Okano, H., Imai, H.: A Construction Method of High-Speed Decoders Using ROM's for Bose-Chaudhuri-Hocquengiem and Reed-Solomon Codes, IEEE TRANSACTIONS ON COMPUTERS, VOL. C-36, NO. 10, OCTOBER 1987, Seiten 1165 bis 1171 [0007]
- Lin, S., Costello, D.: Error Control Coding, Prentice Hall, 1983, Seiten 170 bis 177 [0056]
- Wicker, S.: Error Control Systems for Digital Communication and Storage, Prentice Hall, 1995, Seiten 214 bis 224 [0056]