DE102015111729B4 - Verfahren und decoder zum bestimmen eines fehlervektors für ein datenwort gemäss einem reed-muller-code - Google Patents

Verfahren und decoder zum bestimmen eines fehlervektors für ein datenwort gemäss einem reed-muller-code Download PDF

Info

Publication number
DE102015111729B4
DE102015111729B4 DE102015111729.0A DE102015111729A DE102015111729B4 DE 102015111729 B4 DE102015111729 B4 DE 102015111729B4 DE 102015111729 A DE102015111729 A DE 102015111729A DE 102015111729 B4 DE102015111729 B4 DE 102015111729B4
Authority
DE
Germany
Prior art keywords
syndrome
code
reed
threshold
codeword
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
DE102015111729.0A
Other languages
English (en)
Other versions
DE102015111729A1 (de
Inventor
Rainer Göttfert
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 DE102015111729.0A priority Critical patent/DE102015111729B4/de
Priority to US15/214,480 priority patent/US10236916B2/en
Publication of DE102015111729A1 publication Critical patent/DE102015111729A1/de
Application granted granted Critical
Publication of DE102015111729B4 publication Critical patent/DE102015111729B4/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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/43Majority logic or threshold decoding
    • 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/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/155Shortening or extension of 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/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)

Abstract

Gemäß einer Ausführungsform wird ein Verfahren zum Bestimmen eines Fehlervektors für ein Datenwort gemäß einem Reed-Muller-Code beschrieben, umfassend Bestimmen des Syndroms des Fehlervektors gemäß dem Reed-Muller-Code; Expandieren des Syndroms mit Nullen auf 1 Bit Länge weniger als die Länge des Reed-Muller-Codes; Bestimmen eines Codeworts eines Simplexcodes von 1 Bit Länge weniger als die Länge des Reed-Muller-Codes, dessen Unterschied zum expandierten Syndrom ein Gewicht unter einer ersten Schwelle oder gleich oder über einer zweiten Schwelle aufweist; Expandieren des Unterschieds zwischen dem bestimmen Codewort und dem expandierten Syndrom durch eine Null; und Ausgeben des expandierten Unterschieds als Fehlervektor, wenn sein Gewicht unter der ersten Schwelle liegt, oder Ausgeben des invertierten expandierten Unterschieds als Fehlervektor, wenn sein Gewicht gleich oder über der zweiten Schwelle ist.

Description

  • Die vorliegende Offenbarung betrifft Verfahren und Decoder zum Bestimmen eines Fehlervektors für ein Datenwort gemäß einem Reed-Muller-Code.
  • Zur Ermöglichung der Korrektur von Fehlern in Daten, die bei einer Datenübertragung oder -speicherung oder beim Lesen der Daten zu und von einem Speicher verursacht wurden, werden typischerweise Daten mittels eines Codes codiert. Mit einem solchen Code kann man zum Beispiel einen Wert rekonstruieren, der durch eine PUF (Physikalische Unklonbare Funktion) bereitgestellt wird. In beiden Fällen ist es erforderlich, dass ein Fehlervektor in einem Datenwort (z. B. einem in einer Nachricht oder einem PUF-Wert empfangenes Datenwort) bestimmt wird. Es ist wünschenswert, dass eine solche Bestimmung effizient ausgeführt werden kann.
  • Aus der Druckschrift US 8769380 B1 ist bekannt, ein Syndrom eines fehlerhaften Codeworts mit einem Schwellwert zu vergleichen. Falls das Syndrom kleiner oder gleich diesem Schwellwert ist, wird versucht durch einen oder mehrere Fehlerkorrekturmaßnahmen das fehlerhafte Codewort erfolgreich zu decodieren.
  • Aus der Druckschrift US 2011/0219284 A1 ist bekannt, ein Syndrom-Gewicht eines ECC (Error Correction Code) Rahmens mit einem ersten und einem zweiten Schwellwert zu vergleichen und in Abhängigkeit vom Vergleich zu bestimmen, ob eine Fehlerkorrektur am FCC Rahmen durch erste Fehlerkorrektureinheiten oder eine zweite oder dritte Fehlerkorrektureinheit durchgeführt wird.
  • Aus dem Dokument Puchinger, S. et al., On Error Correction for Physical Unclonable Functions, 27.01.2015, ist aus Kap. III.B bekannt, Reed-Muller-Codes zum Dekodieren von Physikalisch Unklonbaren Funktionen zu verwenden, wobei ein Reed-Muller-Code erster Ordnung ein Simplex Code ist.
  • Gemäß einer Ausführungsform wird ein Verfahren zum Bestimmen eines Fehlervektors für ein Datenwort gemäß einem Reed-Muller-Code bereitgestellt, umfassend Bestimmen des Syndroms des Fehlervektors gemäß dem Reed-Muller Code; Expandieren des Syndroms mit Nullen auf 1 Bit Länge weniger als die Länge des Reed-Muller-Codes; Bestimmen eines Codeworts eines Simplexcodes von 1 Bit Länge weniger als die Länge des Reed-Muller-Codes, dessen Differenz zum expandierten Syndrom ein Gewicht unter einer ersten Schwelle oder gleich oder über einer zweiten Schwelle aufweist; Expandieren der Differenz zwischen dem bestimmten Codewort und dem expandierten Syndrom durch eine Null; und Ausgeben der expandierten Differenz als Fehlervektor, wenn sein Gewicht unter der ersten Schwelle liegt, oder Ausgeben der invertierten expandierten Differenz als Fehlervektor, wenn das Gewicht der expandierten Differenz gleich oder über der zweiten Schwelle ist.
  • Gemäß einer weiteren Ausführungsform wird ein Decoder zum Bestimmen eines Fehlervektors für ein Datenwort gemäß einem Reed-Muller-Code gemäß dem obigen Verfahren bereitgestellt.
  • In den Zeichnungen beziehen sich gleiche Bezugszeichen im Allgemeinen in den verschiedenen Ansichten durchweg auf dieselben Teile. Die Zeichnungen sind nicht unbedingt maßstabsgetreu, stattdessen wird im Allgemeinen die Veranschaulichung der Prinzipien der Erfindung betont. In der folgenden Beschreibung werden verschiedene Aspekte mit Bezug auf die folgenden Zeichnungen beschrieben. Es zeigen:
  • 1 einen Typ-II-Decoder.
  • 2 einen Typ-I-Decoder.
  • 3 ein Linear-Rückkopplungsschieberegister (LFSR).
  • 4 einen Codierer für den Reed-Muller-Code R4.
  • 5 einen Codierer für den Reed-Muller-Code R6.
  • 6 einen Codierer für den Reed-Muller-Code Rm.
  • 7 einen Syndromgenerator für den Reed-Muller-Code Rm.
  • 8 ein Beispiel für den Syndromgenerator von 7 für den (8, 16, 4)-Reed-Muller-Code R3.
  • 9 ein Beispiel für den Syndromgenerator von 7 für den (16, 32, 8) Reed-Muller-Code R4.
  • 10 ein Flussdiagramm eines Verfahrens zur Bestimmung eines Fehlervektors für ein Datenwort gemäß einem Reed-Muller-Code gemäß einer Ausführungsform.
  • 11 einen Decoder zur Bestimmung eines Fehlervektors für ein Datenwort gemäß einem Reed-Muller-Code gemäß einer Ausführungsform.
  • 12 einen Decoder gemäß einer Ausführungsform.
  • 13 ein Beispiel für die Decodierung für den (16, 32, 8) Reed-Muller-Code.
  • 14 ein anderes Beispiel für eine Decodierung für den (16, 32, 8) Reed-Muller-Code.
  • 15A bis 15C ein Beispiel für eine Superdecodierung für den Reed-Muller-Code R4 durch den Decoder.
  • 16A bis 16C ein weiteres Beispiel für eine Superdecodierung für den Reed-Muller-Code R4 durch den Decoder.
  • 17 ein weiteres Beispiel für eine Superdecodierung für den Reed-Muller-Code R4 durch den Decoder.
  • Die folgende ausführliche Beschreibung bezieht sich auf die beigefügten Zeichnungen, die zur Veranschaulichung spezifische Einzelheiten und Aspekte der vorliegenden Offenbarung zeigen, in denen die Erfindung ausgeübt werden kann. Es können andere Aspekte benutzt und strukturelle, logische und elektrische Änderungen vorgenommen werden, ohne vom Schutzumfang der Erfindung abzuweichen. Die verschiedenen Aspekte der vorliegenden Offenbarung schließen sich nicht unbedingt gegenseitig aus, da einige Aspekte der vorliegenden Offenbarung mit einem oder mehreren anderen Aspekten der vorliegenden Offenbarung kombiniert werden können, um neue Aspekte zu bilden.
  • Für jede ganze Zahl m ≥ 1 gibt es einen binären linearen (2m, 2m+1, 2m-1)-Code, der als Reed-Muller-(RM-)Code erster Ordnung bezeichnet wird. Jedes Codewort c des Codes hat die Länge n = 2m. Der Reed-Muller-Code weist insgesamt 2m+1 verschiedene Codewörter auf. Die Mindestdistanz des Codes ist d = 2m-1. Das heißt, dass sich zwei beliebige verschiedene Codewörter des Codes an mindestens 2m-1 Koordinatenpositionen unterscheiden, das heißt an mindestens 50% der n = 2m Positionen. Man schreibt dies als d(c1; c2) ≥ 2m-1 für die Codewörter c1 und c2 mit c1 ≠ c2.
  • Der durchweg aus Nullen bestehende Vektor (0, 0, ..., 0) und der durchweg aus Einsen bestehende Vektor (1, 1, ..., 1) sind Codewörter, die sich an allen n = 2m Positionen unterscheiden. Dies ist die einzige Ausnahme für die Regel, dass sich alle (anderen) Paare verschiedener Codewörter des Reed-Muller-Code an genau n/2 = 2m-1 Positionen unterscheiden.
  • Aufgrund seiner großen Mindestdistanz kann der Reed-Muller-Code erster Ordnung eine relativ hohe Anzahl von Fehlern korrigieren. Außerdem ist ein einfacher und schneller Decodierungsalgorithmus (d. h. Fehlerkorrekturalgorithmus) für den RM-Code verfügbar.
  • Der (2m, 2m+1, 2m-1)-RM-Code ist ein binärer linearer Code Cm der Länge n = 2m. Das heißt, die Menge von Codewörtern des Codes Cm ist ein linearer Unterraum des Vektorraums V = F n / 2, d. h. des Vektorraums, der aus allen binären Zeilenvektoren der Länge n besteht. Da es 2m+1 Codewörter (die Elemente von Cm) gibt, hat der Unterraum Cm die Dimension k = m + 1. Aus diesem Grund wird der RM-Code Rm auch als linearer (2m, m + 1, 2m-1)-Code bezeichnet.
  • Die RM-Code-Codierung erzeugt für beliebige gegebene k = m + 1 Nachrichtenbit ein Codewort der Länge n = 2m. Somit ist (solange m nicht sehr klein ist) das produzierte Codeword typischerweise viel länger als das gegebene Nachrichtenwort, so dass das Codewort viele redundante Informationen speichern kann. Die hohe Redundanz in Codewörtern ermöglicht dem RM-Code, viele Fehler zu korrigieren.
  • Es sei zum Beispiel m = 3. Der entsprechende RM-Code C3 ist ein linearer (8, 16, 4)-Code. Das heißt, ein Code mit Länge n = 8, Dimension k = 4 und Mindestdistanz d = 4.
  • Die Generatormatrix des RM-Codes C3 wird gegeben durch
    Figure DE102015111729B4_0002
  • Die Codierungsregel transformiert die Nachricht a = (a0, a1, a2, a3) der Länge k = 4 in das Codewort b = (b0, b1, b2, b3, b4, b5, b6, b7) der Länge n = 8. Die Codierungsregel wird durch b = aG gegeben.
  • Ausführen der Multiplikation des Vektors a mit der Matrix G gibt b0 = a0 b1 = a0 + a3 b2 = a0 + a2 b3 = a0 + a2 + a3 b4 = a0 + a1 b5 = a0 + a1 + a3 b6 = a0 + a1 + a2 b7 = a0 + a1 + a2 + a3
  • Zusammenaddieren der Gleichungen für b0 und b4 gibt a1 = b0 + b4.
  • Addieren der Gleichungen für b1 und b5 gibt a1 = b1 + b5.
  • Ähnlich gibt Kombinieren der Gleichungen für b2 und b6 a1 = b2 + b6.
  • Kombinieren der Gleichungen für b3 und b7 gibt a1 = b3 + b7.
  • Somit kann das Nachrichtenbit a1 auf vier verschiedene unabhängige Weisen unter Verwendung der Codewortbit bj ausgedrückt werden: a1 = b0 + b4 a1 = b1 + b5 a1 = b2 + b6 a1 = b3 + b7
  • Dies zeigt, dass das Nachrichtenbit a1 in dem Codewort
    b = (b0, b1, b2, b3, b4, b5, b6, b7) auf hochredundante Weise enthalten ist. Das Nachrichtenbit a1 kann aus dem Codewort b auf vier verschiedene Weisen berechnet werden. Dasselbe gilt für die anderen Nachrichtenbit a0, a2 und a3.
  • Ein Decodierungsalgorithmus kann diesen Umstand nutzen: unter der Annahme, dass das ursprüngliche Wort b = (b0, b1, b2, b3, b4, b5, b6, b7) während der Übertragung oder Speicherung fehlerhaft wird und das empfangene Wort
    b' = (b'0, b'1, b'2, b'3, b'4, b'5, b'6, b'7) ist
    und unter der weiteren Annahme, dass ein Bit von b' fehlerhaft ist, kann man zur Bestimmung des wahren Nachrichtenbit a1
    b'0 + b'4, b'1 + b'5, b'2 + b'6, b'3 + b'7,
    berechnen und an diesen vier Werten eine Mehrheitswahl durchführen. Wenn zum Beispiel drei dieser Werte 0 sind und ein Wert gleich 1 ist, kann a1 auf 0 gesetzt werden.
  • Die Nachrichtenbit a0, a2, a3 können auf eine ähnliche Weise aus b' abgerufen werden. Nachdem das Nachrichtenwort
    a = (a0, a1, a2, a3) auf diese Weise bestimmt wurde, kann man mit der Gleichung aG = b notwendigenfalls das gesamte Codewort produzieren. (Bei einigen Anwendungen ist man nur an den Nachrichtenbit a0, a1, a2, a3 interessiert und kümmert sich nicht um das gesamte Codewort. In diesem Fall ist man zufrieden, wenn die Aufgabe, die vier Nachrichtenbit korrigiert zu haben, abgeschlossen wurde).
  • Der obige Decodierungsalgorithmus wird als Mehrheits-Logikdecodierungsalgorithmus bezeichnet und wurde von I. S. Reed 1954 vorgeschlagen.
  • Es gibt verschiedene mathematische Ansätze für den Reed-Muller-Code. Der Ansatz von Reed verwendet Boolsche Funktionen. Das heißt, die Codewörter werden als Boolsche Funktionen betrachtet. Ein anderer Ansatz für den RM-Code verwendet Hadamard-Matrizen und ein Theorem bezüglich ihrer Faktorisierung. Dieser Ansatz wurde von R. R. Green 1966 benutzt und führte zur Entwicklung eines anderen effizienten Decodierers für den RM-Code, der als die Green-Maschine bezeichnet wird.
  • Da der RM-Code Cm (erster Ordnung) die Mindestdistanz d = 2m-1 aufweist, kann der Decoder bis zu t = 1 / 2d – 1 = 2m-2 – 1 Fehler korrigieren. In den obigen Beispiel ist m = 3 und d = 4, woraus folgt, dass ein Bit des Codeworts der Länge n = 8 korrigiert werden kann.
  • Für m = 5 hat der KM-Code C5 die Länge 25 = 32 und die Mindestdistanz d = 24 = 16. Somit können beliebige sieben (oder weniger) Bit des Codeworts der Länge n = 32 korrigiert werden. Tatsächlich wurde der Code C5 1972 von der NASA verwendet, um Fotos zu codieren, die von Marine 9 vom Mars gesendet wurden.
  • Bei einem linearen (n, 2k, d)-Code können zwei Arten von Decodierungsalgorithmus unterschieden werden.
  • Die erste Art wirkt direkt an dem empfangenen potentiell verfälschten Codewort b' und produziert das korrigierte Codewort b. Dies ist in 1 dargestellt.
  • 1 zeigt einen Typ-II-Decoder 100.
  • Der Typ-II-Decoder 100 empfingt ein Datenwort 101, das einem fehlerhaften Codewort 102 entspricht, und erzeugt ein fehlerfreies Codewort, wobei angenommen wird, dass die Anzahl fehlerhafter Bit nicht zu hoch ist.
  • Die zweite Art von Decoder, die als Typ-I-Decoder bezeichnet wird, berechnet zuerst aus dem empfangenen Datenwort b' der Länge n (das ein potentiell verfälschtes Codewort ist) einen Vektor der Länge n – k, der als das Syndrom von b' bezeichnet und als s = S(b') geschrieben wird. Als Nächstes wird das Syndrom s in den Decoder eingegeben, der den Fehlervektor e der Länge n ausgibt. Als Letztes wird das korrigierte Codewort b durch b = b' + e berechnet. Dies ist in 2 dargestellt.
  • 2 zeigt einen Typ-I-Decoder 200.
  • Der Typ-I-Decoder 200 empfängt ein aus einem empfangenen Datenwort 201 erzeugtes Syndrom 202 und erzeugt (unter der Annahme, dass die Anzahl fehlerhafter Bit in dem empfangenen Datenwort 201 nicht zu hoch ist) einen Fehlervektor 203, auf dessen Basis die Fehler korrigiert werden können, d. h. das fehlerfreie Codewort 204 rekonstruiert werden kann.
  • Sowohl der Mehrheits-Logikdecoder von I. S. Reed als auch der serielle orthogonale Decoder von R. R. Green sind Typ-II-Decoder. Typ-I-Decoder sind jedoch typischerweise Typ-II-Decodern überlegen. Dies gilt insbesondere im Kontext des Rekonstruierens von Werten der PUF (Physikalischen Unklonbaren Funktion) und biometrischen Daten, was typischerweise durch Verwendung von Verfahren aus der algebraischen Codierungstheorie wie im Folgenden beschrieben erreicht wird.
  • In PUF-Systemen ist eine Bitkette A mit einem physischen Objekt assoziiert. Ähnlich wird bei Biometrie eine Bitkette A mit einer Person assoziiert. (Die Bitkette A könnte z. B. der digitalisierte Fingerabdruck der Person oder ein digitalisierte Scan der Iris des Auges der Person sein). Die Bitkette A ist eindeutig definiert. (Zum Beispiel ist A das Ergebnis von Messungen während eines Einschreibungsprozesses.)
  • Um Rekonstruktion von A zu erlauben, werden im Rahmen der algebraischen Codierungstheorie Helferinformationen (oder Hilfsinformationen) h aus A berechnet. Die Helferinformationen h enthalten einige, aber nicht alle Informationen der Bitkette A. Deshalb ist es unmöglich, A aus h alleine zu rekonstruieren. Folglich können die Helferinformationen h öffentlich gemacht werden, während A als Geheimnis behandelt wird.
  • An einem späteren Zeitpunkt sei ein neuer PUF-Wert A' aus dem physischen Objekt oder ein neuer biometrischer Wert (z. B. Fingerabdruck, Irisscan oder bestimmte andere biometrische Daten) von der Person produziert. Die öffentlichen Helferinformationen h erlauben zusammen mit der tatsächlichen Bitkette A' das Rekonstruieren der ursprünglichen Bitkette A.
  • Es gibt zwei Ansätze, um dies mit einem Code C zu erreichen:
    • 1. Verwendung des Typ-II-Decoders: Einschreibung: Gegeben: biometrischer Wert oder PUF-Wert A Helferdaten berechnen: h = A + crand mit crand ∊ C, zufällig gewählt. Authentifizierung: Gegeben: tatsächlicher biometrischer Wert oder PUF-Wert A' 1. Berechnen von A' + h = A' + (A + crand) = (A' + A) + crand = e + crand. 2. Eingabe = e + crand in den Typ-II-Decoder, der crand ausgibt (unter der Annahme, dass nicht zu viele Unterschiede zwischen A und A' existieren, mit denen der Code umgehen kann) 3. Berechnen von A über A = h + crand.
    • 2. Verwendung des Typ-I-Decoders: Einschreibung: Gegeben: biometrischer Wert oder PUF-Wert A. Berechnen von Helferdaten: h = S(A), das Syndrom von A. Authentifizierung: Gegeben: tatsächlicher biometrischer Wert oder PUF-Wert A'. 1. Berechnen von S(A'), des Syndroms von A'. 2. Berechnen von S(A') + h = S(A') + S(A) = S(A + A') = S(e). 3. Eingabe von S(e) in den Typ-I-Decoder, der e ausgibt (unter der Annahme, dass nicht zu viele Unterschiede zwischen A und A' bestehen, mit denen der Code umgehen kann). 4. Berechnen von A über A = A' + e.
  • Es ist ersichtlich, dass für die Benutzung des Typ-II-Decoders ein Zufallszahlengenerator erforderlich ist, was bei der Benutzung des Typ-I-Decoders nicht der Fall ist. Ferner umfassen die Helferinformationen für den Typ-I-Decoder nur n – k Bit, während sie für den Typ-II-Decoder n Bit umfassen.
  • Wie nachfolgend ausführlicher beschrieben wird, kann der Reed-Muller-Code erster Ordnung aus dem Simplexcode Sm abgeleitet werden. Der Simplexcode Sm der Ordnung m ist ein linearer (2m-1, 2m, 2m-1)-Code. Das heißt, dass die Codewörter die Länge n = 2m – 1 aufweisen, der Code Sm insgesamt 2m Codewörter enthält (so dass der Code die Dimension m aufweist) und der Code die Mindestdistanz d = 2m-1 aufweist.
  • Der Simplexcode Sm kann über ein primitives binäres Polynom f(x) des Grads m konstruiert werden. Das Polynom f(x) definiert eine lineare Rekursion der Ordnung m. Im Fall f(x) = xm + bm-1xm-1 + ... + b1x + b0 wird die zugeordnete lineare Rekursion gegeben durch uj+m = bm-1uj+m-1 + ... + b1uj+1 + b0uj für i = 0, 1, ...
  • Man kann m binäre Anfangswerte u0, u1, ..., um-1 beliebig wählen und dann die lineare Rekursion verwenden, um die Terme um, um+1, ... zu produzieren. Auf diese Weise wird eine unendliche Sequenz definiert, die periodisch ist, mit einer Länge der Periode von 2m – 1. Ein voller Teil der Periode der Sequenz, d. h.
    Figure DE102015111729B4_0003
    ist gemäß diesem Konstruktionsansatz ein Codewort des Simplexcodes Sm. Da die m binären Anfangswerte u0, u1, ..., um-1 auf 2m verschiedene Weisen gewählt werden können, gibt dieser Ansatz 2m verschiedene Sequenzen, und somit 2m verschiedene Codewörter.
  • Um zum Beispiel den Simplexcode S3 der Ordnung 3 zu konstruieren, kann man das primitive Polynom f(x) = x3 + x + 1 verwenden. Die zugeordnete lineare Rekursion wird gegeben durch uj+3 = uj+1 + uj for j = 0, 1, ....
  • Wenn die drei beliebigen binären Zahlen für die Anfangswerte u0, u1, u2 gewählt sind, sind dann die übrigen Terme der Sequenz {ui} eindeutig bestimmt. Zum Beispiel definieren die Anfangswerte u0 = 1, u1 = 1, u2 = 1 die unendliche Sequenz 1 1 1 0 0 1 0, 1 1 1 0 0 1 0, 1 1 ....
  • Der Vektor c, der die ersten sieben Terme der Sequenz enthält, nämlich der Vektor c = (1 1 1 0 0 1 0)
    repräsentiert ein Codewort des Simplexcodes S3. Es gibt acht Möglichkeiten zur Wahl der drei Anfangswerte u0, u1, u2, die den acht Codewörtern von S3 entsprechen. Die Codewörter sind c0 = 0 0 0 0 0 0 0, c1 = 0 0 1 0 1 1 1, c2 = 0 1 0 1 1 1 0, c3 = 0 1 1 1 0 0 1, c4 = 1 0 0 1 0 1 1, c5 = 1 0 1 1 1 0 0, c6 = 1 1 0 0 1 0 1, c7 = 1 1 1 0 0 1 0.
  • Somit besteht der Simplexcode der Ordnung 3 aus acht Codewörtern. Der Simplexcode der Ordnung m = 3 ist ein (23 – 1, 23, 23-1) = (7, 8, 4)-Code. Die Codewörter weisen die Länge n = 7 auf, es gibt 8 Codewörter und die Mindestdistanz des Codes ist gleich 4. Dies wird durch den Umstand widergespiegelt, dass jedes von Null verschiedene Codewort das Gewicht 4 aufweist, was bedeutet, dass jedes solche Codewort vier Einsen enthält.
  • Eine lineare Rekursion kann als ein Linear-Rückkopplungsschieberegister (LFSR) implementiert werden. Zum Beispiel entspricht die lineare Rekursion uj+3 = uj+1 + uj für j = 0, 1, ... dem in 3 abgebildeten LFSR.
  • 3 zeigt ein LFSR 300.
  • Das LFSR 300 umfasst drei Flipflops 301, 302, 303, die mit einem Schieberegister (das in 3 von rechts nach links schiebt) verbunden sind. Die Ausgabe des ersten Flipflops 301 und die Ausgabe des zweiten Flipflops 302 werden über ein XOR 304 zum Eingang des dritten Flipflops 303 rückgekoppelt. Die Ausgabe des ersten Flipflops 301 ist die Ausgabe des LSFR 300.
  • Wenn das LFSR zum Beispiel mit u0 = 1, u1 = 1, u2 = 1 (in 3 von links nach rechts) initialisiert und 7 = 23 – 1 mal getaktet wird, gibt es das Codewort c = 1 1 1 0 0 1 0 aus.
  • Gemäß einer Ausführungsform wird die Tatsache benutzt, dass der Reed-Muller-Code (erster Ordnung) auf die folgende Weise aus dem Simplexcode Sm abgeleitet werden kann:
    • • Erweitern jedes Codeworts von Sm durch Einführen einer zusätzlichen Null vor jedem Codewort. Dies gibt eine Menge Am von 2m Vektoren der Länge 2m.
    • • Als Nächstes für jeden Vektor in Am den Binärkomplementvektor berechnen. Dies ergibt eine weitere Menge Bm von 2m Binärvektoren der Länge 2m.
    • • Die Vereinigungsmenge Am ⋃ Bm enthält 2·2m = 2m+1 Binärvektoren der Länge 2m.
  • Die Menge Am ⋃ Bm ist wieder ein linearer Code. Der neue Code hat die Länge n = 2m, Dimension k = m + 1 und Mindestdistanz d = 2m-1. Anders ausgedrückt, stellt Am ⋃ Bm einen linearen (2m, 2m+1, 2m-1)-Code dar, der tatsächlich dem Reed-Muller-Code äquivalent ist und im Folgenden als Rm bezeichnet wird. (Zwei Codes werden äquivalent genannt, wenn die Codewörter eines Codes durch stimmiges Umordnen von Codeworteinträgen aus den Codewörtern des anderen erhalten werden können.)
  • Da es üblich ist, äquivalente Codes als identische Codes zu bezeichnen, kann man Cm = Rm = Am ⋃ Bm schreiben.
  • Äquivalente Codes können jedoch, obwohl sie dieselben Parameter (Codelänge, Dimension, Mindestdistanz) aufweisen, in bestimmten strukturellen Eigenschaften unterschiedlich sein, was für den ursprünglichen Reed-Muller-Code Cm und den Reed-Muller-Code Rm, der aus dem Simplexcode abgeleitet wird, der Fall ist. Tatsächlich ist ersichtlich, dass gemäß verschiedenen Ausführungsformen wie nachfolgend weiter beschrieben wird solche zusätzlichen strukturellen Eigenschaften ausgenutzt werden können.
  • Als ein Beispiel betrachte man den Simplexcode S4, der durch das primitive Polynom f(x) = x4 + x3 + 1 definiert wird.
  • Die zugeordnete lineare Rekursion lautet uj + 4 = uj+3 + uj für j = 0, 1, ...
  • Der 15-Bit-Vektor c = 0 1 1 1 1 0 1 0 1 1 0 0 1 0 0 ist ein Codewort des Simplexcodes S4. Mit dem Codewort c kann man zwei 16-Bit-Codewörter des Reed-Muller-Code R4 erzeugen, nämlich a = (0; c) = 0 0 1 1 1 1 0 1 0 1 1 0 0 1 0 0; b = (1; c) = 1 1 0 0 0 0 1 0 1 0 0 1 1 0 1 1.
  • Unter Verwendung dieses Verfahrens an allen 16 Codewörtern von S4 können die 32 Codewörter von R4 erhalten werden.
  • Ähnlich entstehen aus den Codewörtern von S3 wie oben gegeben, nämlich c0 = 0 0 0 0 0 0 0, c1 = 0 0 1 0 1 1 1, c2 = 0 1 0 1 1 1 0, c3 = 0 1 1 1 0 0 1, c4 = 1 0 0 1 0 1 1, c5 = 1 0 1 1 1 0 0, c6 = 1 1 0 0 1 0 1, c7 = 1 1 1 0 0 1 0 die Codewörter
    (0; c0), (1; c 0), (0; c1), (1; c 1), (0; c 2), (0; c3), (1; c 3) (0; c4), (1; c 4) (0; c5), (1; c 5) (0; c6), (1; c 6) (0; c7), (1; c 7) des (16, 32, 8)-Reed-Muller-Code R4 (wobei der Strich über einem Binärvektor bitweise binäre Komplementierung bedeutet).
  • Der Simplexcode Sm und der Reed-Muller-Code Rm stehen somit offensichtlich gemäß
    Rm = (0, Sm) ⋃ (1, Sm) in Beziehung.
  • Dem ursprünglichen Reed-Muller-Code Cm fehlen mindestens zwei Eigenschaften, die der Äquivalente aus dem Simplexcode Sm Code Rm besitzt. Bei dem ursprünglichen Reed-Muller-Code hat die Codierungsfunktion die Form Enc: a0a1 ... am ↦ b0b1 ... bn-1 wobei n = 2m ist. Im Gegensatz dazu hat die Codierungsfunktion des äquivalenten Codes Rm die Form Enc: a0a1 ... am ↦ a0a1 ... amrm + 1rm + 2 ... rn-1.
  • Das bedeutet, dass die m + 1 Informationsbit a0, a1, ..., am erneut als die ersten m + 1 Codewortbit erscheinen, gefolgt von dem Redundanzbit rm+1, ..., rn-1. Ein Code, dessen Codierungsfunktion diese Form aufweist, wird als systematischer Code bezeichnet. Also ist Rm ein systematischer Code.
  • Bezüglich der zweiten Eigenschaft wird ein Code C der Länge n als cyclisch bezeichnet, wenn
    (c0, c1, ..., cn-1) ∊ C zur Folge hat, dass (c1, c2, ..., cn-1, c0) ∊ C ist.
  • Obwohl der Simplexcode cyclisch ist, ist der Reed-Muller-Code nicht cyclisch. Die äquivalente Version des Reed-Muller-Codes, der Code Rm ist jedoch nahezu cyclisch: (c0, c1, c2, ..., cn-1) ∊ Rm hat zur Folge, dass (c0, c2, c3, ..., cn-1, c1) ∊ Rm ist.
  • Die Tatsache, dass die äquivalente Version des Reed-Muller-Codes Rm stark mit dem Simplexcode Sm in Beziehung steht, zusammen mit der Tatsache, dass der Simplexcode leicht auf Linear-Rückkopplungsschieberegistern (LFSR) implementiert werden kann, erlaubt die Konstruktion effizienter Schaltnetzwerke zur Codierung, Decodierung und Syndromberechnung für den Code Rm.
  • Zum Beispiel kann man mit dem primitiven Polynom f(x) = x4 + x3 + 1 den (16, 32, 8)-Reed-Muller-Code R4 erzeugen. Der Code hat die Dimension k = 5. Deshalb werden fünf Informationsbit
    a0, a1, a2, a3, a4 zu einem Codewort der Länge n = 16 codiert. Anders ausgedrückt, müssen zu den gegebenen fünf Informationsbit a0, a1, a2, a3, a4 elf Steuerbit (die auch als Prüfbit oder Redundanzbit bezeichnet werden) r5, r6, ..., r15 zur Codierung berechnet werden, so dass der Vektor
    (a0, a1, a2, a3, a4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15)
    ein Codewort von R4 ist. Diese Aufgabe kann unter Verwendung der in 4 dargestellten Schaltung gelöst werden.
  • 4 zeigt einen Codierer 400 für den Reed-Muller-Code R4.
  • Der Codierer 400 umfasst vier Flipflops 401, 402, 403, 404, die mit einem Schieberegister (das in 4 von rechts nach links schiebt) verbunden sind. Die Ausgabe des ersten Flipflops 401 und die Ausgabe des vierten Flipflops 404 sowie die Ausgabe eines fünften Flipflops 405 (dessen Wert in sich selbst zurückgekoppelt wird) werden über zwei XORs 406, 407 zum Eingang des vierten Flipflops 404 rückgekoppelt. Diese Rückkopplung ist auch die Ausgabe des LSFR 400.
  • Bei Initialisierung des Schieberegisters (von links nach rechts) mit a1, a2, a3, a4 und des fünften Flipflops 405 mit a0 und elf-maliger Taktung des Codierers 400 (d. h. Betätigung dieses für 11 Taktzyklen), ist die Ausgabe (r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15).
  • Die erzeugten 11 Ausgangsbit sind die gewünschten 11 Steuerbit für die Informationsbit a0, a1, a2, a3, a4.
  • Beispielsweise erzeugt der Codierer 400 für die Informationsbit 11000 die Steuerbit 01010011011.
  • Ein Codierer für den (64, 128, 32)-Reed-Muller-Code R6, der durch das primitive Polynom f(x) = x6 + x + 1 definiert wird, kann durch die in 5 dargestellte Schaltung implementiert werden.
  • 5 zeigt einen Codierer 500 für den Reed-Muller-Code R6.
  • Der Codierer 500 umfasst sechs Flipflops 501, 502, 503, 504, 505, 506, die mit einem (in 4 von rechts nach links schiebenden) Schieberegister verbunden sind. Die Ausgabe des ersten Flipflops 501 und die Ausgabe des zweiten Flipflops 502 sowie die Ausgabe eines siebten Flipflops 507 (dessen Wert in sich selbst rückgekoppelt wird) werden über zwei XORs 508, 509 zum Eingang des sechsten Flipflops 506 rückgekoppelt. Diese Rückkopplung ist auch die Ausgabe des LSFR 500.
  • Der Code R6 hat eine Dimension von 7. Deshalb entsteht aus den sieben Informationsbit a0, a1, ..., a6 ein 64 Bit langes Codewort a0 a1 ... a6 r7 r8 ... r63. Wenn das Schieberegister der Schaltung 500 mit den Bit a1, ..., a6 initialisiert wird und das siebte Flipflop mit a0 initialisiert wird und der Codierer 500 57 mal getaktet wird, werden die 57 Steuerbit des Codeworts ausgegeben.
  • Im Allgemeinen kann für den (2m, 2m+1, 2m-1)-Reed-Muller-Code Rm, der durch das binäre primitive Polynom f(x) = xm + bm-1xm-1 + ... + b1x + 1 spezifiziert wird, ein Codierer durch ein Schaltnetzwerk wie in 6 dargestellt implementiert werden.
  • 6 zeigt einen Codierer 600 für den Reed-Muller-Code Rm.
  • Der Codierer 600 umfasst m Flipflops 601, die mit einem (in 6 von rechts nach links schiebenden) Schieberegister verbunden sind. Die Ausgabe des ersten Flipflops und im Fall bi = 1 die Ausgabe des i-ten Flipflops (für i = 1, ..., m – 1), sowie die Ausgabe eines (m + 1)-ten Flipflops 602 (dessen Wert in sich selbst zurückgekoppelt wird) werden über XORs 603 zum Eingang des m-ten Flipflops rückgekoppelt. Diese Rückkopplung ist auch die Ausgabe des LSFR 600.
  • Die Flipflops (im Allgemeinen Speicherzellen) des Schieberegisters werden mit den Informationsbit a1, a2, ..., am bzw. das (m + 1)-te Flipflop mit a0 initialisiert. Die Schaltung 600 wird 2m – m – 1 mal getaktet, um die Redundanzbit rm+1, rm+2, ..., rn-1 1 zu produzieren, wobei n = 2m die Codewortlänge ist.
  • Im Folgenden wird ein Syndromberechner (d. h. ein Syndromberechnungsansatz und eine Berechnungsschaltung) für den Code Rm beschrieben.
  • Jeder binäre lineare (n, 2k, d)-Code C kann durch eine binäre (n – k) × n-Matrix H des Rangs n – k beschrieben werden, die als die Paritätsprüfmatrix des Codes C bezeichnet wird. Der Code C kann als der Nullraum der Paritätsprüfmatrix H angesehen werden. Anders ausgedrückt, ist ein Binärvektor c der Länge n ein Codewort genau dann, wenn Hct = 0 ist.
  • Wenn y ein beliebiger Binärvektor der Länge n ist, wird der Vektor S(y) = Hyt der Länge n – k als das Syndrom von y bezeichnet. Die oben erwähnte Eigenschaft von H kann somit folgendermaßen umformuliert werden: ein Binärvektor der Länge n ist ein Codewort genau dann, wenn es das Syndrom Null aufweist. Die Wichtigkeit des Konzepts ist in dem Umstand begründet, dass Datenwörter, die fehlerhaften Codewörtern entsprechen, die identische Fehlermuster aufweisen, identische Syndrome aufweisen.
  • Während im Allgemeinen das Syndrom von y durch Ausführen der Matrixmultiplikation Hyt berechnet werden muss, kann im Fall des (aus dem Simplexcode Sm abgeleiteten) Reed-Muller-Codes Rm eine effizientere Weise verwendet werden, wie in 7 dargestellt.
  • 7 zeigt einen Syndromgenerator 700 für den Reed-Muller-Code Rm.
  • Es sei der (2m, 2m+1, 2m-1)-Reed-Muller-Code Rm definiert durch das primitive binäre Polynom f(x) = xm + bm-1xm-1 + ... + b1x + 1.
  • Der Syndromgenerator 700 ist offensichtlich dem Codierer-Schaltnetzwerk 600 ähnlich. Ähnlich wie der Codierer 600 umfasst der Syndromgenerator 700 m Flipflops 701, die mit einem (in 7 von rechts nach links schiebenden) Schieberegister verbunden sind. Die Ausgabe des ersten Flipflops und im Fall bi = 1 die Ausgabe des i-ten Flipflops (für i = 1, ..., m – 1) sowie die Ausgabe eines (m + 1)-ten Flipflops 702 (dessen Wert in sich selbst zurückgekoppelt wird) werden über XORs 703 zum Eingang des m-ten Flipflops zurückgekoppelt. Diese Rückkopplung wird durch ein weiteres XOR 704, dessen Ausgang der Ausgang des Syndromgenerators 700 ist, mit der Eingabe des Syndromgenerators 700 verknüpft.
  • Es wird angenommen, dass das Syndrom S(y) für den Binärvektor y = (y0, y1, ..., yn-1) der Länge n = 2m zu berechnen ist. Der Syndromgenerator 700 gibt das Syndrom S(y) aus, wenn (ym+1, ym+2, ..., yn-1) eingegeben wird (ein Bit pro Taktzyklus), das Schieberegister (von links nach rechts) mit den Elementen y1, y2, ..., ym bzw. das (m + 1)-te Flipflop mit y0 initialisiert wird und n – k = 2m – m – 1 Male getaktet wird.
  • 8 zeigt ein Beispiel für den Syndromgenerator von 7 für den (8, 16, 4)-Reed-Muller-Code R3, der durch f(x) = x3 + x + 1 definiert wird.
  • Für einen Vektor y = (y0, y1, ..., y7) ergibt Initialisierung der Flipflops 801, 802 wie in 8 dargestellt und wie mit Bezug auf 7 beschrieben mit y0, y1, y2, y3 und Eingeben von (y4, y5, y6, y7) die Ausgabe S(y) = (s0, s1, s2, s3).
  • 9 zeigt ein Beispiel für den Syndromgenerator von 7 für den (16, 32, 8)-Reed-Muller-Code R4, der durch f(x) = x4 + x3 + 1 definiert wird.
  • Für einen Vektor y = 0010 0001 0110 1100 ergibt Initialisierung der Flipflops 901, 902 wie mit Bezug auf 7 beschrieben mit 00100 und Eingeben von 00101101100 die Ausgabe S(y) = 01010111010.
  • Für einen Vektor y = 1110 1010 0011 1011 ergibt Initialisierung der Flipflops 901, 902 wie mit Bezug auf 7 beschrieben mit 11101 und Eingeben von 01000111011 die Ausgabe S(y) = 10000101111.
  • Gemäß einer Ausführungsform wird ein Typ-I-Decodierungsschema für den Reed-Muller-Code bereitgestellt, wie in 10 dargestellt.
  • 10 zeigt ein Flussdiagramm 1000 eines Verfahrens zum Bestimmen eines Fehlervektors für ein Datenwort gemäß einem Reed-Muller-Code.
  • In 1001 wird das Syndrom des Fehlervektors gemäß dem Reed-Muller-Code bestimmt, z. B. mittels eines Syndromgenerators wie in 7 dargestellt, der zum Beispiel auf ein fehlerhaftes Codewort, einen PUF-Wert oder einen biometrischen Wert (und zum Beispiel mittels eines nachfolgenden Zusatzes von Helferinformationen) angewandt wird.
  • In 1002 wird das Syndrom mit Nullen auf 1 Bit Länge weniger als die Länge des Reed-Muller-Codes expandiert (z. B. durch Speichern des Syndroms in einem mit Nullen initialisierten Register).
  • In 1003 wird ein Codewort eines Simplexcodes von 1 Bit Länge weniger als der Länge des Reed-Muller-Codes, dessen Unterschied zum expandierten Syndroms ein Gewicht unter einer ersten Schwelle oder gleich oder über einer zweiten Schwelle aufweist, bestimmt.
  • In 1004 wird der Unterschied zwischen dem bestimmten (Simplexcode-)Codewort und dem expandierten Syndrom durch eine Null expandiert.
  • In 1005 wird der expandierte Unterschied als Fehlervektor ausgegeben, wenn sein Gewicht unter der ersten Schwelle liegt oder es wird der invertierte expandierte Unterschied als Fehlervektor ausgegeben, wenn das Gewicht des expandierten Unterschieds gleich oder über der zweiten Schwelle ist.
  • Gemäß einer Ausführungsform wird anders ausgedrückt ein Simplexcode-Codewort durchsucht, das selbst oder dessen Inverse dem (mit Nullen expandierten) Syndrom eines empfangenen Datenworts nahekommt (was bedeutet, dass die beiden Vektoren eine kleine Hammingdistanz aufweisen). Der Unterschied zwischen dem Simplexcodewort wird dann durch '0' oder seine Inverse durch eine '1' expandiert, um den Fehlervektor des Datenworts zu ergeben.
  • Dies erlaubt Realisierung eines Typ-I-Decoders mit ähnlicher Effizienz und Hardwarekomplexität wie die Typ-II-Decoder von Reed und Green, während er typischerweise besser für oben beschriebene biometrische und PUF-Anwendungen geeignet ist.
  • Das in 10 dargestellte Decodierungsverfahren basiert offensichtlich auf einer Konstruktion des Reed-Muller-Codes durch Erweitern aller Codewörter eines Simplexcodes um ein Bit und Vergrößern der Menge an Codewörtern durch Hinzufügen aller binärer Komplemente von Codewörtern als zusätzliche Codewörter. Dies erlaubt zum Beispiel Implementierung eines Decoders unter Verwendung von Linear-Rückkopplungsschieberegistern. Ferner kann auf diese Weise ein Codierer und ein Syndromgenerator konstruiert werden.
  • Im Folgenden werden verschiedene Ausführungsformen gegeben.
  • Ausführungsform 1 ist ein Verfahren zum Bestimmen eines Fehlervektors für ein Datenwort gemäß einem Reed-Muller-Code wie in 10 dargestellt.
  • Ausführungsform 2 umfasst das Verfahren von Ausführungsform 1, wobei die erste Schwelle und die zweite Schwelle vorbestimmte Schwellen sind.
  • Ausführungsform 3 umfasst das Verfahren von Ausführungsform 1 oder 2, wobei die zweite Schwelle gleich der Länge des Reed-Muller-Codes minus der ersten Schwelle ist.
  • Ausführungsform 4 umfasst das Verfahren einer beliebigen der Ausführungsformen 1 bis 3, wobei die erste Schwelle gleich ein Viertel der Länge des Reed-Muller-Codes ist.
  • Ausführungsform 5 umfasst das Verfahren nach einer beliebigen der Ausführungsformen 1 bis 3, wobei die erste Schwelle über einem Viertel der Länge des Reed-Muller-Codes ist, und das Verfahren umfasst Bestimmen mehrerer Codewörter eines Simplexcodes von 1 Bitlänge weniger als die Länge des Reed-Muller-Codes, deren Unterschied zum expandierten Syndrom ein Gewicht unter einer ersten Schwelle oder gleich oder über einer zweiten Schwelle aufweist, und umfasst für jedes bestimmte Codewort
    Expandieren des Unterschieds durch eine Null;
    Expandieren des Unterschieds zwischen dem bestimmten Codewort und dem expandierten Syndrom durch eine Null;
    Ausgeben des expandierten Unterschieds als Fehlervektor, wenn sein Gewicht unter der ersten Schwelle ist, oder des Invertierten oder Ausgeben des invertierten expandierten Unterschieds als Fehlervektor, wenn das Gewicht des expandierten Unterschieds gleich oder über der zweiten Schwelle ist.
  • Ausführungsform 6 umfasst das Verfahren nach einer beliebigen der Ausführungsformen 1 bis 3, wobei die erste Schwelle das Minimum ist, für das es genau ein Codewort des Simplexcodes gibt, dessen Unterschied zum expandierten Syndrom ein Gewicht unter der ersten Schwelle oder gleich oder über Länge des Reed-Muller-Codes minus der ersten Schwelle aufweist.
  • Ausführungsform 7 umfasst das Verfahren einer beliebigen der Ausführungsformen 1 bis 6, umfassend Expandieren des Syndroms mit vorderen Nullen auf 1 Bitlänge weniger als die Länge des Reed-Muller-Codes.
  • Ausführungsform 8 umfasst das Verfahren einer beliebigen der Ausführungsformen 1 bis 7, umfassend Expandieren des Unterschieds zwischen dem bestimmten Codewort und dem expandierten Syndrom durch eine vordere Null.
  • Ausführungsform 9 umfasst das Verfahren einer beliebigen der Ausführungsformen 1 bis 6, wobei der Fehlervektor ein Fehlervektor für ein Datenwort ist, das ein fehlerhaftes Codewort des Reed-Muller-Codes ist.
  • Ausführungsform 10 umfasst das Verfahren von Ausführungsform 9, umfassend Bestimmen des Syndroms des Datenworts als das Syndrom des Fehlervektors.
  • Ausführungsform 11 umfasst das Verfahren einer beliebigen der Ausführungsformen 1 bis 6, wobei der Fehlervektor ein Fehlervektor für ein Datenwort ist, das ein fehlerhafter PUF-Wert oder ein fehlerhafter biometrischer Wert ist.
  • Ausführungsform 12 umfasst das Verfahren von Ausführungsform 11, umfassend Bestimmen der Summe des Syndroms des fehlerhaften PUF-Werts oder fehlerhaften biometrischen Werts oder eines vorbestimmten Syndroms eines korrekten PUF-Werts oder korrekten biometrischen Werts als das Syndrom des Fehlervektors.
  • Ausführungsform 13 umfasst das Verfahren einer beliebigen der Ausführungsformen 9 bis 12, ferner umfassend Empfangen des Datenworts.
  • Ausführungsform 14 umfasst das Verfahren von Ausführungsform 13, ferner umfassend Korrigieren des Datenworts unter Verwendung des Fehlervektors.
  • Ausführungsform 15 umfasst das Verfahren einer beliebigen der Ausführungsformen 1 bis 14, umfassend Bestimmen des Unterschieds zwischen dem bestimmten Codewort und dem expandierten Syndrom durch Addieren des bestimmten Codeworts und des expandierten Syndroms.
  • Ausführungsform 16 umfasst das Verfahren einer beliebigen der Ausführungsformen 1 bis 15, umfassend Bestimmen des Syndroms mittels eines Linear-Rückkopplungsschieberegisters.
  • Ausführungsform 17 umfasst das Verfahren einer beliebigen der Ausführungsformen 1 bis 16, umfassend Bestimmen des Codeworts durch Speichern eines von Null verschiedenen anfänglichen Codeworts des Simplexcodes in einem Linear-Rückkopplungsschieberegister, Erzeugen eines oder mehrerer Codewörter des Simplexcodes durch cyclisches Verschieben des anfänglichen Codeworts und Prüfen für jedes erzeugte Codewort, ob sein Unterschied zum expandierten Syndrom ein Gewicht unter einer ersten Schwelle oder gleich oder über einer zweiten Schwelle aufweist.
  • Ausführungsform 18 umfasst das Verfahren von Ausführungsform 17, umfassend Erzeugen von Codewörter des Simplexcodes durch cyclisches Verschieben des anfänglichen Codeworts, bis ein Codewort gefunden wurde, dessen Unterschied zum expandierten Syndrom ein Gewicht unter der ersten Schwelle oder gleich oder über der zweiten Schwelle aufweist.
  • Das Verfahren zum Decodieren eines Datenworts, das in 10 dargestellt ist, wird zum Beispiel durch eine Decodierungsschaltung wie in 11 dargestellt ausgeführt.
  • 11 zeigt einen Decoder 1100 zum Bestimmen eines Fehlervektors für ein Datenwort gemäß einem Reed-Muller-Code.
  • Der Decoder 1100 umfasst einen Syndrombestimmer 1101, ausgelegt zum Bestimmen des Syndroms des Fehlervektors gemäß dem Reed-Muller-Code und ausgelegt zum Expandieren des Syndroms mit Nullen auf 1 Bit Länge weniger als die Länge des Reed-Muller-Codes.
  • Der Decoder 1100 umfasst ferner einen Codewortbestimmer 1102, ausgelegt zum Bestimmen eines Codeworts eines Simplexcodes von 1 Bit Länge weniger als die Länge des Reed-Muller-Codes, dessen Unterschied zum expandierten Syndrom ein Gewicht unter einer ersten Schwelle oder gleich oder über einer zweiten Schwelle aufweist.
  • Ferner umfasst der Decoder 1100 einen Ausgang 1103, ausgelegt zum Expandieren des Unterschieds zwischen dem bestimmten Codewort und dem expandierten Syndrom durch eine Null und ausgelegt zum Ausgeben des expandierten Unterschieds als Fehlervektor, wenn sein Gewicht unter der ersten Schwelle liegt, oder Ausgeben des invertierten expandierten Unterschieds als Fehlervektor, wenn das Gewicht des expandierten Unterschieds gleich oder über der zweiten Schwelle ist.
  • Es sollte beachtet werden, dass der Decoder und seine Komponenten (z. B. der Syndrombestimmer, der Codewortbestimmer und der Ausgang) zum Beispiel durch eine oder mehrere Schaltungen implementiert werden können. Eine „Schaltung” kann als eine beliebige Art von logikimplementierender Entität aufgefasst werden, die spezielle Schaltkreise oder ein Prozessor sein kann, der Software ausführt, die in einem Speicher, einer Firmware oder einer beliebigen Kombination davon gespeichert ist. Eine „Schaltung” kann somit eine festverdrahtete Logikschaltung oder eine programmierbare Logikschaltung sein, wie etwa ein programmierbarer Prozessor, z. B. ein Mikroprozessor. Eine „Schaltung” kann auch ein Prozessor sein, der Software, z. B. eine beliebige Art von Computerprogramm, ausführt. Jede andere Art von Implementierung der jeweiligen Funktionen, die nachfolgend ausführlicher beschrieben werden, kann auch als „Schaltung” aufgefasst werden. Der Decoder 1100 kann zum Beispiel in einem Chipkartenmodul einer Chipkarte implementiert werden.
  • Es sollte ferner beachtet werden, dass im Kontext des Decoders 1100 beschriebene Ausführungsformen analog im Kontext des in 10 dargestellten Verfahrens gültig sind und umgekehrt.
  • Im Folgenden werden Ausführungsformen eines Typ-I-Reed-Muller-Decoders und -Decodierungsverfahrens ausführlicher beschrieben.
  • Die unterscheidende Eigenschaft zwischen einem Typ-II- und einem Typ-I-Decoder ist, dass der Erstere ein (potentiell fehlerhaftes) Codewort als Eingabe annimmt, während der Letztere das Syndrom des (potentiell fehlerhaften) Codeworts als Eingabe annimmt.
  • Im Folgenden wird ein Typ-I-Decoder (oder Syndromdecoder) für den Reed-Muller-Code Rm gemäß einer Ausführungsform beschrieben. Wie oben erwähnt, wird im Kontext der PUF-Wertrekonstruktion und der Rekonstruktion biometrischer Daten ein Typ-I-Decoder typischerweise einem Typ-II-Decoder vorgezogen.
  • 12 zeigt einen Decoder 1200 gemäß einer Ausführungsform.
  • Der Decoder 1200 ist ein Decoder für den (2m, 2m+1, 2m-1)-Reed-Muller-Code Rm, definiert durch das binäre primitive Polynom f(x) = xm + bm-1xm-1 + ... + b1x + 1.
  • Der Decoder 1200 umfasst einen Syndromgenerator 1204, z. B. wie mit Bezug auf 7 beschrieben (der ferner zusätzlich Helferdaten für PUF- oder biometrische Anwendungen umfassen kann) und ein erstes Register 1201, ein zweites Register 1202 und ein drittes Register 1203 der Länge 2m – 1.
  • Das erste Register 1201 ist ein Schieberegister, das in der Darstellung von 12 von rechts nach links schiebt. Der Ausgang seines äußersten linken Flipflops ist mit dem Eingang seines äußersten rechten Flipflops verbunden, so dass das erste Register 1201 cyclische Verschiebung seiner Inhalte erlaubt.
  • Jedes in einem Flipflop des ersten Registers 1201 gespeicherte Bit kann mittels eines jeweiligen Addierers 1205 (z. B. XOR) zu dem entsprechenden Bit (d. h. dem Bit mit demselben Index 0, ..., 2m – 2) des Inhalts des zweiten Registers 1202 addiert werden, und das Ergebnis wird als das entsprechende Bit des Inhalts des dritten Registers 1203 gespeichert.
  • Das erste Register 1201 wird mit den ersten 2m – 1 Termen einer von Null verschiedenen linearen rekursiven Sequenz vorgeladen, die die dem Polynom f(x) zugeordnete lineare Rekursion erfüllt. Anders ausgedrückt, enthält das erste Register 1201 ein festes von Null verschiedenes Codewort des Simplexcodes Sm, der dem gegebenen Polynom f(x) zugeordnet ist, d. h. ein Codewort des Simplexcodes mit einer Länge von einem Bit weniger als die Codelänge des Reed-Muller-Codes Rm.
  • Es sei y = (y0, y1, ..., yn-1) der empfangene Nachrichtenvektor der Länge n = 2m. Der empfangene Nachrichtenvektor wird dem Syndromgenerator 1204 zugeführt, der das Syndrom S(y) berechnet (möglicherweise einschließlich eines Zusatzes von Hilfsdaten für PUF- oder biometrischer Wertrekonstruktion). Als Nächstes wird das Gewicht w(S(y)) von S(y) bestimmt, z. B. durch einen Gewichtsbestimmer 1205, der die Anzahl von 1'en in dem Vektor S(y) bestimmt. Wenn w(S(y)) < 2m-2 ist, gibt das Syndrom S(y) bereits den zu bestimmenden Fehlervektor e, nämlich e = (0, 0, ..., 0, S(y)), wobei m + 1 Nullen dem S(y) vorausgehen.
  • Wenn w(S(y)) ≥ 2m-2 ist, wird der Vektor
    (0, 0, ..., 0, S(y))
    der Länge 2m – 1, wobei S(y) m Nullen vorausgehen, in das zweite Register 1202 geleitet.
  • Dann wird Folgendes ausgeführt:
    • 1) Berechnen der Summe z der beiden in dem ersten Register 1201 und dem zweiten Register 1202 gespeicherten Binärvektoren bitweise und Modulo 2 mittels Addierem 1205 und Schreiben des Ergebnisses z in das dritte Register 1203.
    • 2) Bestimmen des Gewichts w(z) z. B. durch den Gewichtsbestimmer 1205 oder einen anderen Gewichtsbestimmer. Im Fall w(z) < 2m-2 oder w(z) ≥ 3·2m-2 ist, stoppen.
    • 3) Andernfalls cyclisches Verschieben des Vektors in dem ersten Register 1201 um eine Position nach links und Zurückgehen zu 1.
  • Der Prozess endet somit, wenn ein Vektor z = (z1, z2, ..., zn-1) in dem dritten Register 1203 gespeichert ist, wobei n = 2m w(z) < 2m-2 oder w(z) ≥ 3·2m-2 erfüllt.
  • Dann wird der Fehlervektor e gegeben durch e = (0, z) = (0, z1, z2, ..., zn-1) im Fall w(z) < 2m-2 und e = (1, z) = (1, z 1, z 2, ..., z n-1) im Fall w(z) ≥ 3·2m-2.
  • Wenn die Situation w(z) < 2m-2 oder w(z) ≥ 3·2m-2 während des Durchlaufens aller 2m – 1 cyclischen Verschiebungen des Vektors in dem ersten Register niemals auftritt, sind mindestens n/4 der Bit y1, y2, ..., yn-1 fehlerhaft. In diesem Fall könnte die Decodierung entweder unmöglich sein, oder Superdecodierung wie nachfolgend weiter beschrieben kann angewandt werden.
  • 13 gibt ein Beispiel für eine Decodierung für den (16, 32, 8)-Reed-Muller-Code, der durch f(x) = x4 + x3 + 1 definiert wird, durch den Decoder 1200.
  • In 13 werden die Inhalte des ersten Registers (Reg. 1) 1201, des zweiten Registers (Reg. 2) 1202 und des dritten Registers (Reg. 3) 1203 für sechs Phasen 1301 bis 1306 (d. h. sechs Iterationen von 1) und 2) wie oben beschrieben) der Decodierung gegeben.
  • Das empfangene Datenwort sei y = 0010 0001 0110 1100. Der Syndromgenerator 1205 gibt S(y) = 01010111010 (siehe das mit Bezug auf 9 gegebene erste Beispiel), was in dem zweiten Register gespeichert wird. Das erste Register wird mit dem Sm Codewort 001000111101011 initialisiert und 1) und 2) wie oben beschrieben werden ausgeführt.
  • Die erste Phase (Zeit t = 0) 1301 gibt einen Vektor z mit w = 6. Deshalb wird der Inhalt des ersten Registers cyclisch um eins nach links verschoben und 1) und 2) werden wiederholt.
  • Die zweite Phase (Zeit t = 1) 1302 gibt einen Vektor z mit w = 6. Deshalb wird der Inhalt des ersten Registers cyclisch um eins nach links verschoben und 1) und 2) werden wiederholt.
  • Die dritte Phase (Zeit t = 2) 1303 gibt einen Vektor z mit w = 6. Deshalb wird der Inhalt des ersten Registers cyclisch um eins nach links verschoben und 1) und 2) werden wiederholt.
  • Die vierte Phase (Zeit t = 3) 1301 gibt einen Vektor z mit w = 8. Deshalb wird der Inhalt des ersten Registers cyclisch um eins nach links verschoben und 1) und 2) werden wiederholt.
  • Die fünfte Phase (Zeit t = 4) 1305 gibt einen Vektor z mit w = 4. Deshalb wird der Inhalt des ersten Registers cyclisch um eins nach links verschoben und 1) und 2) werden wiederholt.
  • Die sechste Phase (time t = 5) 1306 gibt einen Vektor z mit w = 12. Da 12 ≥ 3/4·16 ist, wird die Decodierung angehalten und der Fehlervektor wird durch e = 1100 0000 0010 0001 gegeben. Anders ausgedrückt, sind die Nachrichtenbit y0, y1, y10 und y15 fehlerhaft.
  • 14 gibt ein weiteres Beispiel für eine Decodierung für den (16, 32, 8) Reed-Muller-Code, der durch f(x) = x4 + x3 + 1 definiert wird, durch den Decoder 1200.
  • In 14 werden die Inhalte des ersten Registers (Reg. 1) 1201, des zweiten Registers (Reg. 2) 1202 und des dritten Registers (Reg. 3) 1203 für eine erste Phase 1401, eine zweite Phase 1402 und eine siebte Phase 1403 der Decodierung gegeben (die dritte bis sechste Phase sind nicht gezeigt).
  • Das empfangene Datenwort sei y = 1110 1010 0011 1011. Der Syndromgenerator 1205 gibt S(y) = 10000101111 (siehe das mit Bezug auf 9 gegebene zweite Beispiel), was in dem zweiten Re initialisiert und 1) und 2) wie oben beschrieben werden ausgeführt.gister gespeichert wird. Das erste Register wird mit dem Sm-Codewort 001000111101011
  • Die erste Phase (Zeit t = 0) 1401 gibt einen Vektor z mit w = 6. Deshalb wird der Inhalt des ersten Registers cyclisch um eins nach links verschoben und 1) und 2) werden wiederholt.
  • Die zweite Phase (Zeit t = 1) 1402 gibt einen Vektor z mit w = 10. Deshalb wird der Inhalt des ersten Registers cyclisch um eins nach links verschoben und 1) und 2) werden wiederholt.
  • Das Stoppkriterium ist erst bei der siebten Phase (Zeit t = 6) 1303 erfüllt, die einen Vektor z mit w = 12 gibt. Da 12 ≥ 3/4·16 ist, wird die Decodierung gestoppt, und der Fehlervektor wird durch e = 1000 0001 0001 1000 gegeben und das korrigierte Datenwort wird durch y + e = 0110 1011 0010 0011 gegeben.
  • Als ein weiteres Beispiel sei für den Reed-Muller-Code Rm mit m = 4 mit dem definierenden Polynom
    f(x) = x4 + x3 + 1 der etwas verschiedene Nachrichtenvektor nun durch y = 0110 1010 0011 1011 gegeben.
  • Berechnung des Syndroms von y gibt S(y) = 00100011000. Da w(S(y)) = 3 < 2m-2 ist, wird der Fehlervektor e durch e = (0 0 0 0 0 S(y)) = (0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0) gegeben.
  • Im Folgenden wird eine Ausführungsform beschrieben, die sogenannte Superdecodierung verwendet.
  • Bei dem (2m, 2m+1, 2m-1)-Reed-Muller-Code Rm der Länge n = 2m und Mindestdistanz d = 2m-1 kann wenn weniger als d/2 = 2m-2 Fehler in einem empfangenen n-Bit-Nachrichtenvektor y auftreten, die empfangene Nachricht korrigiert werden. Dies kann garantiert werden. In bestimmten Fällen ist es jedoch auch möglich, die Nachricht selbst dann zu korrigieren (d. h. zu decodieren), wenn d/2 oder mehr Fehler aufgetreten sind. Die Prozedur zum Korrigieren von d/2 oder mehr Fehlern wird als Superdecodierung bezeichnet, was im Folgenden erläutert wird.
  • In dem oben mit Bezugszahl 12 beschriebenen Typ-I-Decoder (auch als Syndromdecoder bezeichnet) wird das erste Register 1201 mit einem von Null verschiedenen Codewort des Simplexcodes Sm geladen und das zweite Register 1202 mit m Nullen geladen, gefolgt von dem Syndrom S(y) des empfangenen Nachrichtenvektors y. Das dritte Register 1203 wird mit der bitweisen XOR-Summe z der Inhalte des ersten Registers 1201 und des zweiten Registers 1202 geladen, und als Nächstes wird das Gewicht w(z) von z berechnet.
  • Wie oben beschrieben, wird durch cyclisches Verschieben des Vektors in dem ersten Register 1201 um eine Position nach links diese Prozedur (d. h. 1) bis 3) wie oben beschrieben) wiederholt, bis in dem dritten Register 1203 ein Vektor z erhalten wird, der
    w(z) < 2m-2 oder w(z) ≥ 3·2m-2 erfüllt.
  • Mit diesem Vektor z wird der Fehlervektor e = (0, z) bzw. e = (1, z) gebildet, und die Decodierung ist dann abgeschlossen.
  • Bei Superdecodierung unter Verwendung des Decoders 1200 gemäß einer Ausführungsform wird die Prozedur (d. h. 1) bis 3) wie oben beschrieben) 2m – 1 Male für alle möglichen cyclischen Verschiebungen des Vektors in dem ersten Register 1201 ausgeführt. Die entsprechenden Vektoren z in dem dritten Register 1203 werden mit z0, z1, ..., zn-2 bezeichnet, wobei n = 2m ist. Für jedes j = 0, 1, ..., 2m – 2 wird das Minimum
    bj = min(w(zj), 2m – 1 – w(z)) berechnet.
  • Als Nächstes das Minimum β der Liste B = [b0, b1, ..., bn-2]. Wenn das Minimum β eindeutig bestimmt ist, kann der Nachrichtenvektor y korrigiert werden, wobei das Minimum β eindeutig bestimmt ist, wenn es genau einmal unter den Elementen b0, b1, ..., bn-2 erscheint. Das heißt, dass es einen bestimmten Index k ∊ {0, 1, ..., 2m – 2} gibt, mit
    bk < bj für alle j ∊ {0, 1, ..., 2m – 2} mit j ≠ k.
  • Wenn das Minimum β eindeutig bestimmt und gleich bk ist, wird dann der Vektor zk genommen:
    Wenn w(zk) < 2m-1 = n/2 ist, wird der Fehlervektor durch e = (0, zk) gegeben.
    Wenn w(zk) > 2m-1 = n/2 ist, wird der Fehlervektor durch e = (1; z k) gegeben.
  • Der Fall w(zk) = n/2 kann nicht auftreten: er ist mit dem Umstand nicht verträglich, dass die Liste B ein eindeutiges Minimum aufweist.
  • 15A bis 15C geben ein Beispiel für eine Superdecodierung für den Reed-Muller-Code R4, der durch f(x) = x4 + x3 + 1 definiert wird, durch den Decoder 1200.
  • In 15A bis 15C werden die Inhalte des ersten Registers (Reg. 1) 1201, des zweiten Registers (Reg. 2) 1202 und des dritten Registers (Reg. 3) 1203 für 24 – 1 = 15 Phasen 1501 bis 1515 (d. h. 15 Iterationen von 1) und 2) wie oben beschrieben) der Decodierung gegeben.
  • Der empfangene Nachrichtenvektor sei y = 1110 1011 0100 0100. Berechnung des Syndroms gibt S(y) = 10101010000, was im zweiten Register gespeichert wird. Das erste Register wird mit dem Sm Codewort 001000111101011 initialisiert und 1) und 2) wie oben beschrieben werden ausgeführt.
  • Jede Phase 1501 bis 1515 entspricht einer Zeit t = 0, ..., 14.
  • Tabelle 1 gibt das Gewicht w des Vektors z für jede Phase 1501 bis 1515 und das Minimum von w und 15 – w.
  • Figure DE102015111729B4_0004
    Tabelle 1
  • Die Liste B = [min(w(zt), 15 – w(zt)): t = 0, 1, ..., 14] wird gegeben durch B = [7, 6, 7, 4, 7, 6, 5, 6, 5, 7, 5, 7, 5, 6, 7]
    und hat das Minimum 4, das nur einmal angenommen wird, nämlich bei t = 3.
  • Somit gibt der Vektor z3 den eindeutig bestimmten Fehlervektor e. Da w(z3) = 4 < 8 ist, wird e gegeben durch e = (0, z3) = 0000 1010 0000 1001.
  • Der korrigierte Nachrichtenvektor ist c = y + e = 1110 0001 0100 1101:
  • 16A bis 16C geben ein anderes Beispiel für eine Superdecodierung für den Reed-Muller-Code R4, der durch f(x) = x4 + x3 + 1 definiert wird, durch den Decodierer 1200.
  • In 16A bis 16C werden die Inhalte des ersten Registers (Reg. 1) 1201, des zweiten Registers (Reg. 2) 1202 und des dritten Registers (Reg. 3) 1203 für 24 – 1 = 15 Phasen 1601 bis 1615 (d. h. 15 Iterationen von 1) und 2) wie oben beschrieben) der Decodierung gegeben.
  • Der empfangene Nachrichtenvektor sei y = 1000 0101 0001 0010. Berechnung des Syndroms gibt S(y) = 00000100101, was im zweiten Register gespeichert wird. Das erste Register wird wieder mit dem Sm-Codewort 001000111101011 initialisiert und 1) und 2) wie oben beschrieben werden ausgeführt.
  • Jede Phase 1601 bis 1615 entspricht einer Zeit t = 0, ..., 14.
  • Tabelle 2 gibt das Gewicht w des Vektors z für jede Phase 1501 bis 1515 und das Minimum von w und 15 – w.
  • Figure DE102015111729B4_0005
    Tabelle 2
  • Die letzte Zeile von Tabelle 2 repräsentiert die Liste B. Das Minimum von B ist 4 und es wird nur einmal angenommen: bei t = 6. Da w(z6) = 11 > 8 ist, wird der eindeutig bestimmte Fehlervektor gegeben durch e = (1, z6) = 1000 0101 0001 0010.
  • Der decodierte Nachrichtenvektor lautet c = y + e = 0000 0000 0000 0000.
  • 17 gibt ein weiteres Beispiel für eine Superdecodierung für den Reed-Muller-Code R4, der durch f(x) = x4 + x3 + 1 definiert wird, durch den Decoder 1200.
  • In 17 werden die Inhalte des ersten Registers (Reg. 1) 1201, des zweiten Registers (Reg. 2) 1202 und des dritten Registers (Reg. 3) 1203 nur für die ersten zwei Phasen 1701, 1702 der 24 – 1 = 15 Phasen (d. h. der 15 Iterationen von 1) und 2) wie oben beschrieben) der Decodierung gegeben.
  • Der empfangene Nachrichtenvektor sei y = 1000 0110 0100 0010. Berechnung des Syndroms gibt S(y) = 01101110101, was im zweiten Register gespeichert wird. Das erste Register wird wieder mit dem Sm-Codewort 001000111101011 initialisiert und 1) und 2) wie oben beschrieben werden ausgeführt.
  • Wie oben entspricht jede Phase einer Zeit t = 0, ..., 14.
  • Tabelle 3 gibt das Gewicht w des Vektors z für jede Phase und das Minimum von w und 15 – w.
    Figure DE102015111729B4_0006
    Tabelle 3
  • Die letzte Zeile von Tabelle 3 zeigt, dass das Minimum der Liste B 4 ist, was in diesem Fall zweimal angenommen wird: bei t = 6 und bei t = 10. Deshalb ist der Fehlervektor nicht eindeutig bestimmt. Die Nachricht y kann nicht korrigiert werden. Obwohl spezifische Aspekte beschrieben wurden, ist für Fachleute erkennbar, dass verschiedene Änderungen von Form und Detail vorgenommen werden können, ohne vom Wesen und Schutzumfang der Aspekte der vorliegenden Offenbarung, so wie er durch die angefügten Ansprüche definiert wird, abzuweichen. Der Schutzumfang wird somit durch die angefügten Ansprüche angegeben, und alle Änderungen, die in die Bedeutung und den Äquivalenzbereich der Ansprüche kommen, sollen deshalb eingeschlossen sein.

Claims (18)

  1. Verfahren zum Bestimmen eines Fehlervektors für ein Datenwort gemäß einem Reed-Muller-Code, umfassend: Bestimmen des Syndroms des Fehlervektors gemäß dem Reed-Muller-Code; Expandieren des Syndroms mit Nullen auf 1 Bit Länge weniger als die Länge des Reed-Muller-Codes; Bestimmen eines Codeworts eines Simplexcodes von 1 Bit Länge weniger als die Länge des Reed-Muller-Codes, dessen Unterschied zum expandierten Syndrom ein Gewicht unter einer ersten Schwelle oder gleich oder über einer zweiten Schwelle aufweist; Expandieren des Unterschieds zwischen dem bestimmten Codewort und dem expandierten Syndrom durch eine Null; und Ausgeben des expandierten Unterschieds als Fehlervektor, wenn sein Gewicht unter der ersten Schwelle liegt, oder Ausgeben des invertierten expandierten Unterschieds als Fehlervektor, wenn das Gewicht des expandierten Unterschieds gleich oder über der zweiten Schwelle ist.
  2. Verfahren nach Anspruch 1, wobei die erste Schwelle und die zweite Schwelle vorbestimmte Schwellen sind.
  3. Verfahren nach Anspruch 1 oder 2, wobei die zweite Schwelle gleich der Länge des Reed-Muller-Codes minus der ersten Schwelle ist.
  4. Verfahren nach einem der Ansprüche 1 bis 3, wobei die erste Schwelle gleich einem Viertel der Länge des Reed-Muller-Codes ist.
  5. Verfahren nach einem der Ansprüche 1 bis 3, wobei die erste Schwelle das Minimum ist, für das es genau ein Codewort des Simplexcodes gibt, dessen Unterschied zum expandierten Syndrom ein Gewicht unter der ersten Schwelle oder gleich oder über der Länge des Reed-Muller-Codes minus der ersten Schwelle aufweist.
  6. Verfahren nach einem der Ansprüche 1 bis 5, umfassend Expandieren des Syndroms mit vorderen Nullen auf 1 Bit Länge weniger als die Länge des Reed-Muller-Codes.
  7. Verfahren nach einem der Ansprüche 1 bis 6, umfassend Expandieren des Unterschieds zwischen dem bestimmten Codewort und dem expandierten Syndrom durch eine vordere Null.
  8. Verfahren nach einem der Ansprüche 1 bis 5, wobei der Fehlervektor ein Fehlervektor für ein Datenwort ist, das ein fehlerhaftes Codewort des Reed-Muller-Codes ist.
  9. Verfahren nach Anspruch 8, umfassend Bestimmen des Syndroms des Datenworts als das Syndrom des Fehlervektors.
  10. Verfahren nach einem der Ansprüche 1 bis 5, wobei der Fehlervektor ein Fehlervektor für ein Datenwort ist, das ein fehlerhafter Physikalische-Unklonbare-Funktion(PUF)-Wert oder ein fehlerhafter biometrischer Wert ist.
  11. Verfahren nach Anspruch 10, umfassend Bestimmen der Summe des Syndroms des fehlerhaften PUF-Werts oder fehlerhaften biometrischen Werts oder eines vorbestimmten Syndroms eines korrekten PUF-Werts oder korrekten biometrischen Werts als das Syndrom des Fehlervektors.
  12. Verfahren nach einem der Ansprüche 8 bis 11, ferner umfassend Empfangen des Datenworts.
  13. Verfahren nach Anspruch 12, ferner umfassend Korrigieren des Datenworts unter Verwendung des Fehlervektors.
  14. Verfahren nach einem der Ansprüche 1 bis 13, umfassend Bestimmen des Unterschieds zwischen dem bestimmten Codewort und dem expandierten Syndrom durch Addieren des bestimmten Codeworts und des expandierten Syndroms.
  15. Verfahren nach einem der Ansprüche 1 bis 14, umfassend Bestimmen des Syndroms mittels eines Linear-Rückkopplungsschieberegisters.
  16. Verfahren nach einem der Ansprüche 1 bis 15, umfassend Bestimmen des Codeworts durch Speichern eines von Null verschiedenen anfänglichen Codeworts des Simplexcodes in einem Linear-Rückkopplungsschieberegister, Erzeugen eines oder mehrerer Codewörter des Simplexcodes durch zyklisches Verschieben des anfänglichen Codeworts und Prüfen für jedes erzeugte Codewort, ob sein Unterschied zum expandierten Syndrom ein Gewicht unter einer ersten Schwelle oder gleich oder über einer zweiten Schwelle aufweist.
  17. Verfahren nach Anspruch 16, umfassend Erzeugen von Codewörten des Simplexcodes durch zyklisches Verschieben des anfänglichen Codeworts, bis ein Codewort gefunden wurde, dessen Unterschied zum expandierten Syndrom ein Gewicht unter der ersten Schwelle oder gleich oder über der zweiten Schwelle aufweist.
  18. Decoder zum Bestimmen eines Fehlervektors für ein Datenwort gemäß einem Reed-Muller-Code, umfassend: einen Syndrombestimmer, ausgelegt zum Bestimmen des Syndroms des Fehlervektors gemäß dem Reed-Muller-Code und ausgelegt zum Expandieren des Syndroms mit Nullen auf 1 Bit Länge weniger als die Länge des Reed-Muller-Codes; einen Codewortbestimmer, ausgelegt zum Bestimmen eines Codeworts eines Simplexcodes von 1 Bit Länge weniger als die Länge des Reed-Muller-Codes, dessen Unterschied zum expandierten Syndrom ein Gewicht unter einer ersten Schwelle oder gleich oder über einer zweiten Schwelle aufweist; und einen Ausgang, ausgelegt zum Expandieren des Unterschieds zwischen dem bestimmten Codewort und dem expandierten Syndrom durch eine Null und ausgelegt zum Ausgeben des expandierten Unterschieds als Fehlervektor, wenn sein Gewicht unter der ersten Schwelle liegt, oder Ausgeben des invertierten expandierten Unterschieds als Fehlervektor, wenn das Gewicht des expandierten Unterschieds gleich oder über der zweiten Schwelle ist.
DE102015111729.0A 2015-07-20 2015-07-20 Verfahren und decoder zum bestimmen eines fehlervektors für ein datenwort gemäss einem reed-muller-code Active DE102015111729B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102015111729.0A DE102015111729B4 (de) 2015-07-20 2015-07-20 Verfahren und decoder zum bestimmen eines fehlervektors für ein datenwort gemäss einem reed-muller-code
US15/214,480 US10236916B2 (en) 2015-07-20 2016-07-20 Method and decoder for determining an error vector for a data word according to a Reed-Muller code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102015111729.0A DE102015111729B4 (de) 2015-07-20 2015-07-20 Verfahren und decoder zum bestimmen eines fehlervektors für ein datenwort gemäss einem reed-muller-code

Publications (2)

Publication Number Publication Date
DE102015111729A1 DE102015111729A1 (de) 2017-01-26
DE102015111729B4 true DE102015111729B4 (de) 2017-03-30

Family

ID=57738931

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015111729.0A Active DE102015111729B4 (de) 2015-07-20 2015-07-20 Verfahren und decoder zum bestimmen eines fehlervektors für ein datenwort gemäss einem reed-muller-code

Country Status (2)

Country Link
US (1) US10236916B2 (de)
DE (1) DE102015111729B4 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014118531B4 (de) * 2014-12-12 2016-08-25 Infineon Technologies Ag Verfahren und Datenverarbeitungseinrichtung zum Ermitteln eines Fehlervektors in einem Datenwort
US11641252B1 (en) * 2022-03-04 2023-05-02 Qualcomm Incorporated Differential based decoding for a non-coherent signal

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110219284A1 (en) 2010-03-02 2011-09-08 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory system
US8769380B1 (en) 2010-11-02 2014-07-01 Marvell International Ltd. Methods and apparatus for error recovery in memory systems employing iterative codes

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7661037B2 (en) * 2005-10-27 2010-02-09 Samsung Electronics Co., Ltd. LDPC concatenation rules for IEEE 802.11n systems
US7584406B2 (en) * 2005-12-20 2009-09-01 Samsung Electronics Co., Ltd. LDPC concatenation rules for IEEE 802.11n system with packets length specific in octets
US8559539B2 (en) * 2009-06-26 2013-10-15 Nokia Corporation Method, apparatus and computer readable storage medium
WO2011091845A1 (en) * 2010-01-27 2011-08-04 Telefonaktiebolaget Lm Ericsson (Publ) Error floor reduction in iteratively decoded fec codes
KR101650130B1 (ko) * 2010-05-14 2016-08-24 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법
EP2737630A2 (de) * 2011-07-29 2014-06-04 SanDisk Technologies Inc. Prüfsumme mit summen von permutationssubmatrizen
US8972826B2 (en) * 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
US9411683B2 (en) * 2013-12-26 2016-08-09 Intel Corporation Error correction in memory
US9378765B2 (en) * 2014-04-03 2016-06-28 Seagate Technology Llc Systems and methods for differential message scaling in a decoding process

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110219284A1 (en) 2010-03-02 2011-09-08 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory system
US8769380B1 (en) 2010-11-02 2014-07-01 Marvell International Ltd. Methods and apparatus for error recovery in memory systems employing iterative codes

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PUCHINGER, S. [et al.]: On Error Correction for Physical Unclonable Functions. 27.01.2015. URL: http://arxiv.org/pdf/1501.06698 [abgerufen am 23.05.2016]

Also Published As

Publication number Publication date
US20170026057A1 (en) 2017-01-26
DE102015111729A1 (de) 2017-01-26
US10236916B2 (en) 2019-03-19

Similar Documents

Publication Publication Date Title
DE60015753T2 (de) System und verfahren zum schutz von daten und zur korrektur von bitfehlern folgend aus komponentenfehlern
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE102007038114A1 (de) Fehlerkorrekturschaltung, Halbleiterspeicherelement und Fehlerkorrekturverfahren
DE112011100371T5 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE102016102590B4 (de) Datenverarbeitungseinrichtungen und verfahren zum rekonstruieren eines puf-werts
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE102018103408B3 (de) Integrierte schaltung und verfahren zum verarbeiten eines codierten nachrichtenworts
DE102005022107B9 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE102015111729B4 (de) Verfahren und decoder zum bestimmen eines fehlervektors für ein datenwort gemäss einem reed-muller-code
DE102013109315B4 (de) Verfahren und Datenverarbeitungseinrichtung zum Rekonstruieren eines Vektors
DE102020110787B3 (de) Schaltung und verfahren zum kodieren oder dekodieren eines datenworts
DE102014118531B4 (de) Verfahren und Datenverarbeitungseinrichtung zum Ermitteln eines Fehlervektors in einem Datenwort
DE102013219088B9 (de) Schaltungsanordnung und Verfahren zur Realisierung von Prüfbitkompaktierung für Cross-Parity-Codes
DE102010003144B4 (de) Decodiervorrichtung und Decodierverfahren
DE102021109391B3 (de) Multibytefehler-Erkennung
DE102013201422B3 (de) Verfahren zum Wiederherstellen verlorengegangener und/ oder beschädigter Daten
DE102018126685B3 (de) Verarbeitung von Daten
DE102017107431B4 (de) Verfahren und Vorrichtungen zur Fehlerkorrekturcodierung beruhend auf hochratigen verallgemeinerten verketteten Codes
DE102015121646B4 (de) Fehlerkorrektur
DE112008002060T5 (de) Koordinatenanstiegsverfahren für Linear-Programmierung-Decodierung
DE102013112020B4 (de) Verfahren und Vorrichtung zum Erkennen von Bitfehlern
DE102019113970A1 (de) Erkennung von adressfehlern
DE102019132153B3 (de) Integrierte schaltung
DE102019200941B4 (de) Decodierverfahren
DE102022111624A1 (de) Fehlerkorrektur mit schneller Syndromberechnung

Legal Events

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