Hallo Leute,
ich habe bei OutputLogic.com einen VHDL-Code für die CRC-Berechnung in
einem Ethernet-MAC generiert. Eines würde mich mal brennend
interessieren.
Das Polynom wird irgendwie auf XOR-Gleichungen abgebildet.
Beispiel:
1 | -- polynomial: (0 1 2 4 5 7 8 10 11 12 16 22 23 26 32)
|
2 | lfsr_c(0) <= lfsr_q(24) xor lfsr_q(30) xor data_in(0) xor data_in(6);
|
3 | lfsr_c(1) <= lfsr_q(24) xor lfsr_q(25) xor lfsr_q(30) xor lfsr_q(31) xor data_in(0) xor data_in(1) xor data_in(6) xor data_in(7);
|
4 | lfsr_c(2) <= lfsr_q(24) xor lfsr_q(25) xor lfsr_q(26) xor lfsr_q(30) xor lfsr_q(31) xor data_in(0) xor data_in(1) xor data_in(2) xor data_in(6) xor data_in(7);
|
5 | lfsr_c(3) <= lfsr_q(25) xor lfsr_q(26) xor lfsr_q(27) xor lfsr_q(31) xor data_in(1) xor data_in(2) xor data_in(3) xor data_in(7);
|
6 | ...
|
Wie funktioniert das? Wie ergeben sich die XOR-Gleichungen aus dem
Polynom?
Beispiel:
1 | lfsr_c(0) <= lfsr_q(24) xor lfsr_q(30) xor data_in(0) xor data_in(6);
|
Wie stehen die Bitnummern 24, 30, 0 und 6 mit dem Polynom in
Zusammenhang?