DE102019132153B3 - Integrierte schaltung - Google Patents

Integrierte schaltung Download PDF

Info

Publication number
DE102019132153B3
DE102019132153B3 DE102019132153.0A DE102019132153A DE102019132153B3 DE 102019132153 B3 DE102019132153 B3 DE 102019132153B3 DE 102019132153 A DE102019132153 A DE 102019132153A DE 102019132153 B3 DE102019132153 B3 DE 102019132153B3
Authority
DE
Germany
Prior art keywords
input value
function
value
circuit
bit pattern
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
DE102019132153.0A
Other languages
English (en)
Inventor
Wieland Fischer
Bernd Meyer
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 DE102019132153.0A priority Critical patent/DE102019132153B3/de
Priority to KR1020200150948A priority patent/KR102451475B1/ko
Priority to US17/103,969 priority patent/US11283469B2/en
Application granted granted Critical
Publication of DE102019132153B3 publication Critical patent/DE102019132153B3/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/1585Determination of error values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • G06K19/073Special arrangements for circuits, e.g. for protecting identification code in memory
    • G06K19/07309Means for preventing undesired reading or writing from or onto record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/10Test algorithms, e.g. memory scan [MScan] algorithms; Test patterns, e.g. checkerboard patterns 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/26Accessing multiple arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/30Accessing single arrays
    • G11C29/34Accessing multiple bits simultaneously
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/36Data generation devices, e.g. data inverters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/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/158Finite field arithmetic processing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/26Accessing multiple arrays
    • G11C2029/2602Concurrent test
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/36Data generation devices, e.g. data inverters
    • G11C2029/3602Pattern generator

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Error Detection And Correction (AREA)

Abstract

Gemäß einem Ausführungsbeispiel wird eine integrierte Schaltung zum Ausgeben eines Funktionswerts einer Funktion zu einem Eingangswert für eine Funktion beschrieben, aufweisend eine Mustervergleichsschaltung, die eingerichtet ist, den Eingangswert und mehrere transformierte Versionen des Eingangswerts mit einem vorgegebenen Bitmuster zu vergleichen und/oder den Eingangswert mit dem Bitmuster und mehreren transformierten Versionen des vorgegebenen Bitmusters zu vergleichen, wobei die transformierten Versionen des Eingangswerts bzw. des vorgegebenen Bitmusters durch wiederholte Anwendung einer Transformation auf den Eingangswert bzw. das vorgegebene Bitmuster entstehen, wobei die Funktion invariant ist unter der Transformation oder wobei es zu der Transformation eine Rücktransformation gibt, mittels der eine Änderung der Funktionswerte, die durch Transformation der Eingangswerte verursacht wird, rückgängig gemacht werden kann, eine Auswahlschaltung, die eingerichtet ist, abhängig von dem Vergleichsergebnis der Mustervergleichsschaltung und dem Eingangswert einen Funktionswert auszuwählen, und eine Ausgabeschaltung, die eingerichtet ist, einen Funktionswert für den Eingangswert basierend auf dem ausgewählten Funktionswert auszugeben..

Description

  • Ausführungsbeispiele betreffen allgemein integrierte Schaltungen.
  • Elektronische Schaltungen, die für sicherheitsrelevante Anwendungen verwendet werden, wie beispielsweise Chipkarten-Module und Steuerprozessoren in Automobilen, müssen gegen Angriffe geschützt werden. Insbesondere ist es typischerweise wünschenswert, dass erkennbar ist, ob in einem Speicher, beispielsweise in einem nichtflüchtigen Speicher, abgelegte Daten manipuliert wurden (oder aus einem anderen Grund fehlerhaft sind), und gegebenenfalls korrigiert werden können. Es sind Hardware-Implementierungen einer solchen Funktionalität wünschenswert, die wenig Chipfläche erfordern.
  • Die Druckschrift US 2008/0215956 A1 beschreibt ein Fehlererkennungs- und Fehlerkorrekturverfahren, bei welchem transformierte Syndrome des Fehlererkennungscodes von ausgelesenen Daten berechnet werden.
  • In der Veröffentlichung US 2015/0347231 A1 ist eine Syndrom-Dekodierung von Reed-Solomon-Codes unter Verwendung eines Frobenius-Endomorphismus beschrieben.
  • Gemäß einem Ausrührungsbeispiel wird eine integrierte Schaltung zum Ausgeben eines Funktionswerts einer Funktion zu einem Eingangswert für eine Funktion bereitgestellt, aufweisend eine Mustervergleichsschaltung, die eingerichtet ist, den Eingangswert und mehrere transformierte Versionen des Eingangswerts mit einem vorgegebenen Bitmuster zu vergleichen und/oder den Eingangswert mit dem Bitmuster und mehreren transformierten Versionen des vorgegebenen Bitmusters zu vergleichen, wobei die transformierten Versionen des Eingangswerts bzw. des vorgegebenen Bitmusters durch wiederholte Anwendung einer Transformation auf den Eingangswert bzw. das vorgegebene Bitmuster entstehen, wobei die Funktion invariant ist unter der Transformation oder wobei es zu der Transformation eine Rücktransformation gibt, mittels der eine Änderung der Funktionswerte, die durch Transformation der Eingangswerte verursacht wird, rückgängig gemacht werden kann, eine Auswahlschaltung, die eingerichtet ist, abhängig von dem Vergleichsergebnis der Mustervergleichsschaltung und dem Eingangswert einen Funktionswert auszuwählen, und eine Ausgabeschaltung, die eingerichtet ist, einen Funktionswert für den Eingangswert basierend auf dem ausgewählten Funktionswert auszugeben.
  • Die Figuren geben nicht die tatsächlichen Größenverhältnisse wieder sondern sollen dazu dienen, die Prinzipien der verschiedenen Ausführungsbeispiele zu illustrieren. Im Folgenden werden verschiedene Ausführungsbeispiele mit Bezug auf die folgenden Figuren beschrieben.
    • 1 zeigt eine integrierte Sicherheits-Schaltung mit einem nichtflüchtigen Speicher.
    • 2 veranschaulicht eine Dekoderschaltung.
    • 3 zeigt eine Funktionsschaltung.
    • 4 zeigt eine integrierte Schaltung zum Berechnen eines Funktionswerts einer Funktion für einen Eingangswert.
  • Die folgende detaillierte Beschreibung bezieht sich auf die beiliegenden Figuren, die Details und Ausführungsbeispiele zeigen. Diese Ausführungsbeispiele sind so detailliert beschrieben, dass der Fachmann die Erfindung ausführen kann. Andere Ausführungsformen sind auch möglich und die Ausführungsbeispiele können in struktureller, logischer und elektrischer Hinsicht geändert werden, ohne vom Gegenstand der Erfindung abzuweichen. Die verschiedenen Ausführungsbeispiele schließen sich nicht notwendig gegenseitig aus sondern es können verschiedene Ausführungsformen miteinander kombiniert werden, so dass neue Ausführungsformen entstehen. Im Rahmen dieser Beschreibung werden die Begriffe „verbunden“, „angeschlossen“ sowie „gekoppelt“ verwendet zum Beschreiben sowohl einer direkten als auch einer indirekten Verbindung, eines direkten oder indirekten Anschlusses sowie einer direkten oder indirekten Kopplung.
  • 1 zeigt eine integrierte Sicherheits-Schaltung (Sicherheits-IC) 100 mit einem nichtflüchtigen Speicher 101.
  • Der Sicherheits-IC 100 weist einen Mikroprozessor 102 auf, der auf den nichtflüchtigen Speicher 101 zugreifen kann und darin gespeicherte Daten verarbeiten kann. Dazu ist ein Mechanismus vorgesehen, der Bit-Fehler in den gespeicherten Daten erkennt und diese korrigiert. Gemäß verschiedenen Ausführungsformen ist eine Hardware-Schaltung 103 vorgesehen, die einen Fehlerdetektions- und Fehlerkorrektur-Mechanismus in Hardware realisiert. Die Schaltung 103 realisiert einen Enkoder 104, der in dem Speicher 101 zu speichernde Daten (in Form von Datenwörter, z.B. (Bus-)Nachrichten) kodiert, d.h. für ein zu speicherndes Datenwort ein zugehöriges Codewort gemäß einem vorgegebenen Code ermittelt, das in dann im Speicher 101 gespeichert wird. Durch dieses Kodieren wird der Nutzinformation (zu speicherndes Datenwort) Redundanzinformation hinzugefügt. Für das Auslesen realisiert der Speicher einen Dekoder 105, der für ein Speicherwort ermittelt, ob es ein gültiges Codewort gemäß dem vorgegebenen Code ist oder ob es kein gültiges Codewort ist und damit Fehler enthält. Je nach Anzahl der Fehler und der Anzahl der Fehler, die gemäß dem Code korrigiert werden kann, korrigiert der Dekoder 105 das Speicherwort zu einem gültigen Codewort. Das gültige Codewort liefert der Dekoder 105 an den Mikroprozessor 102.
  • Der Sicherheits-IC 100 ist beispielsweise Teil einer Steuereinrichtung (z.B. in einem Fahrzeug) oder Teil einer Chipkarte (mit beliebigem Formfaktor).
  • Für den nichtflüchtigen Speicher 101 kann beispielsweise EEPROM, Flash-Speicher, FeRAM oder ein RRAM (resistive random access memory) verwendet werden.
  • Die Verwendung von RRAM als nichtflüchtigen Speicher 101 in Sicherheits-ICs 100 stellt jedoch erhöhte Anforderungen an den verwendeten Mechanismus zur Erkennung und Korrektur von Bit-Fehlern in den gespeicherten Daten. Für einen sicheren Betrieb des Speichers 101 ist es deshalb wünschenswert, einen fehlerkorrigierender Code (ECC, Error Correction Code) einzusetzen, welcher mehrfache Bit-Fehler (zum Beispiel alle 1 bis 3-Bit Fehler) effizient erkennen und korrigieren kann. Das bedeutet, dass die Minimaldistanz des verwendeten Codes relativ groß sein muss (mindestens 7 zur Korrektur von 3-Bit Fehlern). Weil die Anzahl zu korrigierender Fehlerfälle eines solchen Codes zu groß ist, um alle zugehörigen Syndrome zu tabellieren oder parallel in Hardware zu dekodieren und zu behandeln, bietet sich die Verwendung zyklischer algebraischer Codes wie beispielsweise BCH- oder Reed-Solomon Codes für diesen Anwendungsfall an. Die Kodierung von zu speichernden Daten (oder Nachrichten) und die Dekodierung und Fehlerkorrektur von gelesenen Daten (oder Nachrichten) kann dann mittels Berechnungen in einem Polynomring über einem endlichen Körper beschrieben werden und erfolgt gemäß einem Ausführungsbeispiel automatisch durch die Hardware des Sicherheits-ICs 100, z.B. durch die Hardware-Schaltung 103.
  • Zyklische algebraische Codes zur Fehlerkorrektur wie beispielsweise BCH-Codes sind über endlichen Erweiterungsköpern GF(pn) mit p prim definiert. Während der Dekodierung eines fehlerhaften Datensatzes müssen üblicherweise die Nullstellen des Fehlerpolynoms bestimmt, diskrete Logarithmen von Körperelementen zur Ermittlung der Fehlerpositionen und Zech-Logarithmen zur effizienten Implementierung der Addition von Körperelementen in logarithmischer Darstellung berechnet werden. Dazu können die Funktionswerte der verwendeten Funktionen (z.B. Polynomfunktionen, Logarithmus, Zech-Logarithmus, Exponentialfunktion) vorberechnet und als Tabelle gespeichert werden. Eine Nullstelle eines (normalisierten) Polynoms, der Zech-Logarithmus oder der diskrete Logarithmus eines Körperelementes können dann einfach durch Tabellen-Lookup erhalten werden.
  • 2 veranschaulicht eine Dekoderschaltung 200.
  • Die Dekoderschaltung 200 entspricht beispielsweise dem Dekoderteil 105 der Hardware-Schaltung 103.
  • Die Dekoderschaltung 200 empfängt Eingangsdaten 204 (z.B. ausgelesen aus einem Speicher oder empfangen als Nachricht über einen Kommunikationskanal) die eventuell fehlerhaft sind.
  • Die Dekoderschaltung 200 weist eine Fehlerdetektions- und Fehlerkorrekturschaltung 201 auf, die detektiert, ob die Eingangsdaten 204 fehlerhaft sind, und Fehler (sofern möglich) korrigiert. Dazu macht sie sich Redundanzinformation zu Nutze, die neben den eigentlichen Nutzinformationen in den Eingangsdaten 204 enthalten ist (bzw. durch die Eingangsdaten repräsentiert wird).
  • Die Dekoderschaltung 200 gibt dann Ausgangsdaten 205 aus, die beispielsweise den Nutzinformationen ohne Korrektur entsprechen, wenn die Eingangsdaten 204 fehlerfrei sind, den Nutzinformationen nach Fehlerkorrektur entsprechen oder auch die Information enthalten, dass die Eingangsdaten 204 fehlerbehaftet sind, aber nicht korrigiert werden können (weil zu viele Fehler enthalten sind).
  • Die Fehlerdetektions- und Fehlerkorrekturschaltung 201 führt die Fehlerdetektion und (etwaige) Fehlerkorrektur gemäß einem algebraischen Code durch. Dies basiert auf der Annahme, dass die ursprüngliche Nutzinformation gemäß diesem algebraischen Code codiert wurde, um ein ursprüngliches fehlerfreies Codewort zu erzeugen, das jetzt (möglicherweise fehlerbehaftet) als Eingangsdaten 204 vorliegt. Beispielsweise hat der Enkoder 104 die Nutzinformationen vor dem Speichern im Speicher 101 gemäß dem algebraischen Code codiert und die Eingangsdaten 204 entsprechen diesen codierten Nutzinformationen nach dem Auslesen aus dem Speicher, wobei sie jedoch eventuell aufgrund von Speicher- oder Verarbeitungsfehlern oder auch aufgrund eines Angriffs fehlerbehaftet sind.
  • Der algebraische Code ist über einem endlichen Körper GF(pn) mit p prim definiert. Für die von der Fehlerdetektions- und Fehlerkorrekturschaltung 201 durchgeführten Berechnungen, wie z.B. Syndromberechnung, und folgende Fehlerkorrekturberechnungen wie die Berechnung eines Error-Locator-Polynoms, greift die Fehlerdetektions- und Fehlerkorrekturschaltung 201 auf Funktionsschaltungen 202 zurück, die jeweils den Funktionswert für ein zugeführtes Körperelement (d.h. ein Element des endlichen Körpers) einer Funktion (Logarithmus, Polynomfunktion) oder eine zugeführte natürliche Zahl (Exponentialfunktion, Zech-Logarithmus) berechnen. Der Funktionswert kann ein Körperelement (für die Polynomfunktion oder für die Exponentialfunktion) oder eine natürliche Zahl (für den Zech-Logarithmus oder für den Logarithmus) sein.
  • Für eine effiziente Implementierung können dazu die Funktionswerte vorberechnet werden und in Tabellen 203 abgelegt sein. Wie in den Ausführungsbeispielen unten genauer erläutert wird, kann eine Funktionsschaltung 202 dabei mehrere Tabellen 203 nutzen.
  • Algebraische Eigenschaften der verwendeten endlichen Erweiterungskörper können nun verwendet werden, um die erforderliche Größe der Tabellen 203 zu reduzieren: Wenn die berechnete Funktion und die Repräsentation der Körperelemente oder natürlichen Zahlen, für die die Funktion berechnet wird, bestimmte Eigenschaften aufweisen, kann die Anzahl der zu speichernden Funktionswerte auf ungefähr 1/n der vollständig tabellierten Funktion gesenkt werden. Allerdings sind die dazu notwendigen Transformationen im Allgemeinen so aufwändig, dass diese Herangehensweise typischerweise nur für Software-Realisierungen von Dekodern praktische Verwendung findet.
  • Im Folgenden werden Ausführungsformen beschrieben, die eine Hardware-Realisierung von vorberechneten Funktionen basierend auf Tabellen-Lookups ermöglichen sowie effizient implementier- und ausführbar sind. Insbesondere lässt sich damit die Reduktion der Tabellengröße einer entsprechenden Software-Realisierung nahezu erreichen.
  • Bei den folgenden Beispielen wird angenommen, dass der Funktionswert eines Körperelements berechnet werden soll (z.B. eine Polynomfunktion). Die Beispiele lassen sich aber ganz analog auf die Berechnung eines Funktionswerts einer natürlichen Zahl anwenden (deren Funktionswert dann ein Körperelement ist). Weiter unten wird die Anwendung auf solche Funktionen (Zech-Logarithmus und Exponentialfunktion) noch genauer erläutert.
  • Gemäß einer Ausführungsform wird die Tatsache genutzt, dass, wenn die zu berechnende Funktion und die Repräsentation der Körperelemente (für die die Funktion berechnet werden soll) bestimmte Eigenschaften aufweisen, zum Beispiel eine Invarianz oder Vertauschbarkeit unter Anwendung des Frobeniusendomorphismus x → xp, es genügt, für jeden Orbit des Frobeniusendomorphismus nur einen Repräsentanten zu tabellieren. Unter Orbit wird hierbei der Orbit der Gruppe der Potenzen des Frobeniusendomorphismus für das Körperelement x verstanden.
  • Auf diese Weise kann die Anzahl der zu speichernden Funktionswerte auf ungefähr 1/n der vollständig tabellierten Funktion reduziert werden. Dabei ist n für den Körper GF(pn) die Ordnung des Frobeniusendomorphismus.
  • Gemäß einer Ausführungsform geht eine Funktionsschaltung 202 zur Berechnung einer Funktion für ein Körperelement also derart vor, dass sie die Darstellung des Körperelements zuerst durch wiederholte Anwendung des Frobeniusendomorphismus auf den eindeutigen Repräsentanten des Orbits abbildet, mittels Tabellen-Lookup in der zugehörigen Tabelle 203 das Bild (d.h. den Funktionswert) des Repräsentanten gemäß der tabellierten Funktion bestimmt und abschließend durch wiederholte Anwendung des inversen Frobeniusendomorphismus das Bild des ursprünglichen Körperelementes errechnet.
  • Diese Herangehensweise kann auf einer Ordnung bezüglich der Darstellung der Körperelemente basieren, welche die tabellierten Repräsentanten der Orbits des Frobeniusendomorphismus festlegt. Mit dieser Vorauswahl eines Repräsentanten kann somit (als erster Schritt einer Optimierung der Implementierung) erreicht werden, dass die zugehörige Tabelle nur noch dünn besetzt werden muss. Dann wird im Allgemeinen nur ein n-tel aller Tabelleneinträge benötigt, da die meisten Orbits des Frobeniusendomorphismus die Länge n haben.
  • Um die dünn besetzte Tabelle kompakt speichern zu können, ist darüber hinaus gemäß verschiedenen Ausführungsformen, wie unten beschrieben, noch zusätzlich ein Mechanismus vorgesehen, um die eindeutigen Repräsentanten auf einen kleineren Adressraum abzubilden.
  • Alternativ könnten die besetzten Einträge der Tabelle durch Hardware-Synthese kompakter implementiert werden. Es ist aber nicht unbedingt gewährleistet, dass diese Methode wirklich den Faktor n als Flächenersparnis erzielt.
  • Gemäß der im Folgenden beschriebenen Ausführungsbeispiele wird außerdem die Berechnung eines eindeutigen Repräsentanten eines Orbits, z.B. ein kleinstes Element unter lexikographischer Ordnung, vermieden, da dies in Hardware vergleichsweise aufwändig ist.
  • Bei den im Folgenden beschriebenen Ausführungsbeispielen ermittelt eine Funktionsschaltung 202, die für ein Körperelement einen Funktionswert berechnen soll, ein oder mehrere Repräsentanten eines jeweiligen Orbits (zu dem das Körperelement gehört), die ein bestimmtes Bitmuster in der Körperelement-Darstellung aufweisen. In diesem Zusammenhang wird unter einem Bitmuster eine Teilmenge von (nicht notwendigerweise konsekutiven) Bitpositionen der Körperelement-Darstellung des Repräsentanten zusammen mit jeweils einem vordefinierten BitWert für die jeweiligen Positionen verstanden.
  • Hat ein Orbit solch einen Repräsentanten, so kann die Funktionsschaltung 202 durch Tabellen-Lookup in einer dem Bitmuster zugehörigen Tabelle 203 den zugehörigen Funktionswert ermitteln. Da die vorgegebenen Bits der Bitmuster bekannt und konstant sind, brauchen diese beim Tabellen-Lookup nicht als Input beachtet werden, und die Tabelle 203 kann dadurch kleiner gestaltet werden. Je mehr Bitpositionen das vorgegebene Bitmuster besitzt, desto mehr Bits können bei der zugehörigen Tabelle 203 ignoriert und desto kleiner kann diese gestaltet werden.
  • Weil es im Allgemeinen nicht möglich ist, ein einzelnes Bitmuster zu finden, welches in mindestens einem Repräsentanten eines jeden Orbits vorkommt, ist zur Implementierung im Allgemeinen eine (möglichst kleine) Menge von Bitmustern nötig. Dabei wird die Menge von Bitmustern so gewählt, dass es in jedem Orbit einen Repräsentanten gibt, der eines der Bitmuster aufweist. Es ist aber nicht notwendig, dass die so beschriebene Zuordnung von Orbits zu Bitmustern eindeutig ist. Es kann durchaus sein, dass in einem Orbit mehrere Repräsentanten mit einem oder sogar mehreren Bitmustern in ihrer Körperelement-Darstellung auftreten.
  • Für eine gegebene Menge von Bitmustern ist es in Hardware sehr einfach und effizient überprüfbar, ob ein gegebenes Datum (Körperelement in binärer Körperelementdarstellung) mindestens eines der Repräsentanten-Bitmuster aufweist. Die zugehörigen Schaltungen zum Testen auf Bitmuster lassen sich in logarithmischer Tiefe (in der Anzahl der zu testenden Bitpositionen) realisieren, und Tests auf verschiedene Muster können parallel ausgeführt werden.
  • 3 zeigt eine Funktionsschaltung 300.
  • Der Funktionsschaltung 300 wird ein Körperelement x, für das ein Funktionswert berechnet werden soll, in einer (binären) Körperelementdarstellung zugeführt. Die Körperelementdarstellung ist in diesem Beispiel eine Normalbasisdarstellung von GF(2n). Dies bedeutet, dass das Körperelement als Folge binärer Koeffizienten (Elemente aus GF(2)) dargestellt wird, die die Koeffizienten der „Basisvektoren“ der Normalbasis des GF(2)-Vektorraums GF(2n) zur Bildung des Körperelements sind.
  • Die Anwendung des Frobenius-Automorphismus auf das Körperelement entspricht dann einer bitweisen Rotation der binären Körperelementdarstellung.
  • Entsprechend erzeugt die Funktionsschaltung 300 den Orbit des Körperelements, indem es alle möglichen Rotationen 301 des Körperelements erzeugt. Dies kann jeweils durch einfache Verdrahtung implementiert werden, die die Anordnung der Koeffizienten des Körperelements gemäß der jeweiligen Rotation verändert.
  • Für jedes Repräsentanten-Bitmuster ist eine Mustervergleichsschaltung 302 vorgesehen. Die Funktionsschaltung 300 führt jede Rotation 301 des Körperelements jeder Mustervergleichsschaltung 302 zu.
  • Jede Mustervergleichsschaltung 302 ermittelt für jede Rotation 301, ob das zugehörige Repräsentanten-Bitmuster in der Rotation 301 enthalten ist. Dafür kann die Mustervergleichsschaltung 302 beispielsweise für jede Rotation 301 einen UND-Baum aufweisen, der mit dem jeweiligen Repräsentanten-Bitmuster vergleicht.
  • Das Bitmuster, für das ein Repräsentant im Orbit gefunden wurde sowie die restlichen Bits des Repräsentanten (außer denen des Bitmusters) werden einem Adressdekoder 303 zugeführt, der den Funktionswert des Repräsentanten 305 durch Tabellen-Lookup in einer dem Bitmuster zugeordneten Tabelle 304 an einer den restlichen Bits des Repräsentanten zugeordneten Stelle in der Tabelle 304 ermittelt.
  • Dabei können die Repräsentanten auf einfache Weise auf einen kleinen Adressraum der Tabellen 304 abgebildet werden. Die zu einem erkannten Bitmuster gehörenden Bitpositionen werden entfernt (sie legen die Tabelle fest, in der nachgeschlagen wird), und die verbleibenden Bits adressieren die (ggf. dünn besetzte) Tabelle für die Funktionswerte der Repräsentanten.
  • Vertauscht die zu berechnende Funktion mit dem Frobenius-Automorphismus kann der Funktionswert des Körperelements 306 durch Rückrotation (z.B. durch Auswahl einer entsprechenden Verdrahtung) erzeugt werden. Ist die zu berechnende Funktion invariant unter dem Frobenius-Automorphismus ist eine solche Rückrotation nicht erforderlich.
  • Als einfaches Beispiel sei eine Funktion auf der Menge der Bytes gegeben, die unter der Rotation R der binären Bytedarstellung invariant ist. (Die bitweise Rotation entspricht dabei dem Frobeniusendomorphismus in einem endlichen Erweiterungskörper GF(28) mit Normalbasisdarstellung.) Unter der Rotationsabbildung zerfällt die Menge der 256 Bytes folgendermaßen in 36 paarweise disjunkte Orbits:
    • - Es gibt 2 Orbits der Länge 1:
      • Denn es gibt zwei Elemente 0x00 und 0xff, die jeweils einen Orbit der Länge 1 haben, denn R(0x00)=0x00 und R(0xff)=0xff.
    • - Es gibt einen Orbit der Länge 2:
      • Denn es gibt zwei weitere Elemente, die invariant sind unter R2. Diese sind 0x55 und 0xaa. Notabene: Es gibt 4=22 Elemente, die invariant sind unter R2.
    • - Es gibt 3=(24-22)/4 Orbits der Länge 4:
      • Denn es gibt (24) Elemente, die invariant sind unter R4. Dies zählt auch die oben schon erwähnten 22 Elemente. Also gibt es genau (24-22) Elemente, die unter R die Ordnung 4 haben.
    • - Es gibt 30=(28-24)/8 Orbits der Länge 8:
      • Denn es gibt (28) Elemente, die invariant sind unter R8. Das ist eine Trivialität. Dies zählt auch die oben schon erwähnten 24 Elemente. Also gibt es genau (28-24) Elemente, die unter R die Ordnung 8 haben.
  • (Die lexikographisch kleinsten Repräsentanten der 36 paarweise disjunkten Orbits werden in der Literatur auch Lyndon-Wörter genannt.)
  • Das heißt nun, dass es für die Evaluierung der Funktion ausreichen würde, die Werte der Funktion auf 36 Repräsentanten der paarweise disjunkten Orbits zu kennen. Somit ist bei der Tabellierung der Funktion eine Ersparnis um den Faktor 256/36 = 7.11 erreichbar, also nahezu der Faktor n = 8, wie oben genannt.
  • Wird die Implementierung einer solchen Tabelle durch Hardware-Synthese durchgeführt, dann wird dieser Ersparnisfaktor auch näherungsweise erreicht. Gemäß einer Ausführungsform werden Invarianzen oder Vertauschbarkeit einer Funktion mit einer Abbildung (z.B. dem Frobenius-Automorphismus) aber zur Flächenersparnis in einer Hardware-Implementierung ausgenutzt. Darum werden gemäß einer Ausführungsform für die Implementierung ROM-Tabellen 203, 304 verwendet. Diese lassen sich sehr kompakt in Hardware implementieren.
  • Eine ROM-Tabelle hat typischerweise einen linearen Adressraum der Größe 2m, welcher von m Adressbits abhängig ist. Wird in obigem Beispiel aus jedem der 36 Orbits ein Repräsentant ausgewählt, so sind diese über das gesamte Intervall [0, 255] verteilt, so dass ein Adressraum mit weniger als 8 Bits nicht ausreichen würde. Wie oben erwähnt können die Repräsentanten jedoch auch auf einen kleineren Adressraum abgebildet werden.
  • Im obigen Beispiel wird dazu beispielsweise der Wert der Funktion von 0xff als Sonderfall implementiert (der Präfix „0x“ kennzeichnet hierin eine Hexadezimalzahl). Dies ermöglicht es, in jedem verbleibenden Orbit mindestens einen Repräsentanten zu finden, bei dem das oberste Bit die 0 ist. Somit können die Werte der verbleibenden 35 Repräsentanten in einem Adressraum mit 7 Adressbits untergebracht werden, was die Tabellengröße halbiert.
  • Es kann weiterhin der Wert der Funktion von 0x00 als weiterer Sonderfall behandelt werden und die Beobachtung genutzt werden, dass jeder Wert ungleich 0x00 und 0xff so rotiert werden kann, dass die obersten Bits gleich 01 sind. Dadurch können die Tabellen 203, 304 für die verbleibenden, so gewählten Repräsentanten auf einen Adressraum mit 6 Adressbits reduziert werden. Abgesehen von den zwei Sonderfällen haben die Tabellen 203, 304 dann nur noch 1/4 der ursprünglichen Tabellengröße.
  • Zur Behandlung der Sonderfälle 0x00 und 0xff kann in der Schaltung 300 beispielsweise eine Schaltung 307 vorgesehen sein, die das Körperelement mit den beiden Sonderfällen vergleicht (z.B. durch jeweils ein bitweises XOR) und, wenn ein Sonderfall zutrifft, den jeweiligen (z.B. fest-verdrahteten) Funktionswert ausgibt.
  • Allgemeiner formuliert wird gemäß einer Ausführungsform eine Funktionsschaltung 202 bereitgestellt, die ein Verfahren zur Bestimmung eines Funktionswertes f(x) für Elemente x implementiert, die durch die Bitstrings {0,1}n der Länge n repräsentiert werden können. Die Elemente x können Körperelemente aber auch natürliche Zahlen sein.
  • Die Funktion f hat dabei folgende Eigenschaft: Es gibt zwei Funktionen φ, p, sodass gilt: p(f((φ(x))) = f(x), für alle x aus der Definitionsmenge.
  • In diesem Fall spricht man davon, dass die Funktion f unter den Transformationen φ und ρ-1 äquivariant ist.
  • Ein Beispiel (wie es auch der Beschreibung von 3 zu Grunde liegt) ist, dass φ der Frobeniusendomorphismus und φ-1 = ρ sind. Die Funktion f ist dann zum Beispiel eine beliebige Polynomfunktion.
  • Abhängig von den Funktionen f, φ, ρ wird für die Funktionsschaltung 202 eine Menge von Bitmustern {Bl,...,Br} (bestehend aus Bitpositionen und zugehörigen Bit-Werten) und zugehörige Tabellen {Tl,...,Tr) (entsprechend den Tabellen 203 der Funktionsschaltung 202) definiert.
  • Die Funktionsschaltung 202 ist eingerichtet, den Funktionswert in folgenden Schritten zu ermitteln:
    • - Auffinden von mindestens einem Bitmuster in den Elementen des Orbits von x: {x = φ0(x), φ1(x), φ2(x),...}.
    • - Auswahl eines Repräsentanten des Orbits y= φk(x), der eines der Bitmuster Bi aufweist. (Das Bitmuster hat dabei eine Länge w.)
    • - Tabellen-Lookup von z = f(y) in der zu Bi gehörigen Tabelle Ti. (Die Tabelle verwendet höchstens 2n-w Einträge.)
    • - Bestimmung des Funktionswertes f(x) = ρk(z) durch k-fache Anwendung der Funktion p.
  • Typische Spezialfälle sind:
    • • p ist die Identitätsfunktion, d.h., f ist invariant unter φ.
    • • Ein Bitmuster hat die Länge w = n (siehe obiges Beispiel für GF(28) und dem Frobenius-Automorphismus. Dann besteht die zugehörige Tabelle aus nur einem Wert.
  • Für ein Ausführungsbeispiel, das mit Bezug auf die Schaltung 300 von 3 beschrieben wird, wird im Folgenden den Erweiterungskörper GF(29) betrachtet. Die Elemente des Körpers seien als Bitstrings {0,1}9 der Länge 9 bezüglich einer Normalbasis dargestellt. Dann kann der Frobeniusendomorphismus φ :x → x2 (wie mit Bezug auf 3 beschrieben) durch Rotation der Bitstrings um eine Position nach links implementiert werden. Die Menge der 512 Bitfolgen zerfällt in 60 paarweise disjunkte Orbits: 2 Orbits der Länge l (erzeugt von den Elementen 000000000 und 1111111111), 2 Orbits der Länge 3 (erzeugt von den Elementen 001001001 und 011011011) und 56 Orbits der Länge 9. Daher müssen mindestens 60 Funktionswerte vorgespeichert (z.B. tabelliert) werden, um für jeden möglichen Eingabewert (auch bezeichnet als Eingangswert) einen Funktionswert basierend auf einem vorgespeicherten Funktionswert ermitteln zu können.
  • Mit den 4 Bitmustern B = {11 1111111, *****0001, **0*0**00, *01***1*1} lässt sich zu jedem der 512 möglichen Bitstrings der Länge 9 mindestens ein Repräsentant bezüglich Rotation finden. Dabei bedeutet die Notation *, dass der Wert des entsprechenden Bits durch den jeweiligen Mustervergleicher 302 unberücksichtigt bleibt. Für die Schaltung werden also ein Bitmuster der Länge 9 (entspricht einem einzelnen Tabelleneintrag) und 3 Bitmuster der Länge 4 (entsprechen jeweils 32 Tabelleneinträgen für die möglichen Bit-Werte an den mit * bezeichneten Positionen) definiert. Damit müssen 1+3*32 = 97 Funktionswerte als vorberechnete Funktionswerte gespeichert werden (z.B. als Tabelleneinträge in den Tabellen 304). Der einzelne Wert für das Bitmuster 111111111 kann dabei auch außerhalb einer Tabelle, z.B. festverdrahtet in der Schaltung 307, abgelegt sein.
  • In einer weiteren Ausführungsvariante kann die Anzahl der Tabelleneinträge weiter reduziert werden, wenn die Funktionswerte nicht als Tabellen 304 gespeichert sondern durch synthetisierte Logikschaltungen implementiert werden: Die 4 Bitmuster B haben die Eigenschaft, dass mehrere Bitmuster in einem Orbit von 32 Bitstrings vorkommen können.
  • Zum Beispiel weist der Bitstring 100010110 nach Anwendung φ5(100010110) = 011010001 das Bitmuster *****0001 auf und nach Anwendung φ7(100010110) = 101000101 das Bitmuster *01***1*1 auf. Der Orbit von 100010110 weist somit beide Bitmuster auf, d.h. beide Bitmuster passen zu dem Orbit.
  • Testet die Schaltung 300 dann für einen gegebenen Bitstring x die Bitmuster in einer festen Reihenfolge (zum Beispiel 111111111 → *****0001 → **0*0**00 → *01***1*1) und wählt bei einer Funktionsauswertung jeweils das erste Muster mit einem Repräsentanten im Orbit von x aus, so brauchen die 32 Bitstrings, auf die mehrere Bitmuster aus B passen, nur einmal als Funktionswert in einer der drei Tabellen (d.h. nur für das erste passende Bitmuster) synthetisiert werden.
  • Damit beträgt die Anzahl der notwendigen Werte zur Tabellierung einer Funktion 65. (Zum Vergleich: Eine Tabelle ohne Reduktionsverfahren hat 512 Einträge, das Minimum der Anzahl der Einträge beträgt 60.) Die Bitmuster B wurden dabei so gewählt, dass die Anzahl an Bitstrings, die zu mehreren Bitmustern aus B passen (für Muster mit den Längen 9 und dreimal 4 Bits) maximal ist.
  • Wie oben erwähnt ist die obige Herangehensweise nicht auf die Berechnung von Funktionswerten von Körperelementen eingeschränkt, sondern kann auch zur Berechnung von Funktionswerte für natürliche Zahlen angewendet werden. Eine natürliche Zahl kann ein Körperelement als seinen Logarithmus (in Bezug auf ein primitives Element des Körpers) repräsentieren. Somit kann die Berechnung eines Funktionswerts für eine natürliche Zahl als Anwendung der oben beschriebenen Herangehensweise zur Hardware-effizienten Berechnung tabellierter Funktionen über endlichen Erweiterungskörpern auf die Darstellung von Körperelementen in logarithmischer Darstellung angesehen werden.
  • Seien beispielsweise die Elemente des Körpers GF(29) als Bitstrings {0,1}9 der Länge 9 bezüglich einer primitiven Normalbasis mit erzeugendem Element α dargestellt. Alle von 0 verschiedenen Körperelemente x ε GF(29) können dann eindeutig durch ihren diskreten Logarithmus 0 ≤ d < 511 bezüglich α dargestellt werden, und es gilt: x = αd.
  • Der diskrete Logarithmus d ist dabei eine natürliche Zahl und der Frobeniusendomorphismus entspricht in dieser Darstellung der Verdopplung modulo 511: das heißt x → 2x modulo 511. In dieser Zahldarstellung bewirkt φ auf einer Zahl in binär dargestelltem diskretem Logarithmus eine Rotation um eine Position nach links und p bewirkt eine Rotation um eine Position nach rechts.
  • Dementsprechend lassen sich analog zu einer Schaltung mit Eingabe als Körperelement und Ausgabe als Körperelement (z.B. einer Polynomfunktion) auch Schaltungen bereitstellen, bei denen die Eingabe, die Ausgabe oder beide natürliche Zahlen modulo 2n-1 sind.
  • Beispiele dafür sind die diskrete Logarithmusfunktion bezüglich α, die modulare Exponentiation zur Basis α und der Zech-Logarithmus.
  • Ist nämlich Z(x) = log (αx + 1) der diskrete Zech-Logarithmus (wobei x eine natürliche Zahl ist), so gilt Z ( 2 x ) = log ( ( α x ) 2 + 1 ) = log ( ( α x + 1 ) 2 )
    Figure DE102019132153B3_0001
    aufgrund der Homomorphie-Eigenschaft des Frobenius-Automorphismus und somit Z ( 2 x ) = 2  log ( α x + 1 ) = 2 Z ( x )
    Figure DE102019132153B3_0002
    (2x wird modulo 2n-1 gerechnet).
  • Damit vertauscht wiederrum der Zech-Logarithmus mit der Rotation (also Verdopplung bzw. Halbierung). Analog zu der Berechnung einer Polynomfunktion für ein Körperelement kann also der Zech-Logarithmus durch Rotation des Eingangswerts (natürliche Zahl) auf einen Orbit-Repräsentanten, Ermittlung des Zech-Logarithmus (durch Tabellen-Lookup) des Orbit-Repräsentanten und Rückrotation des Ergebnisses (natürliche Zahl) ermittelt werden.
  • Ähnliches gilt für den Logarithmus und die Exponentialfunktion.
  • Zusammenfassend wird gemäß verschiedenen Ausführungsformen eine integrierte Schaltung bereitgestellt, wie sie in 4 dargestellt ist.
  • 4 zeigt eine integrierte Schaltung 400 zum Berechnen eines Funktionswerts 405 einer Funktion für einen Eingangswert 404.
  • Die integrierte Schaltung 400 weist eine Mustervergleichsschaltung 401 auf, die eingerichtet ist, den Eingangswert und mehrere transformierte Versionen des Eingangswerts mit einem vorgegebenen Bitmuster zu vergleichen und/oder den Eingangswert mit dem Bitmuster und mehreren transformierten Versionen des vorgegebenen Bitmusters zu vergleichen, wobei die transformierten Versionen des Eingangswerts bzw. des vorgegebenen Bitmusters durch wiederholte Anwendung einer Transformation auf den Eingangswert bzw. das vorgegebene Bitmuster entstehen, wobei die Funktion invariant ist unter der Transformation oder wobei es zu der Transformation eine Rücktransformation gibt, mittels der eine Änderung der Funktionswerte, die durch Transformation der Eingangswerte verursacht wird, rückgängig gemacht werden kann.
  • Die integrierte Schaltung 400 weist ferner eine Auswahlschaltung 402 auf, die eingerichtet ist, abhängig von dem Vergleichsergebnis der Mustervergleichsschaltung und dem Eingangswert einen Funktionswert auszuwählen.
  • Die integrierte Schaltung 400 weist ferner eine Ausgabeschaltung 403 auf, die eingerichtet ist, einen Funktionswert 405 für den Eingangswert 404 basierend auf dem ausgewählten Funktionswert auszugeben.
  • In anderen Worten erzeugt die integrierte Schaltung zur Ermittlung eines Funktionswerts einer Funktion für einen Eingabewert (oder Eingangswert) eine Menge von transformierten Versionen des Eingabewerts, d.h. den Orbit des Eingabewerts für wiederholte Anwendung der Abbildung (z.B. wiederholte Rotation), oder analog dazu transformierte Versionen des Bitmusters. Die Schaltung sucht dann das vorgegebene Bitmuster in dem Orbit des Eingabewerts durch Mustervergleich bzw. das Bitmuster und die transformierten Versionen des Bitmusters in dem Eingabewert. Damit identifiziert die Schaltung einen Repräsentanten eines Orbits, für den sie über den gespeicherten Funktionswert verfügt. Die Ausgabeschaltung nimmt diesen gespeicherten Funktionswert als Basis für den Funktionswert des Eingabewerts.
  • Ist die Funktion invariant unter der Transformation, kann die Ausgabeschaltung den gespeicherten Funktionswert verwenden. Ansonsten berechnet sie den Funktionswert für den Eingabewert durch Anwendung der Rücktransformation auf den gespeicherten Funktionswert, um die Transformation des Eingabewerts, die zu dem Repräsentanten des Orbits geführt hat, auszugleichen.
  • Die Transformation des Eingangswerts kann als Abbildung gesehen werden, unter der die Funktion invariant ist oder für die es eine inverse Abbildung gibt, sodass der invers abgebildete Funktionswert eines abgebildeten Eingangswerts gleich dem Funktionswert des Eingangswerts ist.
  • Die Expansionsschaltung kann die verschiedenen Versionen des Eingangswerts durch Umordnen der Bits des Eingangswerts erzeugen, z.B. durch eine (z.B. hart-verdrahtete) Permutation der Bits des Eingangswerts.
  • Die integrierte Schaltung (oder mehrere solcher integrierten Schaltungen, die Funktionswerte für unterschiedliche Funktionen bereitstellen) kann z.B. von einer Dekoderschaltung genutzt werden. Diese kann in Hardware implementiert sein, d.h. eingerichtet sein, ohne programmierbaren Prozessor zu arbeiten, oder, in anderen Worten, die hart-verdrahtet ist.
  • Im Folgenden werden verschiedene Ausführungsbeispiele angegeben.
  • Ausführungsbeispiel 1 ist eine integrierte Schaltung zum Ausgeben eines Funktionswerts einer Funktion zu einem Eingangswert, wie sie in 4 dargestellt ist.
  • Ausführungsbeispiel 2 ist eine integrierte Schaltung gemäß Ausführungsbeispiel 1, wobei das Vergleichsergebnis der Mustervergleichsschaltung angibt, wie oft die Transformation mindestens auf den Eingangswert angewendet werden muss, um einen Wert zu erhalten, der das Bitmuster enthält bzw. wie oft die Transformation mindestens auf das Bitmuster angewendet werden muss, um einen Wert zu erhalten, den der Eingangswert enthält.
  • Ausführungsbeispiel 3 ist eine integrierte Schaltung gemäß Ausführungsbeispiel 1 oder 2, wobei die Mustervergleichsschaltung eingerichtet ist, den Eingangswert und mehrere transformierte Versionen des Eingangswerts mit dem vorgegebenen Bitmuster zu vergleichen und die Auswahlschaltung eingerichtet ist, den Funktionswert auszuwählen, der für eine Bitfolge vorgespeichert ist, die dem Wert, der das vorgegebene Bitmuster aufweist, unter dem Eingangswert und den transformierten Versionen des Eingangswerts entspricht.
  • Ausführungsbeispiel 4 ist eine integrierte Schaltung gemäß Ausführungsbeispiel 3, aufweisend eine Expansionsschaltung, die eingerichtet ist, zu dem Eingangswert durch wiederholte Anwendung der Transformation auf den Eingangswert die mehreren transformierten Versionen des Eingangswerts zu erzeugen.
  • Ausführungsbeispiel 5 ist eine integrierte Schaltung gemäß Ausführungsbeispiel 1 oder 2, wobei die Mustervergleichsschaltung eingerichtet ist, den Eingangswert mit dem Bitmuster und mehreren transformierten Versionen des vorgegebenen Bitmusters zu vergleichen und wobei die Auswahlschaltung eingerichtet ist, einen transformierten Eingangswert bereitzustellen, der so transformiert ist, dass er das Bitmuster enthält, und den Funktionswert unter Verwendung des transformierten Eingangswerts auszuwählen.
  • Ausführungsbeispiel 6 ist eine integrierte Schaltung gemäß Ausführungsbeispiel 5, wobei die Auswahlschaltung eingerichtet ist, den transformierten Eingangswert abhängig davon, wie oft die Transformation mindestens auf das Bitmuster angewendet werden muss, um einen Wert zu erhalten, den der Eingangswert enthält, bereitzustellen.
  • Ausführungsbeispiel 7 ist eine integrierte Schaltung gemäß Ausführungsbeispiel 5 oder 6, wobei die Auswahlschaltung eingerichtet ist, den transformierten Eingangswert derart bereitzustellen, dass er hervorgeht aus der Anwendung der Umkehrung der Transformation so oft auf den Eingangswert, wie die Transformation mindestens auf das Bitmuster angewendet werden muss, um einen Wert zu erhalten, den der Eingangswert enthält.
  • Ausführungsbeispiel 8 ist eine integrierte Schaltung gemäß einem der Ausführungsbeispiele 5 bis 7, wobei die Auswahlschaltung eingerichtet ist, einen Funktionswert auszuwählen, der für eine Bitfolge vorgespeichert ist, die dem transformierten Eingangswert entspricht.
  • Ausführungsbeispiel 9 ist eine integrierte Schaltung gemäß einem der Ausführungsbeispiele 1 bis 8, aufweisend eine Speicherschaltung, die eingerichtet ist, für mehrere Bitfolgen einen vorberechneten Funktionswert zu speichern, wobei die Auswahlschaltung eingerichtet ist, den Funktionswert durch Zugriff auf die Speicherschaltung auszuwählen.
  • Ausführungsbeispiel 10 ist eine integrierte Schaltung gemäß Ausführungsbeispiel 9, wobei die Speicherschaltung ein nichtflüchtiger Speicher oder ein flüchtiger Speicher ist.
  • Ausführungsbeispiel 11 ist eine integrierte Schaltung gemäß Ausführungsbeispiel 9, wobei die Speicherschaltung eine ROM-Speicher-Tabelle ist oder wobei die Speicherschaltung eine Logikschaltung ist.
  • Ausführungsbeispiel 12 ist eine integrierte Schaltung gemäß einem der Ausführungsbeispiele 1 bis 11, wobei die Ausgabeschaltung eingerichtet ist, den ausgewählten Funktionswert als Funktionswert für den Eingangswert auszugeben, falls die Funktion invariant ist unter der Transformation.
  • Ausführungsbeispiel 13 ist eine integrierte Schaltung gemäß einem der Ausführungsbeispiele 1 bis 12, wobei die Ausgabeschaltung eingerichtet ist, durch Anwendung der Rücktransformation auf den ausgewählten Funktionswert einen Funktionswert für den Eingangswert zu ermitteln, falls das Bitmuster nicht in dem Eingangswert selbst enthalten ist.
  • Ausführungsbeispiel 14 ist eine integrierte Schaltung gemäß Ausführungsbeispiel 13, wobei die Ausgabeschaltung eingerichtet ist, die Rücktransformation so oft auf den ausgewählten Funktionswert anzuwenden, wie es einer Anzahl der Anwendungen der Transformation auf Eingangswert entspricht, um eine transformierte Version des Eingangswerts zu erzeugen, die das Bitmuster enthält, falls das Bitmuster nicht in dem Eingangswert selbst enthalten ist.
  • Ausführungsbeispiel 15 ist eine integrierte Schaltung gemäß einem der Ausführungsbeispiele 1 bis 14, wobei die Transformation und die Rücktransformation bitweise Rotationen sind.
  • Ausführungsbeispiel 16 ist eine integrierte Schaltung gemäß einem der Ausführungsbeispiele 1 bis 15, wobei die Funktion unter der Transformation invariant oder äquivariant ist.
  • Ausführungsbeispiel 17 ist eine integrierte Schaltung gemäß einem der Ausführungsbeispiele 1 bis 16, wobei der Eingangswert und/oder der Funktionswert eine Darstellung eines Körperelements eines endlichen Körpers ist.
  • Ausführungsbeispiel 18 ist eine integrierte Schaltung gemäß Ausführungsbeispiel 17, wobei die Funktion eine Polynomfunktion, der Zech-Logarithmus, der Logarithmus oder die Exponentialfunktion ist.
  • Ausführungsbeispiel 19 ist eine integrierte Schaltung gemäß Ausführungsbeispiel 17 oder 18, wobei der Körper ein GF(2n) mit n > 1 ist.
  • Ausführungsbeispiel 20 ist eine integrierte Schaltung gemäß einem der Ausführungsbeispiele 1 bis 19, wobei der Eingangswert eine binäre Darstellung hat und das Bitmuster kürzer ist als die binäre Darstellung des Eingangswerts.
  • Ausführungsbeispiel 21 ist eine integrierte Schaltung gemäß einem der Ausführungsbeispiele 1 bis 20, aufweisend mehrere Speicherschaltungen, wobei jede Speicherschaltung einem der Bitmuster zugeordnet ist und eingerichtet ist, für mehrere Bitfolgen, die das Bitmuster aufweisen, einen vorberechneten Funktionswert zu speichern, wobei die Auswahlschaltung eingerichtet ist, den Funktionswert durch Zugriff auf eine der Speicherschaltungen auszuwählen.
  • Ausführungsbeispiel 22 ist eine integrierte Schaltung gemäß Ausführungsbeispiel 21, wobei die Auswahlschaltung eingerichtet ist, basierend auf dem Bitmuster eine Speicherschaltung aus der Mehrzahl von Speicherschaltungen auszuwählen und aufgrund der restlichen Bits des Werts, der das vorgegebene Bitmuster aufweist, einen von der ausgewählten Speicherschaltung für den Wert gespeicherten Funktionswert auszuwählen.
  • Ausführungsbeispiel 23 ist eine integrierte Schaltung gemäß einem der Ausführungsbeispiele 1 bis 22, aufweisend eine Detektionsschaltung, die eingerichtet ist, zu überprüfen, ob der Eingangswert gleich einem vorgegebenen Eingangswert ist und wobei die Ausgabeschaltung eingerichtet ist, einen vorgegebenen Funktionswert auszugeben, falls der Eingangswert gleich dem vorgegebenen Eingangswert ist.
  • Ausführungsbeispiel 24 ist eine integrierte Dekoderschaltung, aufweisend einen Empfänger, eingerichtet zum Empfangen eines Nachrichtenworts; eine oder mehrere integrierte Schaltungen gemäß einem der Ausführungsbeispiele 1 bis 23, eine Fehlerdetektions- und Fehlerkorrekturschaltung, die eingerichtet ist, Fehler in dem empfangenen Nachrichtenwort unter Verwendung der Funktion zu detektieren und gegebenenfalls zu korrigieren.
  • Ausführungsbeispiel 25 ist eine integrierte Dekoderschaltung gemäß Ausführungsbeispiel 24, wobei die integrierte Dekoderschaltung mehrere integrierte Schaltungen gemäß einem der Ausführungsbeispiele 1 bis 23 aufweist, wobei die integrierten Schaltungen eingerichtet sind, Funktionswerte für unterschiedliche Funktionen auszugeben und wobei die Fehlerdetektions- und Fehlerkorrekturschaltung eingerichtet ist, Fehler in dem empfangenen Nachrichtenwort unter Verwendung der Funktionen zu detektieren und gegebenenfalls zu korrigieren.
  • Ausführungsbeispiel 26 ist eine integrierte Dekoderschaltung gemäß Ausführungsbeispiel 24 oder 25, wobei der Empfänger eine Speicherschnittstelle aufweist und eingerichtet ist, das Nachrichtenwort aus einem Speicher auszulesen.
  • Ausführungsbeispiel 27 ist eine integrierte Dekoderschaltung gemäß einem der Ausführungsbeispiele 24 bis 26, wobei die Fehlerdetektions- und Fehlerkorrekturschaltung eingerichtet ist, Fehler in dem empfangenen Nachrichtenwort gemäß einem zyklischen algebraischen Code zu detektieren und gegebenenfalls zu korrigieren.
  • Ausführungsbeispiel 28 ist eine integrierte Dekoderschaltung gemäß Ausfuhrungsbeispiel 27, wobei der Code ein Reed-Solomon-Code oder ein BCH-Code ist.
  • Obwohl die Erfindung vor allem unter Bezugnahme auf bestimmte Ausführungsformen gezeigt und beschrieben wurde, sollte es von denjenigen, die mit dem Fachgebiet vertraut sind, verstanden werden, dass zahlreiche Änderungen bezüglich Ausgestaltung und Details daran vorgenommen werden können, ohne vom Wesen und Bereich der Erfindung, wie er durch die nachfolgenden Ansprüche definiert wird, abzuweichen. Der Bereich der Erfindung wird daher durch die angefügten Ansprüche bestimmt, und es ist beabsichtigt, dass sämtliche Änderungen, welche unter den Wortsinn oder den Äquivalenzbereich der Ansprüche fallen, umfasst werden.
  • Bezugszeichenliste
  • 100
    Sicherheits-Schaltung
    101
    nichtflüchtiger Speicher
    102
    Mikroprozessor
    103
    Hardware-Schaltung
    104
    Enkoder
    105
    Dekoder
    200
    Dekoderschaltung
    201
    Fehlerdetektions- und Fehlerkorrekturschaltung
    202
    Funktionsschaltungen
    203
    Tabellen
    204
    Eingangsdaten
    205
    Ausgangsdaten
    300
    Funktionsschaltung
    301
    Körperelement-Rotationen
    302
    Mustervergleichsschaltung
    303
    Adressdekoder
    304
    Tabellen
    305
    Repräsentanten-Funktionswert
    306
    Körperelement-Funktionswert
    400
    integrierte Schaltung
    401
    Expansionsschaltung
    402
    Mustervergleichsschaltung
    403
    Auswahlschaltung
    404
    Ausgabeschaltung
    405
    Eingangswert
    406
    Funktionswert

Claims (28)

  1. Integrierte Schaltung zum Ausgeben eines Funktionswerts einer Funktion zu einem Eingangswert, aufweisend: Eine Mustervergleichsschaltung, die eingerichtet ist, den Eingangswert und mehrere transformierte Versionen des Eingangswerts mit einem vorgegebenen Bitmuster zu vergleichen und/oder den Eingangswert mit dem Bitmuster und mehreren transformierten Versionen des vorgegebenen Bitmusters zu vergleichen, wobei die transformierten Versionen des Eingangswerts bzw. des vorgegebenen Bitmusters durch wiederholte Anwendung einer Transformation auf den Eingangswert bzw. das vorgegebene Bitmuster entstehen, wobei die Funktion invariant ist unter der Transformation oder wobei es zu der Transformation eine Rücktransformation gibt, mittels der eine Änderung der Funktionswerte, die durch Transformation der Eingangswerte verursacht wird, rückgängig gemacht werden kann, eine Auswahlschaltung, die eingerichtet ist, abhängig von dem Vergleichsergebnis der Mustervergleichsschaltung und dem Eingangswert einen Funktionswert auszuwählen, und eine Ausgabeschaltung, die eingerichtet ist, einen Funktionswert für den Eingangswert basierend auf dem ausgewählten Funktionswert auszugeben.
  2. Integrierte Schaltung gemäß Anspruch 1, wobei das Vergleichsergebnis der Mustervergleichsschaltung angibt, wie oft die Transformation mindestens auf den Eingangswert angewendet werden muss, um einen Wert zu erhalten, der das Bitmuster enthält oder wie oft die Transformation mindestens auf das Bitmuster angewendet werden muss, um einen Wert zu erhalten, den der Eingangswert enthält.
  3. Integrierte Schaltung gemäß Anspruch 1 oder 2, wobei die Mustervergleichsschaltung eingerichtet ist, den Eingangswert und mehrere transformierte Versionen des Eingangswerts mit dem vorgegebenen Bitmuster zu vergleichen und die Auswahlschaltung eingerichtet ist, den Funktionswert auszuwählen, der für eine Bitfolge vorgespeichert ist, die dem Wert, der das vorgegebene Bitmuster aufweist, unter dem Eingangswert und den transformierten Versionen des Eingangswerts entspricht.
  4. Integrierte Schaltung gemäß Anspruch 3, aufweisend eine Expansionsschaltung, die eingerichtet ist, zu dem Eingangswert durch wiederholte Anwendung der Transformation auf den Eingangswert die mehreren transformierten Versionen des Eingangswerts zu erzeugen.
  5. Integrierte Schaltung gemäß Anspruch 1 oder 2, wobei die Mustervergleichsschaltung eingerichtet ist, den Eingangswert mit dem Bitmuster und mehreren transformierten Versionen des vorgegebenen Bitmusters zu vergleichen und wobei die Auswahlschaltung eingerichtet ist, einen transformierten Eingangswert bereitzustellen, der so transformiert ist, dass er das Bitmuster enthält, und den Funktionswert unter Verwendung des transformierten Eingangswerts auszuwählen.
  6. Integrierte Schaltung gemäß Anspruch 5, wobei die Auswahlschaltung eingerichtet ist, den transformierten Eingangswert abhängig davon, wie oft die Transformation mindestens auf das Bitmuster angewendet werden muss, um einen Wert zu erhalten, den der Eingangswert enthält, bereitzustellen.
  7. Integrierte Schaltung gemäß Anspruch 5 oder 6, wobei die Auswahlschaltung eingerichtet ist, den transformierten Eingangswert derart bereitzustellen, dass er hervorgeht aus der Anwendung der Umkehrung der Transformation so oft auf den Eingangswert, wie die Transformation mindestens auf das Bitmuster angewendet werden muss, um einen Wert zu erhalten, den der Eingangswert enthält.
  8. Integrierte Schaltung gemäß einem der Ansprüche 5 bis 7, wobei die Auswahlschaltung eingerichtet ist, einen Funktionswert auszuwählen, der für eine Bitfolge vorgespeichert ist, die dem transformierten Eingangswert entspricht.
  9. Integrierte Schaltung gemäß einem der Ansprüche 1 bis 8, aufweisend eine Speicherschaltung, die eingerichtet ist, für mehrere Bitfolgen einen vorberechneten Funktionswert zu speichern, wobei die Auswahlschaltung eingerichtet ist, den Funktionswert durch Zugriff auf die Speicherschaltung auszuwählen.
  10. Integrierte Schaltung gemäß Anspruch 9, wobei die Speicherschaltung ein nichtflüchtiger Speicher oder ein flüchtiger Speicher ist.
  11. Integrierte Schaltung gemäß Anspruch 9, wobei die Speicherschaltung eine ROM-Speicher-Tabelle ist oder wobei die Speicherschaltung eine Logikschaltung ist.
  12. Integrierte Schaltung gemäß einem der Ansprüche 1 bis 11, wobei die Ausgabeschaltung eingerichtet ist, den ausgewählten Funktionswert als Funktionswert für den Eingangswert auszugeben, falls die Funktion invariant ist unter der Transformation.
  13. Integrierte Schaltung gemäß einem der Ansprüche 1 bis 12, wobei die Ausgabeschaltung eingerichtet ist, durch Anwendung der Rücktransformation auf den ausgewählten Funktionswert einen Funktionswert für den Eingangswert zu ermitteln, falls das Bitmuster nicht in dem Eingangswert selbst enthalten ist.
  14. Integrierte Schaltung gemäß Anspruch 13, wobei die Ausgabeschaltung eingerichtet ist, die Rücktransformation so oft auf den ausgewählten Funktionswert anzuwenden, wie es einer Anzahl der Anwendungen der Transformation auf Eingangswert entspricht, um eine transformierte Version des Eingangswerts zu erzeugen, die das Bitmuster enthält, falls das Bitmuster nicht in dem Eingangswert selbst enthalten ist.
  15. Integrierte Schaltung gemäß einem der Ansprüche 1 bis 14, wobei die Transformation und die Rücktransformation bitweise Rotationen sind.
  16. Integrierte Schaltung gemäß einem der Ansprüche 1 bis 15, wobei die Funktion unter der Transformation invariant oder äquivariant ist.
  17. Integrierte Schaltung gemäß einem der Ansprüche 1 bis 16, wobei der Eingangswert und/oder der Funktionswert eine Darstellung eines Körperelements eines endlichen Körpers ist.
  18. Integrierte Schaltung gemäß Anspruch 17, wobei die Funktion eine Polynomfunktion, der Zech-Logarithmus, der Logarithmus oder die Exponentialfunktion ist.
  19. Integrierte Schaltung gemäß Anspruch 17 oder 18, wobei der Körper ein GF(2n) mit n > 1 ist.
  20. Integrierte Schaltung gemäß einem der Ansprüche 1 bis 19, wobei der Eingangswert eine binäre Darstellung hat und das Bitmuster kürzer ist als die binäre Darstellung des Eingangswerts.
  21. Integrierte Schaltung gemäß einem der Ansprüche 1 bis 20, aufweisend mehrere Speicherschaltungen, wobei jede Speicherschaltung einem der Bitmuster zugeordnet ist und eingerichtet ist, für mehrere Bitfolgen, die das Bitmuster aufweisen, einen vorberechneten Funktionswert zu speichern, wobei die Auswahlschaltung eingerichtet ist, den Funktionswert durch Zugriff auf eine der Speicherschaltungen auszuwählen.
  22. Integrierte Schaltung gemäß Anspruch 21, wobei die Auswahlschaltung eingerichtet ist, basierend auf dem Bitmuster eine Speicherschaltung aus der Mehrzahl von Speicherschaltungen auszuwählen und aufgrund der restlichen Bits des Werts, der das vorgegebene Bitmuster aufweist, einen von der ausgewählten Speicherschaltung für den Wert gespeicherten Funktionswert auszuwählen.
  23. Integrierte Schaltung gemäß einem der Ansprüche 1 bis 22, aufweisend eine Detektionsschaltung, die eingerichtet ist, zu überprüfen, ob der Eingangswert gleich einem vorgegebenen Eingangswert ist und wobei die Ausgabeschaltung eingerichtet ist, einen vorgegebenen Funktionswert auszugeben, falls der Eingangswert gleich dem vorgegebenen Eingangswert ist.
  24. Integrierte Dekoderschaltung, aufweisend: einen Empfänger, eingerichtet zum Empfangen eines Nachrichtenworts; eine oder mehrere integrierte Schaltungen gemäß einem der Ansprüche 1 bis 23, eine Fehlerdetektions- und Fehlerkorrekturschaltung, die eingerichtet ist, Fehler in dem empfangenen Nachrichtenwort unter Verwendung der Funktion zu detektieren und gegebenenfalls zu korrigieren.
  25. Integrierte Dekoderschaltung gemäß Anspruch 24, wobei die integrierte Dekoderschaltung mehrere integrierte Schaltungen gemäß einem der Ansprüche 1 bis 23 aufweist, wobei die integrierten Schaltungen eingerichtet sind, Funktionswerte für unterschiedliche Funktionen auszugeben und wobei die Fehlerdetektions- und Fehlerkorrekturschaltung eingerichtet ist, Fehler in dem empfangenen Nachrichtenwort unter Verwendung der Funktionen zu detektieren und gegebenenfalls zu korrigieren.
  26. Integrierte Dekoderschaltung gemäß Anspruch 24 oder 25, wobei der Empfänger eine Speicherschnittstelle aufweist und eingerichtet ist, das Nachrichtenwort aus einem Speicher auszulesen.
  27. Integrierte Dekoderschaltung gemäß einem der Ansprüche 24 bis 26, wobei die Fehlerdetektions- und Fehlerkorrekturschaltung eingerichtet ist, Fehler in dem empfangenen Nachrichtenwort gemäß einem zyklischen algebraischen Code zu detektieren und gegebenenfalls zu korrigieren.
  28. Integrierte Dekoderschaltung gemäß Anspruch 27, wobei der Code ein Reed-Solomon-Code oder ein BCH-Code ist.
DE102019132153.0A 2019-11-27 2019-11-27 Integrierte schaltung Active DE102019132153B3 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE102019132153.0A DE102019132153B3 (de) 2019-11-27 2019-11-27 Integrierte schaltung
KR1020200150948A KR102451475B1 (ko) 2019-11-27 2020-11-12 집적 회로
US17/103,969 US11283469B2 (en) 2019-11-27 2020-11-25 Integrated circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102019132153.0A DE102019132153B3 (de) 2019-11-27 2019-11-27 Integrierte schaltung

Publications (1)

Publication Number Publication Date
DE102019132153B3 true DE102019132153B3 (de) 2021-02-18

Family

ID=74239586

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019132153.0A Active DE102019132153B3 (de) 2019-11-27 2019-11-27 Integrierte schaltung

Country Status (3)

Country Link
US (1) US11283469B2 (de)
KR (1) KR102451475B1 (de)
DE (1) DE102019132153B3 (de)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080215956A1 (en) * 2002-04-05 2008-09-04 Seagate Technology Llc Computing an error detection code syndrome based on a correction pattern
US20150347231A1 (en) * 2014-06-02 2015-12-03 Vinodh Gopal Techniques to efficiently compute erasure codes having positive and negative coefficient exponents to permit data recovery from more than two failed storage units

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120079462A1 (en) * 2010-09-24 2012-03-29 SoftKrypt LLC Systems and methods of source software code obfuscation
WO2013059367A1 (en) * 2011-10-18 2013-04-25 Paul Marion Hriljac Systems and methods of source software code modification
DE102015210651B4 (de) * 2015-06-10 2022-10-27 Infineon Technologies Ag Schaltung und Verfahren zum Testen einer Fehlerkorrektur-Fähigkeit
KR20170007635A (ko) * 2015-07-10 2017-01-19 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US10191809B2 (en) * 2016-08-17 2019-01-29 International Business Machines Corporation Converting a data chunk into a ring algebraic structure for fast erasure coding
US10944428B2 (en) 2019-04-29 2021-03-09 Intel Corporation Device, system and method for determining bit reliability information

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080215956A1 (en) * 2002-04-05 2008-09-04 Seagate Technology Llc Computing an error detection code syndrome based on a correction pattern
US20150347231A1 (en) * 2014-06-02 2015-12-03 Vinodh Gopal Techniques to efficiently compute erasure codes having positive and negative coefficient exponents to permit data recovery from more than two failed storage units

Also Published As

Publication number Publication date
KR102451475B1 (ko) 2022-10-06
KR20210066717A (ko) 2021-06-07
US20210159918A1 (en) 2021-05-27
US11283469B2 (en) 2022-03-22

Similar Documents

Publication Publication Date Title
DE102011054410B4 (de) Vorrichtung und Verfahren zur Erzeugung einer Bitfolge
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE102018103408B3 (de) Integrierte schaltung und verfahren zum verarbeiten eines codierten nachrichtenworts
DE102013205544A1 (de) Vorrichtung und Verfahren zur Verarbeitung von Daten
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE102016102590B4 (de) Datenverarbeitungseinrichtungen und verfahren zum rekonstruieren eines puf-werts
DE102013205542A1 (de) Vorrichtung und Verfahren zur Verarbeitung von Daten
DE102014207296A1 (de) Vorrichtung und Verfahren zur Verarbeitung von Daten
WO2009034019A1 (de) Verfahren und vorrichtung zum codieren von datenworten
DE102020110787B3 (de) Schaltung und verfahren zum kodieren oder dekodieren eines datenworts
DE102018131613A1 (de) Fehlererkennung mittels Gruppenfehler
DE102019132153B3 (de) Integrierte schaltung
EP1342153B1 (de) Verfahren und vorrichtung zum erzeugen einer pseudozufallsfolge mittels diskretem logarithmus
DE102013219088B9 (de) Schaltungsanordnung und Verfahren zur Realisierung von Prüfbitkompaktierung für Cross-Parity-Codes
DE102016104012A1 (de) Verarbeitung eines Datenworts
DE102015111729B4 (de) Verfahren und decoder zum bestimmen eines fehlervektors für ein datenwort gemäss einem reed-muller-code
DE102014118531B4 (de) Verfahren und Datenverarbeitungseinrichtung zum Ermitteln eines Fehlervektors in einem Datenwort
DE102015121646B4 (de) Fehlerkorrektur
DE10261810B4 (de) Verfahren zur Fehlererkennung beim kryptografischen Transformieren von binären Daten und Schaltungsanordnung
DE102019121286B3 (de) Verarbeitung von aus einem Speicher gelesenen Daten
DE102010006876B4 (de) Verfahren und Vorrichtung zur Kodierung von Daten
DE102017116280B4 (de) Speicheranordnung
DE19937456C2 (de) Rechner zur Datenverarbeitung und Verfahren zur Datenverarbeitung in einem Rechner
DE102017200075B4 (de) Entschlüsselungsverfahren sowie Kommunikationssystem
DE1449906B2 (de)

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