-
Ein Fehlercode ist dabei entweder ein Fehler-korrigierender Code, ein Fehler-erkennender Code oder eine Kombination aus einem Fehler-erkennenden sowie Fehler-korrigierenden Code.
-
Ein Beispiel für einen Fehlercode ist der Bose-Chaudhuri-Hocquenghem-Code (BCH-Code, siehe z.B. https://de.wikipedia.org/wiki/BCH-Code).
-
Aus
EP 1 037 400 A2 und aus JP H
10 229342 A ist jeweils ein Verfahren bekannt zur Erkennung eines Multibytefehlers in einem Codewort eines verkürzten Fehlercodes, bei dem der verkürzte Fehlercode ein τ-Bytefehler-korrigierender Fehlercode ist.
-
Aus
EP 0 413 856 A1 ist ein Verfahren bekannt zur Erkennung eines Multibytefehlers in einem Codewort eines verkürzten Fehlercodes, bei dem ein nicht-korrigierenbarer Multibytefehler erkannt wird, sofern mindestens ein Fehlerpositionssignal auf ein nicht-existierendes Byte zeigt.
-
Bei einem BCH-Code ist beispielsweise bekannt, zu korrigierende Bitfehlerpositionen als Nullstellen eines Lokatorpolynoms des BCH-Codes zu bestimmen. So ist beispielsweise in [4] eine spezielle Vorgehensweise für eine 2-Bitfehlerkorrektur in einem Galoisfeld GF(2m) unter Verwendung eines BCH-Codes beschrieben. Ausgehend von einem entsprechenden Lokatorpolynom zweiten Grades wird dieses Polynom so transformiert, dass die Nullstellen des transformierten Polynoms durch einen Parameter der Wortbreite m bestimmbar sind. Dieser Parameter wird aus den Syndromkomponenten bestimmt. Die Nullstellen des transformierten Polynoms sind nach ihrer Bestimmung in die Nullstellen des ursprünglichen Lokatorpolynoms zu transformieren. Unter Verwendung eines Decoders können aus den Nullstellen des ursprünglichen Lokatorpolynoms die zu korrigierenden Bitpositionen berechnet werden.
-
Auch ist in [4] die Fehlerkorrektur von 3-Bitfehlern und 4-Bitfehlern unter Verwendung von BCH-Codes und die Korrektur von Bytefehlern unter Verwendung eines entsprechenden Reed-Solomon-Codes beschrieben.
-
Eine Aufgabe besteht darin, die bekannten Lösungen zu verbessern und insbesondere einen Ansatz zu schaffen, um effizient nicht korrigierbarer Multibytefehler zu erkennen.
-
Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind insbesondere den abhängigen Ansprüchen entnehmbar.
-
Zur Lösung der Aufgabe wird ein Verfahren vorgeschlagen zur Erkennung eines Multibytefehlers in einem Codewort eines verkürzten Fehlercodes,
- - bei dem der verkürzte Fehlercode ein τ Byte-korrigierender Fehlercode ist,
- - bei dem Bytes des Codeworts des verkürzten Fehlercodes einen ersten Bereich bestimmen,
- - bei dem der nicht korrigierbare Multibytefehler erkannt wird, sofern mindestens eine der folgenden Bedingungen erfüllt ist:
- (a) mindestens ein Fehlerpositionssignal liegt nicht in dem ersten Bereich,
- (b) mindestens ein Fehlerpositionssignal zeigt mindestens einen Fehler aber weniger als τ Fehler in dem ersten Bereich an und es liegt kein 1-Bytefehler bis (τ - 1)-Bytefehler vor.
-
Hierbei sei angemerkt, dass jedes Byte eine Anzahl von b Bit(s) umfassen kann mit b ≥ 1. Der Wert für τ kann eine ganze Zahl größer als 1 sein.
-
Werden τ Bytefehler erkannt und liegen τ Fehlerpositionssignale in dem ersten Bereich, so kann ein τ-Bytefehler korrigiert werden.
-
Wird kein Fehlerpositionssignal bestimmt, liegt kein erkennbarer Fehler vor.
-
In dem Fall (b) kann das mindestens eine Fehlerpositionssignal teilweise oder vollständig in dem ersten Bereich oder nicht in dem ersten Bereich liegen.
-
Das Fehlerpositionssignal kann, sofern es nicht in dem ersten Bereich liegt, in einem definierten oder einem nicht definierten Bereich liegen. Ein nicht definierter Bereich kann dadurch bestimmt sein, dass die Bestimmung des Fehlerpositionssignal keine oder keine gültige Lösung liefert.
-
Es ist eine Weiterbildung, dass die Bedingung (a) ferner umfasst: das mindestens eine Fehlerpositionssignal, das nicht in dem ersten Bereich liegt, liegt in einem zweiten Bereich, der bestimmt ist durch Bytes eines nicht verkürzten Fehlercodes, die nicht auch Bytes des verkürzten Fehlercodes sind.
-
Es ist eine Weiterbildung, dass eine Anzahl des mindestens einen Fehlerpositionssignals mittels Zählens bestimmt wird.
-
Es ist eine Weiterbildung, dass mittels des Fehlerpositionssignals ein Byte eines Codeworts referenziert wird.
-
Es ist eine Weiterbildung, dass das mindestens eine Fehlerpositionssignal mittels mindestens eines Lokatorpolynoms des Fehlercodes bestimmt wird.
-
Es ist eine Weiterbildung, dass der verkürzte Fehlercode ein BCH-Code der Länge n über einem Galoisfeld GF(2m) mit n < 2m - 1 ist und m ≥ 3 gilt.
-
Der verkürzte Fehlercode ist durch Kürzen aus einem BCH-Code über GF(2m) der Länge 2m - 1 bestimmbar. Der verkürzte Fehlercode ist beispielsweise ein τ Bytefehler-korrigierender BCH-Code mit τ ≥ 2. Vorzugsweise ist der verkürzte Fehlercode in der Lage, mehr als τ Bytefehler zu erkennen.
-
Es ist eine Weiterbildung, dass der verkürzte Fehlercode ein Reed-Solomon-Code über einem Galoisfeld GF(2m) ist.
-
Auch wird eine Vorrichtung vorgeschlagen zur Erkennung eines Multibytefehlers in einem Codewort eines verkürzten Fehlercodes,
- - wobei der verkürzte Fehlercode ein τ Byte-korrigierender Fehlercode ist,
- - wobei Bytes des Codeworts des verkürzten Fehlercodes einen ersten Bereich bestimmen,
- - wobei die Vorrichtung eingerichtet ist zur Erkennung des nicht korrigierbaren Multibytefehlers, sofern mindestens eine der folgenden Bedingungen erfüllt ist:
- (a) mindestens ein Fehlerpositionssignal liegt nicht in dem ersten Bereich,
- (b) mindestens ein Fehlerpositionssignal zeigt mindestens einen Fehler aber weniger als τ Fehler in dem ersten Bereich an und es liegt kein 1-Bytefehler bis (τ - 1)-Bytefehler vor.
-
Es ist eine Weiterbildung, dass die Vorrichtung Teil eines Speichers oder eines Speichersystems ist oder separat zu dem Speicher oder dem Speichersystem ausgeführt ist.
-
Die Vorrichtung kann Teil des Speichers oder separat zu diesem ausgeführt sein. Insbesondere kann die Vorrichtung eine Verarbeitungseinheit umfassen, die die hier genannten Schritte durchführt. Die Verarbeitungseinheit kann mindestens eine der folgenden Komponenten umfassen: einen Prozessor, einen Mikrocontroller, einen Schaltkreis, einen ASIC, ein FPGA, eine Logikeinheit. Die Verarbeitungseinheit kann in Form mindestens einer physikalischen Einheit realisiert sein. Insbesondere kann die Verarbeitungseinheit auf mehrere physikalische Einheiten verteilt sein.
-
Die vorstehenden Erläuterungen betreffend die Verfahren gelten für die Vorrichtung entsprechend. Die hier beschriebenen Schritte des Verfahrens können mittels der Vorrichtung ausgeführt werden.
-
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.
- 1 zeigt ein Blockdiagramm zur Veranschaulichung von Schritten zum Bestimmen von Fehlerpositionssignalen;
- 2 zeigt eine spezielle Ausgestaltung von 1 zur Erkennung eines nicht korrigierbaren Multibytefehlers;
- 3 zeigt eine alternative Ausgestaltung für die Einheit zur Bestimmung der Fehlerpositionssignale beispielhaft für einen binären BCH-Code mit b = 1 oder einen Reed-Solomon-Code mit b > 1;
- 4 zeigt eine H2-Matrix des nicht verkürzten Fehlercodes C2;
- 5 zeigt die H1-Matrix des verkürzten Fehlercodes C1;
- 6 zeigt eine Tabelle mit durch das Modularpolynom p(x) = 1+x2 +x5 erzeugten Elemente des Galoisfeldes GF(25) in Potenzdarstellung, Polynomdarstellung und Tupeldarstellung;
- 7 zeigt ein beispielhaftes Ablaufdiagramm zur Bestimmung, ob ein nicht korrigierbarer Multibytefehler vorliegt.
-
Fehler in einzelnen oder in mehreren Bits können durch Fehlercodes erkannt und/oder korrigiert werden. Dabei können Bits in sogenannte Bytes zusammengefasst bzw. gruppiert werden. Ein Byte umfasst somit eine Anzahl von b Bits, wobei b ≥ 1 gilt.
-
Ein Fehlercode ist ein Code, der mindestens einen Fehler erkennen und/oder korrigieren kann. Somit ist ein Fehlercode ein Fehler-erkennender und/oder Fehler-korrigierender Code. Beispielsweise kann der Fehlercode
- - ein τ Bytefehler-korrigierender Code,
- - ein τ Bytefehler-korrigierender und (τ + 1) Bytefehler-erkennender Code oder
- - ein τ Bytefehler-korrigierender und ein mehr als τ Bytefehler-erkennender Code
sein. Vorteilhaft ist hierbei τ ≥ 1. Wie einleitend ausgeführt, umfasst das Byte mindestens ein Bit. Umfasst das Byte genau ein Bit (b = 1), wird der Fehlercode auch als τ Bitfehler-korrigierender und (τ+ 1) Bitfehler-erkennender Code bezeichnet.
-
Bei der Übertragung von Daten oder bei der Speicherung von Daten können Bitfehler auftreten, die erkannt und/oder korrigiert werden sollen. Beispielsweise können Nutzdaten um Prüfdaten (auch bezeichnet als Prüfbits bzw. Prüfbytes) ergänzt werden. Vorteilhaft ergibt die Kombination aus Nutzdaten und Prüfdaten im fehlerfreien Fall ein Codewort des Fehlercodes. Der Fehlercode umfasst in der Regel eine Vielzahl von Codewörtern, also von gültigen Belegungen, die aus Sicht des Fehlercodes keinen Fehler anzeigen. Der Vollständigkeit halber sei erwähnt, dass auch mehrfache Fehler ein Codewort in ein anderes Codewort überführen können. In so einem Fall liegt kein erkennbarer Fehler vor, obwohl tatsächlich ein mehrfacher Fehler auftrat. Mit anderen Worten, das Codewort ist immer eine gültige Belegung von Bits, so dass der Fehlercode keinen Fehler erkennt oder kein Fehler vorlag.
-
Sofern nachfolgende Erläuterungen auf Bytes abstellen, gilt, dass jedes der Bytes eine Anzahl von b ≥ 1 Bits aufweist. Entsprechend gilt für den Fall b = 1, dass jedes der Bytes nur genau ein Bit umfasst. Insofern könnten dann z.B. die Begriffe „Bytes“ oder „Bytefolge“ durch „Bits“ oder „Bitfolge“ ersetzt werden.
-
Im Rahmen der Fehlerkorrektur ist es eine generelle Motivation, eine vorgegebene Anzahl von Fehlern in den Bytes einer Bytefolge zu erkennen und/oder zu korrigieren. Die zu korrigierenden Bytes können dabei alle Bytes oder eine Teilmenge der Bytes sein. Es ist eine Option, dass Prüfbytes, sofern diese vorhanden sind, nicht korrigiert werden. Weiterhin ist es eine Option, Teilmengen der Bytefolge unterschiedlich zu behandeln: So könnten Fehler in einer ersten Teilmenge der Bytefolge korrigiert und in einer zweiten Teilmenge der Bytefolge nur erkannt werden.
-
Um ein fehlerhaftes Byte zu korrigieren, ist es erforderlich, die Position des fehlerhaften Bytes zu erkennen und einen Korrekturwert für dieses fehlerhafte Byte zu bestimmen.
-
Wird ein τ Bytefehler-korrigierender Fehlercode betrachtet, gilt für eine Anzahl von 1 bis τ fehlerhafte Bytes:
-
Die Position eines fehlerhaften Bytes wird durch ein Fehlerpositionssignal bestimmt, das einen ersten Wert annimmt, wenn das entsprechende Byte fehlerhaft ist und einen zweiten Wert annimmt, wenn das entsprechende Byte nicht fehlerhaft ist. Der erste Wert soll beispielhaft 1 und der zweite Wert soll beispielhaft 0 sein. Der Wert, um den ein fehlerhaftes Byte korrigiert werden soll, kann durch einen b-stelligen Korrekturwert bestimmt sein. Wird der Korrekturwert mit dem fehlerhaften Byte komponentenweise modulo 2 addiert, folgt daraus der korrigierte Wert.
-
Für b = 1 weist ein b-Bit-Byte (also ein Byte mit einer Anzahl von b Bits) nur ein einzelnes Bit auf und ein Fehler verfälscht eine Bitfolge
in eine fehlerhafte Bitfolge
-
Dieser Fehler kann durch einen binären Fehlervektor
bestimmt sein. Somit gilt:
-
Hierbei bezeichnet „+“ die Addition modulo 2.
-
Ist e
i = 1 für i ∈ {0,...,n - 1}, dann ist
und es liegt ein Fehler an der Bitposition i vor, d.h. ein Fehlerpositionssignal an der Position i hat den Wert 1: bfp
i = 1.
-
Ist e
i = 0 für i ∈ {0,...,n - 1}, dann ist
und es liegt kein Fehler an der Bitposition i vor, d.h. das Fehlerpositionssignal an der Position i hat den Wert 0: bfp
i = 0.
-
In dem Fall b = 1 sind die Komponenten des Fehlervektors e gleich den Fehlerpositionssignalen
-
Anstelle der Gleichung (1) gilt somit für den fehlerhaften Wert y' auch:
wobei
einen Fehlerpositionssignalvektor bezeichnet.
-
Umfasst das Byte mehr als ein Bit (d.h. b > 1), dann wird ein i-tes Byte mit Yi (oder Xi) und eine Folge von Bytes mit Y bezeichnet.
-
Ein Fehler in dem i-ten Byte Y
i' der Bytefolge
kann durch ein binäres Fehlerpositionssignal bfp
i = 1 und einen Fehlerwert E
i beschrieben werden. Dabei ist der Fehlerwert E
i ein b-Bit-Byte.
-
Das Fehlerpositionssignal bfp
i ist gleich 1, wenn gilt:
-
Entsprechend ist das Fehlerpositionssignal bfp
i gleich 0, wenn gilt:
-
Für einen korrigierbaren Fehler ist die Anzahl der Einsen in dem Fehlerpositionssignalvektor bfp ist gleich der Anzahl der fehlerhaften Bytes in der Bytefolge
Die Bytefolge kann beispielsweise mittels des Fehlercodes korrigiert werden.
-
Für b > 1 besteht ein Fehlervektor E = E
0,...,E
n-1 aus einer Anzahl n von b-Bit-Bytes, so dass gilt:
-
In Gleichung (3) entspricht die Operation „+“ der komponentenweisen Addition modulo 2.
-
Es gilt somit:
- - Ist Ei ≠ 0 für i ∈ {0,..., n - 1}, dann ist bfpi = 1 und es liegt ein Fehler an der i-ten Byteposition vor.
- - Ist Ei = 0, dann ist bfpi = 0 und es liegt kein Fehler an der i-ten Byteposition vor.
-
Der hierin beschriebene Ansatz ermöglicht die Bestimmung eines nicht korrigierbaren Fehlers mit mehr als τ fehlerhaften Bytes anhand der Anzahl der Fehlerpositionssignale unter Verwendung eines lediglich τ Bytefehler-korrigierenden Fehlercodes.
-
Die Anzahl der Fehler, die binären Werte der Fehlerpositionssignale und, falls b > 1 ist, die b-Bit breiten Fehlerwerte werden für lineare Fehlercodes beispielsweise durch ein Fehlersyndrom des linearen Fehlercodes bestimmt.
-
In den hier beschriebenen Lösungen werden beispielhaft verkürzte Fehlercodes betrachtet. Ein verkürzter Fehlercode kann aus einem nicht verkürzten Fehlercode bestimmt werden, der eine größere Länge oder Codewörter mit einer größeren Länge als der verkürzte Fehlercode aufweist.
-
Beispielhaft können der verkürzte und der nicht verkürzte Fehlercode die gleiche Anzahl von Prüfbits aufweisen. Beispielsweise kann sowohl der verkürzte Fehlercode als auch der nicht verkürzte Fehlercode ein τ Bytefehler-korrigierender Fehlercode sein.
-
Der verkürzte Fehlercode kann aus dem nicht verkürzten Fehlercode hervorgehen, indem der nicht verkürzte Fehlercode um mindestens ein b-Bit-Byte verkürzt wird.
-
Gilt b = 1, dann entspricht jedes b-Bit-Byte genau einem Bit. Die Fehlerpositionssignale identifizieren in diesem Fall einzelne Bits, d.h. einzelne Positionen eines Codeworts des Fehlercodes, die möglicherweise fehlerhaft sind.
-
Wird ein τ Bytefehler-korrigierender Fehlercode verwendet, sind in dem Fall, dass τ Fehler in den zu korrigierenden b-Bit-Bytes vorhanden sind, τ Fehlerpositionssignale für die zu korrigierenden Bytes des Fehlercodes durch das resultierende Fehlersyndrom zu 1 bestimmt. Die übrigen Fehlerpositionssignale sind gleich 0.
-
Ein nicht korrigierbarer Multibytefehler mit mehr als τ fehlerhaften Bytes kann daran erkannt werden, dass weniger als τ Fehlerpositionssignale für die zu korrigierenden Bytes den Wert 1 annehmen und falls
- - kein 1-Bytefehler,
⋮
- - kein (τ - 1)-Bytefehler.
auftritt.
-
Wird eines der τ Fehlerpositionssignale, die den Wert 1 für eine Byteposition annehmen, bei der Fehlerkorrektur bestimmt, um die der nicht verkürzte Fehlercode bei der Bestimmung des verkürzten Fehlercodes gekürzt wurde, kann daran erkannt werden, dass weniger als τ Fehlerpositionssignale für die Bytes des verkürzten Fehlercodes zu 1 bestimmt sind.
-
Die zu korrigierenden Bytepositionen des verkürzten Fehlercodes werden als Wertebereich der Fehlerpositionssignale bezeichnet. Dann sind im Falle eines 1-Bytefehlers, 2-Bytefehlers bis τ-Bytefehlers in den Bytes des verkürzten Fehlercodes die Fehlerpositionssignale, die den Wert 1 annehmen, alle Elemente dieses Wertebereichs der Fehlerpositionssignale.
-
Wird hingegen ein Fehlerpositionssignal zu 1 bestimmt, das nicht ein Element des Wertebereichs der Fehlerpositionssignale ist, liegt ein nicht korrigierbarer Fehler vor.
-
Ist zusätzlich bestimmt, dass kein 1-Bytefehler, etc. bis (i-1)-Bytefehler der zu korrigierenden Bytes vorliegt, oder wird ein Fehlerpositionssignal mit dem Wert 1 bestimmt, das außerhalb des Wertebereichs der Fehlerpositionssignale liegt, können höchstens (τ - 1) Fehlerpositionssignale, die den Wert 1 annehmen, Elemente des Wertebereichs der Fehlerpositionssignale sein. Das Vorhandensein des Fehlersignals, das den Wert 1 annimmt und nicht Element des Wertebereichs der Fehlerpositionssignale ist, zeigt bereits an, dass ein nicht korrigierbarer Fehler vorliegt. In diesem Fall ist es nicht notwendig, die Anzahl der Fehlerpositionssignale mit dem Wert 1, die in dem Wertebereich der Fehlerpositionssignale, die den Wert 1 annehmen, zu bestimmen.
-
Beispiel
-
Beispielhaft diene als Fehlercode ein τ Byte-korrigierender Fehlercode. Dieser Fehlercode kann also maximal τ fehlerhafte Bytes korrigieren und damit können maximal τ Fehlerpositionssignale gleich 1 sein.
-
Dieser τ Byte-korrigierende Fehlercode ist beispielhaft ein verkürzter Fehlercode. Er ist durch Verkürzen von K Bytes
aus einem ebenfalls τ Byte-korrigierenden nicht verkürzten Fehlercode hervorgegangen.
-
Im Fall eines Fehlers in mehr als τ Bytes des verkürzten Fehlercodes kann ein Fehlersyndrom beispielsweise so bestimmt sein, dass es gleich einem Fehlersyndrom eines Bytefehlers des nicht verkürzten Fehlercodes ist, wobei der Fehler in einem gekürzten Byte auftritt. Es ergibt sich also ein Fehlerpositionssignal auf eine Position, die in dem verkürzten Fehlercode nicht existiert: Das Fehlerpositionssignal zeigt auf ein gekürztes Byte, das nicht Teil eines Codeworts des verkürzten Fehlercodes ist. Damit können höchstens (τ - 1) Fehlerpositionssignale (mit einem Wert 1) Bytes des verkürzten Fehlercodes referenzieren. Es sind somit weniger als τ Fehlerpositionssignale für die Bytes des verkürzten Fehlercodes übrig, die noch den Wert 1 annehmen können.
-
Ist bekannt, dass bei der Fehlerkorrektur τ Fehlerpositionssignale beispielsweise auf der Grundlage des Fehlersyndroms bestimmt sind, die den Wert 1 annehmen, wobei ein Fehlerpositionssignal mit dem Wert 1 für ein Byte bestimmt wird, dass ein Byte des unverkürzten Fehlercodes ist und kein Byte des verkürzten Fehlercodes ist, dann liegt ein nicht korrigierbarer Fehler vor. Dies kann beispielsweise daran erkannt werden, dass die Anzahl der Fehlerpositionssignale, die den Wert 1 annehmen, für die Bytes des verkürzten Fehlercodes kleiner als τ ist. Ebenso kann das daran erkannt werden, dass ein Fehlerpositionssignal für ein Byte des unverkürzten Fehlercodes bestimmt ist, das kein Byte der verkürzten Fehlercodes ist.
-
Ist bestimmt, dass kein 1-Byte-Fehler bis kein (τ- 1)-Bytefehler vorliegen und ist der Fehlercode ein τ Bytefehler-korrigierender Fehlercode, kann ein nicht korrigierbarer Fehler daran erkannt werden, dass weniger als τ Fehlerpositionssignale mit dem Wert 1 für die zu korrigierenden Bytes des Fehlercodes bestimmt sind.
-
Unter Verwendung der Anzahl der Fehlerpositionssignale für Bytes des verkürzten Fehlercodes, die bei einer Fehlerkorrektur den Wert 1 annehmen, kann somit ein nicht korrigierbarer Fehler erkannt werden.
-
So ist es möglich, unter Verwendung der Anzahl der Fehlerpositionssignale, die den Wert 1 aufweisen und damit einen Fehler des ihnen entsprechenden Bytes für die Bytes eines Codewortes des verkürzten Fehlercodes anzeigen, einen nicht korrigierbaren Fehler zu erkennen, ohne dass weitere Prüfbytes erforderlich sind.
-
Es ist nicht notwendig, die genaue Anzahl der Fehlerpositionssignale, die den Wert 1 annehmen, für die zu korrigierenden Bytes zu bestimmen. Es kann ausreichend sein, zu bestimmen, dass ihre Anzahl kleiner als τ oder ungleich τ ist, wenn der verkürzte Fehlercode beispielsweise ein τ Bytefehler-korrigierender Fehlercode ist und die Decodierung so erfolgt, dass maximal τ Fehlerpositionssignale bestimmbar sind.
-
Optional können die Bytes auch Adressbits oder Adressbytes einer Leseadresse und/oder einer Schreibadresse umfassen oder aus einer solchen abgeleitet sein.
-
Weiterhin ist es eine Option, dass zur Bestimmung, ob ein 1-Bitfehler, etc. vorliegt, eine Parität der Bytes berücksichtigt werden kann. Beispielsweise kann ein Paritätsbit vorgesehen sein, anhand dessen eine Filterung hinsichtlich bestimmter Multibytefehler erfolgt.
-
Fehlercodes
-
Nachfolgend werden beispielhaft lineare Codes betrachtet.
-
Zur Veranschaulichung wird zunächst der Fall b = 1 betrachtet, d.h. ein b-Bit-Byte entspricht einem einzelnen Bit.
-
Eine Bitfolge von k Bits
wird in ein Codewort
codiert mit n > k > 1. Weiterhin gilt
wobei G eine (k,n)-Matrix ist, die als Generatormatrix des betrachteten Fehlercodes bezeichnet wird. Für b = 1 sind die Elemente der Generatormatrix binär. Diese Elemente der Generatormatrix können auch als Elemente des Galoisfeldes GF(2) bezeichnet werden.
-
Die Generatormatrix wird in ihrer systematischen Form mit
bezeichnet, wobei
- - Ik die k-dimensionale Einheitsmatrix und
- - Pk,n-k eine (k,n- k)-Matrix (Paritätsmatrix)
bezeichnen. Aus der Generatormatrix in systematischer Form gemäß Gleichung (5) ist die H-Matrix in systematischer Form bestimmt. Dabei ist die transponierte Matrix von
-
Aus einer gegebenen G-Matrix können weitere G-Matrizen durch Linearkombination ihrer Zeilen abgeleitet werden. Ebenso können aus einer gegebenen H-Matrix durch Linearkombination ihrer Zeilen weitere H-Matrizen abgeleitet werden.
-
Die H-Matrix gemäß Gleichung (6) ist dabei, wie jede H-Matrix eines Codes, so bestimmt, dass für ein Codewort des zugehörigen Fehlercodes gilt
-
Hierbei bezeichnet 0| einen Spaltenvektor mit lauter Nullelementen.
-
Für ein fehlerhaftes Wort
gilt entsprechend
wobei
als Fehlersyndrom für die H
sys-Matrix bezeichnet werden kann.
-
Wird eine andere H-Matrix zum Beispiel aus H
sys durch Linearkombination ihrer Zeilen bestimmt, wird das entsprechende Fehlersyndrom mit
bezeichnet. Die minimale Anzahl der Prüfbits eines linearen Fehlercodes kann durch den Rang der H-Matrix des Fehlercodes bestimmt werden.
-
Wird die H-Matrix des Fehlercodes um linear abhängige Zeilen ergänzt, kann die Anzahl der Prüfbytes des Fehlercodes größer als der Rang der H-Matrix sein.
-
Das aus dem fehlerhaften Wort y' bestimmte Fehlersyndrom kann zur Fehlerkorrektur verwendet werden, wenn für die betrachtete Menge von Fehlervektoren jeder dieser Fehlervektoren zu einem unterschiedlichen Fehlersyndrom führt. Bei der Fehlerkorrektur werden die unterschiedlichen Bitpositionen bestimmt, die den Fehlersyndromen entsprechen. Jeder Fehlerposition entspricht ein Fehlerpositionssignal. Ist das Fehlerpositionssignal gleich 1, ist die referenzierte Fehlerposition fehlerhaft.
-
Ist b = 1, so wird über das Fehlerpositionssignal ein einzelnes Bit referenziert. Es ist also pro Fehlerpositionssignal ein Bit zu korrigieren, der Korrekturwert kann für das zu korrigierende Bit gleich 1 sein. In diesem Fall ist der Fehlerwert gleich dem Wert des Fehlerpositionssignals; es muss kein gesonderter Fehlerwert angegeben werden. Für b = 1 erfolgen Addition und Multiplikation binärer Werte jeweils modulo 2, d.h. in dem Körper Galoisfeld GF(2).
-
Für b ≥ 2 wird eine Bytefolge aus k b-Bit-Bytes
in ein Codewort
codiert.
-
Das Fehlerpositionssignal ist in diesem Fall ein Bytefehlerpositionssignal. Beispielsweise deutet ein Bytefehlerpositionssignal mit dem Wert 1 an, dass das referenzierte Byte (umfassend b Bits) fehlerhaft ist in mindestens einem seiner b Bits. Hat das Bytefehlerpositionssignal den Wert 0, ist das referenzierte Byte nicht fehlerhaft (oder es war kein Fehler erkennbar).
-
Für einen τ Bytefehler-korrigierenden Code gilt, sofern höchstens τ Bytefehler vorhanden sind: Ein Bytefehler des i-ten Bytes kann durch ein binäres Fehlerpositionssignal bfpi und einen Bytefehlerwert Ei beschrieben sein. Der Bytefehlerwert Ei umfasst dabei b Bits.
-
Gilt für einen Bytefehlerwert Ei ≠ 0, kann dem i-ten Byte das Fehlerpositionssignal bfpi = 1 zugeordnet werden. Ist Ei = 0, kann dem i-ten Byte das binäre Fehlerpositionssignal bfpi = 0 zugeordnet werden.
-
Das Fehlerpositionssignal beschreibt, ob
- - eine bestimmte Byteposition fehlerhaft ist und korrigiert wird (werden kann) oder
- - eine bestimmte Byteposition nicht fehlerhaft ist.
-
Dabei gibt das Fehlerpositionssignal keinen Korrekturwert für die ggf. fehlerhafte Byteposition an.
-
Wie ausgeführt können die Fehlerpositionssignale in dem Fehlerpositionssignalvektor bfp = bfp0, ... ,bfpn-1 zusammengefasst werden.
-
Die Anzahl der Fehlerpositionssignale, die gleich 1 sind, beschreibt, wie viele der von den Fehlerpositionssignalen referenzierten Bytes fehlerhaft sind.
-
7 zeigt ein beispielhaftes Ablaufdiagramm zur Bestimmung, ob ein nicht korrigierbarer Multibytefehler vorliegt. Die Reihenfolge und die gezeigten Schritte sind lediglich beispielhafte Ausführungsformen. In 7 sind die folgenden Schritte bzw. Abfragen gezeigt:
- Schritt 701: Es werden Fehlerpositionssignale für Bytes eines Codeworts bestimmt. Ein Byte umfasst dabei b-Bit(s) mit b ≥ 1. Es wird zu Schritt 702 verzweigt. Alternativ könnte direkt von Schritt 701 zu Schritt 705 verzweigt werden.
- Schritt 702: Hier wird bestimmt, ob die Anzahl der Fehlerpositionssignale gleich 0 ist. Ist dies der Fall, so wird kein Fehler erkannt. Liegt mindestens ein Fehlerpositionssignal vor, wird zu Schritt 703 verzweigt. In einer alternativen Ausführungsform wird zu Schritt 705 verzweigt.
- Schritt 703: Es wird geprüft, ob die Anzahl der Fehlerpositionssignale für Bytes des verkürzten Fehlercodes kleiner als τ ist und ob kein 1-Bytefehler, ... bis kein (τ- 1)-Bytefehler des verkürzten Fehlercodes vorliegt. Ist dies nicht zutreffend, so liegt ein korrigierbarer Fehler vor, es wird zu Schritt 706 verzweigt. Anderenfalls, also wenn keiner dieser Fehler erkannt wurde, wird mit Schritt 704 fortgefahren.
Der verkürzte Fehlercode ist ein τ Bytefehler-korrigierender Fehlercode. Der verkürzte Fehlercode ist aus einem nicht verkürzten Fehlercode bestimmbar.
- Schritt 704: Es wird ein nicht korrigierbarer Multibytefehler erkannt, da kein korrigierbarer Fehler erkannt werden konnte.
- Schritt 705: Es wird geprüft, ob mindestens ein Fehlerpositionssignal in einem Bereich außerhalb eines Bereichs liegt, der durch die Bytes des Codeworts des verkürzten Codes bestimmt ist. Ist dies der Fall, wird zu Schritt 704 verzweigt. Anderenfalls wird zu Schritt 703 verzweigt.
- Schritt 706: Die Fehlerkorrektur der maximal τ fehlerhaften Bytes wird durchgeführt.
-
Die Formulierung „ein 1-Bytefehler, ... bis (τ- 1)-Bytefehler“ gibt die Fehlertypen für beliebige Werte von τ an. Für τ = 3 sind damit 1-Bytefehler und 2-Bytefehler umfasst. Für τ = 5 sind damit 1-Bytefehler, 2-Bytefehler, 3-Bytefehler und 4-Bytefehler umfasst.
-
Beispielhafte Bestimmung von Multibytefehlern
-
1 zeigt ein Blockdiagramm zur Veranschaulichung von Schritten zum Bestimmen von Fehlerpositionssignalen. Beispielsweise erfolgt die Decodierung, Fehlerkorrektur und Fehlererkennung unter Verwendung eines Fehlersyndroms. Ein Syndromgenerator stellt ein Fehlersyndrom bereit, das am Eingang einer Einheit 101 zur Bestimmung von Fehlerpositionssignalen anliegt. Die Einheit 101 liefert Fehlerpositionssignale bfp0, ... ,bfpn-1 für die zu korrigierenden Bytepositionen. Die Fehlerpositionssignale dienen als Eingangswerte eines Zählers 102. Der Syndromgenerator ist in 1 nicht gezeigt.
-
Der Zähler 102 ermittelt, ob weniger als τ oder ob genau τ Fehlerpositionssignale den ersten Wert annehmen.
-
Der Syndromgenerator, die Einheit 101 sowie der Zähler 102 können als Hardware und/oder Software realisiert sein.
-
2 zeigt eine spezielle Ausgestaltung von 1 und erlaubt die Erkennung eines nicht korrigierbaren Multibytefehlers.
-
In 2 ist die Einheit 101 zur Bestimmung der Fehlerpositionssignale in n Einheiten 201 bis 203 aufgeteilt, die basierend auf dem Fehlersyndrom jeweils ein einzelnes der Fehlerpositionssignale bfp0 bis bfpn-1 bestimmen. Das Fehlerpositionssignal gilt dann als bestimmt, wenn am Ausgang der jeweiligen Einheit 201 bis 203 der erste Wert anliegt.
-
Die Ausgänge der Einheiten 201 bis 203 sind mit einem Zähler 204 verbunden. Der Zähler 204 bestimmt, wie viele von den Einheiten 201 bis 203 den ersten Wert bereitstellen, d.h. der Zähler 204 zählt die von den Einheiten 201 bis 203 (in Bezug auf eine vorgegebene Zeiteinheit) bereitgestellten ersten Werte.
-
Ein dem Zähler 204 nachgeschalteter Vergleicher 205 bestimmt, ob die von dem Zähler bestimmte Anzahl von Fehlerpositionssignalen
kleiner oder gleich τ ist, wobei τ die maximale Anzahl der von dem Fehlercode korrigierbarer Fehler angibt.
-
Beispielsweise liefert der Vergleicher 205 an seinem Ausgang
- - den Wert 1, wenn Anz(bfp) < τ ist und
- - den Wert 0, wenn Anz(bfp) = τ ist.
-
Anhand des Fehlercodes, beispielsweise unter Verwendung der Fehlersyndrome, können Fehlersignale bestimmt werden. Die Fehlersignale
- - 1-Bytefehler,
- - 2-Bytefehler,
⋮
- - (τ - 1) -Bytefehler
liegen an den Eingängen eines NICHT-ODER-Gatters 206 (auch bezeichnet als NOR-Gatter) an, wobei pro Eingang ein Fehlersignal anliegt. Am Ausgang des NICHT-ODER-Gatters 206 liegt nur dann der Wert 1 an, wenn alle Eingänge den Wert 0 haben. Entsprechend zeigt der Wert 1 am Ausgang des NICHT-ODER-Gatters 206 an, dass anhand der Fehlersignale kein Fehler bestimmt wurde.
-
Weiterhin liegt an dem Eingang des NICHT-ODER-Gatters 206 ein Signal 0-Bytefehler an, das mit seinem Wert 1 anzeigt, dass kein Fehler aufgetreten ist und mit seinem Wert 0 anzeigt, dass ein Fehler aufgetreten ist. Hat das Signal 0-Bytefehler den Wert 1, ist auch kein Multibytefehler erkennbar.
-
Der Ausgang des Vergleichers ist mit einem ersten Eingang eines UND-Gatters 207 verbunden und der Ausgang des NICHT-ODER-Gatters 206 ist mit einem zweiten Eingang des UND-Gatters 207 verbunden.
-
Der Ausgang des UND-Gatters 207 hat nur dann den Wert 1, wenn der Vergleicher 205 bestimmt hat, dass weniger als τ Fehlerpositionssignale von dem Zähler 204 gezählt wurden und dass von dem NICHT-ODER-Gatter 206 bestimmt wurde, dass keiner der Fehler 0-Bytefehler bis (τ - 1)-Bytefehler vorlag.
-
Ist kein 0-Bytefehler, etc. bis kein (τ - 1)-Bytefehler aufgetreten und zeigt außerdem der Vergleicher 205 durch den ausgegebenen Wert 1 an, dass Anz(bfp) < τ gilt, dann gibt das UND-Gatter 207 den Wert 1 aus. Hierdurch wird ein nicht korrigierbarer Multibytefehler angezeigt.
-
3 zeigt eine alternative Ausgestaltung für die Einheit zur Bestimmung der Fehlerpositionssignale beispielhaft für einen binären BCH-Code mit b = 1 oder einen Reed-Solomon-Code mit b > 1.
-
Das Fehlersyndrom wird einer Einheit 301 zur Bestimmung von Lokatorpolynomen zugeführt. Die Einheit 301 stellt Lokatorpolynome bereit, die anschließend von einer Einheit 302 zur Lokatorpolynomauswertung verarbeitet werden. Die Einheit 302 erhält zusätzlich zu den Lokatorpolynomen auch Bytepositionen α0 bis αn-1 und liefert im Ergebnis Fehlerpositionssignale bfpi mit i = 1, ... , n- 1. Die Fehlerpositionssignale werden von einem nachgeschalteten Zähler 303 gezählt. Der Zähler 303 stellt an seinem Ausgang eine Anzahl Anz(bfp) von Fehlerpositionssignalen bereit.
-
Um basierend auf dem Fehlersyndrom Lokatorpolynome zu bestimmen, kann beispielsweise der Berlecam-Massey Algorithmus genutzt werden (vergleiche [1]).
-
Die Einheit zur Lokatorpolynomauswertung 302 bestimmt für die zu korrigierenden Bytepositionen α0 bis αn-1, ob das Lokatorpolynom für ein αi gleich 0| oder ungleich 0| ist. Ist das Lokatorpolynom für αi gleich 0|, dann ist der Wert des entsprechenden Fehlerpositionssignal gleich 1, ist das Lokatorpolynom für αi ungleich 0|, dann ist der Wert des entsprechenden Fehlerpositionssignales gleich 0. Zur Bestimmung der Werte des Lokatorpolynoms kann beispielsweise der Suchalgorithmus von Chien verwendet werden, der die Nullstellen des Lokatorpolynoms bestimmt (vgl. [2]).
-
Der Wert des Fehlerpositionssignals bfpi
- - ist 1, wenn das Lokatorpolynom für αi den Wert 0| annimmt und
- - ist 0, wenn das Lokatorpolynom für αi einen Wert ungleich 0| annimmt.
-
Dabei sind α0 bis αn-1 Elemente eines Galoisfeldes GF(2m) mit m > 3 und α ist ein erzeugendes Element des Galoisfeldes Eigenschaften von Galoisfeldern sind beispielsweise in [3] beschrieben.
-
Nachfolgend wird ein Beispiel mit b = 1 betrachtet. Es sollen 8 Datenbits durch einen verkürzten Fehlercode C1 verarbeitet werden. Der verkürzte Fehlercode C1 ist ein verkürzter 3-Bitfehler-korrigierender und 4-Bitfehler-erkennender BCH-Code mit einbezogener Gesamtparität. Das verwendete Galoisfeld ist GF(25). Die 8 Datenbits werden mit 16 Prüfbits geschützt. Ein Codewort des Fehlercodes C1 weist somit 8 + 15 + 1 = 24 Bits auf.
-
Ein nicht verkürzter Fehlercode C2 ist beispielsweise ein 3-Bitfehler-korrigierender und 4-Bitfehler-erkennender BCH-Code mit einbezogener Gesamtparität. Der Fehlercode C2 hat die Länge von 25 - 1 = 31 Bits.
-
Der verkürzte Fehlercode C1 ergibt sich durch Kürzen von 7 Bits aus dem nicht verkürzten Fehlercode C2.
-
Ein Codewort des nicht verkürzten Fehlercodes
weist 31 Bits und ein Codewort des verkürzten Fehlercodes
weist 24 Bits auf.
-
Das Verkürzen eines linearen Codes kann durch Streichen von Spalten der H-Matrix erreicht werden.
-
4 zeigt eine H2-Matrix des nicht verkürzten Fehlercodes C2 und 5 zeigt die H1-Matrix des verkürzten Fehlercodes C1.
-
Die H1-Matrix des verkürzten Fehlercodes geht durch Streichen der Spalten 30, 29, 28, 27, 26, 25, 24 aus der H2-Matrix des nicht verkürzten Fehlercodes hervor. Dadurch wird der nicht verkürzte Fehlercode um die Bits y30, y29, y28, y27, y26, y25, y24 verkürzt.
-
Die H1-Matrix des verkürzten Codes weist 24 Spalten auf, ein Codewort des verkürzten Codes hat 24 Bits. Die Länge des verkürzten Codes ist in diesem Ausführungsbeispiel gleich 24.
-
Dabei sind α0 bis αi Elemente des Galoisfeldes GF(25). Diese können unterschiedlich dargestellt werden (vgl. die in 6 gezeigte Tabelle). Exponenten sind für ein Galoisfeld GF(2m) modulo 2m -1 zu interpretieren: Für das verwendete Galoisfeld GF(25) entspricht dies einer Interpretation modulo 31.
-
6 zeigt eine Tabelle mit durch das Modularpolynom p(x) = 1 +x2+x5 erzeugten Elementen des Galoisfeldes GF(25) in Potenzdarstellung, Polynomdarstellung und Tupeldarstellung (auch bezeichnet als Vektordarstellung).
-
Für die Fehlererkennung gilt
- - für einen 0-Bitfehler (wenn also kein Fehler vorliegt)
- - für einen 1-Bitfehler
- - für einen 2-Bitfehler
- - und für einen 3-Bitfehler
-
Die Fehlerkorrektur von BCH-Codes kann mittels Lokatorpolynomen erfolgen. Lokatorpolynome für BCH-Codes sind beispielsweise in [2], [4] oder [5] beschrieben.
-
Nachfolgend wird beispielhaft die 3-Bitfehler-Korrektur beschrieben. Ein 3-Bitfehler kann unter Verwendung eines Lokatorpolynoms dritten Grades
anhand seiner Nullstellen bestimmt werden: Die drei Nullstellen des Lokatorpolynoms gemäß Gleichung (13) zeigen die Fehlerpositionen in den Daten und stellen somit die Fehlerpositionssignale dar.
-
Die Korrektur eines 3-Bitfehlers kann erfolgen, indem für i mit 0 ≤ i ≤ 23 geprüft wird, ob für z = α
i gilt, so dass für jede zu korrigierende Bitposition
geprüft wird. Anhand der Nullstellen des Lokatorpolynoms sind die zu korrigierenden Bitpositionen und damit die Werte der Fehlerpositionssignale für diese Bits zu 1 bestimmt. Für alle anderen Bitpositionen sind die Werte der Fehlerpositionssignale gleich 0.
-
Das Lokatorpolynom L(z/3) ist hier ein Polynom dritten Grades, das höchstens drei verschiedene Nullstellen aufweist. Im Falle eines 3-Bitfehlers innerhalb den Bitpositionen 0 bis 23 gilt:
- - Ist der Wert des Lokatorpolynoms L(z/3) für z = αi gleich 0|, liegt ein Fehler an der i-ten Bitposition vor und der Wert des Fehlerpositionssignals bfpi ist 1.
- - Ist der Wert des Lokatorpolynoms L(z/3) für z = α1 ungleich 0|, liegt kein Fehler an der i-ten Bitposition vor und der Wert des Fehlerpositionssignals bfpi ist 0.
-
Diese Bestimmungen können zeitgleich oder zumindest teilweise zeitgleich durchgeführt werden. In diesem Sinne kann eine parallele oder eine teilweise parallele Bearbeitung erfolgen, was vorteilhaft die benötigte Verarbeitungsdauer verkürzen kann.
-
Es ist eine Option, die Werte α0 bis α23 für z aufeinanderfolgend oder sequentiell in das Lokatorpolynom L(z/3) einzusetzen und bestimmen, ob und für welche Werte αi das Lokatorpolynom L(z/3) den Wert 0| annimmt. Für diese Nullstellen ist der Wert des entsprechenden Fehlerpositionssignals bfpi gleich 1. Ist der Wert des Lokatorpolynoms ungleich 0|, ist der Wert des entsprechenden Fehlerpositionssignals gleich 0.
-
Es wird nun geprüft, ob die beiden folgenden Bedingungen erfüllt sind:
- 1. Ist für i mit 0 ≤ i ≤ 23 die Anzahl der Fehlerpositionssignale, die den Wert 1 annehmen, kleiner als 3?
- 2. Liegt weder ein 0-Bitfehler, noch ein 1-Bitfehler, noch ein 2-Bitfehler vor? (Dies kann anhand der Gleichungen (9), (10) und (11) überprüft werden.)
-
Sind diese beiden Bedingungen erfüllt, liegt ein nicht korrigierbarer Fehler in den Bits 0 bis 23 vor.
-
Es ist eine Option zu prüfen, ob für das Lokatorpolynom
für ein i ≥ 24 gilt. Da das Lokatorpolynom höchstens drei verschiedene Nullstellen aufweist, kann dann das Lokatorpolynom höchstens noch zwei Nullstellen für α
i mit 0 ≤ i ≤ 23 aufweisen.
-
Wird also erkannt, dass L(αj) = 0| für ein j ≥ 24 gilt, dann kann daran erkannt werden, dass ein nicht korrigierbarer Fehler aufgetreten ist.
-
Die Länge des verkürzten Fehlercodes ist in diesem Ausführungsbeispiel gleich 24. Die Bits des Fehlercodes werden als 0-tes Bit bis 23-tes Bit bezeichnet.
-
Anhand der Nullstellen des Lokatorpolynoms L(z/3) gemäß Gleichung (13), das ein Polynom dritten Grades ist, kann festgestellt werden, ob ein korrigierbarer 3-Bitfehler oder ein nicht korrigierbarer Multibitfehler vorliegt. Die Koeffizienten des Lokatorpolynoms sind dabei anhand der Komponenten s1, s3, s5 des Fehlersyndroms des aufgetretenen Fehlers bestimmt.
-
Als Polynom dritten Grades weist das Lokatorpolynom L(z/3) die drei Nullstellen α
i1 , α
i2 und α
i3 auf. Entsprechen diese drei Nullstellen Bitpositionen des verkürzten Fehlercodes, dann liegt ein korrigierbarer Dreibitfehler vor. In diesem Fall gilt
-
Für i1, i2 und i3 sind die entsprechenden Fehlerpositionssignale bfpi1 , bfpi2 , bfpi3 jeweils gleich 1 und in den Bitpositionen i1, i2 und i3 wird das fehlerhafte Wort des verkürzten Fehlercodes korrigiert.
-
Wie vorstehend eingeführt, werden die zu korrigierenden Bytepositionen bzw. die zu korrigierenden Bitpositionen des verkürzten Fehlercodes als Wertebereich (der Fehlerpositionssignale) bezeichnet. In diesem Beispiel sind dann die drei Fehlerpositionssignale Elemente dieses Wertebereichs.
-
Gibt es hingegen eine Nullstelle αj mit j ≥ 24, die also nicht in dem Wertebereich liegt, kann es nur noch höchstens zwei Fehlerpositionssignale geben, die den Wert 1 annehmen und in dem Wertebereich liegen, da ein Polynom dritten Grades nur drei Nullstellen aufweist.
-
Es kann somit keinen korrigierbaren 3-Bitfehler in den Bits des verkürzten Fehlercodes geben, wenn eine der Nullstellen des Lokatorpolynoms für eine Bitposition bestimmt ist, die außerhalb der Bitpositionen des verkürzten Codes liegt. Hieraus kann gefolgert werden, dass ein nicht korrigierbarer Multibitfehler in den Bits des verkürzten Fehlercodes aufgetreten ist.
-
Mit anderen Worten: Ein nicht korrigierbarer Multibitfehler kann bereits daran erkannt werden, dass für das Lokatorpolynom dritten Grades eine Nullstelle αj mit j ≥ 24 bestimmbar ist, so dass das entsprechende Fehlerpositionssignal außerhalb des Wertebereiches für den verkürzten Fehlercode liegt.
-
Alternativ kann ein aufgetretener nicht korrigierbarer Multibitfehler auch daran erkannt werden, dass dann, wenn die Fehlerpositionen als Nullstellen eines Lokatorpolynom m-ten Grades bestimmt sind, weniger als m Fehlerpositionssignale für die Bits des verkürzten Fehlercodes bestimmt sind, für die die Fehlerpositionssignale den Wert 1 annehmen.
-
Die beschriebene Vorgehensweise soll nun anhand eines Beispiels veranschaulicht werden.
-
Beispielhaft wird angenommen, dass ein 5-Bitfehler in den Bitpositionen y
14, y
18, y
19, y
20, y
21 aufgetreten ist, für den die Syndromkomponenten s
1, s
3, s
5 und s
P des verkürzten Fehlercodes durch die komponentenweisen XOR-Summen (Exklusiv-Oder-Summen) der entsprechenden Spalten der H
1-Matrix gemäß
5 zu
bestimmt sind. Dies kann unter Verwendung der in
6 gezeigten Elemente des Galoisfeldes GF(2
5) verifiziert werden.
-
Die Bedingungen für einen 3-Bitfehler zeigt Gleichung (12). Im vorliegenden Fall gelten:
-
Damit wären eigentlich die Bedingungen für einen vorliegenden 3-Bitfehler erfüllt. Dies trifft jedoch vorliegend nicht zu, da - wie erwähnt - in diesem Beispiel tatsächlich ein 5-Bitfehler vorliegt.
-
Der hier beispielhaft verwendete BCH-Fehlercode ist jedoch nur in der Lage, 3-Bitfehler zu korrigieren und 4-Bitfehler zu erkennen. Nachfolgend wird erläutert, wie trotzdem möglich ist, einen (nicht korrigierbaren) 5-Bitfehler zu erkennen.
-
Zunächst scheint also ein 3-Bitfehler vorzuliegen. Allerdings zeigt keines der Fehlerpositionssignale ein fehlerhaftes Bit für die korrigierenden Bits 0 bis 23 an (die Werte der Fehlerpositionssignale sind alle gleich 0).
-
Für i mit 0 ≤ i ≤ 23 gilt für das Lokatorpolynom gemäß Gleichung (13)
-
Dies kann durch Einsetzen der Werte α
0 bis α
23 verifiziert werden. Damit gilt für alle Fehlerpositionssignale
-
Da weniger als drei Fehlerpositionssignale den Wert 1 annehmen, kann somit bestimmt werden, dass ein nicht korrigierbarer Multibitfehler in den Bits y0 bis y23 des verkürzten Fehlercodes aufgetreten ist.
-
Mit anderen Worten: Einerseits ergibt sich aus der Gleichung (13), dass ein 3-Bitfehler vorliegt, andererseits gibt es kein Fehlerpositionssignal, das diese Aussage bestätigt. Es liegt also ein Widerspruch zwischen diesen beiden Bedingungen vor. Daraus kann gefolgert werden, dass ein Multibitfehler vorliegt. Dieser ist nicht korrigierbar. Insbesondere ist aufgrund der vorhandenen Informationen nicht ersichtlich, welche Bits fehlerhaft sind. Auch ist nicht bekannt, um welche Art des Multibitfehlers (hier den beispielhaften 5-Bitfehler) es sich handelt und wie der Multibitfehler zu korrigieren wäre. Es ist jedoch von erheblichem Vorteil, zu erkennen, dass ein Multibitfehler vorliegt. Diese Tatsache kann zu weiteren Aktionen genutzt werden, z.B. kann eine weitere Fehlerkorrektur erforderlich, ein Speicherbereich als fehlerhaft gekennzeichnet, eine Übertragung wiederholt, ein Baustein ersetzt und/oder eine Alarmmeldung ausgegeben werden.
-
Für die Bits y
26, y
29 und y
30, die Bits des nicht gekürzten Fehlercodes, aber keine Bits des gekürzten Fehlercodes sind, ergeben sich
-
Das Lokatorpolynom nach Gleichung (17) hat in diesem Beispiel drei Nullstellen α26, α29 und α30. Diese entsprechen Bitpositionen des nicht verkürzten Fehlercodes, die jedoch keine Bitpositionen des verkürzten Fehlercodes sind.
-
Ist der Wert eines Fehlerpositionssignals für eine Bitposition des nicht verkürzten Fehlercodes zu 1 bestimmt und ist die Bitposition keine Bitposition des verkürzten Fehlercodes, dann folgt bereits hieraus, dass für die Bitpositionen des verkürzten Fehlercodes weniger als τ Fehlerpositionssignale den Wert 1 annehmen können (sofern der verkürzte Fehlercode ein τ Bitfehler-korrigierender Fehlercode ist).
-
Es ist eine Option, die Werte der Fehlerpositionssignale, die den Wert 1 annehmen, zu zählen. Dies kann beispielsweise mit einem Binärzähler (sequentiell oder parallel) erfolgen. Wird durch den Zähler bestimmt, dass der Zählerstand kleiner als τ ist, wenn ein τ Bitfehler-korrigierender verkürzter Fehlercode verwendet wird, kann ein nicht korrigierbarer Fehler erkannt werden, wenn bestimmt ist, dass kein 1-Bitfehler etc. bis kein τ-Bitfehler aufgetreten ist. Ist ein Lokatorpolynom τ-ten Grades bestimmt, kann bereits bestimmt werden, dass ein nicht korrigierbarer Multibitfehler aufgetreten ist, wenn weniger als τ Fehlerpositionssignale für die Bitpositionen des verkürzten Codes den Wert 1 annehmen.
-
Wird festgestellt, dass ein Fehlerpositionssignal gleich 1 für eine Fehlerposition bestimmt ist, die keiner Bitposition des verkürzten Fehlercodes, sondern einer Bitposition des nicht verkürzten Fehlercodes entspricht, wird ein nicht korrigierbarer Fehler erkannt.
-
Das Zählen der Fehlerpositionen kann dabei sowohl unter Verwendung eines sequentiellen Zählers als auch eines parallelen Zählers erfolgen, wobei ein sequentieller Zähler nach jedem Zählen auf seinen Ausgangszustand zurückzusetzen ist.
-
Die Werte der Fehlerpositionssignale bfp0 bis bfp23 können dabei oder zumindest teilweise parallel bestimmt werden. In [4] ist beschrieben, wie für ein Lokatorpolynom zweiten, dritten und vierten Grades die zu korrigierenden Bitpositionen bestimmt werden können. Aus den zu korrigierenden Bitpositionen sind die Fehlerpositionssignale zu 1 bestimmt.
-
Die Werte der Fehlerpositionssignale können auch unter Verwendung von Software durch ein Suchverfahren bestimmt werden, wobei alle den Bitpositionen des verkürzten Fehlercodes entsprechenden Elemente des Galoisfeldes in das Lokatorpolynom eingesetzt werden und ein Fehlerpositionssignal für das entsprechende Bit zu 1 bestimmt ist, wenn das Lokatorpolynom für den eingesetzten Wert den Wert 0| annimmt. Dabei ist ein Suchverfahren für das Bestimmen der Nullstellen des Lokatorpolynoms beispielsweise in [2] beschrieben.
-
Analog kann verfahren werden, wenn der verkürzte Fehlercode ein b-Bit Bytefehler-korrigierender Code mit b > 1 ist und der verkürzte Fehlercode aus einem nicht verkürzten Fehlercode bestimmbar ist. Beim Verkürzen eines τ Bytefehler-korrigierenden Codes mit b > 1 ist der verkürzte Fehlercode durch Verkürzen von Bytes des nicht verkürzten Fehlercodes bestimmbar.
-
Bei der Fehlerkorrektur kann ein Fehlerpositionssignal bestimmt sein, das den Wert 1 annimmt, wenn in dem entsprechenden Byte ein Fehler auftritt. Das Fehlerpositionssignal kann zu 1 bestimmt sein, wenn das Lokatorpolynom den Wert 0| annimmt und zu 0 bestimmt sein, wenn das Lokatorpolynom einen Wert ungleich 0| annimmt. Die Bestimmung von Fehlerpositionssignalen für einen Reed-Solomon-Code ist beispielsweise in [5] beschrieben, wobei dort die Fehlerpositionssignale als Bytefehlerpositionssignale bezeichnet sind.
-
Der Wert des Fehlers oder der Fehlerwert um ein fehlerhaftes Byte zu korrigieren, kann durch ein Fehlerpolynom bestimmt sein, wie das beispielsweise in [1] oder in [4] beschrieben ist.
-
Obwohl die Erfindung im Detail durch das mindestens eine gezeigte Ausführungsbeispiel näher illustriert und beschrieben wurde, so ist die Erfindung nicht darauf eingeschränkt und andere Variationen können vom Fachmann hieraus abgeleitet werden, ohne den Schutzumfang der Erfindung zu verlassen.
-
Literaturverzeichnis:
-
- [1] Wicker, S.: Error Control Systems for Digital Communication and Storage, Prentice Hall, 1995, Seiten 214-224
- [2] Wicker, S.: Error Control Systems for Digital Communication and Storage, Prentice Hall, 1995, Seiten 205-210
- [3] Lin, S; Costello, D.: Error Control Coding, Prentice Hall, 1983, Seiten 29-40
- [4] Okano, H.; Imai, H.: A construction method for high speed decoders using ROMs for Bose-Chadhuri-Hocquenhem and Reed Solomon Code, IEEE Trans. Comp. C36 (10), Seiten 1165-1171
- [5] DE 10 2017 125 617 B4