CRC Minicore

Features

Family Support

Axcelerator

Description

The CRC Minicore is a universal Cyclic Redundancy Check (CRC) Polynomial generator that validates data frames and ensures data integrity during data transmission.

To meet different application requirements, the CRC Minicore provides many different configuration parameters. These parameters control data width, a register initialization value, and other CRC output data characteristics.

CRC Variations - There are industry standards for the polynomial value (we will use the variable 'Y' to denote the polynomial value), such as Kermit, CANBus, etc. This option merely allows you to specify which polynomial value you wish to use.

CRC XOROUT - After the calculation of (stream of bits)/(polynomial value) is performed, the remainder (aka CRC) is inserted into the data stream and sent to the receiver.

This CRC value can be inserted in a variety of ways:

Bit Order - In many cases, the CRC input data will be greater than a single bit. This option merely specifies which order the bits are processed. The reason is because some standards require a “reflection” of the bits during transmission (i.e. Reversing the bits), thereby for a byte-wide data, bit 7 or bit 0 could be seen first depending upon the transmission protocol used.

Byte Order - The reasoning for this follows above, except it extends it into bytes.  

Initial Reg. Value - This is associated with the polynomial you choose, the CRC algorithm uses this value when it starts the algorithm. Review the Standard CRC Generator Parameters table below; each standard contains an initial value. Specify this value according to the standard you have chosen.

Run/Shift Control - This option allows the CRC to function as a CRC function AND just a plain serial shifter. By enabling this option, the CRC module will contain an extra 1-bit input pin.  

When the input is high, the CRC function operates as a CRC generator. When the input is low, the CRC is serially shifted to the right.

For example, the CRC output XOR bit pattern parameter (XOROUT) controls inversion of the CRC value before injecting it into the data stream. Although the CRC Minicore generator provides seven commonly-used CRC polynomials, SmartGen also allows entry of an arbitrary polynomial. The polynomial bit size spans 1 to 64 inclusive..

XOROUT Configuration

XOROUT

Description

1

All bits are not inverted (000000000) xor CRC

2

All bits are inverted (..FFFFFFFF) xor CRC

3

Even bits are inverted, odd bits are not inverted (….10101010) xor CRC

4

Odd bits are inverted, even bits are not inverted (….01010101) xor CRC

 

Port Description

Port Name

width

Description

CLK

1

Clock port

rst_n

1

Asynchronous reset

init_n

1

Synchronous load CRC value

enable

1

CRC enable/disable control

data_in

Data_width

Input data word

CRC_in

Poly_size

CRC value to be load in

CRC_out

Poly_size

Generated CRC value

CRC Operation Control

rst_n

init_n

enable

shift_run

Description

0

x

x

x

Asynchronous reset, set to initial register value

1

0

x

x

Synchronous initialization

1

1

0

x

Disable CRC generation, register holds the current value

1

1

1

0

CRC free-running, zeroes shifted in

1

1

1

1

Normal CRC operation, generate CRC from input data

 

Standard CRC Generator Parameters - Description

Name

Poly_width

Poly_value (HEX)

Initial

xorout

CRC32

32

04C11DB7

FFFF..

FFFFFF….

CRC16/ARC

16

1005

FFFF...

FFFFF....

CCIT CRC16

16

1021

FFFF….

FFFFFF….

CANBUS

16

4599

FFFFF…

FFFFFF….

ATM CRC10

10

233

FFFFF…

FFFFFF….

ATM CRC8

8

7

FFFF….

FFFFF..….

kermit

16

8408

000000…

000000000