CRC - Wie berechnen?

Hallo,

Ich beiße mir jetzt schon seit zwei Tagen die Zähne an der Berechnung eines simplen(?) CRCs. Ich hab dabei so ziemlich jede Anleitung befolgt, die ich finden konnte (inkludive Wikipedia) aber nix hat funktioniert. Hier mein Beispiel:

CRC-Polynom: 110101
Datenwort: 11011

Vorgehen nach Wikipedia:
Datenwort um n-1 Bits verlängern (wobei n die Länge des CRC-Polynoms ist):

1101100000 : 110101
110101
 110000
 110101
 101 = Rest

Ok, die folgenden Daten werden also z.B. zu einem Empfänger übertragen: 11011101 (Datenwort+CRC)

Nun will ich das ganze überprüfen. Dazu rechne ich:

11011101 : 110101
110101
 1001 = Rest

Der Rest sollte aber 0 sein und nicht 1001!
Was mache ich falsch? Sieht jemand den Fehler?

Vielen Dank schonmal im vorraus

CRC-Polynom: 110101
Datenwort: 11011

Vorgehen nach Wikipedia:
Datenwort um n-1 Bits verlängern (wobei n die Länge des
CRC-Polynoms ist):

1101100000 : 110101

Hallo,

das ist sicher falsch - das CRC-Polynom wird nicht einfach hinten drangehängt (was sollte das denn bewirken?), sondern das Polynom ist eine Rechenvorschrift, die definiert, welche Bits über XOR zurückgeführt werden und welche nicht.

Genaueres müss ich selber erst wieder finden, es muss wohl 20 Jahre her sein, dass ich CRC-Software geschrieben habe, heute ist das alles in Peripherieschaltungen fest kodiert. Falls ich noch so ein altes Stück Programm finde, melde ich mich wieder.

Gruss Reinhard

Vielen Dank für die schnelle Antwort :smile:

> das CRC-Polynom wird nicht einfach hinten drangehängt

das hab ich ja auch nicht gemacht… ich habe dem Datenwort nur Nullen angehängt, damit das XOR mit dem CRC-Polynom funktioniert. Das Datenwort war nämlich kürzer als das CRC-Polynom.

Den Rest(!) der nach den XOR Operationen (siehe mein erster Beitrag) zwischen Datenwort und CRC-Polynom übrigblieb, habe ich dann angehängt.
Allerdings muss ich zugeben, dass mir der mathematische Hintergrund dieses Schritts tatsächlich nicht klar ist (und ich so meine Zweifel hab dass das funktioniert).

Würde mich freuen, wenn du das Papier noch findest und es mir erklären könntest.

Viele Grüße - Andreas

Hallo,

11011 00000 : 110101
110101
110000
110101
101 = Rest

Ok, die folgenden Daten werden also z.B. zu einem Empfänger
übertragen: 11011 101 (Datenwort+CRC)

da ist der Fehler: Du musst den Rest natürlich auch 5-stellig schreiben: 11011 00101. Das ist einfach deine Ausgangsnachricht plus der Rest. Damit ist klar, dass die nächste Division aufgehen muss.

Andreas

Ganz herzlichen Dank, das wars. Mein Gott, manchmal hat echt Tomaten auf den Augen :wink:

Viele Grüße - Andreas