-
Die Erfindung betrifft ein Prüfverfahren zur sicheren, beschleunigten Erkennung von Datenfehlern unter Verwendung von Mitteln zur Prüfsummengenerierung in Form einer binären Fehlermatrix sowie eine Vorrichtung zur Durchführung des Verfahrens, bestehend aus matrixartig verschalteten UND-Gattern.
-
Verfahren zur Bestimmung einer Restfehlerwahrscheinlichkeit bei der Übertragung von Daten sind in vielfältiger Weise bekannt. Hierzu gehört das Patent
DE 10253949 B3 von K. Merchant vom 19. November 2002, welches ein System zur Reduzierung der Restfehlerwahrscheinlichkeit bei der Übertragung von Daten beschreibt. Das bekannte Verfahren, das bereits eine Reduzierung der Restfehlerwahrscheinlichkeit mit angemessenem Aufwand auf einen beliebig kleinen Wert erlaubt, soll durch erhöhte Anpassungsfähigkeit an wechselnde Betriebsbedingungen ergänzt werden. Für Schaltungen, die die Sicherheit bzw. Betriebssicherheit eines Systems oder einer Anlage überwachen und somit gewährleisten sollen, gelten folgende Anforderungen:
- – sichere Datenspeicherung (Überwachung der Daten auf bit-Fehler)
- – hohe Taktrate (schnelle Datenverarbeitung)
- – einfaches, wartungsarmes Design (geringe Störanfälligkeit)
-
US 6,763,492 B1 offenbart ein Verfahren und ein System zur effizienten Codierung von linearen Blockcodes, welches eine Nachschlagtabelle mit einem Satz von Impulsantworten verwendet, um eine höhere Leistung durch eine parallele Codierung zu erreichen.
-
Bit-Fehler werden standardmäßig durch Prüfsummentests detektiert und korrigiert (vgl.
1): Für jedes Datenpaket d (mit d = Anzahl der Informationsbits) wird bitweise durch ein LFSR (linear rückgekoppeltes Schieberegister) eine Prüfsumme CRC (mit CRC = Anzahl der Prüfbits) erstellt. Diese Prüfsumme entspricht einem Divisionsrest. Datenpaket d und Prüfsumme CRC werden bei der Überprüfung als gemeinsames Datenpaket ausgelesen und erneut mittels des gleichen LFSR verarbeitet. Der hinzugefügte Divisionsrest macht das Datenpaket nun zu einem ganzen Vielfachen und der nun ermittelte Divisionsrest ist damit CRC = 0. in der Kommunikationstechnik haben sich mehrere LFSR mit gut erforschten Eigenschaften etabliert (z. B. CRC-CCITT, CRC-Ethernet oder primitive Polynome des Typs CRC-16). Die bitweise Verarbeitung des Datenblocks d ist jedoch langsam und somit ein Nachteil. in der
DE 198 38 865 wird ein Verfahren zur Konstruktion von parallelisierten Schaltungen zur Prüfsummenerzeugung offenbart, die die entsprechenden Prüfsummen erheblich schneller berechnen können. Wie in der
US 5,103,451 wird eine einem bestimmten Schieberegister entsprechende, optimierte Anordnung von XOR-Gattern verwendet. XOR-Gatter sind im Vergleich zu UND-Gattern komplexer aufgebaut und führen so zu aufwendigeren Schaltungen und erhöhter Störanfälligkeit. Ein Wechsel des Schieberegisters ist mit diesen spezifisch optimierten Schaltungen nicht möglich.
-
Um die Datensicherheit in sensiblen Bereichen passend erhöhen zu können (z. B. Datenspeicher, der zeitweise radioaktiver Strahlung ausgesetzt ist), ist ein Wechsel des Schieberegisters wünschenswert. Die vorliegende Erfindung betrifft daher ein Verfahren zur beschleunigten Berechnung von LFSR-Prüfsummen, das das situationsabhängige Anpassen der Datensicherheit erlaubt, sowie ein Verfahren zur Konstruktion einer entsprechenden Schaltung aus weniger störanfälligen UND-Gattern.
-
Diese Aufgabe wird erfindungsgemäß durch ein Prüfverfahren zur sicheren Erkennung von Datenfehlern unter Verwendung von Mitteln zur Prüfsummengenerierung in Form einer Fehlermatrix gemäß Anspruch 1 gelöst. Eine Vorrichtung zur Durchführung des Verfahrens mittels einer entsprechenden Schaltung aus UND-Gattern gemäß der vorliegenden Erfindung ist in Ansprüchen 7, 8 und 10 angegeben.
-
Als Kriterium zur Bewertung von Datensicherheit wird die sogenannte Hamming-Distanz HD verwendet. Diese entspricht der Anzahl bits eines Datenblocks, die mindestens verfälscht werden müssen, um einen nicht mehr erkennbaren Fehler zu erzeugen (Datenfälschung). Die Hamming-Distanz ist dabei abhängig von der Gesamtlänge des Datenblocks (Nutzdatenbits + bits der Prüfsumme) und von der Art der Verschaltung des Schieberegisters, das die Prüfsumme CRC erzeugt. Im Folgenden wird die Erfindung am Beispiel von LFSR-Prüfsummengeneratoren, bei denen die Ausgänge des Schieberegisters selektiv auf den Eingang über ein EX-OR rückgekoppelt werden, erläutert (vgl. 4): Das Schieberegister durchläuft eine Anzahl von insgesamt ZL Zyklen, bevor sich die durch das Register generierten Werte wiederholen. Damit z. B. ein 1-bit-Fehler korrigiert werden kann, muss die Anzahl bits des insgesamt übertragenen Datenblocks D kleiner oder gleich ZL sein (vgl. 2):
Die Breite des Datenblocks D sei gleich ZL. Ein Datenpaket D wird ausgelesen und mittels eines LFSR überprüft. Wenn die Prüfsumme CRC einem von 0 verschiedenen Wert Xy entspricht, liegt ein Übertragungs- bzw. Lesefehler vor. Bei HD ≥ 3 ist es möglich, den zugehörigen Fehler Ey über die Menge aller Prüfsummen zu ermitteln. Die Menge aller Prüfsummen wird dazu durchsucht und Xy erfasst. Da mit HD ≥ 3 jede Prüfsumme umkehrbar eindeutig mit einem Fehler E verknüpft ist, kann nun der Fehler Ey über Xy ermittelt und die Korrektur durchgeführt werden.
-
Da die Menge der 1-bit-Fehler über die Fehlerprüfsumme umkehrbar eindeutig mit der fehlerhaften Bitposition des Datenblocks D verknüpft sind, sind umgekehrt auch die Prüfsummen über die in einer Fehlermatrix FM erfassten Fehlerprüfsummen bestimmbar. Die Fehlermatrix wird mittels des Prüfsummengenerators aus einem Prüfsummenstartwert entwickelt und spiegelt die mathematischen Eigenschaften des Generators wieder. Dieses sind die Voraussetzungen für die Durchführung des erfindungsgemäßen Verfahrens, in dem die Fehlermatrix FM durch Matrixmultiplikation mit den Nutzdatenbits die Funktion des LFSR als Prüfsummengenerator übernimmt. Die Anordnung der Prüfsummen in Matrixform gestattet die Konstruktion einer schnellen, parallelisierten Schaltung. Die Matrixmultiplikation kann mittels dieses matrixartigen Schaltungsnetzes mit UND-Gattern an den Positionen der bits mit dem Wert 1 durchgeführt werden. Dadurch wird die Prüfsumme nicht mehr bitweise sondern im Idealfall Datenblockweise gebildet. Dies bildet den Grundgedanken der vorliegenden Erfindung.
-
Zunächst soll ein Beispiel des erfindungsgemäßen Prüfverfahrens in prinzipieller Art anhand der folgenden Überlegungen hergeleitet werden:
- 1. Konstruktion einer Fehlermatrix
- 2. Definition der verwendeten Begriffe
- 3. verfahrensgemäße Prüfung eines Datenpakets
- 4. Struktur und Eigenschaften der Fehlermatrix
-
1. Konstruktion der Fehlermatrix FM (vgl. Fig. 3):
-
Beginnend mit dem Startwert X1 = 11, 02, 03, .... 0CRC (binär; erstes bit = 1, gefolgt von Nullen; die Zeilen weisen eine Breite gleich der Bit-Breite der Prüfsumme auf) erzeugt das LFSR aus diesem Startwert ZL-1 weitere Prüfsummen. Die bits erfahren dabei in jeder nachfolgenden Zeile eine Rechtsverschiebung: Das erste Bit der nächsten Zeile wird jeweils aus den rückgekoppelten bits der vorherigen Zeile berechnet und eingefügt.
-
2. Definition der verwendeten Begriffe:
-
-
- CRC
- = Prüfsumme (dual)
- n
- = Länge der Prüfsumme CRC
- ZL
- = Zyklus-Länge = Anzahl der verschiedenen, möglichen Prüfsummen für E
- FM
- = Fehlermatrix = ZL Zeilen und n Spalten (jedes Element ein bit)
- HD
- = Hamming-Distanz
- m
- = Anzahl der veränderten bits
- D
- = Daten (dual) = d (Informationsbits; dual) + CRC (Prüfsumme; dual)
- CD
- = ,corrupted data' = veränderte Daten (dual)
- E
- = 1-bit-Fehler (dual; Länge = D; wird modulo 2 auf D addiert; das ,falsche' bit ist hier 1)
- N
- = Blocklänge des gesamten Datenpakets in bits D = (d + CRC)
-
3. verfahrensgemäße Prüfung eines Datenpakets
-
Es sei: N = (CRC + d) = ZL
-
Damit gilt hier: HD = 3 (für N ≤ ZL ist HD ≥ 3)
-
Jedem 1-bit-Fehler kann umkehrbar eine Prüfsumme zugeordnet werden.
-
Umkehrung:
-
Jedes CRC kann über 1-bit-Operationen in der FM erhalten werden.
CD = D + E (modulo 2) und CRCFM (1, n) = CD(1, d)·FM(d, n)
CRC-Bildung: CRCFM (1, n) = CD(1, d)·FM(d, n)
CRC-Überprüfung: CRCFM XOR CRC = 0 = data is valid
-
Mit der Gleichung CRC-Bildung lässt sich CRC von Nutzdaten blockweise über die Fehlermatrix bestimmen (Matrixmultiplikation) – daher der Index FM. Diese Prüfsumme CRCFM XOR-verknüpft mit der angehängten Prüfsumme CRC, muss bei Datenintegrität 0 ergeben, es sei denn, m ≥ HD.
-
4. Struktur und Eigenschaften der FM
-
Da die Bitmuster hier mit jedem Zeilensprung eine Rechtsverschiebung erfahren, lässt sich eine FM bei bekannter erster Spalte und bekannter erster Zeile vollständig entwickeln. Bei Verwendung von programmierbaren Schaltkreisen (d. h. schaltbare UND-Gatter) kann so mit geringem Mehraufwand schnell von einem LFSR auf ein anderes LFSR umgeschaltet werden. Zur Berechnung der Prüfsumme eines Nutzdatenblocks d werden nur die ersten d Zeilen der FM benötigt. Die weiteren Zeilen sind zur Prüfsummenbestimmung nicht notwendig.
-
5. Konstruktion einer erfindungsgemäßen Schaltung (vgl. Fig. 3)
-
Die Anordnung der auf 1 stehenden bits in der FM entspricht der Anordnung von UND-Gattern in der matrixartig aufgebauten Schaltung. Die zu verarbeitenden Daten werden seitlich eingeschoben (big Endian; most significant bit = MSB = Zeile 1; Least significant bit = LSB = Zeile ZL (bei Verarbeitung des Datenpakets D)). Werden nur die Nutzdaten d verarbeitet, so werden nur die ersten d Zeilen der FM zur Konstruktion der Schaltung verwendet. Alternativ kann der Aufwand an Schaltelementen dadurch reduziert werden (geringere Störanfälligkeit), dass die FM in Teilabschnitten einer programmierbaren Schaltung mit geringerer Zeilenzahl zugeführt wird und die Prüfsumme durch Aufsummieren der Teilergebnisse erhalten wird. Wird HD nicht durch LFSR-Variation geändert, so kann eine fest verdrahtete, parallelisierte Verarbeitungsmatrix aus einfachen und damit weniger störanfälligen UND-Gattern verwendet werden.
-
Auf diese Art und Weise macht die Fehlermatrix FM die beschleunigte, parallelisierte CRC-Erzeugung zugänglich. Geschwindigkeit und Gatteraufwand können mit programmierbaren Schaltungen individuell gegeneinander abgewogen werden (Verkleinern der Schaltung durch Teilen der FM in Teilabschnitte s. o.). Fest verdrahtete Schaltungen mit UND-Gattern bieten bei konstanter Blocklänge den Vorteil eines einfacheren Designs (reduzierte Störanfälligkeit) und ermöglichen dennoch eine hohe Verarbeitungsgeschwindigkeit.
-
6. Beispiele
-
Die folgenden Beispiele aus der Praxis sollen das erfindungsgemäße Prüfverfahren verdeutlichen:
- – Die Blockweise Decodierung der Nutzdaten
- – Die Blockweise Codierung der Nutzdaten
- – Online-Test einer Finite State Maschine (FSM)
-
Die zu decodierenden bzw. codierenden Daten können aus unterschiedlichen Quellen stammen. Sie können Empfangs- bzw. Sendedaten einer Übertragungseinheit sein oder aber auch Inhalt eines Arbeitsspeichers sein, der im Laufe des Betriebes ständig aktualisiert wird und so auf dem neuesten Stand gehalten wird. Der Einfachheit halber wird hier angenommen, dass die zu decodierenden Daten aus dem Arbeitsspeicher kommen und vor der Verarbeitung auf Fehler überprüft werden sollen. Umgekehrt werden die während des Betriebes verarbeiteten Daten bevor sie im Arbeitsspeicher abgelegt werden codiert. Mit der hier vorgestellten Methodik können dann die Daten bereits zum Zeitpunkt ihrer Entstehung codiert und während des nächsten Verarbeitungszeitpunktes decodiert und damit auf Fehler überprüft werden. Damit kann das Prüfverfahren beschleunigt und die Betriebssicherheit deutlich erhöht werden.
-
6.1 Blockdecodierung
-
Die Decodierung wird gleichzeitig mit den Lesezugriffen durchgeführt. Das aus dem Arbeitsspeicher stammende Lesedatum wird gleichzeitig dem Blockdecoder zugeleitet und das Ergebnis von CRC des aktuellen Datenwortes im Zwischenspeicher des Decoders aufaddiert. Man kann nach dem letzten Lesezugriff eines Blockes feststellen, ob ein Fehler stattgefunden hat. Am Ende der sukzessiven Addition von CRC der sämtlichen Wörter, die das Informationsteil bilden, steht im Zwischenspeicher des Decoders das CRC von Nutzdaten des Blockes. Als letztes Wort steht am Blockende das CRC von Nutzdaten (Informationsteil). Nach dem letzten Zugriff auf den Datenblock wird das gelesene Datum mit dem CRC aus dem Zwischenspeicher verglichen. Die Gleichheit des Vergleiches deutet auf Fehlerfreiheit des gelesenen Speicherinhalts hin oder es liegt ein m-Bitfehler vor, wobei m ≥ HD ist.
-
6.2 Blockcodierung
-
Die Codierung des Datenblockes wird gleichzeitig mit den Schreibzugriffen durchgeführt. Alle Wörter des Informationsteils werden nacheinander in den Arbeitsspeicher geschrieben. Gleichzeitig mit dem Schreibzugriff wird das Datum auch an die Blockcodierung zugeleitet, die das CRC des momentanen Datenwortes bildet und im Zwischenspeicher der Blockcodierschaltung aufaddiert. Nach dem Schreiben von sämtlichen Wörtern des Informationsteils steht im Zwischenspeicher das CRC der Nutzdaten (Informationsteil). Als letztes wird nun dieses aus dem Zwischenspeicher geholt (Abwicklung per Software) und als letztes Wort des Datenblockes im Arbeitsspeicher übertragen. Der Block beinhaltet nun die codierten Daten.
-
6.3 Implementierungsvarianten (Verschaltung)
-
Zur Implementierung bieten sich zwei Varianten an:
- • Bei einer Implementierung mit der festen Verdrahtung werden die Rockkoppelung Rk, Blocklänge N und Länge n des Schieberegisters vordefiniert. Damit ist die Güte der Fehlererkennung (Hamming-Distanz) schon vorprogrammiert und kann nicht verändert werden.
- • Bei einer Implementierung mit der programmierbaren Verdrahtung können die Rückkopplung, Länge n des Schieberegisters und Blocklänge N und damit die Hamming-Distanz an die Bedürfnisse der Applikation angepasst werden. Es ist sogar möglich im laufenden Betrieb einen Teil der Daten (sicherheitsrelevante Daten) mit höherer Sicherheit, d. h. mit höherer Hamming-Distanz, zu bearbeiten.
-
6.4 Blockdecoder mit der festen Verdrahtung (Fig. 8)
-
8 zeigt den Aufbau eines erfindungsgemäßen Blockdecoders mit der festen Verdrahtung. Vor dem Beginn der Decodierung werden 2-Bit Zähler, Zwischenspeicher, CRC-Error und 4-Bit Datenspeicher initialisiert. Initialisierung kann wahlweise per Soft- oder Hardware durchgeführt werden. Im betrachteten Fall hat FM 11 Zeilen je 4 Bits. An Stelle von jeder Eins in der FM wird jeweils ein UND-Gatter implementiert. Der rechte Eingang dieses Gatters wird fest mit VDD (Eins) verdrahtet und der linke Eingang wird jeweils mit der entsprechenden Stelle des Datenbits verbunden. Die nibbleweise gelesenen Daten werden am Ende des Lesezugriffs mit der positiven Flanke von rd_n im 4-Bit Datenspeicher übernommen. 2-Bit Zähler Z und Zwischenspeicher ZW werden ebenfalls mit der positiven Flanke von rd_n getaktet. In 4 Zugriffen werden jeweils 11 Datenbits und 4 CRC-Bits (N1–N4) nibbleweise aus dem Arbeitsspeicher gelesen. Die gelesenen Daten werden über einen Demux zur Berechnung des CRCs an FM (UND-Gatter) weitergeschaltet. Das CRC wird nibbleweise ermittelt und im Zwischenspeicher ZW aufaddiert. Nach dem letzten Lesezugriff (N4) wird das CRC aus dem Zwischenspeicher mit dem Lesedatum verglichen. Das Ergebnis CRC-Error (1 = Datenfehler) wird abhängig vom Design 1 bis 2 Takte nach diesem Zugriff im Register CE übernommen. Nun kann der Decoder zum Empfang des nächsten Blockes wieder initialisiert werden.
-
6.5 Blockdecoder mit der programmierbaren Verdrahtung
-
7 zeigt Aufbau eines erfindungsgemäßen Blockdecoders mit der programmierbaren Verdrahtung. Im Gegensatz zum Decoder mit der festen Verdrahtung wird hier jedes Matrixelement mit einem UND-Gatter belegt. Der rechte Eingang dieses Gatters wird dann mit dem aktuellen CRC-Bit verbunden und somit kann es nur zum CRC-Ergebnis beitragen, wenn dieses gleich Eins ist. Diese UND-Gatter werden hier dann durch ein weiteres UND-Gatter ergänzt. Dieses ist im Bild rechts versetzt unterhalb des eigentlichen UND-Gatters gezeichnet und bildet die programmierbare Rückkoppelung. Ist das Bit Rki der Rk gleich null, so wird das entsprechende CRC-Bit nicht rückgekoppelt. Das Ergebnis der Rk wird durch das EX-OR, das am linken Rand der UND-Matrix gezeichnet ist gebildet und dient als Bit MSB der nächsten Zeile von FM. Oberhalb der FM ist ein Register ME vorgesehen, das die erste Zeile des Subblocks der Länge r (Busbreite hier = 4) beinhaltet. Mit dieser ersten Zeile und den r Rückkoppelungen (EX-ORs am linken Rand der UND-Matrix, die MSB von CRC bilden) werden dann die nächsten r Zeilen von FM gebildet. Mit der positiven Flanke von rd_n steht das r-Bit Datenwort intern an den Eingängen (Signal D4) der FM. Der Decoder hat nun die volle Länge der Zugriffszeit (bis zum nächsten rd_n) zur Bildung des CRC von gelesenen Daten D4 zur Verfügung. Am Ende des nächsten Lesezugriffs wird das ermittelte CRC in ZW aufaddiert und gleichzeitig wird die erste Zeile des nächsten Subblocks (dies ist die letzte Zeile des aktuellen Subblocks) im Register ME geladen. Nun beginnt die Berechnung von CRC des nächsten Wortes. Nachfolgend wird der vollständige Ablauf des Blockdecodierung beschrieben.
-
Als erstes wird das Reg. Rk beschrieben. Das Reg. ist n-Bit breit. Wird die Länge n von CRC kleiner als r gewählt, so bleiben die r – n LSBs auf Null.
Z. B. 1001 0111 0000 0000, n = 8, r = 16
-
Außerdem sollen die r – n LSBs vom Vergleichen maskiert werden. Es soll dafür gesorgt werden, dass die Bedingung „r ≤ n” erfüllt wird. Das optimale Ergebnis gewinnt man, wenn r = n gewählt wird. Vor dem Beginn der Decodierung werden die Reg. ZW, Datenspeicher D, ME und CE initialisiert. Initialwert ist im Block unten rechts gezeichnet. Ist die Anzahl der Informationsbits k nicht durch r teilbar, so beträgt die Anzahl der Informationsbits gleich dem Rest des Teilungsergebnisses im letzten Wort des Informationsteils. Die restlichen Bits werden durch selektive Aktivierung des Resets des Datenspeichers auf Null gehalten.
Z. B. 1010 0000 0000 0000, k = 35, r = 16, 3-Bit Information im 3ten Wort, Rest 0
-
Nach dem letzten Blockzugriff wird das berechnete CRC aus dem Zwischenspeicher mit dem Lesedatum verglichen. Das Ergebnis CRC-Error (1 = Datenfehler) wird abhängig vom Design 1 bis 2 Takte nach diesem Zugriff im Register CE übernommen. Nun kann der Decoder zum Empfang des nächsten Blockes wieder initialisiert werden.
-
6.6 Blockcodierung mit der festen Verdrahtung
-
6 zeigt den Aufbau einer erfindungsgemäßen Blockcodierschaltung mit der festen Verdrahtung. Die Fehler-Matrix FM ist identisch mit dem Decoder der Schaltung mit der festen Verdrahtung (siehe 8). Die Daten werden nibbleweise (n = 4) im Arbeitsspeicher geschrieben und mit der positiven Flanke von wr_n im 4-Bit-Datenspeicher übernommen. 2-Bit Zähler Z und Zwischenspeicher ZW werden ebenfalls mit der positiven Flanke von wr_n getaktet. Vor dem Beginn der Codierung werden 2-Bit Zähler, Zwischenspeicher und 4-Bit Datenspeicher initialisiert. Initialisierung kann wahlweise per Soft- oder Hardware durchgeführt werden. In 3 Zugriffen werden 11 Datenbits nibbleweise (N1–N3) im Arbeitsspeicher geschrieben und über den Demux zur Berechnung des CRCs an FM weitergeschaltet. Das CRC wird nibbleweise ermittelt und im Zwischenspeicher ZW aufaddiert. Nach dem Beschreiben des kompletten Informationsteils (hier 3 Nibbles) ist noch ein Dummy Schreibzugriff zur Bildung des CRCs erforderlich. CRC steht nun im ZW. In den nächsten zwei Zugriffen wird CRC aus dem ZW gelesen und anschließend im Datenblock an letzter Stelle zurückgeschrieben. Die Blockcodierung ist somit beendet und nun kann mit der Codierung des nächsten Blockes begonnen werden. Der Codiervorgang braucht 2 Zyklen mehr als die Anzahl der zu codierenden Nibbles bzw. Wörter.
-
6.7 Blockcodierung mit der programmierbaren Verdrahtung (Fig. 5)
-
Der Ablauf des Codiervorgangs ist exakt identisch mit dem der Beschreibung der festverdrahteten Schaltung (Absatz 6.6). Die Konvention ist identisch mit der Beschreibung im Absatz 6.5. Lediglich entfällt hier der CRC-Vergleicher. Die Codierschaltung beinhaltet generell keinen Vergleicher dafür aber die Tristate-Buffers zum lesen des Registers ZW. Dieses wird mit Hilfe des Signals OE_ZW gelesen. Der Codiervorgang braucht allgemein 2 Zyklen mehr als die Anzahl der zu codierenden Nibbles bzw. Wörter. Der Zusatzaufwand von 2 Zyklen fällt bei großen Datenblöcken nicht ins Gewicht. Z. B. die hier vorgeschlagene Schaltung erlaubt die Datensicherung bis zu 2048 Wörtern (2047 Wörter Informationen, 1 Wart CRC) mit Hamming-Distanz von 4 mit einem 16-Bit CCITT Polynom. Das letzte Informationswort hat nur 15-Bit Information. Bit 16 wird auf Null gesetzt.
-
6.8 Decodierung einer FSM (Fig. 9)
-
Die Codierung bzw. Decodierung mit der festen Verdrahtung benötigt etwa die Hälfte der Anzahl der FFS gegenüber programmierbarer Verdrahtung. Die Anzahl der benötigten UND-Gatter kann aber abhängig von der Zykluslänge drastisch zunehmen, da hier jede Eins aus der FM belegt werden muss. Außerdem bietet der Ansatz keine Flexibilität und benötigt zusätzlich einen aufwendigen Demultiplexer. Dennoch hat dieses Konzept seine Berechtigung für spezielle Applikationen, wie z. B. Decodierung einer FSM.
-
Werden die einzelnen States einer FSM mit einem Polynom nten Grades codiert, so benötigt man N = t + n Bits für einen codierten State. Es stehen dann maximal 2t – 1 verschiedene States zur Verfügung. Mit einem Polynom 12ten Grades (erweiterter Golay-Code) können maximal 11-Bit Information mit einer Hamming-Distanz von 8 abgesichert werden.
X^12 + X^10 + X^7 + X^4 + X^3 + X^2 + X + 1
-
Die Zykluslänge N beträgt hier 23. Der Decoder kann somit Online bis zu 7 Bitfehler die in einem State zufällig (durch Radioaktive Strahlung) entstehen, sofort erkennen. Somit lässt sich eine FSM mit maximal 2047 States kontinuierlich überwachen. Die Decodierung (9) von einzelnen States wird bei dieser Anwendung erheblich vereinfacht, da bei einer FSM die Daten taktsynchron entstehen und stabil anliegen. Außerdem kann der ganze Block in einem Zug ohne Blockteilung decodiert werden. Somit können die Daten direkt an die FM (UND-Gatter) zugeführt werden. Demux, Datenspeicher und sogar der 12-bit Zwischenspeicher können entfallen. Im Gegensatz zum Blockdecoder wird hier der ganze Block inklusive Prüfbits (CRC) decodiert, da die States bereits vorcodiert sind und die Blockcodierung nicht mehr benötigt wird. Die FM beinhaltet bei dieser Anwendung insgesamt N = n + d Zeilen und nicht die d Zeilen wie bei den bisher betrachteten 2 Beispielen mit der festen Verdrahtung. Die einzelnen States müssen natürlich gültige Codewörter mit CRC = 0 sein.
-
9 zeigt eine erfindungsgemäße Ausführung einer FSM mit 4 Informationsbits (15 States) und 12 Prüfbits, die mit einem erweiterten Golay-Code die Online-Überwachung der FSM durchführt. Die Schaltung benötigt sehr wenig an Hardware (1 FF, 66 UND-Gatter, 12 EX-OR und ein OR-Gatter) und der größte Vorteil ist ihre relativ einfache Struktur, die eine fehlerfreie Implementierung erlaubt. Die Anzahl der möglichen States können bis 2047 (Informationsbits 11) problemlos erweitert werden. Dann benötigt die Schaltung anstatt 66 UND-Gatter 139 Und-Gatter, also keinen nennenswerten Mehraufwand.