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.

Note

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

Warning

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.

3.2.3.1. --crc-type, --crc-poly

Type

text

Default

NO

Examples
--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-CASTAGNOLI

0x1EDC6F41

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-PROFIBUS

0x1DCF

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

3.2.3.2. --crc-size

Type

integer

Range

\(]0 \to \infty[\)

Examples

--crc-size 8

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

3.2.3.3. --crc-implem

Type

text

Allowed values

STD FAST INTER

Default

FAST

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.

3.2.3.4. References

Crc-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.

Crc-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.