DE102015118668B4 - Fehlerkorrektur - Google Patents

Fehlerkorrektur Download PDF

Info

Publication number
DE102015118668B4
DE102015118668B4 DE102015118668.3A DE102015118668A DE102015118668B4 DE 102015118668 B4 DE102015118668 B4 DE 102015118668B4 DE 102015118668 A DE102015118668 A DE 102015118668A DE 102015118668 B4 DE102015118668 B4 DE 102015118668B4
Authority
DE
Germany
Prior art keywords
bit
error
circuit arrangement
subcircuit
locator polynomial
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
DE102015118668.3A
Other languages
English (en)
Other versions
DE102015118668A1 (de
Inventor
Thomas Kern
Michael Goessel
Christian Badack
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 DE102015118668.3A priority Critical patent/DE102015118668B4/de
Priority to US15/337,286 priority patent/US10623026B2/en
Priority to JP2016211354A priority patent/JP6336547B2/ja
Publication of DE102015118668A1 publication Critical patent/DE102015118668A1/de
Application granted granted Critical
Publication of DE102015118668B4 publication Critical patent/DE102015118668B4/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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • 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/1525Determination and particular use of error location polynomials
    • 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/1545Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
    • 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/152Bose-Chaudhuri-Hocquenghem [BCH] codes

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Schaltungsanordnung zur Bestimmung eines Korrektursignals basierend auf mindestens einem Bitfehler eines Binärworts- mit mehreren Teilschaltungen (ST), wobei je eine Teilschaltung für eine zu korrigierende Bitposition des Binärworts vorgesehen ist,- wobei jede der Teilschaltungen mindestens zwei Lokatorpolynomwerte bereitstellt,- mit einer Auswahleinheit, die abhängig von den Lokatorpolynomwerten und abhängig von einem Fehlersignal (err, E) ein Korrektursignal bestimmt.

Description

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

Claims (27)

  1. Schaltungsanordnung zur Bestimmung eines Korrektursignals basierend auf mindestens einem Bitfehler eines Binärworts - mit mehreren Teilschaltungen (ST), wobei je eine Teilschaltung für eine zu korrigierende Bitposition des Binärworts vorgesehen ist, - wobei jede der Teilschaltungen mindestens zwei Lokatorpolynomwerte bereitstellt, - mit einer Auswahleinheit, die abhängig von den Lokatorpolynomwerten und abhängig von einem Fehlersignal (err, E) ein Korrektursignal bestimmt.
  2. Schaltungsanordnung nach Anspruch 1, bei der eine Anzahl von T Bitpositionen des Binärworts korrigierbar sind, wobei die Anzahl T größer als eine Anzahl von t-Bitfehlern ist, wobei die t-Bitfehler mittels eines Fehlercodes korrigierbar sind.
  3. Schaltungsanordnung nach Anspruch 2, bei der die Anzahl der t-Bitfehler korrigierbarer Bitfehler größer oder gleich vier ist.
  4. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der jede Teilschaltung mindestens zwei interne Teilschaltungen aufweist, wobei jede interne Teilschaltung einen Lokatorpolynomwert bereitstellt.
  5. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der mittels des Korrektursignals der mindestens eine Bitfehler korrigiert wird.
  6. Schaltungsanordnung nach Anspruch 5, bei der der mindestens eine Bitfehler korrigiert wird anhand einer Verknüpfungsschaltung zur Verknüpfung der mindestens einen zu korrigierenden Bitposition und dem Korrektursignal, indem jeweils zu korrigierende Bits mit den entsprechenden Korrekturwerten umkehrbar eindeutig zu korrigierten Bits verknüpft werden.
  7. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der das Korrektursignal von mindestens zwei Teilschaltungen parallel bestimmt wird.
  8. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der das Fehlersignal - eine erste Komponente (err) umfasst, die eine Anzahl (τ) fehlerhafter Bits angibt und - eine zweite Komponente (E) umfasst, die einen ersten Wert annimmt, wenn ein Fehler erkannt wurde und die einen zweiten Wert annimmt, wenn kein Fehler erkannt wurde.
  9. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der jede der Teilschaltungen höchstens t - 2 Lokatorpolynomwerte bereitstellt, wobei t die Zahl der mittels eines Fehlercodes korrigierbaren Bitfehler angibt.
  10. Schaltungsanordnung nach einem der Ansprüche 1 bis 8, bei der jede der Teilschaltungen t/2 Lokatorpolynomwerte bereitstellt, wenn die Anzahl der Bitfehler gerade ist und (t + 1)/2 Lokatorpolynomwerte bereitstellt, wenn die Anzahl der Bitfehler ungerade ist, wobei t die Anzahl der mittels eines Fehlercodes korrigierbaren Bitfehler bezeichnet.
  11. Schaltungsanordnung nach einem der Ansprüche 9 oder 10, bei der der Fehlercode ein t-Bitfehler korrigierender BCH-Code über dem Galoisfeld GF(2m) ist und die Lokatorpolynomwerte m-stellige Binärwerte sind und m größer oder gleich 4 ist.
  12. Schaltungsanordnung nach Anspruch 11, bei der das Fehlersignal eine Anzahl der aufgetretenen Bitfehler umfasst, wobei diese Anzahl anhand eines Fehlersyndromes des BCH-Codes bestimmt wird.
  13. Schaltungsanordnung nach einem der Ansprüche 11 oder 12, bei der der BCH-Code um mindestens ein Paritätsbit ergänzt ist.
  14. Schaltungsanordnung nach einem der Ansprüche 11 bis 13, bei der Codewörter des BCH-Codes umfassen: - Datenbits, Adressbits und Prüfbits, - Datenbits, aus Adressbits abgeleitet Bits und Prüfbits oder - Datenbits und Prüfbits.
  15. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der die Auswahleinheit pro Teilschaltung unter Verwendung der Lokatorpolynomwerte - ein erstes Korrektursignal bestimmt, wenn kein Fehler an der mit der Teilschaltung assoziierten Bitposition aufgetreten ist und - ein zweites Korrektursignal bestimmt, wenn mindestens ein Fehler an der mit der Teilschaltung assoziierten Bitposition aufgetreten ist, wobei anhand des ersten Korrektursignals und des zweiten Korrektursignals pro Teilschaltung das Korrektursignal bestimmt wird.
  16. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der mehr als vier Teilschaltungen vorgesehen sind.
  17. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der jeder der Teilschaltungen mindestens eine Syndromkomponente bereitgestellt wird.
  18. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der die mindestens zwei Lokatorpolynomwerte mittels einer Konzentriereinheit auf ein Bit konzentriert werden.
  19. Schaltungsanordnung nach Anspruch 18, bei der die Konzentriereinheit mindestens ein Gatter, insbesondere ein ODER Gatter oder ein NICHT-ODER Gatter umfasst.
  20. Schaltungsanordnung nach einem der Ansprüche 18 oder 19, bei der die Konzentriereinheit vor der Auswahleinheit oder nach der Auswahleinheit angeordnet ist.
  21. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der die Auswahleinheit umfasst - einen Multiplexer zur Selektion eines der Lokatorpolynomwerte pro Teilschaltung und - eine Maskiereinheit zur Maskierung der Lokatorpolynomwerte pro Teilschaltung.
  22. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der die Teilschaltungen und/oder die Auswahleinheit Teil mindestens einer integrierten Schaltung oder einer Verarbeitungseinheit sind.
  23. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, bei der das Fehlersignal von einer Fehlererkennung bereitgestellt wird.
  24. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, umfassend Schaltungsteile, die zumindest teilweise gemeinsam realisiert sind.
  25. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, die mittels eines Synthese-Tools optimiert wurde.
  26. Verfahren zur Bestimmung eines Korrektursignals basierend auf mindestens einem Bitfehler eines Binärworts, umfassend die Schritte: - Bestimmen von mindestens zwei Lokatorpolynomwerten mittels einer Teilschaltung für eine zu korrigierende Bitposition des Binärworts, - Bestimmen eines Korrektursignals abhängig von den Lokatorpolynomwerten und abhängig von einem Fehlersignal (err, E)
  27. Verfahren nach Anspruch 26, bei dem das Korrektursignal von mindestens zwei Teilschaltungen parallel bestimmt wird.
DE102015118668.3A 2015-10-30 2015-10-30 Fehlerkorrektur Active DE102015118668B4 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE102015118668.3A DE102015118668B4 (de) 2015-10-30 2015-10-30 Fehlerkorrektur
US15/337,286 US10623026B2 (en) 2015-10-30 2016-10-28 Error correction
JP2016211354A JP6336547B2 (ja) 2015-10-30 2016-10-28 訂正信号を決定する回路構成及びその方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102015118668.3A DE102015118668B4 (de) 2015-10-30 2015-10-30 Fehlerkorrektur

Publications (2)

Publication Number Publication Date
DE102015118668A1 DE102015118668A1 (de) 2017-05-04
DE102015118668B4 true DE102015118668B4 (de) 2020-06-04

Family

ID=58545930

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015118668.3A Active DE102015118668B4 (de) 2015-10-30 2015-10-30 Fehlerkorrektur

Country Status (3)

Country Link
US (1) US10623026B2 (de)
JP (1) JP6336547B2 (de)
DE (1) DE102015118668B4 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102019107139A1 (de) * 2019-03-20 2020-09-24 Infineon Technologies Ag Transformation von aus einem speicher gelesenen binären signalen

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997024813A1 (en) 1995-12-28 1997-07-10 Quantum Corporation Improved system for correction of three and four errors
US8291303B2 (en) 2007-08-13 2012-10-16 Kabushiki Kaisha Toshiba Memory device with error correction system for detection and correction errors in read out data
US8397144B1 (en) 2010-08-16 2013-03-12 Integrated Device Technology, Inc. BCH data correction system and method
US20140108895A1 (en) 2012-10-15 2014-04-17 Samsung Electronics Co., Ltd. Error correction code circuit and memory device including the same
US20150039976A1 (en) 2013-08-02 2015-02-05 Infineon Technologies Ag Efficient Error Correction of Multi-Bit Errors

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5867501A (en) * 1992-12-17 1999-02-02 Tandem Computers Incorporated Encoding for communicating data and commands
KR100200770B1 (ko) * 1996-12-20 1999-06-15 윤종용 에러정정방법 및 장치
US6154868A (en) 1997-07-18 2000-11-28 International Business Machines Corporation Method and means for computationally efficient on-the-fly error correction in linear cyclic codes using ultra-fast error location
US6343367B1 (en) 1999-03-29 2002-01-29 Maxtor Corporation Error correction system for five or more errors
JP3606569B2 (ja) 2001-03-09 2005-01-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 復号回路、該復号回路を用いる復号装置、復号方法および半導体デバイス
US20080140740A1 (en) * 2006-12-08 2008-06-12 Agere Systems Inc. Systems and methods for processing data sets in parallel
US7853853B2 (en) * 2007-10-02 2010-12-14 Intel Corporation Device, system, and method of multi-level feedback
WO2009074979A2 (en) * 2007-12-12 2009-06-18 Densbits Technologies Ltd. Chien-search system employing a clock-gating scheme to save power for error correction decoder and other applications
JP5248300B2 (ja) * 2008-12-24 2013-07-31 三菱電機株式会社 誤り訂正復号装置および誤り訂正復号方法
US8468431B2 (en) * 2010-07-01 2013-06-18 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
JP2012038226A (ja) * 2010-08-11 2012-02-23 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8601351B2 (en) * 2011-03-16 2013-12-03 Intel Corporation BCH decoding with multiple sigma polynomial calculation algorithms
US8875001B1 (en) * 2011-09-08 2014-10-28 Xilinx, Inc. Circuitry for parallel decoding of data blocks
US9246516B2 (en) * 2012-12-20 2016-01-26 Intel Corporation Techniques for error correction of encoded data
US9281844B2 (en) * 2013-04-18 2016-03-08 Apple Inc. Configurable and low power encoder for cyclic error correction codes

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997024813A1 (en) 1995-12-28 1997-07-10 Quantum Corporation Improved system for correction of three and four errors
US8291303B2 (en) 2007-08-13 2012-10-16 Kabushiki Kaisha Toshiba Memory device with error correction system for detection and correction errors in read out data
US8397144B1 (en) 2010-08-16 2013-03-12 Integrated Device Technology, Inc. BCH data correction system and method
US20140108895A1 (en) 2012-10-15 2014-04-17 Samsung Electronics Co., Ltd. Error correction code circuit and memory device including the same
US20150039976A1 (en) 2013-08-02 2015-02-05 Infineon Technologies Ag Efficient Error Correction of Multi-Bit Errors

Also Published As

Publication number Publication date
DE102015118668A1 (de) 2017-05-04
JP6336547B2 (ja) 2018-06-06
US20170126253A1 (en) 2017-05-04
JP2017098945A (ja) 2017-06-01
US10623026B2 (en) 2020-04-14

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
DE102014215252B9 (de) Wirksame fehlerkorrektur von mehrbitfehlern
DE3382661T2 (de) Korrektur von fehlerbuendeln in datengruppen.
DE68906063T2 (de) Parametrischer galois-koerper-multiplizierer-addierer und dessen benutzung in einem digitalen signalprozessor.
DE2060643B2 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE2262070A1 (de) Mit schieberegistern arbeitendes fehlerkorrektursystem
DE3787900T2 (de) Verfahren und Gerät zur Erzeugung von Prüfungs-Byten zur Fehlerdetektion für einen Datenblock.
DE102006005817B4 (de) Fehlererkennungsvorrichtung für einen Adressdecoder und Vorrichtung zur Fehlererkennung für einen Adressdecoder
DE102005022107B4 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE102011087634B9 (de) Vorrichtung und verfahren zum erfassen eines fehlers in einem codierten binärwort
DE2217935B2 (de) Anordnung und Verfahren zur Korrektur von Doppelfehlern in einer Nachricht
DE102015118668B4 (de) Fehlerkorrektur
DE102020110787B3 (de) Schaltung und verfahren zum kodieren oder dekodieren eines datenworts
DE102021109391B3 (de) Multibytefehler-Erkennung
DE102013219088B9 (de) Schaltungsanordnung und Verfahren zur Realisierung von Prüfbitkompaktierung für Cross-Parity-Codes
DE102016104012A1 (de) Verarbeitung eines Datenworts
DE3702697C2 (de)
DE102015121646B4 (de) Fehlerkorrektur
DE102010041680A1 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines 1-Bit-Fehlers in einer codierten Bitsequenz, Vorrichtung und Verfahren zur Korrektur eines 1-Bit-Fehlers in einer codierten Bitsequenz und Decodierer und Verfahren zum Decodieren einer fehlerhaften, codierten Bitsequenz
DE102021123727B4 (de) Bytefehlerkorrektur
DE102019113970B4 (de) Erkennung von adressfehlern
DE102022101798B3 (de) Fehlerverarbeitung
DE102013112020B4 (de) Verfahren und Vorrichtung zum Erkennen von Bitfehlern
DE102018126685B3 (de) Verarbeitung von Daten

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