-
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
aufgrund der Homomorphie-Eigenschaft des Frobenius-Automorphismus und somit
(2x wird modulo 2
n-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