Berechnung FCS(CRC) für HDLC-Rahmen
Habe ich Folgendes frame:
7e 01 00 00 01 00 18 ef 00 00 00 b5 20 c1 05 10 02 71 2e 1a c2 05 10 01 71 00 6e 87 02 00 01 42 71 2e 1a 01 96 27 be 27 54 17 3d b9 93 ac 7e
Wenn ich das richtig verstehe, dann ist es dieser Teil des Rahmens, auf dem der FCS wird berechnet:
010000010018ef000000b520c1051002712e1ac205100171006e8702000142712e1a019627be2754173db9
Ich habe versucht, die Eingabe dieser in eine Reihe von online-Rechner, aber ich kann nicht produzieren 0x93ac aus den oben genannten Daten.
http://www.lammertbies.nl/comm/info/crc-calculation.html mit input type hex.
Wie ist 0x93ac angekommen?
Dank,
Barry
InformationsquelleAutor Baz | 2011-11-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst CRC-Wert ist
0xac93
Mit diesem Rechner: http://www.zorc.breitbandkatze.de/crc.html
ffff
ffff
Geben Sie Ihre Sequenz als:
0xAC93
InformationsquelleAutor Ilya
Beantwortung eher für die anderen, die haben hier bei der Suche nach Beratung.
Der Schlüssel ist, was einige Punkte in der eng Verwandte ITU-T-Empfehlungen (z.B. Q. 921, online verfügbar seit geraumer Zeit schon) sagen:
1. das niedrigste bit übertragen wird (und damit erhalten) erste
Diese legacy-Verhalten ist im Gegensatz zum täglichen Leben übereinkommen, bei denen höchste Reihenfolge die Ziffern geschrieben werden, zuerst in der Reihenfolge zu Lesen, und alle generische online-Rechner und Bibliotheken führen die Berechnung mit der herkömmlichen Bestellung und optionale Einstellungen zu erleichtern, wird rückgängig gemacht.
Daher müssen Sie bitten, den online-Rechner
der gleichen Reihenfolge wie in der Nachricht selbst
Ganz vernünftig, einige Rechner bieten nur eine einzige gemeinsame Einstellung für beide.
Diesem Grund die Einstellungen "reverse data bytes" und "reverse CRC-Ergebnis vor dem Letzten XOR" empfohlen, in der vorherigen Antwort;
2. das Ergebnis der CRC-Berechnung muss bit-invertiert senden
Bit-inversion ist ein anderer name von "durch xor 0xffff...". Es ist ein Zweck in bit-Invertierung der CRC-Berechnung das Ergebnis, bevor Sie es als die Nachricht FCS (die letzten beiden bytes der Nachricht, die '93 ac' in deinem Beispiel).
Siehe Punkt 4 für details.
Diesen Gründen ist die Einstellung "letzter Wert ffff", deren name ist ziemlich irreführend, da es eigentlich ein Muster definiert, das für xor-verknüpft mit dem Ergebnis der Berechnung. Als solcher Betrieb erforderlich ist, durch mehrere CRC-Typen, nur das xor-Muster variieren von 0 (keine op) durch 0xfff... (vollständige inversion), generic Taschenrechner/Bibliotheken bieten, ist es für die Einfachheit der Nutzung.
3. die Berechnung muss enthalten-Verarbeitung von einem der führenden Abfolge von 0xffff
Diesem Grund der Punkt "Erster Wert ffff".
4. auf der Wareneingang (Prüfung) Seite, es wird empfohlen, schieben Sie die gesamte Nachricht, also auch der FCS, durch die CRC-Berechnung, und erwarten das Ergebnis zu 0x1d0f
Gibt es einige kluge Gedanke dahinter:
den inhärenten Eigenschaften des CRC-Algorithmus ist, dass
CRC( x.CRC(x) )
ist immer 0 (x steht für die original-Nachricht "und". " steht für die Verkettung).
denen die komplette Meldung über die Berechnung statt
Berechnung nur die Nachricht selbst, und den Vergleich mit dem FCS
separat empfangen, bedeutet viel einfacher Algorithmus (oder auch Schaltung)
auf der Empfängerseite.
allerdings ist es zu einfach zu machen, ein coding-Fehler verursacht Ergebnis 0 werden. Zum Glück, Dank der CRC-Algorithmus inhärenten Eigenschaften wieder,
CRC( x.(CRC(x))' )
ergibt sich ein konstanter Wert unabhängig von x und von 0 abweicht (zumindest für CRC-CCITT, die wir hier sprechen). Das "'" Zeichen steht für die bit-inversion, wie Sie in Punkt 2.
InformationsquelleAutor Pavel