Was hat das CRC-Implementierung bedeuten, durch eine seed-Wert?
Ich versuche zur Implementierung einer CRC-Algorithmus in Verilog für die GESENDETEN sensor-Protokoll.
In einem Dokument setzen, die von der SAE, Sie sagen, Ihre CRC verwendet der generator-Polynom
x^4 + x^3 + x^2 + 1 und ein seed-Wert von 0101. Ich verstehe das grundlegende Konzept der Berechnung eines CRC mit XOR-division und spart den Rest, aber jedes mal wenn ich versuche zum berechnen einer CRC bekomme ich die falsche Antwort.
Ich weiß das, weil in demselben Dokument haben Sie eine Liste von Beispielen mit Daten-bits und die entsprechende Prüfsumme.
Zum Beispiel, die Reihe der hex-Werte x"73E73E" hat die Quersumme 15 und die Serie x"748748" hat die Quersumme 3. Gibt es jemanden, erreichen diese Werte mit den Angaben oben? Wenn ja, wie haben Sie es tun?
Dies ist ein paar Sätze aus dem Dokument kopiert: "Die CRC-Prüfsumme umgesetzt werden können, wie eine Reihe von shift-left von 4 (multipliziert mit 16), gefolgt von einem 256-element-array-lookup. Die Prüfsumme wird ermittelt, indem alle Daten-nibbles in der Reihenfolge und dann Prüfsummenbildung das Ergebnis mit ein
zusätzliche null-Wert".
- Nur ein Hinweis, es gibt ein paar interessante CRC32-algorithmen implementiert in
C
mehr auf Hacker ' s Delight, die nützlich sein könnten, zu verweisen. Überprüfen Sie Sie heraus hier: hackersdelight.org/hdcodetxt/crc.c.txt
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werfen Sie einen Blick auf RevEng, die Bestimmung der CRC-Parameter von Beispielen (es müssten mehr Beispiele, als Sie zur Verfügung gestellt haben).
Hatte ich nur, um herauszufinden, die gleiche Sache. Ich war die überprüfung eine CRC-Implementierung für den CRC-Algorithmus, das war kryptisch, wenn auch arbeiten. So wollte ich die "normalen" CRC-Algorithmus, um mir das gleiche zahlen, so konnte ich umgestalten, ohne Probleme.
Für die zahlen, die Sie Gaben, die ich bekommen 0x73E73E => 12, 0x748748 => 3.
Wie Sie Lesen können in Koopman der Ausgangswert "Verhindert, dass alle-null-Daten von word aus was in allen-null check sequence".
Schrieb ich meine standard-Implementierung mit dem Algorithmus von Wikipedia in Python:
Poly wird die Polynom -, Nutzdaten, crc ist der seed-Wert und n die Anzahl der bits. Also In diesem Fall Polynom ist 29, crc 5 und n 4.
Müssen Sie möglicherweise die reverse nibble, um, je nachdem in welchem format Sie Ihre Daten erhalten. Auch das ist natürlich nicht die Umsetzung mit der Tabelle, nur für die Prüfung.
Das Saatgut wird einfach der erste Wert Ihres crc-Berechnung. Es ist üblich, eine nicht-null-Samen zu vermeiden, das crc-Ergebnis wird null bei allen null-Daten