-
GEBIET
-
Einige Ausführungsformen betreffen eine Schaltungsanordnung zur Fehlerkorrektur und/oder zur Fehlererkennung. Einige Ausführungsformen betreffen ein Verfahren zur Fehlerkorrektur und/oder zur Fehlererkennung. Einige Ausführungsformen betreffen eine beliebige 3-Bit-Korrektur.
-
HINTERGRUND
-
Die Fehlererkennung und -korrektur oder Fehlerkontrolle sind Techniken, die eine zuverlässige Übermittlung von Digitaldaten über unzuverlässige Kommunikationskanäle und/oder unzuverlässige Datenspeichervorrichtungen ermöglichen können. Die Fehlererkennung und -korrektur gehören zum Gebiet der Informationstheorie und Codiertheorie und finden Anwendungen in der Informatik und der Telekommunikation. Viele Kommunikationskanäle und/oder Datenspeicher können Kanalrauschen und Interferenz ausgesetzt sein, so dass Fehler während der Übertragung/Speicherung von der Quelle zu einem Empfänger herbeigeführt werden können. Fehlererkennungstechniken können das Erkennen solcher Fehler ermöglichen, während eine Fehlerkorrektur die Rekonstruktion der ursprünglichen Daten ermöglichen kann. Die zu übertragenden oder zu speichernden Daten können beispielsweise in Form von Binärwörtern einer bestimmten Länge bereitgestellt werden.
-
-
Wenn BCH-Codes über einem Galois-Feld GF(2m) verwendet werden, gilt n ≤ 2m – 1, und das Fehlersyndrom s kann aus 3 m Komponenten bestehen, wobei die ersten m Komponenten das Untersyndrom s1 bilden können, die zweiten m Komponenten das Untersyndrom s3 bilden können und die dritten m Komponenten das Untersyndrom s5 bilden können, wie es üblich ist, wenn BCH-Codes verwendet werden. Falls die vollständige Parität betrachtet wird, kann das Fehlersyndrom noch eine weitere Binärkomponente enthalten, die mit sP zu bezeichnen ist.
-
KURZFASSUNG
-
Ausführungsformen sehen eine Schaltungsanordnung zur Fehlerkorrektur und möglicherweise zur Fehlererkennung zumindest von 1-Bit-, 2-Bit- und 3-Bit-Fehlern von Bits in einem n-stelligen Binärwort v' = v'
1, ..., v'
n vor, das sich aus Bitfehlern eines n-stelligen Codeworts v = v
1, ..., v
n eines binären BCH-Codes C über dem Galois-Feld GF(2
m) ergeben hat, wobei m ≥ 4 ist. Der Code C weist einen Codeabstand von wenigstens d ≥ 7 auf. Der BCH-Code C weist eine H-Matrix H auf, so dass m erste Zeilen der H-Matrix eine Untermatrix H
1 bilden, m zweite Zeilen der H-Matrix eine zweite Untermatrix H
3 bilden und weitere m Zeilen der H-Matrix eine dritte Untermatrix H
5 bilden mit
H1 = (h 1 / 1, ..., h n / 1), H3 = (h 1 / 3, ..., h n / 3) und H5 = (h 1 / 5, ..., h n / 5) wobei
gilt, α ein Element des Galois-Felds GF(2
m) in seiner Vektordarstellung als ein m-Komponenten-Binärspaltenvektor und der jeweilige Exponent j von α
j modulo 2
m – 1 zu interpretieren ist und n ≤ 2
m – 1 gilt. Die Schaltungsanordnung weist die folgenden Merkmale auf und umfasst Folgendes:
einen Syndromgenerator Synd zum Bestimmen eines Fehlersyndroms s, wobei m erste Komponenten von s ein m-Komponenten-Untersyndrom s
1 bilden, m zweite Komponenten von s ein zweites m-Komponenten-Untersyndrom s
3 bilden und weitere m Komponenten von s ein drittes Untersyndrom s
5 bilden, wobei
s1 = H1·v', s3 = H3·v' und s5 = H5·v' gelten,
mehrere Unterschaltungen, so dass für jedes Bit v
i', das einer möglichen Fehlerkorrektur des n-stelligen Binärworts v' = v'
1, ..., v'
n unterzogen wird, eine Unterschaltung SK
j existiert, die so ausgelegt ist, dass sie anhand Zwischenwerten Zw
0, Zw
1, Zw
2, Zw
3, die für alle der möglichen Fehlerkorrektur unterzogenen Bitpositionen gleich sind, einen Korrekturwert Δv
i nach der folgenden Beziehung
bildet, wobei
gilt und die Zwischenwerte Zw
0, Zw
1, Zw
2, Zw
3 abhängig von den Untersyndromen s
1, s
3, s
5 bestimmt werden, so dass im Fall eines 1-Bit-Fehlers oder eines 2-Bit-Fehlers oder eines 3-Bit-Fehlers Folgendes gilt:
zi = (z i / 1, z i / 2, ..., z i / m) = (0, 0, ..., 0), wenn ein Fehler an der Bitposition i aufgetreten ist, und
zi = (z i / 1, z i / 2, ..., z i / m) ≠(0, 0, ..., 0) wenn kein Fehler an der Bitposition i aufgetreten ist,
zum Bestimmen der Zwischenwerte Zw
0, Zw
1, Zw
2 und Zw
3 jeweils eine Unterschaltung SZw
0, SZw
1, SZw
2 und SZw
3 existiert, die so konfiguriert ist, dass sie die gleichen Zwischenwerte Zw
0, Zw
1, Zw
2 und Zw
3 anhand der Untersyndrome s
1, s
3, s
5 für jede der möglichen Fehlerkorrektur des Worts v' unterzogene Bitposition bereitstellt, und
eine kombinatorische Schaltung Vkn existiert, die so ausgelegt ist, dass sie einer möglichen Fehlerkorrektur unterzogene Bits v'
i komponentenweise mit durch die Unterschaltungen SK
i bereitgestellten entsprechenden Korrekturwerten Δv
i zu möglicherweise korrigierten Bits
v cor / i kombiniert.
-
Ausführungsformen sehen ein entsprechendes Verfahren für eine Fehlerkorrektur und eine Fehlererkennung vor. Ausführungsformen sehen ein entsprechendes nicht flüchtiges Speichermedium vor.
-
KURZBESCHREIBUNG DER ZEICHNUNG
-
Ausführungsformen der vorliegenden Offenbarung werden unter Verwendung der anliegenden Figuren beschrieben. Es zeigen:
-
1 ein schematisches Blockdiagramm einer Schaltungsanordnung für eine Fehlerkorrektur,
-
2 ein schematisches Blockdiagramm einer möglichen Implementation einer Unterschaltung SKi zum Bestimmen eines Korrektursignals Δvi für das i-te Bit des Worts v' auf der Grundlage der gemeinsamen Zwischenwerte Zw0, Zw1, Zw2 und Zw3,
-
3 ein schematisches Blockdiagramm einer möglichen Implementation einer kombinatorischen Schaltung, die dafür ausgelegt ist, die Korrektursignale Δvi mit dem Wort v' zu kombinieren, um das fehlerkorrigierte Wort vcor zu erhalten,
-
die 4A bis 4D schematische Blockdiagramme einer möglichen Implementation von Unterschaltungen SZw0, SZw1, SZw2, SZw3 zum Bestimmen der Zwischenwerte Zw0, Zw1, Zw2 und Zw3,
-
5 ein schematisches Blockdiagramm einer Unterschaltung, die dafür ausgelegt ist, die Zwischenwerte Zw0, Zw1, Zw2 und Zw3 bereitzustellen,
-
6 ein schematisches Blockdiagramm der Schaltungsanordnung aus 1, welche durch eine Fehlererkennungsschaltung ergänzt ist,
-
7 ein schematisches Blockdiagramm einer gemeinsamen Implementation einer Fehlererkennungsschaltung und einer Unterschaltung SZw0 zum Bereitstellen des Zwischenwerts Zw0 und
-
8 ein schematisches Blockdiagramm einer möglichen Implementation der Fehlererkennungsschaltung aus 7.
-
DETAILLIERTE BESCHREIBUNG
-
Die herkömmliche Operation beim Korrigieren zufälliger 3-Bit-Fehler durch kombinationelle Fehlerkorrekturschaltungen kann typischerweise mit einem verhältnismäßig hohen Hardwareaufwand und einer verhältnismäßig langen Signallaufzeit zum Bestimmen der entsprechenden Fehlerkorrektursignale verbunden sein. Insbesondere kann eine verhältnismäßig lange Signallaufzeit für Korrektursignale eine begrenzende Wirkung auf die Taktrate haben.
-
Es wäre wünschenswert, die Korrektur von 1-Bit-, 2-Bit- und 3-Bit-Fehlern in binären Datenwörtern zu erleichtern und insbesondere die erforderlichen Fehlerkorrekturschaltungen zu verbessern, so dass ein möglichst geringer Aufwand getrieben wird und eine möglichst kurze Signallaufzeit erforderlich ist.
-
Theoretischer Hintergrund
-
Für die Fehlerkorrektur zufällig verteilter Mehrbitfehler können BCH-Codes verwendet werden, wie Fachleuten bekannt ist und beispielsweise in
Lin, S., Costello, D. "Error Control Coding" Prentice Hall, 1983 beschrieben ist, wobei insbesondere auf die Seiten 143–160 Bezug genommen wird. Ebenso ist das Dokument von
Okano, H. und Imai, H., „A construction method of high speed decoders using ROM's for Bose-Chadhuri-Hocquenghem and Reed Solomon Codes", IEEE Trans. Corp. C36 (10) 1165–1175, 1987 zu erwähnen, worin kombinatorische Schaltungen für die Fehlerkorrektur von BCH-Codes vorgestellt sind.
-
Ein BCH-Code ist ein spezieller linearer Code, der als ein linearer Code durch eine Paritätsprüfmatrix H und eine Generatormatrix G, die beispielsweise von der Paritätsprüfmatrix abgeleitet werden kann, beschrieben werden kann. Falls der Code die Länge N hat und k Informationsbits aufweist, ist 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 umfasst M Prüfbits.
-
Ein ungekürzter 3-Bit-Fehler korrigierender BCH-Code kann durch eine H-Matrix
beschrieben werden, wobei die H-Matrix in einer separierten Form präsentiert ist. Herkömmlich können H
1, H
3 und H
5 als
H1 = (α0, α1, ..., αi, ..., αN-1) = (h 1 / 1, ... h 1 / i, ..., h 1 / N), H3 = (α0, α3, ..., α3i, ..., α3(N-1)) = (h 3 / 1, ... h 3 / i, ..., h 3 / N), und
H5 = (α0, α5, ..., α5i, ..., α5(N-1)) = (h 5 / 1, ... h 5 / i, ..., h 5 / N), ausgewählt werden, wenn der Code ungekürzt ist.
-
Hier kann α als ein Element eines finiten Felds GF(2m) ausgewählt werden, das auch als ein Galois-Feld bezeichnet wird. Häufig kann α als ein primitives Element ausgewählt werden. Dann kann α' für i = 0, ..., 2m – 2 mit Ausnahme des Elements 0 jeden möglichen Wert des Galois-Felds annehmen. Es gilt dann N = 2m – 1. Die Exponenten von αj, α3j und of α5j können modulo 2m – 1 bestimmt werden.
-
H1, H3 und H5 können typischerweise jeweils (m, N)-Matrizen mit m Zeilen und N = 2m – 1 Spalten sein. In speziellen Anwendungsfällen kann es der Fall sein, dass einige Zeilen der m Zeilen beispielsweise der Matrix H5 linear abhängig sein können. In einem solchen Fall können Zeilen der Matrix H5 fortgelassen werden, bis alle Zeilen linear unabhängig sind. Beispielsweise kann die Anzahl der Zeilen der Matrix H5 dann auch kleiner als m sein.
-
Die Elemente α' des Galois-Felds GF(2m) in ihrer Vektordarstellung können m-stellige binäre Spaltenvektoren sein.
-
Falls L Spalten der H-Matrix des ungekürzten BCH-Codes gelöscht werden, kann eine H-Matrix eines gekürzten BCH-Codes der Länge n = N – L erhalten werden. Für einen gekürzten Code gilt Folgendes: n = N – L < 2m – 1.
-
Es ist möglich, die H-Matrix H durch eine Zeile zu ergänzen, die nur aus Einsen besteht. Eine zusätzliche nur aus Einsen bestehende Zeile in der H-Matrix entspricht der zusätzlichen Überlegung der vollständigen Parität.
-
Wenn die vollständige Parität berücksichtigt wird, kann die H-Matrix die Form
aufweisen, wobei P eine nur aus Einsen bestehende Zeile ist.
-
Es ist auch möglich, wenn der Code gekürzt wird, alle Spalten der H-Matrix zu löschen, die beispielsweise in den Komponenten, welche den Zeilen der Matrix H3 entsprechen, eine gerade Anzahl von Einsen aufweisen. Die restlichen Spalten der H-Matrix können nur Spalten aufweisen, die in den Komponenten, welche der Teilmatrix H3 entsprechen, stets eine ungerade Anzahl von Einsen aufweisen. In einem solchen Fall kann die Gesamtparität einfach als eine EXKLUSIV-ODER-Summe der Komponenten des Untersyndroms s3 bestimmt werden, was vorteilhaft sein kann. Die Zeilen, die der Teilmatrix H3 entsprechen, können dann eine Untermenge von Zeilen bilden, so dass die Komponenten von Spalten, die zu dieser Untermenge von Zeilen gehören, eine ungerade Anzahl von Einsen aufweisen. Es ist auch möglich, eine andere Untermenge von Zeilen auszuwählen und Spalten zu löschen, wenn die H-Matrix gekürzt wird, so dass die restlichen Spalten in den Komponenten, die zu der ausgewählten Untermenge gehören, eine ungerade Anzahl von Einsen aufweisen. Die Parität kann dann als eine EXKLUSIV-ODER-Summe der Komponenten des Syndroms, die zur ausgewählten Untermenge von Zeilen gehören, gebildet werden.
-
Nun wird ein gekürzter BCH-Code mit der Länge n betrachtet, wobei n = N – L < 2m – 1. Ein Codewort dieses Codes v = v1, ..., vn, das auch als ein Codevektor bezeichnet werden kann, besteht aus n Komponenten v1, v2, ..., vn. Hier kann ein Codevektor als ein Zeilenvektor oder als ein Spaltenvektor beschrieben werden. Falls eine Matrix von rechts mit einem Vektor multipliziert wird, ist der Vektor als ein Spaltenvektor zu interpretieren, und das Ergebnis ist ein Spaltenvektor. Falls eine Matrix von links mit einem Vektor multipliziert wird, ist der Vektor ein Zeilenvektor, und das Ergebnis der Multiplikation ist auch ein Zeilenvektor. Es ist dann nicht erforderlich, die entsprechenden Vektoren explizit als Spaltenvektoren oder Zeilenvektoren zu bezeichnen, weil es aus dem Zusammenhang klar ist, ob es sich um einen Spaltenvektor oder einen Zeilenvektor handelt. Falls speziell anzugeben ist, dass ein Vektor w als ein Spaltenvektor dargestellt ist, wird er als as wT beschrieben.
-
Falls ein Codewort v = v1, ..., vn fälschlicherweise zu einem Wort v' = v1, ..., geändert wird, kann die Differenz zwischen v und v' durch einen Fehlervektor e mit e = e1, ..., en = v1 ⊕ v'1, ..., vn ⊕ v'n = v ⊕ v' beschrieben werden.
-
Eine Komponente e
i des Fehlervektors e ist gleich 1, wenn v
i und v'
i verschieden sind und
gilt. Eine Komponente e
j des Fehlervektors e ist gleich 0, wenn v
j und v'
j gleich sind und v
j = v'
j gilt.
-
Falls ein Fehler durch eine Fehlerkorrekturschaltung korrigiert werden kann, können die von der Fehlerkorrekturschaltung ausgegebenen Korrekturwerte gleich den Komponenten des Fehlervektors sein, und die Korrekturschaltung gibt in diesem Fall den Korrekturwert ei am i-ten Ausgang ihrer n Ausgänge aus. Der Korrekturwert ei kann dann durch eine EXKLUSIV-ODER-Verknüpfung mit der zu korrigierenden Komponente v'i verknüpft werden: vcor = v'i ⊕ ei. Die Korrekturwerte ei können auch zu einem Korrekturvektor kombiniert werden. Der Korrekturvektor ist gleich dem Fehlervektor, falls der Fehler durch den Code korrigiert werden kann. Falls der Vektor v der Codevektor eines trennbaren Codes ist, wobei die Datenbits und die Prüfbits im Codevektor v getrennt sind, ist es auch möglich, nur die Datenbits oder sogar nur einen Teil der Datenbits des Vektors v' zu korrigieren. In diesen Fällen können die Bits, für welche die Möglichkeit einer Fehlerkorrektur erwünscht ist und/oder implementiert ist, als ”Bits, die einer möglichen Fehlerkorrektur ausgesetzt sind” bezeichnet werden.
-
Das Fehlersyndrom s = (s1, s3, s5, sP) eines Worts v' kann durch s = H·v' (1) bestimmt werden, wobei s1 = H1·v', (2) s3 = H3·v', (3) s5 = H5·v', (4) sP = P·v' = (1, ..., 1)·v' = v'1 ⊕ v'2 ⊕ ... ⊕ v'n (5) gelten.
-
Das Fehlersyndrom eines Codeworts v ist typischerweise gleich 0, so dass für ein Codewort v Folgendes gilt: s = H·v = 0 (6) und für ein Nicht-Codewort v' = v ⊕ e Folgendes gilt: s = H·v' = H·(v ⊕ e) = H·v ⊕ H·e = H·e ≠ 0. (7)
-
Das Fehlersyndrom s kann durch den Fehlervektor e bestimmt werden.
-
Zum Bestimmen des zugeordneten richtigen Codeworts anhand des fehlerhaften Nicht-Codeworts v' müssen jene Komponenten v'j invertiert werden, für die ej = 1 gilt, so dass ej der durch die Fehlerkorrekturschaltung bestimmte entsprechende Korrekturwert ist.
-
Für den betrachteten gekürzten BCH-Code muss der Fehlervektor e anhand des Fehlersyndroms s = (s
1, s
3, s
5, s
P) mit der H-Matrix
bestimmt werden.
-
Die Matrizen H
1, H
3, H
5 werden durch ihre Spalten beschrieben:
-
Die Exponenten von α können, wie bereits erwähnt wurde, modulo 2m – 1 bestimmt werden, und die Exponenten i1, i2, ..., in sind alle paarweise verschieden. Es ist nicht notwendig, dass ij = j für j = 1, ..., n ist.
-
Falls ein 1-Bit-Fehler im j-ten Bit vorhanden ist, gilt Folgendes:
sP = 1 (15) und s 3 / 1 = s3, s 5 / 1 = s5.
-
Falls ein 2-Bit-Fehler an den Bitpositionen j und l existiert, gilt Folgendes:
sP = 0 (19) und s 3 / 1 ≠ s3.
-
Falls ein 3-Bit-Fehler an den Bitpositionen j, l und k existiert, gilt Folgendes:
sP = 1 (23) und s 3 / 1 ≠ s3.
-
Es wäre wünschenswert, wenn die Fehlerkorrekturschaltung wirksam die Fehlerpositionen eines 1-Bit-Fehlers oder eines 2-Bit-Fehlers oder eines 3-Bit-Fehlers anhand des Fehlersyndroms, d. h. der Syndromkomponenten s1, s3 und s5 des BCH-Codes, bestimmen würde und eine Korrektur der als fehlerhaft erkannten Bits an den bestimmten Bitpositionen des Datenworts vornehmen würde.
-
Im Prinzip wäre dies durch einen Zuordner möglich, der beispielsweise als ein ROM oder als eine kombinatorische Funktion implementiert ist, wodurch die entsprechenden fehlerhaften Bits, die zu korrigieren sind, den Werten des Fehlersyndroms s = (s1, s3, s5, sP), d. h. allen möglichen Werten des Fehlersyndroms s, zugeordnet werden.
-
Aus Kosten- und Komplexitätsgründen kann dies praktisch unmöglich sein und daher in tatsächlichen Systemen infolge der großen Wortbreite des Syndroms s nicht implementiert werden.
-
BCH-Codes können in der Lage sein, die Position von fehlerhaften Bits durch Nullstellen oder Wurzeln entsprechender Lokalisierungspolynome zu bestimmen. Die Koeffizienten der Lokalisierungspolynome können durch die Komponenten des Fehlersyndroms bestimmt werden. Bei der Fehlerkorrektur kann zuerst die Anzahl der Fehler bestimmt werden. Abhängig von der Anzahl der Fehler kann ein Lokalisierungspolynom entsprechend der Anzahl der Fehler berechnet werden, dessen Nullstellen die Fehlerposition der zu korrigierenden Fehler bestimmen.
-
Typischerweise können verschiedene Lokalisierungspolynome verschiedener Grade für verschiedene Fehleranzahlen verwendet werden, um die zu korrigierenden Fehlerpositionen zu bestimmen.
-
Demgemäß kann für 3-Bit-Fehler ein Lokalisierungspolynom dritten Grades existieren, das drei Nullstellen aufweist, wobei diese drei Nullstellen die Bitpositionen bestimmen können, die im Fall eines 3-Bit-Fehlers zu korrigieren sind. Für 2-Bit-Fehler kann es ein Lokalisierungspolynom des zweiten Grades geben, welches zwei Nullstellen aufweist, wobei im Fall eines Zweibitfehlers diese beiden Nullstellen die Bitpositionen, die korrigiert werden, festlegen können.
-
Für 1-Bit-Fehler kann ein weiteres Lokalisierungspolynom des ersten Grades bereitgestellt werden, das eine Nullstelle aufweist, wobei im Fall eines 1-Bit-Fehlers die Nullstelle die Bitposition festlegen kann, die korrigiert wird.
-
Zum Bestimmen der aufgetretenen Fehlerpositionen kann zuerst die Anzahl der Fehler bestimmt werden. Auf der Grundlage der bestimmten Fehleranzahl kann dann das zu verwendende Lokalisierungspolynom bestimmt werden und können die Nullstellen dieses Lokalisierungspolynoms bestimmt werden. Diese Nullstellen entsprechen den Bitpositionen, die zu korrigieren sind.
-
-
In dem Fall, dass nur ein Fehler existiert, ermöglicht das Lokalisierungspolynom des dritten Grades nicht das Ableiten der Position des nur einen existierenden Fehlers anhand dieses Polynoms dritten Grades. Abhängig davon, ob ein 1-Bit-Fehler oder ein 2-Bit-Fehler oder ein 3-Bit-Fehler existiert, ist ein Polynom ersten Grades oder ein Polynom dritten Grades zur Bestimmung der Korrekturstellen anhand der Nullstellen dieser Polynome zu verwenden. Im Prinzip kann die Bestimmung der zu korrigierenden Bits so ausgeführt werden, dass zuerst die Anzahl aller aufgetretenen Fehler bestimmt werden kann. Auf der Grundlage der Anzahl der aufgetretenen Fehler kann das entsprechende Lokalisierungspolynom ausgewählt werden. Die Nullstellen des ausgewählten Lokalisierungspolynoms können die zu korrigierenden Bitpositionen bestimmen. Im Prinzip können die Nullstellen und damit die zu korrigierenden Bitpositionen abhängig von den Koeffizienten des ausgewählten Lokalisierungspolynoms des entsprechenden Grads tabelliert werden und durch einen Zuordner bestimmt werden. Die Koeffizienten des entsprechenden Lokalisierungspolynoms können, wie angegeben, von den Untersyndromen s1, s3, s5 des Fehlersyndroms abhängen, welche jeweils eine Wortbreite m aufweisen können, so dass die Nullstellen von Daten mit einer Wortbreite 3·m abhängen können. Für realistische Wortbreiten ist es infolge der großen Wortbreiten der Koeffizienten praktisch nicht möglich, die Nullstellen der bekannten Lokalisierungspolynome durch einen Zuordner zu bestimmen.
-
In
Okano, H. und Imai, H., "A construction method of high speed decoders using ROM's for Bose-Chadhuri-Hocquenghem and Reed Solomon Codes", IEEE Trans. Corp. C36 (10) 1165–1175, 1987 werden die Variablen des entsprechenden Lokalisierungspolynoms zuerst transformiert, so dass das transformierte Polynom nur einen einzigen Koeffizienten aufweist, der von den Werten der Untersyndrome s
1, s
3, s
5 abhängt. Der Koeffizient hat eine Wortbreite m. Die Transformation erfolgt derart, dass die weiteren Koeffizienten des transformierten Polynoms gleich 1 oder 0 sind und nicht mehr von den Untersyndromen s
1, s
3, s
5 abhängen. Die Nullstellen des transformierten Polynoms können dann durch einen Zuordner anhand dieses einen Koeffizienten bestimmt werden, der beispielsweise durch einen ROM anhand der Untersyndrome s
1, s
3, s
5 bestimmt wird und nur die Wortbreite m aufweist. Die Nullstellen des ursprünglichen Lokalisierungspolynoms können durch Rücktransformation und Verwenden eines Decodierers bestimmt werden.
-
-
-
Durch die Offenbarung müssen diese Nachteile zumindest teilweise verringert werden.
-
Gemäß wenigstens einem Aspekt der Offenbarung ist für jedes zu korrigierende Bit v'
i eine Unterschaltung SK
i zum Korrigieren des i-ten Bits bereitgestellt, die so implementiert ist, dass sie für jedes zu korrigierende Bit v'
i des n-stelligen Binärworts v' = V'
1 ..., V'
n parallel einen Korrekturwert Δv
i bilden kann. Die Fehlerkorrekturschaltung SK
i kann so ausgelegt sein, dass sie einen Korrekturwert Δv
i anhand der Zwischenwerte Zw
0, Zw
1, Zw
2, Zw
3 nach der folgenden Beziehung bildet:
wobei
-
-
Hier werden für alle zu korrigierenden Bits die gleichen Zwischenwerte Zw0, Zw1, Zw2, Zw3 verwendet, so dass die Zwischenwerte nur einmal in der Schaltungsanordnung bereitgestellt werden müssen.
-
Die Zwischenwerte Zw0, Zw1, Zw2, Zw3 können abhängig von den Untersyndromen s1, s3, s5 bestimmt werden, so dass im Fall eines 1-Bit-Fehlers oder eines 2-Bit-Fehlers oder eines 3-Bit-Fehlers zi = (z i / 1, z i / 2, ..., z i / m) = (0, 0, ...,0) gilt, wenn ein Fehler an der Bitposition i aufgetreten ist, und zi = (z i / 1, z i / 2, ..., z i / m) ≠ (0, 0, ...,0) gilt, wenn kein Fehler an der Bitposition i aufgetreten ist. Es ist typischerweise nicht erforderlich, andere Gleichungen in anderen Fehlerfällen zu beurteilen, d. h. es ist typischerweise nicht erforderlich, eine andere Gleichung für 1-Bit-Fehler, 2-Bit-Fehler und 3-Bit-Fehler zu beurteilen.
-
Im Fall, dass kein Fehler vorhanden ist und s1 = s3 = s5 = 0 gilt, gilt für alle zu korrigierenden Bits zi = (z i / 1, z i / 2, ..., z i / m) ≠ (0, 0, ...,0) und demgemäß Δvi = 0, so dass das Abschalten der Fehlerkorrekturschaltung im fehlerfreien Fall nicht erforderlich ist.
-
Der Korrekturwert Δvi ist gleich 1, falls alle Komponenten z'1, ..., z'm von z' gleich 0 sind oder falls z' gleich dem Nullwert in GF(2m) ist. Der Korrekturwert Δvi ist gleich 0, falls zumindest eine der Komponenten z i / l, ..., z i / m von zi gleich 1 ist oder falls zi nicht gleich dem Nullwert in GF(2m) ist.
-
Daher werden die gleichen Korrekturwerte erhalten, falls alle Zwischenwerte Zw0, Zw1, Zw2, Zw3 mit dem gleichen Faktor multipliziert werden, der für alle Werte der Untersyndrome s1, s3 und s5 nicht gleich 0 ist. Daher ist die Multiplikation die Multiplikation im Galois-Feld GF(2m).
-
Die Bestimmung der Zwischenwerte Zw0, Zw1, Zw2 und Zw3 kann durch die entsprechende Unterschaltung SZw0, SZw1, SZw2 und SZw3 ausgeführt werden. Die Unterschaltungen SZw0, SZw1, SZw2 und SZw3 können so implementiert werden, dass sie die Zwischenwerte Zw0, Zw1, Zw2 und Zw3 anhand der Untersyndrome s1, s3, s5 bilden. Ferner kann eine kombinatorische Schaltung Vkn für eine komponentenweise Kombination der Bits v'i von v', die zu korrigieren sind, existieren, wobei die kombinatorische Schaltung Vkn durch die Unterschaltung SKi bereitgestellte Korrekturwerte Δvi mit den zu korrigierenden Bits z'i kombiniert. Sie ist so ausgelegt, dass sie die korrigierten Bits v cor / i anhand der zu korrigierenden Bits v'i und der bereitgestellten Korrekturwerte Δvi bildet, wobei beispielsweise v cor / i = v'i ⊕ Δvi gilt.
-
Es ist möglich, die Unterschaltungen SZw
0, SZw
1, SZw
2 und SZw
3 so zu konfigurieren, dass sie abhängig von den Untersyndromen s
1, s
3 und s
5 die Zwischenwerte
Zw2 = s1, (26) Zw3 = α0 (27) bereitstellen, wobei
gilt und
(r1, r2, ..., rm) = s1 + s3 gilt.
-
Die Operation + bezeichnet die Addition der entsprechenden Elemente im Galois-Feld GF(2m), welche in der Vektordarstellung der komponentenweisen EXKLUSIV-ODER-Kombination der entsprechenden binären m-Komponenten-Vektoren entspricht. Die Operation·bezeichnet die Operation der Multiplikation im Galois-Feld GF(2m).
-
Es ist ebenso möglich, dass die Unterschaltungen SZw
0, SZw
1, SZw
2, SZw
3 so ausgelegt werden, dass die Unterschaltungen SZw
0, SZw
1, SZw
2 und SZw
3, abhängig von den Untersyndromen s
1, s
3, s
5, die Zwischenwerte
Zw0 =s 6 / 1 + s 2 / 3 +s 3 / 1·s3 + s1·s5, (28) Zw1 = s 2 / 1s3 + s5, (29) Zw2 = s1·[s 3 / 1 + s3 + α0·N(s1, s3)] (30) Zw3 = s 3 / 1 + s3 + α·N(s1, s3) (31) bereitstellen, wobei
gilt und
(r1, r2, ..., rm) = s 3 / 1 + s3 gilt.
-
Die Operation + bezeichnet die Addition der entsprechenden Elemente im Galois-Feld GF(2m), welche in der Vektordarstellung der komponentenweisen EXKLUSIV-ODER-Kombination der entsprechenden binären m-Komponenten-Vektoren entspricht. Die Operation·bezeichnet die Operation der Multiplikation im Galois-Feld GF(2m).
-
Die durch die Gleichungen (28) bis (31) bestimmten Zwischenwerte ergeben sich aus den durch die Gleichungen (24) bis (27) bestimmten Zwischenwerten durch Multiplizieren der durch die Gleichungen (24) bis (27) bestimmten entsprechenden Zwischenwerte mit dem folgenden Faktor: [s 3 / 1 + s3 + α0·N(s1, s3)].
-
Der Faktor [s 3 / 1 + s3 + α0·N(s1, s3)] ist immer ungleich (0, 0, ..., 0). Falls s 3 / 1 + s3 = (0, 0, ..., 0), gilt N(s1, s3) ≠ 0, und falls s 3 / 1 + s3 ≠ (0, 0, ..., 0), gilt N(s1, s3) = 0.
-
Es gilt [(s 3 / 1 + s3) + (α0·N(s1, s3))] = [(s 3 / 1 + s3) ∨ (α0·N(s1 , s3))], wobei [(s 3 / 1 + s3) + (α0·N(s1, s3))] die komponentenweise EXKLUSIV-ODER-Operation von (s 3 / 1 + s3) und (α0·N(s1, s3)) in der Vektordarstellung beschreibt, während [(s 3 / 1 + s3) ∨ (α0·N(s1, s3))] die komponentenweise ODER-Operation von (s 3 / 1 + s3) und (α0·N(s1, s3)) in der Vektordarstellung beschreibt. Diese Gleichheit ergibt sich aus der Tatsache, dass nur dann, wenn s 3 / 1 + s3 = (0, 0, ..., 0) ist, N(s1, s3) = 1 gilt und demgemäß α0·N(s1, s3) = α0 = 1, 0, ..., 0 ≠ (0, 0, ..., 0) gilt und dass immer dann, wenn s1 + s3 ≠ (0, 0, ..., 0) ist, N(s1, s3) = 0 und α0·N(s1, s3) = (0, 0, ..., 0) gelten. Die Werte 1 und 1 der Komponenten der zu kombinierenden Vektoren, für welche die EXKLUSIV-ODER-Operation 1 ⊕ 1 = 0 und 1 ∨ 1 = 1 der ODER-Operation verschiedene Ergebnisse liefern würde, treten nicht auf. Im Prinzip ist es dann natürlich auch möglich, einige Komponenten mit der Operation EXKLUSIV-ODER zu kombinieren und die restlichen Komponenten mit der Operation ODER zu kombinieren. Damit die Beschreibung so einfach wie möglich bleibt, wird in der folgenden Beschreibung die EXKLUSIV-ODER-Operation verwendet, wenngleich natürlich auch eine ODER-Operation verwendet werden kann.
-
Unabhängig davon, ob die Zwischenwerte Zw0, Zw1, Zw2, Zw3 nach den Gleichungen (24) bis (27) oder nach den Gleichungen (28) bis (31) bestimmt werden, ergeben sich die gleichen Korrekturwerte der zu korrigierenden Bits. Die durch die Gleichungen in (24) bis (27) und nach den Gleichungen (28) bis (31) bestimmten Zwischenwerte werden demgemäß als gleich bezeichnet. Es ist aus dem Zusammenhang klar, welche Zwischenwerte verwendet werden.
-
Die Offenbarung ist nun mit Bezug auf Ausführungsformen zu erklären. In 1 ist eine erfindungsgemäße Schaltungsanordnung für das Korrigieren von 1-Bit-, 2-Bit- und 3-Bit-Fehlern schematisch dargestellt. Sie umfasst einen Syndromgenerator Synd 11, eine Unterschaltung SZw0 120 zum Bestimmen eines Zwischenwerts Zw0, eine Unterschaltung SZw1 121 zum Bestimmen eines Zwischenwerts Zw1, eine Unterschaltung SZw2 122 zum Bestimmen eines Zwischenwerts Zw2 und eine Unterschaltung SZw3 123 zum Bestimmen eines Zwischenwerts Zw3 . Die Schaltungsanordnung umfasst ferner für i = 1, ..., n, n Unterschaltungen SKi 13i zum Bestimmen eines Korrekturwerts Δvi. Die Schaltungsanordnung umfasst ferner eine kombinatorische Schaltung Vkn 14 zum komponentenweisen Kombinieren des zu korrigierenden Worts v' = v'1, ..., v'm mit den anhand der Unterschaltungen SK1 131, SKn 13n bestimmten Korrekturwerten Δv1, ..., Δvn. Der Syndromgenerator Synd 11 bildet die Komponenten s1, s3, s5 des Fehlersyndroms s = (s1, s3, s5) beispielsweise durch EXKLUSIV-ODER-Operationen anhand des auf seine n-Komponenten-Binäreingabe angewendeten Datenworts v' = v'1, ..., v'n nach der folgenden Beziehung s1 = H1·v', s3 = H3·v', s5 = H5 welche der Syndromgenerator Synd 11 an seinen drei m Bit breiten binären Ausgängen bereitstellen kann.
-
Die Matrizen H
1, H
3, H
5 können Untermatrizen einer H-Matrix
eines BCH-Codes der Länge n über dem Galois-Feld GF(2
m) für eine Fehlerkorrektur von 1-Bit-, 2-Bit- und 3-Bit-Fehlern und mit 3·m Korrekturbits sein.
-
Der erste Ausgang des Syndromgenerators Synd 11, der das Untersyndrom s1 trägt, kann zur Bildung von Zwischenwerten Zw0, Zw1, Zw2, Zw3 mit einem ersten Eingang von jeder der Unterschaltungen SZw0 120, SZw1 121, SZw2 122, SZw3 123 verbunden werden. Der zweite Ausgang des Syndromgenerators Synd 11, der das Untersyndrom s3 trägt, kann mit einem zweiten Eingang von jeder der Unterschaltungen SZw0 120, SZw1 121, SZw2 122, SZw3 123 verbunden werden. Der dritte Ausgang des Syndromgenerators Synd 11, der das Untersyndrom s5 trägt, kann mit einem dritten Eingang von jeder der Unterschaltungen SZw0 120, SZw1 121, SZw2 122, SZw3 123 verbunden werden.
-
Der m Bit breite Ausgang der Unterschaltung SZw0 120, der den Zwischenwert Zw0 trägt, kann zur Bildung eines Korrekturwerts Δvj mit einem ersten Eingang von jeder der Unterschaltungen SKj 13j für j = 1, ..., n verbunden werden.
-
Der m Bit breite Ausgang der Unterschaltung SZw1 121, der den Zwischenwert Zw1 trägt, kann für j = 1, ..., n zur Bildung des Korrekturwerts Δvj mit einem zweiten Eingang von jeder der Unterschaltungen SKj 13j verbunden werden.
-
Der m Bit breite Ausgang der Unterschaltung SZw2 122, der den Zwischenwert Zw2 trägt, kann für j = 1, ..., n zur Bildung des Korrekturwerts Δvj mit einem dritten Eingang von jeder der Unterschaltungen SKj 13j verbunden werden.
-
Der m Bit breite Ausgang der Unterschaltung SZw3 123, der den Zwischenwert Zw3 trägt, kann für j = 1, ..., n zur Bildung des Korrekturwerts Δvj mit einem vierten Eingang von jeder der Unterschaltungen SKj 13j verbunden werden.
-
Für k = 1, ..., n kann der 1 Bit breite Ausgang der Unterschaltung SKk 13k mit dem 1 Bit breiten k-ten Eingang von jedem der ersten n binären Eingänge der kombinatorischen Schaltung Vkn 14, an deren n weiteren binären Eingänge die Komponenten v'1, ..., v'n des zu korrigierenden Datenworts v' = v'1, ..., v'n angelegt sind, verbunden werden. Die kombinatorische Schaltung Vkn 14 kann für l = 1, ..., n an ihren n binären Ausgängen die korrigierten Werte v cor / l ⊕ Δvl ausgeben, welche beispielsweise durch komponentenweise EXKLUSIV-ODER-Operationen implementiert werden.
-
Mit anderen Worten kann die Schaltungsanordnung für die Fehlerkorrektur mehrere Unterschaltungen zum Bestimmen von Zwischenwerten Zw
0, Zw
1, Zw
2, Zw
3, die als Koeffizienten in einem Fehlerkorrekturpolynom
zu verwenden sind, aufweisen. Die Zwischenwerte Zw
0, Zw
1, Zw
2, Zw
3 können abhängig von Untersyndromen s
1, s
3, s
5 bestimmt werden, so dass im Fall eines 1-Bit-, 2-Bit- oder 3-Bit-Fehlers
zi = (z i / 1, z i / 2, ..., z i / m) = (0, 0, ..., 0) ist, wenn ein Fehler an der Bitposition i aufgetreten ist, und
zi = (z i / 1, z i / 2, ..., z i / m) ≠ (0, 0, ..., 0) ist, wenn kein Fehler an der Bitposition i aufgetreten ist. Ein Korrekturwert
für die Bitposition i kann dann auf der Grundlage des für den Punkt
ausgewerteten Fehlerkorrekturpolynoms bestimmt werden. Die Bestimmung von wenigstens einem der Zwischenwerte Zw
0, Zw
1, Zw
2, Zw
3 kann einen algebraischen Term aufweisen, der eine Funktion von wenigstens zweien der Untersyndrome ist, wobei der algebraische Term angibt, ob ein 1-Bit-Fehler im möglicherweise fehlerhaften Binärwort v' existiert.
-
Gemäß einer Ausführungsform zeigt 2 eine mögliche Implementation einer Unterschaltung SKi 2. Sie kann die konstanten Multiplizierer 21, 22 und 23, die EXKLUSIV-ODER-Schaltung 24 und die NICHT-ODER-Schaltung 25 aufweisen.
-
Der erste m Bit breite Eingang, an den der Zwischenwert Zw
0 angelegt wird, kann einem ersten m Bit breiten Eingang einer EXKLUSIV-ODER-Schaltung
24 zugeführt werden. Der zweite m Bit breite Eingang, der das Zwischensignal Zw
1 trägt, kann mit dem Eingang des Konstantenmultiplizierers
21 verbunden werden, dessen m Bit breiter Ausgang mit einem zweiten m Bit breiten Eingang der EXKLUSIV-ODER-Schaltung
24 verbunden werden kann. Im Konstantenmultiplizierer
21 kann der eingegebene Zwischenwert Zw
1 mit dem konstanten Faktor
multipliziert werden. Die Multiplikation kann eine Multiplikation im Galois-Feld GF(2
m) sein.
-
Die konkrete Implementation des Konstantenmultiplizierers
21 kann durch Multiplizieren sowohl von Zw
1 als auch von
in ihren jeweiligen Polynomdarstellungen miteinander modulo dem modularen Polynom des Galois-Felds GF(2
m) und durch Implementieren der sich ergebenden linearen Gleichungen durch EXKLUSIV-ODER-Operationen bestimmt werden.
-
Der dritte m Bit breite Eingang der Unterschaltung SK
i 2, der das Zwischensignal Zw
2 trägt, kann mit dem Eingang des Konstantenmultiplizierers
22 verbunden werden, dessen m Bit breiter Ausgang mit einem dritten m Bit breiten Eingang der EXKLUSIV-ODER-Schaltung
24 verbunden werden kann. Im Konstantenmultiplizierer kann der eingegebene Zwischenwert Zw
2 mit dem konstanten Faktor
multipliziert werden. Die Multiplikation kann wiederum eine Multiplikation im Galois-Feld GF(2
m) sein.
-
Die konkrete Implementation des Konstantenmultiplizierers
22 kann durch Multiplizieren sowohl von Zw
2 als auch von
in ihrer jeweiligen Polynomdarstellung miteinander modulo dem modularen Polynom des Galois-Felds GF(2
m) und durch Implementieren der sich ergebenden linearen Gleichungen durch EXKLUSIV-ODER-Operationen bestimmt werden.
-
Der vierte m Bit breite Eingang, der das Zwischensignal Zw
3 trägt, kann mit dem Eingang des Konstantenmultiplizierers
23 verbunden werden, dessen m Bit breiter Ausgang mit einem vierten m Bit breiten Eingang der EXKLUSIV-ODER-Schaltung
24 verbunden werden kann. Im Konstantenmultiplizierer kann der eingegebene Zwischenwert Zw
3 mit dem konstanten Faktor
multipliziert werden. Die Multiplikation kann wiederum eine Multiplikation im Galois-Feld GF(2
m) sein.
-
Die konkrete Implementation des Konstantenmultiplizierers
23 kann durch Multiplizieren sowohl von Zw
3 als auch von
in ihrer jeweiligen Polynomdarstellung miteinander modulo dem modularen Polynom des Galois-Felds GF(2
m) und durch Implementieren der sich ergebenden linearen Gleichungen durch EXKLUSIV-ODER-Operationen bestimmt werden.
-
Der m Bit breite Ausgang der EXKLUSIV-ODER-Schaltung 24, der den Wert z(i) trägt, kann mit dem m Bit breiten Eingang einer NICHT-ODER-Schaltung 25 verbunden werden, die an ihrem 1 Bit breiten Ausgang das Korrektursignal Δvi trägt.
-
In dem Fall, dass der Zwischenwert Zw3 ständig gleich α0 ist, kann eine spezielle Implementation für die Unterschaltung SKi bereitgestellt werden.
-
Weil
gilt, ist funktionell an den vierten m Bit breiten Eingang der EXKLUSIV-ODER-Schaltung
24 der stets konstante Wert
angelegt. Durch eine einfache äquivalente Transformation kann dieser konstante Wert demgemäß in der EXKLUSIV-ODER-Summe berücksichtigt werden, welche den Wert z(i) durch einfaches Invertieren der Komponenten von z(i), deren entsprechende Komponenten
gleich 1 sind, bildet. Dies kann dadurch implementiert werden, dass die entsprechenden Ausgangszeilen der EXKLUSIV-ODER-Schaltung
24 mit den entsprechenden Eingängen der NICHT-ODER-Schaltung
25 über Inverter verbunden werden, während die Ausgangszeilen der EXKLUSIV-ODER-Schaltung
24, deren entsprechende Komponenten von
gleich 0 sind, direkt mit den entsprechenden Eingängen der NICHT-ODER-Schaltung
25 verbunden werden.
-
Am 1 Bit breiten Ausgang kann die NICHT-ODER-Schaltung 25 das 1 Bit breite Korrektursignal Δvi ausgeben.
-
In 3 ist eine mögliche Implementation einer kombinatorischen Schaltung Vkn 3 dargestellt. Sie weist n erste binäre Eingänge auf, an denen die Korrekturwerte Δv1, Δvn eingegeben werden, welche von den entsprechenden Unterschaltungen SK1, SKn ausgegeben werden. Die Komponenten v'1, ..., v'n des zu korrigierenden Datenworts v' werden an weitere n zweite binäre Eingänge der kombinatorischen Schaltung Vkn 3 angelegt. Die korrigierten Werte v cor / 1, ..., v cor / n des korrigierten Datenworts vcor = v cor / 1, ..., v cor / n werden an den n binären Ausgängen der kombinatorischen Schaltung Vkn 3 ausgegeben. Für i = 1, ..., n kann der i-te Eingang der ersten n Eingänge der Schaltung Vkn 3, welcher das Korrektursignal Δvi trägt, mit einem ersten Eingang eines EXKLUSIV-ODER-Gatters 3i verbunden werden, dessen zweiter Eingang mit dem i-ten Eingang der n zweiten Eingänge verbunden werden kann, welcher den Wert v'i trägt, und dessen Ausgang, der das korrigierte Signal trägt, als i-ter Ausgang der Schaltung Vkn 3 herausgeführt wird.
-
Es ist klar, dass die kombinatorische Schaltung beispielsweise entsprechend geändert werden kann, ohne irgendetwas in Bezug auf den Schutzumfang der Offenbarung zu ändern. Es ist demgemäß beispielsweise möglich, invertierte Korrektursignale zu verwenden und sie an EXKLUSIV-NICHT-ODER-Gatter statt an EXKLUSIV-ODER-Gatter anzulegen. Es ist ebenso beispielsweise möglich, Komponenten des gestörten Datenworts v' invertiert der kombinatorischen Schaltung Vkn zuzuführen und zumindest teilweise EXKLUSIV-NICHT-ODER-Gatter an Stelle von EXKLUSIV-ODER-Gattern zu implementieren, falls einer ihrer Eingänge gegenwärtig invertiert ist.
-
In
4A ist eine mögliche Implementation einer Unterschaltung SZw
0 zum Bestimmen eines Zwischenwerts Zw
0 dargestellt. Die Unterschaltung SZw
0 aus
4A ist bereitgestellt, um den Zwischenwert Zw
0 nach der folgenden Beziehung
zu bilden.
-
An einen ersten m Bit breiten Eingang der Unterschaltung SZw0 wird die Syndromkomponente s1 angelegt, an einen zweiten m Bit breiten Eingang wird die Syndromkomponente s3 angelegt, und an einen dritten auch m Bit breiten Eingang wird die Syndromkomponente s5 angelegt. Am m Bit breiten Ausgang wird der Zwischenwert Zw0 ausgegeben. Der erste Eingang, der die Syndromkomponente s1 trägt, ist mit einem m Bit breiten Eingang eines Quadrierers 41 und einem ersten Eingang eines Galois-Feld-Multiplizierers 48 verbunden. Der zweite m Bit breite Eingang, der die Syndromkomponente s3 trägt, ist mit einem ersten Eingang eines Galois-Feld-Multiplizierers 42 verbunden, dessen zweiter m Bit breiter Eingang mit dem Ausgang des Quadrierers 41 verbunden ist, welcher den Wert s 2 / 1 trägt. Der dritte m Bit breite Eingang, der die Syndromkomponente s5 trägt, ist mit einem ersten Eingang einer EXKLUSIV-ODER-Schaltung 43 verbunden, deren zweiter m Bit breiter Eingang mit dem Ausgang des Galois-Feld-Multiplizierers 42 verbunden ist, welcher den Wert s 2 / 1·s3 trägt.
-
Die Syndromkomponenten s1, s3 und s5 können an den Ausgängen des Syndromgenerators Synd 11 in 1 bereitgestellt werden. Die EXKLUSIV-ODER-Schaltung 43 kann eine komponentenweise EXKLUSIV-ODER-Operation implementieren. Der mit einem ersten Eingang eines Galois-Feld-Multiplizierers 45 verbundene m Bit breite Ausgang der EXKLUSIV-ODER-Schaltung 43 trägt den Wert s 2 / 1·s3 + s5. Der zweite m Bit breite Eingang des Galois-Feld-Multiplizierers 45 kann auch mit dem ersten Eingang von SZw0 verbunden werden, der die Syndromkomponente s1 trägt und auch mit dem Eingang des Quadrierers 41 und mit dem ersten Eingang des Galois-Feld-Multiplizierers 48 verbunden werden kann. Der Ausgang des Galois-Feld-Multiplizierers 45, der den Wert s1(s 2 / 1·s3 + s5) trägt, kann mit einem ersten Eingang eines Galois-Feld-Multiplizierers 46 verbunden werden.
-
Der Ausgang des Galois-Feld-Multiplizierers 48, der das Signal s 3 / 1 trägt, kann mit dem ersten Eingang einer EXKLUSIV-ODER-Schaltung 49 verbunden werden, deren zweiter m Bit breiter Eingang mit dem zweiten Eingang der Unterschaltung SZw0 verbunden werden kann, welcher die Syndromkomponente s3 trägt, wobei dieser Eingang auch mit dem ersten Eingang des Galois-Feld-Multiplizierers 42 verbunden werden kann. Sein Ausgang, der den Wert s 3 / 1 + s3 trägt, kann mit dem m Bit breiten Eingang einer NICHT-ODER-Schaltung 410 verbunden werden, die einen binären Ausgang aufweist, der mit einem ersten m Bit breiten Eingang einer EXKLUSIV-ODER-Schaltung 47 verbunden ist.
-
Der 1 Bit breite Ausgang der NICHT-ODER-Schaltung
410 kann den Wert 1 genau dann tragen, wenn
s 3 / 1 + s3 = 0 ist oder wenn
s 3 / 1 = s3 ist und demgemäß auch wenn s
1 = s
3 = 0 gilt und demgemäß auch α
0·N(s
1, s
3) = (1, 0, ..., 0) gilt. Es sei bemerkt, dass α
0 = (1, 0, 0, ..., 0) mit m Bits ist (siehe
4D). Der Ausgang der NICHT-ODER-Schaltung
410 kann mit einem ersten Eingang eines EXKLUSIV-ODER-Gatters
412 mit zwei binären Eingängen und einem binären Ausgang verbunden werden. An den zweiten Eingang des EXKLUSIV-ODER-Gatters
412 kann das höchstwertige Bit des Werts
s 3 / 1 + s3 angelegt werden. Dieses höchstwertige Bit kann genau dann invertiert werden, wenn
s 3 / 1 + s3 = 0 ist. In diesem Fall kann es auf den Wert 1 gelegt werden. In allen anderen Fällen kann es unverändert bleiben. Der vom EXKLUSIV-ODER-Gatter
412 als ein höchstwertiges Bit MSB ausgegebene Wert bildet zusammen mit den m – 1 niedrigstwertigen Bits der Ausgangsleitung der EXKLUSIV-ODER-Schaltung
49 den Wert
s 3 / 1 + s3 + α0·N(s1, s3), der an den m Bit breiten Eingang eines Inverters
413 angelegt wird, um den Wert zu bilden, der im Galois-Feld invers ist und an dessen Eingang, der mit dem zweiten m Bit breiten Eingang des Galois-Feld-Multiplizierers
46 verbunden sein kann, der Wert
s 3 / 1 + s3 + α0·N(s1, s3), ausgegeben werden kann. Gemäß einer Ausführungsform kann das EXKLUSIV-ODER-Gatter
412 auch durch ein ODER-Gatter ersetzt werden, das zwei binäre Eingänge und einen binären Ausgang aufweist, weil, wie vorstehend beschrieben, eine Verbindung der beiden Eingangswerte 1 und 1 nicht implementiert zu werden braucht und die ODER-Funktion und die EXKLUSIV-ODER-Funktion für die Eingangswerte [0, 0], [1, 0], [0, 1] gleich sind. An seinem Ausgang, der mit einem zweiten Eingang der EXKLUSIV-ODER-Schaltung
47 verbunden werden kann, kann der Galois-Feld-Multiplizierer
46 den Wert
ausgeben.
-
Dieser Wert kann an den zweiten Eingang der EXKLUSIV-ODER-Schaltung
47 angelegt werden, an deren ersten m Bit breiten Eingang der Wert
s 3 / 1 + s3 angelegt ist. Sie kann an ihrem Ausgang den Zwischenwert Zw
0 mit
ausgeben.
-
Die Unterschaltung 413 zum Invertieren des in das Galois-Feld eingegebenen Werts kann beispielsweise durch eine Tabelle mit m Eingängen und m Ausgängen implementiert werden, die als ein ROM oder als eine kombinatorische Funktion implementiert werden kann.
-
Das Implementieren von Quadrierern, Galois-Feld-Multiplizierern und Invertern ist einem Fachmann bekannt. Zusätzlich kann der Quadrierer 41 entweder auch als eine Tabelle mit m Eingängen und m Ausgängen implementiert werden. Es ist auch möglich, diese Schaltung als eine lineare Schaltung zu implementieren. Alle Elemente des betrachteten Galois-Felds in ihrer Polynomdarstellung können als Polynome des (m – 1)-ten Grads dargestellt werden, und die quadrierten Polynome können wiederum modulo dem modularen Polynom als Polynome des (m – 1)-ten Grads des Galois-Felds bestimmt werden, woraufhin die lineare Darstellung direkt folgt, die noch für eine konkrete Ausführungsform zu beschreiben ist.
-
Dementsprechend können die konkreten Implementationen für die Galois-Feld-Multiplizierer 42, 45, 46 und 48 auch durch Multiplizieren der entsprechenden Polynome der Operanden modulo dem modularen Polynom, das einem Fachmann bekannt ist und von dem verschieden ist, das noch für ein konkretes Galois-Feld zu beschreiben ist, abgeleitet werden.
-
In
4B ist eine mögliche Implementation einer Unterschaltung SZw
1 zum Implementieren eines Zwischenwerts Zw
1 schematisch dargestellt. Die Unterschaltung SZw
1 aus
4B ist für die Bildung des Zwischenwerts Zw
1 gemäß der folgenden Beziehung
bereitgestellt.
-
An einen ersten m Bit breiten Eingang der Unterschaltung SZw1 kann die Syndromkomponente s1 angelegt werden, an einen zweiten m Bit breiten Eingang kann die Syndromkomponente s3 angelegt werden, und an einen dritten auch m Bit breiten Eingang kann die Syndromkomponente s5 angelegt werden. Am m Bit breiten Ausgang kann der Zwischenwert Zw1 ausgegeben werden. Der erste Eingang, der die Syndromkomponente s1 trägt, kann mit einem m Bit breiten Eingang eines Quadrierers 414 und einem ersten Eingang eines Galois-Feld-Multiplizierers 418 verbunden werden. Der zweite m Bit breite Eingang, der die Syndromkomponente s3 trägt, kann mit einem ersten Eingang eines Galois-Feld-Multiplizierers 415 verbunden werden, dessen zweiter m Bit breiter Eingang mit dem Ausgang des Quadrierers 414 verbunden werden kann, welcher den Wert s 2 / 1 tragen kann. Der Ausgang des Quadrierers 414 kann zusätzlich mit dem zweiten Eingang des Galois-Feld-Multiplizierers 418 verbunden werden.
-
Der Ausgang des Galois-Feld-Multiplizierers 415 kann mit einem ersten m Bit breiten Eingang der EXKLUSIV-ODER-Schaltung 416 verbunden werden, deren zweiter m Bit breiter Eingang mit dem dritten m Bit breiten Schaltungseingang der Schaltung SZw1 verbunden werden kann, welcher die Syndromkomponente s5 tragen kann. Der zweite m Bit breite Eingang der Schaltung SZw1, der die Syndromkomponente s3 tragen kann, kann mit einem ersten Eingang einer EXKLUSIV-ODER-Schaltung 419 verbunden werden, deren zweiter m Bit breiter Eingang mit dem Ausgang des Galois-Feld-Multiplizierers 418 verbunden werden kann, welcher den Wert s 3 / 1 tragen kann.
-
Die Syndromkomponenten s1, s3 und s5 können an den Ausgängen des Syndromgenerators Synd 11 in 1 bereitgestellt werden. Die EXKLUSIV-ODER-Schaltung 416 kann eine komponentenweise EXKLUSIV-ODER-Operation implementieren. Der m Bit breite Ausgang der EXKLUSIV-ODER-Schaltung 416, der mit einem ersten Eingang eines Galois-Feld-Multiplizierers 417 verbunden werden kann, kann den Wert s 2 / 1·s3 + s5 tragen.
-
Der m Bit breite Ausgang der EXKLUSIV-ODER-Schaltung 419, der den Wert s 3 / 1 + s3 tragen kann, kann mit dem m Bit breiten Eingang einer NICHT-ODER-Schaltung 420 mit einem binären Ausgang verbunden werden.
-
Der 1 Bit breite Ausgang der NICHT-ODER-Schaltung 420 kann genau dann eine ”1” tragen, wenn s 3 / 1 + s3 = 0 ist. Dies ist typischerweise der Fall, wenn s 3 / 1 = s3 oder wenn s1 = s3 = 0 gilt. In diesem Fall gilt α0·N(s1, s3) = (1, 0, ..., 0). Der Ausgang der NICHT-ODER-Schaltung 420 kann mit einem ersten Eingang eines ODER-Gatters 421 mit zwei binären Eingängen und einem binären Ausgang verbunden werden.
-
Das höchstwertige Bit des Werts s 3 / 1 + s3, das von der EXKLUSIV-ODER-Schaltung 419 ausgegeben wird, kann an den zweiten Eingang des ODER-Gatters 421 angelegt werden. Der vom ODER-Gatter 421 ausgegebene Wert, welcher das höchstwertige Bit ist, wird gleichzeitig mit den m – 1 niedrigstwertigen Bits der m durch die EXKLUSIV-ODER-Schaltung 419 ausgegebenen Bits an den m Bit breiten Eingang eines Inverters 422 angelegt. An den Eingang des Inverters 422 kann der Eingangswert [s 3 / 1 + s3 + α0·N(s1, s3)] angelegt werden. Der Inverter 422 kann den Wert [s 3 / 1 + s3 + α0·N(s1, s3)]–1 bilden, der im Galois-Feld invers zum an seinen Eingang angelegten Eingangswert sein kann, und gibt diesen Kehrwert an seinem Ausgang aus. Der Ausgang des Inverters 411 kann mit dem zweiten m Bit breiten Eingang des Galois-Feld-Multiplizierers 417 verbunden werden.
-
Der Galois-Feld-Multiplizierer
417 gibt an seinem Ausgang den Zwischenwert
aus.
-
In 4B kann das höchstwertige Bit des an den Eingang des Inverters 422 angelegten Eingangswerts [s 3 / 1 + s3 + α0·N(s1, s3)] anhand des von der EXKLUSIV-ODER-Schaltung 419 ausgegebenen Werts s 3 / 1 + s3 unter Verwendung der NICHT-ODER-Schaltung 420 und des ODER-Gatters 421 erhalten werden.
-
Im Gegensatz dazu kann in 4A das höchstwertige Bit des an den Eingang des Inverters 413 angelegten Eingangswerts [s 3 / 1 + s3 + α0·N(s1, s3)] anhand des von der EXKLUSIV-ODER-Schaltung 49 ausgegebenen Werts s 3 / 1 + s3 unter Verwendung der NICHT-ODER-Schaltung 410 und des EXKLUSIV-ODER-Gatters 412 erhalten werden.
-
An beide Eingänge des EXKLUSIV-ODER-Gatters 412 und des ODER-Gatters 421 wird das Paar (1, 1) von Eingangswerten typischerweise nie angelegt, so dass die durch ein ODER-Gatter ausgegebenen Werte nicht von durch ein EXKLUSIV-ODER-Gatter ausgegebenen Werten verschieden sind.
-
4C zeigt eine mögliche Implementation einer Unterschaltung SZw2 zum Implementieren des Zwischenwerts Zw2 = s1. Sie kann einfach eine m-Komponenten-Leitung 423 aufweisen, die mit dem Ausgang des Syndromgenerators Synd 11 verbunden ist, welcher die Syndromkomponente s1 ausgibt.
-
4D zeigt eine mögliche Implementation einer Unterschaltung SZw
3 zum Implementieren des Zwischenwerts
Sie kann eine m-Komponenten-Leitung aufweisen, deren höchstwertiges Bit konstant auf dem Wert ”1” liegt und deren m – 1 niedrigstwertige Komponenten konstant beim Wert ”0” liegen.
-
In 5 ist eine Ausführungsform für eine gemeinsame Implementation der Unterschaltungen SZw0, SZw1, SZw2 und SZw3 zum Erzeugen der Zwischenwerte Zw0, Zw1, Zw2 und Zw3 schematisch dargestellt, welche die Zwischenwerte gemäß den folgenden Beziehungen bestimmen: Zw0 = s 6 / 1 + s 2 / 3 + s 3 / 1·s3 + s1·s5, Zw0 = s 2 / 1s3 + s5, Zw2 = s1·[s 3 / 1 + s3 + α0·N(s1, s3)]Zw3 = s 3 / 1 + s3 + α0·N(s1, s3).
-
Das Untersyndrom s1 wird an einen ersten m Bit breiten Eingang angelegt, der sowohl mit einem Eingang eines Quadrierers 51 als auch mit einem ersten Eingang eines Galois-Feld-Multiplizierers 56 verbunden sein kann. Der Ausgang des Quadrierers 51 ist sowohl mit einem ersten m Bit breiten Eingang eines Galois-Feld-Multiplizierers 52 als auch mit dem zweiten m Bit breiten Eingang des Galois-Feld-Multiplizierers 56 verbunden. Das Untersyndrom s3 kann an den zweiten m Bit breiten Eingang des Galois-Feld-Multiplizierers 52 angelegt werden. Der Ausgang dieses Galois-Feld-Multiplizierers, welcher den Wert s 2 / 1·s3 trägt, kann mit einem ersten m Bit breiten Eingang einer EXKLUSIV-ODER-Schaltung 53 verbunden werden, an deren zweiten auch m Bit breiten Eingang der Wert s5 des Untersyndroms s5 angelegt werden kann. Die EXKLUSIV-ODER-Schaltung 53 kann die komponentenweise EXKLUSIV-ODER-Operation der an ihre beiden Eingänge angelegten m-Bit-Operanden ausführen, so dass sie den Wert s 2 / 1 + s5 an ihrem Ausgang ausgeben kann. Dieser Ausgang kann mit einem ersten m Bit breiten Eingang eines Galois-Feld-Multiplizierers 54 und gleichzeitig mit dem Schaltungsausgang, der den Zwischenwert Zw1 tragen kann, verbunden werden.
-
Der Wert des Untersyndroms s1 kann an den zweiten m Bit breiten Eingang des Galois-Feld-Multiplizierers 54 angelegt werden. Der Ausgang dieses Galois-Feld-Multiplizierers 54, der den Wert s 2 / 1s3 + s1s5 trägt, kann mit einem ersten m Bit breiten Eingang einer EXKLUSIV-ODER-Schaltung 55 verbunden werden.
-
Der Ausgang des Galois-Feld-Multiplizierers 56, der den Wert s 3 / 1 trägt, kann mit einem ersten m Bit breiten Eingang einer EXKLUSIV-ODER-Schaltung 57 verbunden werden, an deren zweiten m Bit breiten Eingang der Wert s3 angelegt werden kann. Der m Bit breite Ausgang dieser EXKLUSIV-ODER-Schaltung 57, der den Wert s 3 / 1 + s3 trägt, kann mit einem Quadrierer 58 und mit der NICHT-ODER-Schaltung 59 verbunden werden. Abgesehen davon kann das höchstwertige Bit MSB der Ausgabe der EXKLUSIV-ODER-Schaltung 57 mit einem ersten Eingang eines EXKLUSIV-ODER-Gatters 510 verbunden werden, mit dessen zweiten Eingang der Ausgang der NICHT-ODER-Schaltung 59 verbunden werden kann. Die m – 1 niedrigstwertigen Bits des Ausgangs der EXKLUSIV-ODER-Schaltung 57 und des am Ausgang des EXKLUSIV-ODER-Gatters 510 ausgegebenen Bits können an einen ersten m Bit breiten Eingang eines Galois-Feld-Multiplizierers 510 angelegt werden, an dessen zweiten m Bit breiten Eingang der Wert des Untersyndroms s1 eingegeben werden kann und dessen Ausgang mit dem Schaltungsausgang verbunden werden kann, der den Zwischenwert Zw2 ausgeben kann.
-
Die Ausgangsleitungen des Ausgangs der EXKLUSIV-ODER-Schaltung 57, welche die m – 1 niedrigstwertigen Bits tragen, und der Ausgang des EXKLUSIV-ODER-Gatters 510 können mit dem Schaltungsausgang verbunden werden, welcher den Zwischenwert Zw3 ausgibt.
-
Der Ausgang des Quadrierers 58, der den Wert (s 3 / 1 + s3)2 = s 6 / 1 + s 2 / 3 trägt, kann mit dem m Bit breiten zweiten Eingang der EXKLUSIV-ODER-Schaltung 55 verbunden werden, deren Ausgang mit dem Schaltungsausgang verbunden werden kann, der den Zwischenwert Zw0 trägt.
-
Der Ausdruck s 3 / 1 + s3 + α0·N(s1, s3) kann unerwartet leicht auf der Grundlage des Ausdrucks s 3 / 1 + s3 unter Verwendung der NICHT-ODER-Schaltung 59 und des EXKLUSIV-ODER-Gatters 510 bestimmt werden, wie nachfolgend erklärt wird.
-
s 3 / 1 + s3 + α0·N(s1, s3) ist gleich
s 3 / 1 + s3 für
s 3 / 1 + s3 ≠ 0 und gleich
für
s 3 / 1 + s3 = 0.
-
Falls s 3 / 1 + s3 ≠ 0 ist, gibt die NICHT-ODER-Schaltung 59 den Wert ”0” an ihrem 1 Bit breiten Ausgang aus, welcher an den zweiten Eingang des EXKLUSIV-ODER-Gatters 510 angelegt werden kann. Das höchstwertige Bit MSB von s 3 / 1 + s3 kann in den ersten Eingang des EXKLUSIV-ODER-Gatters 510 eingegeben und am Ausgang dieses Gatters infolge der an den zweiten Eingang angelegten ”0” ungeändert ausgegeben werden. Das ungeänderte höchstwertige Bit und die m – 1 niedrigstwertigen Bits von s 3 / 1 + s3 bilden den Wert s 3 / 1 + s3, der sowohl an den ersten Eingang des Galois-Feld-Multiplizierers als auch an den Schaltungsausgang, der den Wert Zw3 ausgibt, angelegt werden kann.
-
Falls
s 3 / 1 + s3 = 0 gilt, gibt die NICHT-ODER-Schaltung
59 den Wert 1 aus, der an den zweiten Eingang des EXKLUSIV-ODER-Gatters
510 angelegt werden kann. Das höchstwertige Bit (MSB) von
s 3 / 1 + s3 ist ebenso wie die weiteren m – 1 Bits gleich 0. Am Ausgang des EXKLUSIV-ODER-Gatters
510 kann demgemäß der Wert ”1” ausgegeben werden, so dass an den m Eingangsleitungen des ersten Eingangs des Galois-Feld-Multiplizierers
511 ebenso wie am Schaltungsausgang, der den Wert Zw
3 trägt, der Wert
ausgegeben wird.
-
Es ist einem Fachmann offensichtlich, dass die Schaltung entsprechend geändert werden kann. Es ist beispielsweise möglich, das EXKLUSIV-ODER-Gatter 510 durch ein ODER-Gatter zu ersetzen, ohne die Funktion der Schaltung zu ändern. Es ist ebenso beispielsweise möglich, an Stelle des Galois-Feld-Multiplizierers 56 und des vorgeschalteten Quadrierers 51 eine Unterschaltung zu verwenden, welche die dritte Potenz s 3 / 1 direkt aus s1 bildet. Es ist ebenso möglich, beispielsweise an Stelle der gegebenen Signale teilweise invertierte Signale zu verwenden und die Schaltung mit verschiedenen Gatterbibliotheken zu implementieren.
-
Die Unterschaltungen SZw0, SZw1, SZw2 und SZw3 in 5 können teilweise gemeinsam implementiert werden, was durch die Tatsache gekennzeichnet ist, dass Schaltungsteile gleichzeitig von mehreren Unterschaltungen verwendet werden können, was in Bezug auf den Schaltungsaufwand oder die Schaltungskomplexität vorteilhaft sein kann.
-
Die Unterschaltung SZw0 kann hier die Schaltungsteile 51, 52, 53, 54, 55, 56, 57, 58 aufweisen.
-
Die Unterschaltung SZw1 kann die Schaltungsteile 51, 52, 53 aufweisen, die auch alle zur Implementation der Unterschaltung SZw0 verwendet werden.
-
Die Unterschaltung SZw2 kann die Unterschaltungen 51, 56, 57, 59, 510, 511 aufweisen, und die Unterschaltung SZw3 kann die Schaltungsteile 51, 56, 57, 59, 510 aufweisen, die auch alle zur Implementation der Unterschaltung SZw2 verwendet werden.
-
Für ein besseres Verständnis der Offenbarung sind nun Schaltungsteile, die zur Implementation der Offenbarung verwendet werden können, noch für eine konkrete Ausführungsform zu erklären.
-
In dieser Hinsicht wird gemäß einer Ausführungsform m = 5 ausgewählt, so dass das zugrunde liegende Galois-Feld GF(25) = GF(32) ist.
-
Die Elemente des Galois-Felds GF(2
5) = GF(32) sind in Tabelle 1 in ihren verschiedenen Formen dargestellt. Das modulare Polynom des betrachteten Galois-Felds ist das Polynom m(x) = 1 + x
2 + x
5.
Potenzdarstellung | Polynomdarstellung | Tupeldarstellung |
0 | 0 | (00000) |
α0 | 1 | (10000) |
α1 | x1 | (01000) |
α2 | x2 | (00100) |
α3 | x3 | (00010) |
α4 | x4 | (00001) |
α5 | 1 + x2 | (10100) |
α6 | x1 + x3 | (01010) |
α7 | x2 + x4 | (00101) |
α8 | 1 + x2 + x3 | (10110) |
α9 | x1 + x3 + x4 | (01011) |
α10 | 1 + x4 | (10001) |
α11 | 1 + x1 + x2 | (11100) |
α12 | x1 + x2 + x3 | (01110) |
α13 | x2 + x3 + x4 | (00111) |
α14 | 1 + x2 + x3 + x4 | (10111) |
α15 | 1 + x1 + x2 + x3 + x4 | (11111) |
α16 | 1 + x1 + x3 + x4 | (11011) |
α17 | 1 + x1 + x4 | (11001) |
α18 | 1 + x1 | (11000) |
α19 | x1 + x2 | (01100) |
α20 | x2 + x3 | (00110) |
α21 | x3 + x4 | (00011) |
α22 | 1 + x2 + x4 | (10101) |
α23 | 1 + x1 + x2 + x3 | (11110) |
α24 | x1 + x2 + x3 + x4 | (01111) |
α25 | 1 + x3 + x4 | (10011) |
α26 | 1 + x1 + x2 + x4 | (11101) |
α27 | 1 + x1 + x3 | (11010) |
α28 | x1 + x2 + x4 | (01101) |
α29 | 1 + x3 | (10010) |
α30 | x1 + x4 | (01001) |
Tabelle 1: Elemente von GF(2
5), die durch das primitive Polynom p(x) = 1 + x
2 + x
5 erzeugt werden
-
Die 31 Elemente des Galois-Felds sind in der ersten Spalte von Tabelle 1 in den Linien 2 bis 32 für i = 0, ..., 30 in ihrer Potenzdarstellung αi dargestellt, die auch als exponentielle Darstellung bezeichnet werden kann. Das Element 0 in der ersten Zeile der ersten Spalte hat keine Potenzdarstellung, und α ist hier ein primitives Element des Galois-Felds.
-
In der zweiten Spalte sind die 32 Elemente des Galois-Felds in ihrer Polynomdarstellung für das modulare Polynom m(x) = 1 + x2 + x5 angegeben. In der dritten Spalte ist die Tupel- oder Vektordarstellung angegeben. Die fünf Komponenten der Vektordarstellung entsprechen den fünf Koeffizienten der Potenzen x0, x1, x2, x3, x4 der Polynomdarstellung. Demgemäß entspricht die Vektordarstellung 00101 beispielsweise dem Polynom x2 + x4 in der 9. Zeile von Tabelle 1.
-
Die entsprechende Polynomdarstellung ergibt sich aus der Potenzdarstellung αj durch Bestimmen von [xj modulo(1 + x2 + x5)].
-
Demgemäß ist die Polynomdarstellung von α5 gleich 1 + x2, weil Folgendes gilt: x5 modulo(1 + x2 + x5) = 1 + x2
-
Demgemäß ist die Polynomdarstellung von α6 gleich x6 modulo(1 + x2 + x5) = x + x3 ist die Polynomdarstellung von α7 gleich x7 modulo(1 + x2 + x5) = x2 + x4 und ist die Polynomdarstellung von α8 gleich x8 modulo(1 + x2 + x5) = 1 + x2 + x3, in den Zeilen 7, 8, 9 und 10 von Tabelle 1 angegeben ist.
-
Die Multiplikation der beiden Elemente des Galois-Felds kann in der exponentiellen Darstellung oder in der Polynomdarstellung erfolgen.
-
Falls zwei Elemente des Galois-Felds GF(2m) = GF(25) in der Polynomdarstellung αi und αj angegeben sind, ist ihr Produkt αi·αj = αk mit k = i + j modulo(2m – 1) = i + j modulo (31).
-
Falls die zu multiplizierenden Elemente des Galois-Felds in ihrer Vektordarstellung oder in ihrer Polynomdarstellung existieren, kann ihre Multiplikation durch einen Galois-Feld-Multiplizierer ausgeführt werden. Wenngleich Galois-Feld-Multiplizierer Fachleuten bekannt sind, ist die Multiplikation von zwei Elementen in ihrer Polynomdarstellung für ein besseres Verständnis der Offenbarung für ein Anwendungsbeispiel zu beschreiben.
-
Zum Multiplizieren zweier Elemente miteinander werden die Elemente des Galois-Felds GF(2m) = GF(25) in ihrer Polynomdarstellung angegeben, die Polynome sind dann wie gewöhnlich direkt miteinander zu multiplizieren, und das Ergebnis ist modulo dem modularen Polynom zu bestimmen.
-
Falls beispielsweise die Polynome 1 + x2 + x3 und x + x3 gegeben sind, führt ihre direkte Multiplikation zu (1 + x2 + x3)(x + x3) = x + x4 + x5 + x6 und weil x5 = 1 + x2 modulo(1 + x2 + x5) und x6 = x + x3 modulo(1 + x2 + x5) ist, gilt x + x4 + x5 + x6 = x + x4 + 1 + x2 + x + x3 = 1 + x2 + x3 + x4 so dass für ihre Multiplikation im Galois-Feld Folgendes gilt: (1 + x2 + x3)·(x + x3) = 1 + x2 + x3 + x4.
-
Nun wird der Fall beschrieben, dass ein erstes Element a(x) mit α(x) = α4x4 + α3x3 + α2x2 + α1x + α0 und ein zweites Element b(x) mit b(x) = b4x4 + b3x3 + b2x2 + b1x + b0 multipliziert werden (im Galois-Feld GF(25) mit dem modularen Polynom m(x) = x5 + x2 + 1).
-
Durch direktes Multiplizieren der Polynome a(x) und b(x) ergibt sich ein Polynom achten Grades, und durch Bestimmen von x5, x6, x7 und x8 modulo(1 + x2 + x5) als 1 + x2, x + x3, x2 + x4 bzw. 1 + x2 + x3 kann direkt berechnet werden, dass sich ein Polynom vierten Grades ergibt und Folgendes gilt: c4x4 + c3x3 + c2x2 + c1x1 + c0 = a(x)·b(x)modm(x) =
= (a0b4 + a1b3 + a2b2 + a3b1 + a3b4 + a4b0 + a4b3 )x4
+ (a0b3 + a1b2 + a2b1 + a2b4 + a3b0 + a3b3 + a4b2 + a4b4)x3
+ (a0b2 + a1b1 + a1b4 + a2b0 + a2b3 + a3b2 + a3b4 + a4b1 + a4b3 + a4b4)x2
+ (a0b1 + a1b0 + a2b4 + a3b3 + a4b2)x1
+ (a0b0 + a1b4 + a2b3 + a3b2 + a4b1 + a4b4)
-
Diese Beziehung wird durch einen Galois-Feld-Multiplizierer mit fünf ersten binären Eingängen, fünf zweiten binären Eingängen und fünf binären Ausgängen implementiert, der nachfolgend zu beschreiben ist.
-
Die Binärwerte a0, a1, a2, a3, a4 werden an die ersten fünf Eingänge des Galois-Feld-Multiplizierers angelegt. Die Binärwerte b0, b1, b2, b3, b4 werden an die zweiten fünf Eingänge angelegt. Die sich ergebenden Werte c0, c1, c2, C3, c4 mit (a0b0 + a1b4 + a2b3 + a3b2 + a4b1 + a4b4) = c0, (32) (a0b1 + a1b0 + a2b4 + a3b3 + a4b2) = c1 (33) (a0b2 + a1b1 + a1b4 + a2b0 + a2b3 + a3b2 + a3b4 + a4b1 + a4b3 + a4b4) = c2 (34) (a0b3 + a1b2 + a2b1 + a2b4 + a3b0 + a3b3 + a4b2 + a4b4) = c3 (35) (a0b4 + a1b3 + a2b2 + a3b1 + a3b4 + a4b0 + a4b3) = c4 (36) werden an den fünf binären Ausgängen ausgegeben. Hier bezeichnet ”+” die Addition modulo 2 oder die EXKLUSIV-ODER-Operation.
-
Die Implementation der Gleichungen 32 bis 36 und demgemäß die Implementation eines Galois-Feld-Multiplizierers, beispielsweise durch UND- und EXKLUSIV-ODER-Gatter, stellt für einen Fachmann keine Schwierigkeit dar und ist demgemäß nicht weiter zu erklären. Herkömmlicherweise kann ein Fachmann ein Synthesewerkzeug verwenden.
-
Falls ein Element des Galois-Felds quadriert wird, kann es mit sich selbst multipliziert werden. Falls in der Polynomdarstellung ein Element als das Polynom a(x) = a0 + a1x1 + a2x2 + a3x3 + a4x4 gegeben ist, gilt Folgendes (a(x))2 modm(x)
[a0 + a1x2 + a2x4 + a3x6 + a4x8] mod(1 + x2 + x5) =
(a2)x4 + (a3 + a4)x3 + (a1 + a4)x2 + a3x1 + (a0 + a4).
-
Das Quadrieren eines Elements im Galois-Feld GF(25) kann demgemäß mit einem Quadrierer mit fünf binären Eingängen und fünf binären Ausgängen implementiert werden. An seinen fünf binären Eingängen können die Binärwerte a0, a1, a2, a3, a4 eingegeben werden, und an seinen 5 binären Ausgängen können die Binärwerte d0, d1, d2, d3, d4 ausgegeben werden, wobei Folgendes gilt a0 + a4 = d0 (37) a3 = d1 (38) a1 + a4 = d2 (39) a3 + a4 = d3 (40) a2 = d4 (41) und ”+” wiederum die Addition modulo 2 oder die EXKLUSIV-ODER-Operation bezeichnet.
-
Zum Implementieren eines Quadrierers im Galois-Feld GF(25) mit dem modularen Polynom m(x) = 1 + x2 + x5 sind dann nur lineare Gleichungen 37 bis 41 zu implementieren, was für einen Fachmann keine Schwierigkeit darstellt und nicht weiter zu beschreiben ist.
-
Es ist mit Bezug auf das Beispiel des Galois-Felds GF(25) wiederum zu beschreiben, wie die dritte Potenz eines in seiner Polynomdarstellung beschriebenen Elements bestimmt werden kann.
-
Falls die dritte Potenz (a(x))3 eines Polynoms a(x) = a0 + a1x1 + a2x2 + a3x3 + a4x4 modulo dem modularen Polynom m(x) = 1 + x2 + x5 bestimmt ist, gilt Folgendes (a(x))3modm(x) =
(a0a2 + a0a4 + a1a2 + a1a3 + a1a4 + a2a3 + a2a4 + a3 + a3a4)x4
+ (a0a4 + a1 + a2 + a2a3 + a2a4 + a3 + a4)x3
+ (a0a1 + a0a2 + a0a4 + a1a2 + a2a4 + a3a4 + a4)x2
+(a0a1 + a0a3 + a2 + a3 + a3a4 + a4)x1
+ (a0 + a0a4 + a1a2 + a1a3 + a2a3)
-
Die Bildung der dritten Potenz eines Elements im Galois-Feld GF(25) kann dementsprechend mit einem Dritte-Potenz-Generator implementiert werden, der fünf binäre Eingänge und fünf binäre Ausgänge aufweist. An seinen fünf binären Eingängen werden die Binärwerte a0, a1, a2, a3, a4 eingegeben, und an seinen fünf binären Ausgängen werden die fünf Binärwerte f0, f1, f2, f3, f4 ausgegeben, wobei f0 = a0 + a0a4 + a1a2 + a1a3 + a2a3 (42) f1 = a0a1 + a0a3 + a2 + a3 + a3a4 + a4 (43) f2 = a0a1 + a0a2 + a0a4 + a1a2 + a2a4 + a3a4 + a4 (44) f3 = a0a4 + a1 + a2 + a2a3 + a2a4 + a3 + a4 (45) f4 = a0a2 + a0a4 + a1a2 + a1a3 + a1a4 + a2a3 + a2a4 + a3 + a3a4 (46)
-
Zur Implementation eines Dritte-Potenz-Generators, hier im Galois-Feld GF(25) mit dem modularen Polynom m(x) = 1 + x2 + x5, sind nur die Gleichungen 42 bis 46 zu implementieren, was für einen Fachmann keine Schwierigkeit darstellt und was nachstehend nicht weiter zu beschreiben ist.
-
Alternativ wird ein Fachmann auch erwägen, einen Dritte-Potenz-Generator anhand eines Quadrierers und eines nachgeschalteten Galois-Feld-Multiplizierers zu implementieren.
-
Bei speziellen Implementationen der Offenbarung kann ein Inverter verwendet werden. Mit Bezug auf das Beispiel des Galois-Felds GF(2
5) zeigt Tabelle 2 schematisch, wie die Funktionsweise eines entsprechenden Inverters als eine Wertetabelle dargestellt werden kann.
αi | (αi)–1 |
Potenzdarstellung | Tupeldarstellung | Potenzdarstellung | Tupeldarstellung |
α0 | (10000) | α0 | (10000) |
α1 | (01000) | α30 | (01001) |
α2 | (00100) | α29 | (10010) |
α3 | (00010) | α28 | (01101) |
α4 | (00001) | α27 | (11010) |
α5 | (10100) | α26 | (11101) |
α6 | (01010) | α25 | (10011) |
α7 | (00101) | α24 | (01111) |
α8 | (10110) | α23 | (11110) |
α9 | (01011) | α22 | (10101) |
α10 | (10001) | α21 | (00011) |
α11 | (11100) | α20 | (00110) |
α12 | (01110) | α19 | (01100) |
α13 | (00111) | α18 | (11000) |
α14 | (10111) | α17 | (11001) |
α15 | (11111) | α16 | (11011) |
α16 | (11011) | α15 | (11111) |
α17 | (11001) | α14 | (10111) |
α18 | (11000) | α13 | (00111) |
α19 | (01100) | α12 | (01110) |
α20 | (00110) | α11 | (11100) |
α21 | (00011) | α10 | (10001) |
α22 | (10101) | α9 | (01011) |
α23 | (11110) | α8 | (10110) |
α24 | (01111) | α7 | (00101) |
α25 | (10011) | α6 | (01010) |
α26 | (11101) | α5 | (10100) |
α27 | (11010) | α4 | (00001) |
α28 | (01101) | α3 | (00010) |
α29 | (10010) | α2 | (00100) |
α30 | (01001) | α1 | (01000) |
Tabelle 2: Tabelle der Werte eines Inverters für GF(2
5)
-
In die erste Spalte von Tabelle 2 sind alle 25 – 1 Werte αi, i = 0, ..., 30 des Galois-Felds GF(25) in der exponentiellen Darstellung eingetragen. Das 0-Element 0 des Galois-Felds ist nicht eingetragen. Es hat kein inverses Element.
-
Die zweite Spalte enthält das in der ersten Spalte dargestellte Element in seiner Tupeldarstellung als ein binäres 5-Tupel. Diese Darstellung lässt sich einfach aus Tabelle 1 lesen. Die dritte Spalte von Tabelle 2 enthält das inverse Element des in der ersten Spalte dargestellten Elements in seiner exponentiellen Darstellung, und die vierte Spalte enthält das in der dritten Spalte dargestellte inverse Element in seiner Tupeldarstellung als binäres 5-Tupel. Diese Darstellung lässt sich mit Hilfe von Tabelle 1 einfach ablesen.
-
Falls das in der ersten Spalte dargestellte Element mit dem entsprechenden inversen Element der dritten Spalte multipliziert wird, ergibt sich α0 = 1. Für die Summe der Exponenten eines Elements und das zugeordnete inverse Element gilt, dass sie modulo 31 gleich 0 ist. Der Exponent des inversen Elements muss nur so bestimmt werden, dass die Summe des Exponenten des Elements der ersten Spalte und des Elements der dritten Spalte gleich 31 oder (in der ersten Zeile) gleich 0 ist.
-
Falls beispielsweise die 10. Zeile von Tabelle 2 betrachtet wird, ist das inverse Element α22 dem Element α9 zugeordnet, und für die entsprechenden Exponenten gilt 22 + 9 = 31. Falls beispielsweise die erste Zeile von Tabelle 2 betrachtet wird, ist das inverse Element α0 dem Element α0 zugeordnet, und für die entsprechenden Exponenten gilt Folgendes: 0 + 0 = 0. Falls der Eingangswert des Inverters ebenso wie der Ausgangswert in der jeweiligen Tupeldarstellung als ein 5-Tupel gegeben ist, wird eine Wertetabelle für die binäre Implementation des Inverters erhalten, indem die entsprechenden Tupel der vierten Spalte den 5-Tupeln der zweiten Spalte zugeordnet werden. Hier sind die 5-Tupel der zweiten Spalte die Eingangswerte und sind die Tupel der vierten Spalte die Ausgangswerte des Inverters. Demgemäß ist das Ausgangstupel 10101 beispielsweise dem Eingangstupel 01011 (in Zeile 10) zugeordnet.
-
Der Inverter kann dann einfach eine Implementation der auf diese Weise bestimmten Wertetabelle sein. Da die Implementation einer Wertetabelle als eine kombinatorische Schaltung für einen Fachmann nicht schwierig ist, ist diese Implementation hier nicht weiter zu beschreiben.
-
Für eine Ausführungsform ist nun die Implementation eines Konstantenmultiplizierers zu beschreiben, weil er in einer Unterschaltung SK
i 13i aus
2 verwendet werden kann. Als ein Beispiel wird der Konstantenmultiplizierer
22 für j, = 20 betrachtet, der den Zwischenwert Zw
2 mit
multipliziert. Weil 2·j
i = 2·20 = 40 = 9 modulo 31 gilt, wird der Zwischenwert Zw
2 mit α
9 multipliziert.
-
In der Polynomdarstellung kann der Zwischenwert Zw2 folgendermaßen dargestellt werden Zw2(x) = Zw 4 / 2x4 + Zw 3 / 2x3 + Zw 2 / 2x2 + Zw 1 / 2x + Zw 0 / 2.
-
In der Polynomdarstellung hat α9 nach Tabelle 1 die folgende Darstellung α9(x) = x4 + x3 + x, und das modulare Polynom m(x) des Galois-Felds GF(25) ist m(x) = x5 + x2 + 1.
-
Es ist zuerst möglich, die Polynome Zw2(x) und α9(x) vierten Grades direkt zu multiplizieren. Dann wird ein Polynom achten Grades erhalten. Falls dann die Potenzen x5, x6, x7, x8 durch 1 + x2, durch x + x3, durch x2 + x4 bzw. durch x3 + x5 = x3 + 1 + x2 ersetzt werden, während modulo m(x) = 1 + x2 + x5 beachtet wird, ergibt sich in der Polynomdarstellung g(x) = Zw2(x)·α9(x) Folgendes g(x) = g4x4 + g3x3 + g2x2 + g1x + g0 = Zw2(x)·α9(x)modm(x) =
(Zw 0 / 2 + Zw 1 / 2 + Zw 4 / 2)x4 + (Zw 0 / 2 + Zw 3 / 2 + Zw 4 / 2)x3 + (Zw 2 / 2 + Zw 3 / 2 + Zw 4 / 2)x2
+ (Zw 0 / 2 + Zw 2 / 2 + Zw 3 / 2)x1 + (Zw 1 / 2 + Zw 2 / 2) wie direkt berechnet werden kann.
-
Der entsprechende Konstantenmultiplizierer weist dann 5 binäre Eingänge auf, an denen die Koeffizienten Zw 0 / 2, Zw 1 / 2, Zw 2 / 2, Zw 3 / 2, Zw 4 / 2 des Polynoms Zw2(x) eingegeben werden, und er weist fünf binäre Ausgänge auf, an denen die Koeffizienten g0, g1, g2, g3, g4 des Polynoms g(x) ausgegeben werden. Diese Koeffizienten g0, g1, g2, g3, g4 können anhand der Koeffizienten des Polynoms Zw2(x) nach der folgenden Beziehung bestimmt werden: Zw 1 / 2 + Zw 2 / 2 = g0, Zw 0 / 2 + Zw 2 / 2 + Zw 3 / 2 = g1, Zw 2 / 2 + Zw 3 / 2 + Zw 4 / 2 = g2, Zw 0 / 2 + Zw 3 / 2 + Zw 4 / 2 = g3, Zw 0 / 2 + Zw 1 / 2 + Zw 4 / 2 = g4,
-
Fachleute werden die Beziehungen zwischen den Eingaben und den Ausgaben des beschriebenen Konstantenmultiplizierers beispielsweise durch EXKLUSIV-ODER-Operationen oder durch andere geeignete Operationen implementieren.
-
Für eine Ausführungsform ist nun die Funktionsweise der Fehlerkorrektur zu erklären. Wiederum wird das Galois-Feld GF(25) betrachtet. Als H-Matrizen sind beispielsweise die Matrizen H1 = [α0α1α3α2α4α5α6α7α8α9α10α11α12α13α14α15α16α17α18α19α20α21α22] H3 = [α0α3α9α6α12α15α18α21α24α27α30α2α5α8α11α14α17α20α23α26α29α1α4] H5 = [α0α5α15α10α20α25α30α4 9α14α19α24α29α3α8α13α18α23α28α2α7α12α17] zu verwenden.
-
Falls auch die vollständige Parität berücksichtigt wird, kann die Matrix HP mit HP = [11111111111111111111111] addiert werden. Gemäß der betrachteten Ausführungsform wird eine H-Matrix betrachtet, die nur aus Untermatrizen H1, H3 und H5 zusammengesetzt ist.
-
Durch Verwenden der Vektordarstellung der Elemente α
j nach Tabelle 1 ergibt sich für H
1, H
3 und H
5 Folgendes:
-
Weil die H-Matrix 23 Spalten aufweist, weist der Code die Länge n = 23 auf. Weil die H-Matrix 15 Zeilen aufweist, weist sie 15 Prüfbits und demgemäß 8 Datenbits auf.
-
Als ein Beispiel ist die Fehlerkorrektur für einen 1-Bit-Fehler im 12. Bit zu erklären. Das zugeordnete Fehlersyndrom wird dann durch den Fehlervektor e mit e = (00000000000100000000000) bestimmt.
-
Der Syndromgenerator Synd
11 gibt die Komponenten s
1, s
3, s
5 des Fehlersyndroms aus, wobei
H1·e = s1 = α11 = (11100)T, H3·e = s3 = α2 = (00100)T, H5·e = s5 = α24 = (01111)T gilt. Das Fehlersyndrom s = s
1, s
3, s
5 ist gleich der 12. Spalte der H-Matrix
-
Es wird der Fall betrachtet, in dem aus den Komponenten des Fehlersyndroms die Zwischenwerte entsprechend der Schaltungsanordnung aus 5 gebildet werden.
-
Die Unterschaltungen SZw
0, SZw
1, SZw
2, SZw
3 aus
5 sind so ausgelegt, dass die Unterschaltungen SZw
0, SZw
1, SZw
2 und SZw
3, abhängig von den Untersyndromen s
1, s
3, s
5, die Zwischenwerte
Zw0 = s 6 / 1 + s 2 / 3 + s 3 / 1·s3 + s1·s5, Zw1 = s 2 / 1s3 + s5, Zw2 = s1·[s 3 / 1 + s3 + α0·N(s1, s3)] Zw3 = s 3 / 1 + s3 + α0·N(s1, s3) bereitstellen, wobei
und
(r1, r2, r3, r4, r5) = s 3 / 1 + s3 = (α11)3 + α2 = α33 + α2 = α2 + α2 = 0 gelten. Demgemäß gilt Folgendes:
-
Die an den Schaltungsausgängen der Unterschaltung aus 5 ausgegebenen Zwischenwerte Zwi können dann für s1 = α11, s3 = α2, s5 = α24 folgendermaßen bestimmt werden: Zw0 = s 6 / 1 + s3 + s 3 / 1·s3 + s1·s5 =
(α11)6 + (α2)2 + (α11)3·α2 + α11· α24 =
α66 + α4 + α33·α2 + α2 + α11· α24 =
α66 + α4 + α35 + α35 =
α4 + α4 + α4 + α4 = 0 Zw1 = s2· s3 + s5 =
(α11)2· α2 + α24 = α22· α2 + α24 = α24 + α24 = 0 Zw2 = s1·[s 3 / 1 + s3 + α0· N(s1, s3)] =
α11·[(α11)3 + α2 + α0·N(s1, s3)]
α11·[α33 + α2 + α0·1] =
α11·[α33 + α2 + α0] =
α11·[α2 + α2 + α0] =
α11·α0 = α11 Zw3 = s 3 / 1 + s3 + α0·N(s1, s3) =
(α11)3 + α2 + α0·N(s1, s3) =
α33 + α2 + α0·1 =
α33 + α2 + α0 =
α2 + α2 + α0 = α0
-
Die Unterschaltung SKi nach 2 kann den 5 Bit breiten Wert z(12) = z 12 / 1, z 12 / 2, z 12 / 3, z 12 / 4, z 12 / 5 für i = 12 und demgemäß ji = 11 unter Verwendung der Konstantenmultiplizierer 21, 22, 23 und der EXKLUSIV-ODER-Schaltung 24 nach der folgenden Beziehung z(12) = z 12 / 1, z 12 / 2, z 12 / 3, z 12 / 4, z 12 / 5 =
= Zw3·α3·(11) + Zw2·α2·(11) + Zw1·α11 + Zw0. bereitstellen.
-
Weil Zw0 = 0, Zw1 = 0, Zw2 = α11, Zw3 = α0 ist, ergibt sich Folgendes: (z 12 / 1, z 12 / 2, z 12 / 3, z 12 / 4, z 12 / 5) = Zw3·α3·11 + Zw2·α2·11 + Zw1·a11 + Zw0 =
= α0·α33 + α11·α22 + 0·α11 + 0 =
= α33 + α33 = α2 + α2 = (0, 0, 0, 0, 0).
-
Die NICHT-ODER-Schaltung
25 kann den Wert Δv
12 bereitstellen, so dass der Fehler im 12. Bit korrigiert wird.
-
Es werden keine weiteren Bits korrigiert, weil sich z(i) ≠ 0 für alle i ≠ 12 und demgemäß Δvi = 0 ergibt.
-
Folglich ergibt sich beispielsweise für i = 7 und demgemäß j
i = 6 unter Verwendung der bereits bestimmten Werte Zw
0 = 0, Zw
1 = 0, Zw
2 = α
11, Zw
3 = α
0 durch eine direkte Berechnung Folgendes:
((z 7 / 1, z 7 / 2, z 7 / 3, z 7 / 4, z 7 / 5) = Zw3·α3·6 + Zw2·α2·6 + Zw1·α6 + Zw0 =
= α0·α18 + α11·α12 + 0·α6 + 0 =
= α18 + α23 = (11000)T + (11110)T = (00110)T = α20 ≠ 0
-
Es wurde demgemäß für das Beispiel des 7. Bits gezeigt, dass dieses Bit nicht korrigiert wird, wenn ein 1-Bit-Fehler in einem anderen Bit, hier im 12. Bit, existiert. Es kann analog für die anderen Bits für die betrachtete Ausführungsform, am einfachsten durch direkte Berechnung, gezeigt werden, dass auch keine Korrektur stattfindet.
-
Die Funktionsweise der Offenbarung ist nun für das Beispiel eines 2-Bit-Fehlers im 5. und 17. Bit zu erklären.
-
Das zugeordnete Fehlersyndrom wird dann durch den Fehlervektor e mit
e = (00001000000000001000000) und die H-Matrix
durch den Syndromgenerator Synd 11 zu
H1·e = s1 = α4 + α16 = (00001)T + (11011)T = (11010)T = α27 H3·e = s3 = α12 + α17 = (01110)T + (11001)T = (10111)T = α14 H5·e = s5 = α20 + α18 = (00110)T + (11000)T = (11110)T = α23 bestimmt.
-
Im Gegensatz zu einem 1-Bit-Fehler, bei dem
s 3 / 1 + s3 = 0 und N(s1, s3) = 1 ist, gelten hier
(r1, r2, r3, r4, r5) = s1 + s3 = (α27)3 + α14 = α81 + α14 = α19 + α14 = (01100)T + (10111)T = (1101)T = α16 ≠ 0 und
-
Anhand der Syndromwerte s1 = α27, s3 = α14, s5 = α23 werden die Zwischenwerte Zw0, Zw1, Zw2, Zw3 durch die Schaltungsanordnung aus 5 als Zw0 = s 1 / 6 +s 2 / 3 + s 3 / 1·s3 + s1·s5 =
(α27)6 + (α14)2 + (α27)3·α14 + α27·α23 =
α162 +α28 + α81·α14 + α27·α23 =
α162 + α28 + α95 + α50 = α7 + α28 + α2 + α19 =
(00101)T + (01101)T + (00100)T + (01100)T =
(00000)T = 0 Zw1 = s 2 / 1·s3 + s5 =
(α27)2 ·α14 + α23 =
α54·α14 + α23 =
α68 + α23 =
α6 + α23 =
(01010)T + (11110)T = (10100)T = α5 Zw2 = s1·[s1 + s3 + α0·N(s1, s3)]
α27·[(α27)3 + α14 + α0·N(s1, s3)]
α27·[α81 + α14 + α0·0] = α27·[α19 + α14] =
α27·α19 + α27·α14 =
α46 + α41 = α15 + α10 =
(11111)T + (10001)T = (01110)T = α12 Zw3 = s 3 / 1 + s3 + α0·N(s1, s3) =
(α27)3 + α14 + α0·N(s1, s3) =
α81 + α14 + α0·0 =
α19 + α14 =
(01100)T + (10111)T = (11011)T = α16 bestimmt.
-
Die Unterschaltung SK
i2 ist in
2 implementiert, so dass die EXKLUSIV-ODER-Schaltung
24 an ihrem hier m = 5 Bit breiten Ausgang den Wert z(i) ausgibt:
-
Für i = 5, j
i = 4, Zw
0 = 0, Zw
1 = α
5, Zw
2 = α
12, Zw
3 = α
16 gibt die EXKLUSIV-ODER-Schaltung
24 z(5) =(z 5 / 1, z 5 / 2, z 5 / 3, z 5 / 4, z 5 / 5) = Zw3·α3·4 + Zw2·α2·4 + Zw1·α4 + Zw0 =
α16·α12 + α12·α8 + α5·α4 + 0 =
α28 + α20 + α9 =
(01101)T + (00110)T + (01011)T = (00000)T = 0 aus, und die NICHT-ODER-Schaltung
25 bildet an ihrem Ausgang den Korrekturwert
-
Für i = 17, j
i = 16, Zw
0 = 0, Zw
1 = α
5, Zw
2 = α
12, Zw
3 = α
16 gibt die EXKLUSIV-ODER-Schaltung
24 z(17) = (z 17 / 1, z 17 / 2, z 17 / 3, z 17 / 4, z 17 / 5) = Zw3·α3·16 + Zw2·α2·16 + Zw1·α16 + Zw0 =
α16·α48 + α12·α32 + α5·α16 + 0 =
α64 + α44 + α21 =
α2 + α13 + α21 =
(00100)T + (00111)T + (00011)T = (00000)T = 0 aus, und die NICHT-ODER-Schaltung
25 bildet den Korrekturwert
-
Es werden keine weiteren Bits korrigiert. Demgemäß ergibt sich für i = 10, j
i = 9, Zw
0 = 0, Zw
1 = α
5, Zw
2 = α
12, Zw
3 = α
16 beispielsweise Folgendes:
z(10) = (z 10 / 1, z 10 / 2, z 10 / 3, z 10 / 4, z 10 / 5) = Zw3·α3·9 + Zw2·α2·9 + Zw1·α9 + Zw0 α16·α27 + α12·α18 + α5·α9 + 0 =
α43 + α30 + α14 =
α12 + α30 + α14 =
(01110)T +(01001)T + (10111)T =
(10000)T = α0 ≠ 0, und die NICHT-ODER-Schaltung
25 gibt den Korrekturwert
aus, so dass keine Korrektur des 10. Bits erfolgt.
-
Es sei noch erwähnt, dass, wenn s1 = s3 = s5 = 0 gilt, alle Korrektursignale Δvi, die von den Unterschaltungen SKi 13i, i = 1, ..., n ausgegeben werden, gleich 0 sind. Vorteilhafterweise ist es in dem Fall, dass das Fehlersyndrom s = (s1, s3, s5) keinen Fehler angibt, nicht erforderlich, die Fehlerkorrekturschaltung auszuschalten. In diesem Fall gilt für die Zwischenwerte Zw0 = 0, Zw1 = 0, Zw2 = 0, Zw3 = α0 und demgemäß z(i) = z(i)' = α0, und die NICHT-ODER-Schaltung 25 gibt an ihrem Ausgang den Korrekturwert Δvi = 0 aus, so dass in der Korrekturschaltung Vkn 3, 14 in keinem Bit eine Korrektur stattfindet.
-
Es ist in 6 dargestellt, wie gemäß einer Ausführungsform die in 1 dargestellte Schaltungsanordnung durch eine Fehlererkennungsschaltung SFE 62 ergänzt werden kann. Jene Unterschaltungen in 6, welche den in 1 gezeigten Unterschaltungen entsprechen, sind in 6 mit den gleichen Bezugszahlen wie in 1 markiert und werden hier nicht wieder beschrieben.
-
Im Gegensatz zum in 1 dargestellten Syndromgenerator Synd 11 weist der in 6 dargestellte Syndromgenerator Synd 611 einen zusätzlichen 1 Bit breiten Ausgang auf, der das Signal sP trägt, wobei sP = v'1 ⊕ v'2 ⊕ ... ⊕ v'n die Parität der Komponenten v'1, ..., v'n des Worts v' ist.
-
Die Fehlererkennungsschaltung SFE 62 weist einen ersten 1 Bit breiten Eingang, einen zweiten m Bit breiten Eingang, einen dritten m Bit breiten Eingang und einen vierten m Bit breiten Eingang zur Eingabe der vom Syndromgenerator Synd 611 ausgegebenen Untersyndrome sP, s5, s3 and s1 auf. Sie weist einen r Bit breiten Ausgang auf, an dem ein r Bit breites Fehlersignal E = E1, ..., Er ausgegeben wird, wobei r ≥ 1 gilt.
-
Es kann gemäß Ausführungsformen vorgesehen werden, dass r = 1 und E = E1 gelten und E1 einen Fehler für einen ersten Binärwert angibt und für einen zweiten Binärwert angibt, dass kein Fehler existiert.
-
Gemäß einer Ausführungsform kann vorgesehen werden, dass r = 5 und E = E1, E2, E3, E4, E5 gilt. Dann kann beispielsweise ein Binärwert E1 angeben, ob ein erkennbarer Fehler existiert. Ein Binärwert E2 kann angeben, ob ein 1-Bit-Fehler existiert. Ein Binärwert E3 kann angeben, ob ein 2-Bit-Fehler existiert. Ein Binärwert E4 kann angeben, ob ein 3-Bit-Fehler existiert. Ein Binärwert E5 kann angeben, ob ein 4-Bit-Fehler existiert. Es kann in der betrachteten Ausführungsform angenommen werden, dass nur 1-Bit, 2-Bit-, 3-Bit- und 4-Bit-Fehler auftreten.
-
Die Fehlererkennungsschaltung SFE kann so ausgelegt werden, dass sie die folgenden Beziehungen implementiert. E1 = 1, wenn (s1, s3) ≠ 0 E1 = 0, wenn (s1, s3) = 0
-
E1 = 1 gibt an, dass ein erkennbarer Fehler existiert, während E1 = 0 angibt, dass kein erkennbarer Fehler existiert. E2 = 1, wenn s 3 / 1 + s3 = 0 und sP = 1 E2 = 0 andernfalls
-
E2 = 1 gibt an, dass ein 1-Bit-Fehler existiert, während E2 = 0 angibt, dass kein 1-Bit-Fehler existiert. E3 = 1, wenn s1 ≠ 0 sP = 0 und s 3 / 1·s3 + s1·s5 + s3 + s 6 / 1 = 0 E3 = 0 andernfalls
-
E3 = 1 gibt an, dass ein 2-Bit-Fehler existiert, während E3 = 0 angibt, dass kein 2-Bit-Fehler existiert. E4 = 1, wenn s 3 / 1 + s3 ≠ 0 und sP = 1 E4 = 0 andernfalls
-
E4 = 1 gibt an, dass ein 3-Bit-Fehler existiert, während E3 = 0 angibt, dass kein 3-Bit-Fehler existiert. E5 = 1, wenn sP = 0 und s 3 / 1·s3 + s1·s5 + s 2 / 3 +s 6 / 1 ≠ 0 E5 = 0 andernfalls
-
E5 = 1 gibt an, dass ein 4-Bit-Fehler existiert, während E5 = 0 angibt, dass kein 4-Bit-Fehler existiert.
-
Überraschenderweise kann das für das Unterscheiden von 2- und 4-Bit-Fehlern verwendete Signal s 3 / 1·s3 + s1·s5 + s 2 / 3 + s 6 / 1 bereits am Ausgang der EXKLUSIV-ODER-Schaltung 55 und damit am Ausgang der Unterschaltung SZw0 in der Implementation aus 5 bereitgestellt werden und braucht nicht erneut erzeugt zu werden. Das Signal s 3 / 1 + s3 kann am Ausgang der EXKLUSIV-ODER-Schaltung 57 ausgegeben werden. Durch gemeinsames Implementieren der Fehlererkennungsschaltung SFE und der Unterschaltung SZw0 zum Bereitstellen des Zwischenwerts Zw0 kann sich eine besonders vorteilhafte Implementation ergeben. Eine solche Implementation ist in 7 dargestellt.
-
Die Schaltungsanordnung aus 7 weist die Unterschaltung SZw0, welche bereits in Zusammenhang mit 5 beschrieben wurde, und eine Unterschaltung SFE' 71 zur Fehlererkennung auf. Die Unterschaltungen der Unterschaltung SZw0 sind mit den gleichen Bezugszahlen wie in 5 markiert und sind demgemäß nicht wieder zu beschreiben.
-
Die Unterschaltung SZw0 in 7 ist gegenüber der Unterschaltung SZw0 in 5 unverändert.
-
Die Unterschaltung SFE' hat einen ersten 1 Bit breiten Eingang, der das Untersyndrom sP trägt, einen zweiten m Bit breiten Eingang, der das Untersyndrom s1 trägt, einen dritten m Bit breiten Eingang, der das Syndrom s3 trägt, und einen vierten m Bit breiten Eingang, der mit dem m Bit breiten Ausgang der EXKLUSIV-ODER-Schaltung 57 verbunden ist und den Wert S 3 / 1 + s3 trägt, und einen fünften m Bit breiten Eingang, der den Wert Zw0 = s 3 / 1·s3 + s1·s5 + s / 23 + s 6 / 1 trägt. Gemäß der beschriebenen Ausführungsform weist die Unterschaltung SFE' 71 fünf binäre Ausgänge auf.
-
Die Unterschaltung zur Fehlererkennung SFE 62 und die Unterschaltung SZw0 120 in 6 sind in 7 gemeinsam implementiert.
-
Die Unterschaltung SZw0 besteht aus den Unterschaltungen 51, 52, 53, 54, 55, 56, 57, 58, und die Unterschaltung SFE besteht aus den Unterschaltungen 51, 52, 53, 54, 55, 56, 57, 58 und 71.
-
Eine mögliche Implementation der Unterschaltung SFE' 71 aus 7 ist in 8 dargestellt. Der erste Eingang, der das 1 Bit breite Untersyndrom sP trägt, kann mit einem ersten Eingang eines UND-Gatters 86 verbunden werden, das zwei Eingänge und einen Ausgang aufweist, negiert mit einem ersten Eingang eines UND-Gatters 87 verbunden werden, das zwei Eingänge und einen Ausgang aufweist, mit einem ersten Eingang eines UND-Gatters 88 verbunden werden, das zwei Eingänge und einen Ausgang aufweist, und negiert mit einem ersten Eingang eines UND-Gatters 89 verbunden werden, das zwei Eingänge und einen Ausgang aufweist.
-
Der zweite m Bit breite Eingang, der das Untersyndrom s1 trägt, kann mit m Eingängen einer ODER-Schaltung 81 mit m Eingängen und einem Ausgang verbunden werden, welche die ODER-Operation der Komponenten des Untersyndroms s1 an ihrem 1 Bit breiten Ausgang ausgibt.
-
Der dritte m Bit breite Eingang, der das Untersyndrom s3 trägt, kann mit m Eingängen einer ODER-Schaltung 82 mit m Eingängen und einem Ausgang verbunden werden, wobei die Schaltung die ODER-Operation der Komponenten des Untersyndroms s3 an ihrem 1 Bit breiten Ausgang ausgibt.
-
Der vierte m Bit breite Eingang, der das Signal s 3 / 1 + s3 trägt, das von der EXKLUSIV-ODER-Schaltung 57 in 7 ausgegeben wird, kann mit m Eingängen einer ODER-Schaltung 84 mit m Eingängen und einem Ausgang verbunden werden, wobei die Schaltung die ODER-Operation der Komponenten des Signals s 3 / 1 + s3 an ihrem 1 Bit breiten Ausgang ausgibt.
-
Der fünfte m Bit breite Eingang, der das Signal Zw0 = s 3 / 1·s3 + s1·s5 + s 2 / 3 + s 6 / 1 trägt, das von der EXKLUSIV-ODER-Schaltung 55 in 7 ausgegeben wird, kann mit m Eingängen einer ODER-Schaltung 85 mit m Eingängen und einem Ausgang verbunden werden, wobei die Schaltung die ODER-Kombination der Komponenten des Signals s 3 / 1·s3 + s1·s5 + s 2 / 3 + s 6 / 1s 3 / 1 + s3 an ihrem 1 Bit breiten Ausgang ausgibt.
-
Der 1 Bit breite Ausgang der ODER-Schaltung 81 kann sowohl mit einem ersten Eingang eines ODER-Gatters 83 mit zwei Eingängen und einem Ausgang als auch mit einem ersten Eingang eines UND-Gatters 810 mit zwei Eingängen und einem Ausgang verbunden werden, wobei der zweite Eingang des Gatters 810 mit dem Ausgang des UND-Gatters 87 verbunden werden kann und wobei die Komponente E3 des Fehlersignals E am Ausgang des Gatters 810 ausgegeben werden kann.
-
Der Ausgang der ODER-Schaltung 82 kann mit dem zweiten Eingang des ODER-Gatters 83 verbunden werden, dessen Ausgang die Komponenten E1 des Fehlersignals E ausgeben kann.
-
Der Ausgang der ODER-Schaltung 84 kann nicht invertiert mit dem zweiten Eingang des UND-Gatters 88 und invertiert mit dem UND-Gatter 86 verbunden werden. Der Ausgang des UND-Gatters 86 kann die Komponente E2 des Fehlersignals E tragen.
-
Das UND-Gatter 88 kann die Komponente E4 des Fehlersignals E ausgeben. Der Ausgang der ODER-Schaltung 85 kann nicht invertiert mit dem zweiten Eingang des UND-Gatters 89 und invertiert mit dem zweiten Eingang des UND-Gatters 810 verbunden werden. Das UND-Gatter 89 kann die Komponente E5 des Fehlersignals E ausgeben. Der Ausgang des UND-Gatters 810 kann die Komponente E3 des Fehlersignals E tragen.
-
Wenngleich einige Aspekte in Zusammenhang mit einer Vorrichtung beschrieben worden sind, ist es klar, dass diese Aspekte auch eine Beschreibung des entsprechenden Verfahrens darstellen, wobei ein Block oder eine Vorrichtung einem Verfahrensschritt oder einem Merkmal eines Verfahrensschritts entspricht. Analog stellen in Zusammenhang mit einem Verfahrensschritt beschriebene Aspekte auch eine Beschreibung eines entsprechenden Blocks oder Elements oder Merkmals einer entsprechenden Vorrichtung dar. Einige oder alle der Verfahrensschritte können durch eine Hardwarevorrichtung (oder unter Verwendung von dieser), beispielsweise in der Art eines Mikroprozessors, eines programmierbaren Computers oder einer elektronischen Schaltung, ausgeführt werden. Gemäß einigen Ausführungsformen können einer oder mehrere der wichtigsten Verfahrensschritte durch eine solche Vorrichtung ausgeführt werden.
-
Abhängig von bestimmten Implementationsanforderungen können Ausführungsformen der Offenbarung in Hardware oder in Software implementiert werden. Die Implementation kann unter Verwendung eines digitalen Speichermediums, beispielsweise einer Diskette, einer DVD, einer Blu-ray-Scheibe, einer CD, eines ROMs, eines PROMs, eines EPROMs, eines EEPROMs oder eines FLASH-Speichers mit darauf gespeicherten elektronisch lesbaren Steuersignalen, die mit einem programmierbaren Computersystem zusammenarbeiten (oder damit zusammenarbeiten können), ausgeführt werden, so dass das jeweilige Verfahren ausgeführt werden kann. Daher kann das digitale Speichermedium computerlesbar sein.
-
Einige Ausführungsformen gemäß der Offenbarung weisen einen Datenträger mit elektronisch lesbaren Steuersignalen auf, die mit einem programmierbaren Computersystem zusammenarbeiten können, so dass eines der hier beschriebenen Verfahren ausgeführt wird.
-
Im Allgemeinen können Ausführungsformen der vorliegenden Offenbarung als ein Computerprogrammprodukt mit einem Programmcode implementiert werden, wobei der Programmcode eines der Verfahren ausführen kann, wenn das Computerprogrammprodukt auf einem Computer läuft. Der Programmcode kann beispielsweise auf einem nicht flüchtigen maschinenlesbaren Träger gespeichert sein.
-
Andere Ausführungsformen umfassen das Computerprogramm zum Ausführen eines der hier beschriebenen Verfahren, das auf einem maschinenlesbaren Träger gespeichert ist.
-
Mit anderen Worten ist eine Ausführungsform des erfindungsgemäßen Verfahrens daher ein Computerprogramm mit einem Programmcode zum Ausführen eines der hier beschriebenen Verfahren, wenn das Computerprogramm auf einem Computer ausgeführt wird.
-
Eine weitere Ausführungsform der erfindungsgemäßen Verfahren ist daher ein Datenträger (oder ein digitales Speichermedium oder ein computerlesbares Medium), auf dem das Computerprogramm zum Ausführen von einem der hier beschriebenen Verfahren aufgezeichnet ist. Der Datenträger, das digitale Speichermedium oder das aufgezeichnete Medium sind typischerweise gegenständlich und/oder nicht flüchtig.
-
Eine weitere Ausführungsform des erfindungsgemäßen Verfahrens ist daher ein Datenstrom oder eine Signalsequenz, welcher oder welche das Computerprogramm zum Ausführen eines der hier beschriebenen Verfahren darstellt. Der Datenstrom oder die Signalsequenz kann beispielsweise dafür ausgelegt sein, über eine Datenkommunikationsverbindung, beispielsweise über das Internet, übertragen zu werden.
-
Eine weitere Ausführungsform umfasst eine Verarbeitungseinrichtung, beispielsweise einen Computer oder eine programmierbare Logikvorrichtung, die dafür ausgelegt oder eingerichtet ist, eines der hier beschriebenen Verfahren auszuführen.
-
Eine weitere Ausführungsform umfasst einen Computer, auf dem das Computerprogramm zum Ausführen eines der hier beschriebenen Verfahren installiert ist.
-
Eine weitere Ausführungsform gemäß der Offenbarung umfasst eine Vorrichtung oder ein System, die oder das dafür ausgelegt ist (beispielsweise elektronisch oder optisch), ein Computerprogramm zum Ausführen eines der hier beschriebenen Verfahren zu einem Empfänger zu übertragen. Der Empfänger kann beispielsweise ein Computer, eine mobile Vorrichtung, eine Speichervorrichtung oder dergleichen sein. Die Vorrichtung oder das System kann beispielsweise einen Dateiserver zum Übertragen des Computerprogramms zum Empfänger aufweisen.
-
Gemäß einigen Ausführungsformen kann eine programmierbare Logikvorrichtung (beispielsweise ein feldprogrammierbares Gate-Array) verwendet werden, um einige oder alle Funktionalitäten der hier beschriebenen Verfahren auszuführen. Gemäß einigen Ausführungsformen kann ein feldprogrammierbares Gate-Array mit einem Mikroprozessor zusammenarbeiten, um eines der hier beschriebenen Verfahren auszuführen. Im Allgemeinen werden die Verfahren vorzugsweise durch eine Hardwarevorrichtung ausgeführt.
-
Die vorstehend beschriebenen Ausführungsformen sollen lediglich die Grundgedanken der vorliegenden Offenbarung erläutern. Es sei bemerkt, dass Modifikationen und Abänderungen der hier beschriebenen Anordnungen und Einzelheiten für andere Fachleute offensichtlich sein werden. Es ist daher vorgesehen, dass eine Einschränkung nur durch den Schutzumfang der anliegenden Patentansprüche und nicht durch die zur Beschreibung und Erklärung der hier vorgestellten Ausführungsformen vorgestellten spezifischen Einzelheiten gegeben ist.
-
Wenngleich sich jeder Anspruch nur auf einen einzigen Anspruch zurück bezieht, deckt die Offenbarung auch jede erdenkliche Anspruchskombination ab.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- Okano, H. und Imai, H., ”A construction method of high speed decoders using ROM's for Bose-Chadhuri-Hocquenghem and Reed Solomon Codes”, IEEE Trans. Corp. C36 (10) 1165–1175, 1987 [0003]
- Lin, S., Costello, D. ”Error Control Coding” Prentice Hall, 1983 beschrieben ist, wobei insbesondere auf die Seiten 143–160 [0018]
- Okano, H. und Imai, H., „A construction method of high speed decoders using ROM's for Bose-Chadhuri-Hocquenghem and Reed Solomon Codes”, IEEE Trans. Corp. C36 (10) 1165–1175, 1987 [0018]
- Okano, H. und Imai, H., ”A construction method of high speed decoders using ROM's for Bose-Chadhuri-Hocquenghem and Reed Solomon Codes”, IEEE Trans. Comp. C36 (10) 1165–1175, 1987 [0050]
- Okano, H. und Imai, H., ”A construction method of high speed decoders using ROM's for Bose-Chadhuri-Hocquenghem and Reed Solomon Codes”, IEEE Trans. Corp. C36 (10) 1165–1175, 1987 [0052]
- Okano, H. und Imai, H., ”A construction method of high speed decoders using ROM's for Bose-Chadhuri-Hocquenghem and Reed Solomon Codes”, IEEE Trans. Corp. C36 (10) 1165–1175, 1987 [0053]
- Okano, H. und Imai, H., ”A construction method of high speed decoders using ROM's for Bose-Chadhuri-Hocquenghem and Reed Solomon Codes”, IEEE Trans. Corp. C36 (10) 1165–1175, 1987 [0054]