DE102021123727B4 - Bytefehlerkorrektur - Google Patents

Bytefehlerkorrektur Download PDF

Info

Publication number
DE102021123727B4
DE102021123727B4 DE102021123727.0A DE102021123727A DE102021123727B4 DE 102021123727 B4 DE102021123727 B4 DE 102021123727B4 DE 102021123727 A DE102021123727 A DE 102021123727A DE 102021123727 B4 DE102021123727 B4 DE 102021123727B4
Authority
DE
Germany
Prior art keywords
byte
error
byte error
value
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102021123727.0A
Other languages
English (en)
Other versions
DE102021123727A1 (de
Inventor
Thomas Kern
Thomas Rabenalt
Michael Gössel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102021123727.0A priority Critical patent/DE102021123727B4/de
Priority to US17/944,510 priority patent/US20230091457A1/en
Publication of DE102021123727A1 publication Critical patent/DE102021123727A1/de
Application granted granted Critical
Publication of DE102021123727B4 publication Critical patent/DE102021123727B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)

Abstract

Schaltungsanordnung zur Korrektur mindestens eines Bytefehlers in einer Binärfolge, die mehrere Bytes umfasst, wobei die Binärfolge im fehlerfreien Fall ein Codewort eines Fehlercodes ist, wobei die Schaltungsanordnung eingerichtet ist- zur Bestimmung mindestens eines Bytefehlerpositionssignals, das angibt, ob ein Byte der Binärfolge fehlerhaft ist oder nicht,- zur Bestimmung mindestens eines Bytefehlerkorrekturwerts anhand dessen eine mittels des Bytefehlerpositionssignals identifizierte fehlerhafte Byteposition korrigierbar ist,- wobei der mindestens eine Bytefehlerkorrekturwert bestimmt wird, indem für jede von mindestens zwei Bytepositionen ein erster Wert und ein zweiter Wert in Abhängigkeit von einem Koeffizienten des Lokatorpolynoms bestimmt werden,- zur Korrektur des mindestens einen Bytefehlers anhand des mindestens einen Bytefehlerkorrekturwerts.

Description

  • Es ist bekannt, Fehler in Daten, die in Form von Bytes vorliegen, byteweise zu erkennen und byteweise zu korrigieren. Ein Byte kann dabei mindestens zwei Bit umf assen. Mindestens ein Fehler in mindestens einem Bit eines Bytes wird als ein Bytefehler bezeichnet. Ist mindestens ein Bit eines Bytes fehlerhaft, liegt ein Bytefehler vor. Ist nur mindestens ein Bit eines einzelnen Bytes fehlerhaft, entspricht dies einem 1-Bytefehler.
  • Die Korrektur von 1-Bytefehlern ist beispielsweise in [Bossen, D.: b-Adjacent Error Correction, IBM J. Res. Dev., July 1970, Seiten 402 bis 408] beschrieben.
  • Aus DE 10 2017 125 617 A1 ist eine Lösung bekannt zur Korrektur mindestens eines Bytefehlers in einer Binärfolge, die mehrere Bytes umfasst. Hierbei wird ein Bytefehlerpositionssignal bestimmt, das angibt, ob ein Byte fehlerhaft ist und es wird ein Bytefehlerkorrekturwert bestimmt anhand des Bytefehlerpositionssignals.
  • Sind von Bits zwei unterschiedlichen Bytes fehlerhaft, entspricht dies einem 2-Bytefehler. Demnach gilt, dass ein k-Bytefehler vorliegt, wenn Bits in k Bytes fehlerhaft sind (d.h. mindestens ein Bit in jedem der k Bytes einen Fehler aufweist).
  • Es ist eine generelle Motivation, die Fehlerkorrektur eventuell fehlerhafter Bytes schnell durchzuführen. Dies gilt beispielsweise wenn in Bytes vorliegende Daten parallel aus einem Speicher ausgelesen und parallel bereitgestellt werden sollen. In so einem Szenario kann es vorteilhaft sein, auch die Fehlerkorrektur parallel durchzuführen.
  • Parallel bedeutet hierbei insbesondere, dass zumindest teilweise zeitgleich (beispielsweise auch zumindest teilweise zeitlich überlappend) eine Fehlerkorrektur oder ein Teil der Fehlerkorrektur für mindestens zwei Bytes durchgeführt wird.
  • Die Bytefehler-Korrektur kann beispielsweise mittels eines Reed-Solomon-Codes erfolgen.
  • In OKANO [Okano, H., Imai, H.: A Construction Method of High-Speed Decoders Using ROM's for Bose-Chaudhuri-Hocquengiem and Reed-Solomon Codes, IEEE TRANSACTIONS ON COMPUTERS, VOL. C-36, NO. 10, OCTOBER 1987, Seiten 1165 bis 1171] ist eine Schaltungsanordnung zur Korrektur von 2-Bytefehlern unter Verwendung eines Reed-Solomon-Codes beschrieben. Hierbei ist es von Nachteil, dass die in OKANO beschriebene Korrektur von 2-Bytefehlern verhältnismäßig langsam ist.
  • Die Aufgabe der Erfindung besteht darin, Nachteile bekannter Lösungen zur Korrektur von Bytefehlern zu vermeiden und insbesondere eine möglichst schnelle Fehlerkorrektur von Fehlern in mehreren Bytes zu ermöglichen.
  • Insbesondere ist es eine Aufgabe, eine Fehlerkorrektur von m-Bytefehlern mit m ≥ 2 für Speicherzellen, z.B. MRAM-Speicherzellen, RRAM-Speicherzellen, etc. bereitzustellen und so die Zuverlässigkeit von aus den Speicherzellen ausgelesenen Daten zu erhöhen.
  • Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind insbesondere den abhängigen Ansprüchen entnehmbar.
  • Es wird eine Schaltungsanordnung vorgeschlagen zur Korrektur mindestens eines Bytefehlers in einer Binärfolge, die mehrere Bytes umfasst, wobei die Binärfolge im fehlerfreien Fall ein Codewort eines Fehlercodes ist, wobei die Schaltungsanordnung eingerichtet ist
    • - zur Bestimmung mindestens eines Bytefehlerpositionssignals, das angibt, ob ein Byte der Binärfolge fehlerhaft ist oder nicht,
    • - zur Bestimmung mindestens eines Bytefehlerkorrekturwerts anhand dessen eine mittels des Bytefehlerpositionssignals identifizierte fehlerhafte Byteposition korrigierbar ist,
    • - wobei der mindestens eine Bytefehlerkorrekturwert bestimmt wird, indem für jede von mindestens zwei Bytepositionen ein erster Wert und ein zweiter Wert in Abhängigkeit von einem Koeffizienten des Lokatorpolynoms bestimmt werden,
    • - zur Korrektur des mindestens einen Bytefehlers anhand des mindestens einen Bytefehlerkorrekturwerts.
  • Hier sei angemerkt, dass je ein Bytefehlerpositionssignal pro Byte der Binärfolge bestimmt werden kann. Somit ist mit jedem Byte der Binärfolge ein Bytefehlerpositionssignal verknüpft bzw. assoziiert. Der Wert des Bytefehlerpositionssignals zeigt an, ob das mit dem Bytefehlerpositionssignal verknüpfte Byte einen Fehler aufweist oder nicht.
  • Bei dem Fehlercode handelt es sich beispielsweise um einen fehlerkorrigierenden und/oder fehlererkennenden Code. Beispielsweise kann als Fehlercode ein Reed-Solomon-Code verwendet werden.
  • Es ist eine Weiterbildung, dass mindestens einer der Bytefehlerkorrekturwerte für mindestens ein korrektes Byte bestimmt wird.
  • Es ist eine Weiterbildung, dass ein 2-Bytefehler korrigiert wird.
  • Es ist eine Weiterbildung, dass der Fehlercode ein Reed-Solomon-Code in einem Galoisfeld GF(2m) ist, der mindestens 2-Bytefehler korrigieren kann.
  • Es ist eine Weiterbildung, dass der erste Wert mit einer der Byteposition zugeordneten Konstanten multipliziert wird und mit dem zweiten Wert komponentenweise XOR-verknüpft wird, wobei die Multiplikation mit der Konstanten eine Multiplikation in dem Galoisfeld GF(2m) ist.
  • Es ist eine Weiterbildung, dass das Lokatorpolynom ein Polynom zweiten Grades ist und der Koeffizient des Lokatorpolynoms ein Koeffizient des linearen Glieds des Lokatorpolynoms ist.
  • Es ist eine Weiterbildung, dass der Koeffizient des Lokatorpolynoms als eine komponentenweise XOR-Verknüpfung von αi und αj bestimmbar ist, wenn das Bytefehlerpositionssignal für zu korrigierende Positionen i und j einen ersten Wert annimmt und für alle anderen zu korrigierenden Positionen einen zweiten Wert annimmt, der sich von dem ersten Wert unterscheidet und αi und αj durch zwei Nullstellen des Lokatorpolynoms bestimmt sind.
  • Es ist ferner eine Weiterbildung, dass
    • - die Bytes m Bits aufweisen,
    • - vier m-Bit breite Fehlersyndromkomponenten s1, s2, s3 und s4 bestimmbar sind,
    • - wobei die ersten und die zweiten Werte in Abhängigkeit von dem Wert des einen Koeffizienten des Lokatorpolynoms und in Abhängigkeit von zwei der vier Syndromkomponenten bestimmt sind.
  • Es ist eine Weiterbildung, dass die vier Fehlersyndromkomponenten so bestimmt sind,
    • - dass im Falle eines 2-Bytefehlers mit einem Bytefehlerwert a = a(i) an einer i-ten Byteposition und einem Bytefehlerwert b = a(j) an einer j-ten Byteposition gilt s 1 = a + b ,
      Figure DE102021123727B4_0001
      s 2 = α i a + α j b ,
      Figure DE102021123727B4_0002
      s 3 = α 2 i a + α 2 j b ,
      Figure DE102021123727B4_0003
      s 4 = α 3 i a + α 3 j b ,
      Figure DE102021123727B4_0004
    • - αi, αj Elemente des Galoisfeldes GF(2m) sind, die den Bytepositionen i und j entsprechen und
    • - a = a(i) und b = a(j) jeweils m Bit umfassen.
  • Es ist eine Weiterbildung, dass die vier Fehlersyndromkomponenten so bestimmt sind,
    • - dass im Falle eines 2-Bytefehlers mit einem Bytefehlerwert a = a(i) an einer i-ten Byteposition und einem Bytefehlerwert b = a(j) an einer j-ten Byteposition gilt s 1 = α i a + α j b ,
      Figure DE102021123727B4_0005
      s 2 = α 2 i a + α 2 j b ,
      Figure DE102021123727B4_0006
      s 3 = α 3 i a + α 3 j b ,
      Figure DE102021123727B4_0007
      s 4 = α 4 i a + α 4 j b ,
      Figure DE102021123727B4_0008
    • - αi, αj Elemente des Galoisfeldes GF(2m) sind, die den Bytepositionen i und j entsprechen und
    • - a = a(i) und b = a(j) jeweils m Bit umfassen.
  • Es ist eine Weiterbildung, dass das Lokatorpolynom ein Polynom zweiten Grades ist gemäß L 2 ( x ) = x 2 + σ 1 x + σ 2
    Figure DE102021123727B4_0009
    mit Koeffizienten σ1 und σ2 ist, wobei der mindestens eine Bytefehlerkorrekturwert in Abhängigkeit von dem Koeffizienten σ1 bestimmt wird.
  • Alternativ kann das Lokatorpolynom die folgenden Darstellung aufweisen: L 2 ' ( x ) = 1 + σ 1 x + σ 2 x 2 .
    Figure DE102021123727B4_0010
  • Die hier gemachten Ausführungen gelten dann entsprechend.
  • Es ist eine Weiterbildung, dass der erste Wert bestimmt ist durch s 1 σ 1
    Figure DE102021123727B4_0011
    und der zweite Wert bestimmt ist durch s 2 σ 1 + s 1 .
    Figure DE102021123727B4_0012
  • Es ist eine Weiterbildung, dass der mindestens eine Bytefehlerkorrekturwert a(i) für eine Byteposition i in Abhängigkeit von dem Koeffizienten σ1 des Lokatorpolynoms bestimmt wird gemäß a ( i ) = s 2 σ 1 + s 1 + s 1 σ 1 α i ,
    Figure DE102021123727B4_0013
    wobei αi ein Element des Galoisfeldes GF(2m) ist, das der i-ten Byteposition zugeordnet ist.
  • Es ist eine Weiterbildung, dass der mindestens eine Bytefehlerkorrekturwert a(i) für eine Byteposition i in Abhängigkeit von dem Koeffizienten σ1 des Lokatorpolynoms bestimmt wird gemäß a ( i ) = ( s 2 σ 1 + s 1 ) α i + s 1 σ 1 ,
    Figure DE102021123727B4_0014
    wobei αi ein Element des Galoisfeldes GF(2m) ist, das der i-ten Byteposition zugeordnet ist.
  • Es ist eine Weiterbildung, dass der mindestens eine Bytefehlerkorrekturwert a(i) so bestimmt ist, dass gilt s 2 σ 1 = s 2 ( s 1 s 3 + s 2 2 s 1 s 4 + s 2 s 3 )
    Figure DE102021123727B4_0015
    und s 1 σ 1 = s 1 ( s 1 s 3 + s 2 2 s 1 s 4 + s 2 s 3 ) .
    Figure DE102021123727B4_0016
  • Es ist eine Weiterbildung, dass das mindestens eine Bytefehlerpositionssignal und/ oder mindestens ein Bytefehlerkorrekturwert parallel bestimmt werden.
  • Insbesondere können mindestens zwei Bytefehlerkorrekturwerte parallel bestimmt werden. Parallel bedeutet in diesem Zusammenhang insbesondere, dass Werte zumindest teilweise parallel zueinander, also beispielsweise zeitgleich oder zumindest teilweise zeitgleich, bestimmt werden.
  • Es ist eine Weiterbildung, dass der Fehlercode ein t-Bytefehler-korrigierender Code ist, wobei mindestens (t + 1) Bytefehlerpositionssignale parallel bestimmt werden.
  • Es ist eine Weiterbildung, dass der Fehlercode ein t-Bytefehler-korrigierender Code ist, wobei mindestens (t + 1) Bytefehlerkorrekturwerte parallel bestimmt werden.
  • Es ist eine Weiterbildung, dass die Schaltungsanordnung eingerichtet ist, einen der Bytefehler zu korrigieren, indem für das fehlerhafte Byte das Bytefehlerpositionssignal mit dem Bytefehlerkorrekturwert verknüpft wird.
  • Weiterhin wird zur Lösung der Aufgabe ein Verfahren vorgeschlagen zur Korrektur mindestens eines Bytefehlers in einer Binärfolge, die mehrere Bytes umfasst, wobei die Binärfolge im fehlerfreien Fall ein Codewort eines Fehlercodes ist, umfassend die Schritte:
    • - Bestimmung mindestens eines Bytefehlerpositionssignals, das angibt, ob ein Byte der Binärfolge fehlerhaft ist oder nicht,
    • - Bestimmung mindestens eines Bytefehlerkorrekturwerts anhand dessen eine mittels des Bytefehlerpositionssignals identifizierte fehlerhafte Byteposition korrigierbar ist,
    • - wobei der mindestens eine Bytefehlerkorrekturwert bestimmt wird, indem für jede von mindestens zwei Bytepositionen ein erster Wert und ein zweiter Wert in Abhängigkeit von einem Koeffizienten des Lokatorpolynoms bestimmt werden,
    • - Korrektur des mindestens einen Bytefehlers anhand des mindestens einen Bytefehlerkorrekturwerts.
  • Die vorstehenden Erläuterungen betreffend die Vorrichtung gelten für das Verfahren entsprechend. Die hier beschriebenen Schritte des Verfahrens können mittels der Vorrichtung ausgeführt werden.
  • Die oben beschriebenen Eigenschaften, Merkmale und Vorteile dieser Erfindung sowie die Art und Weise, wie diese erreicht werden, werden nachfolgend beschrieben im Zusammenhang mit einer schematischen Beschreibung von Ausführungsbeispielen, die im Zusammenhang mit den Zeichnungen näher erläutert werden. Dabei können zur Übersichtlichkeit gleiche oder gleichwirkende Elemente mit gleichen Bezugszeichen versehen sein.
  • Es zeigen:
    • 1 eine beispielhafte Schaltungsanordnung zur parallelen Bildung von Bytefehlerpositionssignalen für 2-Bytefehler,
    • 2 eine alternative Ausgestaltung der in 1 gezeigten Schaltungsanordnung,
    • 3 eine weitere Ausgestaltung der in 1 gezeigten Schaltungsanordnung mit einem zentralen Schaltungsteil,
    • 4 eine alternative beispielhafte Realisierung des in 3 gezeigten zentralen Schaltungsteils,
    • 5 ein Beispiel für eine Schaltungsanordnung zur Bytefehlerkorrektur für 2-Bytefehler,
    • 6 ein Beispiel für eine Realisierung der in 5 gezeigten Teilschaltung zur Bildung des Bytefehlerkorrekturwerts,
    • 7 ein weiteres Beispiel einer Realisierung der in 5 gezeigten Teilschaltung zur Bildung des Bytefehlerkorrekturwerts,
    • 8 ein Beispiel einer Korrekturschaltung für 1-Bytefehler und 2-Bytefehler unter Verwendung einer Schaltungsanordnung zur Bildung von Bytefehlerpositionssignalen für 2-Bytefehler,
    • 9 eine beispielhafte Korrekturschaltung für 1-Bytefehler, 2-Bytefehler bis hin zu t-Bytefehlern unter Verwendung einer Schaltungsanordnung zur Bildung von Bytefehlerpositionssignalen für 2-Bytefehler,
    • 10 eine beispielhafte Ausgestaltung der in 8 gezeigten Teilschaltung,
    • 11 eine Fehlererkennungsschaltung,
    • 12 eine Fehlererkennungsschaltung zur Erkennung von 3-Bytefehlern,
    • 13 eine Tabelle, die unterschiedliche Darstellungsformen von Elementen eines Galoisfelds GF(2m) mit m = 5 veranschaulicht,
    • 14 eine beispielhafte Ausgestaltung zur Bildung der Koeffizienten σ1 und σ2,
    • 15 eine beispielhafte Ausgestaltung zur Bildung des Terms s 1 σ 1 ,
      Figure DE102021123727B4_0017
    • 16 eine beispielhafte Ausgestaltung zur Bildung des Terms s 2 σ 1 + s 1 ,
      Figure DE102021123727B4_0018
    • 17 eine beispielhafte Ausgestaltung zur Bildung der Werte des Lokatorpolynoms anhand seiner Koeffizienten σ1 und σ2 für Byteposition i und j,
    • 18 eine beispielhafte Ausgestaltung zur Bildung der Bytefehlerkorrekturwerte a(k) für die Bytepositionen i und j.
  • Beispielsweise wird nachfolgend auf eine Korrektur von Bytefehlern unter Verwendung eines Reed-Solomon-Codes eingegangen. Ein Byte kann dabei mehrere Bit umfassen.
  • Für jede korrigierbare Byteposition wird ein Signal (auch bezeichnet als ein Bytefehlerpositionssignal) bestimmt, anhand dessen feststellbar ist, ob das Byte fehlerhaft ist oder nicht. Beispielsweise hat das Bytefehlerpositionssignal den Wert 1, wenn das Byte fehlerhaft ist oder den Wert 0, wenn das Byte nicht fehlerhaft ist.
  • Das Bytefehlerpositionssignal ist vorzugsweise durch einen Wert eines Lokatorpolynoms bestimmt. Im Fall von Bytefehler-korrigierenden Codes kann für jede Anzahl von Fehlern ein eigenes Lokatorpolynom verwendet werden.
  • Somit wird insbesondere vorgeschlagen, ein Bytefehlerpositionssignal für korrigierbare Bytepositionen eines Bytefehler-korrigierenden Codes zu bestimmen, wobei der Bytefehler-korrigierende Code insbesondere mindestens zwei Bytefehler korrigieren kann.
  • Eine korrigierbare Byteposition ist hierbei eine Byteposition, für die eine Korrektur vorgesehen ist, wenn ein Fehler auftritt, der durch den Bytefehler-korrigierenden Code korrigierbar ist.
  • Bei den Bytes handelt es sich beispielsweise um Datenbytes, eine Kombination aus Datenbytes und Prüfbytes oder eine Teilmenge davon. Datenbytes enthalten vorzugsweise Nutzdaten.
  • Für eine Byteposition kann ein Bytefehlerkorrekturwert bestimmt werden, anhand dessen die Byteposition dann korrigiert wird, wenn dort ein Fehler aufgetreten ist. Das Bytefehlerpositionssignal gibt an, ob für ein Byte ein Fehler aufgetreten ist und mittels des Bytefehlerkorrekturwerts kann dieser Fehler korrigiert werden. Mittels des Bytefehlerpositionssignals können also einzelne Bytepositionen ausgeblendet (maskiert) werden, an denen keine Korrektur erfolgen soll.
  • Insbesondere ist es eine Option, dass ein Bytefehlerkorrekturwert, der an einer Byteposition nicht zur Korrektur eingesetzt werden soll (z.B. weil diese Byteposition nicht fehlerhaft ist) mit 0 multipliziert wird. Insofern entspricht der Multiplikation des Bytefehlerkorrekturwerts mit 0 auch einem Nichtverwenden des Bytefehlerkorrekturwerts an einer Byteposition.
  • Reed-Solomon-Code, allgemeine Beschreibung
  • Nachfolgend werden einige Begriffe und Eigenschaften von Reed-Solomon-Codes erläutert.
  • Beispielsweise werden
    • - t-Bytefehler-korrigierende Codes und
    • - t-Bytefehler-korrigierende und (t + 1)-Bytefehler-erkennende Codes betrachtet. Insbesondere werden die Fälle t = 2 und t = 1 berücksichtigt.
  • Beispielsweise können als Bytefehler-korrigierende Codes bekannte Reed-Solomon-Codes verwendet werden. Für Reed-Solomon-Codes sei beispielhaft verwiesen auf [Lin, S., Costello, D.: Error Control Coding, Prentice Hall, 1983, Seiten 170 bis 177] oder [Wicker, S.: Error Control Systems for Digital Communication and Storage, Prentice Hall, 1995, Seiten 214 bis 224].
  • Ein 1-Bytefehler-korrigierender und 2-Bytefehler-erkennender Reed-Solomon-Code weist eine H-Matrix H B y t e *
    Figure DE102021123727B4_0019
    auf wie folgt: H B y t e * = ( α 0 α 1 α 2 α 2 m 2 α 0 α 2 α 4 α 2 ( 2 m 2 ) α 0 α 3 α 6 α 3 ( 2 m 2 ) )
    Figure DE102021123727B4_0020
  • Hierbei sind αi Elemente des Galoisfelds GF(2m). Diese liegen beispielsweise in einer Exponentialdarstellung vor. α kann ein primitives Element des Galoisfelds GF(2m) sein. Die Exponenten j von αj sind modulo 2m - 1 zu interpretieren.
  • Es ist möglich, aus der H-Matrix gemäß Gleichung (1) eine H-Matrix H B y t e = ( α 0 α 0 α 0 α 0 α 0 α 1 α 2 α 2 m 2 α 0 α 2 α 4 α 2 ( 2 m 2 ) )
    Figure DE102021123727B4_0021
    abzuleiten, indem für i = 0,..., (2m - 2) die i-te Spalte mit α-i multipliziert wird. Hierdurch ändert sich nur die Gestalt der H-Matrix, nicht der Code, da α-i ≠ 0 ist. Dies ist beispielsweise auch in [Fujiwara, E.: Code Design for Dependable Systems, Wiley, 2006, Seite 65] beschrieben, wobei der Wert „1“ für α0 verwendet wird, da α0 das Einselement des verwendeten Galoisfelds ist.
  • Für einen 2-Bytefehler-korrigierenden und 3-Bytefehler-erkennenden Code wird die folgende H-Matrix verwendet: H B y t e = ( α 0 α 0 α 0 α 0 α 0 α 1 α 2 α 2 m 2 α 0 α 2 α 4 α 2 ( 2 m 2 ) α 0 α 3 α 6 α 3 ( 2 m 2 ) α 0 α 4 α 8 α 4 ( 2 m 2 ) )
    Figure DE102021123727B4_0022
  • Jede Spalte der in Gleichung (3) angegebenen H-Matrix entspricht einem Byte.
  • Ist die Länge des Codes gleich N Bytes oder m - N-Bit (wobei jedes Byte m-Bit aufweist), werden nur N Spalten der H-Matrizen gemäß Gleichung (1) oder Gleichung (3) verwendet. Beispielsweise können dann die verbleibenden (letzten) 2m - 2 - N Spalten gestrichen werden.
  • Allgemein kann für einen t-Bytefehler-korrigierenden und t + 1-Bytefehler-erkennenden Code die H-Matrix wie folgt angegeben werden: H B y t e = ( α 0 α 0 α 0 α 0 α 0 α 1 α 2 α 2 m 2 α 0 α 2 α 4 α 2 ( 2 m 2 ) α 0 α 3 α 6 α 3 ( 2 m 2 ) α 0 α 4 α 8 α 4 ( 2 m 2 ) α 0 α 2 t 1 α 2 t 2 α 2 t ( 2 m 2 ) )
    Figure DE102021123727B4_0023
  • Nachfolgend wird beispielhaft ein Code betrachtet, der 2-Bytefehler korrigieren und 3-Bytefehler erkennen kann.
  • Tritt ein Fehler auf, wird ein korrekter Vektor v = v0,..., vN-1 in einen fehlerhaften Vektor v' = v'0, ... , v'N-1 gestört.
  • Die Komponenten v0,..., vN-1 des Vektors v sind Bytes, die jeweils m-Bit umfassen, so dass ν i = ν 1 i , , ν m i
    Figure DE102021123727B4_0024
    für i =0,..., N - 1 gilt. ν 1 i , , ν m i
    Figure DE102021123727B4_0025
    sind somit die m-Bitdes i-ten Bytes.
  • Ein m-Bit-Byte kann auch als ein Element des Galoisfelds GF(2m) bezeichnet werden.
  • Liegt ein 1-Bytefehler vor, ist nur ein einzelnes Byte fehlerhaft, d.h. für ein bestimmtes i ∈ {0,... ,N - 1} ist das zugehörige i-te Byte fehlerhaft.
  • Wird das korrekte i-te Byte mit ν i = ν 1 i , , ν m i
    Figure DE102021123727B4_0026
    und das fehlerhafte i-te Byte mit ν ' i = ν 1 ' i , , ν m ' i
    Figure DE102021123727B4_0027
    bezeichnet, können sich 1 oder 2 oder bis zu m-Bit des korrekten i-ten Bytes von dem fehlerhaften i-ten Byte unterscheiden.
  • Ein Bytefehler im i-ten Byte kann durch
    • - die fehlerhafte Byteposition i und
    • - einen Bytefehlerwert
    e i = ν i ν ' i = ν 1 i ν 1 ' i , , ν m i ν m ' i
    Figure DE102021123727B4_0028
    beschrieben werden. Hierbei sei angemerkt, dass „⊕“ die exklusiv-oder-Operation kennzeichnet.
  • Die Position eines i-ten Bytes kann auch mit αi bezeichnet werden.
  • Soll ein Bytefehler mit dem Bytefehlerwert ei in der Byteposition i korrigiert werden, so ist für die Byteposition i ein Bytefehlerkorrekturwert zu bestimmen, der gleich dem Bytefehlerwert ist.
  • In diesem Beispiel ist für einen zu korrigierenden Bytefehler der Bytefehlerwert gleich dem Bytefehlerkorrekturwert; insoweit können die Begriffe Bytefehlerwert und Bytefehlerkorrekturwert synonym verwendet werden.
  • Um eine unübersichtliche Anzahl von Indizes zu vermeiden, werden nachfolgend Bytefehlerwerte mit den alphabetischen Buchstaben a, b, c bezeichnet.
  • Ein Bytefehlerkorrekturwert für das i-te Bytes kann auch mit a(i) bezeichnet werden.
  • Byte-Positionen können mit i, j, k, ... oder mit αi, αj, αk, ... bezeichnet werden, wobei α ein erzeugendes Element des Galoisfelds GF(2m) ist.
  • Ein Fehlersyndrom s weist Syndromkomponenten (auch bezeichnet als Komponenten, Fehlersyndromkomponenten, Teilfehlersyndrome oder Teilsyndrome) s1, s2, s3, s4, s5 auf, die für die H-Matrix gemäß Gleichung (3) bestimmt sind zu: s 1 = ( α 0 , α 0 , , α 0 ) ( ν ' 0 , ν ' 1 , , ν ' N 1 ) T ,
    Figure DE102021123727B4_0029
    s 2 = ( α 0 , α 1 , , α N 1 ) ( ν ' 0 , ν ' 1 , , ν ' N 1 ) T ,
    Figure DE102021123727B4_0030
    s 3 = ( α 0 , α 2 , , α 2 ( N 1 ) ) ( ν ' 0 , ν ' 1 , , ν ' N 1 ) T ,
    Figure DE102021123727B4_0031
    s 4 = ( α 0 , α 3 , , α 3 ( N 1 ) ) ( ν ' 0 , ν ' 1 , , ν ' N 1 ) T ,
    Figure DE102021123727B4_0032
    s 5 = ( α 0 , α 4 , , α 4 ( N 1 ) ) ( ν ' 0 , ν ' 1 , , ν ' N 1 ) T .
    Figure DE102021123727B4_0033
  • Dabei ist (v'0, ... , vN-1 ein Spaltenvektor mit den Komponenten v'0,...,v'N-1, der auch als transponierter Vektor des Zeilenvektors (v'0,..., v'N-1) bezeichnet werden kann.
  • Die Syndromkomponenten s1, s2, s3, s4, s5 bilden jeweils ein Byte mit m-Bit.
  • Liegt kein Fehler vor, gilt: s 1 = s 2 = s 3 = s 4 = s 5 = 0.
    Figure DE102021123727B4_0034
  • Liegt ein 1-Bytefehler mit dem Bytefehlerwert a in der i-ten Bytefehlerposition vor, gilt: s 1 = α 0 a = a
    Figure DE102021123727B4_0035
    s 2 = α i a
    Figure DE102021123727B4_0036
    s 3 = α 2 i a
    Figure DE102021123727B4_0037
    s 4 = α 3 i a
    Figure DE102021123727B4_0038
    s 5 = α 4 i a .
    Figure DE102021123727B4_0039
  • Liegt ein 2-Bytefehler mit den Bytefehlerwerten a und b in den Bytefehlerpositionen i und j vor, gilt: s 1 = α 0 a + α 0 b = a + b
    Figure DE102021123727B4_0040
    s 2 = α i a + α j b
    Figure DE102021123727B4_0041
    s 3 = α 2 i a + α 2 j b
    Figure DE102021123727B4_0042
    s 4 = α 3 i a + α 3 j b
    Figure DE102021123727B4_0043
    s 5 = α 4 i a + α 4 j b .
    Figure DE102021123727B4_0044
  • Liegt ein 3-Bytefehler mit den Bytefehlerwerten a, b und c in den Bytefehlerpositionen i, j und k vor, gilt: s 1 = α 0 a + α 0 b + α 0 c = a + b + c
    Figure DE102021123727B4_0045
    s 2 = α i a + α j b + α k c
    Figure DE102021123727B4_0046
    s 3 = α 2 i a + α 2 j b + α 2 k c
    Figure DE102021123727B4_0047
    s 4 = α 3 i a + α 3 j b + α 3 k c
    Figure DE102021123727B4_0048
    s 5 = α 4 i a + α 4 j b + α 4 k c .
    Figure DE102021123727B4_0049
  • Für die betrachteten Fehler sind die folgenden Beziehungen erfüllt:
    1. 1. Für einen 1-Bytefehler gelten s 1 = a 0
      Figure DE102021123727B4_0050
      und s 1 s 3 + s 2 2 = 0.
      Figure DE102021123727B4_0051
    2. 2. Für einen 2-Bytefehler gelten s 1 s 3 + s 2 2 = a b [ α 2 i + α 2 j ] 0.
      Figure DE102021123727B4_0052
      und D e t ( s 1 s 2 s 3 s 2 s 3 s 4 s 3 s 4 s 5 ) = s 1 s 3 s 5 + s 3 3 + s 4 2 s 1 + s 2 2 s 5 = 0.
      Figure DE102021123727B4_0053
    3. 3. Für einen 3-Bytefehler ist D e t ( s 1 s 2 s 3 s 2 s 3 s 4 s 3 s 4 s 5 ) = s 1 s 3 s 5 + s 3 3 + s 4 2 s 1 + s 2 2 s 5 = = a b c { α 2 i + α 2 j } { α 2 i + α 2 k } { α 2 j + α 2 k } 0.
      Figure DE102021123727B4_0054
  • Die Bytefehlerpositionen αi und αj können im Falle des 2-Bytefehlers in dem i-ten und in dem j-ten Byte als Lösung, Wurzeln oder Nullstellen der Gleichung x 2 { s 1 s 3 + s 2 2 } + x { s 1 s 4 + s 2 s 3 } + s 2 s 4 + s 3 2 = 0.
    Figure DE102021123727B4_0055
    bestimmt werden. L ( x ) = x 2 { s 1 s 3 + s 2 2 } + x { s 1 s 4 + s 2 s 3 } + s 2 s 4 + s 3 2
    Figure DE102021123727B4_0056
    kann auch als Lokatorpolynom zweiten Grades bezeichnet werden.
  • Entsprechend sind die Bytefehlerpositionen für den 1-Bytefehler durch eine Nullstelle eines Lokatorpolynomes ersten Grades und allgemein die fehlerhaften Bytepositionen eines τ-Bytefehlers für einen t-Bytefehler-korrigierenden Code für 1 τ t
    Figure DE102021123727B4_0057
    durch Nullstellen eines Lokatorpolynoms τ-ten Grades bestimmt.
  • Besteht ein Codewort aus N - m-Bit und damit aus N Bytes, so gibt es nur N unterschiedliche Bytepositionen, die als Bytefehlerpositionen in Betracht kommen. In einem entsprechenden Bit-korrigierenden Code gibt es hingegen m · N mögliche fehlerhafte Bitpositionen.
  • Bei einem 1-Bytefehler wird ein Lokatorpolynom ersten Grades und bei einem 2-Bytefehler wird ein Lokatorpolynom zweiten Grades verwendet.
  • Reed-Solomon-Code, ergänzende Ausführungen
  • Es ist möglich, im Falle eines 2-Bytefehlers einen Bytefehlerkorrekturwert a(i) für ein i-tes Byte in Abhängigkeit lediglich von den Syndromkomponenten s1, s2, s3 und der Byteposition i zu bestimmen.
  • Hierbei ist es von Vorteil, dass mehrere Bytefehlerkorrekturwerte parallel für beispielsweise mindestens drei korrigierbare Bytes bestimmt werden können.
  • Beispielsweise sei angenommen, dass ein 2-Bytefehler vorliegt. Der Bytefehlerkorrekturwert für jede Byteposition kann auf Grund der bereitgestellten Syndromkomponenten s1, s2, s3 und der bekannten Position jedes der korrigierbaren Bytes parallel bestimmt werden. Ein Bytefehlerkorrekturwert wird für die beiden fehlerhaften Bytes und mindestens für ein nicht fehlerhaftes Byte bestimmt.
  • Ein für eine i-te Byteposition bestimmter Bytefehlerkorrekturwert stimmt mit dem Bytefehlerwert an dieser i-ten Position überein.
  • Ein ebenfalls (ggf. parallel) bestimmtes Bytefehlerpositionssignal legt fest, ob ein Bytefehler in dem betrachteten Byte vorliegt und die Korrektur mit dem Bytefehlerkorrekturwert erfolgt. Zeigt das Bytefehlerpositionssignal an, dass kein Bytefehler in der entsprechenden Position vorliegt, erfolgt keine Korrektur mit dem für diese Position bestimmten Bytefehlerkorrekturwert.
  • Mit anderen Worten: Das Bytefehlerpositionssignal bestimmt, an welchen Bytepositionen eine Korrektur mit dem bereitgestellten Bytefehlerkorrekturwert erfolgt: Zeigt das Bytefehlerpositionssignal für eine Byteposition einen Bytefehler an, erfolgt die Korrektur mit dem Bytefehlerkorrekturwert; zeigt das Bytefehlerpositionssignal für diese Byteposition keinen Bytefehler an, erfolgt keine Korrektur.
  • Wird ein t-Bytefehler-korrigierender Code betrachtet, kann der entsprechende Bytefehlerkorrekturwert für mehr als t korrigierbare Bytepositionen bestimmt werden, noch bevor die Bytefehlerpositionssignale für (alle oder einen Teil der) Bytepositionen bestimmt wurden. Der Bytefehlerkorrekturwert kann auch parallel mit dem Bytefehlerpositionssignal bestimmt werden.
  • Liegt kein Bytefehler in einem i-ten Byte vor, wird der für dieses i-te Byte bestimmte Bytefehlerkorrekturwert auf Grund des Werts des Bytefehlerpositionssignals nicht zur Korrektur verwendet. Es ist in diesem Fall nicht erforderlich, dass der für dieses nicht fehlerhafte Byte bestimmte Bytefehlerkorrekturwert gleich 0 = 0, ,0 m
    Figure DE102021123727B4_0058
    ist, da auf Grund des Bytefehlerpositionssignals die Korrektur ausgeschlossen ist. Optional kann in diesem Fall der Bytefehlerkorrekturwert für das i-te Byte 0 = 0, ,0 m
    Figure DE102021123727B4_0059
    gesetzt werden.
  • Ist ein 2-Bytefehler vorhanden, kann für eine Bytefehlerposition i der Bytefehlerkorrekturwert a(i) des i-ten Bytes so bestimmt sein, dass gilt: a ( i ) = s 1 s 3 + s 2 2 s 3 + α 2 i s 1
    Figure DE102021123727B4_0060
  • Ist für einen 2-Bytefehler eine Byteposition i bekannt, in der ein Bytefehler aufgetreten ist, ist auf Grund der Gleichung (13) der Bytefehlerkorrekturwert a(i) für die fehlerhafte Byteposition i durch die Syndromkomponenten s1, s2, s3 und den aus der Byteposition i bestimmten Wert αi bestimmt.
  • Für eine Byteposition k wird der Bytefehlerkorrekturwert a(k) mit a ( k ) = s 1 s 3 + s 2 2 s 3 + α 2 k s 1
    Figure DE102021123727B4_0061
    beispielsweise parallel bestimmt, unabhängig davon, ob die Byteposition k tatsächlich fehlerhaft ist.
  • Zeigt das Bytefehlerpositionssignal an, dass in der Byteposition k ein Bytefehler vorliegt, erfolgt eine Fehlerkorrektur des k-ten Bytes mit dem für diese Byteposition k bestimmten Bytefehlerkorrekturwert a(k).
  • Zeigt das Bytefehlerpositionssignal an, dass in der Byteposition k kein Bytefehler vorliegt, erfolgt keine Fehlerkorrektur des k-ten Bytes und der für dieses k-te Byte bestimmte Bytefehlerkorrekturwert a(k) wird nicht zur Fehlerkorrektur verwendet. Optional kann der Bytefehlerkorrekturwert zu 0 gesetzt werden.
  • Der Bytefehlerkorrekturwert für eine Byteposition kann also bereits vorliegen, noch ehe bestimmt worden ist, ob tatsächlich ein Fehler an dieser Byteposition aufgetreten ist.
  • Für verschiedene Bytepositionen können die entsprechenden Bytefehlerkorrekturwerte parallel bestimmt werden. Insbesondere können die Bytefehlerkorrekturwerte für alle korrigierbaren Bytepositionen oder für eine Teilmenge der korrigierbaren Bytepositionen parallel bestimmt werden.
  • Kann der Bytefehler-korrigierende Code bis zu t fehlerhafte Bytes korrigieren, dann können mehr als t Bytefehlerkorrekturwerte parallel bestimmt werden, beispielsweise für alle korrigierbaren Bytepositionen oder auch für eine Teilmenge von mindestens t + 1 korrigierbaren Bytepositionen, unabhängig davon, ob ein Bytefehler an einer Byteposition vorliegt.
  • Der Wert des Bytefehlerpositionssignals bestimmt, ob der Bytefehlerkorrekturwert zur Korrektur des entsprechenden Bytes verwendet wird.
  • Korrigierbare Bytepositionen können beispielsweise alle Datenbytes, eine Teilmenge der Datenbytes, Prüfbytes, alle Bytes eines Codeworts eines t-Bytefehler-korrigierenden Codes oder eine Teilmenge der Bytes eines Codewortes des t-Bytefehler-korrigierenden Codes sein.
  • Das Bytefehlerpositionssignal kann dabei beispielsweise so bestimmt sein, dass es für eine Byteposition einen ersten Wert annimmt, wenn das Byte der Byteposition fehlerhaft ist und dass es einen zweiten, von dem ersten Wert verschiedenen Wert annimmt, wenn das Byte der Byteposition nicht fehlerhaft ist.
  • Das Bytefehlerpositionssignal kann unter Verwendung des entsprechenden Lokatorpolynoms bestimmt werden.
  • Bytefehlerpositionssignal für den 1-Bytefehler
  • Für einen 1-Bytefehler ist das Lokatorpolynom ersten Grades x s 1 = s 2
    Figure DE102021123727B4_0062
    mit der Lösung oder Nullstelle α i = s 2 s 1 .
    Figure DE102021123727B4_0063
  • Der Bytefehlerkorrekturwert a(i) für die fehlerhafte Byteposition i ist a ( i ) = s 1 .
    Figure DE102021123727B4_0064
  • Für jedes k-te Byte wird ein Bytefehlerkorrekturwert a ( k ) = s 1 = a
    Figure DE102021123727B4_0065
    bestimmt.
  • Liegt ein Fehler in dem i-ten Byte mit dem Bytefehlerkorrekturwert a vor, so dass s1 = a ist, wird für jedes Byte k ein Bytefehlerkorrekturwert a(k) = a nach Gleichung (18) bestimmt, der für das tatsächlich zu korrigierende i-te Byte eingesetzt wird und für die nicht zu korrigierenden Bytes maskiert (z.B. zu Null gesetzt) wird. Die Entscheidung, ob ein Byte korrigiert wird oder nicht, erfolgt auf Grund des Werts des entsprechenden Bytefehlerpositionssignals.
  • Für jedes Byte wird im Falle eines 1-Bytefehlers ein Bytefehlerpositionssignal unter Verwendung der Gleichung (15) bestimmt. Das Bytefehlerpositionssignal für die Byteposition i ist
    • - gleich 1, wenn αi eine Nullstelle des Lokatorpolynoms gemäß Gleichung (15) ist und
    • - gleich 0, wenn αi keine Nullstelle des Lokatorpolynoms gemäß Gleichung (15) ist.
  • Eine Korrektur des i-ten Bytes erfolgt nur, wenn αi Nullstelle des Lokatorpolynoms gemäß Gleichung (15) ist.
  • Bytefehlerpositionssignal für den 2-Bytefehler
  • Die Wirkung des Bytefehlerpositionssignals bei der Korrektur eines 2-Bytefehlers wird anhand eines Beispiels veranschaulicht:
    • Wird ein t-Bytefehler-korrigierender Code mit t > 2 verwendet, so sind im Falle eines 2-Bytefehlers die fehlerhaften Bytepositionen durch die zwei Nullstellen des Lokatorpolynoms zweiten Grades gemäß Gleichung (12) bestimmt.
    • Sind die fehlerhaften Bytepositionen die Positionen i und j, ist das Bytefehlerpositionssignal beispielsweise gleich 1, wenn αi und αj jeweils eine Nullstelle des Lokatorpolynoms zweiten Grades gemäß Gleichung (12) sind und gleich 0 in allen anderen Fällen.
  • Für jede Byteposition k kann ein Bytefehlerkorrekturwert a ( k ) = s 1 s 3 + s 2 2 s 3 + α 2 k s 1
    Figure DE102021123727B4_0066
    bestimmt werden. Diese Bytefehlerkorrekturwerte können zumindest teilweise parallel bestimmt werden.
  • Der Wert des Bytefehlerpositionssignals für die Byteposition k bestimmt, ob an dieser Byteposition k eine Korrektur erfolgt. Ist das Bytefehlerpositionssignal gleich 1, erfolgt eine Korrektur, ist das Bytefehlerpositionssignal gleich 0, erfolgt keine Korrektur.
  • Für die Byteposition k = i ist der Bytefehlerkorrekturwert a(i) so bestimmt, dass das fehlerhafte i-te Byte mittels des Bytefehlerkorrekturwerts a(i) korrigiert wird. Ebenso ist für die Byteposition k = j der Bytefehlerkorrekturwert a(j) so bestimmt, dass das fehlerhafte j-te Byte mittels des Bytefehlerkorrekturwerts a(j) korrigiert wird.
  • Für alle anderen Bytepositionen k mit k ≠ i, j liegt kein Bytefehler vor, so dass für diese Bytepositionen keine Korrektur erforderlich ist. Selbst wenn ein Bytefehlerkorrekturwert a(k) ungleich 0 bestimmt worden ist, wird dieser nicht zur Korrektur eingesetzt, weil das Bytefehlerpositionssignal an dieser Byteposition den Wert 0 annimmt und somit anzeigt, dass für diese Byteposition keine Korrektur erforderlich ist.
  • Behandlung von 1-Bytefehlern, 2-Bytefehlern und 3-Bytefehlern
  • Im Folgenden wird beschrieben, wie Bytefehler erkannt und voneinander unterschieden werden können. Es wird beispielhaft ein 2-Bytefehler-korrigierender Code betrachtet. Ergänzend wird auch eine 3-Bytefehler-Erkennung beschrieben.
    1. 1. Es wird zunächst von dem Fall ausgegangen, dass nur ein 1-Bytefehler oder ein 2-Bytefehler vorhanden ist. In einem solchen Beispiel gilt für einen 2-Bytefehler gemäß Gleichung (9) s 1 s 3 + s 2 2 0
      Figure DE102021123727B4_0067
      und für einen 1-Bytefehler gelten sowohl die Gleichungen (7) und (8) s 1 0
      Figure DE102021123727B4_0068
      s 1 s 3 + s 2 2 = 0.
      Figure DE102021123727B4_0069
  • Zusätzlich ist noch der Fall zu unterscheiden, dass weder ein 1-Bytefehler noch ein 2-Bytefehler aufgetreten ist. Bereits aus s1 = 0 kann gefolgert werden, dass weder ein 1-Bytefehler noch ein 2-Bytefehler aufgetreten ist.
  • Wenn die Wahrscheinlichkeit für einen 3-Bytefehler extrem klein ist, kann man für diesen Fall folgern, dass kein Fehler aufgetreten ist.
    • 2. Es wird nun der Fall betrachtet, dass nur ein 1-Bytefehler oder nur ein 2-Bytefehler oder nur ein 3-Bytefehler vorhanden ist. Für einen 3-Bytefehler gilt gemäß Gleichung (11)
    s 1 s 3 s 5 + s 3 3 + s 4 2 s 1 + s 2 2 s 5 0.
    Figure DE102021123727B4_0070
  • Entsprechend gilt für einen 2-Bytefehler oder für einen 1-Bytefehler: s 1 s 3 s 5 + s 3 3 + s 4 2 s 1 + s 2 2 s 5 = 0.
    Figure DE102021123727B4_0071
  • Liegt ein 2-Bytefehler vor, gilt zusätzlich Gleichung (9) s 1 s 3 + s 2 2 0.
    Figure DE102021123727B4_0072
  • Für einen 1-Bytefehler gelten wieder die Gleichungen (7) und (8) s 1 0
    Figure DE102021123727B4_0073
    s 1 s 3 + s 2 2 = 0.
    Figure DE102021123727B4_0074
  • Aus der Bedingung gemäß Gleichung (9) allein kann nicht geschlossen werden, dass ein 2-Bytefehler vorliegt, da diese Bedingung auch für den 3-Bytefehler gilt.
  • Die Korrektur von 2-Bytefehlern kann wie folgt durchgeführt werden: Für jede Byteposition i mit i ∈ {0, 1,...,N- 1} wird ein Wert L(αi) des Lokatorpolynoms zweiten Grades bestimmt gemäß L ( α i ) = α 2 i { s 1 s 3 + s 2 2 } + α i { s 1 s 4 + s 2 s 3 } + s 2 s 4 + s 3 2 .
    Figure DE102021123727B4_0075
  • Ist L(αi) = 0, wird das i-te Byte korrigiert. Ist L(αi) ≠ 0, dann wird das i-te Byte nicht korrigiert. Ein Bytefehlerpositionssignal BPsi kann angeben, ob eine Korrektur des jeweiligen Bytes erfolgt oder nicht. Das Bytefehlerpositionssignal BPsi ist beispielsweise bestimmt durch B P s i = { 1  wenn L ( α i ) = 0. 0 wenn L ( α i ) 0.
    Figure DE102021123727B4_0076
  • Bei Schaltungsanordnungen, die Operationen in einem Galoisfeld GF(2m) realisieren, werden beispielsweise Multiplizierer, Konstantenmultiplizierer, Quadrierer, (dritte) Potenzbildner o.ä. eingesetzt. Die schaltungstechnische Umsetzung einzelner derartiger Operationen ist bekannt. Nachfolgend wird beispielhaft dargestellt, wie in einem Galoisfeld, das beispielsweise durch sein Modularpolynom bestimmt ist, Multiplizierer, Quadrierer, dritte Potenz-Bildner und Konstanten-Multiplizierer realisiert werden können. Beispielhaft wird m = 5 angenommen, so dass ein Byte aus m = 5 Bit besteht und das entsprechende Galoisfeld GF(25) ist.
  • Beispiel im Galoisfeld GF(2m) mit m = 5
  • Es wird beispielhaft m = 5 gewählt, so dass das zugrundeliegende Galoisfeld G F ( 2 m ) = G F ( 2 5 ) = G F
    Figure DE102021123727B4_0077
    insgesamt 32 Elemente umfasst.
  • Elemente des Galoisfelds GF(32) sind in ihren verschiedenen Darstellungsformen in 13 dargestellt. Das Modularpolynom des Galoisfelds GF(32) ist das Polynom p ( x ) = 1 + x 2 + x 5 .
    Figure DE102021123727B4_0078
  • Die erste Spalte der in 13 gezeigten Tabelle umfasst die Elemente αi ≠ 0 des GF(25) für i = 0,1,...,30 in Exponentendarstellung (auch bezeichnet als Exponentialdarstellung). Das Nullelement des Körpers besitzt keine Exponentendarstellung. In der zweiten Spalte der Tabelle sind alle Elemente in ihrer Polynomdarstellung für das zugehörige Modularpolynom p(x) aufgelistet. Die dritte Spalte der Tabelle zeigt die Tupel- oder Vektordarstellung der Elemente des GF(25). Die Vektordarstellung eines Elementes kann direkt aus der Polynomdarstellung abgelesen werden. Die fünf Komponenten der Vektordarstellung entsprechen dabei von links nach rechts den Koeffizienten der zugehörigen Potenzen x 0 , x 1 , x 2 , x 3 , x 4
    Figure DE102021123727B4_0079
    in der Polynomdarstellung.
  • Die entsprechende Polynomdarstellung ergibt sich aus der Potenzdarstellung αi, indem [xi modulo (1 +x2 +x5)] bestimmt wird. Beispielsweise ist die Polynomdarstellung von α5 gleich 1 + x2, da x 5   m o d u l o ( 1 + x 2 + x 5 ) = 1 + x 2
    Figure DE102021123727B4_0080
    gilt.
  • Die Multiplikation zweier Elemente des Galoisfelds kann in der Exponentendarstellung oder in der Polynomdarstellung vorgenommen werden. Sind zwei Elemente des Galoisfelds GF(2m) = GF(25) in der Exponentendarstellung αi und αj gegeben, ergibt sich deren Produkt zu: α i α j = α k  mit  k = ( i + j )   m o d u l o ( 2 m 1 ) = ( i + j )   m o d u l o   31.
    Figure DE102021123727B4_0081
  • Liegen die zu multiplizierenden Elemente des Galoisfelds in ihrer Vektordarstellung oder in ihrer Polynomdarstellung vor, kann ihre Multiplikation mit einem Galoisfeld-Multiplizierer vorgenommen werden. Nachfolgend wird beispielhaft die Multiplikation zweier Elemente in ihrer Polynomdarstellung beschrieben. Um zwei Elemente, die als Elemente des Galoisfelds GF(2m) = GF(25) in ihrer Polynomdarstellung gegeben sind, miteinander zu multiplizieren, sind die Polynome direkt in der üblichen Weise miteinander zu multiplizieren, und das Ergebnis ist modulo des Modularpolynoms zu bestimmen.
  • Sind beispielsweise die Polynome 1 + x2 + x3 und x + x3 gegeben, so ergibt ihre direkte Multiplikation ( 1 + x 2 + x 3 ) ( x + x 3 ) = x + x 4 + x 5 + x 6 .
    Figure DE102021123727B4_0082
  • Wegen x 5 = 1 + x 2   m o d u l o   ( 1 + x 2 + x 5 )
    Figure DE102021123727B4_0083
    und x 6 = x + x 3   m o d u l o   ( 1 + x 2 + x 5 )
    Figure DE102021123727B4_0084
    folgt x + x 4 + x 5 + x 6 = x + x 4 + 1 + x 2 + x + x 3 = 1 + x 2 + x 3 + x 4 .
    Figure DE102021123727B4_0085
  • Somit gilt im Ergebnis: ( 1 + x 2 + x 3 ) ( x + x 3 ) = 1 + x 2 + x 3 + x 4 .
    Figure DE102021123727B4_0086
  • Nachfolgend wird der Fall beschrieben, wonach ein erstes Element a(x) mit a ( x ) = a 4 x 4 + a 3 x 3 + a 2 x 2 + a 1 x + a 0
    Figure DE102021123727B4_0087
    und und ein zweites Element b(x) mit b ( x ) = b 4 x 4 + b 3 x 3 + b 2 x 2 + b 1 x + b 0
    Figure DE102021123727B4_0088
    in dem Galoisfeld GF(25) mit dem Modularpolynom m ( x ) = x 5 + x 2 + 1
    Figure DE102021123727B4_0089
    multipliziert werden. Durch direktes Ausmultiplizieren der Polynome a(x) und b(x) ergibt sich zunächst ein Polynom 8-ten Grades. Mit x 5   m o d u l o   ( 1 + x 2 + x 5 ) 1 + x 2 ,
    Figure DE102021123727B4_0090
    x 6   m o d u l o   ( 1 + x 2 + x 5 ) = x + x 3 ,
    Figure DE102021123727B4_0091
    x 7   m o d u l o   ( 1 + x 2 + x 5 ) = x 2 + x 4 ,
    Figure DE102021123727B4_0092
    x 8   m o d u l o   ( 1 + x 2 + x 5 ) = 1 + x 2 + x 3
    Figure DE102021123727B4_0093
    ergibt sich ein Polynom vierten Grades wie folgt: c 4 x 4 + c 3 x 3 + c 2 x 2 + c 1 x 1 + c 0 = a ( x ) b ( x )  mod  m ( x ) = = ( a 0 b 4 + a 1 b 3 + a 2 b 2 + a 3 b 1 + a 3 b 4 + a 4 b 0 + a 4 b 3 ) x 4 + + ( a 0 b 3 + a 1 b 2 + a 2 b 1 + a 2 b 4 + a 3 b 0 + a 3 b 3 + a 4 b 2 + a 4 b 4 ) x 3 + + ( a 0 b 2 + a 1 b 1 + a 1 b 4 + a 2 b 0 + a 2 b 3 + a 3 b 2 + a 3 b 4 + a 4 b 1 + a 4 b 3 + a 4 b 4 ) x 2 + + ( a 0 b 1 + a 1 b 0 + a 2 b 4 + a 3 b 3 + a 4 b 2 ) x 1 + + ( a 0 b 0 + a 1 b 4 + a 2 b 3 + a 3 b 2 + a 4 b 1 + a 4 b 4 ) .
    Figure DE102021123727B4_0094
  • Diese Beziehung wird durch einen Galoisfeld-Multiplizierer mit fünf ersten binären Eingängen, fünf zweiten binären Eingängen und fünf binären Ausgängen realisiert. Dies wird nachfolgend näher erläutert.
  • An den ersten fünf Eingängen des Galoisfeld-Multiplizierers liegen die binären Werte a0, a1, a2, a3, a4 und an den zweiten fünf Eingängen liegen die binären Werte b0, b1, b2, b3, b4 an, während an den fünf binären Ausgängen die Werte c0, c1, c2, c3, c4 mit ( a 0 b 0 + a 1 b 4 + a 2 b 3 + a 3 b 2 + a 4 b 1 + a 4 b 4 ) = c 0 ,
    Figure DE102021123727B4_0095
    ( a 0 b 1 + a 1 b 0 + a 2 b 4 + a 3 b 3 + a 4 b 2 ) = c 1
    Figure DE102021123727B4_0096
    ( a 0 b 2 + a 1 b 1 + a 1 b 4 + a 2 b 0 + a 2 b 3 + a 3 b 2 + a 3 b 4 + a 4 b 1 + a 4 b 3 + a 4 b 4 ) = c 2
    Figure DE102021123727B4_0097
    ( a 0 b 3 + a 1 b 2 + a 2 b 1 + a 2 b 4 + a 3 b 0 + a 3 b 3 + a 4 b 2 + a 4 b 4 ) = c 3
    Figure DE102021123727B4_0098
    ( a 0 b 4 + a 1 b 3 + a 2 b 2 + a 3 b 1 + a 3 b 4 + a 4 b 0 + a 4 b 3 ) = c 4
    Figure DE102021123727B4_0099
    ausgegeben werden. Hierbei bezeichnet das Symbol „+“ die Addition modulo 2 (XOR-Operation).
  • Die Implementierung der Gleichungen (22) bis (26) kann mittels eines Galoisfeld-Multiplizierers erfolgen, beispielsweise unter Verwendung von UND-Gattern und XOR-Gatter (Exklusiv-Oder-Gattern). Beispielsweise kann im Rahmen der Implementierung auch ein Synthesetool eingesetzt werden.
  • Wird ein Element des Galoisfelds quadriert, ist es mit sich selbst zu multiplizieren. Ist in der Polynomdarstellung ein Element als Polynom a ( x ) = a 0 + a 1 x 1 + a 2 x 2 + a 3 x 3 + a 4 x 4
    Figure DE102021123727B4_0100
    gegeben, gilt ( a ( x ) ) 2  mod  m ( x ) = = [ a 0 + a 1 x 2 + a 2 x 4 + a 3 x 6 + a 4 x 8 ]  mod  ( 1 + x 2 + x 5 ) = = ( a 2 ) x 4 + ( a 3 + a 4 ) x 3 + ( a 1 + a 4 ) x 2 + a 3 x 1 + ( a 0 + a 4 ) .
    Figure DE102021123727B4_0101
  • Das Quadrieren eines Elementes im Galoisfeld GF(25) kann entsprechend mit einem Quadrierer mit fünf binären Eingängen und fünf binären Ausgängen realisiert werden. An seinen fünf binären Eingängen werden die binären Werte a0, a1, a2, a3, a4 zugeführt und an den fünf binären Ausgängen werden die binären Werte d0, d1, d2, d3, d4 bereitgestellt. Es gelten a 0 + a 4 = d 0 ,
    Figure DE102021123727B4_0102
    a 3 = d 1 ,
    Figure DE102021123727B4_0103
    a 1 + a 4 = d 2 ,
    Figure DE102021123727B4_0104
    a 3 + a 4 = d 3 ,
    Figure DE102021123727B4_0105
    a 2 = d 4 ,
    Figure DE102021123727B4_0106
    wobei das Symbol „+“ wieder die Addition modulo 2 (XOR-Verknüpfung) bezeichnet.
  • Zur Realisierung eines Quadrierers in dem Galoisfelds GF(25) mit dem Modularpolynom m(x) = 1 +x2 +x5 können die Gleichungen (27) bis (31) beispielsweise mittels XOR-Gattern implementiert werden.
  • Am Beispiel des Galoisfelds GF(25) wird beschrieben, wie die dritte Potenz eines Elements bestimmt werden kann, das in seiner Polynomdarstellung angegeben ist.
  • Wird die dritte Potenz (a(x))3 eines Polynomes a ( x ) = a 0 + a 1 x 1 + a 2 x 2 + a 3 x 3 + a 4 x 4
    Figure DE102021123727B4_0107
  • Modulo des Modularpolynoms m(x) = 1 +x2 + x5 bestimmt, gilt: ( a ( x ) ) 2  mod  m ( x ) = = ( a 0 b 2 + a 0 a 4 + a 1 a 2 + a 1 a 3 + a 1 a 4 + a 2 a 3 + a 2 a 4 + a 3 + a 3 a 4 ) x 4 + + ( a 0 a 4 + a 1 + a 2 + a 2 a 3 + a 2 a 4 + a 3 + a 4 ) x 3 + + ( a 0 a 1 + a 0 a 2 + a 0 a 4 + a 1 a 2 + a 2 a 4 + a 3 a 4 + a 4 ) x 2 + + ( a 0 a 1 + a 0 a 3 + a 2 + a 3 + a 3 a 4 + a 4 ) x 1 + + ( a 0 + a 0 a 4 + a 1 a 2 + a 1 a 3 + a 2 a 3 )
    Figure DE102021123727B4_0108
  • Das Bilden der dritten Potenz eines Elements im Galoisfeld GF(25) kann entsprechend mit einem Dritte-Potenz-Bildner mit fünf binären Eingängen und fünf binären Ausgängen realisiert werden. Den fünf binären Eingängen werden die binären Werte a0, a1, a2, a3, a4 zugeführt und an den fünf binären Ausgängen werden die binären Werte f0, f1, f2, f3, f4 bereitgestellt. Es gilt: ƒ 0 = a 0 + a 0 a 4 + a 1 a 2 + a 1 a 3 + a 2 a 3
    Figure DE102021123727B4_0109
    ƒ 1 = a 0 a 1 + a 0 a 3 + a 2 + a 3 + a 3 a 4 + a 4
    Figure DE102021123727B4_0110
    ƒ 2 = a 0 a 1 + a 0 a 2 + a 0 a 4 + a 1 a 2 + a 2 a 4 + a 3 a 4 + a 4
    Figure DE102021123727B4_0111
    ƒ 3 = a 0 a 4 + a 1 + a 2 + a 2 a 3 + a 2 a 4 + a 3 + a 4
    Figure DE102021123727B4_0112
    ƒ 4 = a 0 a 2 + a 0 a 4 + a 1 a 2 + a 1 a 3 + a 1 a 4 + a 2 a 3 + a 2 a 4 + a 3 + a 3 a 4
    Figure DE102021123727B4_0113
  • Beispielsweise kann ein Dritte-Potenz-Bildner realisiert werden, im vorliegenden Beispiel in dem Galoisfelds GF(25) mit dem Modularpolynom m(x) = 1 + x2 + x5, indem lediglich die Gleichungen (32) bis (36) implementiert werden.
  • Alternativ kann ein Dritte-Potenz-Bildner aus einem Quadrierer und einen nachgeschalteten Galoisfeld-Multiplizierer realisiert werden. Auch können höhere Potenzen des Elements a(x) in entsprechender Weise unter Verwendung geeigneter Bausteine realisiert werden.
  • Eine Implementierung eines Konstanten-Multiplizierers in dem Galoisfeld GF(2m) wird nachfolgend beispielhaft für m = 5 dargestellt. Das Modularpolynom ist m ( x ) = 1 + x 2 + x 5 .
    Figure DE102021123727B4_0114
  • Es sei a ∈ GF(25) ein beliebiges Element des Galoisfelds mit der folgenden Polynomdarstellung a ( x ) = a 0 + a 1 x + a 2 x 2 + a 3 x 3 + a 4 x 4 .
    Figure DE102021123727B4_0115
  • Als zu multiplizierende Konstante wird beispielhaft α9 gewählt, deren Polynomdarstellung gemäß der in 13 gezeigten Tabelle mit a 9 ( x ) = x + x 3 + x 4
    Figure DE102021123727B4_0116
    gegeben ist. Als Multiplikation ergibt sich a ( x ) a 9 ( x ) m o d u l o ( 1 + x 2 + x 5 ) = b 0 + b 1 x + b 2 x 2 + b 3 x 3 + b 4 x 4
    Figure DE102021123727B4_0117
    mit b 0 = a 1 + a 2 ,
    Figure DE102021123727B4_0118
    b 1 = a 0 + a 2 + a 3 ,
    Figure DE102021123727B4_0119
    b 2 = a 2 + a 3 + a 4 ,
    Figure DE102021123727B4_0120
    b 3 = a 0 + a 3 + a 4 ,
    Figure DE102021123727B4_0121
    b 4 = a 0 + a 1 + a 4 .
    Figure DE102021123727B4_0122
  • Die Ausgabewerte b0, ... , b4 werden aus den Eingabewerten a0,..., a4 entsprechend der in den Gleichungen (40) bis (44) dargestellten Beziehungen abgeleitet, so dass die Ausgabewerte durch XOR-Verknüpfungen aus den Eingabewerten bestimmt sind. Hierbei bezeichnet das Symbol „+“ die Addition modulo 2 (XOR-Operation). Entsprechend kann der Konstanten-Multiplizierer mittels XOR-Gatter realisiert werden.
  • Beschreibung eines Bytefehler-Positionssignalbildners zur Bildung von Bytefehlerpositionssignalen
  • 1 zeigt eine beispielhafte Schaltungsanordnung zur Bestimmung von Bytefehlerpositionssignalen. Beispielhaft wird ein 2-Bytefehler-korrigierender Fehlercode mit Codewörtern aus n Bytes betrachtet, wobei jedes Byte jeweils m-Bit aufweist.
  • Die Schaltungsanordnung weist N Bytefehler-Positionssignalbildner 10, 11, ..., 1i, ..., 1N - 1 auf, die über ihren jeweils 1-Bit breiten Ausgang binäre Bytefehlerpositionssignale BPs0, BPs1, ..., BPsi, ..., BPsN_1 bereitstellen.
  • An jeweils 4 · m-Bit breiten Eingängen der N Bytefehler-Positionssignalbildner 10, 11, ..., 1i, ..., 1N - 1 liegt ein von einem Syndromgenerator (nicht in 1 dargestellt) bereitgestellte 4 · m-Bit breite Fehlersyndrom s = s 1 , s 2 , s 3 , s 4
    Figure DE102021123727B4_0123
    an, das aus den jeweils m-Bit breiten Syndromkomponenten s1, s2, s3, s4 besteht.
  • Werden alle Bytes im Falle eines Fehlers korrigiert, so gilt N = n. Werden weniger als n Bytes im Falle eines Fehlers korrigiert, gilt N < n. Beispielsweise ist es möglich, dass im Falle eines Fehlers nur Datenbytes korrigiert werden. Prüfbytes könnten in so einem Beispiel dann nicht korrigiert werden.
  • Der Bytefehler-Positionssignalbildner 10 ist beispielsweise so ausgestaltet,
    • - dass er das Bytefehlerpositionssignal BPs0 = 1 ausgibt, wenn gilt: α 2 0 { s 1 s 3 + s 2 2 } + α 0 { s 1 s 4 + s 2 s 3 } + s 2 s 4 + s 3 2 = 0
      Figure DE102021123727B4_0124
    • - dass er das Bytefehlerpositionssignal BPs0 = 0 ausgibt, wenn gilt: α 2 0 { s 1 s 3 + s 2 2 } + α 0 { s 1 s 4 + s 2 s 3 } + s 2 s 4 + s 3 2 0
      Figure DE102021123727B4_0125
  • Der Bytefehler-Positionssignalbildner 11 ist beispielsweise so ausgestaltet,
    • - dass er das Bytefehlerpositionssignal BPs1 = 1 ausgibt, wenn gilt:
    α 2 1 { s 1 s 3 + s 2 2 } + α 1 { s 1 s 4 + s 2 s 3 } + s 2 s 4 + s 3 2 = 0
    Figure DE102021123727B4_0126
    • - dass er das Bytefehlerpositionssignal BPs1 = 0 ausgibt, wenn gilt:
    α 2 1 { s 1 s 3 + s 2 2 } + α 1 { s 1 s 4 + s 2 s 3 } + s 2 s 4 + s 3 2 0
    Figure DE102021123727B4_0127
  • Der Bytefehler-Positionssignalbildner 1i ist beispielsweise so ausgestaltet,
    • - dass er das Bytefehlerpositionssignal BPsi = 1 ausgibt, wenn gilt:
    α 2 i { s 1 s 3 + s 2 2 } + α i { s 1 s 4 + s 2 s 3 } + s 2 s 4 + s 3 2 = 0
    Figure DE102021123727B4_0128
    • - dass er das Bytefehlerpositionssignal BPsi = 0 ausgibt, wenn gilt:
    α 2 i { s 1 s 3 + s 2 2 } + α i { s 1 s 4 + s 2 s 3 } + s 2 s 4 + s 3 2 0
    Figure DE102021123727B4_0129
  • Der Bytefehler-Positionssignalbildner 1N - 1 ist beispielsweise so ausgestaltet,
    • - dass er das Bytefehler-Positionssignal BPsN_1 = 1 ausgibt, wenn gilt:
    α 2 ( N 1 ) { s 1 s 3 + s 2 2 } + α N 1 { s 1 s 4 + s 2 s 3 } + s 2 s 4 + s 3 2 = 0
    Figure DE102021123727B4_0130
    • - dass er das Bytefehlerpositionssignal BPsN_1 = 0 ausgibt, wenn gilt:
    α 2 ( N 1 ) { s 1 s 3 + s 2 2 } + α N 1 { s 1 s 4 + s 2 s 3 } + s 2 s 4 + s 3 2 0
    Figure DE102021123727B4_0131
  • Dabei sind die jeweiligen Exponenten von α modulo 2m - 1 zu interpretieren.
  • Liegt ein 2-Bytefehler vor und sind das j-te Byte und das k-te Byte fehlerhaft, dann sind für i=j und für i=k die Bytefehlerpositionssignale BPsi gleich 1, während alle übrigen Bytefehlerpositionssignale BPsi mit l ≠ j, k gleich 0 sind, wobei gilt: 0 i , j , k , l N 1,
    Figure DE102021123727B4_0132
    α 0 = 1  und
    Figure DE102021123727B4_0133
    1  ist das Einselement des Galoisfelds  G F ( 2 m ) .
    Figure DE102021123727B4_0134
  • Bytefehler-Positionssignalbildner gemäß Fig.2
  • 2 zeigt eine Schaltungsanordnung, die eine mögliche Ausgestaltung der in 1 gezeigten Schaltungsanordnung darstellt.
  • Der in 1 gezeigte Bytefehler-Positionssignalbildner 10 umfasst
    • - eine Teilschaltung 210 mit einem 4 · m-Bit breiten Eingang zur Eingabe der Komponenten s1, s2, s3 und s4 des Fehlersyndromes s = s1, s2, s3, s4 und drei jeweils m-Bit breiten Ausgängen,
    • - einen Konstantenmultiplizierer 220 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - einem Konstantenmultiplizierer 230 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - eine XOR-Schaltung 240 mit drei jeweils m-Bit breiten Eingängen und einem m-Bit breiten Ausgang und
    • - eine NOR-Schaltung 250 (NICHT-ODER-Schaltung) mit einem m-Bit breiten Eingang und einem 1-Bit breiten binären Ausgang.
  • Die Teilschaltung 210 ist derart eingerichtet, dass sie bei Eingabe des Fehlersyndroms s
    • - an dem ersten Ausgang s1 · s4 + s2 · s3 ausgibt,
    • - an dem zweiten Ausgang s 1 s 3 + s 2 2
      Figure DE102021123727B4_0135
      ausgibt und
    • - an dem dritten Ausgang s 2 s 4 + s 3 2
      Figure DE102021123727B4_0136
      ausgibt.
  • Der erste Ausgang der Teilschaltung 210 ist mit dem ersten Eingang des Konstantenmultiplizierers 220 verbunden. An dem zweiten Eingang des Konstantenmultiplizierers 220 liegt die Konstante α0 = 1 an, so dass an dem Ausgang des Konstantenmultiplizierers 220 α 0 ( s 1 s 4 + s 2 s 3 ) = s 1 s 4 + s 2 s 3
    Figure DE102021123727B4_0137
    bereitgestellt wird.
  • Der Ausgang des Konstantenmultiplizierers 220 ist mit dem ersten Eingang der XOR-Schaltung 240 verbunden.
  • Der zweite Ausgang der Teilschaltung 210 ist mit dem ersten Eingang des Konstantenmultiplizierers 230 verbunden. An dem zweiten Eingang des Konstantenmultiplizierers 230 liegt die Konstante α2.0 = α0 an, so dass an dem Ausgang des Konstantenmultiplizierers 230 α 0 ( s 1 s 3 + s 2 2 ) = s 1 s 3 + s 2 2
    Figure DE102021123727B4_0138
    bereitgestellt wird.
  • Der Ausgang des Konstantenmultiplizierers 230 ist mit dem zweiten Eingang der XOR-Schaltung 240 verbunden.
  • Der dritte Ausgang der Teilschaltung 210 ist mit dem dritten Eingang der XOR-Schaltung 240 verbunden.
  • Die XOR-Schaltung 240 bildet beispielsweise eine komponentenweise XOR-Verknüpfung der an ihren drei Eingängen anliegenden jeweils m-Bit breiten Werte und stellt an ihrem m-Bit breiten Ausgang den Wert v 0 = α 0 ( s 1 s 4 + s 2 s 3 ) + α 0 ( s 1 s 3 + s 2 2 ) + s 2 s 4 + s 3 2
    Figure DE102021123727B4_0139
    bereit, der an den Eingang der NOR-Schaltung 250 geführt wird. Die NOR-Schaltung 250 stellt an ihrem Ausgang
    • - den binären Wert BPs0 = 1 bereit, wenn v0 = 0 gilt und
    • - den binären Wert BPs0 = 0 bereit, wenn v0 ≠ 0 gilt.
  • Der in 1 gezeigte Bytefehler-Positionssignalbildner 11 umfasst
    • - eine Teilschaltung 211 mit einem 4 - m-Bit breiten Eingang zur Eingabe der Komponenten s1, s2, s3, s4 des Fehlersyndromes s = s1, s2, s3, s4 und drei jeweils m-Bit breiten Ausgängen,
    • - einen Konstantenmultiplizierer 221 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - einen Konstantenmultiplizierer 231 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - eine XOR-Schaltung 241 mit drei jeweils m-Bit breiten Eingängen und einem m-Bit breiten Ausgang und
    • - eine NOR-Schaltung 251 mit einem m-Bit breiten Eingang und einem 1-Bit breiten binären Ausgang.
  • Die Teilschaltung 211 ist derart eingerichtet, dass sie bei Eingabe des Fehlersyndroms s
    • - an dem ersten Ausgang s1 · s4 + s2 · s3 ausgibt,
    • - an dem zweiten Ausgang s 1 s 3 + s 2 2
      Figure DE102021123727B4_0140
      ausgibt und
    • - an dem dritten Ausgang s 2 s 4 + s 3 2
      Figure DE102021123727B4_0141
      ausgibt.
  • Der erste Ausgang der Teilschaltung 211 ist mit dem ersten Eingang des Konstantenmultiplizierers 221 verbunden. An dem zweiten Eingang des Konstantenmultiplizierers 221 liegt die Konstante α1 an, so dass an dem Ausgang des Konstantenmultilipierers 221 α 1 ( s 1 s 4 + s 2 s 3 )
    Figure DE102021123727B4_0142
    bereitgestellt wird.
  • Der Ausgang des Konstantenmultiplizierers 221 ist mit dem ersten Eingang der XOR-Schaltung 241 verbunden.
  • Der zweite Ausgang der Teilschaltung 211 ist mit dem ersten Eingang des Konstantenmultiplizierers 231 verbunden. An dem zweiten Eingang des Konstantenmultiplizierers 231 liegt die Konstante α2 an, so dass an dem Ausgang des Konstantenmultiplizierers 231 α 2 ( s 1 s 3 + s 2 2 )
    Figure DE102021123727B4_0143
    bereitgestellt wird.
  • Der Ausgang des Konstantenmultiplizierers 231 ist mit dem zweiten Eingang der XOR-Schaltung 241 verbunden.
  • Der dritte Ausgang der Teilschaltung 211 ist mit dem dritten Eingang der XOR-Schaltung 241 verbunden.
  • Die XOR-Schaltung 241 bildet beispielsweise eine komponentenweise XOR-Verknüpfung der an ihren drei Eingängen anliegenden jeweils m-Bit breiten Werte an und stellt an ihrem m-Bit breiten Ausgang den Wert v 1 = α 1 ( s 1 s 4 + s 2 s 3 ) + α 2 ( s 1 s 3 + s 2 2 ) + s 2 s 4 + s 3 2
    Figure DE102021123727B4_0144
    bereit, der an den Eingang der NOR-Schaltung 251 geführt wird. Die NOR-Schaltung 251 stellt an ihrem Ausgang
    • - den binären Wert BPs1 = 1 bereit, wenn v1 = 0 gilt und
    • - den binären Wert BPs1 = 0 bereit, wenn v1 ≠ 0 gilt.
  • Der in 1 gezeigte Bytefehler-Positionssignalbildner 1i umfasst
    • - eine Teilschaltung 21i mit einem 4 · m-Bit breiten Eingang zur Eingabe der Komponenten s1, s2, s3 und s4 des Fehlersyndromes s = s1, s2, s3, s4 und drei jeweils m-Bit breiten Ausgängen,
    • - einen Konstantenmultiplizierer 22i mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - einen Konstantenmultiplizierer 23i mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - eine XOR-Schaltung 24i mit drei jeweils m-Bit breiten Eingängen und einem m-Bit breiten Ausgang und
    • - eine NOR-Schaltung 25i mit einem m-Bit breiten Eingang und einem 1-Bit breiten binären Ausgang.
  • Die Teilschaltung 21i ist derart eingerichtet, dass sie bei Eingabe des Fehlersyndroms s
    • - an dem ersten Ausgang s1 . s4 + s2 · s3 ausgibt,
    • - an dem zweiten Ausgang s 1 s 3 + s 2 2
      Figure DE102021123727B4_0145
      ausgibt und
    • - an dem dritten Ausgang s 2 s 4 + s 3 2
      Figure DE102021123727B4_0146
      ausgibt.
  • Der erste Ausgang der Teilschaltung 21i ist mit dem ersten Eingang des Konstantenmultiplizierers 22i verbunden. An dem zweiten Eingang des Konstantenmultiplizierers 22i liegt die Konstante αi an, so dass an dem Ausgang des Konstantenmultiplizierers 22i α i ( s 1 s 4 + s 2 s 3 )
    Figure DE102021123727B4_0147
    bereitgestellt wird.
  • Der Ausgang des Konstantenmultiplizierers 22i ist mit dem ersten Eingang der XOR-Schaltung 24i verbunden.
  • Der zweite Ausgang der Teilschaltung 21i ist mit dem ersten Eingang des Konstantenmultiplizierers 23i verbunden. An dem zweiten Eingang des Konstantenmultiplizierers 23i liegt die Konstante α2·i an, so dass an dem Ausgang des Konstantenmultiplizierers 23i α 2 i ( s 1 s 3 + s 2 2 )
    Figure DE102021123727B4_0148
    bereitgestellt wird.
  • Der Ausgang des Konstantenmultiplizierers 23i ist mit dem zweiten Eingang der XOR-Schaltung 24i verbunden.
  • Der dritte Ausgang der Teilschaltung 21i ist mit dem dritten Eingang der XOR-Schaltung 24i verbunden.
  • Die XOR-Schaltung 24i bildet beispielsweise eine komponentenweise XOR-Verknüpfung der an ihren drei Eingängen anliegenden jeweils m-Bit breiten Werte und stellt an ihrem m-Bit breiten Ausgang v i = α i ( s 1 s 4 + s 2 s 3 ) + α 2 i ( s 1 s 3 + s 2 2 ) + s 2 s 4 + s 3 2
    Figure DE102021123727B4_0149
    bereit, der an den Eingang der NOR-Schaltung 25i geführt wird. Die NOR-Schaltung 25i stellt an ihrem Ausgang
    • - den binären Wert BPsi = 1 bereit, wenn vi = 0 gilt und
    • - den binären Wert BPsi = 0 bereit, wenn vi ≠ 0 gilt.
  • Der in 1 gezeigte Bytefehler-Positionssignalbildner 1N-1 umfasst
    • - eine Teilschaltung 21N-1 mit einem 4 - m-Bit breiten Eingang zur Eingabe der Komponenten s1, s2, s3 und s4 des Fehlersyndromes s = s1, s2, s3, s4 und drei jeweils m-Bit breiten Ausgängen,
    • - einen Konstantenmultiplizierer 22N-1 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - einen Konstantenmultiplizierer 23N-1 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - eine XOR-Schaltung 24N-1 mit drei jeweils m-Bit breiten Eingängen und einem m-Bit breiten Ausgang und
    • - eine NOR-Schaltung 25N-1 mit einem m-Bit breiten Eingang und einem 1-Bit breiten binären Ausgang.
  • Die Teilschaltung 21N-1 ist derart eingerichtet, dass sie bei Eingabe des Fehlersyndroms s
    • - an dem ersten Ausgang s1 · s4 + s2 · s3 ausgibt,
    • - an dem zweiten Ausgang s 1 s 3 + s 2 2
      Figure DE102021123727B4_0150
      ausgibt und
    • - an dem dritten Ausgang s 2 s 4 + s 3 2
      Figure DE102021123727B4_0151
      ausgibt.
  • Der erste Ausgang der Teilschaltung 21N-1 ist mit dem ersten Eingang des Konstantenmultiplizierers 22N-1 verbunden. An dem zweiten Eingang des Konstantenmultiplizierers 22N-1 liegt die Konstante αN-1 an, so dass an dem Ausgang des Konstantenmultiplizierers 22N-1 α N 1 ( s 1 s 4 + s 2 s 3 )
    Figure DE102021123727B4_0152
    bereitgestellt wird.
  • Der Ausgang des Konstantenmultiplizierers 22N-1 ist mit dem ersten Eingang der XOR-Schaltung 24N-1 verbunden.
  • Der zweite Ausgang der Teilschaltung 21N-1 ist mit dem ersten Eingang des Konstantenmultiplizierers 23N-1 verbunden. An dem zweiten Eingang des Konstantenmultiplizierers 23N-1 liegt die Konstante a2·(N-1) an, so dass an dem Ausgang des Konstantenmultiplizierers 23N-1 α 2 ( N 1 ) ( s 1 s 3 + s 2 2 )
    Figure DE102021123727B4_0153
    bereitgestellt wird.
  • Der Ausgang des Konstantenmultiplizierers 23N-1 ist mit dem zweiten Eingang der XOR-Schaltung 24N-1 verbunden.
  • Der dritte Ausgang der Teilschaltung 21N-1 ist mit dem dritten Eingang der XOR-Schaltung 24N-1 verbunden.
  • Die XOR-Schaltung 24N-1 bildet beispielsweise eine komponentenweise XOR-Verknüpfung der an ihren drei Eingängen anliegenden jeweils m-Bit breiten Werte und stellt an ihrem m-Bit breiten Ausgang den Wert v N 1 = α N 1 ( s 1 s 4 + s 2 s 3 ) + α 2 ( N 1 ) ( s 1 s 3 + s 2 2 ) + s 2 s 4 + s 3 2
    Figure DE102021123727B4_0154
    bereit, der an den Eingang der NOR-Schaltung 25N-1 geführt wird. Die NOR-Schaltung 25N-1 stellt an ihrem Ausgang
    • - den binären Wert BPsN_1 = 1 bereit, wenn vN-1 = 0 gilt und
    • - den binären Wert BPsN_1 = 0 bereit, wenn vN-1 ≠ 0 gilt.
  • Beispielhafte Zusammenfassung der Teilschaltungen
  • Die Teilschaltungen 210, 211, ..., 21i, ..., 21N-1 in 2 sind funktional gleich. Somit ist es möglich, dass diese Teilschaltungen in einer Teilschaltung 31 zusammengefasst werden.
  • 3 zeigt eine solche Teilschaltung 31, die die Teilschaltungen 210, 211, ..., 21i, ..., 21N-1 zusammenfasst. Der restliche in 3 gezeigte Schaltungsteil ist identisch zu 2.
  • Beispielsweise können die Bytefehler-Positionssignalbildner 10, 11, ..., 1i, ... 1N-1 gemäß 1 die gemeinsamen Teilschaltung 31 nutzen.
  • Beispielhafte Implementierung der Teilschaltung 31
  • 4 zeigt eine mögliche Implementierung der in 3 dargestellten Teilschaltung 31.
  • Die Teilschaltung 31 weist vier jeweils m-Bit breite Eingänge zur Eingabe der Komponenten s1, s2, s3, s4 auf, die das Syndrom s bilden. Weiterhin sind vier Multiplikatoren 41, 42, 44 und 47 mit jeweils zwei m-Bit breiten Eingängen und einem m-Bit breiten Ausgang, zwei Quadrierer 45 und 48 mit jeweils einem m-Bit breiten Eingang und einem m-Bit breiten Ausgang und drei XOR-Schaltungen 43, 46 und 49 mit jeweils zwei m-Bit breiten Eingängen und einem m-Bit breiten Ausgang vorgesehen.
  • Die XOR-Schaltungen 43, 46, 49 führen jeweils eine komponentenweise XOR-Verknüpfung der an ihren jeweiligen Eingängen anliegenden m-komponentigen Werten aus. Die Multiplikatoren führen eine Multiplikation im Galoisfeld GF(2m) aus und die Quadrierer quadrieren ihren am Eingang anliegenden Operanden ebenfalls im Galoisfeld GF(2m).
  • Der die Komponente s1 führende Eingang ist mit dem ersten Eingang des Multiplikators 41 und mit dem ersten Eingang des Multiplikators 44 verbunden.
  • Der die Komponente s2 führende Eingang ist mit dem ersten Eingang des Multiplikators 42, mit dem ersten Eingang des Multiplikators 47 und mit dem Eingang des Quadrierers 45 verbunden.
  • Der die Komponente s3 führende Eingang ist mit dem zweiten Eingang des Multiplikators 42, mit dem zweiten Eingang des Multiplikators 44 und mit dem Eingang des Quadrierers 48 verbunden.
  • Der die Komponente s4 führende Eingang ist mit dem zweiten Eingang des Multiplikators 41 und mit dem zweiten Eingang des Multiplikators 47 verbunden.
  • Der Ausgang des Multiplikators 41 ist in den ersten Eingang der XOR-Schaltung 43 geführt. Der Ausgang des Multiplikators 42 ist in den zweiten Eingang der XOR-Schaltung 43 geführt. An dem Ausgang der XOR-Schaltung 43 wird das Signal s1 s4 + s2 s3 bereitstellt.
  • Der Ausgang des Multiplikators 44 ist in den ersten Eingang der XOR-Schaltung 46 geführt. Der Ausgang des Quadrierers 45 ist mit dem zweiten Eingang der XOR-Schaltung 46 verbunden. An dem Ausgang der XOR-Schaltung 46 wird das Signal s 1 s 3 + s 2 2
    Figure DE102021123727B4_0155
    bereitstellt.
  • Der Ausgang des Multiplikators 47 ist in den ersten Eingang der XOR-Schaltung 49 geführt. Der Ausgang des Quadrierers 48 ist mit dem zweiten Eingang der XOR-Schaltung 49 verbunden. An dem Ausgang der XOR-Schaltung 49 wird das Signal s 2 s 4 + s 3 2
    Figure DE102021123727B4_0156
    bereitstellt.
  • Bytefehlerkorrekturwerte für 2-Bytefehler
  • 5 zeigt eine beispielhafte Schaltung zur Bildung von Bytefehlerkorrekturwerten für insgesamt N Bytes im Falle eines 2-Bytefehlers. Die betrachteten N Bytes sind von 0 bis N - 1 nummeriert.
  • Ein Bytefehlerkorrekturwert a(i)cor für das i-te Byte mit 0 ≤ i ≤ N - 1 wird in Abhängigkeit von dem aktuellen Fehlersyndrom s, der Byteposition i und dem Bytefehlerpositionssignal BPsi bestimmt gemäß a ( i ) c o r = B P s i a ( i ) .
    Figure DE102021123727B4_0157
  • Beispielsweise werden für alle N Bytepositionen Bytefehlerkorrekturwerte bestimmt. Für Bytepositionen, die nicht fehlerhaft sind, werden die Bytefehlerkorrekturwerte maskiert. Beispielsweise kann die Maskierung erfolgen, indem ein Bytefehlerpositionssignal mit dem Wert 0 mit dem Bytefehlerkorrekturwert multipliziert wird.
  • Liegt ein 2-Bytefehler in den Bytepositionen i und j vor, können das i-te und das j-Byte korrigiert werden, indem das i-te und j-te Byte mit einem entsprechenden Bytefehlerkorrekturwert a(i)cor = a(i) ≠ 0 bzw. a(j)cor = a(j) ≠ 0 komponentenweise XOR-verknüpft werden.
  • Die Bytes, die nicht fehlerhaft sind, werden nicht korrigiert. Hierzu werden für deren Bytepositionen die Bytefehlerkorrekturwerte zu 0 gesetzt (z.B. durch die vorstehend erläuterte Multiplikation des Bytefehlerkorrekturwerts mit 0) und die korrekten Bytes werden sodann komponentenweise mit diesem Wert 0 XOR-verknüpft. Durch die XOR-Verknüpfung mit dem Wert 0 bleibt der ursprüngliche Wert unverändert.
  • Für das i-te fehlerhafte Byte ist das Bytefehlerpositionssignal BPsi = 1 und es gilt: a ( i ) c o r = B P s i a ( i ) = a ( i ) .
    Figure DE102021123727B4_0158
  • Für das j-te fehlerhafte Byte ist das Bytefehlerpositionssignal BPsj = 1 und es gilt: a ( j ) c o r = B P s j a ( j ) = a ( j ) .
    Figure DE102021123727B4_0159
  • Für ein k-tes, nicht fehlerhaftes Byte mit k ≠ i, j ist das Bytefehlerpositionssignal BPsk = 0 und es gilt: a ( k ) c o r = B P s k a ( k ) = 0.
    Figure DE102021123727B4_0160
  • Ist das k-te Byte mit k ≠ i, j nicht fehlerhaft, wird es nicht korrigiert. Dies kann gemäß dem in 5 gezeigten Beispiel erreicht werden, indem das k-te Byte komponentenweise mit dem Wert 0 XOR-verknüpft wird, so dass sich der Wert des k-ten Bytes nicht ändert. Damit maskiert das Bytefehlerpositionssignal den Bytefehlerkorrekturwert zu 0, so dass keine Korrektur erfolgt.
  • Liegt im Falle eines 2-Bytefehlers ein erster Bytefehler in der Byteposition j und ein zweiter Bytefehler in der Byteposition k vor, sind die Bytefehlerkorrekturwerte a(j)cor und a(k)cor ungleich 0, während die Bytefehlerkorrekturwerte a(i)cor für i ≠ j, k jeweils gleich 0 sind. Es gilt dann auch B P s j = B P s k = 1
    Figure DE102021123727B4_0161
    und B P s i = 0  f u ¨ i j , k .
    Figure DE102021123727B4_0162
  • 5 umfasst N Bytefehler-Positionssignalbildner 10, 11, ..., 1i, ..., 1N-1 zur Bildung der Bytefehlerpostionssignale BPs0, BPs1, ..., BPsi, ..., BPsN-1 mit jeweils einem 4 · m-Bit breiten (bzw. einem 4 · m-dimensionalen) Eingang zur Eingabe des Fehlersyndromes s und einem 1-Bit breiten (bzw. 1-dimensionalen) Ausgang zur Ausgabe der Bytefehlerpositionssignale BPs0, BPs1, ..., BPsi, ..., BPsN-1.
  • 5 zeigt weiterhin N Bytefehlerkorrekturwertbildner 510, 511, ..., 51i, ..., 5N-1 mit jeweils
    • - einem ersten 1-Bit breiten Eingang zur Eingabe eines Bytefehlerpositionssignals,
    • - einem zweiten 3 - m-Bit breiten Eingang zur Eingabe der Komponenten s1, s2, s3 des Fehlersyndromes s und
    • - einem m-Bit breiten Ausgang zur Ausgabe eines der Bytefehlerkorrekturwerte a(0)cor, a(1)cor, ..., a(i)cor, ..., a(N - 1)cor für die entsprechenden Bytepositionen.
  • Weiterhin umfasst 5 N XOR-Schaltungen 520, 521, ..., 52i, ..., 52N-1 mit jeweils
    • - einem m-Bit breiten ersten Eingang zur Eingabe des entsprechen Bytefehlerkorrekturwerts,
    • - einem zweiten m-Bit breiten Eingang zur Eingabe des entsprechenden zu korrigierenden Bytes und
    • - einem m-Bit breiten Ausgang zur Ausgabe des jeweils m-Bit breiten korrigierten Bytes.
  • An dem 4 · m-Bit breiten Eingang des Bytefehler-Positionssignalbildners 10 liegt das aktuelle Fehlersyndrom s an. An dem 1-Bit breiten Ausgang des Bytefehler-Positionssignalbildners 10, der mit dem ersten Eingang des Bytefehler-Korrekturwertbildners 510 verbunden ist, wird das Bytefehlerpositionssignal BPs0 ausgegeben.
  • An dem zweiten 3 - m-Bit breiten Eingang des Bytefehler-Korrekturwertbildners 510 liegen die Komponenten s1, s2, s3 des Fehlersyndromes s an. Der Bytefehler-Korrekturwertbildner 510 stellt an seinem Ausgang den Bytefehlerkorrekturwert a(0)cor bereit. Der Ausgang des Bytefehler-Korrekturwertbildners 510 ist mit dem ersten Eingang der XOR-Schaltung 520 verbunden. An dem zweiten Eingang der XOR-Schaltung 520 liegt der eventuell fehlerhafte Byte-Wert v 0 '
    Figure DE102021123727B4_0163
    des 0-ten Bytes an. Die XOR-Schaltung 520 bildet die komponentenweise XOR-Verknüpfung von dem eventuell fehlerhaften Byte-Wert v 0 '
    Figure DE102021123727B4_0164
    und dem Bytefehlerkorrekturwert a(0)cor und gibt an ihrem Ausgang den Wert v 0 ' + a ( 0 ) c o r = v 0 c o r
    Figure DE102021123727B4_0165
    aus. Der Bytefehlerkorrekturwert a(0)cor
    • - ist gleich 0, wenn das 0-te Byte korrekt ist und BPs0 = 0 ist und
    • - ungleich 0, wenn das 0-te Byte fehlerhaft ist und BPs0 = 1 ist.
  • An dem 4 · m-Bit breiten Eingang des Bytefehler-Positionssignalbildners 11 liegt das aktuelle Fehlersyndrom s an. An dem 1-Bit breiten Ausgang des Bytefehler-Positionssignalbildners 11, der mit dem ersten Eingang des Bytefehler-Korrekturwertbildners 511 verbunden ist, wird das Bytefehlerpositionssignal BPs1 ausgegeben.
  • An dem zweiten 3 - m-Bit breiten Eingang des Bytefehler-Korrekturwertbildners 511 liegen die Komponenten s1, s2, s3 des Fehlersyndromes s an. Der Bytefehler-Korrekturwertbildner 511 stellt an seinem Ausgang den Bytefehlerkorrekturwert a(1)cor bereit. Der Ausgang des Der Bytefehler-Korrekturwertbildner 511 ist mit dem ersten Eingang der XOR-Schaltung 521 verbunden. An dem zweiten Eingang der XOR-Schaltung 521 liegt der eventuell fehlerhafte Byte-Wert v 1 '
    Figure DE102021123727B4_0166
    des 1-ten Bytes an. Die XOR-Schaltung 521 bildet die komponentenweise XOR-Verknüpfung von dem eventuell fehlerhaften Byte-Wert v 1 '
    Figure DE102021123727B4_0167
    und dem Bytefehlerkorrekturwert a(1)cor und gibt an ihrem Ausgang den Wert v 1 ' + a ( 1 ) c o r = v 1 c o r
    Figure DE102021123727B4_0168
    aus. Der Bytefehlerkorrekturwert a(1)cor
    • - ist gleich 0, wenn das 1-te Byte korrekt ist und BPs1 = 0 ist und
    • - ungleich 0, wenn das 1-te Byte fehlerhaft ist und BPs1 = 1 ist.
  • An dem 4 · m-Bit breiten Eingang des Bytefehler-Positionssignalbildners 1i liegt das aktuelle Fehlersyndrom s an. An dem 1-Bit breiten Ausgang des Bytefehler-Positionssignalbildners 1i, der mit dem ersten Eingang des Bytefehlerkorrekturwertbildners 51i verbunden ist, wird das Bytefehlerpositionssignal BPsi ausgegeben.
  • An dem zweiten 3 - m-Bit breiten Eingang des Bytefehler-Korrekturwertbildners 51i liegen die Komponenten s1, s2, s3 des Fehlersyndromes s an. Der Bytefehler-Korrekturwertbildner 51i stellt an seinem Ausgang den Bytefehlerkorrekturwert a(i)cor bereit. Der Ausgang des Bytefehler-Korrekturwertbildners 51i ist mit dem ersten Eingang der XOR-Schaltung 52i verbunden. An dem zweiten Eingang der XOR-Schaltung 52i liegt der eventuell fehlerhafte Byte-Wert v i '
    Figure DE102021123727B4_0169
    des i-ten Bytes an. Die XOR-Schaltung 52i bildet die komponentenweise XOR-Verknüpfung von dem eventuell fehlerhaften Byte-Wert v i '
    Figure DE102021123727B4_0170
    und dem Bytefehlerkorrekturwert a(i)cor und gibt an ihrem Ausgang den Wert v i ' + a ( i ) c o r = v i c o r
    Figure DE102021123727B4_0171
    aus. Der Bytefehlerkorrekturwert a(i)cor
    • - ist gleich 0, wenn das i-te Byte korrekt ist und BPsi = 0 ist und
    • - ungleich 0, wenn das i-te Byte fehlerhaft ist und BPsi = 1 ist.
  • An dem 4 - m-Bit breiten Eingang des Bytefehler-Positionssignalbildners 1N-1 liegt das aktuelle Fehlersyndrom s an. An dem 1-Bit breiten Ausgang des Bytefehler-Positionssignalbildners 1N-1, der mit dem ersten Eingang des Bytefehlerkorrekturwertbildners 51N-1 verbunden ist, wird das Bytefehlerpositionssignal BPsN-1 ausgegeben.
  • An dem zweiten 3 - m-Bit breiten Eingang des Bytefehler-Korrekturwertbildners 51N-1 liegen die Komponenten s1, s2, s3 des Fehlersyndromes s an. Der Bytefehler-Korrekturwertbildner 51N-1 stellt an seinem Ausgang den Bytefehlerkorrekturwert a(N - 1)cor bereit. Der Ausgang des Bytefehler-Korrekturwertbildners 51N-1 ist mit dem ersten Eingang der XOR-Schaltung 52N-1 verbunden. An dem zweiten Eingang der XOR-Schaltung 52N-1 liegt der eventuell fehlerhafte Byte-Wert v N 1 '
    Figure DE102021123727B4_0172
    des (N - 1)-ten Bytes an. Die XOR-Schaltung 52N-1 bildet die komponentenweise XOR-Verknüpfung von dem eventuell fehlerhaften Byte-Wert v N 1 '
    Figure DE102021123727B4_0173
    und dem Bytefehlerkorrekturwert a (N - 1)cor und gibt an ihrem Ausgang den Wert v N 1 ' + a ( N 1 ) c o r = v N 1 c o r
    Figure DE102021123727B4_0174
    aus. Der Bytefehlerkorrekturwert a (N - 1)cor
    • - ist gleich 0, wenn das (N - 1)-te Byte korrekt ist und BPsN-1 = 0 ist und
    • - ungleich 0, wenn das (N - 1)-te Byte fehlerhaft ist und BPsN-1 = 1 ist.
  • So kann ein Byte-Korrektor 530 den Bytefehler-Positionssignalbildner 10 und den Bytefehler-Korrekturwertbildner 510, ein Byte-Korrektor 531 den Bytefehler-Positionssignalbildner 11 und den Bytefehler-Korrekturwertbildner 511, ein Byte-Korrektor 53i den Bytefehler-Positionssignalbildner 1i und den Bytefehler-Korrekturwertbildner 51i und ein Byte-Korrektor 53N-1 den Bytefehler-Positionssignalbildner 1N-1 und den Bytefehler-Korrekturwertbildner 51N-1 umfassen. Entsprechend können die Byte-Korrektoren 530, 531, ..., 53i, ..., 53N-1 als Byte-Korrektoren für 2-Bytefehler bezeichnet werden.
  • In diesem Beispiel geben die Byte-Korrektoren für einen 2-Bytefehler die Bytefehlerkorrekturwerte für diejenigen beiden Bytepositionen aus, die fehlerhaft sind. Für Bytepositionen, die keinen Fehler aufweisen, ist der Bytefehlerkorrekturwert gleich 0.
  • Für eine eine fehlerhafte Byteposition i gilt: a ( i ) c o r = a ( i ) .
    Figure DE102021123727B4_0175
  • Für eine Byteposition j, die nicht fehlerhaft ist, gilt: a ( j ) c o r = 0,
    Figure DE102021123727B4_0176
  • Hierbei ist a(i) der Bytefehlerkorrekturwert des i-ten Bytes.
  • Um anschaulich darzustellen, dass die Bytefehler-Positionssignalbildner in Abhängigkeit von den vier Komponenten s1, s2, s3, s4 des Fehlersyndroms s das entsprechende Bytefehlerpositionssignal bilden und dass die Bytefehler-Korrekturwertbildner in Abhängigkeit von den drei Komponenten s1, s2, s3 dieses Fehlersyndromes s den entsprechenden Bytefehlerkorrekturwert bilden, sind in 5 beispielhaft zwei Eingangsleitungen dargestellt, eine Eingangsleitung zur Eingabe der Komponenten s1, s2, s3, s4 und eine weitere Eingangsleitung zur Eingabe der Komponenten s1, s2, s3. Diese Leitungen können für die Komponenten s1, s2, s3 auch zusammengefasst werden.
  • Für r = 0,... , N - 1 ist ein Bytefehler-Korrekturwertbildner 51r so konfiguriert, dass er an seinem m-Bit breiten Ausgang, der mit dem ersten m-Bit breiten Eingang einer XOR-Schaltung 52r verbunden ist, im Falle eines 2-Bytefehlers den Bytefehlerkorrekturwert so bildet, dass gilt: a ( r ) c o r = s 1 s 3 + s 2 2 s 3 + α 2 r s 1 B P s r .
    Figure DE102021123727B4_0177
  • Sind im Falle eines 2-Bytefehlers das j-te und das k-te Byte fehlerhaft, wird von dem Bytefehler-Korrekturwertbildner 51j der Bytefehlerkorrekturwert a ( j ) c o r = s 1 s 3 + s 2 2 s 3 + α 2 j s 1 = a ( j )
    Figure DE102021123727B4_0178
    und von dem Bytefehler-Korrekturwertbildner 51k der Bytefehlerkorrekturwert a ( k ) c o r = s 1 s 3 + s 2 2 s 3 + α 2 k s 1 = a ( k )
    Figure DE102021123727B4_0179
    ausgegeben. Für alle anderen Bytefehler-Korrekturwertbildner 51r mit r ≠ j, k und 0 ≤ r ≤ N - 1 ist der Bytefehlerkorrekturwert gleich a (r)cor = 0.
  • Bytefehler-Korrekturwertbildner
  • 6 zeigt eine mögliche Ausgestaltung des Bytefehler-Korrekturwertbildners 51r, wobei r einen Wert von 0 bis N - 1 annehmen kann.
  • Der Bytefehler-Korrekturwertbildner 51r umfasst
    • - zwei Multiplikatoren 61, 66 mit jeweils einem ersten und einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - zwei XOR-Schaltungen 63, 64 mit jeweils einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - einen Konstantenmultiplizierer 67 mit einem ersten und einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang, wobei an dem zweiten Eingang ein konstanter Wert α2r anliegt,
    • - einen Quadrierer 62 mit einem m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - eine Invertierschaltung 65 mit einem m-Bit breiten Eingang und einem m-Bit breiten Ausgang und
    • - eine UND-Schaltung 68 mit einem ersten 1-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang.
  • Am ersten Eingang des Multiplikators 61 liegt der Wert der Komponente s1 und am zweiten Eingang des Multiplikators 61 liegt der Wert der Komponente s3 an. Der Multiplikator 61 bildet im Galoisfeld GF(2m) den Wert s1 · s3 und gibt an seinem Ausgang den Wert s1 · s3 aus. Der Ausgang des Multiplikators 61 ist mit dem ersten Eingang der XOR-Schaltung 63 verbunden.
  • Der zweite Eingang der XOR-Schaltung 63 ist mit dem Ausgang des Quadrierers 62 verbunden, an dessen Eingang der Wert der Komponente s2 anliegt. Somit gibt der Quadrierer 62 an seinem Ausgang den Wert s 2 2
    Figure DE102021123727B4_0180
    aus. Die XOR-Schaltung 63 bildet die komponentenweise XOR-Verknüpfung der an ihrem beiden Eingängen anliegenden Werte und gibt an ihrem Ausgang den Wert s 1 s 3 + s 2 2
    Figure DE102021123727B4_0181
    aus. Der Ausgang der XOR-Schaltung 63 ist mit dem ersten Eingang des Multiplikators 66 verbunden.
  • Am ersten Eingang der XOR-Schaltung 64 liegt der Wert der Komponente s3 an. Am ersten Eingang des Konstantenmultiplizierers 67 liegt der Wert der Komponente s1 und am zweiten Eingang des Konstantenmultiplizierers 67 liegt die Konstante α2r an. Der Konstantenmultiplizierer 67 realisiert die Operation α2r · s1 im Galoisfeld GF(2m). Der Konstantenmultiplizierer kann beispielsweise unter Verwendung von XOR-Gattern implementiert werden.
  • Am Ausgang der XOR-Schaltung 64 wird der Wert s3 + α2rs1 bereitgestellt und an den Eingang des Invertierers 65 geführt. Der Invertierer 65 stellt an seinem Ausgang den Wert 1 s 3 + α 2 r
    Figure DE102021123727B4_0182
    bereit.
  • Der Ausgang des Invertierers 65 ist mit dem ersten Eingang des Multiplikators 66 verbunden. Damit stellt der Multiplikator 66 an seinem Ausgang den Wert s 1 s 3 + s 2 2 s 3 + α 2 r s 1 = a ( r )
    Figure DE102021123727B4_0183
    bereit. Dabei ist a(r) der Bytefehlerkorrekturwert für das r-te Byte. Am ersten Eingang der UND-Schaltung 68 liegt der Wert des Bytefehlerpositionssignals BPsr an. Der zweite Eingang der UND-Schaltung 68 ist mit dem Ausgang des Multiplikators 66 verbunden.
  • Die UND-Schaltung realisiert eine bitweise UND-Verknüpfung der an ihren zweiten Eingängen anliegenden m-Bit mit dem Bytefehlerpositionssignal BPsr, so dass sie an ihrem Ausgang den Wert s 1 s 3 + s 2 2 s 3 + α 2 r s 1 B P s r = a ( r ) B P s r = a ( r ) c o r
    Figure DE102021123727B4_0184
    bereitstellt.
  • Bytefehler-Korrekturwertbilder, alternative Ausführungsform
  • 7 zeigt eine weitere mögliche Ausgestaltung des Bytefehler-Korrekturwertbildners 51r, der wie in 6 für das r-te Byte beschrieben wird, wobei r einen Wert von 0 bis (N - 1) annehmen kann.
  • Der in 7 gezeigte Bytefehler-Korrekturwertbildner 51r umfasst
    • - drei Multiplikatoren 71, 75, 76 jeweils mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - zwei XOR-Schaltungen 72, 77 jeweils mit einem m-Bit breiten ersten Eingang, einem m-Bit breiten zweiten Eingang und einem m-Bit breiten Ausgang,
    • - einen Konstantenmultiplizierer 78 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang, wobei an dem zweiten Eingang ein konstanter Wert α2r anliegt,
    • - einen Quadrierer 73 mit einem m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - zwei Invertierer 74, 79 jeweils mit einem m-Bit breiten Eingang und einem m-Bit breiten Ausgang und
    • - eine UND-Schaltung 710 mit einem ersten 1-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang.
  • Am ersten Eingang des Multiplikators 71 liegt der Wert der Komponente s1 und an dem zweiten Eingang des Multiplikators 71 liegt der Wert der Komponente s3 an. Der Multiplikator 71 bildet im Galoisfeld GF(2m) den Wert s1 · s3 und stellt an seinem Ausgang den Wert s1 · s3 bereit Der Ausgang des Multiplikators 71 ist mit dem ersten Eingang der XOR-Schaltung 72 verbunden.
  • Der zweite Eingang der XOR-Schaltung 72 ist mit dem Ausgang des Quadrierers 73 verbunden, an dessen Eingang der Wert der Komponente s2 anliegt. Damit stellt der Quadrierer 73 an seinem Ausgang den Wert s 2 2
    Figure DE102021123727B4_0185
    bereit. Die XOR-Schaltung 72 bildet die komponentenweise XOR-Verknüpfung der an ihrem beiden Eingängen anliegenden Werte und stellt an ihrem Ausgang den Wert s 1 s 3 + s 2 2
    Figure DE102021123727B4_0186
    bereit. Der Ausgang der XOR-Schaltung 72 ist mit dem Eingang des Invertierers 74 verbunden. An seinem Ausgang stellt der Invertierer 74 den Wert 1 s 1 s 3 + s 2 2
    Figure DE102021123727B4_0187
    bereit.
  • Der Ausgang des Invertierers 74 ist mit dem ersten Eingang des Multiplikators 75 verbunden, an dessen zweitem Eingang der Wert der Komponente s3 anliegt. Weiterhin ist der Ausgang des Invertierers 74 mit dem ersten Eingang des Multiplikators 76 verbunden, an dessen zweitem Eingang der Wert der Komponente s1 anliegt.
  • Der Multiplikator 76 stellt an seinem Ausgang den Wert s 1 s 1 s 3 + s 2 2
    Figure DE102021123727B4_0188
    bereit. Der Ausgang des Multiplikators 76 ist mit dem ersten Eingang des Konstantenmultiplizierers 78 verbunden. An dem zweiten Eingang des Konstantenmultiplizierers 78 liegt der Wert α2r an. Der Konstantenmultiplizierers 78 stellt an seinem Ausgang den Wert α 2 r s 1 s 1 s 3 + s 2 2
    Figure DE102021123727B4_0189
    bereit. Der Konstantenmultiplizierer 78 multipliziert den Wert, der an seinem ersten Eingang anliegt, im Galoisfeld GF2m mit dem Wert der Konstanten α2r, die an seinem zweiten Eingang anliegt. Diese Multiplikation wird durch entsprechende XOR-Verknüpfungen der Bits, die an dem ersten Eingang anliegen, implementiert. Die Konstante α2r ist dem r-ten Byte eindeutig zugeordnet.
  • Der Multiplikator 75 stellt an seinem Ausgang den Wert s 3 s 1 s 3 + s 2 2
    Figure DE102021123727B4_0190
    bereit. Der Ausgang des Multiplikators 75 ist mit dem ersten Eingang der XOR-Schaltung 77 verbunden.
  • Der Ausgang des Konstantenmultiplizierers 78, ist mit dem zweiten Eingang der XOR-Schaltung 77 verbunden. Die XOR-Schaltung 77 stellt an ihrem Ausgang den Wert α 2 r s 1 s 1 s 3 + s 2 2 + s 3 s 1 s 3 + s 2 2 = α 2 r s 1 + s 3 s 1 s 3 + s 2 2
    Figure DE102021123727B4_0191
    bereit. Der Ausgang der XOR-Schaltung 77 ist mit dem Eingang des Invertierers 79 verbunden.
  • Der Invertierer 79 stellt an seinem Ausgang den Wert s 1 s 3 + s 2 2 α 2 r s 1 + s 3
    Figure DE102021123727B4_0192
    bereit. Der Ausgang des Invertierers 79 ist mit dem zweiten Eingang der UND-Schaltung 710 verbunden.
  • An dem ersten Eingang der UND-Schaltung 710 liegt der Wert des Bytefehlerpositionssignals BPs1 an. Die UND-Schaltung 710 realisiert eine bitweise UND-Verknüpfung der an ihrem zweiten Eingang anliegenden m-Bit mit dem Bytefehlerpositionssignal BPsr. Somit stellt die UND-Schaltung 710 an ihrem Ausgang den Wert s 1 s 3 + s 2 2 s 3 + α 2 r s 1 B P s r = a ( r ) B P S r = a ( r ) c o r
    Figure DE102021123727B4_0193
    bereit.
  • Der in 7 gezeigte Teil umfassend die Multiplikatoren 71, 75, 76, die XOR-Schaltung 72 und den Quadrierer 73 gibt an den Ausgängen der Multiplikatoren 75 und 76 die Werte s 3 s 1 s 3 + s 2 2
    Figure DE102021123727B4_0194
    und s 1 s 1 s 3 + s 2 2
    Figure DE102021123727B4_0195
    aus, die allein durch die Werte der Komponenten s1, s2, s3 bestimmt und unabhängig von der Byteposition r sind. Dieser Teil der Schaltung ist für alle in 5 gezeigten Bytefehler-Korrekturwertbildner 510, 511, ..., 51N-1 gleich. Somit ist es möglich, diesen Schaltungsteil nur einmal vorzusehen und die Ausgabesignale der Multiplikatoren 71, 75 und 76 für alle Bytefehler-Korrekturwertbildner 510 bis 51N-1 zu nutzen. Für die unterschiedlichen Bytepositionen 0 bis N-1 ist dann nur jeweils der verbleibende in 7 gezeigte Teil 711 der Schaltung zu realisieren, umfassend die XOR-Schaltung 77, den Konstantenmultiplizierer 78, den Invertierer 79 und die UND-Schaltung 710.
  • Es ist eine Option, einen Bytefehler-Korrekturwertbildner für korrigierbare Bytepositionen, beispielsweise für alle korrigierbaren Bytepositionen oder für einen Teil der korrigierbaren Bytepositionen unter Verwendung von höchsten drei Multiplikationen zu realisieren. Dabei können die drei Multiplikationen unter Verwendung von drei Multiplikatoren implementiert sein. Auch ist es eine Option, dass insbesondere weitere Multiplikationen mit einer Konstanten mittels Konstantenmultiplizierer durchgeführt werden.
  • Korrektur sowohl von 1-Byte, als auch 2-Bytefehlern, Fig.8
  • 8 zeigt eine beispielhafte Schaltung zur Korrektur von 1-Bytefehlern und 2-Bytefehlern, wobei die Schaltungen zur Bestimmung von Bytefehlerpositionssignalen für 2-Bytefehler und zur Korrektur von 2-Bytefehlern verwendet werden können.
  • Die in 8 gezeigte Schaltung ist beispielsweise derart ausgestaltet, dass
    • - ein 2-Bytefehler korrigiert wird, wenn ein 2-Bytefehler vorliegt,
    • - ein 1-Bytefehler korrigiert wird, wenn ein 1-Bytefehler vorliegt und
    • - keine Korrektur erfolgt, wenn kein Fehler vorliegt.
  • Hierzu umfasst 8
    • - N Bytefehler-Korrekturwertbildner 810, ..., 81i, ..., 81N-1 zur Korrektur von 1-Bytefehlern, jeweils mit einem 2 - m-Bit breiten Eingang zur Eingabe der Komponenten s1, s2 und einem m-Bit breiten Ausgang zur Ausgabe eines m-Bit breiten Bytefehlerkorrekturwerts,
    • - N Byte-Korrektoren 530, ..., 53i, ..., 53N-1 zur Korrektur von 2-Bytefehlern, jeweils mit einem 4 · m-Bit breiten Eingang zur Eingabe der Komponenten s1, s2, s3, s4 und einem m-Bit breiten Ausgang zur Ausgabe eines m-Bit breiten Bytefehlerkorrekturwerts, wie dies in 5 beschrieben ist,
    • - N Multiplexer 820, ..., 82i, ..., 82N-1, jeweils mit
      • - einem ersten m-Bit breiten Eingang (0-Eingang),
      • - einem zweiten m-Bit breiten Eingang (1-Eingang),
      • - einem 1-Bit breiten Steuereingang, an den ein binäres Steuersignal st anlegbar ist, und
      • - einem m-Bit breiten Ausgang,
    • - N UND-Schaltungen 830, ..., 83i, ..., 83N-1, jeweils mit einem ersten 1-Bit breiten Eingang zur Eingabe eines binären Fehlersignals E, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang und
    • - N XOR-Schaltungen 840, ..., 84i, ..., 84N-1, jeweils mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang.
  • Eine Leitung 85 führt die Komponenten s1, s2 und ist mit dem jeweiligen Eingang der Bytefehler-Korrekturwertbildner 810, ..., 81i, ..., 81N-1 verbunden.
  • Eine Leitung 86 führt die Komponenten s1, s2, s3, s4 und ist mit dem jeweiligen Eingang der Byte-Korrektoren 530, ..., 53i, ..., 53N-1 verbunden.
  • Der Bytefehler-Korrekturwertbildner 810 stellt im Falle eines 1-Bytefehlers in der Byteposition 0 an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte 0-te Byte v 0 '
    Figure DE102021123727B4_0196
    bereit. Dies gilt entsprechend für die weiteren Bytefehler-Korrekturwertbildner. So stellt der Bytefehler-Korrekturwertbildner 81i im Falle eines 1-Bytefehlers in der Byteposition i an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte i-te Byte v i '
    Figure DE102021123727B4_0197
    bereit. Der Bytefehler-Korrekturwertbildner 81N-1 stellt im Falle eines 1-Bytefehlers in der Byteposition (N - 1) an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte (N - 1)-te Byte v N 1 '
    Figure DE102021123727B4_0198
    bereit.
  • Eine mögliche Realisierung eines Bytefehler-Korrekturwertbildner zur Korrektur eines 1-Bytefehlers wird im Zusammenhang mit 10 erläutert.
  • Im Hinblick auf eine mögliche Realisierung der Byte-Korrektoren 530 bis 53N-1 sei beispielsweise auf die im Zusammenhang mit 2 beschriebenen Bytefehler-Positionssignalbildner und die im Zusammenhang mit 6 und 7 beschriebenen Bytefehler-Korrekturwertbildner verwiesen.
  • Der Ausgang des Bytefehler-Korrekturwertbildners 810 ist mit dem ersten Eingang des Multiplexers 820 verbunden. Der Ausgang des Byte-Korrektors 530 ist mit dem zweiten Eingang des Multiplexers 820 verbunden. Ist der Wert des Steuersignales st gleich 0, dann verbindet der Multiplexer 820 seinen 0-Eingang (den ersten Eingang) mit seinem Ausgang. Ist der Wert des Steuersignales st gleich 1, dann verbindet der Multiplexer 820 seinen 1-Eingang (den zweiten Eingang) mit seinem Ausgang.
  • Am ersten Eingang der UND-Schaltung 830 liegt das binäre Fehlersignal E an. Der Ausgang des Multiplexers 820 ist mit dem zweiten Eingang der UND-Schaltung 830 verbunden. Der Ausgang der UND-Schaltung 830 ist mit dem ersten Eingang der XOR-Schaltung 840 verbunden. An dem zweiten Eingang der XOR-Schaltung 840 liegt das eventuell fehlerhafte Byte v 0 '
    Figure DE102021123727B4_0199
    an. Die XOR-Schaltung 840 stellt an ihrem Ausgang den korrigierten Byte-Wert v 0 c o r
    Figure DE102021123727B4_0200
    bereit.
  • Die UND-Schaltung 830 ermöglicht eine komponentenweise UND-Verknüpfung des an ihrem zweiten Eingang anliegenden m-stelligen Werts mit dem Fehlersignal E. Ist das Fehlersignal E = 0, gibt die UND-Schaltung 830 den m-komponentigen Wert 0 aus. Ist das Fehlersignal E = 1, gibt die UND-Schaltung 830 den an ihrem zweiten Eingang anliegenden Wert aus.
  • Diese Ausführungen gelten für die verbleibenden Bytepositionen entsprechend.
  • Der Ausgang des Bytefehler-Korrekturwertbildners 81i ist mit dem ersten Eingang des Multiplexers 82i verbunden. Der Ausgang des Bytefehler-Korrekturwertbildners 53i ist mit dem zweiten Eingang des Multiplexers 82i verbunden. Ist der Wert des Steuersignales st gleich 0, dann verbindet der Multiplexer 82i seinen 0-Eingang (den ersten Eingang) mit seinem Ausgang. Ist der Wert des Steuersignales st gleich 1, dann verbindet der Multiplexer 82i seinen 1-Eingang (den zweiten Eingang) mit seinem Ausgang.
  • Am ersten Eingang der UND-Schaltung 83i liegt das binäre Fehlersignal E an. Der Ausgang des Multiplexers 82i ist mit dem zweiten Eingang der UND-Schaltung 83i verbunden. Der Ausgang der UND-Schaltung 83i ist mit dem ersten Eingang der XOR-Schaltung 84i verbunden. An dem zweiten Eingang der XOR-Schaltung 84i liegt das eventuell fehlerhafte Byte v i '
    Figure DE102021123727B4_0201
    an. Die XOR-Schaltung 84i stellt an ihrem Ausgang den korrigierten Byte-Wert v i c o r
    Figure DE102021123727B4_0202
    bereit.
  • Die UND-Schaltung 83i ermöglicht eine komponentenweise UNDVerknüpfung des an ihrem zweiten Eingang anliegenden m-stelligen Werts mit dem Fehlersignal E. Ist das Fehlersignal E = 0, gibt die UND-Schaltung 83i den m-komponentigen Wert 0 aus. Ist das Fehlersignal E = 1, gibt die UND-Schaltung 83i den an ihrem zweiten Eingang anliegenden Wert aus.
  • Der Ausgang des Bytefehler-Korrekturwertbildners 81N-1 ist mit dem ersten Eingang des Multiplexers 82N-1 verbunden. Der Ausgang des Bytefehler-Korrekturwertbildners 53N-1 ist mit dem zweiten Eingang des Multiplexers 82N-1 verbunden. Ist der Wert des Steuersignales st gleich 0, dann verbindet der Multiplexer 82N-1 seinen 0-Eingang (den ersten Eingang) mit seinem Ausgang. Ist der Wert des Steuersignales st gleich 1, dann verbindet der Multiplexer 82N-1 seinen 1-Eingang (den zweiten Eingang) mit seinem Ausgang.
  • Am ersten Eingang der UND-Schaltung 83N-1 liegt das binäre Fehlersignal E an. Der Ausgang des Multiplexers 82N-1 ist mit dem zweiten Eingang der UND-Schaltung 83N-1 verbunden. Der Ausgang der UND-Schaltung 83N-1 ist mit dem ersten Eingang der XOR-Schaltung 84N-1 verbunden. An dem zweiten Eingang der XOR-Schaltung 84N-1 liegt das eventuell fehlerhafte Byte v N 1 '
    Figure DE102021123727B4_0203
    an. Die XOR-Schaltung 84N-1 stellt an ihrem Ausgang den korrigierten Byte-Wert v N 1 c o r
    Figure DE102021123727B4_0204
    bereit.
  • Die UND-Schaltung 83N-1 ermöglicht eine komponentenweise UND-Verknüpfung des an ihrem zweiten Eingang anliegenden m-stelligen Werts mit dem Fehlersignal E. Ist das Fehlersignal E = 0, gibt die UND-Schaltung 83N-1 den m-komponentigen Wert 0 aus. Ist das Fehlersignal E = 1, gibt die UND-Schaltung 83N-1 den an ihrem zweiten Eingang anliegenden Wert aus.
  • Das Fehlersignal E nimmt
    • - den Wert 1 an, wenn ein 1-Bytefehler oder ein 2-Bytefehler aufgetreten ist bzw.
    • - den Wert 0 an, wenn kein Fehler aufgetreten ist.
  • Das Steuersignal st nimmt
    • - den Wert 0 an, wenn ein 1-Bytefehler aufgetreten ist und
    • - den Wert 1 an, wenn ein 2-Bytefehler aufgetreten ist.
  • Schaltung zur Korrektur von mehr als zwei Bytefehlern
  • 9 zeigt eine Schaltung zur Korrektur von 1-Bytefehlern, 2-Bytefehlern bis hin zu t-Bytefehlern. In dieser Schaltung können die in 8 beschriebenen Elemente entsprechend eingesetzt werden.
  • Die in 9 gezeigte Schaltung ermöglicht es, dass
    • - ein 1-Bytefehler korrigiert wird, wenn ein 1-Bytefehler vorliegt,
    • - ein 2-Bytefehler korrigiert wird, wenn ein 2-Bytefehler vorliegt,
    • - ein t-Bytefehler korrigert wird, wenn ein t-Bytefehler vorliegt und
    • - keine Korrektur erfolgt, wenn kein Fehler vorliegt.
  • Beispielhaft wird der Fall beschrieben, dass ein t-Bytefehler-korrigierender und (t + 1)-Bytefehler-erkennender Code genutzt wird, wobei insbesondere t > 2 gilt.
  • Die Schaltung gemäß 9 umfasst
    • - die N Bytefehler-Korrekturwertbildner 810 bis 81N-1 gemäß 8,
    • - die N Byte-Korrektoren 530 bis 53N-1 gemäß 8 (wie auch beschrieben in 5), bis hin zu
    • - N Bytefehler-Korrekturwertbildner 910, ..., 91i, ..., 91N-1 zur Korrektur von t-Bytefehlern, jeweils mit einem 2 · t · m-Bit breiten Eingang zur Eingabe der Komponenten s1, s2, ..., s2t und einem m-Bit breiten Ausgang zur Ausgabe eines m-Bit breiten Bytefehlerkorrekturwerts,
    • - N Multiplexer 920, ..., 92i, ..., 92N-1, jeweils mit
      • - einem ersten m-Bit breiten Eingang (0-Eingang),
      • - einem zweiten m-Bit breiten Eingang (1-Eingang),
      • - bis hin zu einem t-ten m Bit breiten Eingang ((t - 1)-Eingang)
      • - einem Steuereingang, an dem ein Steuersignal st anliegt, das t verschiedene Werte annehmen kann und
      • - einem m-Bit breiten Ausgang.
    • - N UND-Schaltungen 930, ..., 93i, ..., 93N-1, jeweils mit einem ersten 1-Bit breiten Eingang zur Eingabe eines binären Fehlersignales E, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang und
    • - N XOR-Schaltungen 940, ..., 94i, ..., 94N-1, jeweils mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang.
  • Der 0-Eingang eines der Multiplexers 920 bis 92N-1 ist mit seinem Ausgang verbunden, wenn das Steuersignal st den Wert 0 hat. Entsprechend kann eine Verbindung von einem der Eingänge 0 bis (t - 1) mit dem Ausgang hergestellt werden, indem das entsprechende Steuersignal st einen Wert zwischen 0 und (t - 1) annimmt. Gilt beispielsweise st = (t - 1) = 3, dann ist der dritte Eingang (2-Eingang) des Multiplexers mit seinem Ausgang verbunden.
  • Eine Leitung 95 führt die Komponenten s1, s2 und ist mit dem jeweiligen Eingang der Bytefehler-Korrekturwertbildner 810, ..., 81i, ..., 81N-1 verbunden.
  • Eine Leitung 96 führt die Komponenten s1, s2, s3, s4 und ist mit dem jeweiligen Eingang der Byte-Korrektoren 530, ..., 53i, ..., 53N-1 verbunden.
  • Schließlich ist eine Leitung 97 gezeigt, anhand derer die Komponenten s1, s2, ..., s2t an den jeweiligen Eingang der Bytefehler-Korrekturwertbildner 910, ..., 91i, ..., 91N-1 geführt werden.
  • Der Bytefehler-Korrekturwertbildner 810 stellt im Falle eines 1-Bytefehlers in der Byteposition 0 an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte 0-te Byte v 0 '
    Figure DE102021123727B4_0205
    bereit. Dies gilt entsprechend für die weiteren Bytefehler-Korrekturwertbildner. So stellt der Bytefehler-Korrekturwertbildner 81i im Falle eines 1-Bytefehlers in der Byteposition i an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte i-te Byte v i '
    Figure DE102021123727B4_0206
    bereit. Der Bytefehler-Korrekturwertbildner 81N-1 stellt im Falle eines 1-Bytefehlers in der Byteposition (N - 1) an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte (N - 1)-te Byte v N 1 '
    Figure DE102021123727B4_0207
    bereit.
  • Der Byte-Korrektor 530 stellt im Falle eines 2-Bytefehlers an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte 0-te Byte v 0 '
    Figure DE102021123727B4_0208
    bereit. Dies gilt entsprechend für die weiteren Bytefehler-Korrekturwertbildner. So stellt der Bytefehler-Korrekturwertbildner 53i im Falle eines 2-Bytefehlers an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte i-te Byte v i '
    Figure DE102021123727B4_0209
    bereit. Der Bytefehler-Korrekturwertbildner 53N-1 stellt im Falle eines 2-Bytefehlers an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte 1)-te Byte v N 1 '
    Figure DE102021123727B4_0210
    bereit.
  • Der Bytefehler-Korrekturwertbildner 910 stellt im Falle eines t-Bytefehlers an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte 0-te Byte v 0 '
    Figure DE102021123727B4_0211
    bereit. Dies gilt entsprechend für die weiteren Bytefehler-Korrekturwertbildner. So stellt der Bytefehler-Korrekturwertbildner 91i im Falle eines t-Bytefehlers an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte i-te Byte v i '
    Figure DE102021123727B4_0212
    bereit. Der Bytefehler-Korrekturwertbildner 91N-1 stellt im Falle eines t-Bytefehlers an seinem Ausgang den korrekten Bytefehlerkorrekturwert für das fehlerhafte 1)-te Byte v N 1 '
    Figure DE102021123727B4_0213
    bereit.
  • Für nicht-fehlerhafte Bytes sind die zu diesen Bytepositionen zugeordneten Bytefehlerkorrekturwerte jeweils mit dem Wert 0 maskiert.
  • Der Ausgang des Bytefehler-Korrekturwertbildners 810 ist mit dem ersten Eingang (0-Eingang) des Multiplexers 920 verbunden. Der Ausgang des Byte-Korrektoren 530 ist mit dem zweiten Eingang (1-Eingang) des Multiplexers 920 verbunden. Entsprechend ist der Ausgang des Bytefehler-Korrekturwertbildners 910 mit dem t-ten Eingang ((t - 1)-Eingang) des Multiplexers 920 verbunden.
  • Am ersten Eingang der UND-Schaltung 930 liegt das binäre Fehlersignal E an. Der Ausgang des Multiplexers 920 ist mit dem zweiten Eingang der UND-Schaltung 930 verbunden. Der Ausgang der UND-Schaltung 930 ist mit dem ersten Eingang der XOR-Schaltung 940 verbunden. An dem zweiten Eingang der XOR-Schaltung 940 liegt das eventuell fehlerhafte Byte v 0 '
    Figure DE102021123727B4_0214
    an. Die XOR-Schaltung 940 stellt an ihrem Ausgang den korrigierten Byte-Wert v 0 c o r
    Figure DE102021123727B4_0215
    bereit.
  • Die UND-Schaltung 930 ermöglicht eine komponentenweise UND-Verknüpfung des an ihrem zweiten Eingang anliegenden m-stelligen Werts mit dem Fehlersignal E. Ist das Fehlersignal E = 0, gibt die UND-Schaltung 930 den m-komponentigen Wert 0 aus. Ist das Fehlersignal E = 1, gibt die UND-Schaltung 930 den an ihrem zweiten Eingang anliegenden Wert aus.
  • Diese Ausführungen gelten für die verbleibenden Bytepositionen entsprechend.
  • Der Ausgang des Bytefehler-Korrekturwertbildners 81i ist mit dem ersten Eingang (0-Eingang) des Multiplexers 92i verbunden. Der Ausgang des Bytefehler-Korrekturwertbildners 53i ist mit dem zweiten Eingang (1-Eingang) des Multiplexers 92i verbunden. Entsprechend ist der Ausgang des Bytefehler-Korrekturwertbildners 91i mit dem t-ten Eingang ((t - 1)-Eingang) des Multiplexers 92i verbunden.
  • Am ersten Eingang der UND-Schaltung 93i liegt das binäre Fehlersignal E an. Der Ausgang des Multiplexers 92i ist mit dem zweiten Eingang der UND-Schaltung 93i verbunden. Der Ausgang der UND-Schaltung 93i ist mit dem ersten Eingang der XOR-Schaltung 94i verbunden. An dem zweiten Eingang der XOR-Schaltung 94i liegt das eventuell fehlerhafte Byte v i '
    Figure DE102021123727B4_0216
    an. Die XOR-Schaltung 94i stellt an ihrem Ausgang den korrigierten Byte-Wert v i c o r
    Figure DE102021123727B4_0217
    bereit.
  • Die UND-Schaltung 93i ermöglicht eine komponentenweise UNDVerknüpfung des an ihrem zweiten Eingang anliegenden m-stelligen Werts mit dem Fehlersignal E. Ist das Fehlersignal E = 0, gibt die UND-Schaltung 93i den m-komponentigen Wert 0 aus. Ist das Fehlersignal E = 1, gibt die UND-Schaltung 93i den an ihrem zweiten Eingang anliegenden Wert aus.
  • Der Ausgang des Bytefehler-Korrekturwertbildners 81N-1 ist mit dem ersten Eingang (0-Eingang) des Multiplexers 92N-1 verbunden. Der Ausgang des Bytefehler-Korrekturwertbildners 53N-1 ist mit dem zweiten Eingang (1-Eingang) des Multiplexers 92N-1 verbunden. Entsprechend ist der Ausgang des Bytefehler-Korrekturwertbildners 91N-1 mit dem t-ten Eingang ((t - 1)-Eingang) des Multiplexers 92N-1 verbunden.
  • Am ersten Eingang der UND-Schaltung 93N-1 liegt das binäre Fehlersignal E an. Der Ausgang des Multiplexers 92N-1 ist mit dem zweiten Eingang der UND-Schaltung 93N-1 verbunden. Der Ausgang der UND-Schaltung 93N-1 ist mit dem ersten Eingang der XOR-Schaltung 94N-1 verbunden. An dem zweiten Eingang der XOR-Schaltung 94N-1 liegt das eventuell fehlerhafte Byte v N 1 '
    Figure DE102021123727B4_0218
    an. Die XOR-Schaltung 94N-1 stellt an ihrem Ausgang den korrigierten Byte-Wert v N 1 c o r
    Figure DE102021123727B4_0219
    bereit.
  • Die UND-Schaltung 93N-1 ermöglicht eine komponentenweise UND-Verknüpfung des an ihrem zweiten Eingang anliegenden m-stelligen Werts mit dem Fehlersignal E. Ist das Fehlersignal E = 0, gibt die UND-Schaltung 93N-1 den m-komponentigen Wert 0 aus. Ist das Fehlersignal E = 1, gibt die UND-Schaltung 93N-1 den an ihrem zweiten Eingang anliegenden Wert aus.
  • Das Fehlersignal E nimmt
    • - den Wert 1 an, wenn ein 1-Bytefehler oder ein 2-Bytefehler, ... oder ein t-Bytefehler aufgetreten bzw.
    • - den Wert 0 an, wenn kein Fehler aufgetreten ist.
  • Das Steuersignal st nimmt
    • - den Wert 0 an, wenn ein 1-Bytefehler aufgetreten ist,
    • - den Wert 1 an, wenn ein 2-Bytefehler aufgetreten ist,
    • - usw.
    • - den Wert (t - 1) an, wenn ein t-Bytefehler aufgetreten ist.
  • Bytefehler-Korrektor für 1-Bytefehler
  • 10 zeigt eine beispielhafte Schaltung für einen Bytefehler-Korrekturwertbildner 81i für das i-te Byte, wie er z.B. unter Bezugnahme auf 8 erläutert ist.
  • Der Bytefehler-Korrekturwertbildner 81i umfasst
    • - einen Konstantenmultiplizierer 101 mit
      • - einem ersten m-Bit breiten Eingang,
      • - einem zweiten m-Bit breiten Eingang, an dem der konstante Wert αi anliegt und
      • - einem m-Bit breiten Ausgang,
    • - eine XOR-Schaltung 102 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - eine NOR-Schaltung 103 mit einem m-Bit breiten Eingang und einem 1-Bit breiten Ausgang,
    • - eine UND-Schaltung 104 mit einem ersten 1-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang.
  • Weiterhin sind in 10 der Multiplexer 82i und der Bytefehler-Korrekturwertbildner 53i aus 8 (und 5) gezeigt.
  • Der Konstantenmultiplizierer 101, die XOR-Schaltung 102 und die NOR-Schaltung 103 bilden einen Bytefehler-Positionssignalbildner 105 und dienen beispielhaft zur Bildung des Bytefehler-Positionssignals B P s i 1 ,
    Figure DE102021123727B4_0220
    das anzeigt, ob ein 1-Bytefehler in der i-ten Byteposition vorliegt.
  • An dem Ausgang der UND-Schaltung 104 wird der m-dimensionale Bytefehlerkorrekturwert a(i)cor bereitgestellt, falls ein 1-Bytefehler in der Byteposition i aufgetreten ist. Ist der 1-Bytefehler in einer anderen von i verschiedenen Byteposition j aufgetreten, ist das Bytefehler-Positionssignal BPsi = 0 und somit liegt auch am Ausgang der UND-Schaltung 104 der Wert 0 an.
  • Am ersten Eingang des Konstantenmultiplizierers 101 liegt die Komponente s1 und an dem zweiten Eingang des Konstantenmultiplizierers 101 liegt eine Konstante αi an. Der Ausgang des Konstantenmultiplizierers 101 ist mit dem ersten Eingang der XOR-Schaltung 102 verbunden. An dem zweiten Eingang der XOR-Schaltung 102 liegt die Komponente s2 an. Der Ausgang der XOR-Schaltung 102 ist mit dem Eingang der NOR-Schaltung 103 verbunden. Der Ausgang der NOR-Schaltung 103 ist mit dem ersten Eingang der UND-Schaltung 104 verbunden. An dem zweiten Eingang der UND-Schaltung 104 liegt die Komponente s1 an. Der Ausgang der UND-Schaltung 104 ist mit dem ersten Eingang des Multiplexers 82i verbunden.
  • Der zweite Eingang des Multiplexers 82i ist mit dem Ausgang des Bytefehler-Korrekturwertbildners 53i verbunden.
  • Somit wird an dem ersten Eingang des Multiplexers 82i der Bytefehlerkorrekturwert für einen 1-Bytefehler bereitgestellt und an dem zweiten Eingang des Multiplexers 82i wird der Bytefehlerkorrekturwert für einen 2-Bytefehler bereitgestellt.
  • Entsprechend ist das Steuersignal st für den Multiplexer 82i
    • - gleich 0, wenn ein 1-Bytefehler vorliegt, um den ersten Eingang (0-Eingang) des Multiplexers 82i mit seinem Ausgang zu verbinden oder
    • - gleich 1, wenn ein 2-Bytefehler vorliegt, um den zweiten Eingang (1-Eingang) des Multiplexers 82i mit seinem Ausgang zu verbinden.
  • Liegt kein Fehler vor, ist der Wert des Steuersignals st beliebig. Er kann beispielsweise zu 0 festgelegt werden, wie das beispielhaft nachfolgend beschrieben wird.
  • Liegt kein Fehler vor, ist der Wert des Fehlersignals E gleich 0. Dies wurde vorstehend im Zusammenhang mit 8 erläutert. Anhand der nachgeschalteten UND-Schaltung 83i, die das Signal am Ausgang des Multiplexers 82i komponentenweise mit dem Fehlersignal E logisch UND-verknüpft, ist sichergestellt, dass bei einem Fehlersignal E = 0 (also wenn kein Fehler vorliegt) am Ausgang der UND-Schaltung 83i der Wert 0 bereitgestellt wird und zwar unabhängig vom Signal am Ausgang des Multiplexers 82i. Somit erfolgt keine Korrektur des i-ten Bytes.
  • Schaltung zur Bestimmung eines Fehlersignals
  • 11 zeigt eine beispielhafte Schaltung zur Bestimmung des Fehlersignales E wie es beispielsweise in der in 8 gezeigten Schaltung genutzt wird.
  • Die in 11 gezeigte Anordnung umfasst
    • - einen Multiplikator 111 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - eine XOR-Schaltung 113 mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - einen Quadrierer 112 mit einem m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - eine OR-Schaltung 114 (ODER-Schaltung) mit einem m-Bit breiten Eingang und einem 1-Bit breiten Ausgang,
    • - eine OR-Schaltung 116 mit einem m-Bit breiten Eingang und einem 1-Bit breiten Ausgang und
    • - eine OR-Schaltung 115 mit einem ersten binären Eingang, einem zweiten binären Eingang und mit einem binären Ausgang.
  • An dem ersten Eingang des Multiplikators 111 liegt der Wert der Komponente s1 an. An dem zweiten Eingang des Multiplikators 111 liegt der Wert der Komponente s3 an. Der Ausgang des Multiplikators 111 ist mit dem ersten Eingang der XOR-Schaltung 113 verbunden.
  • Die Komponente s1 liegt auch an dem Eingang der OR-Schaltung 116 an. Der Ausgang der OR-Schaltung 116 ist mit dem zweiten Eingang der OR-Schaltung 115 verbunden.
  • Die Komponente s2 liegt an dem Eingang des Quadrierers 112 an. Der Ausgang des Quadrierers 112 ist mit dem zweiten Eingang der XOR-Schaltung 113 verbunden.
  • Der Ausgang der XOR-Schaltung 113 ist mit dem Eingang der OR-Schaltung 114 verbunden und der Ausgang der OR-Schaltung 114 ist mit dem ersten Eingang der OR-Schaltung 115 verbunden.
  • An dem Ausgang der OR-Schaltung 114 wird das Steuersignal st und an dem Ausgang der OR-Schaltung 115 wird das Fehlersignal E bereitgestellt.
  • Das Steuersignal st nimmt den Wert 0 an, wenn gilt: s 1 s 3 + s 2 2 = 0.
    Figure DE102021123727B4_0221
  • Entsprechend nimmt das Steuersignal st den Wert 1 an, wenn gilt: s 1 s 3 + s 2 2 0.
    Figure DE102021123727B4_0222
  • Das Fehlersignal E nimmt den Wert 0 an, wenn das Steuersignal st gleich 0 ist und wenn der Wert der Komponente s1 gleich 0 ist. In diesem Fall liegt weder ein 1-Bytefehler noch ein 2-Bytefehler vor.
  • Ist der Wert des Steuersignals st gleich 1, erfolgt in der Schaltung gemäß 8 eine 2-Byte-Korrektur unter Verwendung der Byte-Korrektoren 530 bis 53N-1.
  • Ist der Wert des Steuersignals st gleich 0, erfolgt in der Schaltung gemäß 8 zunächst eine 1-Byte Korrektur unter Verwendung der Bytefehler-Korrekturwertbildner 810 bis 81N-1. Ist auch das Fehlersignal E gleich 0, so dass weder ein 1-Byte noch ein 2-Byte Fehler vorliegt, geben die UND-Schaltungen 830 bis 83N-1 alle den Wert 0 aus, so dass keine Korrektur der Bytes v 0 '  bis v N 1 '
    Figure DE102021123727B4_0223
    erfolgt.
  • Wird ein 3-Bytefehler erkannt, kann die Fehlerkorrektur beispielsweise abgebrochen werden. Ein solcher Abbruch der Fehlerkorrektur kann auf Systemebene erfolgen.
  • Schaltung zur Erkennen eines 3-Bytefehlers
  • 12 zeigt eine beispielhafte Schaltung zum Erkennen eines 3-Bytefehlers. Hierzu umfasst die Schaltung
    • - vier Multiplikatoren 121, 122, 123, 124, jeweils mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten und einem m-Bit breiten Ausgang,
    • - drei Quadrierer 125, 126, 127, jeweils mit einem m-Bit breiten Eingang und einem m-Bit breiten Ausgang,
    • - drei XOR-Schaltungen 128, 129, 1210, jeweils mit einem ersten m-Bit breiten Eingang, einem zweiten m-Bit breiten Eingang und einem m-Bit breiten Ausgang und
    • - eine OR-Schaltung 1211 mit einem m-Bit breiten Eingang und einem binären Ausgang, wobei die OR-Schaltung 1211 eine komponentenweise ODER-Verknüpfung der an ihrem Eingang anliegenden m-Bit durchführt.
  • An dem ersten Eingang des Multiplikators 121 und an dem zweiten Eingang des Multiplikators 123 liegt der Wert der Komponente s1 an.
  • An dem Eingang des Quadrierers 126 liegt der Wert der Komponente s2 an.
  • An dem Eingang des Quadrierers 125 und an dem zweiten Eingang des Multiplikators 122 liegt der Wert der Komponente s3 an.
  • An dem Eingang des Quadrierers 127 liegt der Wert der Komponente s4 an.
  • An dem zweiten Eingang des Multiplikators 121 und an dem ersten Eingang des Multiplikators 124 liegt der Wert der Komponente s5 an.
  • Der Ausgang des Multiplizierers 121 ist mit dem ersten Eingang der XOR-Schaltung 128 verbunden. Der Ausgang des Quadrierers 125 ist mit dem zweiten Eingang der XOR-Schaltung 128 verbunden. Der Ausgang der XOR-Schaltung 128 ist mit dem ersten Eingang des Multiplizierers 122 verbunden. Der Ausgang des Multiplizierers 122 ist mit dem ersten Eingang der XOR-Schaltung 129 verbunden.
  • Der Ausgang des Quadrierers 127 ist mit dem ersten Eingang des Multiplikators 123 verbunden. Der Ausgang des Multiplikators 123 ist mit dem ersten Eingang der XOR-Schaltung 1210 verbunden.
  • Der Ausgang des Quadrierers 126 ist mit dem zweiten Eingang des Multiplizierers 124 verbunden und der Ausgang des Multiplizierers 124 ist mit dem zweiten Eingang der XOR-Schaltung 1210 verbunden. Der Ausgang der XOR-Schaltung 1210 ist mit dem zweiten Eingang der XOR-Schaltung 129 verbunden. Der Ausgang der XOR-Schaltung 129 ist mit dem Eingang der OR-Schaltung 1211 verbunden und an dem Ausgang der OR-Schaltung 1211 steht ein Signal Err3 bereit, anhand dessen ein 3-Bytefehler bestimmt werden kann.
  • Das Signal Err3 nimmt den Wert 1 an, wenn gilt: ( s 1 s 5 + s 3 2 ) s 3 + s 2 2 s 5 + s 4 2 s 1 = s 1 s 3 s 5 + s 3 3 + s 2 2 s 5 + s 4 2 s 1 0.
    Figure DE102021123727B4_0224
  • Entsprechend nimmt das Signal Err3 den Wert 0 an, wenn gilt: ( s 1 s 5 + s 3 2 ) s 3 + s 2 2 s 5 + s 4 2 s 1 = 0.
    Figure DE102021123727B4_0225
  • Alternative Bestimmung von Bytefehlerkorrekturwerten
  • Nachfolgend wird eine alternative, effiziente Variante zur Bestimmung von Bytefehlerkorrekturwerten beschrieben.
  • Beispielhaft wird die Korrektur von 2-Bytefehlern betrachtet.
  • Der Bytefehlerkorrekturwert a(k) für die k-te Byteposition ist gemäß Gleichung (14) bestimmt zu a ( k ) = s 1 s 3 + s 2 2 s 3 + α 2 k s 1
    Figure DE102021123727B4_0226
  • Somit ist für jede zu korrigierende Byteposition k der aus den Syndromkomponenten s1, s2, s3 bestimmte Wert s 1 s 3 + s 2 2
    Figure DE102021123727B4_0227
    durch s 3 + α 2 k s 1
    Figure DE102021123727B4_0228
    im Galoisfeld GF(2m) zu dividieren. Dieser Divisor hängt von der Byteposition k ab und ist für jede Byteposition unterschiedlich. Damit ist für jede Byteposition eine eigene Division erforderlich.
  • Diese Division kann beispielsweise implementiert werden, indem zunächst der inverse Wert 1 s 3 + α 2 k s 1
    Figure DE102021123727B4_0229
    des Divisors unter Verwendung eines Invertierers im Galoisfeld GF(2m) gebildet wird, der dann unter Verwendung eines Multiplikators mit dem Term s 1 s 3 + s 2 2
    Figure DE102021123727B4_0230
    multipliziert wird.
  • Für jede zu korrigierende Byteposition wird dabei beispielsweise ein Invertierer und ein Multiplikator benötigt.
  • Eine Reduzierung des Realisierungsaufwands kann erreicht werden, indem anstelle von a(k) zunächst 1 a ( k ) = s 3 + α 2 k s 1 s 1 s 3 + s 2 2 = s 3 s 1 s 3 + s 2 2 + s 1 s 1 s 3 + s 2 2 α 2 k
    Figure DE102021123727B4_0231
    bestimmt wird. Mit Invertierung ergibt sich a ( k ) = 1 1 a ( k ) = 1 s 3 s 1 s 3 + s 2 2 + s 1 s 1 s 3 + s 2 2 α 2 k .
    Figure DE102021123727B4_0232
  • Hierbei können der Term s 3 s 1 s 3 + s 2 2
    Figure DE102021123727B4_0233
    und der Term s 1 s 1 s 3 + s 2 2
    Figure DE102021123727B4_0234
    zentral gebildet werden und für alle zu korrigierenden Bytepositionen bereitgestellt werden.
  • Für die k-te Byteposition kann der Term s 1 s 1 s 3 + s 2 2
    Figure DE102021123727B4_0235
    mit α2k multipliziert werden. Diese Multiplikation ist pro Byteposition eine Multiplikation mit einer der Byteposition entsprechenden Konstanten.
  • Mit einem Invertierer im Galoisfeld GF(2m) wird parallel oder zumindest teilweise parallel oder zumindest teilweise zeitgleich (also in Teilen zeitlich überlappend) der inverse Wert von s 3 s 1 s 3 + s 2 2 + s 1 s 1 s 3 + s 2 2 α 2 k
    Figure DE102021123727B4_0236
    bestimmt. Dabei nimmt k alle Werte an, für die Bytepositionen im Falle eines Bytefehlers korrigiert werden. Hierbei ist es von Nachteil, dass für jede zu korrigierende Byteposition bei der (zumindest teilweise) parallelen Verarbeitung ein Invertierer im Galoisfeld GF(2m) benötigt wird.
  • Nachfolgend wird beispielhaft anhand der Korrektur von 2-Bytefehlern erläutert, wie die Bytefehlerkorrekturwerte effizient bestimmt werden können.
  • Hierbei ist es von Vorteil, dass die Koeffizienten eines Lokatorpolynoms symmetrische Funktionen der fehlerhaften Bytepositionen sind und sich als Funktionen von Komponenten des Fehlersyndromes durch Lösen eines linearen Gleichungssystems bestimmen lassen.
  • Im Falle eine 2-Bytefehlers in den Bytepositionen αi und αj sind die Koeffizienten des Lokatorpolynoms L 2 ( x ) = x 2 + x σ 1 + σ 2 = ( x + α i ) ( x + α j )
    Figure DE102021123727B4_0237
    zu σ 1 = α i + α j  und  σ 2 = α i α j
    Figure DE102021123727B4_0238
    bestimmt. Dabei sind σ1 und σ2 symmetrische Funktionen der Bytepositionen αi und αj, wobei σ1 der Koeffizient des linearen Gliedes x des Lokatorpolynoms L2(x) und die Summe von αi und αj ist.
  • Zwischen den Syndromkomponenten s1, s2, s3, s4 und den Koeffizienten σ1 und σ2 des Lokatorpolynoms besteht die Beziehung ( s 1 s 2 s 2 s 3 ) ( σ 2 σ 1 ) = ( s 3 s 4 ) .
    Figure DE102021123727B4_0239
  • Dies lässt sich durch Einsetzen der Werte s 1 = a + b ,
    Figure DE102021123727B4_0240
    s 2 = α i a + α j b ,
    Figure DE102021123727B4_0241
    s 3 = α 2 i a + α 2 j b ,
    Figure DE102021123727B4_0242
    s 4 = α 3 i a + α 3 j b ,
    Figure DE102021123727B4_0243
    σ 1 = α i + α j ,
    Figure DE102021123727B4_0244
    σ 2 = α i α j
    Figure DE102021123727B4_0245
    verifizieren.
  • Gleichung (45) ist ein lineares Gleichungssystem, das es erlaubt, die Koeffizienten σ1 und σ2 als Funktionen der Syndromkomponenten s1, s2, s3, s4 zu σ 1 = s 2 s 3 + s 1 s 4 s 1 s 3 + s 2 2
    Figure DE102021123727B4_0246
    und σ 2 = s 2 s 4 + s 3 1 s 1 s 3 + s 2 2
    Figure DE102021123727B4_0247
    zu bestimmen.
  • Beispielsweise im Falle eines 2-Bytefehlers können die Bytefehlerkorrekturwerte vorteilhaft in Abhängigkeit von dem Koeffizienten σ1 des linearen Gliedes des Lokatorpolynoms L2(x) so bestimmt werden, dass eine einfache Realisierung der Bestimmung der Bytefehlerkorrekturwerte resultiert.
  • Für eine Korrektur möglicherweise in Frage kommende Bytepositionen wird ein potentieller Bytefehlerkorrekturwert für fehlerhafte Bytepositionen und nicht fehlerhafte Bytepositionen bestimmt. Wenn ein 2-Bytefehler vorliegt und eine Byteposition fehlerhaft ist, kann für diese Byteposition mittels des Bytefehlerkorrekturwert eine Korrektur erfolgen. Ist eine Byteposition nicht fehlerhaft, so kann für diese Byteposition der Bytefehlerkorrekturwert einen beliebigen Wert annehmen.
  • Hierbei sei angemerkt, dass die Bezeichnung „fehlerhaft“ annimmt, dass ein Fehler für die Byteposition erkannt wurde. Darüber hinaus gibt es die Möglichkeit, dass ein Fehler vorliegt, der nicht erkannt und folglich auch nicht korrigiert werden kann. Dieser Fall ist durch die Bezeichnung „fehlerhaft“ in dem vorliegenden Kontext nicht abgedeckt. Entsprechendes gilt, wenn vorliegend von „nicht fehlerhaft“ die Rede ist.
  • Unter Verwendung des Lokatorplynoms L2(x) ist ein Bytefehlerpositionssignal für die fehlerhaften und nicht fehlerhaften Bytepositionen bestimmt. Das Bytefehlerpositionssignal für die Byteposition αi nimmt dabei einen ersten Wert an, wenn L2i) = 0 ist und das Byte fehlerhaft ist, und es nimmt einen zweiten, von dem ersten Wert verschiedenen Wert an, wenn L2i) ≠ 0 ist und das Byte nicht fehlerhaft ist.
  • Ist das Byte an der Byteposition αi fehlerhaft und gilt somit L2i) = 0, dann wird der für diese Byteposition bestimmte potentielle Bytefehlerkorrekturwert zur Korrektur für dieses als fehlerhaft erkannte Byte verwendet. Ist das Byte an der Byteposition αi nicht fehlerhaft und gilt somit L2i) ≠ 0, dann wird der für diese Byteposition bestimmte potentielle Bytefehlerkorrekturwert nicht zur Korrektur verwendet.
  • Unter Verwendung des für die jeweilige Byteposition bestimmten Bytefehlerpositionssignals kann somit bestimmt werden, ob der für diese Byteposition bestimmte potentielle Bytefehlerwert zur Korrektur verwendet wird oder nicht.
  • Exemplarisch wird ein Reed-Solomon-Code im Galoisfeld GF(2m) mit vier Syndromkomponenten s1, s2, s3, s4 verwendet.
  • Wie in den Gleichungen (2) und (3) wird zunächst eine H-Matrix verwendet, deren erste Zeile α0, α0, ... , α0 ist. Die in den Gleichungen (2) und (3) verwendeten H-Matrizen HByte weisen 3 Zeilen und 5 Zeilen auf.
  • Die in diesem Abschnitt beispielhaft verwendete H-Matrix H des Reed-Solomon-Codes weist 4 Zeilen auf: H = ( α 0 α 0 α 0 α 0 α 0 α 1 α i α n 1 α 0 α 2 α 2 i α 2 [ n 1 ] α 0 α 3 α 3 i α 3 [ n 1 ] )
    Figure DE102021123727B4_0248
  • Die H-Matrix H gemäß Gleichung (46) ergibt sich aus der H-Matrix HByte gemäß Gleichung (3) durch Streichen der letzten Zeile.
  • Liegt ein 2-Bytefehler mit den Bytefehlerwerten a und b an den Bytepositionen i und j vor, so ergeben sich die Syndromkomponenten s1, s2, s3, s4 gemäß Gleichung (5) zu s 1 = a + b
    Figure DE102021123727B4_0249
    s 2 = α i a + α j b
    Figure DE102021123727B4_0250
    s 3 = α 2 i a + α 2 j b
    Figure DE102021123727B4_0251
    s 4 = α 3 i a + α 3 j b
    Figure DE102021123727B4_0252
  • Ein Lokatorpolynom L2(x) in der Form L 2 ( x ) = x 2 + σ 1 x + σ 2
    Figure DE102021123727B4_0253
    mit σ 1 = s 1 s 4 + s 2 s 3 s 1 s 3 + s 2 2  und  σ 2 = s 2 s 4 + s 3 2 s 1 s 3 + s 2 2
    Figure DE102021123727B4_0254
    ist beispielsweise dadurch bestimmt, dass man die linke Seite der Gleichung (12) durch s 1 s 3 + s 2 2
    Figure DE102021123727B4_0255
    dividiert, so dass L 2 ( x ) = L ( x ) s 1 s 3 + s 2 2
    Figure DE102021123727B4_0256
    gilt.
  • Liegt ein 2-Bytefehler an den Bytepositionen i und j mit den Bytefehlerwerten a und b vor, dann sind die Syndromkomponenten s1 bis s4 entsprechend Gleichung (47) bestimmt. Mit den Syndromkomponenten s1 bis s4 gilt: s 1 s 4 + s 2 s 3 = ( a + b ) ( α 3 i a + α 3 j b ) + ( α i a + α j b ) ( α 2 i a + α 2 j b ) = = α 3 i a 2 + α 3 i a b + α 3 j a b + α 3 j b 2 + + α 3 i a 2 + α 2 i α j a b + α i α 2 j a b + α 3 j b 2 = a b ( α 3 i + α 3 j + α i α 2 j + α j α 2 i )  
    Figure DE102021123727B4_0257
    und s 1 s 3 + s 2 2 = ( a + b ) ( α 2 i a + α 2 j b ) + ( α i a + α j b ) 2 = = α 2 i a 2 + α 2 i a b + α 2 j a b + α 2 j b 2 + α 2 i a 2 + α 2 j b 2 = a b ( α 2 i + α 2 j ) .
    Figure DE102021123727B4_0258
  • Hieraus ergibt sich σ 1 = s 1 s 4 + s 2 s 3 s 1 s 3 + s 2 2 =   = a b ( α 3 i + α 3 j + α i α 2 j + α j α 2 i ) a b ( α 2 i + α 2 j ) =   = α i α i α i + α j α j α j + α i α j α j + α i α i α j α 2 i + α 2 j =   = α 2 i ( α i + α j ) + α 2 j ( α i + α j ) α 2 i + α 2 j   = α i + α j .
    Figure DE102021123727B4_0259
  • In einem Galoisfeld GF(2m) gilt, dass die Addition zweier gleicher Ausdrücke den Wert 0 ergibt. So ist beispielsweise α 3 i a 2 + α 3 i a 2 = 0.
    Figure DE102021123727B4_0260
  • Es gilt weiterhin L 2 ( α i ) = L 2 ( α j ) = 0  und  L 2 ( x ) 0  f u ¨ x α i , α j .
    Figure DE102021123727B4_0261
  • Es ist eine Option, σ1 als komponentenweise XOR-Summe σ 1 = k = 0 n 1 δ k α k
    Figure DE102021123727B4_0262
    zu bestimmen mit δ k = { 1  f u ¨ L 2 ( α k ) = 0 0  f u ¨ L 2 ( α k ) 0
    Figure DE102021123727B4_0263
    σ1 ist gemäß den Gleichungen (52) und (53) als XOR-Summe der beiden Werte des Galoisfeldes GF(2m) bestimmt, die den beiden Nullstellen des Lokatorpolynoms L2(x) entsprechen.
  • Es ist eine Option, anstelle des Lokatorpolynoms aus Gleichung (48) L 2 ( x ) = x 2 + σ 1 x + σ 2
    Figure DE102021123727B4_0264
    ein Lokatorpolynom L 2 ' ( y ) = y 2 σ 2 + y σ 1 + 1
    Figure DE102021123727B4_0265
    zu verwenden. Gleichung (54) ergibt sich durch Einsetzen von y = 1 x
    Figure DE102021123727B4_0266
    in Gleichung (48). Die Nullstellen von L 2 ' ( y )
    Figure DE102021123727B4_0267
    sind α-i und α-j, wenn die Nullstellen von L2 (x) gleich αi und αj sind.
  • Für Bytepositionen, die im Falle eines Bytefehlers korrigiert werden, wird ein Bytefehlerkorrekturwert bestimmt. Sind beispielsweise die Bytepositionen 0 bis n - 1 zu korrigierende Bytepositionen, dann wird für k mit 0 ≤ k ≤ n - 1 ein Bytefehlerwert a(k) so bestimmt, dass gilt: a ( k ) = s 2 σ 1 + s 1 + s 1 σ 1 α k .
    Figure DE102021123727B4_0268
  • Liegt ein 2-Bytefehler in den Bytepositionen αi und αj mit dem Bytefehlerkorrekturwert a in der Byteposition αi und dem Bytefehlerkorrekturwert b in der Byteposition αj vor, so gilt für die i-te Byteposition mit k = i nach Gleichung (55) a ( i ) = s 2 σ 1 + s 1 + s 1 σ 1 α i = a
    Figure DE102021123727B4_0269
    und für die j-te Byteposition mit k = j nach Gleichung (55) a ( j ) = s 2 σ 1 + s 1 + s 1 σ 1 α i = b .
    Figure DE102021123727B4_0270
  • In den Bytepositionen, in denen kein Bytefehler vorliegt, wird der nach Gleichung (55) bestimmte Bytefehlerkorrekturwert nicht zur Korrektur verwendet. Sind im Falle eines 2-Bytefehlers die Werte an den Bytepositionen i und j fehlerhaft, dann werden die für k ≠ i und k ≠ j bestimmten Werte nicht für die Fehlerkorrektur verwendet. An den Bytepositionen k = i und k = j werden die jeweils zur Korrektur erforderlichen Bytefehlerkorrekturwerte a oder b bereitgestellt: Im Falle des 2-Bytefehlers an den Bytepositionen αi und αj werden s 1 = a + b ,
    Figure DE102021123727B4_0271
    s 2 = α i a + α j b
    Figure DE102021123727B4_0272
    σ 1 = α i + α j
    Figure DE102021123727B4_0273
    in Gleichung (55) eingesetzt und es ergibt sich: a ( k ) = α i a + α j b α i + α j + ( a + b ) + ( a + b ) α k α i + α j = = α i a + α j b + α i a + α j a + α j a + α j b + α k a + α k b α i + α j = = a ( α k + α j ) + b ( a k + α i ) α i + α j = = { a  f u ¨ k = i b  f u ¨ k = j .
    Figure DE102021123727B4_0274
  • Es ist von Vorteil, dass eine technische Umsetzung der in Gleichung (55) angegebenen Beziehung eine deutliche Vereinfachung und damit eine höhere Effizienz ermöglicht. So können die Werte s 2 σ 1 + s 1
    Figure DE102021123727B4_0275
    und s 1 σ 1
    Figure DE102021123727B4_0276
    beispielsweise zentral (vorab) und ggf. nur jeweils einmal gebildet und zur Bestimmung aller zu korrigierenden Bytepositionen wiederverwendet werden.
  • Beispielsweise kann für jede zu korrigierende Byteposition k der Wert s 1 σ 1
    Figure DE102021123727B4_0277
    mit dem für die Byteposition k bekannten konstanten Wert αk multipliziert werden. Die Multiplikation mit dem für die Byteposition bekannten Wert αk ist eine Multiplikation mit einer Konstanten und kann mit einem einfachen Konstantenmultiplizierer realisiert werden.
  • Dann können die Werte s 2 σ 1 + s 1  und  s 1 σ 1 α k
    Figure DE102021123727B4_0278
    komponentenweise XOR-verknüpft werden.
  • Somit kann im Unterschied zu bisher bekannten Verfahren eine Invertierung pro Byte im Galoisfeld GF(2m) eingespart werden.
  • Es ist eine Option, eine H-Matrix H* H * = ( α 0 α 1 α i α n 1 α 0 α 2 α 2 i α 2 [ n 1 ] α 0 α 3 α 3 i α 3 [ n 1 ] α 0 α 4 α 4 i α 4 [ n 1 ] )
    Figure DE102021123727B4_0279
    zu verwenden. Die H-Matrix H* gemäß Gleichung (58) weist vier Zeilen auf, wohingegen die H-Matrix H B y t e *
    Figure DE102021123727B4_0280
    gemäß Gleichung (1) lediglich drei Zeilen umfasst. Liegt ein 2-Bytefehler mit den Bytefehlerwerten a und b an den Bytepositionen i und j vor, ergeben sich die Syndromkomponenten s1 bis s4 zu s 1 = α i a + α j b
    Figure DE102021123727B4_0281
    s 2 = α 2 i a + α 2 j b
    Figure DE102021123727B4_0282
    s 3 = α 3 i a + α 3 j b
    Figure DE102021123727B4_0283
    s 4 = α 4 i a + α 4 j b
    Figure DE102021123727B4_0284
  • Mit der H-Matrix H* nach Gleichung (58) und den Syndromkomponenten gemäß Gleichung (59) wird ein Bytefehlerkorrekturwert a(k) für das k-te Byte wie folgt bestimmt: a ( k ) = ( s 2 σ 1 + s 1 ) α k + s 1 σ 1
    Figure DE102021123727B4_0285
  • Liegt ein 2-Bytefehler an den Bytepositionen i und j mit den Bytefehlerwerten a und b vor, dann gilt a(i) = a und a(j) = b. Dies folgt durch Einsetzen der Syndromkomponenten s1 bis s4 gemäß Gleichung (59) in Gleichung (49) und Gleichung (60).
  • Die Implementierung der Beziehung gemäß Gleichung (60) ermöglicht eine Vereinfachung gegenüber bisher bekannten Ansätze. So können die Werte s 2 σ 1 + s 1
    Figure DE102021123727B4_0286
    und s 1 σ 1
    Figure DE102021123727B4_0287
    beispielsweise zentral (vorab) und ggf. nur jeweils einmal gebildet und zur Bestimmung aller zu korrigierenden Bytepositionen wiederverwendet werden.
  • Beispielsweise kann für jede zu korrigierende Byteposition k der Wert s 2 σ 1 + s 1
    Figure DE102021123727B4_0288
    mit dem für die Byteposition k bekannten konstanten Wert α-k bspw. mittels eines Konstantenmultiplizierers multipliziert werden.
  • Dann können die Werte ( s 2 σ 1 + s 1 ) α k  und  s 1 σ 1
    Figure DE102021123727B4_0289
    komponentenweise XOR-verknüpft werden.
  • Somit kann im Unterschied zu bisher bekannten Verfahren eine Invertierung pro Byte im Galoisfeld GF(2m) eingespart werden.
  • Im Falle eines 2-Bytefehlers an der Byteposition αi mit dem Bytefehlerwert a und an der Byteposition αj mit dem Bytefehlerwert b gilt unabhängig von a und b α i + α j = s 1 s 4 + s 2 s 3 s 1 s 3 + s 2 2 .
    Figure DE102021123727B4_0290
  • Dies kann durch Einsetzen der Syndromkomponenten s1 bis s4 gemäß Gleichung (59) verifiziert werden: σ 1 = s 1 s 4 + s 2 s 3 s 1 s 3 + s 2 2 = = a b ( α i α 4 j + α 4 i α j + α 2 i α 3 j + α 3 i α 2 j ) a b ( α i α 3 j + α 3 i α j ) = = α i ( α 3 i α j + α i α 3 j ) + α j ( α i α 3 j + α 3 i α j ) α i α 3 j + α 3 i α j = = α i + α j .
    Figure DE102021123727B4_0291
    Auch bei Verwendung der H-Matrix H* gemäß Gleichung (58) ist es eine Option, σ1 als komponentenweise XOR-Summe σ 1 = k = 0 n 1 δ k α k
    Figure DE102021123727B4_0292
    zu bestimmen, wobei δ k = { 1 f u ¨ r L 2 ( α k ) = 0 0 f u ¨ r L 2 ( α k ) 0
    Figure DE102021123727B4_0293
    gilt.
  • Das Lokatorpolynom L2(x) nimmt im Falle eines 2-Bytefehlers in den Bytepositionen i und j für x = αi und für x = αj den Wert 0 an und in allen anderen Bytepositionen einen Wert ungleich 0 an, so dass sich nach Gleichung (65) im Falle eine 2-Bytefehlers an den Bytepositionen i und j gilt: σ 1 = α i + α j .
    Figure DE102021123727B4_0294
  • 14 zeigt eine beispielhafte Ausgestaltung zur Bildung der Koeffizienten σ1 und σ2 gemäß Gleichung (49) anhand der Syndromkomponenten s1 bis s4 mittels Galoisfeld-Multiplizierern 1401 bis 1406, Addierern (komponentenweise XOR-Verknüpfung) 1407 bis 1409, Quadrierern 1410, 1411 sowie eines Invertierers 1412 (im Galoisfeld GF(2m)).
  • 15 zeigt eine beispielhafte Ausgestaltung zur Bildung des Terms s 1 σ 1 ,
    Figure DE102021123727B4_0295
    der ein Eingangssignal für die in 18 gezeigte Schaltung ist. Laut Gleichung (49) σ 1 = s 1 s 4 + s 2 s 3 s 1 s 3 + s 2 2
    Figure DE102021123727B4_0296
    ergibt sich somit s 1 σ 1 = s 1 s 1 s 4 + s 2 s 3 s 1 s 3 + s 2 2 = s 1 2 s 3 + s 1 s 2 2 s 1 s 4 + s 2 s 3 .
    Figure DE102021123727B4_0297
  • Hierzu umfasst die in 15 dargestellte Schaltung Galoisfeld-Multiplizierer 1501 bis 1505, Addierer 1506 und 1507, Quadrierer 1508 und 1509 sowie einen Invertierer 1510.
  • 16 zeigt eine beispielhafte Ausgestaltung zur Bildung des Terms s 2 σ 1 + s 1 ,
    Figure DE102021123727B4_0298
    der ein Eingangssignal für die in 18 gezeigte Schaltung ist. Wieder folgt aus Einsetzen mit Gleichung (49): s 2 σ 1 + s 1 = s 2 s 1 s 4 + s 2 s 3 s 1 s 3 + s 2 2 + s 1 = = s 1 s 2 s 3 + s 2 3 s 1 s 4 + s 2 s 3 + s 1 ( s 1 s 4 + s 2 s 3 ) s 1 s 4 + s 2 s 3 = = s 1 s 2 s 3 + s 2 3 + s 1 2 s 4 + s 1 s 2 s 3 s 1 s 4 + s 2 s 3 = = s 2 3 + s 1 2 s 4 s 1 s 4 + s 2 s 3 .
    Figure DE102021123727B4_0299
  • Hierzu umfasst die in 16 dargestellte Schaltung Galoisfeld-Multiplizierer 1601 bis 1604, Addierer 1605 und 1606, einen Quadrierer 1607, einen Dritte-Potenz-Bildner 1608 sowie einen Invertierer 1609.
  • 17 zeigt eine beispielhafte Ausgestaltung zur Bildung der Werte des Lokatorpolynoms anhand seiner Koeffizienten σ1 und σ2 für Byteposition i und j. Wird in Gleichung (48) x durch αk ersetzt, so folgt L 2 ( α k ) = α 2 k + σ 1 α k + σ 2 .
    Figure DE102021123727B4_0300
  • In 17 ist für k = i, j die Bestimmung des Lokatorpolynoms gemäß Gleichung (66) gezeigt. Hierzu werden beispielhaft Konstantenmultiplizierer 1701 und 1702, Addierer 1703 bis 1706 sowie ODER-Gatter 1707 und 1708 eingesetzt. Das ODER-Gatter 1707, 1708 führt eine ODER-Verknüpfung der an den m Eingängen anliegenden Signale durch, so dass am Ausgang nur dann der Wert 0 anliegt, wenn an allen Eingängen der Wert 0 anliegt. Somit zeigt der Wert 0 am Ausgang des jeweiligen ODER-Gatters an, ob die Bedingung L 2 ( α k ) = 0
    Figure DE102021123727B4_0301

    erfüllt ist. Wie vorstehend erläutert wurde, liegt ein Fehler vor, wenn diese Bedingung erfüllt ist.
  • 18 zeigt eine beispielhafte Ausgestaltung zur Bildung der Bytefehlerkorrekturwerte a(k) für die Bytepositionen i und j basierend auf dem gemäß
    • - 17 bestimmten und bereitgestellten Lokatorpolynomen L2k),
    • - 16 bestimmten Term s21 +s1 und
    • - 15 bestimmten Term s11.
  • Hierzu werden in 18 beispielhaft Konstantenmultiplizierer 1801 und 1802, Addierer 1803 bis 1804 sowie UND-Gatter 1805 und 1806 eingesetzt, wobei einer der Eingänge des jeweiligen UND-Gatters invertiert wird.
  • Wie zu 17 ausgeführt wurde, zeigt der Wert 0 an, dass die Bedingung gemäß Gleichung (67) erfüllt ist. Dies bedeutet, dass das an der Byteposition k ein Fehler festgestellt werden konnte. Umgekehrt gilt, dass kein Fehler an der Byteposition k bestimmt wurde, wenn L 2 ( α k ) 0
    Figure DE102021123727B4_0302
    gilt. Entsprechend wird der invertierte Wert an den Eingang des UND-Gatters 1805, 1806 gelegt und somit am Ausgang des UND-Gatters 1805, 1806 nur dann der Bytefehlerkorrekturwert a ( k ) = s 2 σ 1 + s 1 + s 1 σ 1 α k .
    Figure DE102021123727B4_0303
    gemäß Gleichung(55) bereitgestellt, wenn ein Bytefehler mittels des Lokatorpolynoms an der Byteposition k festgestellt wurde.

Claims (21)

  1. Schaltungsanordnung zur Korrektur mindestens eines Bytefehlers in einer Binärfolge, die mehrere Bytes umfasst, wobei die Binärfolge im fehlerfreien Fall ein Codewort eines Fehlercodes ist, wobei die Schaltungsanordnung eingerichtet ist - zur Bestimmung mindestens eines Bytefehlerpositionssignals, das angibt, ob ein Byte der Binärfolge fehlerhaft ist oder nicht, - zur Bestimmung mindestens eines Bytefehlerkorrekturwerts anhand dessen eine mittels des Bytefehlerpositionssignals identifizierte fehlerhafte Byteposition korrigierbar ist, - wobei der mindestens eine Bytefehlerkorrekturwert bestimmt wird, indem für jede von mindestens zwei Bytepositionen ein erster Wert und ein zweiter Wert in Abhängigkeit von einem Koeffizienten des Lokatorpolynoms bestimmt werden, - zur Korrektur des mindestens einen Bytefehlers anhand des mindestens einen Bytefehlerkorrekturwerts.
  2. Schaltungsanordnung nach Anspruch 1, bei der das Bytefehlerpositionssignal unter Verwendung von Komponenten eines Fehlersyndroms des Fehlercodes bestimmbar ist.
  3. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der mindestens einer der Bytefehlerkorrekturwerte für mindestens ein korrektes Byte bestimmt wird.
  4. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der ein 2-Bytefehler korrigiert wird.
  5. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der der Fehlercode ein Reed-Solomon-Code in einem Galoisfeld GF(2m) ist, der mindestens 2-Bytefehler korrigieren kann.
  6. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der der erste Wert mit einer der Byteposition zugeordneten Konstanten multipliziert wird und mit dem zweiten Wert komponentenweise XOR-verknüpft wird, wobei die Multiplikation mit der Konstanten eine Multiplikation in dem Galoisfeld GF(2m) ist.
  7. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der das Lokatorpolynom ein Polynom zweiten Grades ist und der Koeffizient des Lokatorpolynoms ein Koeffizient des linearen Glieds des Lokatorpolynoms ist.
  8. Schaltungsanordnung nach Anspruch 7, bei der der Koeffizient des Lokatorpolynoms als eine komponentenweise XOR-Verknüpfung von αi und αj bestimmbar ist, wenn das Bytefehlerpositionssignal für zu korrigierende Positionen i und j einen ersten Wert annimmt und für alle anderen zu korrigierenden Positionen einen zweiten Wert annimmt, der sich von dem ersten Wert unterscheidet und αi und αj durch zwei Nullstellen des Lokatorpolynoms bestimmt sind.
  9. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, - bei der die Bytes m Bits aufweisen, - bei der vier m-Bit breite Fehlersyndromkomponenten s1, s2, s3 und s4 bestimmbar sind, - wobei die ersten und die zweiten Werte in Abhängigkeit von dem Wert des einen Koeffizienten des Lokatorpolynoms und in Abhängigkeit von zwei der vier Syndromkomponenten bestimmt sind.
  10. Schaltungsanordnung nach Anspruch 9, bei der die vier Fehlersyndromkomponenten so bestimmt sind, - dass im Falle eines 2-Bytefehlers mit einem Bytefehlerwert a = a(i) an einer i-ten Byteposition und einem Bytefehlerwert b = a(j) an einer j-ten Byteposition gilt s 1 = a + b ,
    Figure DE102021123727B4_0304
    s 2 = α i a + α j b ,
    Figure DE102021123727B4_0305
    s 3 = α 2 i a + α 2 j b ,
    Figure DE102021123727B4_0306
    s 4 = α 3 i a + α 3 j b ,
    Figure DE102021123727B4_0307
    - αi, αj Elemente des Galoisfeldes GF(2m) sind, die den Bytepositionen i und j entsprechen und - a = a(i) und b = a(j) jeweils m Bit umfassen.
  11. Schaltungsanordnung nach Anspruch 9, bei der die vier Fehlersyndromkomponenten so bestimmt sind, - dass im Falle eines 2-Bytefehlers mit einem Bytefehlerwert a = a(i) an einer i-ten Byteposition und einem Bytefehlerwert b = a(j) an einer j-ten Byteposition gilt s 1 = α i a + α j b ,
    Figure DE102021123727B4_0308
    s 2 = α 2 i a + α 2 j b ,
    Figure DE102021123727B4_0309
    s 3 = α 3 i a + α 3 j b ,
    Figure DE102021123727B4_0310
    s 4 = α 4 i a + α 4 j b ,
    Figure DE102021123727B4_0311
    - αi, αj Elemente des Galoisfeldes GF(2m) sind, die den Bytepositionen i und j entsprechen und - a = a(i) und b = a(j) jeweils m Bit umfassen.
  12. Schaltungsanordnung nach einem der Ansprüche 9 bis 11, bei der das Lokatorpolynom ein Polynom zweiten Grades ist gemäß L 2 ( x ) = x 2 + σ 1 x + σ 2
    Figure DE102021123727B4_0312
    mit Koeffizienten σ1 und σ2 ist, wobei der mindestens eine Bytefehlerkorrekturwert in Abhängigkeit von dem Koeffizienten σ1 bestimmt wird.
  13. Schaltungsanordnung nach einem der Ansprüche 9 bis 12, bei der der erste Wert bestimmt ist durch s 1 σ 1
    Figure DE102021123727B4_0313
    und der zweite Wert bestimmt ist durch s 2 σ 1 + s 1 .
    Figure DE102021123727B4_0314
  14. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der der mindestens eine Bytefehlerkorrekturwert a(i) für eine Byteposition i in Abhängigkeit von dem Koeffizienten σ1 des Lokatorpolynoms bestimmt wird gemäß a ( i ) = s 2 σ 1 + s 1 + s 1 σ 1 α i ,
    Figure DE102021123727B4_0315
    wobei αi ein Element des Galoisfeldes GF(2m) ist, das der i-ten Byteposition zugeordnet ist.
  15. Schaltungsanordnung nach einem der Ansprüche 9 bis 14, bei der der mindestens eine Bytefehlerkorrekturwert a(i) für eine Byteposition i in Abhängigkeit von dem Koeffizienten σ1 des Lokatorpolynoms bestimmt wird gemäß a ( i ) = ( s 2 σ 1 + s 1 ) α i + s 1 σ 1 ,
    Figure DE102021123727B4_0316
    wobei αi ein Element des Galoisfeldes GF(2m) ist, das der i-ten Byteposition zugeordnet ist.
  16. Schaltungsanordnung nach einem der Ansprüche 9 bis 14, bei der der mindestens eine Bytefehlerkorrekturwert a(i) so bestimmt ist, dass gilt s 2 σ 1 = s 2 ( s 1 s 3 + s 2 2 s 1 s 4 + s 2 s 3 )
    Figure DE102021123727B4_0317
    und s 1 σ 1 = s 1 ( s 1 s 3 + s 2 2 s 1 s 4 + s 2 s 3 ) .
    Figure DE102021123727B4_0318
  17. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der das mindestens eine Bytefehlerpositionssignal und/oder der mindestens eine Bytefehlerkorrekturwert parallel bestimmt werden.
  18. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der der Fehlercode ein t-Bytefehler-korrigierender Code ist, wobei mindestens (t + 1) Bytefehlerpositionssignale parallel bestimmt werden.
  19. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der der Fehlercode ein t-Bytefehler-korrigierender Code ist, wobei mindestens (t + 1) Bytefehlerkorrekturwerte parallel bestimmt werden.
  20. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der die Schaltungsanordnung eingerichtet ist, einen der Bytefehler zu korrigieren, indem für das fehlerhafte Byte das Bytefehlerpositionssignal mit dem Bytefehlerkorrekturwert verknüpft wird.
  21. Verfahren zur Korrektur mindestens eines Bytefehlers in einer Binärfolge, die mehrere Bytes umfasst, wobei die Binärfolge im fehlerfreien Fall ein Codewort eines Fehlercodes ist, umfassend die Schritte: - Bestimmung mindestens eines Bytefehlerpositionssignals, das angibt, ob ein Byte der Binärfolge fehlerhaft ist oder nicht, - Bestimmung mindestens eines Bytefehlerkorrekturwerts anhand dessen eine mittels des Bytefehlerpositionssignals identifizierte fehlerhafte Byteposition korrigierbar ist, - wobei der mindestens eine Bytefehlerkorrekturwert bestimmt wird, indem für jede von mindestens zwei Bytepositionen ein erster Wert und ein zweiter Wert in Abhängigkeit von einem Koeffizienten des Lokatorpolynoms bestimmt werden, - Korrektur des mindestens einen Bytefehlers anhand des mindestens einen Bytefehlerkorrekturwerts.
DE102021123727.0A 2021-09-14 2021-09-14 Bytefehlerkorrektur Active DE102021123727B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102021123727.0A DE102021123727B4 (de) 2021-09-14 2021-09-14 Bytefehlerkorrektur
US17/944,510 US20230091457A1 (en) 2021-09-14 2022-09-14 Byte error correction

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102021123727.0A DE102021123727B4 (de) 2021-09-14 2021-09-14 Bytefehlerkorrektur

Publications (2)

Publication Number Publication Date
DE102021123727A1 DE102021123727A1 (de) 2023-03-16
DE102021123727B4 true DE102021123727B4 (de) 2023-07-27

Family

ID=85284603

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021123727.0A Active DE102021123727B4 (de) 2021-09-14 2021-09-14 Bytefehlerkorrektur

Country Status (2)

Country Link
US (1) US20230091457A1 (de)
DE (1) DE102021123727B4 (de)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017125617A1 (de) 2017-11-02 2019-05-02 Infineon Technologies Ag Bestimmung und Verwendung von Bytefehlerpostionssignalen

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017125617A1 (de) 2017-11-02 2019-05-02 Infineon Technologies Ag Bestimmung und Verwendung von Bytefehlerpostionssignalen

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Bossen, D.: b-Adjacent Error Correction, IBM J. Res. Dev., July 1970, Seiten 402 bis 408
Fujiwara, E.: Code Design for Dependable Systems, Wiley, 2006, Seite 65
Lin, S., Costello, D.: Error Control Coding, Prentice Hall, 1983, Seiten 170 bis 177
Okano, H., Imai, H.: A Construction Method of High-Speed Decoders Using ROM's for Bose-Chaudhuri-Hocquengiem and Reed-Solomon Codes, IEEE TRANSACTIONS ON COMPUTERS, VOL. C-36, NO. 10, OCTOBER 1987, Seiten 1165 bis 1171
Wicker, S.: Error Control Systems for Digital Communication and Storage, Prentice Hall, 1995, Seiten 214 bis 224

Also Published As

Publication number Publication date
DE102021123727A1 (de) 2023-03-16
US20230091457A1 (en) 2023-03-23

Similar Documents

Publication Publication Date Title
DE102017125617B4 (de) Bestimmung und Verwendung von Bytefehlerpostionssignalen
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE68906063T2 (de) Parametrischer galois-koerper-multiplizierer-addierer und dessen benutzung in einem digitalen signalprozessor.
DE102014215252B9 (de) Wirksame fehlerkorrektur von mehrbitfehlern
DE2262070A1 (de) Mit schieberegistern arbeitendes fehlerkorrektursystem
DE3231956A1 (de) Anordnung zum uebertragen von binaerdaten ueber eine vielzahl von kanaelen mit hilfe eines faltungscodes
DE2106314B2 (de) Anordnung zur Fehlererkennung und -korrektur in einem aus b Bits bestehenden Byte eines K Datenbytes enthaltenden Datenblocks
DE102005022107B4 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE4105860A1 (de) Schaltungsanordnung zum erkennen und korrigieren von fehlern in datenworten
DE102018131613A1 (de) Fehlererkennung mittels Gruppenfehler
DE102020110787B3 (de) Schaltung und verfahren zum kodieren oder dekodieren eines datenworts
DE102021123727B4 (de) Bytefehlerkorrektur
DE4117726C2 (de) Fehlerkorrekturverfahren und Einrichtung zu dessen Durchführung
DE102013219088B9 (de) Schaltungsanordnung und Verfahren zur Realisierung von Prüfbitkompaktierung für Cross-Parity-Codes
DE3702697C2 (de)
DE102021109391B3 (de) Multibytefehler-Erkennung
DE102016104012A1 (de) Verarbeitung eines Datenworts
DE102015118668B4 (de) Fehlerkorrektur
DE102022101798B3 (de) Fehlerverarbeitung
DE102015121646B4 (de) Fehlerkorrektur
DE102018126685B3 (de) Verarbeitung von Daten
DE102019113970B4 (de) Erkennung von adressfehlern
DE102022111624B4 (de) Fehlerkorrektur mit schneller Syndromberechnung
WO2007090383A2 (de) Schaltungsanordnung und verfahren zur fehlererkennung und anordnung zur überwachung einer digitalen schaltung
DE102022111623A1 (de) Fehlerkorrektur mit schneller Syndromberechnung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final