Lepiej posługiwać się graficzną reprezentacją wielomianu.
![Obrazek](http://forum.atnel.pl/_obrazki/o/465_a15215f6ac69f761904b735164cc0968.gif)
Opis jest tutaj.
http://www.maximintegrated.com/app-note ... .mvp/id/27Nigdy nie zgłębiałem tego tematu, ale feedback to sprzężenie zwrotne. crc jest w blokach STAGE. Sygnał z ostatniej bramki wchodzi z lewej strony i przemieszcza się w
prawo od x0 do x8. Zatem
8th STAGE to najmłodszy bit
crc.
Kolejno w programie masz:
1. Operator ^ i na schemacie też masz bramkę EXOR, która wykonuje operacje na bajcie data i crc, ale przez &0x01 brany jest pod uwagę najmłodszy bit[0].
2. W zależności od wyniku powyższej operacji wykonujesz operację XOR pomiędzy crc i CRC8POLY=0x18=0b000
11000, która zmienia na przeciwne bity
3(
5th STAGE) i
4(
4th STAGE) crc, a pozostałe pozostawia bez zmian. Na schemacie też wyjście jest dołączone do jednych z wejść 2 pozostałych bramek EXOR. Jak widać ta lewa bramka operuje na
4th STAGE a prawa na
5th STAGE.
3. Przesunięcie w prawo >> zgodnie z obiegiem na schemacie (i wyzerowanie najstarszego bitu)
4. Jak feedback, czyli sprzężenie zwrotne jest równe 1 to ustaw najstarszy bit crc. Też zgodnie ze schematem, bo wyjście bramki dolaczone jest również do wejścia x0 bloku 1st STAGE.
5. Przesunięcie data w prawo, czyli w następnym kroku będzie brany pod uwagę kolejny bit, który po operacji przesunięcia w prawo >> jest pozycji 0.