4 crc-16 algorithm, 5 crc-16 algorithm – GE Industrial Solutions Entellisys 4.0 Integrator's Guide User Manual

Page 29

Advertising
background image

CRC-16 Algorithm

29

2

2.4 CRC-16 Algorithm

The CRC-16 algorithm essentially treats the entire data stream (data bits only; start, stop and
parity ignored) as one continuous binary number. This number is first shifted left 16 bits and
then divided by a characteristic polynomial (11000000000000101B). The 16-bit remainder of the
division is appended to the end of the packet, most significant byte first. The resulting packet
including CRC, when divided by the same polynomial at the receiver, will give a zero remainder if
no transmission errors have occurred. This algorithm requires the characteristic polynomial to
be reverse bit ordered. The most significant bit of the characteristic polynomial is dropped, since
it does not affect the value of the remainder.
CRC-16 ALGORITHM

ALGORITHM:

1. FFFF (hex) --> A
2. 0 --> i
3. 0 --> j
4. Di (+) Alow --> Alow
5. j + 1 --> j
6. shr (A)
7. Is there a carry? No: go to 8 Yes: G (+) A --> A and continue.
8. Is j = 8? No: go to 5 Yes: continue
9. i + 1 --> i
10. Is i = N? No: go to 3 Yes: continue
11. A --> CRC

SYMBOLS

-->

data transfer

A

16-bit working register

Alow

low order byte of A

Ahigh

high order byte of A

CRC

16-bit CRC-16 result

i,j

loop counters

(+)

logical EXCLUSIVE-OR operator

N

total number of data bytes

Di

i-th data byte (i = 0 to N-1)

G

16-bit characteristic polynomial = 1010000000000001 (binary) with
MSbit dropped and bit order reversed

shr (x)

right shift operator (th LSbit of x is shifted into a carry flag, a ‘0’ is
shifted into the MSbit of x, all other bits are shifted right one location)

Advertising