×Jan-03-2024
Apple Inc is looking for a 4G/5G system engineer on mobility control. Based in California, USA (Bay Area or San Diego). .

CRC CalculationV15.9.0

Toolbox: CRC calculator
ParameterValue
CRCCoefficientsPolynomial
D24+D23+D18+D17+D14+D11+D10+D7+D6+D5+D4+D3+D+1
Input length
Input data
Parity bits100001010101100000001011

Explanation of the CRC calculation steps

  1. Line the input bits in a row, a0 at the left-most position and aA-1 at the right most position.
  2. Pad the input bits by L zeros to the right side. L + 1 is the length of the polynomial.
  3. Divide the padded bits with the coefficients of the polynomial. The remainder are the CRC bits. The division steps are listed in table below:
Polynomial coefficientsInput dataPadding
000000000000000000000000
Dividing results
1100001100100110011111011111101100000000000000000
100010111000000000000000
101101010100000000000000
110100101001100000000000
111101001110010110000000
011001111101101101000000
000000110001010011110000
100001010101100000001011

Denote the input bits to the CRC computation by a0, a1, a2, a3, ..., aA-1, and the parity bits by p0, p1, p2, p3, ..., pL-1, where A is the size of the input sequence and L is the number of parity bits. The parity bits are generated by one of the following cyclic generator polynomials:

  1. - gCRC24A(D)=[D24+D23+D18+D17+D14+D11+D10+D7+D6+D5+D4+D3+D1+1] for a CRC length L=24;
  2. - gCRC24B(D)=[D24+D23+D6+D5+D1+1] for a CRC length L=24;
  3. - gCRC24C(D)=[D24+D23+D21+D20+D17+D15+D13+D12+D8+D4+D2+D+1] for a CRC length L=24;
  4. - gCRC16(D)=[D16+D12+D5+1] for a CRC length L=16;
  5. - gCRC11(D)=[D11+D10+D9+D5+1] for a CRC length L=11;
  6. - gCRC6(D)=[D6+D5+1] for a CRC length L=6.

The encoding is performed in a systematic form, which means that in GF(2), the polynomial: a0DA+L-1+a1DA+L-2+...+aA-1DL+p0DL-1+p1DL-2+...+pL-2D1+pL-1 yields a remainder equal to 0 when divided by the corresponding CRC generator polynomial.

The bits after CRC attachment are denoted by b0, b1, b2, b3,..., bB-1 where B = A + L. The relation between ak and bk is:

bk = ak for k = 0,1,2,...,A-1

bk-A = ak for k = A, A+1, A+2, ..., A+L-1

Notes:

CRC is an error detecting code to detect accidental changes to raw data. Blocks of input data get a short check value attached, based on the remainder of a polynomial division of their contents. Receiver performs the same CRC calculation to detect data corruption. Specification of a CRC code requires definition of a generator polynomial. This polynomial becomes the divisor in a polynomial long division, which takes the input data as the dividend and in which the quotient is discarded and the remainder becomes the result.

Commonly used CRCs employ the Galois field of two elements, GF(2). The two elements are usually called 0 and 1, matching computer architecture.

A CRC is called an n-bit CRC when its check value is n bits long. For a given n, multiple CRCs are possible, each with a different polynomial. Such a polynomial has highest degree n, which means it has n + 1 terms. In other words, the polynomial has a length of n + 1.