DE102022111624B4 - Fehlerkorrektur mit schneller Syndromberechnung - Google Patents

Fehlerkorrektur mit schneller Syndromberechnung Download PDF

Info

Publication number
DE102022111624B4
DE102022111624B4 DE102022111624.7A DE102022111624A DE102022111624B4 DE 102022111624 B4 DE102022111624 B4 DE 102022111624B4 DE 102022111624 A DE102022111624 A DE 102022111624A DE 102022111624 B4 DE102022111624 B4 DE 102022111624B4
Authority
DE
Germany
Prior art keywords
matrix
code
linear
determined
syndrome calculation
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
DE102022111624.7A
Other languages
English (en)
Other versions
DE102022111624A1 (de
Inventor
Rainer Göttfert
Wieland Fischer
Berndt Gammel
Martin Schläffer
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 DE102022111624.7A priority Critical patent/DE102022111624B4/de
Priority to US18/195,469 priority patent/US20230370091A1/en
Publication of DE102022111624A1 publication Critical patent/DE102022111624A1/de
Application granted granted Critical
Publication of DE102022111624B4 publication Critical patent/DE102022111624B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • 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/136Reed-Muller [RM] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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/1505Golay Codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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
    • 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/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Landscapes

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

Abstract

Verfahren zur Fehlerkorrektur,- bei dem basierend auf einem Datenwort eine Syndromberechnung mit einer Matrix M basierend auf einer Matrix H eines Codes durchgeführt wird,- bei dem, falls anhand des Ergebnisses der Syndromberechnung erkennbar ist, dass das Datenwort fehlerhaft ist, das Ergebnis der Syndromberechnung mittels einer linearen Abbildung transformiert wird,- bei dem anhand des Ergebnisses der linearen Abbildung mittels eines effizienten Fehlerkorrekturalgorithmus ein Fehlervektor bestimmt wird,- bei dem anhand des Fehlervektors das fehlerhafte Datenwort korrigiert wird.- bei dem die für die Syndromberechnung genutzte Matrix M basierend auf der Matrix H des Codes wie folgt bestimmt wird:- für die Zeilenvektoren der Matrix H werden Linearkombinationen bestimmt,- für jede Linearkombination wird ein Hamminggewicht bestimmt,- basierend auf den entsprechend ihres ansteigenden Hamminggewichts priorisierten Linearkombinationen werden Zeilenvektoren der Matrix M bestimmt, wobei Koeffizienten der jeweils selektierten Linearkombinationen Zeilen einer Matrix J bestimmen,- bei dem für die Zeilenvektoren der Matrix H nicht-triviale Linearkombinationen bestimmt werden,- bei dem für jede Linearkombination das Hamminggewicht bestimmt wird,- bei dem die Linearkombinationen entsprechend ihres Hamminggewichts gruppiert werden,- bei dem Linearkombinationen der Reihe nach mit ansteigendem Hamminggewicht selektiert werden und anhand jeder selektierten Linearkombination eine Zeile der Matrix M bestimmt wird sowie anhand der Koeffizienten der selektierten Linearkombination eine Zeile der Matrix J bestimmt wird,- bei dem die Linearkombinationen mit ansteigendem Hamminggewicht selektiert werden, bis alle Zeilen der Matrix M und alle Zeilen der Matrix J bestimmt sind,- bei dem die lineare Abbildung auf der inversen Matrix J-1basiert.

Description

  • Der hier beschriebene Ansatz betrifft Lösungen zur Fehlerverarbeitung, umfassend z.B. die Erkennung und/oder Korrektur von Fehlern.
  • DE 10 2020 110 787 B3 betrifft einen Ansatz zum Kodieren bzw. Dekodieren eines Datenworts.
  • US 6 381 713 B1 betrifft die Behandlung von Übertragungsfehlern bei fehlerhaften Informationsfeldern.
  • DE 2 041 320 A betrifft die Korrektur von Übertragungsfehlern bei Nachrichten.
  • US 2008/0059867 A1 beschreibt Lösungsansätze zur Dekodierung bei der Verwendung linearer Blockcodes.
  • [Russo, L [u.a.] : Sparsifying Parity-Check Matrices, Applied Soft Computing 96, 31.07.2020] betrifft die effiziente Reduzierung der Belegungen (d.h. die Anzahl der 1-Einträge) in Parity-Check-Matrizen.
  • US 2010/0287440 A1 offenbart Matrixstrukturen zur Blockcodierung.
  • Die Aufgabe der Erfindung besteht darin, Nachteile bekannter Lösungen zur Korrektur von Fehlern zu vermeiden und insbesondere eine effiziente Korrektur von Fehlern zu ermöglichen.
  • Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind insbesondere den abhängigen Ansprüchen entnehmbar.
  • Diese hierin vorgeschlagenen Beispiele können auf zumindest einer der nachfolgenden Lösungen basieren. Insbesondere können Kombinationen der nachfolgenden Merkmale eingesetzt werden, um ein gewünschtes Ergebnis zu erreichen. Die Merkmale des Verfahrens können mit (einem) beliebigen Merkmal(en) der Vorrichtung oder der Schaltung oder umgekehrt kombiniert werden.
  • Zur Lösung der Aufgabe wird ein Verfahren zur Fehlerkorrektur angegeben,
    • - bei dem basierend auf einem Datenwort eine Syndromberechnung mit einer Matrix M basierend auf einer Matrix H eines Codes durchgeführt wird,
    • - bei dem, falls anhand des Ergebnisses der Syndromberechnung erkennbar ist, dass das Datenwort fehlerhaft ist, das Ergebnis der Syndromberechnung mittels einer linearen Abbildung transformiert wird,
    • - bei dem anhand des Ergebnisses der linearen Abbildung mittels eines effizienten Fehlerkorrekturalgorithmus ein Fehlervektor bestimmt wird,
    • - bei dem anhand des Fehlervektors das fehlerhafte Datenwort korrigiert wird,
    • - bei dem die für die Syndromberechnung genutzte Matrix M basierend auf der Matrix H des Codes wie folgt bestimmt wird:
      • - für die Zeilenvektoren der Matrix H werden Linearkombinationen bestimmt,
      • - für jede Linearkombination wird ein Hamminggewicht bestimmt,
      • - basierend auf den entsprechend ihres ansteigenden Hamminggewichts priorisierten Linearkombinationen werden Zeilenvektoren der Matrix M bestimmt, wobei Koeffizienten der jeweils selektierten Linearkombinationen Zeilen einer Matrix J bestimmen,
    • - bei dem für die Zeilenvektoren der Matrix H nicht-triviale Linearkombinationen bestimmt werden,
    • - bei dem für jede Linearkombination das Hamminggewicht bestimmt wird,
    • - bei dem die Linearkombinationen entsprechend ihres Hamminggewichts gruppiert werden,
    • - bei dem Linearkombinationen der Reihe nach mit ansteigendem Hamminggewicht selektiert werden und anhand jeder selektierten Linearkombination eine Zeile der Matrix M bestimmt wird sowie anhand der Koeffizienten der selektierten Linearkombination eine Zeile der Matrix J bestimmt wird,
    • - bei dem die Linearkombinationen mit ansteigendem Hamminggewicht selektiert werden, bis alle Zeilen der Matrix M und alle Zeilen der Matrix J bestimmt sind,
    • - bei dem die lineare Abbildung auf der inversen Matrix J-1 basiert.
  • Bei dem Datenwort kann es sich um eine beliebige Information handeln, beispielsweise eine vorgegebene Anzahl von Bits oder Bytes.
  • Es ist eine Weiterbildung, dass keine Korrektur erfolgt, falls anhand des Ergebnisses der Syndromberechnung bestimmt wurde, dass kein Fehler erkannt wurde.
  • Es ist eine Weiterbildung, dass die für die Syndromberechnung genutzte Matrix M die folgenden Eigenschaften aufweist:
    • - jede Zeile der Matrix M weist möglichst wenige Einsen auf,
    • - die Matrix M weist insgesamt möglichst wenige Einsen auf.
  • Es ist eine Weiterbildung, dass die Matrix J-1 so bestimmt wird, dass sie möglichst wenige Einsen pro Zeile aufweist.
  • Weiterhin wird eine Vorrichtung zur Fehlerkorrektur vorgeschlagen, umfassend eine Verarbeitungseinheit, eingerichtet zur Durchführung der folgenden Schritte:
    • - basierend auf einem Datenwort, Durchführen einer Syndromberechnung mit einer Matrix M basierend auf einer Matrix H eines Codes,
    • - falls anhand des Ergebnisses der Syndromberechnung erkennbar ist, dass das Datenwort fehlerhaft ist, Transformieren des Ergebnisses der Syndromberechnung mittels einer linearen Abbildung,
    • - Bestimmen, anhand des Ergebnisses der linearen Abbildung, eines Fehlervektors mittels eines effizienten Fehlerkorrekturalgorithmus,
    • - Korrigieren des fehlerhaften Datenworts anhand des Fehlervektors,
    • - wobei die für die Syndromberechnung genutzte Matrix M basierend auf der Matrix H des Codes wie folgt bestimmt wird:
      • - Bestimmen von Linearkombinationen für die Zeilenvektoren der Matrix H,
      • - Bestimmen eines Hamminggewichts für jede Linearkombination,
      • - basierend auf den entsprechend ihres ansteigenden Hamminggewichts priorisierten Linearkombinationen, Bestimmen von Zeilenvektoren der Matrix M, wobei Koeffizienten der jeweils selektierten Linearkombinationen Zeilen einer Matrix J bestimmen,
    • - ferner eingerichtet zum
      • - Bestimmen von nicht-trivialen Linearkombinationen für die Zeilenvektoren der Matrix H,
      • - Bestimmen des Hamminggewichts für jede Linearkombination,
      • - Gruppieren der Linearkombinationen entsprechend ihres Hamminggewichts,
      • - Selektieren von Linearkombinationen der Reihe nach mit ansteigendem Hamminggewicht, wobei anhand jeder selektierten Linearkombination eine Zeile der Matrix M bestimmt wird sowie anhand der Koeffizienten der selektierten Linearkombination eine Zeile der Matrix J bestimmt wird,
      • - Selektieren der Linearkombinationen gemäß ihrem ansteigendem Hamminggewicht solange, bis alle Zeilen der Matrix M und alle Zeilen der Matrix J bestimmt sind,
    • - wobei die lineare Abbildung auf der inversen Matrix J-1 basiert.
  • Die hier genannte Verarbeitungseinheit kann insbesondere als eine Prozessoreinheit und/oder eine zumindest teilweise festverdrahtete oder logische Schaltungsanordnung ausgeführt sein, die beispielsweise derart eingerichtet ist, dass das Verfahren wie hierin beschrieben durchführbar ist. Besagte Verarbeitungseinheit kann jede Art von Prozessor oder Rechner oder Computer mit entsprechend notwendiger Peripherie (Speicher, Input/Output-Schnittstellen, Ein-Ausgabe-Geräte, etc.) sein oder umfassen.
  • Die vorstehenden Erläuterungen betreffend das Verfahren gelten für die Vorrichtung entsprechend. Die jeweilige Vorrichtung kann in einer Komponente oder verteilt auf mehrere Komponenten ausgeführt sein.
  • Es ist eine Weiterbildung, dass die Vorrichtung und/oder die Verarbeitungseinheit derart eingerichtet ist, dass keine Korrektur erfolgt, falls anhand des Ergebnisses der Syndromberechnung bestimmt wurde, dass kein Fehler erkannt wurde.
  • Es ist eine Weiterbildung, dass die für die Syndromberechnung genutzte Matrix M die folgenden Eigenschaften aufweist:
    • - jede Zeile der Matrix M weist möglichst wenige Einsen auf,
    • - die Matrix M weist insgesamt möglichst wenige Einsen auf.
  • Es ist eine Weiterbildung, dass die Vorrichtung und/oder die Verarbeitungseinheit derart eingerichtet ist, dass die Matrix J-1 so bestimmt wird, dass sie möglichst wenige Einsen pro Zeile aufweist.
  • Ergänzend können hierin beschriebene Lösungen die folgenden Ansätze berücksichtigen oder umfassen: Ein Verfahren zur Fehlerkorrektur,
    • - bei dem eine Syndromberechnung in einer Code-Domäne eines zweiten Codes durchgeführt wird,
    • - bei dem ein effizienter Fehlerkorrekturalgorithmus in einer Code-Domäne eines ersten Codes durchgeführt wird.
  • Die Code-Domäne ist beispielsweise durch einen Vektorraum des Codes bestimmt. Bei dem Code handelt es sich vorzugsweise um einen Fehler-erkennenden und/oder Fehler-korrigierenden Code. Der erste Code verfügt über einen effizienten Fehlerkorrekturalgorithmus. Vorzugsweise ist der erste Code ein Code, für den ein solcher effizienter Fehlerkorrekturalgorithmus bekannt ist. Beispielsweise handelt es sich bei dem ersten Code um einen der folgenden Codes: Einen Hamming-Code, einen BCH-Code, einen Reed-Muller-Code, einen Simplex-Code, einen Golay-Code oder einen Goppa-Code.
  • Durch den Wechsel zwischen den Code-Domänen ist es möglich, die Syndromberechnung in der Code-Domäne des zweiten Codes effizienter durchzuführen und dennoch den effizienten Fehlerkorrekturalgorithmus des ersten Codes (nach dem Wechsel zurück in dessen Code-Domäne) verwenden zu können.
  • Es ist eine Weiterbildung, dass zwischen der Syndromberechnung und der Durchführung des effizienten Fehlerkorrekturalgorithmus ein Übergang zwischen den Code-Domänen durchgeführt wird mittels mindestens einer linearen Abbildung.
  • Es ist eine Weiterbildung, dass
    • - ein Datenwort in der Code-Domäne des ersten Codes empfangen wird und mittels einer ersten lineare Abbildung in die Code-Domäne des zweiten Codes überführt wird,
    • - die Syndromberechnung in der Code-Domäne des zweiten Codes basierend auf dem Ergebnis der ersten linearen Abbildung durchgeführt wird und, falls anhand des Ergebnisses der Syndromberechnung erkennbar ist, dass das Datenwort fehlerhaft ist, mittels einer zweiten linearen Abbildung das Ergebnis der Syndromberechnung in die Code-Domäne des ersten Codes überführt wird,
    • - anhand des Ergebnisses der zweiten linearen Abbildung in der Code-Domäne des ersten Codes mittels des effizienten Fehlerkorrekturalgorithmus ein Fehlervektor bestimmt wird,
    • - anhand des Fehlervektors das fehlerhafte Datenwort korrigiert wird.
  • Es ist eine Weiterbildung, dass
    • - die Syndromberechnung in der Code-Domäne des zweiten Codes basierend auf einem empfangenen Datenwort durchgeführt wird und, falls anhand des Ergebnisses der Syndromberechnung erkennbar ist, dass das Datenwort fehlerhaft ist, mittels einer zweiten linearen Abbildung das Ergebnis der Syndromberechnung in die Code-Domäne des ersten Codes überführt wird,
    • - anhand des Ergebnisses der zweiten linearen Abbildung in der Code-Domäne des ersten Codes mittels des effizienten Fehlerkorrekturalgorithmus ein Fehlervektor der Code-Domäne des ersten Codes bestimmt wird,
    • - mittels einer ersten linearen Abbildung der Fehlervektor der Code-Domäne des ersten Codes in einen Fehlervektor der Code-Domäne des zweiten Codes überführt wird,
    • - anhand des Fehlervektors der Code-Domäne des zweiten Codes das fehlerhafte Datenwort korrigiert wird.
  • Es ist eine Weiterbildung, dass
    • - der erste Code durch eine Matrix H bestimmt ist,
    • - der zweite Code durch eine Matrix K bestimmt ist,
    • - die erste lineare Abbildung P und die zweite lineare so bestimmt sind, dass gilt H = L K P .
      Figure DE102022111624B4_0001
  • Es ist eine Weiterbildung, dass die Matrix K eine Kontrollmatrix ist, die eine Einheitsmatrix umfasst.
  • Es ist eine Weiterbildung, dass die erste lineare Abbildung eine Permutation umfasst.
  • Es ist eine Weiterbildung, dass keine Korrektur erfolgt, falls anhand des Ergebnisses der Syndromberechnung bestimmt wurde, dass kein Fehler erkannt wurde.
  • Eine beispielhafte Vorrichtung zur Fehlerkorrektur kann eine Verarbeitungseinheit umfassen, die eingerichtet ist zur Durchführung des hierin beschriebenen Verfahrens.
  • Auch wird ein Computerprogrammprodukt vorgeschlagen, das direkt in einen Speicher eines digitalen Computers ladbar ist, umfassend Programmcodeteile, die dazu geeignet sind, Schritte dieses Verfahrens durchzuführen.
  • Weiterhin wird das oben genannte Problem gelöst mittels eines computerlesbaren Speichermediums, z.B. eines beliebigen Speichers, umfassend von einem Computer ausführbare Anweisungen (z.B. in Form von Programmcode), die dazu geeignet sind, dass der Computer Schritte des hier beschriebenen Verfahrens durchführt.
  • Die oben beschriebenen Eigenschaften, Merkmale und Vorteile dieser Erfindung sowie die Art und Weise, wie diese erreicht werden, werden nachfolgend beschrieben im Zusammenhang mit einer schematischen Beschreibung von Ausführungsbeispielen, die im Zusammenhang mit den Zeichnungen näher erläutert werden. Dabei können zur Übersichtlichkeit gleiche oder gleichwirkende Elemente mit gleichen Bezugszeichen versehen sein.
    • 1 zeigt ein beispielhaftes Flussdiagramm zur Veranschaulichung einer Funktionsweise eines Decoders zur Bestimmung eines Fehlervektors e .
      Figure DE102022111624B4_0002
    • 2 zeigt ein beispielhaftes Schaltdiagramm für eine Umverdrahtung.
    • 3 zeigt eine Code-Domäne eines ersten Codes und eine Code-Domäne eines zweiten Codes, wobei ein Übergang zwischen den Code-Domänen mittels (z.B. linearer) Transformation erfolgt und eine effiziente Fehlerkorrektur dadurch erreicht wird, dass die Syndromberechnung in der Code-Domäne des zweiten Codes und der effiziente Fehlerkorrekturalgorithmus in der Code-Domäne des ersten Codes erfolgt.
    • 4 zeigt ein zu 3 alternatives Beispiel für die effiziente Fehlerkorrektur.
    • 5 zeigt ein beispielhaftes Diagramm zur Veranschaulichung der effizienten Syndromberechnung insbesondere mittels Hardware.
  • Jede binäre r × n Matrix H vom Rang r definiert einen binären linearen Code C der Länge n und der Dimension k = n - r. Dieser Code ist der Nullraum der Matrix H, d.h. C = { c GF ( 2 ) 2 : H c T = 0 }
    Figure DE102022111624B4_0003
    mit
    • - einem Codewort c
      Figure DE102022111624B4_0004
      (auch bezeichnet als Vektor c
      Figure DE102022111624B4_0005
      ) des Codes C,
    • - dem endlichen Körper GF(2) = 10, 11 der Ordnung zwei,
    • - GF(2)n als n-dimensionalem Vektorraum (Galoisfeld) aller binären Zeilenvektoren der Länge n und
    • - c T
      Figure DE102022111624B4_0006
      als transponiertem Vektor des Vektors (Codeworts) c .
      Figure DE102022111624B4_0007
  • Die Matrix H wird Kontrollmatrix des Codes C genannt. Der Code C ist durch die Kontrollmatrix H eindeutig definiert. Der Code ist beispielsweise ein Fehlererkennender und/oder Fehler-korrigierender Code.
  • Ein Gewicht (Hamminggewicht) w ( y )
    Figure DE102022111624B4_0008
    eines binären Vektors y
    Figure DE102022111624B4_0009
    ist definiert als die Anzahl der Einsen in dem binären Vektor y .
    Figure DE102022111624B4_0010
    Jeder lineare Code enthält den Nullvektor Ö, der das Gewicht Null hat:
  • Das kleinste Gewicht aller vom Nullvektor verschiedenen Vektoren c
    Figure DE102022111624B4_0011
    eines linearen Codes C wird als Minimumdistanz des Codes C bezeichnet: d = min ( w ( c ) : c C \ { 0 } )
    Figure DE102022111624B4_0012
  • Ein linearer Code der Länge n, der Dimension k und der Minimumdistanz d wird als (n, k, d)-Code bezeichnet.
  • Mit einem Code der Minimumdistanz d sind prinzipiell alle t-Bitfehler korrigierbar, wobei gilt: 0 ≤ t < d/2.
  • Korrigierbar bedeutet hierbei insbesondere, dass die t Fehlerpositionen in dem empfangenen fehlerhaften Codewort eindeutig bestimmt sind. Diese Fehlerpositionen sind dabei nicht in allen Fällen (insbesondere innerhalb einer vorgegebenen Zeitdauer) berechenbar.
  • Die Fehlerpositionen sind nur dann innerhalb einer vorgegebenen Zeitdauer bestimmbar, wenn für den vorliegenden Code ein effizienter Fehlerkorrekturalgorithmus bekannt ist. Dies ist bei den wenigsten linearen Codes der Fall. Codes, die über einen effizienten Fehlerkorrekturalgorithmus verfügen sind z.B. die folgenden Codes: Hamming-Code, BCH-Code, Reed-Muller-Code, Simplex-Code, Golay-Code, Goppa-Code.
  • In der Praxis, z.B. auf Computerchips, werden Codes eingesetzt, die über einen effizienten Fehlerkorrekturalgorithmus verfügen.
  • Beispiel 1: Gegeben sei ein linearer Code der Länge n = 100 mit einer Minimumdistanz d = 21. Bei der Datenübertragung tritt ein 10-Bitfehler auf. Für den Code ist kein effizienter Fehlerkorrekturalgorithmus bekannt. Um den Fehler zu bestimmen, müssen alle 100 ! 90 ! 10 ! = 17310309456440
    Figure DE102022111624B4_0013
    möglichen Fehlermuster ausprobiert werden. Für genau ein Fehlermuster ist das Syndrom gleich Null: Dieses Fehlermuster entspricht dem aufgetretenen 10-Bitfehler. Für alle anderen Fehlermuster ist das Syndrom ungleich Null. Es sind daher ca. 17 Billionen Syndromberechnungen erforderlich, um den 10-Bitfehler zu bestimmen.
  • Beispiel 2: Der Simplex Code einer Länge n = 127 hat eine Minimumdistanz d = 64. Für diesen Code gibt es einen effizienten Fehlerkorrekturalgorithmus. Bei der Datenübertragung tritt ein 30-Bitfehler auf. Der Fehlerkorrekturalgorithmus (implementiert in Hardware als elektronischer Schaltkreis aus 120 Flip-Flops und XOR- sowie Majority-Gattern) erlaubt, dass der 30-Bitfehler in 127 Takten einer Prozessoreinheit (CPU) bestimmt wird. Die Fehlerkorrektur benötigt nur eine einzige Syndromberechnung für die Initialisierung des Schaltkreises.
  • Syndrom
  • Die meisten Fehlerkorrekturalgorithmen benötigen als Input einen Syndromvektor (auch bezeichnet als Syndrom). Der Syndromvektor wird aus dem empfangen Datenwort mit Hilfe der Kontrollmatrix H berechnet.
  • Ist c
    Figure DE102022111624B4_0014
    das gesendete Codewort und y
    Figure DE102022111624B4_0015
    das zugehörige empfangene Datenwort, so ist der Vektor y
    Figure DE102022111624B4_0016
    eine (möglicherweise fehlerhafte) Version des gesendeten Codeworts c .
    Figure DE102022111624B4_0017
    Das Syndrom von y
    Figure DE102022111624B4_0018
    ist definiert durch S ( y ) = H y T .
    Figure DE102022111624B4_0019
  • Wenn kein Fehler bei der Übertragung (oder während der Speicherung) aufgetreten ist, wenn also y = c
    Figure DE102022111624B4_0020
    ist, dann ist das Syndrom gleich Null, d.h. der Syndromvektor S ( y )
    Figure DE102022111624B4_0021
    ist identisch mit dem Nullvektor 0 .
    Figure DE102022111624B4_0022
    Ist hingegen ein (erkennbarer) Fehler aufgetreten, so gilt: S ( y ) 0 .
    Figure DE102022111624B4_0023
  • 1 zeigt ein beispielhaftes Flussdiagramm zur Veranschaulichung einer Funktionsweise eines Decoders zur Bestimmung eines Fehlervektors e .
    Figure DE102022111624B4_0024
  • In einem Schritt 101 wird ein Codewort c
    Figure DE102022111624B4_0025
    bestimmt und über einen Kanal 102 gesendet und von dem Decoder in einem Schritt 103 als Datenwort (auch bezeichnet als Datenvektor) y
    Figure DE102022111624B4_0026
    empfangen. In einem Schritt 104 erfolgt die Syndromberechnung gemäß Gleichung (1).
  • Ist das Syndrom gleich Null, so wird zu einem Schritt 105 verzweigt, das empfangene Datenwort ist identisch mit dem gesendeten Codewort ( y = c ) .
    Figure DE102022111624B4_0027
    In diesem Fall wird angenommen, dass kein Übertragungsfehler aufgetreten ist, das empfangene Datenwort y
    Figure DE102022111624B4_0028
    wird als das gesendete (korrekte) Codewort c
    Figure DE102022111624B4_0029
    akzeptiert.
  • Ist das Syndrom ungleich Null, so wird von dem Schritt 104 zu einem Schritt 106 verzweigt: Da das empfangene Datenwort von dem gesendeten Codewort verschieden ist ( y c ) ,
    Figure DE102022111624B4_0030
    wird ein Fehlerkorrekturalgorithmus genutzt, um den Fehlervektor e
    Figure DE102022111624B4_0031
    zu bestimmen, so dass gilt: y + e = c .
    Figure DE102022111624B4_0032
  • Der Fehlerkorrekturalgorithmus berechnet aus dem Syndromvektor S ( y )
    Figure DE102022111624B4_0033
    Fehlerstellen und gibt diese in Form des Fehlervektors e
    Figure DE102022111624B4_0034
    aus. Dann wird das empfangene Datenwort y
    Figure DE102022111624B4_0035
    korrigiert, indem ein Vektor y e
    Figure DE102022111624B4_0036
    berechnet wird, wobei „⊕“ einer Exklusiv-oder-Verknüpfung entspricht. Somit ergibt sich ein korrigiertes Codewort c k o r r = y e ,
    Figure DE102022111624B4_0037
    das als identisch mit dem gesendeten Codewort c
    Figure DE102022111624B4_0038
    angenommen wird.
  • Die Syndromberechnung wird vorzugsweise immer ausgeführt, wohingegen die Fehlerkorrektur nur benötigt wird, wenn das Syndrom ungleich Null ist.
  • Beispiel 3: Beispielhaft angenommen wird ein 2-Fehler-korrigierender Code der Länge n = 40 mit einer Minimumdistanz d = 5. Es werden 100000 Codewörter übertragen. Eine Bitfehlerwahrscheinlichkeit beträgt p = 0,001. Somit werden im Mittel ca. 96 000 Codewörter fehlerfrei übertragen. Bei ca. 4000 Codewörtern tritt bei der Übertragung ein 1-Bitfehler oder ein 2-Bitfehler auf, die automatisch korrigiert werden. Bei nur einer einzigen Übertragung kommt es zu einem Mehrbitfehler (d.h. drei oder mehr Bit sind fehlerhaft) in dem gesendeten Codewort. Somit kann im Mittel eines der 100 000 empfangenen Datenwörter nicht korrigiert werden. In 96% der Fälle ist das Syndrom gleich Null und es ist keine Fehlerkorrektur notwendig. In 4% der Fälle ist das Syndrom ungleich Null und nur dann wird der Fehlerkorrekturalgorithmus benötigt.
  • Da die Syndromberechnung immer, die Fehlerkorrektur aber nur manchmal durchgeführt wird, ist es zweckmäßig, die Syndromberechnung effizient zu implementieren. Auf diese Weise wird die Rechendauer verkürzt und der Stromverbrauch des Decoders reduziert.
  • Effiziente Syndromberechnung in Software
  • Kanonische Kontrollmatrix
  • Kontrollmatrizen der Form K = ( I , A ) ,
    Figure DE102022111624B4_0039
    ermöglichen eine effiziente Syndromberechnung, beispielsweise mittels Software. Hierbei stellt I die Einheitsmatrix dar.
  • Die Spalten der Einheitsmatrix I sind Einheitsvektoren, d.h. Vektoren mit nur einer Eins und sonst lauter Nullen. Somit ist die kanonische Matrix dünn besetzt, d.h. sie enthält insgesamt relativ wenige Einsen.
  • Wird die Kontrollmatrix K für die Syndromberechnung genutzt, d.h. ein Spaltenvektor Z ( y ) = K y T
    Figure DE102022111624B4_0040
    berechnet und dieser als Syndrom verwendet, dann sind für die Berechnung der Koordinaten zi des Syndroms Z ( y ) = ( z 1 , , z n k ) T
    Figure DE102022111624B4_0041
    nur wenige Koordinaten yj des Vektors y = ( y 1 , , y n )
    Figure DE102022111624B4_0042
    miteinander zu addieren (in dem Galoisfeld GF(2) entspricht eine solche Addition einer Exklusiv-Oder-Verknüpfung, auch bezeichnet als XOR-Verknüpfung), weil die kanonische Matrix K pro Zeile wenige Einsen enthält.
  • Somit ist bei einer Hardware-Implementierung die logische Tiefe einer Schaltung zur Berechnung der Koordinaten des Syndroms bei Verwendung der dünn besetzten Matrix K kleiner als bei der Syndromberechnung mit einer dichter besetzten Matrix.
  • Auch bei einer Software-Implementierung des Codes ist die Syndromberechnung mittels einer solchen kanonischen Matrix K von Vorteil: Die (n - k) × (n - k) Einheitsmatrix I an vorderster Stelle in der Kontrollmatrix K = (I, A) bewirkt, dass in der Syndromberechnung zunächst nur die letzten k Koordinaten yj des Vektors y
    Figure DE102022111624B4_0043
    in die einzelnen Zeilensummen einfließen. Die Komponenten des sich ergebenden Spaltenvektors werden allein aus den letzten k Koordinaten des Vektors y
    Figure DE102022111624B4_0044
    bestimmt. Anschließend wird zu diesem Spaltenvektor der Spaltenvektor ( y 1 , y 2 , , y n k ) T
    Figure DE102022111624B4_0045
    addiert, um das Syndrom Z ( y )
    Figure DE102022111624B4_0046
    gemäß Gleichung (6) zu erhalten.
  • Für i = 1,..., n - k ist das Ausgabebit zi auf demselben Platz wie das entsprechende Eingabebit yi. Dies ist für die Programmierung von Vorteil, da beispielsweise die Programmiersprachen C oder C++ Daten wortweise verarbeiten: Damit kann die bitweise Addition der beiden Spaltenvektoren mittels einer einzigen Instruktion erfolgen.
  • Beispiel 4: Beispielsweise sei die folgende kanonische Kontrollmatrix gegeben: K = ( 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1   1 0 1 1 1 1 1 1 0 0 1 1 ) .
    Figure DE102022111624B4_0047
  • p K ist die kanonische Kontrollmatrix eines 1-Bitfehler-korrigierenden linearen Codes der Länge n = 7 und der Dimension k = 3. Das Syndrom von y = ( y 1 , , y 7 )
    Figure DE102022111624B4_0048
    ergibt sich wie folgt: Z ( y ) = K y T = ( z 1 z 2 z 3 z 4 ) = ( y 1 y 2 y 3 y 4 ) ( y 5 + y 7 y 5 + y 6 + y 7 y 5 + y 6 y 6 + y 7 ) .
    Figure DE102022111624B4_0049
    (Ende Beispiel 4)
  • Die Kontrollmatrix H eines linearen (n, k, d) -Codes C ist nicht eindeutig bestimmt. Ist J eine invertierbare (n - k) × (n - k) Matrix ist, dann ist H * = J H
    Figure DE102022111624B4_0050
    ebenfalls eine Kontrollmatrix des Codes: Die Matrizen H und H* haben denselben Nullraum und der Code ist per Definition identisch mit diesem Vektorraum. Ein linearer Code C besitzt daher eine Vielzahl unterschiedlicher Kontrollmatrizen.
  • Wenn der lineare Code C einen effizienten Fehlerkorrekturalgorithmus hat, der aus einem Syndrom S ( y ) = H y T
    Figure DE102022111624B4_0051
    gemäß Gleichung (1) den Fehlervektor e
    Figure DE102022111624B4_0052
    berechnet, dann gibt es in der Menge der unterschiedlichen Kontrollmatrizen eine spezielle Kontrollmatrix: Diese spezielle Kontrollmatrix hat Eigenschaften, die der Fehlerkorrekturalgorithmus ausnutzt, und die die übrigen Kontrollmatrizen nicht haben. Damit funktioniert der Fehlerkorrekturalgorithmus nur in Verbindung mit dieser speziellen Kontrollmatrix.
  • Nur für Codes aus der Simplex-Familie und für den Reed-Muller-Code erster Ordnung ist die spezielle Kontrollmatrix bereits kanonisch, d.h. in der Form (I, A).
  • Zur Verbesserung der Effizienz der Syndromberechnung ist es erstrebenswert, eine kanonische Matrix für die Syndromberechnung zu verwenden. Allerdings verlangt der effiziente Fehlerkorrekturalgorithmus, dass das Syndrom mit der zugehörigen speziellen Kontrollmatrix berechnet wird.
  • Erzeugung der kanonischen Matrix
  • Es sei H eine r × n Matrix vom Rang r. Aus dieser Matrix H kann eine kanonische r × n Matrix bestimmt werden, in dem elementare Zeilenumformungen für die Zeilen der Matrix H durchgeführt werden. Elementare Zeilenumformungen entsprechen einem Vertauschen von Zeilen der Matrix H und ein bitweises Addieren in dem Galoisfeld GF(2) einer Matrixzeile auf eine andere. Darüber hinaus können Spalten der Matrix H untereinander vertauscht werden.
  • Mittels einer endlichen Anzahl solcher Operationen wird aus der Matrix H eine Matrix K vom Typ (I, A) bestimmt. Grundsätzlich kann jede Matrix H, die einen vollen Rang aufweist, in eine kanonische Matrix umgeformt werden.
  • Das Durchführen elementarer Zeilenumformungen ist äquivalent zu einem Multiplizieren der Matrix H von links mit einer invertierbaren r × r Matrix A. Das Vertauschen von Spalten der Matrix H ist äquivalent zu einem Multiplizieren der Matrix H von rechts mit einer n × n Permutationsmatrix B.
  • Eine Permutationsmatrix (auch bezeichnet als Vertauschungsmatrix) ist eine Matrix, die in jeder ihrer Zeilen und in jeder ihrer Spalten genau eine Eins und sonst nur Nullen aufweist.
  • Es gibt also eine invertierbare r × r Matrix A und eine n × n Permutationsmatrix B, so dass K = A H B
    Figure DE102022111624B4_0053
    gilt, wobei die resultierende Matrix K die kanonische Form aufweist. Somit wird anhand der beiden Matrizen A und B aus der Matrix H die kanonische Matrix K bestimmt.
  • Die Matrizen A und B sind beide invertierbar. Nachfolgend werden die inversen Matrizen mit L bzw. P bezeichnet gemäß der Beziehungen: L : = A 1
    Figure DE102022111624B4_0054
    P : = B 1
    Figure DE102022111624B4_0055
  • Da B eine Permutationsmatrix ist, ist auch die inverse Matrix P eine Permutationsmatrix.
  • Die Gleichung (9) ist somit äquivalent zu H = L K P .
    Figure DE102022111624B4_0056
  • Der Vektor y = ( y 1 , , y n )
    Figure DE102022111624B4_0057
    ist ein binärer Zeilenvektor der Länge n. Wird die Gleichung (10) von rechts mit dem Spaltenvektor y T
    Figure DE102022111624B4_0058
    multipliziert, folgt H y T = L K P y T .
    Figure DE102022111624B4_0059
  • Beträgt nun die Dimension k = n - r, so hat die Matrix H mit r = n - k Zeilen und n Spalten den Rang r = n - k. Damit ist der Nullraum der Matrix H ein linearer (n, k, d)-Code C und die Matrix H ist eine Kontrollmatrix für den Code C.
  • Die linke Seite der Gleichung (11) entspricht gemäß Gleichung (1) dem Syndrom S ( y )
    Figure DE102022111624B4_0060
    des Vektors y
    Figure DE102022111624B4_0061
    in dem Code C relativ zu der Kontrollmatrix H.
  • Die rechte Seite der Gleichung (11) enthält den Vektor P y T .
    Figure DE102022111624B4_0062
    Da es sich bei der Matrix P um eine n × n Permutationsmatrix handelt, enthält der Vektor P y T
    Figure DE102022111624B4_0063
    dieselben Koordinaten wie der Vektor y ,
    Figure DE102022111624B4_0064
    nur in einer anderen Reihenfolge.
  • Bei einer Realisierung in Hardware kann eine Abbildung y T P y T = y ' T
    Figure DE102022111624B4_0065
    in Form einer Umverdrahtung vorteilhaft (weitgehend) kostenneutral umgesetzt werden.
  • Beispiel 5: Gegeben ist eine Permutationsmatrix P = ( 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 )
    Figure DE102022111624B4_0066
    und ein Vektor y = ( y 1 , y 2 , y 3 , y 4 ) .
    Figure DE102022111624B4_0067
  • Daraus folgt: y ' T = P y T = ( 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 ) ( y 1 y 2 y 3 y 4 ) = ( y 1 y 3 y 2 y 4 ) = ( y ' 1 y ' 2 y ' 3 y ' 4 ) .
    Figure DE102022111624B4_0068
  • 2 zeigt ein beispielhaftes Schaltdiagramm, das eine Umverdrahtung von y
    Figure DE102022111624B4_0069
    auf y '
    Figure DE102022111624B4_0070
    gemäß diesem Beispiel veranschaulicht. (Ende Beispiel 5)
  • Gleichung (11) kann mit Gleichung (12) wie folgt formuliert werden: H y T = L K P y T = L K y ' T .
    Figure DE102022111624B4_0071
  • Auf der linken Seite der Gleichung (14) steht das Syndrom S ( y ) = H y T
    Figure DE102022111624B4_0072
    gemäß Gleichung (1), das der Fehlerkorrekturalgorithmus benötigt. Auf der rechten Seiten der Gleichung (14) steht das Syndrom Z ( y ' ) = K y ' T .
    Figure DE102022111624B4_0073
  • Somit ergibt sich, dass die beiden Syndrome S : = S ( y )
    Figure DE102022111624B4_0074
    und Z : = Z ( y ' T )
    Figure DE102022111624B4_0075
    zueinander lineare Transformationen sind: S = L Z .
    Figure DE102022111624B4_0076
  • Wegen der vertauschten Matrixspalten bei der Herleitung der Matrix K aus der Matrix H ist die Matrix K keine Kontrollmatrix für den ursprünglichen Code C. Stattdessen definiert die Matrix K einen neuen Code C'.
  • Der alte Code C und der neue Code C' haben dieselben Parameter n, k und d und dieselbe Gewichtsverteilung. Allerdings bestimmen sie unterschiedliche Vektorräume (auch bezeichnet als Code-Domänen): Ein Codewort des Codes C ist nicht notwendigerweise auch ein Codewort des Codes C'. Die Berechnungen der Syndrome S und Z beziehen sich also auf unterschiedliche Codes.
  • Lösungsbeispiel
  • 3 zeigt eine Code-Domäne 301 eines ersten Codes und eine Code-Domäne 302 eines zweiten Codes. Code-Domäne (Vektorraum) bedeutet in diesem Zusammenhang, dass die Berechnungen innerhalb der Domäne spezifisch für den jeweiligen Code sind. Ein Übergang zwischen den Code-Domänen erfolgt mittels (z.B. linearer) Transformation.
    1. 1. Für den ersten Code C gibt es einen effizienten Fehlerkorrekturalgorithmus, der auf Eigenschaften einer speziellen Kontrollmatrix H basiert und für die Korrektur des empfangenen Datenworts y das Syndrom H y T
      Figure DE102022111624B4_0077
      gemäß Gleichung (1) benötigt. Eine zu übertragende Nachricht m
      Figure DE102022111624B4_0078
      wird mit dem ersten Code C kompatibel zu der Matrix H codiert, d.h. ein Zeilenvektor m
      Figure DE102022111624B4_0079
      wird mit einer zu der Matrix H gehörenden Generatormatrix G multipliziert, um ein Codewort c
      Figure DE102022111624B4_0080
      zu berechnen: c = m G .
      Figure DE102022111624B4_0081
      Dieses Codewort c
      Figure DE102022111624B4_0082
      wird übertragen und als Bitfolge y
      Figure DE102022111624B4_0083
      (auch bezeichnet als empfangenes Datenwort, Datenvektor, Eingabe oder Eingabevektor) auf der anderen Seite des Kanals empfangen. Diese Bitfolge y
      Figure DE102022111624B4_0084
      stellt in 3 die Eingabe in der Code-Domäne 301 dar.
  • 2. Herleitung der kanonischen Matrix:
  • Für die Matrix H werden die zugehörige kanonische Matrix K = ( I , A ) ,
    Figure DE102022111624B4_0085

    die invertierbare quadratische Matrix L und die Permutationsmatrix P berechnet, so dass gemäß Gleichung (10) gilt: H = L K P .
    Figure DE102022111624B4_0086
  • 3. Umverdrahtung:
  • Für das empfangene Datenwort y
    Figure DE102022111624B4_0087
    wird ein Zeilenvektor y ' = y P T
    Figure DE102022111624B4_0088
    berechnet. Dies entspricht einem Übergang 303 von der ersten Code-Domäne 301 in die zweite Code-Domäne 302 mittels der Matrix P.
  • 4. Schnelle Syndromberechnung 304:
  • Es wird das Syndrom Z ( y ' )
    Figure DE102022111624B4_0089
    von y '
    Figure DE102022111624B4_0090
    unter Verwendung der kanonischen Matrix K berechnet: Z = Z ( y ' ) = K y ' T .
    Figure DE102022111624B4_0091
    Wenn Z = 0, also das K-Syndrom Null ist, dann ist y
    Figure DE102022111624B4_0092
    fehlerfrei. Das Verfahren kann beendet werden.
    Wenn Z ≠ 0, also das K-Syndrom ungleich Null ist, dann ist y
    Figure DE102022111624B4_0093
    nicht fehlerfrei; es wird zu dem nachfolgenden Schritt (5.) verzweigt und eine lineare Transformation 305 durchgeführt.
  • 5. Lineare Transformation 305:
  • Der Spaltenvektor Z wird mit der quadratischen Matrix L multipliziert. Der resultierende Spaltenvektor S = L Z
    Figure DE102022111624B4_0094

    ist identisch mit dem benötigten Syndromvektor S = H y T .
    Figure DE102022111624B4_0095
    Die Multiplikation mit L entspricht einem Übergang von der zweiten Code-Domäne 302 in die erste Code-Domäne 301.
  • 6. Fehlervektorberechnung 306:
  • Mittels des Fehlerkorrekturalgorithmus wird anhand des Syndromvektors S ein Fehlervektor e
    Figure DE102022111624B4_0096
    berechnet und ausgegeben.
  • 7. Fehlerkorrektur:
  • Anhand des Fehlervektors e
    Figure DE102022111624B4_0097
    kann eine Korrektur durchgeführt werden: Das korrigierte Codewort c k o r r
    Figure DE102022111624B4_0098
    ergibt sich zu c k o r r = y + e .
    Figure DE102022111624B4_0099
  • Da die meisten eintreffenden Datenwörter y
    Figure DE102022111624B4_0100
    fehlerfrei sind, endet das Programm in der überwiegend Zahl der Fälle bereits mit dem Schritt (4.). Relativ selten tritt ein Fehler auf bei dem das K-Syndrom ungleich Null ist und die Schritte 5. bis 7. durchgeführt werden.
  • In Schritt 4. erfolgt die Syndromberechnung. Die hierfür erforderliche Zeit wirkt entscheidend auf die Gesamtperformance der hier vorgestellten Lösung.
  • Ergänzend sei angemerkt, dass die Syndromberechnung 304 in der Code-Domäne 302 des zweiten Codes, also nach dem Übergang 303 (der Transformation mittels P), unter Verwendung der Matrix K erfolgt. Dies ersetzt eine Syndromberechnung ohne Transformation (also innerhalb der Code-Domäne 301 des ersten Codes) mittels der Matrix H (nicht in 3 dargestellt). Die Syndromberechnung 304 ist demgegenüber schneller, so dass der entstehende Mehraufwand der Übergänge 303 und 305 bezogen auf die Gesamtperformance der vorgestellten Lösung eine untergeordnete Rolle spielt.
  • Alternative Lösung
  • Nachfolgend wird eine alternative Lösung beschrieben. Zunächst gelten die gleichen Voraussetzungen: Für einen ersten linearen (n, k, d)-Code ist ein effizienter Fehlerkorrekturalgorithmus gegeben, der mit einer speziellen Kontrollmatrix H assoziiert ist.
  • Zur Korrektur benötigt der Fehlerkorrekturalgorithmus als eine Eingabe das durch die Matrix H definierte Syndrom S ( y ) = H y T
    Figure DE102022111624B4_0101
    gemäß Gleichung (1).
  • Aus der Matrix H kann eine äquivalente Matrix K der Form K = (I, A) bestimmt werden. Hierbei bedeutet „äquivalent“, dass invertierbare quadratische Matrizen L und P der passenden Größe existieren, so dass gemäß Gleichung (10) gilt: H = L K P .
    Figure DE102022111624B4_0102
  • Dabei ist die Matrix P die Permutationsmatrix.
  • Wenn die Matrix P nicht selbst die Einheitsmatrix ist, dann definieren die Matrizen H und K unterschiedliche Codes. Diese Codes sind zueinander äquivalent, da die Codewörter des einen Codes aus den Codewörtern des anderen Codes durch Umordnung nach einer festen Vorschrift hervorgehen. Als Vektorräume betrachtet handelt es sich aber um zwei verschiedene Codes: Der erste Code ist der Nullraum der Matrix H und der zweite Code ist der Nullraum der Matrix K.
  • In dieser alternativen Lösung erfolgt die Nachrichtencodierung mittels des zweiten Codes, also des Codes, der mit der kanonischen Kontrollmatrix K assoziiert ist. Das hat insbesondere die folgenden Vorteile:
    • 1. Die Codierung der k-Bit langen Nachricht, vorliegend als Vektor m = ( m 1 , , m k )
      Figure DE102022111624B4_0103
      kann mithilfe der zu der kanonischen Matrix K gehörenden Generatormatrix G durchgeführt werden. Diese Kodierung wird auch mit K-Codierung bezeichnet. Die Generatormatrix G hat die Form G = (I, B) mit der k × k Einheitsmatrix I. Die Matrix K hat die Form K = (I, A) mit der (n - k) × (n - k) Einheitsmatrix I. Somit ist die Generatormatrix G ebenfalls eine kanonische Matrix. Für die Matrizen G und K gilt: G K T = 0,
      Figure DE102022111624B4_0104
      wobei 0 hier für die k × (n - k) Nullmatrix (alle Matrixeinträge sind Null) steht. Die Codierung der Nachricht m
      Figure DE102022111624B4_0105
      (also die Umwandlung der Nachricht m
      Figure DE102022111624B4_0106
      in ein Codewort c
      Figure DE102022111624B4_0107
      ) wird durch Multiplikation mit der Generatormatrix G erreicht, d.h. c = m G .
      Figure DE102022111624B4_0108
      Da die Generatormatrix G kanonisch ist, hat das mit ihr berechnete Codewort c
      Figure DE102022111624B4_0109
      die Form c = ( m , r ) .
      Figure DE102022111624B4_0110
      Das Codewort c
      Figure DE102022111624B4_0111
      besteht aus dem Nachrichtenvektor m ,
      Figure DE102022111624B4_0112
      an das n - k Redundanzbits r
      Figure DE102022111624B4_0113
      angehängt werden. Somit kann in dem zweiten Code (d.h. dem Nullraum der kanonischen Matrix K) sowohl die Syndromberechnung als auch die Codierung effizienter ausgeführt werden als in dem ersten Code (d.h. dem Nullraum der Fehlerkorrekturmatrix H).
    • 2. Die vorstehend erläuterte 3 zeigt einen Ansatz zur Codierung der Nachricht m
      Figure DE102022111624B4_0114
      in dem ersten Code, also in dem Code mit dem effizienten Fehlerkorrekturalgorithmus. Hierbei wird jedes empfangene Datenwort y
      Figure DE102022111624B4_0115
      zunächst koordinatenweise permutiert, d.h. auf jedes empfangene Datenwort wird die Permutation gemäß der Matrix P angewandt. In der vorliegend beschriebenen alternativen Lösung wird hiervon abgewichen: Das empfangene Datenwort y
      Figure DE102022111624B4_0116
      liegt bereits codiert vor in dem Code mit der kanonischen Kontrollmatrix K, mit der auch die effiziente Syndromberechnung durchgeführt wird. Es kann also unverändert (d.h. ohne Permutation) der Syndromberechnung zugeführt werden. Ist das Syndrom gleich Null, erfolgt keine Korrektur (das empfangene Datenwort wird als korrekt betrachtet und das Verfahren kann beendet werden). Wenn hingegen das K-Syndrom Z ungleich Null ist, dann wird es mit der quadratischen Matrix L linear transformiert. Das transformierte Syndrom S = L Z
      Figure DE102022111624B4_0117
      wird in dem Fehlerkorrekturalgorithmus des ersten Codes zugeführt, der daraus einen Fehlervektor e '
      Figure DE102022111624B4_0118
      (mittels des ersten Codes) berechnet. Um aus dem Fehlervektor e '
      Figure DE102022111624B4_0119
      den zugehörigen Fehlervektor e
      Figure DE102022111624B4_0120
      zu bestimmen, der in dem zweiten Code für die dort stattfindende Fehlerkorrektur benötigt wird, wird auf den Fehlervektor e '
      Figure DE102022111624B4_0121
      die Permutation gemäß der Matrix P angewandt.
  • 4 veranschaulicht diesen Zusammenhang anhand der Code-Domäne 301 des ersten Codes und der Code-Domäne 302 des zweiten Codes.
  • In der Code-Domäne 302 erfolgt eine K-Codierung 401 des Nachrichtenvektors m
    Figure DE102022111624B4_0122
    in das Codewort c ,
    Figure DE102022111624B4_0123
    das über einen Kanal 402 übertragen und als Datenwort y
    Figure DE102022111624B4_0124
    empfangen wird. Für das empfangene Datenwort y
    Figure DE102022111624B4_0125
    erfolgt eine schnelle Syndromberechnung 403 vergleichbar mit der Syndromberechnung 304 aus 3:
  • Es wird das Syndrom Z ( y )
    Figure DE102022111624B4_0126
    von y
    Figure DE102022111624B4_0127
    unter Verwendung der kanonischen Matrix K berechnet: Z = Z ( y ) = K y T .
    Figure DE102022111624B4_0128
  • Wenn Z = 0, also das K-Syndrom Null ist, dann ist y
    Figure DE102022111624B4_0129
    fehlerfrei. Das Verfahren kann beendet werden.
  • Wenn Z ≠ 0, also das K-Syndrom ungleich Null ist, dann ist y
    Figure DE102022111624B4_0130
    nicht fehlerfrei. In diesem Fall erfolgt anhand der Multiplikation mit der Matrix L eine lineare Transformation 404 S = L Z ,
    Figure DE102022111624B4_0131
    die einen Übergang von der Code-Domäne 302 in die Code-Domäne 301 bewirkt.
  • Mittels eines Fehlerkorrekturalgorithmus 405 der Code-Domäne 301 wird anhand des Syndromvektors S der Fehlervektor e '
    Figure DE102022111624B4_0132
    berechnet und mittels der Matrix P 406 in den Fehlervektor e
    Figure DE102022111624B4_0133
    der zweiten Code-Domäne 302 transformiert. Anhand des Fehlervektors e
    Figure DE102022111624B4_0134
    kann das empfangene Datenwort y
    Figure DE102022111624B4_0135
    korrigiert werden: c k o r r = y + e .
    Figure DE102022111624B4_0136
  • Im Ergebnis wird die Permutation der in 4 gezeigten Lösung seltener ausgeführt als in dem in 3 gezeigten Beispiel. Dies ist besonders bei Software-Implementierungen von Vorteil.
  • Effiziente Syndromberechnung insbesondere mittels Hardware
  • Eine Matrix M, die beispielsweise in Hardware implementiert werden kann und für die Syndromberechnung genutzt wird, soll folgende Eigenschaften besitzen:
    1. (A) Jede Zeile der Matrix M soll möglichst wenige Einsen enthalten.
    2. (B) Die Matrix M soll insgesamt wenige Einsen enthalten.
  • Eigenschaft (A) ist wichtig, weil damit die logische Tiefe für die Berechnung der einzelnen Syndromkoordinaten möglichst klein ist. Je kleiner die logische Tiefe eines Schaltkreises ist, desto schneller kann dieser getaktet werden.
  • Eigenschaft (B) ist wichtig, weil weniger Einsen in der Matrix bedeutet, dass die Matrix mit einer geringeren Anzahl von XOR-Gattern implementiert werden kann, was eine kleinere Halbleiterfläche bedingt.
  • Gegeben sei eine Matrix H mit r × n Elementen, die eine spezielle Kontrollmatrix zu einem genutzten Fehlerkorrekturalgorithmus ist. Der Fehlerkorrekturalgorithmus benötigt das mit der Matrix H berechnete Syndrom S ( y ) = H y T
    Figure DE102022111624B4_0137
    als Eingabe, wobei y
    Figure DE102022111624B4_0138
    der Vektor des empfangenen Datenworts ist.
  • Mit einer beliebigen invertierbaren r × r Matrix J ist auch eine Matrix M = J H
    Figure DE102022111624B4_0139
    eine Kontrollmatrix für den Code.
  • Werden in Gleichung (16) alle möglichen invertierbaren binären r × r Matrizen J eingesetzt (was selbst für niedrige Werte von r zu einer sehr großen Zahl führt), dann durchläuft die Matrix M alle existierenden Kontrollmatrizen des Codes (der durch die Matrix H definiert ist). Unter diesen Kontrollmatrizen befinden sich Matrizen mit den Eigenschaften (A) und (B).
  • Wird die Gleichung (16) beidseitig mit einer inversen Matrix J-1 multipliziert, folgt: J 1 M = H .
    Figure DE102022111624B4_0140
  • Wird Gleichung (17) von rechts mit y T
    Figure DE102022111624B4_0141
    multipliziert, ergibt sich: J 1 M y T = H y T
    Figure DE102022111624B4_0142
  • Auf der rechten Seite der Gleichung (18) steht das H-Syndrom S ( y ) = H y T .
    Figure DE102022111624B4_0143
  • Auf der linken Seite der Gleichung (18) steht das mit der Matrix M berechnete Syndrom M y T ,
    Figure DE102022111624B4_0144
    multipliziert mit der Matrix J-1.
  • Die inverse Matrix J-1 kann beispielhaft in einer Hardware-Implementierung genutzt werden, die die Matrix J nicht benötigt.
  • Beispielhaft wird die Matrix J-1 mit F bezeichnet, d.h. F = J-1.
  • Es ist vorteilhaft, dass die Matrix J-1 eine möglichst geringe Anzahl von Einsen pro Zeile enthält. Daher lautet eine dritte Eigenschaft für eine effiziente Syndromberechnung in Hardware:
    • (C) Die inverse Matrix J-1 zu der Matrix J gemäß Gleichung (16) soll möglichst wenige Einsen pro Zeile enthalten.
  • 5 zeigt ein beispielhaftes Diagramm zur Veranschaulichung der effizienten Syndromberechnung mittels Hardware. Hierbei wird beispielhaft von nur einer Code-Domäne 501 (d.h. einem Vektorraum des Codes C, für den es auch den effizienten Fehlerkorrekturalgorithmus gibt) ausgegangen, ein Übergang zwischen unterschiedlichen Code-Domänen ist nicht erforderlich.
  • Basierend auf dem empfangenen Datenwort y
    Figure DE102022111624B4_0145
    erfolgt eine Syndromberechnung 502 mittels der Matrix M: W = W ( y ) = M y T .
    Figure DE102022111624B4_0146
  • Wenn W = 0, also das M-Syndrom Null ist, dann ist y
    Figure DE102022111624B4_0147
    fehlerfrei. Das Verfahren kann beendet werden.
  • Wenn W ≠ 0, also das M-Syndrom ungleich Null ist, dann ist y
    Figure DE102022111624B4_0148
    nicht fehlerfrei und es wird eine lineare Transformation 503 mittels der Matrix F durchgeführt: S = F W .
    Figure DE102022111624B4_0149
  • Anhand eines Fehlerkorrekturalgorithmus 504 wird basierend auf dem Syndromvektor S ein Fehlervektor e
    Figure DE102022111624B4_0150
    berechnet und mittels des Fehlervektors e
    Figure DE102022111624B4_0151
    kann das empfangene Datenwort y
    Figure DE102022111624B4_0152
    korrigiert werden: c k o r r = y + e .
    Figure DE102022111624B4_0153
  • Berechnung hardware-optimierter Matrizen M und J-1
  • Nachfolgend wird ein Beispiel für die hardware-optimierte Bestimmung der Matrizen M und J-1 angegeben.
  • Es seien h 1 , , h r
    Figure DE102022111624B4_0154
    die Zeilen der r × n Matrix H.
    1. 1. Es werden (insbesondere) alle 2r - 1 nichttrivialen Linearkombinationen k 1 h 1 + + k r h r
      Figure DE102022111624B4_0155
      der r Zeilenvektoren bestimmt.
    2. 2. Das Hamminggewicht jeder Linearkombination wird berechnet und die Linearkombinationen werden nach aufsteigendem Hamminggewicht sortiert: Am Anfang der Liste stehen die Linearkombinationen mit dem Hamminggewicht 1 (falls es solche gibt), dann kommen die Linearkombinationen mit dem Hamminggewicht 2, usw. Linearkombinationen mit demselben Hamminggewicht können in Gruppen zusammengefasst werden. Die Anordnung der Linearkombinationen innerhalb einer Gruppe kann frei oder nach einem vorgegebenen Schema gewählt werden.
    3. 3. Es wird eine Linearkombination v 1 = a 1 h 1 + + a r h r
      Figure DE102022111624B4_0156
      aus der ersten Gruppe ausgewählt. Damit ist der Zeilenvektor v 1
      Figure DE102022111624B4_0157
      die erste Zeile der zu bestimmenden hardware-optimierten Kontrollmatrix M und (a1,...,ar) ist die erste Zeile der Matrix J.
    4. 4. Falls vorhanden, wird eine Linearkombination v 2 v 1
      Figure DE102022111624B4_0158
      aus der ersten Gruppe ausgewählt. Falls nicht vorhanden, wird die Linearkombination v 2
      Figure DE102022111624B4_0159
      aus der zweiten Gruppe ausgewählt. Der sich ergebende n Bit lange Zeilenvektor v 2
      Figure DE102022111624B4_0160
      v 2 = b 1 h 1 + + b r h r
      Figure DE102022111624B4_0161
      entspricht der zweiten Zeile der Matrix M und (b1,...,bn) definiert die zweite Zeile der Matrix J.
    5. 5. Es wird eine Linearkombination v 3
      Figure DE102022111624B4_0162
      mit v 3 v 1 , v 3 v 2
      Figure DE102022111624B4_0163
      und v 3 ( v 1 + v 2 )
      Figure DE102022111624B4_0164
      ausgewählt, falls möglich aus der ersten Gruppe, sonst aus der zweiten Gruppe und falls auch das nicht möglich ist, aus der dritten Gruppe. Der sich ergebende Zeilenvektor v 3 = c 1 h 1 + + c r h r
      Figure DE102022111624B4_0165
      bestimmt die dritte Zeile der Matrix M und (c1,...,cr) definiert die dritte Zeile der Matrix J.
    6. 6. Das Verfahren wird entsprechend fortgesetzt, bis alle r Zeilen der Kontrollmatrix M und die zugehörigen r Zeilen der Matrix J bestimmt sind.
  • Dieser Ansatz liefert eine hardware-optimierte Kontrollmatrix M. Dabei ist die Matrix M nicht eindeutig bestimmt, es gibt eine Vielzahl derartiger optimierter Matrizen. Bei der Auswahl einer Linearkombination aus einer Gruppe gibt es mehrere Möglichkeiten, die zu unterschiedlichen optimierten Lösungen führen. Jede der optimierten Kontrollmatrizen H weist die beiden Eigenschaften (A) und (B) auf.
  • Die unterschiedlichen Wahlmöglichkeiten für die Linearkombinationen aus einer jeweiligen Gruppe führen am Ende zu unterschiedlichen Ergebnissen für die erzeugten Matrizen M und J. Dies resultiert in unterschiedlichen inversen Matrizen J-1. Um eine effiziente Form für die Matrix J-1 zu finden, können mehrere (oder alle) Wahlmöglichkeiten für die Linearkombinationen in den jeweiligen Gruppen durchprobiert werden. Jede einzelne getroffene Wahl liefert ein Matrizenpaar (J,M). Beispielsweise kann diejenige inverse Matrix J-1 mit den wenigsten Einsen pro Zeile genutzt werden. Auf diese Weise wird die Eigenschaft (C) erfüllt.
  • Anwendungsbeispiel
  • Der Fehlerkorrekturalgorithmus
  • Die nachfolgende, beispielhaft angegebene Matrix H ist die Kontrollmatrix eines 2-Fehler-korrigierenden linearen Codes der Länge n = 15, der Dimension k = 7 und mit der Minimumdistanz d = 5. H = ( 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 )
    Figure DE102022111624B4_0166
  • Die Spalten der Matrix H werden durch die Boolesche Funktion f ( w , x , y , z ) = w ( x + y )
    Figure DE102022111624B4_0167
    definiert.
  • Für j = 1,...15 wird die j-te Spalte der Matrix H gemäß folgender Vorschrift erstellt:
    1. 1. Berechne die Binärdarstellung (j0, j1, j2, j3) der ganzen Zahl j.
    2. 2. Berechne k 0 = f ( j 0 , j 1 , j 2 , j 3 ) ,
      Figure DE102022111624B4_0168
      k 1 = f ( j 3 , j 0 , j 1 , j 2 ) ,
      Figure DE102022111624B4_0169
      k 2 = f ( j 2 , j 3 , j 0 , j 1 ) ,
      Figure DE102022111624B4_0170
      k 3 = f ( j 1 , j 2 , j 3 , j 0 ) ,
      Figure DE102022111624B4_0171
  • Dann ist die j-te Matrixspalte gegeben durch h j = ( j 0 j 1 j 2 j 3 k 0 k 1 k 2 k 3 ) .
    Figure DE102022111624B4_0172
  • Die Darstellbarkeit der Spalten der Kontrollmatrix H durch eine einheitliche Formel resultiert in einem effizienten Fehlerkorrekturalgorithmus mit schneller 1-Bitfehler-Korrektur (vergleichbar mit der Dauer für eine einzige Syndromberechnung) und einer beschleunigten 2-Bitfehler-Korrektur (Rechendauer entspricht in etwa der von 15 Syndromberechnungen).
  • Der Fehlerkorrekturalgorithmus erhält als Eingabe das durch die Kontrollmatrix H definierte acht Bit lange Syndrom S ( y ) = H y T ,
    Figure DE102022111624B4_0173
    wobei y = ( y 1 , , y 15 )
    Figure DE102022111624B4_0174
    das empfangene Datenwort ist.
  • Effiziente Syndromberechnung in Software
  • Die Matrix H wird in die kanonische Matrix K umgeformt. Dazu werden die Spaltenvektoren an den Plätzen 3, 4, 5, 6, 7, 8 und 9 umsortiert entsprechend der Permutation σ = ( 3,4,8,7,5 ) ( 6,9 ) .
    Figure DE102022111624B4_0175
  • Anschließend werden einige elementare Zeilenoperationen ausgeführt, so dass die 8 × 8 Einheitsmatrix am Beginn der neuen Matrix entsteht. Dabei fällt eine invertierbare 8 × 8 Matrix L als Nebenprodukt an. Die kanonische Matrix K ergibt sich zu: K = ( 1 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 1 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 )
    Figure DE102022111624B4_0176
  • Zwischen den Matrizen H und K besteht die Beziehung: H = L K P ,
    Figure DE102022111624B4_0177
    wobei P eine 15 × 15 Permutationsmatrix ist, die die obige Permutation σ in Matrixform darstellt. Die Matrizen L und P sind gegeben durch: L = ( 1 0 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 )
    Figure DE102022111624B4_0178
    und P = ( 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ) .
    Figure DE102022111624B4_0179
  • Die kanonische Matrix K wird zur Syndromberechnung verwendet. Dazu wird zunächst das empfangene Datenwort y
    Figure DE102022111624B4_0180
    umsortiert („umverdrahtet“) gemäß der vorstehend angegebenen Permutation σ bzw. Permutationsmatrix P: P y = y ' T
    Figure DE102022111624B4_0181
    mit y ' = ( y 1 , y 2 , y 4 , y 8 , y 3 , y 9 , y 5 , y 7 , y 6 , y 10 , y 12 , y 13 , y 14 , y 15 ) T .
    Figure DE102022111624B4_0182
  • Anhand der kanonischen Matrix K wird das Syndrom Z = K y ' T .
    Figure DE102022111624B4_0183
    bestimmt. Die Syndromberechnung mithilfe der Matrix K ist in Software effizienter durchführbar als unter Verwendung der Matrix H, weil die Matrix K zu Beginn die Einheitsmatrix I8 (8 × 8-Einheitsmatrix) aufweist.
  • Wenn das mit der Matrix K für den Vektor y '
    Figure DE102022111624B4_0184
    berechnete Syndrom Z gleich Null ist, ist das Syndrom S ( y ) = H y T
    Figure DE102022111624B4_0185
    gleich Null und das empfangene Datenwort y
    Figure DE102022111624B4_0186
    ist (mit großer Wahrscheinlichkeit) fehlerfrei.
  • Andernfalls wird die lineare Transformation L auf das Syndrom Z angewendet und es ergibt sich das Syndrom S ( y ) = H y T = L Z
    Figure DE102022111624B4_0187
    für die durchzuführende Fehlervektorberechnung.
  • Effiziente Syndromberechnung in Hardware
  • Eine bei einer Hardwareimplementierung des Codes für die Syndromberechnung effiziente Kontrollmatrix M ist beispielsweise wie folgt bestimmt: M = ( 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 )
    Figure DE102022111624B4_0188
  • Die Matrix M enthält 4 Einsen in jeder Zeile, wohingegen die Matrix H Zeilen mit acht Einsen aufweist. Die logische Tiefe bei der Berechnung der Syndromkomponenten mit der Matrix M beträgt zwei.
  • Beispielsweise ergibt sich die erste Syndromkomponente w1 des M-Syndroms gemäß W 1 = ( y 1 y 7 ) ( y 9 y 15 ) ,
    Figure DE102022111624B4_0189
    wohingegen die erste Syndromkomponente s1 des H-Syndroms gemäß s 1 = [ ( y 1 y 3 ) ( y 5 y 7 ) ] [ ( y 9 y 11 ) ( y 13 y 15 ) ]
    Figure DE102022111624B4_0190
    bestimmt wird.
  • Aufgrund der geringeren logischen Tiefe kann die Syndromberechnung mithilfe der Matrix M höher getaktet werden als die Syndromberechnung mithilfe der Matrix H.
  • Die Matrix M enthält insgesamt 32 Einsen, wohingegen die Matrix H 48 Einsen aufweist. Damit ergeben sich die Implementierungskosten (d.h. die Anzahl der Gatter) für die Matrix M zu 2/3 der Implementierungskosten für die Matrix H.
  • Wenn das Syndrom mit der Matrix M berechnet wird, muss es mit der linearen Transformation F in das von dem Fehlerkorrekturalgorithmus benötigte Syndrom H y T
    Figure DE102022111624B4_0191
    transformiert werden: H y T = F M y T ,
    Figure DE102022111624B4_0192
    wobei die lineare Transformation bestimmt ist durch die Matrix F = ( 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 )
    Figure DE102022111624B4_0193
  • Die Matrizen M und F wurden mit dem vorstehend angegebenen Algorithmus bestimmt, wobei die Spalten der Matrix H dabei nicht vertauscht wurden. Daher definieren die Matrizen H und M denselben Code-Vektorraum (welcher gleichzeitig der Nullraum der Matrix H und der Nullraum der Matrix M ist) und es wird keine Permutation (Umverdrahtung) benötigt.

Claims (9)

  1. Verfahren zur Fehlerkorrektur, - bei dem basierend auf einem Datenwort eine Syndromberechnung mit einer Matrix M basierend auf einer Matrix H eines Codes durchgeführt wird, - bei dem, falls anhand des Ergebnisses der Syndromberechnung erkennbar ist, dass das Datenwort fehlerhaft ist, das Ergebnis der Syndromberechnung mittels einer linearen Abbildung transformiert wird, - bei dem anhand des Ergebnisses der linearen Abbildung mittels eines effizienten Fehlerkorrekturalgorithmus ein Fehlervektor bestimmt wird, - bei dem anhand des Fehlervektors das fehlerhafte Datenwort korrigiert wird. - bei dem die für die Syndromberechnung genutzte Matrix M basierend auf der Matrix H des Codes wie folgt bestimmt wird: - für die Zeilenvektoren der Matrix H werden Linearkombinationen bestimmt, - für jede Linearkombination wird ein Hamminggewicht bestimmt, - basierend auf den entsprechend ihres ansteigenden Hamminggewichts priorisierten Linearkombinationen werden Zeilenvektoren der Matrix M bestimmt, wobei Koeffizienten der jeweils selektierten Linearkombinationen Zeilen einer Matrix J bestimmen, - bei dem für die Zeilenvektoren der Matrix H nicht-triviale Linearkombinationen bestimmt werden, - bei dem für jede Linearkombination das Hamminggewicht bestimmt wird, - bei dem die Linearkombinationen entsprechend ihres Hamminggewichts gruppiert werden, - bei dem Linearkombinationen der Reihe nach mit ansteigendem Hamminggewicht selektiert werden und anhand jeder selektierten Linearkombination eine Zeile der Matrix M bestimmt wird sowie anhand der Koeffizienten der selektierten Linearkombination eine Zeile der Matrix J bestimmt wird, - bei dem die Linearkombinationen mit ansteigendem Hamminggewicht selektiert werden, bis alle Zeilen der Matrix M und alle Zeilen der Matrix J bestimmt sind, - bei dem die lineare Abbildung auf der inversen Matrix J-1 basiert.
  2. Verfahren nach Anspruch 1, bei dem keine Korrektur erfolgt, falls anhand des Ergebnisses der Syndromberechnung bestimmt wurde, dass kein Fehler erkannt wurde.
  3. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die für die Syndromberechnung genutzte Matrix M die folgenden Eigenschaften aufweist: - jede Zeile der Matrix M weist möglichst wenige Einsen auf, - die Matrix M weist insgesamt möglichst wenige Einsen auf.
  4. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Matrix J-1 so bestimmt wird, dass sie möglichst wenige Einsen pro Zeile aufweist.
  5. Vorrichtung zur Fehlerkorrektur umfassend eine Verarbeitungseinheit, eingerichtet zur Durchführung der folgenden Schritte: - basierend auf einem Datenwort, Durchführen einer Syndromberechnung mit einer Matrix M basierend auf einer Matrix H eines Codes, - falls anhand des Ergebnisses der Syndromberechnung erkennbar ist, dass das Datenwort fehlerhaft ist, Transformieren des Ergebnisses der Syndromberechnung mittels einer linearen Abbildung, - Bestimmen, anhand des Ergebnisses der linearen Abbildung, eines Fehlervektors mittels eines effizienten Fehlerkorrekturalgorithmus, - Korrigieren des fehlerhaften Datenworts anhand des Fehlervektors. - wobei die für die Syndromberechnung genutzte Matrix M basierend auf der Matrix H des Codes wie folgt bestimmt wird: - Bestimmen von Linearkombinationen für die Zeilenvektoren der Matrix H, - Bestimmen eines Hamminggewichts für jede Linearkombination, - basierend auf den entsprechend ihres ansteigenden Hamminggewichts priorisierten Linearkombinationen, Bestimmen von Zeilenvektoren der Matrix M, wobei Koeffizienten der jeweils selektierten Linearkombinationen Zeilen einer Matrix J bestimmen, - ferner eingerichtet zum - Bestimmen von nicht-trivialen Linearkombinationen für die Zeilenvektoren der Matrix H, - Bestimmen des Hamminggewichts für jede Linearkombination, - Gruppieren der Linearkombinationen entsprechend ihres Hamminggewichts, - Selektieren von Linearkombinationen der Reihe nach mit ansteigendem Hamminggewicht, wobei anhand jeder selektierten Linearkombination eine Zeile der Matrix M bestimmt wird sowie anhand der Koeffizienten der selektierten Linearkombination eine Zeile der Matrix J bestimmt wird, - Selektieren der Linearkombinationen gemäß ihrem ansteigendem Hamminggewicht solange, bis alle Zeilen der Matrix M und alle Zeilen der Matrix J bestimmt sind, - wobei die lineare Abbildung auf der inversen Matrix J-1 basiert.
  6. Vorrichtung nach Anspruch 5, die derart eingerichtet ist, dass keine Korrektur erfolgt, falls anhand des Ergebnisses der Syndromberechnung bestimmt wurde, dass kein Fehler erkannt wurde.
  7. Vorrichtung nach einem der Ansprüche 5 oder 6, bei der die für die Syndromberechnung genutzte Matrix M die folgenden Eigenschaften aufweist: - jede Zeile der Matrix M weist möglichst wenige Einsen auf, - die Matrix M weist insgesamt möglichst wenige Einsen auf.
  8. Vorrichtung nach Anspruch einem der Ansprüche 5 bis 7, die derart eingerichtet ist, dass die Matrix J-1 so bestimmt wird, dass sie möglichst wenige Einsen pro Zeile aufweist.
  9. Computerprogrammprodukt, das direkt in einen Speicher eines digitalen Computers ladbar ist, umfassend Programmcodeteile, die dazu geeignet sind, Schritte des Verfahrens nach einem der Ansprüche 1 bis 4 durchzuführen.
DE102022111624.7A 2022-05-10 2022-05-10 Fehlerkorrektur mit schneller Syndromberechnung Active DE102022111624B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102022111624.7A DE102022111624B4 (de) 2022-05-10 2022-05-10 Fehlerkorrektur mit schneller Syndromberechnung
US18/195,469 US20230370091A1 (en) 2022-05-10 2023-05-10 Error Correction With Fast Syndrome Calculation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102022111624.7A DE102022111624B4 (de) 2022-05-10 2022-05-10 Fehlerkorrektur mit schneller Syndromberechnung

Publications (2)

Publication Number Publication Date
DE102022111624A1 DE102022111624A1 (de) 2023-11-16
DE102022111624B4 true DE102022111624B4 (de) 2024-06-13

Family

ID=88510305

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022111624.7A Active DE102022111624B4 (de) 2022-05-10 2022-05-10 Fehlerkorrektur mit schneller Syndromberechnung

Country Status (2)

Country Link
US (1) US20230370091A1 (de)
DE (1) DE102022111624B4 (de)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2041320A1 (de) 1970-08-20 1972-02-24 Licentia Gmbh Verfahren zur Korrektur von UEbertragungsfehlern bei Nachrichten
US6381713B1 (en) 1999-05-11 2002-04-30 Ericsson Inc. Method for responding to transmission errors in a digital communication system according to characteristics of flawed information fields
US20080059867A1 (en) 2006-08-30 2008-03-06 Microsoft Corporation Decoding technique for linear block codes
US20100287440A1 (en) 2009-05-07 2010-11-11 Ramot At Tel Aviv University Ltd. Matrix structure for block encoding
DE102020110787B3 (de) 2020-04-21 2021-09-02 Infineon Technologies Ag Schaltung und verfahren zum kodieren oder dekodieren eines datenworts

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2041320A1 (de) 1970-08-20 1972-02-24 Licentia Gmbh Verfahren zur Korrektur von UEbertragungsfehlern bei Nachrichten
US6381713B1 (en) 1999-05-11 2002-04-30 Ericsson Inc. Method for responding to transmission errors in a digital communication system according to characteristics of flawed information fields
US20080059867A1 (en) 2006-08-30 2008-03-06 Microsoft Corporation Decoding technique for linear block codes
US20100287440A1 (en) 2009-05-07 2010-11-11 Ramot At Tel Aviv University Ltd. Matrix structure for block encoding
DE102020110787B3 (de) 2020-04-21 2021-09-02 Infineon Technologies Ag Schaltung und verfahren zum kodieren oder dekodieren eines datenworts

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Russo, L [u.a.] : Sparsifying Parity-Check Matrices, Applied Soft Computing 96, 31.07.2020
RUSSO, L [u.a.]: Sparsifying parity-check matrices. In: Applied Soft Computing 96, pp. 106601, 2020, Bd. 2, S. 191-211. URL: https://www.inesc-id.pt/publications/15493/pdf/ [abgerufen am 08.03.2023]

Also Published As

Publication number Publication date
US20230370091A1 (en) 2023-11-16
DE102022111624A1 (de) 2023-11-16

Similar Documents

Publication Publication Date Title
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE2162833C3 (de) Einrichtung zum Codieren und Decodieren eines aus k Bytes mit je b Bits bestehenden Datenblocks und Korrektur zweier fehlerhafter Bits
DE3231956A1 (de) Anordnung zum uebertragen von binaerdaten ueber eine vielzahl von kanaelen mit hilfe eines faltungscodes
DE2106314B2 (de) Anordnung zur Fehlererkennung und -korrektur in einem aus b Bits bestehenden Byte eines K Datenbytes enthaltenden Datenblocks
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE102014215252B9 (de) Wirksame fehlerkorrektur von mehrbitfehlern
DE102005022107B9 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE2217935C3 (de) Anordnung und Verfahren zur Korrektur von Doppelfehlern in einer Nachricht
DE102016102590B4 (de) Datenverarbeitungseinrichtungen und verfahren zum rekonstruieren eines puf-werts
DE2260846A1 (de) Fehlerkorrektursystem
DE102020110787B3 (de) Schaltung und verfahren zum kodieren oder dekodieren eines datenworts
DE102013219088B9 (de) Schaltungsanordnung und Verfahren zur Realisierung von Prüfbitkompaktierung für Cross-Parity-Codes
DE102022111624B4 (de) Fehlerkorrektur mit schneller Syndromberechnung
DE102015111729B4 (de) Verfahren und decoder zum bestimmen eines fehlervektors für ein datenwort gemäss einem reed-muller-code
DE102019113970B4 (de) Erkennung von adressfehlern
DE102022111623A1 (de) Fehlerkorrektur mit schneller Syndromberechnung
DE102013201422B3 (de) Verfahren zum Wiederherstellen verlorengegangener und/ oder beschädigter Daten
EP2654209B1 (de) Verfahren und Vorrichtung zur Ermittlung einer Bitfehlerrate bei seriell verkettten LDPC und Blockkodes
DE102017107431B4 (de) Verfahren und Vorrichtungen zur Fehlerkorrekturcodierung beruhend auf hochratigen verallgemeinerten verketteten Codes
DE102015121646B4 (de) Fehlerkorrektur
DE102016201408B4 (de) Verfahren zum Übertragen von Daten
DE102015118668B4 (de) Fehlerkorrektur
DE102021123727B4 (de) Bytefehlerkorrektur
DE102013112020B4 (de) Verfahren und Vorrichtung zum Erkennen von Bitfehlern
DE102018105847A1 (de) Datenwiederherstellung und Datenregeneration mittels Paritätscode

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H03M0013290000

Ipc: H03M0013130000

R018 Grant decision by examination section/examining division