-
Aus
US 2014/0108895 A1 ist ein Fehlerkorrekturcode-Schaltkreis bekannt mit einer Chien-Sucheinheit.
-
US 8,397,144 B1 betrifft ein BCH-Datenkorrektursystem mit zugehörigem Verfahren.
-
In
WO 97/24813 ist ein System beschrieben zur Korrektur von drei und vier Fehlern in einem Codewort eines Reed-Solomon-Codes oder BCH-Codes.
-
Es ist bekannt, in Binärsequenzen oder Binärwörtern einer bestimmten Länge n beliebige 1-Bitfehler, 2-Bitfehler und 3-Bitfehler unter Verwendung von BCH-Codes durch kombinatorische Fehlerkorrekturschaltungen parallel zu korrigieren. Dies ist beispielsweise in
US 2015/0039976 A1 beschrieben. Hierbei ist es von Nachteil, dass nicht mehr als 3-Bitfehler korrigiert werden können.
-
In
US 8,291,303 B2 ist ein Verfahren zur Korrektur von 4-Bitfehlern beschrieben. Nachteilig ist dabei, dass das Lösen einer Gleichung vierten Grades kompliziert auf das Lösen zweier Gleichungen zweiten Grades zurückgeführt wird; hierdurch wird die Decodierung langsam und erfordert einen hohen Schaltungsaufwand. Weiterhin ist von Nachteil, dass keine t-Bitfehler mit t > 4 korrigiert werden können.
-
Die Aufgabe der Erfindung besteht darin, die vorstehend genannten Nachteile zu verbessern und insbesondere eine Möglichkeit für eine effiziente Korrektur von 4-Bitfehlern und mehr zu schaffen.
-
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 angegeben zur Bestimmung eines Korrektursignals basierend auf mindestens einem Bitfehler eines Binärworts
- - mit mehreren Teilschaltungen (ST), wobei je eine Teilschaltung für eine zu korrigierende Bitposition des Binärworts vorgesehen ist,
- - wobei jede der Teilschaltungen mindestens zwei Lokatorpolynomwerte bereitstellt,
- - mit einer Auswahleinheit, die abhängig von den Lokatorpolynomwerten und abhängig von einem Fehlersignal (err, E) ein Korrektursignal bestimmt.
-
Es ist eine Weiterbildung, dass eine Anzahl von T Bitpositionen des Binärworts korrigierbar sind, wobei die Anzahl T größer als eine Anzahl von t-Bitfehlern ist, wobei die t-Bitfehler mittels eines Fehlercodes korrigierbar sind.
-
Bei dem Fehlercode kann es sich um einen fehlererkennenden und/oder einen fehlerkorrigierenden Code handeln.
-
Es ist eine andere Weiterbildung, dass die Anzahl der t-Bitfehler korrigierbarer Bitfehler größer oder gleich vier, insbesondere größer als vier ist.
-
Auch ist es eine Weiterbildung, dass jede Teilschaltung mindestens zwei interne Teilschaltungen aufweist, wobei jede interne Teilschaltung einen Lokatorpolynomwert bereitstellt.
-
Ferner ist es eine Weiterbildung, dass mittels des Korrektursignals der mindestens eine Bitfehler korrigiert wird.
-
Eine Ausgestaltung besteht darin, dass der mindestens eine Bitfehler korrigiert wird anhand einer Verknüpfungsschaltung zur Verknüpfung der mindestens einen zu korrigierenden Bitposition und dem Korrektursignal, indem jeweils zu korrigierende Bits mit den entsprechenden Korrekturwerten umkehrbar eindeutig zu korrigierten Bits verknüpft werden.
-
Eine andere Ausgestaltung ist es, dass das Korrektursignal von mindestens zwei Teilschaltungen parallel oder im Wesentlichen parallel bestimmt wird.
-
Weiterhin ist es eine Ausgestaltung, dass das Fehlersignal
- - eine erste Komponente (err) umfasst, die eine Anzahl (τ) fehlerhafter Bits angibt und
- - eine zweite Komponente (E) umfasst, die einen ersten Wert annimmt, wenn ein Fehler erkannt wurde und die einen zweiten Wert annimmt, wenn kein Fehler erkannt wurde.
-
Ein Fehler wird z.B. erkannt mittels des Fehlercodes. Weiterhin ist es eine Option, dass die Anzahl τ der fehlerhaften Bits größer gleich 1 und kleiner gleich der Anzahl der t-Bitfehler ist.
-
Auch ist es eine Ausgestaltung, dass jede der Teilschaltungen höchstens t - 2 Lokatorpolynomwerte bereitstellt, wobei t die Zahl der mittels eines Fehlercodes korrigierbaren Bitfehler angibt.
-
Eine andere Weiterbildung ist es, dass jede der Teilschaltungen t/2 Lokatorpolynomwerte bereitstellt, wenn die Anzahl der Bitfehler gerade ist und (t + 1)/2 Lokatorpolynomwerte bereitstellt, wenn die Anzahl der Bitfehler ungerade ist, wobei t die Anzahl der mittels eines Fehlercodes korrigierbaren Bitfehler bezeichnet.
-
Ferner ist es eine Weiterbildung, dass der Fehlercode ein t-Bitfehler korrigierender BCH-Code über dem Galoisfeld GF(2m) ist und die Lokatorpolynomwerte m-stellige Binärwerte sind und m größer oder gleich 4 ist.
-
Auch ist es eine Weiterbildung, dass das Fehlersignal eine Anzahl der aufgetretenen Bitfehler umfasst, wobei diese Anzahl anhand eines Fehlersyndromes des BCH-Codes bestimmt wird.
-
Eine Ausgestaltung ist es, dass der BCH-Code um mindestens ein Paritätsbit ergänzt ist.
-
Eine weitere Ausgestaltung besteht darin, dass Codewörter des BCH-Codes umfassen:
- - Datenbits, Adressbits und Prüfbits,
- - Datenbits, aus Adressbits abgeleitet Bits und Prüfbits oder
- - Datenbits und Prüfbits.
-
Ferner ist es eine Ausgestaltung, dass die Auswahleinheit pro Teilschaltung unter Verwendung der Lokatorpolynomwerte
- - ein erstes Korrektursignal bestimmt, wenn kein Fehler an der mit der Teilschaltung assoziierten Bitposition aufgetreten ist und
- - ein zweites Korrektursignal bestimmt, wenn mindestens ein Fehler an der mit der Teilschaltung assoziierten Bitposition aufgetreten ist,
wobei anhand des ersten Korrektursignals und des zweiten Korrektursignals pro Teilschaltung das Korrektursignal bestimmt wird.
-
Eine Weiterbildung ist es, dass mehr als vier Teilschaltungen, insbesondere fünf Teilschaltungen, vorgesehen sind.
-
Auch ist es eine Weiterbildung, dass jeder der Teilschaltungen mindestens eine Syndromkomponente bereitgestellt wird.
-
Beispielsweise werden die mindestens zwei m-stelligen Lokatorpolynomwerte pro Teilschaltung basierend auf der mindestens einen bereitgestellten Syndromkomponente bestimmt. Insbesondere kann ein Syndrom eine Vielzahl von Syndromkomponenten umfassen. So können entsprechend den t-Bitfehlern eine Anzahl von t Syndromkomponenten s1, s3, ... , s2t-1 bereitgestellt werden.
-
Eine Ausgestaltung besteht darin, dass die mindestens zwei Lokatorpolynomwerte mittels einer Konzentriereinheit auf ein Bit konzentriert werden.
-
Beispielsweise ist die Konzentriereinheit ein Gatter mit einer Vielzahl von Eingängen und einem Ausgang. So kann z.B. eine ODER-Verknüpfung, eine NICHT-ODER Verknüpfung über die ganzen Eingänge vorgenommen werden, um an dem Ausgang anzuzeigen, ob z.B. alle Eingänge logisch (binär) 0 oder 1 sind. Allgemein kann z.B. ein m-dimensionales Signal (also ein Signal umfassend m Bits) in ein 1-dimensionales Signal konzentriert werden, das entsprechend mit reduziertem Aufwand weiter verarbeitet werden kann.
-
Eine Weiterbildung besteht darin, dass die Konzentriereinheit mindestens ein Gatter, insbesondere ein ODER Gatter oder ein NICHT-ODER Gatter umfasst.
-
Ferner ist es eine Weiterbildung, dass die Konzentriereinheit vor der Auswahleinheit oder nach der Auswahleinheit angeordnet ist.
-
Auch ist es eine Weiterbildung, dass die Auswahleinheit umfasst
- - einen Multiplexer zur Selektion eines der Lokatorpolynomwerte pro Teilschaltung und
- - eine Maskiereinheit zur Maskierung der Lokatorpolynomwerte pro Teilschaltung.
-
Die Selektion des Multiplexers kann beispielsweise mittels eines Teils err des Fehlersignals erfolgen, der angibt, wie viele Bitfehler aufgetreten sind. Die Maskierung kann mittels eines Teils E des Fehlersignals erfolgen, der angibt, ob (oder ob nicht) ein Bitfehler aufgetreten ist.
-
Eine Ausgestaltung besteht darin, dass die Teilschaltungen und/oder die Auswahleinheit Teil mindestens einer integrierten Schaltung, insbesondere Teil einer Verarbeitungseinheit sind.
-
Eine andere Ausgestaltung besteht darin, dass das Fehlersignal von einer Fehlererkennung bereitgestellt wird.
-
Die Fehlererkennung kann eine Schaltung oder ein Programm umfassen bzw. mittels einer Schaltung und/oder eines Programms realisiert sein. Bei dem Programm kann es sich um Programmcode in Form von Software oder Firmware handeln.
-
Weiterhin ist es eine Ausgestaltung, dass die Schaltungsanordnung Schaltungsteile umfasst, die zumindest teilweise gemeinsam realisiert sind.
-
Die einzelnen Schaltungsteile, z.B. mehrere ggf. unterschiedliche, ähnliche oder gleiche Hardware-Komponenten, können gemeinsam implementiert sein („jointly implemented“). Beispielsweise können Schaltungsteile auf einem gemeinsamen Träger oder Chip implementiert sein.
-
Eine andere Weiterbildung ist es, dass die Schaltungsanordnung mittels eines Synthese-Tools optimierbar ist oder optimiert wurde.
-
Auch wird zur Lösung der obigen Aufgabe eine Schaltungsanordnung angegeben zur Korrektur von bis zu t fehlerhaften Bits, wobei t größer oder gleich fünf ist und wobei die Schaltungsanordnung so konfiguriert ist, dass Korrekturwerte für ein erstes und ein zweites zu korrigierendes Bit parallel oder im Wesentlichen parallel bereitgestellt werden.
-
Es ist eine Weiterbildung, dass die Schaltungsanordnung so konfiguriert ist, dass Korrekturwerte für T Bitpositionen parallel oder im wesentlichen parallel bereitgestellt werden, wobei T größer als t ist.
-
Es ist eine zusätzliche Weiterbildung, dass zur Korrektur der t fehlerhaften Bits ein t-Bitfehler korrigierender Code eingesetzt wird.
-
Ferner ist es eine Ausgestaltung, dass der t-Bitfehler korrigierende Code ein BCH-Code ist.
-
Zur Lösung der Aufgabe wird darüber hinaus ein Verfahren zur Bestimmung eines Korrektursignals basierend auf mindestens einem Bitfehler eines Binärworts vorgeschlagen, das die folgenden Schritte umfasst:
- - Bestimmen von mindestens zwei Lokatorpolynomwerten mittels einer Teilschaltung für eine zu korrigierende Bitposition des Binärworts,
- - Bestimmen eines Korrektursignals abhängig von den Lokatorpolynomwerten und abhängig von einem Fehlersignal (err, E)
-
Es ist eine Weiterbildung, dass das Korrektursignal von mindestens zwei Teilschaltungen parallel oder im Wesentlichen parallel 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 ein Ausführungsbeispiel einer Schaltungsanordnung unter Verwendung eines 4-Bitfehler korrigierenden BCH-Codes,
- 2 ein Ausführungsbeispiel einer Schaltungsanordnung unter Verwendung eines 5-Bitfehler korrigierenden BCH-Codes,
- 3 ein Ausführungsbeispiel von Teilschaltungen einer Schaltungsanordnung von 1,
- 4 ein Ausführungsbeispiel von Teilschaltungen einer Schaltungsanordnung von 1,
- 5 eine mögliche Implementierung einer Teilschaltung zur Korrektur eines Bits
unter Verwendung eines t-Bitfehler korrigierenden Codes, wenn t eine gerade Zahl ist,
- 6 eine mögliche Implementierung einer Teilschaltung zur Korrektur eines Bits
unter Verwendung eines t-Bitfehler korrigierenden Codes, wenn t eine ungerade Zahl ist,
- 7 eine weitere mögliche Implementierung einer Teilschaltung zur Korrektur eines Bits
unter Verwendung eines t-Bitfehler korrigierenden Codes, wenn t eine ungerade Zahl ist,
- 8a einen Syndromgenerator, der ein Fehlersyndrom aus den zu korrigierenden eventuell fehlerhaften Bits und Adressenbits bestimmt,
- 8b einen Syndromgenerator, der ein Fehlersyndrom aus den zu korrigierenden eventuell fehlerhaften Bits und aus Adressenbits abgeleiteten Bits bestimmt,
- 9 ein Ausführungsbeispiel einer Schaltungsanordnung zur Bestimmung eines Koeffizienten eines Lokatorpolynoms unter Verwendung von Galoisfeldmultiplizierern, Addierern und einem Invertierer im Galoisfeld,
- 10 eine Tabelle, die unterschiedliche Darstellungsformen von Elementen eines Galoisfeldes GF(2m) mit m = 5 veranschaulicht;
- 11 eine Tabelle für einen Invertierer in dem Galoisfeld GF(25).
-
Zur Fehlerkorrektur zufällig verteilter Mehr-Bitfehler können BCH-Codes verwendet werden. Dies ist beispielsweise in [Lin, S., Costello, D.: „Error Control Coding“, Prentice Hall, 1983, vgl. z.B. Seiten 143 bis 160] beschrieben.
-
Ein BCH-Code ist ein linearer Code, der durch eine Paritätsprüfmatrix H und eine Generatormatrix G beschrieben werden kann. Die Generatormatrix G kann beispielsweise aus der Paritätsprüfmatrix abgeleitet werden.
-
Hat der Code die Länge N und weist er k Informationsbits auf, ist die Paritätsprüfmatrix H eine (M, N)-Matrix mit M Zeilen und N Spalten, wobei M = N - k ist. Die Generatormatrix G ist dann eine (k, N)-Matrix mit k Zeilen und N Spalten, und der Code hat M Prüfbits.
-
Ein t-Bitfehler korrigierender unverkürzter BCH-Code kann durch eine H-Matrix
beschrieben werden, wobei die H-Matrix in separierter Form dargestellt ist. Üblicherweise werden Komponenten H
1, H
3, ..., und H
2t-1 der H-Matrix als
gewählt, wenn der Code nicht verkürzt ist.
-
Dabei kann α ein primitives Element eines endlichen Körpers GF(2m) sein, der Galoisfeld genannt wird. In diesem Fall gilt: N = 2m - 1.
-
Die Exponenten von αj, von α3j, ..., und von α(2t-1)j sind modulo 2m - 1 bestimmt. Ist α ein primitives Element des verwendeten Galoisfelds, kann der entsprechende BCH-Code als primitiver BCH-Code bezeichnet werden.
-
H1, H3,..., H2t-1 sind allgemein jeweils (m,N)-Matrizen mit
- - m Zeilen und
- - N = 2m - 1 Spalten.
-
In speziellen Anwendungsfällen kann es vorkommen, dass einige der m Zeilen einer der Matrizen Hi linear abhängig sind. In diesem Fall können Zeilen der Matrix Hi weggelassen werden, bis alle ihre Zeilen linear unabhängig sind. Die Anzahl der Zeilen der Matrix Hi kann dann kleiner als m sein.
-
Die Elemente αi des Galoisfelds GF(2m) sind in ihrer Vektordarstellung beispielsweise m-stellige binäre Spaltenvektoren.
-
Werden L Spalten der H-Matrix des unverkürzten BCH-Codes gestrichen, folgt hieraus eine H-Matrix eines verkürzten BCH-Codes der Länge n = N - L. Für einen verkürzten Code gilt dann n = N - L < 2m - 1.
-
Es ist möglich, die H-Matrix mit einer Zeile aus lauter Einsen zu ergänzen. Einer zusätzlichen Zeile aus Einsen in der H-Matrix entspricht die zusätzliche Berücksichtigung einer Gesamtparität. Unter Berücksichtigung der Gesamtparität kann die H-Matrix die Form
haben, wobei P die Zeile aus Einsen darstellt.
-
Beispielhaft wird nun ein verkürzter BCH-Code der Länge n betrachtet, wobei n = N - L < 2m - 1 gilt. Ein Codewort v = v1,..., vn dieses Codes, das auch als Codevektor bezeichnet werden kann, besteht aus n Komponenten v1, v2, ..., vn. Dabei kann ein Codevektor ein Zeilenvektor oder ein Spaltenvektor sein.
-
Wird eine Matrix von rechts mit einem Vektor multipliziert, ist der Vektor als Spaltenvektor zu interpretieren und das Ergebnis ist ein Spaltenvektor. Wird eine Matrix von links mit einem Vektor multipliziert, ist der Vektor ein Zeilenvektor und das Resultat der Multiplikation ist ein Zeilenvektor. Es ist nicht erforderlich, die entsprechenden Vektoren explizit als Spaltenvektoren oder Zeilenvektoren hervorzuheben, da aus dem jeweiligen Kontext klar ist, ob es sich um einen Spaltenvektor oder einen Zeilenvektor handelt. Soll besonders hervorgehoben werden, dass ein Vektor w ein Spaltenvektor ist, wird die Schreibweise wT verwendet.
-
Wird ein Codewort v = v
1,...,v
n in ein Wort
gestört, kann der Unterschied zwischen dem Codewort v und dem gestörten Codewort v' durch einen Fehlervektor e mit
beschrieben werden.
-
Eine Komponente e
i des Fehlervektors e ist gleich 1, wenn sich eine Komponente des Codeworts v
i und eine Komponente des gestörten Codeworts
unterscheiden und
gilt. Eine Komponente e
j des Fehlervektors e ist gleich 0, wenn eine Komponente des Codeworts v
j und eine Komponente des gestörten Codeworts
gleich sind und
gilt.
-
Ist es möglich, dass ein Fehler durch eine Fehlerkorrekturschaltung korrigiert wird, können die Korrekturwerte, die die Fehlerkorrekturschaltung ausgibt, gleich den Komponenten des Fehlervektors sein. Die Korrekturschaltung gibt in diesem Fall an einem i-ten Ausgang ihrer n Ausgänge den Korrekturwert e
i aus. Der Korrekturwert e
i kann dann mit der zu korrigierenden Komponente
zu
exklusiv-oder-verknüpft (XOR-verknüpft) werden.
-
Die Korrekturwerte ei können zu einem Korrekturvektor zusammengefasst werden. Der Korrekturvektor ist gleich dem Fehlervektor, wenn der Fehler durch den Code korrigiert werden kann und die Komponenten des Korrekturvektors und des zu korrigierenden Vektors komponentenweise XOR-verknüpft werden.
-
Kann ein Fehler durch eine Fehlerkorrekturschaltung korrigiert werden, können die Korrekturwerte, die die Fehlerkorrekturschaltung ausgibt, gleich den invertierten Komponenten des Fehlervektors sein, Die Korrekturschaltung stellt in diesem Fall am ihrem i-ten Ausgang ihrer n Ausgänge den invertierten Korrekturwert
e i bereit. Der invertierte Korrekturwert
e i kann entsprechend mit der zu korrigierenden Komponente
zu
verknüpft werden. Es ist auch möglich, eine Teilmenge der Korrekturwerte zu invertieren.
-
Es ist nicht nötig, dass alle n Bits eines eventuell fehlerhaften n-stelligen Binärwortes
korrigiert werden. Es ist zum Beispiel möglich, T Bits dieser n Bits zu korrigieren, wobei T ≤ n gilt. Erfolgt die Korrektur unter Verwendung eines t-Bitfehler korrigierenden Codes, gilt beispielsweise T > t. Es können z.B. nur die Datenbits des Binärwortes v unter Verwendung des t-Bitfehler korrigierenden Codes korrigiert werden. Es ist auch möglich, dass T = n gilt und alle Bits korrigiert werden.
-
In den hier beschriebenen Ausführungsbeispielen werden insbesondere Fälle beschrieben, für die t < T ≤ n gilt.
-
Ist der Vektor v ein Codevektor eines separierbaren Codes, bei dem die Datenbits und die Prüfbits in dem Codevektor v getrennt sind, ist es möglich, nur die Datenbits oder nur einen Teil der Datenbits des Vektors v' zu korrigieren. Entsprechend ist es eine Option, Kombinationen aus Datenbits und Prüfbits zu korrigieren.
-
Ein Fehlersyndrom s = (s
1, s
3, ..., s
2t-1, s
P) eines Binärwortes v' ist durch
bestimmt, wobei für die Komponenten s
i des Fehlersyndroms s gilt:
-
Das Fehlersyndrom eines (ungestörten) Codewortes v ist gleich 0, somit gilt:
-
Entsprechend gilt für ein gestörtes Codewort v' = v ⊕ e (also ein Binärwort, das kein Codewort (auch bezeichnet als „Nicht-Codewort“) ist):
-
Das Fehlersyndrom s ist durch den Fehlervektor e bestimmt.
-
Um aus dem fehlerhaften Nicht-Codewort v' das zugehörige korrekte Codewort zu bestimmen, sind diejenigen Komponenten
des gestörten Codeworts zu invertieren, für die die zugehörige Komponente e
j des Fehlervektors e gilt:
-
Somit entspricht die Komponente ej dem Korrekturwert, den die Fehlerkorrekturschaltung nutzen kann.
-
Für den betrachteten verkürzten BCH-Code kann der Fehlervektor e aus dem Fehlersyndrom
mit der H-Matrix
bestimmt werden. Die Matrizen H
1, H
3, ... , H
2t-1 können durch ihre Spalten wie folgt beschrieben werden:
und
-
Die Exponenten von α sind, wie vorstehend erwähnt, modulo 2m - 1 bestimmt, und die Exponenten i1, i2, ..., in sind paarweise verschieden. Es ist dabei nicht nötig, dass ij = j für j = 1, ..., n gilt.
-
Liegt nun ein 1-Bitfehler im j-ten Bit vor, gilt:
und es ist
-
Liegt ein 2-Bitfehler in den Bitpositionen j und l vor, gilt
und es ist
-
Liegt ein 3-Bitfehler in den Bitpositionen j, l und k vor, gilt
und es ist
-
Liegt ein 4-Bitfehler in den Bitpositionen j, k, l und q vor, gilt
-
Es ist nun möglich, den Ort eines Fehlers als Nullstelle eines Lokatorpolynoms zu bestimmen. Liegt ein µ-Bitfehler vor, können die Fehlerorte durch die µ Nullstellen eines Lokatorpolynoms µ-ten Grades L
µ(x) mit
bestimmt werden.
-
Es ist möglich, die µ - 1 Fehlerorte eines µ - 1-Bitfehlers durch die Nullstellen des Lokatorpolynoms µ-ten Grades zu bestimmen. Im Falle eines µ - 1-Bitfehlers ist eine erste Nullstelle des Lokatorpolynoms µ-ten Grades gleich 0, während die weiteren µ - 1 Nullstellen den µ - 1 Fehlerorten entsprechen.
-
Es ist bekannt, dass der Anzahl der Fehler entsprechende Lokatorpolynom iterativ nach dem Berlekamp-Massey-Algorithmus zu bestimmen (siehe z.B. [Lin, S., Costello, D.: „Error Control Coding“, Prentice Hall, 1983, vgl. z.B. Seiten 155 bis 160]). Hierbei ist es ein Nachteil, dass ein entsprechender Algorithmus nur mit hohem Aufwand in Hardware implementierbar ist.
-
Weiterhin können die Koeffizienten der entsprechenden Lokatorpolynome durch Lösen einer linearen Gleichung aus den Syndromkomponenten bestimmt werden. Dies wird nachfolgend erläutert.
-
Zunächst werden beispielhaft Lokatorpolynome für µ = 1, 2, 3, 4, 5 angegeben.
-
Für µ = 1 hat das Lokatorpolynom die Form
für µ = 2 hat das Lokatorpolynom die Form
für µ = 3 hat das Lokatorpolynom die Form
für µ = 4 hat das Lokatorpolynom die Form
und für µ = 5 hat das Lokatorpolynom die Form
-
Liegt ein µ-Bitfehler vor, sind die µ Fehlerorte i1, i2, i3,..., iµ die Exponenten der Nullstellen αi
1 , αi
2 , ..., αi
µ des Lokatorpolynoms Lµ(x).
-
Wird in dem Lokatorpolynom L
µ(x) die Variable x durch
ersetzt und wird weiter
gesetzt, so gilt
-
Das Polynom
kann ebenfalls als Lokatorpolynom verwendet werden. Die µ Fehlerorte j
1, j
2, j
3, ..., j
µ sind dann die negativen Exponenten der Nullstellen α
j
1 , α
j
2 , ..., α
j
µ des Lokatorpolynoms
wobei die Exponenten jeweils modulo 2
m - 1 betrachtet werden, sofern das verwendete Galoisfeld GF(2
m) ist.
-
Nachfolgend wird beispielhaft das Lokatorpolynom Lµ(x) verwendet.
-
Die Koeffizienten der Lokatorpolynome können als Lösungen der folgenden linearen Gleichungssysteme bestimmt werden.
-
Für µ = 2 gilt
mit der Lösung
-
Hierbei ist berücksichtigt, dass im Galoisfeld GF(2
m) gilt:
-
Für µ = 3 gilt
wobei
durch Lösen der linearen Gleichung zu
bestimmt sind, wobei in dieser Lösung berücksichtigt ist, dass im Galoisfeld GF(2
m) gilt:
-
Für µ = 4 gilt
wobei
durch Lösen der linearen Gleichung zu
bestimmt sind, wobei in dieser Lösung berücksichtigt ist, dass im Galoisfeld GF(2
m) gilt:
-
Für µ = 5 gilt
wobei die konkreten Werte für
durch Lösen der linearen Gleichung (36) bestimmt und beispielsweise in [Wicker, S.: „Error Control Systems for digital Communication and Storage“, Prentice Hall, 1995, Seite 208] angegeben sind.
-
Allgemein ist eine Matrix M(t) zu
bestimmt und für mehr als fünf Bitfehler (t > 5) gilt:
-
Die Werte für
sind wieder durch Lösen einer linearen Gleichung, hier durch Lösen der linearen Gleichung (37), bestimmt. Hierbei wird berücksichtigt, dass im Galoisfeld GF(2
m) gilt:
für l = 1, 2, 3, ...
-
Eine Aufgabe einer Fehlerkorrekturschaltung besteht darin, die Fehlerpositionen eines beliebigen 1-Bitfehlers, eines beliebigen 2-Bitfehlers oder eines beliebigen 3-Bitfehlers, ..., oder eines beliebigen r-Bitfehlers mit 1 ≤ r ≤ t aus dem Fehlersyndrom, d.h. aus den Syndromkomponenten s1, s3, ... , s2t-1 des BCH-Codes effizient zu bestimmen und in den bestimmten Bitpositionen des Datenwortes durch einen Korrekturwert eine Korrektur des mindestens einen als fehlerhaft erkannten Bits vorzunehmen.
-
Wird vorausgesetzt, dass maximal ein t-Bitfehler vorliegt, kann aus
gefolgert werden, dass entweder ein t-Bitfehler oder ein (t - 1)-Bitfehler vorliegt. Liegt ein t-Bitfehler vor, sind die Fehlerorte durch die t Nullstellen des Lokatorpolynoms L
t(x) t-ten Grades bestimmt. Liegt ein t - 1-Bitfehler vor, dann sind wieder t Nullstellen des Lokatorpolynoms L
t(x) vorhanden, t - 1 dieser Nullstellen bestimmen die Fehlerorte und die verbleibende (eine) Nullstelle ist 0 und bestimmt keinen Fehlerort.
-
Gilt
liegt weder ein t-Bitfehler noch ein (t - 1)-Bitfehler vor. In diesem Fall kann höchstens ein t - 2-Bitfehler vorliegen.
-
Ist
kann gefolgert werden, dass entweder ein (t - 2)-Bitfehler oder ein (t - 3)-Bitfehler vorliegt:
- - Liegt ein t - 2-Bitfehler vor, sind die t - 2 Fehlerorte durch die t - 2 Nullstellen des Lokatorpolynoms Lt-2(x) bestimmt, das den Grad t - 2 hat.
- - Liegt ein t - 3-Bitfehler vor, sind die t - 3 Fehlerorte durch die t - 3 Nullstellen ≠ 0 des Lokatorpolynoms Lt-2(x) bestimmt, das den Grad t - 2 aufweist. Eine weitere Nullstelle des Lokatorpolynoms t - 2-ten Grades ist in diesem Fall 0.
-
Ist
kann gefolgert werden, dass maximal ein (t - 4)-Bitfehler vorliegt.
-
Um die Anzahl der Fehler zu bestimmen, kann man die Determinanten
betrachten, bis eine Determinante ≠ 0 gefunden wird.
-
Für einen 4-Bitfehler korrigierenden BCH-Code und für einen 4-Bitfehler korrigierenden BCH-Code mit zusätzlicher Gesamtparität soll nachfolgend das Vorgehen erläutert werden:
- Zunächst wird ein 4-Bitfehler korrigierender Code ohne Berücksichtigung der Gesamtparität betrachtet. Es wird die Determinante Det(M(4)) der Matrix M(4) bestimmt. Weiterhin wird s = (s1, s3, s5, s7) ≠ 0 angenommen.
-
Die Determinante Det(M(4)) wird nach den Elementen der ersten Zeile entwickelt und die Determinante der verbleibenden 3x3-Matrix wird direkt berechnet. Es folgt mit
und
-
Der so erhaltene algebraische Ausdruck lässt sich aus den Werten der Syndromkomponenten unter Verwendung von bekannten Galoisfeldmultiplizierern implementieren und mit Hilfe eines Synthesetools optimieren.
-
Gilt Det (M(4)) ≠ 0, liegt ein 4-Bitfehler oder ein 3-Bitfehler vor.
-
Gilt Det (M(4)) = 0, liegt ein 2-Bitfehler oder ein 1-Bitfehler vor.
-
Nachfolgend wird ein 4-Bitfehler korrigierender Code mit Berücksichtigung der Gesamtparität P betrachtet. Es wird s = (s
1, s
3, s
5, s
7, P) ≠ 0 angenommen. Die Determinanten werden jeweils nach den Elementen der ersten Zeile entwickelt und die Determinanten der 3x3-Matrizen werden direkt berechnet. Es folgt mit
-
Der erhaltene algebraische Ausdruck lässt sich aus den Werten der Syndromkomponenten unter Verwendung von bekannten Galoisfeldmultiplizierern implementieren und mit Hilfe eines Synthesetools optimieren.
-
Gilt Det (M(5)) ≠ 0, liegt ein 5-Bitfehler oder ein 4-Bitfehler vor. Ist die Parität P = 1, handelt es sich um einen 5-Bitfehler, ist die Parität P = 0, handelt es sich um einen 4-Bitfehler.
-
Gilt Det (M(5)) = 0, liegt ein 3-Bitfehler, ein 2-Bitfehler oder ein 1-Bitfehler vor, wenn s = (s1, s3, s5, s7) ≠ 0 ist. Ist die Parität P = 0, liegt ein 2-Bitfehler vor, ist die Parität P = 1, liegt entweder ein 1-Bitfehler oder ein 3-Bitfehler vor.
-
Es ist möglich, die Determinante Det (M(3)) zu bestimmen. Gilt Det (M(3)) = 1, liegt ein 3-Bitfehler vor, ist Det (M(3)) = 0, liegt ein 1-Bitfehler vor.
-
Zur Unterscheidung zwischen einem 1-Bitfehler und einem 3-Bitfehler kann auch geprüft werden, ob
oder ob
gilt: Ist
liegt ein 1-Bitfehler vor, ist
liegt ein 3-Bitfehler vor.
-
Beispielsweise umfasst ein Fehlersignal zwei Komponenten E und err. Liegt ein Fehler vor und ist s ≠ 0, ist die Komponente E des Fehlersignals gleich 1. Liegt kein Fehler vor und ist s = 0, ist die Komponente E des Fehlersignals gleich 0.
-
Die Anzahl der aufgetretenen Fehler kann durch die Komponente err des Fehlersignals angezeigt werden, die im Falle eines 1-Bitfehlers, eines 2-Bitfehlers, ..., eines t-Bitfehlers beispielsweise einen entsprechenden binär codierten Wert 1,2,... , t annimmt.
-
1 zeigt eine beispielhafte Schaltungsanordnung zur Korrektur eines möglicherweise fehlerhaften Binärworts
unter Verwendung eines 4-Bitfehler korrigierenden BCH-Codes über einem Galoisfeld GF(2
m). Der 4-Bitfehler korrigierende BCH-Code erlaubt eine Korrektur von 1-Bitfehlern, 2-Bitfehlern, 3-Bitfehlern oder 4-Bitfehlern.
-
1 umfasst einen Syndromgenerator 101, dem das möglicherweise fehlerhafte Binärwort v' bereitgestellt wird. Weiterhin umfasst 1 n Teilschaltungen STj, von denen beispielhaft zwei Teilschaltungen 102 und 103 für j = 1 und j = n dargestellt sind.
-
Die Teilschaltung 102 entspricht einer ersten Teilschaltung ST1 und die Teilschaltung 103 zeigt eine n-te Teilschaltung STn. Es gibt also n Teilschaltungen STj mit j = 1, ... , n zur Bildung von Ausgabewerten der Teilschaltung STj. Jede der Teilschaltungen STj ist für eine zu korrigierende Bitposition des Binärworts v' vorgesehen.
-
Die Teilschaltung 102 umfasst zwei interne Teilschaltungen 104, 105 und die Teilschaltung 103 umfasst zwei interne Teilschaltungen 106, 107. Allgemein umfasst in 1 die j-te Teilschaltung STj beispielhaft zwei interne Teilschaltungen.
-
Jede der internen Teilschaltungen stellt einen Lokatorpolynomwert bereit. Die interne Teilschaltung 104 stellt den Lokatorpolynomwert gemäß L4(αi
j ) mit j = 1, die interne Teilschaltung 105 stellt den Lokatorpolynomwert gemäß L2(αi
j ) mit j = 1, die interne Teilschaltung 106 stellt den Lokatorpolynomwert gemäß L4(αi
j ) mit j = n und die interne Teilschaltung 107 stellt den Lokatorpolynomwert gemäß L2(αi
j ) mit j = n bereit.
-
Die Teilschaltungen 102 und 103 weisen jeweils noch ein NICHT-ODER-Gatter (NOR-Gatter) 108 bis 111 pro interner Teilschaltung 104 bis 107 auf. Jedes der NOR-Gatter 108 bis 111 hat m Eingänge und einen Ausgang. Der Ausgang ist immer dann logisch 1, wenn alle m Eingänge des NOR-Gatters logisch 0 sind.
-
Nachfolgend wird beispielhaft die Teilschaltung 102 näher erläutert. Die Ausführungen gelten für die Teilschaltung 103, sowie allgemein für jede andere Teilschaltung STj entsprechend.
-
Die Teilschaltung 102 weist 4·m Eingänge zur Eingabe von Syndromkomponenten s1, s3, s5, s7 auf, die von dem Syndromgenerator 101 bereitgestellt werden. Hierbei werden die Syndromkomponenten s1, s3, s5, s7 an den 4·m-Bit breiten Eingang der internen Teilschaltung 104 angelegt und die Syndromkomponenten s1, s3 werden an den 2·m-Bit breiten Eingang der internen Teilschaltung 105 angelegt.
-
Die interne Teilschaltung 104 hat einen m Bit breiten Ausgang, der mit dem Eingang des NOR-Gatters 108 verbunden ist. Der Ausgang des NOR-Gatters 108 ist mit dem ersten Eingang (0-Eingang) einer Auswahleinheit 112 verbunden.
-
Die interne Teilschaltung 105 hat einen m Bit breiten Ausgang, der mit dem Eingang des NOR-Gatters 109 verbunden ist. Der Ausgang des NOR-Gatters 109 ist mit dem zweiten Eingang (1-Eingang) der Auswahleinheit 112 verbunden.
-
Der Aufbau der Teilschaltung 103 ist entsprechend. Weiterhin sind insgesamt n Teilschaltungen STj vorgesehen, eine pro Bitposition j. 1 zeigt beispielhaft die Teilschaltung 102 für die Bitposition j = 1 und die Teilschaltung 103 für die Bitposition j = n. Die übrigen n - 2 Teilschaltungen ST2, ST3, STn-1 sind in 1 durch die Punkte zwischen den Teilschaltungen 102 und 103 angedeutet.
-
Ist eine Bitposition j des Binärworts v' fehlerhaft und liegt insgesamt ein 4-Bitfehler oder ein 3-Bitfehler an verschiedenen Bitpositionen vor, wird an den m Ausgängen der internen Teilschaltung, die den Lokatorpolynomwert gemäß L
4(α
i
j ) bestimmt, ein m-stelliger Lokatorpolynomwert
bereitgestellt (dieser Lokatorpolynomwert wird auch mit {0}
m abgekürzt).
-
Ist die Bitposition j nicht fehlerhaft und liegt insgesamt ein 4-Bitfehler oder ein 3-Bitfehler an von j verschiedenen Bitpositionen vor, wird von der internen Teilschaltung, die den Lokatorpolynomwert gemäß L4(αi
j ) bestimmt, ein von dem ersten Lokatorpolynomwert verschiedener Wert bereitgestellt, also ein Wert der ungleich {0}m ist.
-
Ist die Bitposition j fehlerhaft und liegt ein 2-Bitfehler oder ein 1-Bitfehler an verschiedenen Bitpositionen vor, wird von der internen Teilschaltung, die den Lokatorpolynomwert gemäß L2(αi
j ) bestimmt, der m-stellige Lokatorpolynomwert {0}m bereitgestellt.
-
Ist die Bitposition j nicht fehlerhaft und liegt ein 2-Bitfehler oder ein 1-Bitfehler an verschiedenen Bitpositionen vor, wird von der internen Teilschaltung, die den Lokatorpolynomwert gemäß L2(αi
j ) bestimmt, ein von dem Lokatorpolynomwert {0}m verschiedener Wert bereitgestellt.
-
Wie bereits ausgeführt wurde, liefert jedes der NOR-Gatter 108 bis 111 an seinem Ausgang jeweils einen Wert 1, wenn an seinem Eingang die m-Bits den Wert 0 haben, also wenn der Lokatorpolynomwert {0}m anliegt. Ansonsten liegt an dem Ausgang des jeweiligen NOR-Gatters 108 bis 111 der Wert 0.
-
Die Auswahleinheit 112 kann auch als ein Multiplexer aufgefasst werden. In Abhängigkeit von der Komponente err des Fehlersignals wird die Auswahleinheit 112 so angesteuert, dass entweder ihr erster Eingang oder ihr zweiter Eingang mit ihrem Ausgang verbunden ist. Im Hinblick auf die Teilschaltung 102 bedeutet dies, dass entweder der Ausgang des NOR-Gatters 108 oder der Ausgang des NOR-Gatters 109 mit dem Ausgang der Auswahleinheit 112 verbunden ist.
-
Der Ausgang der Auswahleinheit 112 ist mit dem ersten Eingang eines UND-Gatters 114 verbunden. An dem zweiten Eingang des UND-Gatters 114 liegt die zweite Komponente E des Fehlersignals an. Der Ausgang des UND-Gatters 114 ist mit einer Verknüpfungsschaltung 117 verbunden.
-
Die beiden Komponenten err, E des Fehlersignals werden von einer Fehlererkennungseinheit 116 bereitgestellt.
-
Es ist möglich, dass für verschiedene Ausgänge die gleiche Fehlererkennungseinheit 116 verwendet wird und somit die Fehlererkennungseinheit 116 nur einmal benötigt wird.
-
Die Komponente E des Fehlersignals ist E = 0, wenn das Fehlersyndrom, das der Syndromgenerator 101 bereitstellt, gleich {0}l ist und wenn kein Fehler vorliegt. Die Komponente E des Fehlersignals ist E = 1, wenn das Fehlersyndrom ungleich {0}l ist und ein Fehler vorliegt. Dabei bezeichnet {0}l einen 0-Vektor mit l Komponenten, wobei hier l = 4m ist.
-
Die Komponente err des Fehlersignals liefert die Information, welche Anzahl von Bits fehlerhaft ist.
-
Am Ausgang des UND-Gatters
114 wird das Korrektursignal Δv
1 gebildet. Der Ausgang des UND-Gatters
114 ist mit dem ersten Eingang eines XOR-Gatters
118 verbunden, an dessen zweiten Eingang das zu korrigierende Bit
anliegt. An dem Ausgang des XOR-Gatters
118 wird ein korrigierter Wert
bereitgestellt. Dabei bedeutet die Operation „+“ die Addition modulo 2, die durch das XOR-Gatter
118 realisiert ist.
-
Diese Ausführungen gelten für die Verknüpfungen der anderen Teilschaltungen ST2, ... , STn entsprechend.
-
Beispielsweise gilt für die Teilschaltung 103, die auch als Teilschaltung STn bezeichnet ist:
- Der erste Ausgang der Teilschaltung 103 (1-Bit Ausgang des NOR-Gatters 110) ist mit dem ersten Eingang (0-Eingang) einer Auswahleinheit 113 verbunden. Der zweite Ausgang der Teilschaltung 103 (1-Bit Ausgang des NOR-Gatters 111) ist mit dem zweiten Eingang (1-Eingang) der Auswahleinheit 113 verbunden. In Abhängigkeit der Komponente err des Fehlersignals wird die Auswahleinheit 113 so angesteuert, dass entweder ihr erster Eingang oder ihr zweiter Eingang mit ihrem Ausgang verbunden ist. Im Hinblick auf die Teilschaltung 103 bedeutet dies, dass entweder der Ausgang des NOR-Gatters 110 oder der Ausgang des NOR-Gatters 111 mit dem Ausgang der Auswahleinheit 113 verbunden ist.
-
Der Ausgang der Auswahleinheit 113 ist mit dem ersten Eingang eines UND-Gatters 115 verbunden. An dem zweiten Eingang des UND-Gatters 115 liegt eine zweite Komponente E des Fehlersignals an. Der Ausgang des UND-Gatters 115 ist mit der Verknüpfungsschaltung 117 verbunden.
-
Am Ausgang des UND-Gatters
115 wird das Korrektursignal
Δvn gebildet. Der Ausgang des UND-Gatters
115 ist mit dem ersten Eingang eines XOR-Gatters
119 verbunden, an dessen zweiten Eingang das zu korrigierende Bit
anliegt. An dem Ausgang des XOR-Gatters
119 wird ein korrigierter Wert
bereitgestellt.
-
Entsprechend ist pro Bitposition j eine Teilschaltung
STj (mit zwei internen Teilschaltungen) vorgesehen. Die Ausgänge jeder der Teilschaltungen werden mittels der Komponente err des Fehlersignals selektiert und mittels der Komponente E des Fehlersignals maskiert (d.h. an die Verknüpfungsschaltung
117 weitergeleitet oder nicht). Hierbei ist pro Bitposition j die vorstehend beschriebene Anordnung aus Auswahleinheit, UND-Gatter und XOR-Gatter vorgesehen, um einen korrigierten Wert
bereitstellen zu können.
-
Die Verknüpfungsschaltung 117, umfassend die jeweiligen XOR-Gatter 118, 119, kann auch als Korrekturschaltung bezeichnet werden.
-
Beispielsweise kann
1 so aufgefasst werden, dass der Syndromgenerator
101 ein Signal für n Stränge bereitstellt, wobei in
1 beispielhaft zwei Stränge für j = 1 und j = n gezeigt sind. Jeder der n Stränge ist entsprechend diesen beispielhaft gezeigten Strängen aufgebaut, d.h. umfasst eine Teilschaltung
STj mit einer Auswahleinheit und einem nachgeschalteten UND-Gatter, wobei die Auswahleinheit sowie das UND-Gatter von der Fehlererkennungseinheit
116 (mittels der beiden Komponenten err,E des Fehlersignals) angesteuert werden. Jeder Strang umfasst weiterhin ein XOR-Gatter als Teil der Verknüpfungsschaltung
117, das den Ausgang des UND-Gatters (an dem für den Strang j das Signal Δv
j bereitgestellt wird) mit dem zu korrigierenden Bit
verknüpft und somit für den Strang den korrigierten Wert
bereitstellt. Wie bereits ausgeführt, ist pro Bitposition ein Strang vorgesehen.
-
Zeigt die Komponente err des Fehlersignals an, dass ein 4-Bitfehler oder ein 3-Bitfehler aufgetreten ist, ist der 0-Eingang der jeweiligen Auswahleinheit 112, 113 mit deren Ausgang verbunden, und das Korrektursignal Δv1 ,..., Δvn (i.e. Δvj ) wird aus den m Komponenten des Lokatorpolynomwerts bestimmt, die an den m Ausgängen der jeweiligen internen Teilschaltung L4(αi
j ) bereitgestellt werden.
-
Zeigt die Komponente err des Fehlersignals an, dass ein 2-Bitfehler oder ein 1-Bitfehler aufgetreten ist, ist der 1-Eingang der jeweiligen Auswahleinheit 112, 113 mit deren Ausgang verbunden, das Korrektursignal Δvj wird aus den m Komponenten des Lokatorpolynomwerts bestimmt, die an den m Ausgängen der internen Teilschaltung L2(αi
j ) bereitgestellt werden.
-
Liegt kein Fehler vor, ist der Wert der Komponente err beliebig.
-
Die Komponente err des Fehlersignals, das durch die Fehlererkennungsschaltung 116 bereitgestellt wird, liegt an dem jeweiligen Steuereingang der Auswahleinheiten 112, 113 an und ihr Wert bestimmt, welcher Eingang der Auswahleinheit mit dem jeweiligen Ausgang verbunden ist.
-
Da sowohl im Fall eines 4-Bitfehlers als auch im Fall des 3-Bitfehlers der 0-Eingang der Auswahleinheiten 112, 113 mit dem jeweiligen Ausgang verbunden ist, unabhängig davon, ob ein 4-Bitfehler oder ein 3-Bitfehler aufgetreten ist, ist es nicht erforderlich, dass die Fehlererkennungsschaltung 116 zwischen einem 4-Bitfehler und einem 3-Bitfehler unterscheiden kann.
-
Da sowohl im Fall eines 2-Bitfehlers als auch im Fall eines 1-Bitfehlers der 1-Eingang der Auswahleinheit 112, 113 mit dem jeweiligen Ausgang verbunden ist, unabhängig davon, ob ein 2-Bitfehler oder ein 1-Bitfehler aufgetreten ist, ist es nicht erforderlich, dass die Fehlererkennungsschaltung 116 zwischen einem 2-Bitfehler und einem 1-Bitfehler unterscheiden kann.
-
Der Syndromgenerator
101 gibt an seinem 4·m Bit breiten Ausgang ein Fehlersyndrom s = s
1, s
3, s
5, s
7 der Wortbreite 4·m aus. Der Syndromgenerator
101 ist dabei so konfiguriert, dass er die Komponenten des Fehlersyndromes so bestimmt, dass
gilt, wobei die H-Matrix des 4-Bitfehler korrigierenden BCH-Codes
ist.
-
Die XOR-Gatter der Verknüpfungsschaltung
117 (beispielhaft gezeigt sind in
1 die XOR-Gatter
118 und
119 für die Stränge j = 1 und j = n) verknüpft die zu korrigierenden Bits
mit den Korrekturwerten Δv
1,..., Δv
n zu
-
Das Fehlersyndrom s wird den den Eingängen der Teilschaltungen 102, 103 von dem Syndromgenerator 101 bereitgestellt. An den Ausgängen der UND-Gatter 114, 115 werden die Korrekturwerte Δv1 , ... , Δvn vorzugsweise parallel oder im Wesentlichen parallel ausgegeben. Der Syndromgenerator 101 kann als gemeinsamer Schaltungsteil den Teilschaltungen 102, 103 vorgeschaltet sein. Somit ist es möglich, dass die Korrekturwerte Δv1 , ... , Δvn parallel oder im Wesentlichen parallel bestimmt werden.
-
2 zeigt eine Schaltungsanordnung zur Korrektur eines möglicherweise fehlerhaften Binärwortes
unter Verwendung eines 5-Bitfehler korrigierenden BCH-Codes über dem Galoisfeld GF(2
m). Der 5-Bitfehler korrigierende BCH-Code erlaubt eine Korrektur von 1-Bitfehlern, 2-Bitfehlern, 3-Bitfehlern, 4-Bitfehlern und 5-Bitfehlern.
-
Entsprechend den vorstehenden Ausführungen zu 1 weist auch 2 eine Vielzahl von n Strängen auf, wobei je ein Strang j für die Korrektur einer Bitposition des Binärworts v' vorgesehen ist.
-
Nachfolgend wird allgemein ein Strang j beschrieben: Der Strang j weist eine Teilschaltung
STj auf, die in
2 beispielhaft drei interne Teilschaltungen umfasst, wobei die internen Teilschaltungen die Lokatorpolynomwerte L
5(α
i
j ), L
3(α
i
j ) und L1(α
i
j ) bereitstellen. Die Ausgänge der internen Teilschaltungen werden mittels einer Auswahleinheit, die von einer Komponente err des Fehlersignals angesteuert wird, selektiv über ein ODER-Gatter mit m Eingängen und einem 1-Bit-Ausgang mit dem ersten Eingang eines weiteren ODER-Gatters verbunden, dessen zweiter Eingang mit der Komponente E des Fehlersignals verbunden ist. An dem Ausgang des weiteren ODER-Gatters wird das Korrektursignal Δv
j des Strangs bereitgestellt, das weiter über ein XNOR-Gatter mit dem zugehörigen zu korrigierenden Bit
zu einem Korrekturwert
verknüpft wird. Die XNOR-Gatter der einzelnen Stränge können in einer Verknüpfungsschaltung (auch bezeichnet als Korrekturschaltung) zusammengefasst sein. Die jeweilige Auswahleinheit kann Teil der Teilschaltung
STj oder separat zu dieser ausgeführt sein. In
2 umfasst die Teilschaltung
STj beispielhaft die internen Teilschaltungen zur Bestimmung der Lokatorpolynomwerte sowie die sich an deren Ausgänge anschließende Auswahleinheit. Grundsätzlich kann jede der Teilschaltungen
STj auch mehr oder weniger Elemente des Strangs j umfassen.
-
2 zeigt beispielhaft zwei Stränge für die Bitpositionen j = 1 und j = n. Die verbleibenden Stränge für j = 2,..., n - 1 sind in 2 durch punktierte Linien angedeutet.
-
Der erste in 2 gezeigte Strang umfasst eine Teilschaltung 202 mit einer internen Teilschaltung 204 zur Bestimmung des Lokatorpolynomwerts L5(αi
1 ), einer internen Teilschaltung 205 zur Bestimmung des Lokatorpolynomwerts L3(ai
1 ) und einer internen Teilschaltung 206 zur Bestimmung des Lokatorpolynomwerts L1(ai
1 ). Der Ausgang der internen Teilschaltung 204 stellt ein m-dimensionales Signal dem 0-Eingang einer Auswahleinheit 210 bereit. Der Ausgang der internen Teilschaltung 205 stellt ein m-dimensionales Signal dem 1-Eingang der Auswahleinheit 210 bereit. Der Ausgang der internen Teilschaltung 206 stellt ein m-dimensionales Signal dem 2-Eingang der Auswahleinheit 210 bereit. Der entsprechende Eingang der Auswahleinheit 210 wird über die Komponente err des Fehlersignals selektiert. Die Auswahleinheit 210 liefert ein m-dimensionales Signal an ein ODER-Gatter 212, das m-Eingänge und einen Ausgang aufweist. Das ODER-Gatter 212 liefert an seinem Ausgang den Wert 0 nur dann, wenn alle m-Bits an seinen Eingängen binär 0 sind. Ansonsten liegt an dem Ausgang des ODER-Gatters 212 der binäre Wert 1 an. Der Ausgang des ODER-Gatters 212 ist mit dem ersten Eingang eines ODER-Gatters 214 verbunden. An dem zweiten Eingang des ODER-Gatters 214 liegt die Komponente E des Fehlersignals an. Das Fehlersignal, d.h. die Komponenten err, E des Fehlersignals werden von einer Fehlererkennungseinheit 216 bereitgestellt. Das Fehlersignal kann für alle Stränge j verwendet werden
-
An dem Ausgang des ODER-Gatters
214 wird ein Korrektursignal Δv
1 dem ersten Eingang eines XNOR-Gatters
218 bereitgestellt. An dem zweiten Eingang des XNOR-Gatters
218 liegt das zu korrigierende Bit
an. Am Ausgang des XNOR-Gatters
218 wird der Korrekturwert
für die Bitposition
1 bereitgestellt.
-
Die vorstehenden Ausführungen gelten für den Strang j = n entsprechend: Hier ist eine Teilschaltung
203 mit internen Teilschaltungen
207 bis
209 gezeigt, die mit einer Auswahleinheit
211 verbunden sind. Die internen Teilschaltungen
207 bis
209 stellen die Lokatorpolynomwerte L
5(α
i
n ), L
3(α
i
n ) und L
1(α
i
n ) bereit. Der Ausgang der Auswahleinheit
211 ist über zwei ODER-Gatter
213 und
215 mit einem XNOR-Gatter
219 verbunden, das in diesem Fall den Korrekturwert
für die Bitposition n bereitstellt. Die Selektion der Auswahleinheit
211 wird über die Komponente err des Fehlersignals vorgenommen und der zweite Eingang des ODER-Gatters
215 ist (wie zuvor der zweite Eingang des ODER-Gatters
214) mit der Komponente E des Fehlersignals verbunden.
-
Jede der Teilschaltungen STj weist 5·m Eingänge zur Eingabe der Syndromkomponenten s1, s3, s5, s7, s9 auf, die von einem Syndromgenerator 201 bereitgestellt werden.
-
Die Syndromkomponenten s1 , s3 , s5 , s7 , s9 werden dem 5·m-Bit breiten Eingang der internen Teilschaltung, die die Lokatorpolynomwerte L5 (αi
j ) bestimmt, zugeführt. Die Syndromkomponenten s1 , s3 , s5 werden dem 3, m-Bit breiten Eingang der internen Teilschaltung, die die Lokatorpolynomwerte L3(αi
j ) bestimmt, zugeführt. Die m-Bit breite Syndromkomponente s1 wird dem m-Bit breiten Eingang der internen Teilschaltung, die die Lokatorpolynomwerte L1 (αij) bestimmt, zugeführt.
-
Ist eine Bitposition j des Binärworts v' fehlerhaft und liegt ein 5-Bitfehler oder ein 4-Bitfehler vor, wird an den m Ausgängen der internen Teilschaltung, die den Lokatorpolynomwert
L5 (α
i
j ) bestimmt, ein m-stelliger Lokatorpolynomwert
bereitgestellt (dieser Lokatorpolynomwert wird auch mit 101" abgekürzt).
-
Ist die Bitposition j nicht fehlerhaft und liegt ein 5-Bitfehler oder ein 4-Bitfehler an verschiedenen Bitpositionen vor, wird an den m Ausgängen der internen Teilschaltung, die den Lokatorpolynomwert gemäß L5(αi
j ) bestimmt, ein von dem Lokatorpolynomwert verschiedener Wert bereitgestellt, also ein Wert der ungleich {0}m ist.
-
Ist die Bitposition j fehlerhaft und liegt ein 3-Bitfehler oder ein 2-Bitfehler an verschiedenen Bitpositionen vor, wird an den m Ausgängen der internen Teilschaltung, die den Lokatorpolynomwert gemäß L3 (αij) bestimmt, der m-stellige Lokatorpolynomwert {0}m bereitgestellt.
-
Ist die Bitposition j nicht fehlerhaft und liegt ein 3-Bitfehler oder ein 2-Bitfehler an verschiedenen Bitpositionen vor, wird an den m Ausgängen der internen Teilschaltung, die den Lokatorpolynomwert gemäß L3(αi
j ) bestimmt, ein von dem Lokatorpolynomwert {0}m verschiedener Wert bereitgestellt.
-
Ist die Bitposition j fehlerhaft und liegt ein 1-Bitfehler vor, wird an den m Ausgängen der internen Teilschaltung, die den Lokatorpolynomwert gemäß L1(αi
j ) bestimmt, der m-stellige Lokatorpolynomwert {0}m bereitgestellt.
-
Ist die Bitposition j nicht fehlerhaft und liegt ein 1-Bitfehler an einer von j verschiedenen Bitposition vor, wird an den m Ausgängen der internen Teilschaltung, die den Lokatorpolynomwert gemäß L1(αij) bestimmt, ein von dem Lokatorpolynomwert {0}m verschiedener Wert bereitgestellt.
-
Die jeweilige Auswahleinheit (z.B. die Auswahleinheit 210, 211) ist so konfiguriert, dass
- - wenn die Komponente err des Fehlersignals einen 4-Bitfehler oder einen 5-Bitfehler anzeigt (d.h. err = 0), der 0-Eingang der Auswahleinheit mit ihrem Ausgang verbunden ist,
- - wenn die Komponente err des Fehlersignals einen 2-Bitfehler oder einen 3-Bitfehler anzeigt (d.h. err = 1), der 1-Eingang der Auswahleinheit mit ihrem Ausgang verbunden ist und
- - wenn die Komponente err des Fehlersignals einen 1-Bitfehler anzeigt (d.h. err = 2), der 2-Eingang der Auswahleinheit mit ihrem Ausgang verbunden ist.
-
Liegt kein Fehler vor, ist der Wert der Komponente err des Fehlersignals bspw. beliebig.
-
Im Falle eines Fehlers an der Bitposition j gibt die Teilschaltung STj an ihrem m-dimensionalen Ausgang, der auch der Ausgang der für diesen Strang vorgesehenen Auswahleinheit ist, im Falle eines 5-Bitfehlers, eines 4-Bitfehlers, eines 3-Bitfehlers, eines 2-Bitfehlers oder eines 1-Bitfehlers den m-dimensionalen Lokatorpolynomwert {0}m aus.
-
Liegt kein Fehler an der Bitposition j vor, gibt die Teilschaltung STj an ihrem m-dimensionalen Ausgang, der auch der Ausgang der für diesen Strang vorgesehenen Auswahleinheit ist, im Falle eines 5-Bitfehlers, eines 4-Bitfehlers, eines 3-Bitfehlers, eines 2-Bitfehlers oder eines 1-Bitfehlers einen von dem m-dimensionalen Lokatorpolynomwert {0}m verschiedenen Wert aus.
-
Die Bestimmung des korrigierten Werts
wird nachfolgend beispielhaft für den Strang j = 1 erläutert. Da die einzelnen Stränge gleich aufgebaut sind, gelten diese Ausführungen für eine beliebige Bitposition j entsprechend.
-
Der m-dimensionale Ausgang der Auswahleinheit 210 ist mit dem m-dimensionalen Eingang des ODER-Gatters 212 verbunden. An dem 1-dimensionalen Ausgang des ODER-Gatters 212 wird genau dann der binäre Wert 0 ausgegeben, wenn an dessen Eingang der Lokatorpolynomwert {0}m anliegt (also alle m-Bits den Wert 0 haben). Liegt ein davon verschiedener Lokatorpolynomwert an dem Eingang des ODER-Gatters 212, dann liegt an dessen Ausgang der binäre Wert 1.
-
Die Komponente E des Fehlersignals ist binär 1, wenn kein Fehler aufgetreten ist und wenn das Fehlersyndrom gleich 0 ist. Entsprechend ist die Komponente E des Fehlersignals binär 0, wenn ein Fehler aufgetreten ist und wenn das Fehlersyndrom ungleich 0 ist.
-
An dem 1-Bit breiten Ausgang des ODER-Gatters
214 wird das Korrektursignal Δv
j (mit j = 1) ausgegeben und in dem XNOR-Gatter
218 verknüpft mit dem eventuell fehlerhaften Bit
zu
-
Im vorliegenden Fall wurde der Strang der ersten Bitposition betrachtet, entsprechend gilt j = 1. Die Ausführungen gelten, wie vorstehend erläutert wurde, für die Bitpositionen j = 2,..., j = n entsprechend.
-
Die jeweiligen XNOR-Gatter 218, 219 können Teil einer Verknüpfungsschaltung 217 sein. Diese Verknüpfungsschaltung 217 kann auch als Korrekturschaltung aufgefasst werden.
-
Hierbei sei angemerkt, dass das XNOR-Gatter die Funktion (Exklusiv-Nicht-ODER) wahrnimmt; an dessen Ausgang liegt genau dann eine logische 1 an, wenn an beiden Eingängen 1 oder an beiden Eingängen 0 anliegt. Die XNOR-Verknüpfung wird auch als Äquivalenz bezeichnet.
-
Der Syndromgenerator
201 stellt das 5 · m-dimensionale Fehlersyndrom
bereit, das an dem 5 · m-dimensionalen Eingang der jeweiligen Teilschaltung
STj anliegt. Das von dem Syndromgenerator
201 bereitgestellte Fehlersyndrom ist dabei so bestimmt, dass
gilt, wobei die H-Matrix des 5-Bitfehler korrigierenden BCH-Codes
ist.
-
Liegt ein 1-Bitfehler, 2-Bitfehler, 3-Bitfehler, 4-Bitfehler oder 5-Bitfehler vor und ist das j-te Bit fehlerhaft, ist in der Schaltungsanordnung von 2 der Wert des Korrektursignales Δvj = 0. Liegt in dem j-ten Bit kein Fehler vor, ist das Korrektursignal entsprechend Δvj = 1.
-
In Abhängigkeit von der Anzahl der aufgetretenen Fehler ist bestimmt, ob unter Verwendung einer ersten internen Teilschaltung, einer zweiten internen Teilschaltung oder einer dritten internen Teilschaltung der Korrekturwert Δvj bestimmt ist, wobei jeder internen Teilschaltung das erste ODER-Gatter (212, 213) nachgeschaltet ist. Das erste ODER-Gatter (212, 213) kann somit als Bestandteil der jeweiligen internen Teilschaltung oder separat zu dieser realisiert sein. Über die Auswahleinheit (210, 211) ist es möglich, das erste ODER-Gatter (212, 213) gemeinsam für mehrere interne Teilschaltungen zu nutzen, wobei eine der internen Teilschaltungen mittels der Komponente err des Fehlersignals über die Auswahleinheit selektierbar ist.
-
Insbesondere da der Syndromgenerator 201 den Teilschaltungen 202, 203 gemeinsam vorgeschaltet ist, können die Korrektursignale Δv1, ... , Δvn parallel oder im Wesentlichen parallel bestimmt werden. Beispielsweise ist es möglich, dass die Korrektursignale Δv1,..., Δvn zu gleichen Taktzyklen, d.h. im Wesentlichen zeitgleich, bereitgestellt werden.
-
Aufgrund der höheren Komplexität der internen Teilschaltungen 204, 207 im Vergleich zu der Komplexität der internen Teilschaltungen 206, 209 kann die Korrektur eines 5-Bitfehlers mehr Zeit erfordern als die Korrektur eines 1-Bitfehlers. Beispielsweise ist es eine Option, dass die Korrektur des 1-Bitfehlers während eines Taktzyklus erfolgt, wohingegen die Korrektur des 5-Bitfehlers mehrere Taktzyklen benötigt.
-
3 zeigt für ein Diagramm einer beispielhaften Implementierung der internen Teilschaltungen 104 und 106 aus 1. Die interne Teilschaltung 104 stellt den Lokatorpolynomwert L4(αi
1 ) und die interne Teilschaltung 106 stellt den Lokatorpolynomwert L4(αi
n ) bereit. Wie in 1 gezeigt, ist der internen Teilschaltung 104 das NOR-Gatter 108 nachgeschaltet und der internen Teilschaltung 106 ist das NOR-Gatter 110 nachgeschaltet.
-
In 3 ist die interne Teilschaltung 104 aufgeteilt in einen zentralen Schaltungsteil 302 und in einen lokalen Schaltungsteil 303. Entsprechend ist die interne Teilschaltung 106 unterteilt in den zentralen Schaltungsteil 302 und einen lokalen Schaltungsteil 304. Der zentrale Schaltungsteil 302 wird für alle internen Teilschaltungen zur Bestimmung der Lokatorpolynomwerte L4(αi
j ) verwendet, wobei jede der internen Teilschaltungen zusätzlich einen eigenen lokalen Schaltungsteil (in 3 beispielhaft gezeigt für die internen Teilschaltungen 303 und 304) aufweist.
-
Entsprechend der Darstellung von 1 sind in 3 nur die beiden Stränge für die Bitpositionen j = 1 und j = n gezeigt. Dazwischen sind die Stränge für die Bitpositionen j = 2, ... , n - 1 angeordnet, die entsprechend aufgebaut sind und der Übersicht halber in 3 nicht dargestellt sind.
-
Der zentrale Schaltungsteil
302 bestimmt in einer Einheit
305 den Wert des Koeffizienten
in einer Einheit
306 den Wert des Koeffizienten
in einer Einheit
307 den Wert des Koeffizienten
und in einer Einheit
308 den Wert des Koeffizienten
des Lokatorpolynoms 4-ten Grades basierend auf den an seinem 4·m-Bit breiten Eingang anliegenden Teilsyndromen
s1 ,
s3 ,
s5 ,
s7 . Wie in
1 dargestellt, werden die Teilsyndrome von dem Syndromgenerator
101 bereitgestellt. Die Einheiten
305 bis
308 weisen jeweils einen 4·m-Bit breiten Eingang und einen m-Bit breiten Ausgang auf.
-
Weiterhin sind n lokale Schaltungsteile (beispielhaft gezeigt für die Bitposition j = 1 als lokaler Schaltungsteil
303 und für die Bitposition j = n als lokaler Schaltungsteil
304) vorhanden, die aus den von den Einheiten
305 bis
308 bereitgestellten Koeffizienten
die Lokatorpolynomwerte von L
4(α
i
1 ),...,L
4(α
i
n ) bestimmen.
-
Nachfolgend wird beispielhaft der lokale Schaltungsteil 303 für die Bitposition j = 1 erläutert:
- - Der Ausgang der Einheit 305 ist mit dem ersten Eingang eines Multiplizierers 309 verbunden. An dem zweiten Eingang des Multiplizierers 309 liegt ein konstanter Wert α3i
1 an. Der Ausgang des Multiplizierers 309 ist mit dem ersten m-Bit breiten Eingang eines XOR-Gatters 312 verbunden. Das XOR-Gatter 312 ist insbesondere realisiert als eine XOR-Schaltung mit 5 m-Bit breiten Eingängen und einem m-Bit breiten Ausgang.
- - Der Ausgang der Einheit 306 ist mit dem ersten Eingang eines Multiplizierers 310 verbunden. An dem zweiten Eingang des Multiplizierers 310 liegt ein konstanter Wert α2i
1 an. Der Ausgang des Multiplizierers 310 ist mit dem zweiten m-Bit breiten Eingang des XOR-Gatters 312 verbunden.
- - Der Ausgang der Einheit 307 ist mit dem ersten Eingang eines Multiplizierers 311 verbunden. An dem zweiten Eingang des Multiplizierers 311 liegt ein konstanter Wert αi
1 an. Der Ausgang des Multiplizierers 311 ist mit dem dritten m-Bit breiten Eingang des XOR-Gatters 312 verbunden.
- - Der Ausgang der Einheit 308 ist mit dem vierten m-Bit breiten Eingang des XOR-Gatters 312 verbunden.
- - An dem fünften m-Bit breiten Eingang des XOR-Gatter 312 liegt ein konstanter Wert α4i
1 an.
- - Das XOR-Gatter 312 stellt an seinem Ausgang den Wert
bereit.
-
Ein Multiplizierer führt eine Multiplikation in dem Galoisfeld GF(2m) aus. Ein solcher Multiplizierer kann auch als ein Galoisfeld-Multiplizierer bezeichnet werden. Ein Multiplizierer mit zwei m-Bit breiten Eingängen, wobei an einem der Eingänge ein konstanter Wert anliegt, wird auch als ein Konstanten-Multiplizierer bezeichnet.
-
Die Ausführungen gelten für den lokalen Schaltungsteil 304 für die Bitposition j = n entsprechend. Der Ausgang des jeweiligen lokalen Schaltungsteils 303, 304 ist mit dem jeweiligen NOR-Gatter 108, 110 verbunden (siehe hierzu auch 1). In 3 sind entsprechend die für den Schaltungsteil 304 die Multiplizierer 313 bis 315 und das XOR-Gatter 316 gezeigt.
-
Allgemein gilt: Der zentrale Schaltungsteil 302 mit den Einheiten 305 bis 308 wird für alle Stränge bzw. Bitpositionen j gemeinsam verwendet. Pro Strang bzw. Bitposition j gibt es einen eigenen lokalen Schaltungsteil LSTj mit drei Multiplizierern M1j, M2j und M3j und einem XOR-Gatter XORj.
-
Für die Bitposition j = 1, ... , n gilt:
- - Der Ausgang der Einheit 305 ist mit einem m-Bit breiten ersten Eingang des Multiplizierers M1j verbunden, an dessen zweiten Eingang ein konstanter Wert α3i
j anliegt. Der Ausgang des Multiplizierers M1j ist mit dem m-Bit breiten ersten Eingang des XOR-Gatters XORj verbunden und liefert den Wert
an das XOR-Gatter XORj.
- - Der Ausgang der Einheit 306 ist mit einem m-Bit breiten ersten Eingang des Multiplizierers M2j verbunden, an dessen zweiten Eingang ein konstanter Wert α2i
j anliegt. Der Ausgang des Multiplizierers M2j ist mit dem m-Bit breiten zweiten Eingang des XOR-Gatters XORj verbunden und liefert den Wert
an das XOR-Gatter XORj.
- - Der Ausgang der Einheit 307 ist mit einem m-Bit breiten ersten Eingang des Multiplizierers M3j verbunden, an dessen zweiten Eingang ein konstanter Wert αi
j anliegt. Der Ausgang des Multiplizierers M3j ist mit dem m-Bit breiten dritten Eingang des XOR-Gatters XORj verbunden und liefert den Wert
an das XOR-Gatter XORj.
- - Der Ausgang der Einheit 308 ist mit einem m-Bit breiten vierten Eingang des XOR-Gatters XORj verbunden und liefert den Wert
an das XOR-Gatter XORj.
- - An einem m-Bit breiten fünften Eingang des XOR-Gatters XORj liegt der Wert α4i
j an. Somit liefert das XOR-Gatter XORj an seinem m-Bit breiten Ausgang den Wert
wobei mit „+“ hier die komponentenweise Addition modulo 2 oder komponentenweise XOR-Verknüpfung bezeichnet ist.
- - Der Ausgang des XOR-Gatters XORj ist mit einem m-Bit breiten Eingang des nachgeordneten NOR-Gatters (pro Bitposition j ist ein NOR-Gatter vorgesehen) verbunden. Das jeweilige NOR-Gatter weist einen m-Bit breiten Eingang und einen 1-Bit breiten Ausgang auf.
-
Die Einheit
305 ist so konfiguriert, dass in Abhängigkeit von dem an deren Eingang anliegenden Teilsyndrom
s1 ein Wert
gebildet und an deren Ausgang bereitgestellt wird.
-
Die Einheit
306 ist so konfiguriert, dass in Abhängigkeit von an deren Eingang anliegenden Teilsyndromen
s1 ,
s3 ,
s5 ,
s7 ein Wert
gebildet und an deren Ausgang bereitgestellt wird.
-
Die Einheit
307 ist so konfiguriert, dass in Abhängigkeit von an deren Eingang anliegenden Teilsyndromen
s1 ,
s3 ,
s5 ,
s7 ein Wert
gebildet und an deren Ausgang bereitgestellt wird.
-
Die Einheit
308 ist so konfiguriert, dass in Abhängigkeit von an deren Eingang anliegenden Teilsyndromen
s1 ,
s3 ,
s5 ,
s7 ein Wert
gebildet und an deren Ausgang bereitgestellt wird.
-
Die Implementierung der Einheiten
305 bis
308 zur Bestimmung der Werte
können entsprechend den angegebenen Beziehungen unter Verwendung von bekannten Galoisfeld-Multiplizierern, komponentenweise XOR-Verknüpfungen und einer bekannten Division im Galoisfeld aus den Teilsyndromen erfolgen.
-
Die Multiplizierer M1j , M2j und M3j (bzw. 309 bis 311 j = 1 und 313 bis 315 für j = n) lassen sich als XOR-Verknüpfungen realisieren.
-
Der zentrale Schaltungsteil 302 wird für alle Teilschaltungen zur Bestimmung der Lokatorpolynomwerte L4(xi
j ) mit j = 1, ... , n verwendet. Der zentrale Schaltungsteil 302 ist somit den lokalen Schaltungsteilen 303, 304 vorgeschaltet. Vorzugsweise können die Lokatorpolynomwerte L4(xi
j ) gemäß der Darstellung von 3 parallel oder im Wesentlichen parallel (z.B. mit einem gemeinsamen Takt) bereitgestellt werden. Somit können die Lokatorpolynomwerte und damit die Korrektursignale parallel oder im Wesentlichen parallel bestimmt werden.
-
4 zeigt in Ergänzung zu der Darstellung von 1 eine beispielhafte Implementierung der internen Teilschaltungen 105 und 107, die die Lokatorpolynomwerte L2(αi
j ) für j = 1, ... , n bereitstellen für den Fall, dass entweder ein 2-Bitfehler oder ein 1-Bitfehler aufgetreten ist. Die internen Teilschaltungen 105 und 107 sind hierbei beispielhaft auf einen zentralen Schaltungsteil 401 und einen lokalen Schaltungsteil 402 verteilt, wobei der zentrale Schaltungsteil 401 für beide internen Teilschaltungen 105 und 107 genutzt wird und zusätzlich für jede der internen Teilschaltungen 105 und 107 noch ein individueller lokaler Schaltungsteil vorgesehen ist. Im Beispiel gemäß 4 sind die individuellen lokalen Schaltungsteile in dem Schaltungsteil 402 zusammengefasst. Je nach Implementierung können die lokalen Schaltungsteile auch getrennt voneinander realisiert sein (wie dies beispielhaft in 3 erläutert ist).
-
Der zentrale Schaltungsteil
401 umfasst eine Einheit
403 zur Bestimmung von
und eine Einheit
404 zur Bestimmung von
Sowohl die Einheit
403 als auch die Einheit
404 weist einen 2· m breiten Eingang auf, an dem die Teilsyndrome
s1 ,
s3 anliegen, die von dem Syndromgenerator (nicht in
4 dargestellt) bereitgestellt werden. Jede der Einheiten
403 und
404 hat einen m-Bit breiten Ausgang, an dem die Werte
und
dem lokalen Schaltungsteil
402 zur Verfügung gestellt werden.
-
Der lokale Schaltungsteil
402 umfasst für jede Bitposition j einen lokalen Schaltungsteil (in
4 sind die lokalen Schaltungsteile beispielhaft in dem Block
402 zusammengefasst); damit gibt es n derartige lokale Schaltungsteile, die aus den Werten der Koeffizienten
und
die Lokatorpolynomwerte L
2(α
i
1 ), ..., L
2(α
i
n ) bestimmen.
-
Der zentrale Schaltungsteil 401 mit den Einheiten 403 und 404 wird in diesem Ausführungsbeispiel für alle Stränge bzw. Bitpositionen j gemeinsam verwendet. Pro Strang bzw. Bitposition j gibt es einen eigenen lokalen Schaltungsteil STLj mit einem Multiplizierer MPj und einem XOR-Gatter EXj .
-
Allgemein gilt für die Bitposition j = 1, ... ,n:
- - Der Ausgang der Einheit 403 ist mit einen m-Bit breiten ersten Eingang des Multiplizierers MPj verbunden, an dessen zweiten Eingang ein konstanter Wert αi
j anliegt. Der Ausgang des Multiplizierers MPj ist mit dem m-Bit breiten Eingang des XOR-Gatters EXj verbunden und liefert den Wert
an das XOR-Gatter EXj .
- - Der Ausgang der Einheit 404 ist mit einem m-Bit breiten zweiten Eingang des XOR-Gatters EXj verbunden.
- - An m-Bit breiten dritten Eingang des XOR-Gatters EXj liegt der Wert α2i
j an. Somit liefert das XOR-Gatter EXj an seinem m-Bit breiten Ausgang den Wert
-
Der Ausgang des XOR-Gatters EXj ist mit dem m-Bit breiten Eingang des NOR-Gatters für den jeweiligen Strang (vergleiche 1) verbunden.
-
4 zeigt beispielhaft nur die beiden Stränge für die Bitpositionen j = 1 und j = n. Dazwischen sind die Stränge für die Bitpositionen j = 2, ... , n - 1 angeordnet, die entsprechend aufgebaut sind und der Übersicht halber in 4 nicht dargestellt sind.
-
Für den Strang j = 1 werden für dessen lokalen Schaltungsteil die folgenden Bezugszeichen verwendet: Der Multiplizierer MP1 ist mit dem Bezugszeichen 405 versehen und das XOR-Gatter EX1 hat das Bezugszeichen 407. Weiterhin ist das NOR-Gatter 109 aus 1 dargestellt, das mit dem Ausgang des XOR-Gatters 407 verbunden ist.
-
Für den Strang j = n werden für dessen lokalen Schaltungsteil die folgenden Bezugszeichen verwendet: Der Multiplizierer MPn ist mit dem Bezugszeichen 406 versehen und das XOR-Gatter EXn hat das Bezugszeichen 408. Weiterhin ist das NOR-Gatter 111 aus 1 dargestellt, das mit dem Ausgang des XOR-Gatters 408 verbunden ist.
-
Die Einheit
403 ist so konfiguriert, dass in Abhängigkeit von dem an deren Eingang anliegenden Teilsyndrom
s1 ein Wert
gebildet und an deren Ausgang bereitgestellt wird.
-
Die Einheit
404 ist so konfiguriert, dass in Abhängigkeit von an deren Eingang anliegenden Teilsyndromen
s1 ,
s3 ein Wert
gebildet und an deren Ausgang bereitgestellt wird.
-
5 zeigt eine beispielhafte Schaltungsanordnung zur Bestimmung eines Korrekturwerts Δvj, wenn die Korrektur mit einem t-Bitfehler korrigierenden BCH-Code erfolgt. Hierbei ist t beispielhaft eine gerade Zahl.
-
5 zeigt eine Teilschaltung 501 (auch bezeichnet als Teilschaltung STj für die Bitposition j oder den Strang j) mit internen Teilschaltungen 502 bis 504. Die Teilschaltung 501 verfügt über einen t·m-Bit breiten Eingang, an dem das Fehlersyndrom s mit seinen t Komponenten s1 , s3 , ... , s2t-1 anliegt.
-
Die interne Teilschaltung
502 stellt einen Lokatorpolynomwert
bereit und gibt an ihrem m-dimensionalen Ausgang den m-dimensionalen Wert z
j [t, t - 1] aus. Der Ausgang der internen Teilschaltung
502 ist mit einem m-dimensionalen Eingang eines NOR-Gatters
505 verbunden, das einen 1-Bit breiten Ausgang aufweist, der mit dem ersten Eingang einer Auswahleinheit
508 verbunden ist.
-
Die interne Teilschaltung
503 stellt einen Lokatorpolynomwert
bereit und gibt an ihrem m-dimensionalen Ausgang den m-dimensionalen Wert z
j [t - 2, t - 3] aus. Der Ausgang der internen Teilschaltung
503 ist mit einem m-dimensionalen Eingang eines NOR-Gatters
506 verbunden, das einen 1-Bit breiten Ausgang aufweist, der mit dem zweiten Eingang einer Auswahleinheit
508 verbunden ist.
-
Die interne Teilschaltung
504 stellt einen Lokatorpolynomwert
bereit und gibt an ihrem m-dimensionalen Ausgang den m-dimensionalen Wert z
j [2, 1] aus. Der Ausgang der internen Teilschaltung
504 ist mit einem m-dimensionalen Eingang eines NOR-Gatters
507 verbunden, das einen 1-Bit breiten Ausgang aufweist, der mit dem t/2-ten Eingang einer Auswahleinheit
508 verbunden ist.
-
Somit weist die Auswahleinheit 508 halb so viele Eingänge auf wie der bitfehlerkorrigierende Code korrigieren kann.
-
Ist das Bit v'j fehlerhaft, gilt:
- - Liegt ein t-Bitfehler oder ein (t - 1)-Bitfehler vor, wird an den m ersten Ausgängen der Teilschaltung STj , die hier den Ausgängen der internen Teilschaltung 502 entsprechen, anhand derer die Lokatorpolynomwerte Lt(αi
j ) bereitgestellt werden, der Lokatorpolynomwert
ausgegeben.
- - Liegt ein (t - 2)-Bitfehler oder ein (t - 3)-Bitfehler vor, wird an den m zweiten Ausgängen der Teilschaltung STj , die hier den Ausgängen der internen Teilschaltung 503 entsprechen, anhand derer die Lokatorpolynomwerte Lt-2(αi
j ) bereitgestellt werden, der Lokatorpolynomwert
ausgegeben.
- - Diese Ausführungen können für Bitfehler t - q und t - q - 1 mit q = 4, 6, 8, ... entsprechend solange fortgeführt werden bis schließlich die 2-Bitfehler und die 1-Bitfehler erreicht sind (siehe nachfolgender Punkt).
- - Liegt ein 2-Bitfehler oder ein 1-Bitfehler vor, wird an m t/2-ten Ausgängen der Teilschaltung STj , die hier den Ausgängen der internen Teilschaltung 504 entsprechen, anhand derer die Lokatorpolynomwerte L2(αi
j ) bereitgestellt werden, der Lokatorpolynomwert
ausgegeben.
-
Ist das Bit v'j nicht fehlerhaft, gilt:
- - Liegt ein t-Bitfehler oder ein (t - 1)-Bitfehler vor, wird an den m ersten Ausgängen der Teilschaltung STj , die hier den Ausgängen der internen Teilschaltung 502 entsprechen, anhand derer die Lokatorpolynomwerte Lt(αij) bereitgestellt werden, der Lokatorpolynomwert
ausgegeben.
- - Liegt ein (t - 2)-Bitfehler oder ein (t - 3)-Bitfehler vor, wird an den m zweiten Ausgängen der Teilschaltung STj , die hier den Ausgängen der internen Teilschaltung 503 entsprechen, anhand derer die Lokatorpolynomwerte Lt-2(αi
j ) bereitgestellt werden, der Lokatorpolynomwert
ausgegeben.
- - Diese Ausführungen können für Bitfehler t - q und t - q - 1 mit q = 4, 6, 8, ... entsprechend solange fortgeführt werden bis schließlich die 2-Bitfehler und die 1-Bitfehler erreicht sind (siehe nachfolgender Punkt).
- - Liegt ein 2-Bitfehler oder ein 1-Bitfehler vor, wird an den m t/2-ten Ausgängen der Teilschaltung STj , die hier den Ausgängen der internen Teilschaltung 504 entsprechen, anhand derer der die Lokatorpolynomwerte L2(αi
j ) bereitgestellt werden, der Lokatorpolynomwert
ausgegeben.
-
In Abhängigkeit von einer Anzahl der aufgetretenen Fehler bestimmt ein Wert der Komponente err des Fehlersignals, das von einer Fehlererkennung 509 der Auswahleinheit 508 bereitgestellt wird, welcher der Eingänge der Auswahleinheit 508 mit ihrem Ausgang verbunden ist. Der Ausgang der Auswahleinheit 508 ist mit dem ersten Eingang eines UND-Gatters 510 verbunden. An dem zweiten Eingang des UND-Gatters 510 liegt die Komponente E des Fehlersignals, die ebenfalls von der Fehlererkennung 509 bereitgestellt wird. Der Ausgang des UND-Gatters 510 stellt den Korrekturwert Δvj für das eventuell fehlerhafte Bit v'j bereit.
-
Liegt ein t-Bitfehler oder ein (t - 1)-Bitfehler vor, verbindet die Auswahleinheit ihren ersten Eingang mit ihrem Ausgang und der an dem Ausgang der internen Teilschaltung 502 bereitgestellte Wert zj = zj [t, t - 1] bestimmt, ob Δvj = 1 oder Δvj = 0 ist:
- - Bei zj [t, t - 1] = {0}m ist Δvj = 1.
- - Bei zj [t, t - 1] ≠ {0}m ist Δvj = 0.
-
Liegt ein (t - 2)-Bitfehler oder ein (t - 3)-Bitfehler vor, verbindet die Auswahleinheit 508 ihren zweiten Eingang mit ihrem Ausgang und der an dem Ausgang der internen Teilschaltung 503 bereitgestellte Wert zj = zj [t - 2, t - 3] bestimmt, ob Δvj = 1 oder Δvj = 0 ist.
- - Bei zj [t - 2, t - 3] = {0}m ist Δvj = 1.
- - Bei zj [t - 2, t - 3] ≠ {0}m ist Δvj = 0.
-
Entsprechend kann diese Betrachtung für nachfolgende Paare von Bitfehlern
bis zu dem nachfolgend erläuterten Paar des 2-Bitfehlers und 1-Bitfehlers fortgesetzt werden.
-
Liegt schließlich ein 2-Bitfehler oder ein 1-Bitfehler vor, verbindet die Auswahleinheit 508 ihren t/2-ten Eingang mit ihrem Ausgang und der an dem Ausgang der internen Teilschaltung 504 bereitgestellte Wert zj = zj [2, 1] bestimmt, ob Δvj = 1 oder Δvj = 0 ist.
- - Bei zj [2, 1] = {0}m ist Δvj = 1.
- - Bei zj [2, 1] ≠ {0}m ist Δvj = 0.
-
Liegt kein Fehler vor, ist der Wert der Komponente E des Fehlersignals gleich Null (E = 0) und es gilt: Δvj = 0.
-
6 zeigt eine beispielhafte Schaltungsanordnung zur Bestimmung eines Korrekturwerts Δvj, wenn die Korrektur mit einem t-Bitfehler korrigierenden BCH-Code erfolgt. Hierbei ist t beispielhaft eine ungerade Zahl.
-
6 zeigt eine Teilschaltung 601 (auch bezeichnet als Teilschaltung STj für die Bitposition j oder den Strang j) mit internen Teilschaltungen 602 bis 604. Die Teilschaltung 601 verfügt über einen t·m-Bit breiten Eingang, an dem das Fehlersyndrom s mit seinen t Komponenten s1 , s3 , ... , s2t-1 anliegt.
-
Die interne Teilschaltung
602 stellt einen Lokatorpolynomwert L
t (α
i
j ) bereit und gibt an ihrem m-dimensionalen Ausgang einen m-dimensionalen Wert
aus. Der Ausgang der internen Teilschaltung
602 ist mit einem m-dimensionalen Eingang eines NOR-Gatters
605 verbunden, das einen 1-Bit breiten Ausgang aufweist, der mit dem ersten Eingang einer Auswahleinheit
608 verbunden ist.
-
Die interne Teilschaltung
603 stellt einen Lokatorpolynomwert L
t-2(α
i
j ) bereit und gibt an ihrem m-dimensionalen Ausgang einen m-dimensionalen Wert
aus. Der Ausgang der internen Teilschaltung
603 ist mit einem m-dimensionalen Eingang eines NOR-Gatters
606 verbunden, das einen 1-Bit breiten Ausgang aufweist, der mit dem zweiten Eingang einer Auswahleinheit
608 verbunden ist.
-
Die interne Teilschaltung
604 stellt einen Lokatorpolynomwert
L1 (α
i
j ) bereit und gibt an ihrem m-dimensionalen Ausgang einen m-dimensionalen Wert
aus. Der Ausgang der internen Teilschaltung
604 ist mit einem m-dimensionalen Eingang eines NOR-Gatters
607 verbunden, das einen 1-Bit breiten Ausgang aufweist, der mit dem (t + 1) /2-ten Eingang einer Auswahleinheit
608 verbunden ist.
-
Ist das Bit v'j fehlerhaft, gilt:
- - Liegt ein t-Bitfehler oder ein (t - 1)-Bitfehler vor, wird an den m ersten Ausgängen der Teilschaltung STj , die hier den Ausgängen der internen Teilschaltung 602 entsprechen, anhand derer die Lokatorpolynomwerte Lt(αij) bereitgestellt werden, der Lokatorpolynomwert
ausgegeben.
- - Liegt ein (t - 2)-Bitfehler oder ein (t - 3)-Bitfehler vor, wird an den m zweiten Ausgängen der Teilschaltung STj , die hier den Ausgängen der internen Teilschaltung 603 entsprechen, anhand derer die Lokatorpolynomwerte Lt-2 (αi
j ) bereitgestellt werden, der Lokatorpolynomwert
ausgegeben.
- - Diese Ausführungen können für Bitfehler t - q und t - q - 1 mit q = 4, 6, 8, ... entsprechend solange fortgeführt werden bis schließlich die 1-Bitfehler erreicht sind (siehe nachfolgender Punkt).
- - Liegt ein ein 1-Bitfehler vor, wird an den m (t + 1)/2-ten Ausgängen der Teilschaltung STj , die hier den Ausgängen der internen Teilschaltung 604 entsprechen, anhand derer die Lokatorpolynomwerte L1 (αi
j ) bereitgestellt werden, der Lokatorpolynomwert
ausgegeben.
-
Ist das Bit v'j nicht fehlerhaft, gilt:
- - Liegt ein t-Bitfehler oder ein (t - 1)-Bitfehler vor, wird an den m ersten Ausgängen der Teilschaltung STj , die hier den Ausgängen der internen Teilschaltung 602 entsprechen, anhand derer die Lokatorpolynomwerte Lt (αi
j ) bestimmt werden, der Lokatorpolynomwert
ausgegeben.
- - Liegt ein (t - 2)-Bitfehler oder ein (t - 3)-Bitfehler vor, wird an den m zweiten Ausgängen der Teilschaltung STj , die hier den Ausgängen der internen Teilschaltung 603 entsprechen, anhand derer die Lokatorpolynomwerte Lt-2 (αi
j ) bestimmt werden, der Lokatorpolynomwert
ausgegeben.
- - Diese Ausführungen können für Bitfehler t - q und t - q - 1 mit q = 4, 6, 8, ... entsprechend solange fortgeführt werden bis schließlich die 1-Bitfehler erreicht sind (siehe nachfolgender Punkt).
- - Liegt ein 1-Bitfehler vor, dann wird an den m (t + 1)/2-ten Ausgängen der Teilschaltung STj , die hier den Ausgängen der internen Teilschaltung 604 entsprechen, anhand derer die Lokatorpolynomwerte L1 (αi
j ) bestimmt werden, der Lokatorpolynomwert
ausgegeben.
-
In Abhängigkeit von einer Anzahl der aufgetretenen Fehler bestimmt ein Wert der Komponente err des Fehlersignals, das von einer Fehlererkennung 609 der Auswahleinheit 608 bereitgestellt wird, welcher der Eingänge der Auswahleinheit 608 mit ihrem Ausgang verbunden ist. Der Ausgang der Auswahleinheit 608 ist mit dem ersten Eingang eines UND-Gatters 610 verbunden. An dem zweiten Eingang des UND-Gatters 610 liegt die Komponente E des Fehlersignals an, die ebenfalls von der Fehlererkennung 609 bereitgestellt wird. Der Ausgang des UND-Gatters 610 stellt den Korrekturwert Δvj für das eventuell fehlerhafte Bit v'j bereit.
-
Liegt ein t-Bitfehler oder ein (t - 1)-Bitfehler vor, verbindet die Auswahleinheit 608 ihren ersten Eingang mit ihrem Ausgang und der an dem Ausgang der internen Teilschaltung 602 bereitgestellte Wert zj = zj [t, t - 1] bestimmt, ob Δvj = 1 oder Δvj = 0 ist:
- - Bei zj [t, t - 1] = {0}m ist Δvj = 1.
- - Bei zj [t, t - 1] ≠ {0}m ist Δvj = 0.
-
Liegt ein (t - 2)-Bitfehler oder ein (t - 3)-Bitfehler vor, verbindet die Auswahleinheit 608 ihren zweiten Eingang mit ihrem Ausgang und der an dem Ausgang der internen Teilschaltung 603 bereitgestellte Wert zj = zj [t - 2, t - 3] bestimmt, ob Δvj = 1 oder Δvj = 0 ist:
- - Bei zj [t - 2, t - 3] = {0}m ist Δvj = 1.
- - Bei zj [t - 2, t - 3] ≠ {0}m ist Δvj = 0.
-
Entsprechend kann diese Betrachtung für nachfolgende Paare von Bitfehlern
bis zu dem nachfolgend erläuterten 1-Bitfehler fortgesetzt werden.
-
Liegt schließlich ein 1-Bitfehler vor, verbindet die Auswahleinheit 608 ihren (t + 1)/2-ten Eingang mit ihrem Ausgang und der an dem Ausgang der internen Teilschaltung 604 bereitgestellte Wert zj = zj[1] bestimmt, ob Δvj = 1 oder Δvj = 0 ist:
- - Bei zj[1] = {0}m ist Δvj = 1.
- - Bei zj[1] ≠ {0}m ist Δvj = 0.
-
Liegt kein Fehler vor, ist der Wert der Komponente E des Fehlersignals gleich Null (E = 0) und es gilt: Δvj = 0.
-
7 zeigt eine weitere beispielhafte Schaltungsanordnung zur Bestimmung eines Korrekturwerts Δvj, wenn die Korrektur mit einem t-Bitfehler korrigierenden BCH-Code erfolgt. Hierbei ist t beispielhaft eine ungerade Zahl.
-
7 zeigt eine Teilschaltung 701 (auch bezeichnet als Teilschaltung STj für die Bitposition j oder den Strang j) mit internen Teilschaltungen 702 bis 704. Die Teilschaltung 701 verfügt über einen t·m-Bit breiten Eingang, an dem das Fehlersyndrom s mit seinen t Komponenten s1 , s3 , ... , s2t-1 anliegt.
-
Die interne Teilschaltung
702 stellt einen Lokatorpolynomwert L
t (α
i
j ) bereit und gibt an ihrem m-dimensionalen Ausgang einen m-dimensionalen Wert
aus. Der Ausgang der internen Teilschaltung
702 ist mit einem m-dimensionalen Eingang eines NOR-Gatters
705 verbunden, das einen 1-Bit breiten Ausgang aufweist, der mit dem ersten Eingang einer Auswahleinheit
708 verbunden ist.
-
Die interne Teilschaltung
703 stellt einen Lokatorpolynomwert L
t-1(α
i
j ) bereit und gibt an ihrem m-dimensionalen Ausgang einen m-dimensionalen Wert
aus. Der Ausgang der internen Teilschaltung
703 ist mit einem m-dimensionalen Eingang eines NOR-Gatters
706 verbunden, das einen 1-Bit breiten Ausgang aufweist, der mit dem zweiten Eingang einer Auswahleinheit
708 verbunden ist.
-
Die interne Teilschaltung
704 stellt einen Lokatorpolynomwert
L2 (α
i
j ) bereit und gibt an ihrem m-dimensionalen Ausgang einen m-dimensionalen Wert
aus. Der Ausgang der internen Teilschaltung
704 ist mit einem m-dimensionalen Eingang eines NOR-Gatters
707 verbunden, das einen 1-Bit breiten Ausgang aufweist, der mit dem (t + 1)/2-ten Eingang einer Auswahleinheit
708 verbunden ist.
-
In Abhängigkeit von einer Anzahl der aufgetretenen Fehler bestimmt ein Wert der Komponente err des Fehlersignals, das von einer Fehlererkennung 709 der Auswahleinheit 708 bereitgestellt wird, welcher der Eingänge der Auswahleinheit 708 mit ihrem Ausgang verbunden ist. Der Ausgang der Auswahleinheit 708 ist mit dem ersten Eingang eines UND-Gatters 710 verbunden. An dem zweiten Eingang des UND-Gatters 710 liegt die Komponente E des Fehlersignals, die ebenfalls von der Fehlererkennung 709 bereitgestellt wird. Der Ausgang des UND-Gatters 710 stellt den Korrekturwert Δvj für das eventuell fehlerhafte Bit v'j bereit.
-
Liegt ein t-Bitfehler vor, verbindet die Auswahleinheit 708 ihren ersten Eingang mit ihrem Ausgang und der an dem Ausgang der internen Teilschaltung 702 bereitgestellte Wert zj = zj[t] bestimmt, ob Δvj = 1 oder Δvj = 0 ist:
- - Bei zj[t] = {0}m ist Δvj = 1.
- - Bei zj[t] ≠ {0}m ist Δvj = 0.
-
Liegt ein (t - 1)-Bitfehler oder ein (t - 2)-Bitfehler vor, verbindet die Auswahleinheit 708 ihren zweiten Eingang mit ihrem Ausgang und der an dem Ausgang der internen Teilschaltung 703 bereitgestellte Wert zj = zj [t - 1, t - 2] bestimmt, ob Δvj = 1 oder Δvj = 0 ist:
- - Bei zj [t - 1, t - 2] = {0}m ist Δvj = 1.
- - Bei zj [t - 1, t - 2] ≠ {0}m ist Δvj = 0.
-
Entsprechend kann diese Betrachtung für nachfolgende Paare von Bitfehlern
bis zu dem nachfolgend erläuterten Paar des 2-Bitfehlers und 1-Bitfehlers fortgesetzt werden.
-
Liegt schließlich ein 2-Bitfehler oder ein 1-Bitfehler vor, verbindet die Auswahleinheit 608 ihren (t + 1)/2-ten Eingang mit ihrem Ausgang und der an dem Ausgang der internen Teilschaltung 704 bereitgestellte Wert zj = zj [2, 1] bestimmt, ob Δvj = 1 oder Δvj = 0 ist:
- - Bei zj [2, 1] = {0}m ist Δvj = 1.
- - Bei zj [2, 1] ≠ {0}m ist Δvj = 0.
-
Liegt kein Fehler vor, ist der Wert der Komponente E des Fehlersignals gleich Null (E = 0) und es gilt: Δvj = 0.
-
Während die von den internen Teilschaltungen für die Lokatorpolynomwerte
ausgegebenen Werte für r-Bitfehler und (r - 1)-Bitfehler bestimmen, ob Δv
j = 1 oder Δv
j = 0 ist, bestimmt beispielhaft der von der internen Teilschaltung für den Lokatorpolynomwert L
t(α
i
j ) ausgegebene Wert nur im Falle eines t-Bitfehlers, ob Δv
j = 1 oder Δv
j = 0 ist.
-
8a zeigt einen Syndromgenerator
801, der einen p-Bit breiten Eingang
802 und einen n-Bit breiten Eingang
803 aufweist. An dem Eingang
802 liegt eine eventuell fehlerhafte Leseadresse a' (Adressbits) und an dem Eingang
803 liegen eventuell fehlerhafte Daten- und Prüfbits
Weiterhin hat der Syndromgenerator
801 einen Ausgang
804, an dem das Fehlersyndrom s mit seinen t Komponenten
s1 ,
s3 , ..., ,
s2t-1 bereitgestellt wird.
-
Hierbei bilden die Adressbits, die Datenbits und die Prüfbits im fehlerfreien Fall ein Codewort des t-Bitfehler korrigierenden Codes.
-
8b zeigt einen Syndromgenerator 811, der einen g-Bit breiten Eingang 812 und einen n-Bit breiten Eingang 813 aufweist.
-
Bits einer eventuell fehlerhafte Leseadresse a' (Adressbits) werden von einer Einheit
815 in aus Adressbits abgeleitete Bits
umgewandelt, wobei die Einheit
815 eine Beziehung A' = f(a') bereitstellt.
-
An dem Eingang
813 liegen eventuell fehlerhafte Daten- und Prüfbits
Weiterhin hat der Syndromgenerator
811 einen Ausgang
814, an dem das Fehlersyndrom s mit seinen t Komponenten
s1 ,
s3 , ... ,
s2t-1 bereitgestellt wird.
-
Dabei bilden die aus den Adressenbits a' abgeleiteten Bits A' und die Daten- und Prüfbits im fehlerfreien Fall ein Codewort des betrachteten t-Bitfehler korrigierenden Codes.
-
Die von der Einheit
815 bereitgestellte Funktion f bildet die p Bits
der p-Bit breiten eventuell fehlerhaften Leseadresse in g aus der Leseadresse abgeleitete Bits
ab, wobei p die Wortbreite der Leseadresse ist und g ≥ 1 gilt.
-
Ist beispielsweise g = 1, dann ist es möglich, dass aus den p Bits der Leseadresse die Parität dieser Bits als abgeleitetes Bit bestimmt ist, so dass gilt
-
Nachfolgend werden beispielhaft Schaltungsteile der hier vorgestellten Lösung erläutert. In dem Beispiel wird m = 5 gewählt, so dass das zugrundeliegende Galoisfeld GF(2m) = GF(25) = GF(32) ist.
-
Elemente des Galoisfelds GF(
32) sind in ihren verschiedenen Darstellungsformen in
10 dargestellt. Das Modularpolynom des Galoisfelds GF(
32) ist das Polynom
-
Die 32 Elemente des Galoisfelds sind in der ersten Spalte der in 10 gezeigten Tabelle für i = 0, ... , 30 in ihrer Potenzdarstellung αi enthalten. Die Potenzdarstellung kann auch als Exponentendarstellung oder als Exponentialdarstellung bezeichnet werden.
-
Das Element 0 in der ersten Zeile der ersten Spalte hat keine Potenzdarstellung. α ist hier ein primitives Element des Galoisfelds. In der zweiten Spalte der Tabelle sind die 32 Elemente des Galoisfelds in ihrer Polynomdarstellung für das Modularpolynom m(x) = 1 + x2 + x5 angegeben und in der dritten Spalte ist die Tupel- oder Vektordarstellung dargestellt. Die fünf Komponenten der Vektordarstellung entsprechen den fünf Koeffizienten der Potenzen x0, x1, x2, x3, x4 der Polynomdarstellung. So entspricht beispielsweise dem Polynom x2 + x4 in der 9-ten Zeile der Tabelle die Vektordarstellung 00101.
-
Die entsprechende Polynomdarstellung ergibt sich aus der Potenzdarstellung α
j, indem man
bestimmt.
-
So ist die Polynomdarstellung von α
5 gleich 1 + x
2, da
gilt. Entsprechend ist die Polynomdarstellung
- - von α6 gleich x + x3,
- - von α7 gleich x2 + x4 und
- - von α8 gleich (x3 + x5) modulo (1 + x2 + x5) = 1 + x2 + x3
wie das in der in 10 gezeigten Tabelle angegeben ist.
-
Die Multiplikation zweier Elemente des Galoisfelds kann in der Exponentendarstellung oder in der Polynomdarstellung vorgenommen werden.
-
Sind zwei Elemente des Galoisfelds GF(2
5) in der Exponentendarstellung α
i und α
j gegeben, ist ihr Produkt
-
Liegen die zu multiplizierenden Elemente des Galoisfelds in ihrer Vektordarstellung oder in ihrer Polynomdarstellung vor, kann ihre Multiplikation mit einem Galoisfeld-Multiplizierer vorgenommen werden, wobei ein Galoisfeld-Multiplizierer auch als Multiplizierer bezeichnet wird.
-
Nachfolgend wird die Multiplikation zweier Elemente in ihrer Polynomdarstellung erläutert.
-
Um zwei Elemente miteinander zu multiplizieren und sind die Elemente des Galoisfelds GF(2
m) = GF(2
5) in ihrer Polynomdarstellung gegeben, dann sind die Polynome direkt 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 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
a0 ,
a1 ,
a2 ,
a3 ,
a4 und an den zweiten fünf Eingängen liegen die binären Werte
b0 ,
b1 ,
b2 ,
b3 ,
b4 an, während an den fünf binären Ausgängen die Werte
c0 ,
c1 ,
c2 ,
c3 ,
c4 mit
ausgegeben werden. Hierbei bezeichnet das Symbol „+“ die Addition modulo 2 (XOR-Operation).
-
Die Implementierung der Gleichungen (44) bis (48), kann mittels eines Galoisfeld-Multiplizierers erfolgen. Beispielsweise kann im Rahmen der Implementierung auch ein Synthesetool eingesetzt werden.
-
Wird ein Element des Galoisfelds quadriert, dann ist es mit sich selbst zu multiplizieren. Ist in der Polynomdarstellung ein Element als Polynom
gegeben, dann gilt
-
Das Quadrieren eines Elements 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. Den fünf binären Eingängen werden die binären Werte
a0 ,
a1 ,
a2 ,
a3 ,
a4 zugeführt und an den fünf binären Ausgängen werden die binären Werte
d0 ,
d1 ,
d2 ,
d3 ,
d4 bereitgestellt. Hier gilt
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 (49) bis (53) 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
a0 ,
a1 ,
a2 ,
a3 ,
a4 zugeführt und an den fünf binären Ausgängen werden die binären Werte
f0 ,
f1 ,
f2 ,
f3 ,
f4 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 (54) bis (58) implementiert werden.
-
Alternativ kann ein Dritte-Potent-Bildner aus einem Quadrierer und einen nachgeschalteten Galoisfeld-Multiplizierer realisiert werden. Auch höhere Potenzen des Elements a(x) in entsprechender Weise unter Verwendung geeigneter Bausteine realisiert werden.
-
Auch kann es Ausführungsbeispiele geben, bei denen ein Invertierer eingesetzt wird. 11 zeigt eine beispielhafte Tabelle mit einer Wertetabelle eines Invertierers für das Galoisfeld GF (25).
-
In der ersten Spalte der in 11 gezeigten Tabelle sind alle 25 - 1 Werte αi, mit i = 0, ... , 30 des Galoisfelds GF(25) in der Exponentendarstellung gezeigt. Das 0-Element des Galoisfelds ist nicht eingetragen. Es besitzt kein inverses Element.
-
Die zweite Spalte enthält das in der ersten Spalte dargestellte Element in seiner Tupeldarstellung als binäres 5-Tupel. Diese Tupeldarstellung ist auch in der in 10 gezeigten Tabelle enthalten.
-
Die dritte Spalte enthält das inverse Element des in der ersten Spalte dargestellten Elements in seiner Exponentendarstellung und die vierte Spalte enthält das in der dritten Spalte dargestellt inverse Element in seiner Tupeldarstellung in Form eines binären 5-Tupels.
-
Multipliziert man das in der ersten Spalte dargestellte Element mit dem entsprechenden inversen Element der dritten Spalte, so ergibt sich α0 = 1. Für die Summe der Exponenten eines Elements und des zugehörigen inversen Elements gilt, dass sie modulo 31 gleich 0 ist. Entsprechend kann der Exponent des inversen Elements so bestimmt werden, dass die Summe aus dem Exponenten des Elements der ersten Spalten und des Elements der dritten Spalte der in 11 gezeigten Tabelle gleich 31 oder gemäß der ersten Zeile der Tabelle gleich 0 ist.
-
Beispielsweise gilt für die zehnte Zeile der in 11 gezeigten Tabelle: Dem Element α9 ist das inverse Element α22 zugeordnet; für die Exponenten beider Elemente gilt: 22 + 9 = 31.
-
Beispielsweise gilt für die erste Zeile der in 11 gezeigten Tabelle: Dem Element α0 ist das inverse Element α0 zugeordnet; für die Exponenten beider Element gilt: 0 + 0 = 0.
-
Ist der Eingabewert des Invertierers ebenso wie der Ausgabewert als 5-Tupel in der jeweiligen Tupeldarstellung angegeben, so ergibt sich eine Wertetabelle für die binäre Realisierung des Invertierers, indem die 5-Tupel der zweiten Spalte die entsprechenden 5-Tupel der vierten Spalte zugeordnet werden. Dabei sind die 5-Tupel der zweiten Spalte die Eingabewerte und die 5-Tupel der vierten Spalte die Ausgabewerte des Invertierers.
-
So ist beispielsweise dem Eingabetupel 01011 in der 10-ten Zeile der in 11 gezeigten Tabelle das Ausgabetupel 10101 zugeordnet.
-
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
10 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 (62) bis (66) dargestellten Beziehungen abgeleitet, sodass die Ausgabewerte durch XOR-Verknüpfungen aus den Eingabewerten bestimmt sind. Hierbei bezeichnet das Symbol „+“ die Addition modulo 2 (XOR-Operation). Entsprechend kann der Multiplizierer mittels XOR-Gatter realisiert werden.
-
9 zeigt eine beispielhafte Realisierung der Einheit
306 aus
3, die in Abhängigkeit von den an deren vier m-Bit breiten Eingängen anliegenden Teilsyndromen
s1 ,
s3 ,
s5 und
s7 den Koeffizienten
des Lokatorpolynoms 4-ten Grades L
4(x) mit
bestimmt und an deren m-Bit breiten Ausgang bereitstellt.
-
Die in 9 gezeigte Schaltungsanordnung weist Bausteine auf, die zum Addieren, Quadrieren, Multiplizieren und Invertieren von Elementen eines Galoisfelds GF(2m) verwendet werden. So umfasst die Einheit 306 (Galoisfeld-)Quadrierer 901 und 903 mit jeweils einem m-Bit bereiten Eingang und einem m-Bit breiten Ausgang, (Galoisfeld-)Multiplizierer 902, 904, 905, 909, 910, 911, 912 und 916 mit jeweils zwei m-Bit breiten Eingängen und einem m-Bit breiten Ausgang, (Galoisfeld-)Addierer (der z.B. aus m XOR-Gattern mit jeweils zwei Eingängen und einem Ausgang realisiert sein kann) 906, 907, 908, 913, 914 mit jeweils zwei m-Bit breiten Eingängen und einem m-Bit breiten Ausgang und einen (Galoisfeld-)Invertierer 915 mit einem m-Bit breiten Eingang und einem m-Bit breiten Ausgang.
-
Die Schaltungsanordnung verfügt über vier m-Bit breite Eingänge 931 bis 934, wobei an dem Eingang 931 das Teilsyndrom s1 , an dem Eingang 932 das Teilsyndrom s3 , an dem Eingang 933 das Teilsyndrom s5 und an dem Eingang 934 das Teilsyndrom s7 anliegen. Diese werden von dem (nicht in 9 gezeigten) Syndromgenerator 101 bereitgestellt.
-
Der Eingang
931 stellt den Wert des Teilsyndromes
s1 sowohl dem Eingang des Quadrierers
901, dem ersten Eingang des Multiplizierers
912, dem ersten Eingang des Multiplizierers
902, dem ersten Eingang des Multiplizierers
904 und dem ersten Eingang des Multiplizierers
909 bereit. Der Ausgang des Quadrierers
901 stellt einen Wert
bereit und ist mit dem Eingang des Quadrierers
903 und mit dem zweiten Eingang des Multiplizierers
902 verbunden.
-
Der Ausgang des Multiplizierers
902 stellt einen Wert
dem ersten Eingang des Multiplizierers
905 und dem ersten Eingang des XOR-Gatters
907 bereit.
-
Der Ausgang des Quadrierers
903 ist mit dem zweiten Eingang des Multiplizierers
905 und mit dem zweiten Eingang des Multiplizierers
904 verbunden und stellt diesen den Wert
bereit.
-
Der Ausgang des Multiplizierers
904 ist mit dem ersten Eingang des XOR-Gatters
906 verbunden und führt diesem den Wert
zu. Der zweite Eingang des XOR-Gatters
906 ist mit dem Eingang
933 verbunden, an dem das Teilsyndrom
s5 anliegt.
-
Der Ausgang des Multiplizierers
905 leitet den Wert
an den ersten Eingang des XOR-Gatters
908. Der zweite Eingang des XOR-Gatters
908 ist mit dem Eingang
934 verbunden, an dem das Teilsyndrom
s7 anliegt.
-
Der Ausgang des XOR-Gatters
908 führt den Wert
an den zweiten Eingang des Multiplizierers
912. Der Ausgang des Multiplizierers
912 leitet den
an den ersten Eingang des XOR-Gatters
914.
-
Der Eingang 932 stellt das Teilsyndrom s3 bereit und ist mit dem zweiten Eingang des XOR-Gatters 907, dem ersten Eingang des Multiplizierers 911 und dem ersten Eingang des Multiplizierers 910 verbunden.
-
Der Ausgang des XOR-Gatters
906 trägt den Wert
und ist mit dem zweiten Eingang des Multiplizierers
910 und mit dem zweiten Eingang des Multiplizierers
909 verbunden.
-
Der Ausgang des Multiplizierers
910 ist mit dem zweiten Eingang des XOR-Gatters
914 verbunden. Der Ausgang des XOR-Gatters
914 trägt das Signal
+ und ist mit dem ersten Eingang des Multiplizierers
916 verbunden.
-
Der Ausgang des XOR-Gatters
907 leitet den Wert
an den zweiten Eingang des Multiplizierers
911. Der Ausgang des Multiplizierers
911 ist mit dem ersten Eingang des XOR-Gatters
913 verbunden.
-
Der Ausgang des Multiplizierers
909 leitet den Wert
an den zweiten Eingang des XOR-Gatters
913. Der Ausgang des XOR-Gatters
913 führt den Wert
und ist mit dem Eingang des Invertierers
915 verbunden.
-
Der Invertierer ist dabei für ein Galoisfeld GF(2
m) mit dem primitiven Element α so konfiguriert, dass er für ein Element α
i mit i = {0,1, ... ,2
m-2}, das an seinem Eingang anliegt, das inverse Element α
-i an seinem Ausgang bereitstellt, so dass gilt:
-
Der Ausgang des Invertierers, der den Wert
trägt, ist mit dem zweiten Eingang des Multiplizierers
916 verbunden. An dem Ausgang des Multiplizierers
916 wird der Koeffizient
ausgegeben.