3.2.3. CRC parameters

The following parameters concern the Cyclic Redundancy Check (CRC) module. CRC bits can be concatenated to the information bits in order to help the decoding process to know if the decoded bit sequence is valid or not.


The CRC is only available for some specific decoders that have been designed to take advantage of the CRC like in [LST12][TLLeGal+16].


Using a CRC does not guarantee to know if the decoded frame is the good one, it can be a false positive. It is important to adapt the size of the CRC with the frame size and the targeted FER. --crc-type, --crc-poly

--crc-type "32-GZIP"
--crc-poly "0x04C11DB7" --crc-size 32

Select the CRC type you want to use among the predefined (or not) polynomials.

Table 3.1 shows a list of the predefined polynomials. If you want a specific polynomial that it is not available in the table you can directly put the polynomial in hexadecimal. In this case you have to specify explicitly the size of the polynomial with the --crc-size parameter. The type NO deactivates the CRC.

Table 3.1 List of the predefined CRC polynomials.
Type Polynomial Size
32-GZIP 0x04C11DB7 32
32-AIXM 0x814141AB 32
32-KOOPMAN 0x32583499 32
30-CDMA 0x2030B9C7 30
24-LTEA 0x864CFB 24
24-RADIX-64 0x864CFB 24
24-FLEXRAY 0x5D6DCB 24
24-5GA 0x864CFB 24
24-5GB 0x800063 24
24-5GC 0xB2B117 24
21-CAN 0x102899 21
17-CAN 0x1685B 17
16-IBM 0x8005 16
16-CCITT 0x1021 16
16-OPENSAFETY-B 0x755B 16
16-OPENSAFETY-A 0x5935 16
16-DNP 0x3D65 16
16-T10-DIF 0x8BB7 16
16-DECT 0x0589 16
16-CDMA2000 0xC867 16
16-ARINC 0xA02B 16
16-CHAKRAVARTY 0x2F15 16
16-5G 0x1023 16
15-MPT1327 0x6815 15
15-CAN 0x4599 15
14-DARC 0x0805 14
13-BBC 0x1CF5 13
12-CDMA2000 0xF13 12
12-TELECOM 0x80F 12
11-FLEXRAY 0x385 11
11-5G 0x621 11
10-CDMA2000 0x3D9 10
10-ATM 0x233 10
8-WCDMA 0x9B 8
8-SAE-J1850 0x1D 8
8-DARC 0x39 8
8-DALLAS 0x31 8
8-CCITT 0x07 8
8-AUTOSAR 0x2F 8
8-DVB-S2 0xD5 8
7-MVB 0x65 7
7-MMC 0x09 7
6-CDMA2000-A 0x27 6
6-CDMA2000-B 0x07 6
6-DARC 0x19 6
6-ITU 0x03 6
5-ITU 0x15 5
5-EPC 0x09 5
5-USB 0x05 5
4-ITU 0x3 4
1-PAR 0x1 1 --crc-size

Range:\(]0 \to \infty[\)
Examples:--crc-size 8

Size the CRC (divisor size in bits minus one), required if you selected an unknown CRC. --crc-implem

Allowed values:STD FAST INTER
Examples:--crc-implem FAST

Select the CRC implementation you want to use.

Description of the allowed values:

Value Description
STD The standard implementation is generic and support any size of CRCs. On the other hand the throughput is limited.
FAST This implementation is much faster than the standard one. This speedup is achieved thanks to the bit packing technique: up to 32 bits can be computed in parallel. This implementation does not support polynomials higher than 32 bits.
INTER The inter-frame implementation should not be used in general cases. It allow to compute the CRC on many frames in parallel that have been reordered. References

[LST12]B. Li, H. Shen, and D. Tse. An adaptive successive cancellation list decoder for polar codes with cyclic redundancy check. IEEE Communications Letters (COMML), 16(12):2044–2047, December 2012. doi:10.1109/LCOMM.2012.111612.121898.
[TLLeGal+16]T. Tonnellier, C. Leroux, B. Le Gal, B. Gadat, C. Jégo, and N. Van Wambeke. Lowering the error floor of turbo codes with CRC verification. IEEE Wireless Communications Letters (WCL), 5(4):404–407, August 2016. doi:10.1109/LWC.2016.2571283.