English
Language : 

C8051F99X_10 Datasheet, PDF (170/322 Pages) Silicon Laboratories – Ultra Low Power, 8-2 kB Flash, Capacitive Sensing MCU
C8051F99x-C8051F98x
16. Cyclic Redundancy Check Unit (CRC0)
C8051F99x-C8051F98x devices include a cyclic redundancy check unit (CRC0) that can perform a CRC
using a 16-bit polynomial. CRC0 accepts a stream of 8-bit data written to the CRC0IN register. CRC0 posts
the 16-bit result to an internal register. The internal result register may be accessed indirectly using the
CRC0PNT bits and CRC0DAT register, as shown in Figure 16.1. CRC0 also has a bit reverse register for
quick data manipulation.
CRC0IN
8
8 Automatic CRC
Controller
Flash
Memory
CRC0SEL
CRC0INIT
CRC0VAL
CRC0PNT0
CRC0FLIP
Write
CRC Engine
16
RESULT
88
CRC0AUTO
CRC0CNT
2 to 1 MUX
CRC0FLIP
Read
8
CRC0DAT
Figure 16.1. CRC0 Block Diagram
16.1. CRC Algorithm
The C8051F99x-C8051F98x CRC unit generates a CRC result equivalent to the following algorithm:
1. XOR the input with the most-significant bits of the current CRC result. If this is the first iteration of the
CRC unit, the current CRC result will be the set initial value 
(0x00000000 or 0xFFFFFFFF).
2a. If the MSB of the CRC result is set, shift the CRC result and XOR the result with the selected
polynomial.
2b. If the MSB of the CRC result is not set, shift the CRC result.
Repeat Steps 2a/2b for the number of input bits (8). The algorithm is also described in the following exam-
ple.
170
Rev. 1.0