English
Language : 

PIC24F08KA102-I Datasheet, PDF (167/278 Pages) Microchip Technology – 20/28-Pin General Purpose, 16-Bit Flash Microcontrollers with nanoWatt XLP Technology
PIC24F16KA102 FAMILY
20.0 PROGRAMMABLE CYCLIC
REDUNDANCY CHECK (CRC)
GENERATOR
Note:
This data sheet summarizes the features of
this group of PIC24F devices. It is not
intended to be a comprehensive reference
source. For more information on Program-
mable Cyclic Redundancy Check, refer to
the “PIC24F Family Reference Manual”,
Section 30. “Programmable Cyclic
Redundancy Check (CRC)” (DS39714).
The programmable Cyclic Redundancy Check (CRC)
module in PIC24F devices is a software-configurable
CRC checksum generator. The CRC algorithm treats a
message as a binary bit stream and divides it by a fixed
binary number.
The remainder from this division is considered the
checksum. As in division, the CRC calculation is also
an iterative process. The only difference is that these
operations are done on modulo arithmetic based on
mod2. For example, division is replaced with the XOR
operation (i.e., subtraction without carry). The CRC
algorithm uses the term, polynomial, to perform all of
its calculations.
The divisor, dividend and remainder that are
represented by numbers are termed as polynomials
with binary coefficients.
FIGURE 20-1:
CRC SHIFTER DETAILS
The programmable CRC generator offers the following
features:
• User-programmable polynomial CRC equation
• Interrupt output
• Data FIFO
The module implements a software-configurable CRC
generator. The terms of the polynomial and its length
can be programmed using the CRCXOR (X<15:1>) bits
and the CRCCON (PLEN<3:0>) bits, respectively.
Consider the CRC equation:
EQUATION 20-1: CRC
x16 + x12 + x5 + 1
To program this polynomial into the CRC generator, the
CRC register bits should be set as provided in
Table 20-1.
TABLE 20-1: EXAMPLE CRC SETUP
Bit Name
Bit Value
PLEN<3:0>
1111
X<15:1>
000100000010000
The value of X<15:1>, the 12th bit and the 5th bit are set
to ‘1’, as required by the equation. The 0 bit required by
the equation is always XORed. For a 16-bit polynomial,
the 16th bit is also always assumed to be XORed;
therefore, the X<15:1> bits do not have the 0 bit or the
16th bit.
The topology of a standard CRC generator is displayed
in Figure 20-2.
PLEN<3:0>
0
Hold
XOR
DOUT
OUT
IN
BIT 0
clk
1
2
CRC Shift Register
X1
Hold
X2
Hold
0
OUT
IN
BIT 1
1
clk
0
OUT
IN
BIT 2
1
clk
15
X3 X15
Hold
0
0
OUT
IN
1
1
BIT 15
clk
CRC Read Bus
CRC Write Bus
 2008-2011 Microchip Technology Inc.
DS39927C-page 167