-
GEBIET DER ERFINDUNG
-
Die vorliegende Erfindung betrifft das Gebiet der Fehlerkorrektur bei der digitalen Datenverarbeitung und insbesondere einen Algorithmus zur Erzeugung eines Systems zur Berechnung einer CRC unabhängig von der Länge von Generatorpolynom und Datenstrom.
-
HINTERGRUND DER ERFINDUNG
-
Verfahren und Architekturen zur Fehlerkorrektur sind in der digitalen Datenverarbeitung und bei Kommunikationssystemen wohlbekannt, einschließlich bei Systemen mit Datenspeicherungssubsystemen, beispielsweise magnetischen, optischen oder halbleiterbasierten Speichern. Erkennung und, soweit möglich, Korrektur fehlerhafter Daten erfolgt dabei unter Einsatz einer Codierschaltung zur Bildung einer gewissen Zahl „redundanter” m-Bit Fehlerprüfsymbole, die die Information in einem ausgewählten Datenblock mathematisch charakterisieren. Diese Fehlerprüfsymbole werden dann an den Datenblock angehängt und über einen Kommunikationskanal überfragen. Bei Empfang des Datenblocks, oder bei dessen Abruf aus dem Speicher zu einem späteren Zeitpunkt, kann die Genauigkeit oder Zuverlässigkeit der Daten dann unter Verwendung dieser angehängten Fehlerprüfsymbole bewertet werden.
-
Die zyklische Redundanzprüfung (engl. cyclic redundancy check, CRC) ist ein klassischer Fehlererkennungsmechanismus, der im Stand der Technik weithin bekannt ist und bei zahlreichen Anwendungen als Mittel zur Fehlererkennung in einem übertragenen Datenstrom eingesetzt wird. Ihre allgemeine Akzeptanz beruht auf der Einfachheit ihrer Implementierung, aufgrund der sie zur Kodierung in einen zu übertragenden und anschließend am Empfänger zu überprüfenden Datenstrom verwendet werden kann.
-
Die CRC-Berechnung erfolgt mittels Polynomarithmetik, wobei die Grundlage des Algorithmus folgende ist: dass bei gegebenem Sender und Empfänger beide gegenseitig die Verwendung des gleichen Generatorpolynoms anerkennen, wobei es sich im Wesentlichen um eine Folge von Informationen handelt, die zum Konstruieren und Verifizieren des Fehlerprüfsymbols (im Kontext der CRC ist dieses auch unter dem Begriff Prüfsumme bekannt) aus dem Datenstrom verwendet wird, ein Strom von Informationen (auch als Pakete oder Frames bekannt) übertragen wird, wobei die Berechnung des Fehlerprüfsymbols erfolgt, indem eine Polynomdivision an dem Datenstrom durch den gewählten Generatorpolynoms durchgeführt wird.
-
Im Stand der Technik wurde zur Optimierung der Geschwindigkeit der Berechnung des Fehlerprüfsymbols in einigen Fällen auf die Lösung der Ableitung Boolescher oder logischer Ausdrücke zurückgegriffen, die für spezifische Generatorpolynome mit fester Datenbreite gültig sind, während andere Methodiken das Konzept der Verwendung von LFSR (engl. linear feedback shift registers, lineare Rückkopplungs-Schieberegister) optimieren; anstelle der Verschiebung einzelner Bits können aber auch mehrere Bits oder Bytes pro Taktzyklus verschoben werden, daraus ergeben sich jedoch zusätzliche Regeln für den Algorithmus. Außerdem wird bei einigen Methoden aus dem Stand der Technik angestrebt, den Vorgang der zyklischen Redundanzprüfung durch Prüfung auf unveränderte Teile bestimmter Informationsströme zu optimieren, während bei anderen Ansätzen wiederum versucht wird, die Methodik durch Berechnung von Teilresten basierend auf Segmenten des Informationspakets zu verbessern.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Die vorliegende Erfindung stellt ein Verfahren zum Einrichten eines Algorithmus zur Durchführung einer parallelen zyklischen Redundanzprüfung (CRC) zur Verfügung, umfassend folgende Schritte: (i) Erwägen eines Generatorpolynoms
sowie
(ii) Umwandeln von f(x) und g(x) in eine Tabelle in Abhängigkeit voneinander; (iii) Betrachten eines Beispielfalles mit k = 7 und L = 7, so dass
wobei A, B, C...G Divisorkoeffizienten sind, und (iv) Erhalten von
-
Es ist Aufgabe der vorliegenden Erfindung, ein Verfahren zum Einrichten eines Algorithmus bereitzustellen, mit dem die bei zyklischen Redundanzprüfungen verwendete Prüfsumme berechnet wird, wobei der Algorithmus generisch und unabhängig von der Länge von Generatorpolynom und Datenstrom ist, und wobei sich das Verfahren in digitaler Logik-Implementierung realisieren lässt, die nur durch die Laufzeitverzögerung des langsamsten synthetisierten kombinatorischen Logikpfad begrenzt ist und üblicherweise innerhalb einer Periode eines einzigen Systemtaktzyklus berechnet wird.
-
Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren zum Einrichten eines Algorithmus bereitzustellen, der die bei der zyklischen Redundanzprüfung verwendete Prüfsumme berechnet, wobei eine Sequenz von Informationen und der entsprechende Generatorpolynom in eine Tabelle umgewandelt werden, um die Durchführung und Implementierung des Verfahrens in synthetisierbarer Logik zu vereinfachen.
-
Diese und weitere Aufgaben, Aspekte, Vorteile und Merkmale der vorliegenden Erfindung werden dem Fachmann auf dem Gebiet ausführlicher verdeutlicht und bewusst gemacht durch nachfolgende detaillierte Beschreibung einer bevorzugten Ausführungsform, in der auf die beiliegenden Zeichnungen Bezug genommen wird.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Es versteht sich, dass die beiliegenden Zeichnungen lediglich zur Veranschaulichung dienen und nicht als Definition der Grenzen der Erfindung gedacht sind. In den Zeichnungen ist ein bevorzugtes Ausführungsbeispiel der vorliegenden Erfindung dargestellt, Es zeigen
-
1 eine Transformationstabelle, die einen 7-Bit-Datenstrom und einen 7-Bit-Generatorpolynom gemäß vorliegender Erfindung verkörpert;
-
2 eine beispielhafte CRC-Prüfsummenberechnung gemäß vorliegender Erfindung; und
-
3 die Implementierung einer CRC5 für USB als LFSR unter Verwendung des Generatorpolynoms G(x) = x5 + x2 + 1 eines herkömmlichen Verfahrens.
-
AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
-
Die CRC-Berechnung erfolgt mittels Polynomarithmetik, wobei die Grundlage eines Algorithmus dadurch gegeben ist, dass sowohl Sender als auch Empfänger dieselbe Generatorpolynomsequenz verwenden, bevor ein Informationsstrom (auch als Pakete oder Frames bekannt) übertragen wird, die Berechnung durch Polynomdivision durch das ausgewählte Generatorpolynom erfolgt. Der Rest des Ergebnisses der Polynomdivision wird an das ursprüngliche zu übertragende Informationspaket angehängt. Somit kann bei Übertragung der Information und Empfang dieser Information am Empfänger eine Überprüfung vorgenommen werden, indem dieselbe Polynomdivision am empfangenen Informationspaket durchgeführt und dann überprüft wird, ob der sich ergebende Rest gleich Null ist, was in denjenigen Fällen, in denen der Rest ungleich Null ist, eine leichte Fehlerbestimmung ermöglicht.
-
Bei der vorliegenden Erfindung wird das Verfahren dazu verwendet, ein Verfahren zum Einrichten eines Algorithmus bereitzustellen, mit dem die bei der CRC verwendete Prüfsumme berechnet wird. Auf einen mathematischen Kontext bezogen lässt sich die voranstehende Offenbarung durch folgende Erklärung erläutern.
-
Geht man davon aus, dass der Datenstrom gegeben ist durch m(x) mit den Koeffizienten m
L-1, m
L-2, und jeder Polynomgrad gegeben ist durch x
n-1, wobei n für den Grad des Polynoms im Bereich von {0, n – 1} steht, dann gilt für den Datenstrom
wobei L für die Länge des Datenpakets steht.
-
Zusätzlich kann das Generatorpolynom ähnlich dargestellt werden durch
g(x) = gk-1xk-1 + gk-2xk-2 + gk-2xk-2 + ... gc wobei k für die Länge des Generatorpolynoms steht. Bei der vorliegenden Erfindung lässt sich die berechnete CRC-Prüfsumme darstellen durch
-
Der letzte Datenframe, der nach Berechnung der CRC und Anhängung dieser an m(L) überfragen werden soll, lässt sich darstellen durch: f(x) = m(x)xk-1 + c(x)
-
Und bei q(x) als Quotientenprodukt des Datenstroms (mit angehängten k – 1 Bits) und des Generatorpolynoms kann m(x) umformuliert werden zu
m(x)xk-1 = g(x)q(x) + c(x) wobei die Lösung aus folgender Gleichung abgeleitet wird:
-
Im Stand der Technik wird c(x) auf die in 2 dargestellte Art und Weise realisiert, und es zeigt sich, dass das vorliegende Verfahren der Polynomdivision ein Erfordernis zur Speicherung von Daten aus der Vergangenheit beinhaltet, um diese dann vorzutragen und schließlich zu einem Ergebniswert zu gelangen, durch den der Rest ist. Bei digitalen Logiksystemen ist eine Anzahl linear rückgekoppelter Schieberegister (LFSR), die jeweils einem dem Generatorpolynom zugeordneten Grad des Polynoms bis hin zum höchsten Grad entsprechen, kaskadenartig in Reihe geschaltet mit zusätzlicher Exklusiv-ODER-(XOR-)Logik, wo immer der Grad des Generatorpolynoms 1 ist. Ein Beispiel dafür ist in 3 dargestellt.
-
Folglich wäre für die Berechnung der CRC für einen gegebenen übertragenen Datenstrom auf der Empfängerseite als Minimum eine k – 1 Anzahl von Taktzyklen erforderlich (wobei k – 1 der höchste dem Generatorpolynom zugeordnete Grad ist).
-
1 zeigt ein Beispiel einer Umwandlung eines 7-Bit-Datenstroms und eines 7-Bit-Generatorpolynoms in eine Tabelle gemäß vorliegender Erfindung. Wie hier gezeigt, ergeben sich mittels der gemäß vorliegender Erfindung beschriebenen Transformationstabelle aus Datenstrom plus CRC-Prüfsumme (f(x): f0, f1, f2, f3...f10, f11, f12), bei Polynomdivision durch die Generatorpolynomsequenz (g(x): g0, g1...g5, g6) die Divisorkoeffizienten A, B...F, G. Die Divisorkoeffizienten werden zur Berechnung der CRC-Sequenz gemäß vorliegender Erfindung verwendet.
-
2 zeigt die Berechnung einer langen Division, der der Datenstrom 1100100111 unterzogen wird, wobei zusätzliche 0000 an den Datenstrom von der Polynomsequenz 10101 oder x4 + x2 + 1 angehängt werden. Bei der vorliegenden bevorzugten Ausführungsform ersetzt der Rest unten die als CRC-Prüfsumme an den Datenstrom angehängten zusätzlichen 0000.
-
Bei der bevorzugten Ausführungsform der vorliegenden Erfindung werden zur effektiven Ausarbeitung des Algorithmus f(x) und g(x) in Abhängigkeit voneinander in eine Tabelle umgewandelt, wie in 1 gezeigt. Dabei wird von einem Beispielfall von L = 7 und k = 7 ausgegangen und die Leerräume haben als logische Folge einen Wert von Null, Die mathematische Bedeutung von q(x) wird nach Durchführung der Transformation bedeutungslos, und es zeigt sich, dass sich Koeffizienten A, B, C...F, G ergeben, und die Koeffizienten sollen als Divisorkoeffizienten bezeichnet werden.
-
Bei Betrachtung eines Sonderfalls, in dem das Generatorpolynom derart ist, dass alle Koeffizienten ab dem kten Grad 0 bis 6 alle eins sind, und wobei n die Länge des Datenstroms plus der Länge der CRC-Prüfsumme (L + (k – 1)) sei, kann daraus abgeleitet werden, dass
und daher
-
Handelt es sich bei dem Generatorpolynom nicht um einen Sonderfall, dann wäre bei der obenstehenden Ableitung ein zusätzlicher Multiplikationsfaktor erforderlich auf Grundlage des Zeilenindexes des Generatorpolynoms von 1, mit der Reihe der Divisorkoeffizienten, die verschoben wurden.
-
Gemäß vorliegender Erfindung wird der Algorithmus wie offenbart dazu verwendet, ein Verfahren für eine CRC-Prüfsumme zu erzeugen, das unabhängig von Daten- oder Generatorpolynomlänge ist, das üblicherweise innerhalb eines Taktzyklus berechnet wird, und nur durch die Laufzeitverzögerung des langsamsten synthetisierten kombinatorischen Logikpfads begrenzt ist. Die Erzeugung des Verfahrens bestimmt den sich ergebenden Rest aus der Durchführung einer Polynomdivision bei einer Datensequenz von einem konfigurierbaren Generatorpolynom, ohne dass hierfür eine Kenntnis der Vergangenheit erforderlich ist oder eine Rückkopplung implementiert werden muss, was einen Speicher voraussetzt, Die vorliegende Erfindung stellt einen neuartigen Ansatz bereit, indem die Koeffizienten des Quotienten des Ergebnisses aus der Durchführung einer Polynomdivision bestimmt werden, indem von der Annahme ausgegangen wird, dass der Rest null ist, was nahe legt, dass die restlichen k – 1 Bits des Gesamtquotienten der Rest der Polynomdivision wären.
-
Somit ergeben sich für den Fachmann auf dem Gebiet zahlreiche weitere mögliche Modifikationen, ohne dabei von den hierin offenbarten erfinderischen Konzepten abzuweichen. Die Erfindung soll daher ausschließlich durch den Umfang der nachstehenden Ansprüche beschränkt sein,