David's Online CRC Unroller

This web page computes the equations for the next state of a CRC circuit that takes in multiple bits of data per clock and it generates the verilog code for the equations. You provide the CRC length, the polynomial and the number of databits. It defaults to the 32 bit CCITT CRC over 32 bits of data.

Generator Polynomial (in Hex):
CRC Size (in bits):
Input databits (in bits):


// Equations for 32 bit CRC taking in 32 databits per clock.
// See Polynomial_representations_of_cyclic_redundancy_checks for standard CRC polynomials.
// Generator Polynomial 0x4c11db7: X^32 + X^26 + X^23 + X^22 + X^16 + X^12 + X^11 + X^10 + X^8 + X^7 + X^5 + X^4 + X^2 + X + 1
// x[31:0] are the state bits. d[31:0] are the input data bits
x[0] <= x[0] ^ x[6] ^ x[9] ^ x[10] ^ x[12] ^ x[16] ^ x[24] ^ x[25] ^ x[26] ^ x[28] ^ x[29] ^ x[30] ^ x[31] ^ d[0] ^ d[1] ^ d[3] ^ d[4] ^ d[6] ^ d[7] ^ d[9] ^ d[10] ^ d[11] ^ d[15] ^ d[21] ^ d[22] ^ d[25];
x[1] <= x[0] ^ x[1] ^ x[6] ^ x[7] ^ x[9] ^ x[11] ^ x[12] ^ x[13] ^ x[16] ^ x[17] ^ x[24] ^ x[27] ^ x[28] ^ d[0] ^ d[2] ^ d[3] ^ d[5] ^ d[6] ^ d[8] ^ d[9] ^ d[10] ^ d[14] ^ d[20] ^ d[21] ^ d[24] ^ d[31];
x[2] <= x[0] ^ x[1] ^ x[2] ^ x[6] ^ x[7] ^ x[8] ^ x[9] ^ x[13] ^ x[14] ^ x[16] ^ x[17] ^ x[18] ^ x[24] ^ x[26] ^ x[30] ^ x[31] ^ d[1] ^ d[2] ^ d[4] ^ d[5] ^ d[7] ^ d[8] ^ d[9] ^ d[13] ^ d[19] ^ d[20] ^ d[23] ^ d[30] ^ d[31];
x[3] <= x[1] ^ x[2] ^ x[3] ^ x[7] ^ x[8] ^ x[9] ^ x[10] ^ x[14] ^ x[15] ^ x[17] ^ x[18] ^ x[19] ^ x[25] ^ x[27] ^ x[31] ^ d[0] ^ d[1] ^ d[3] ^ d[4] ^ d[6] ^ d[7] ^ d[8] ^ d[12] ^ d[18] ^ d[19] ^ d[22] ^ d[29] ^ d[30];
x[4] <= x[0] ^ x[2] ^ x[3] ^ x[4] ^ x[6] ^ x[8] ^ x[11] ^ x[12] ^ x[15] ^ x[18] ^ x[19] ^ x[20] ^ x[24] ^ x[25] ^ x[29] ^ x[30] ^ x[31] ^ d[0] ^ d[2] ^ d[3] ^ d[5] ^ d[6] ^ d[7] ^ d[11] ^ d[17] ^ d[18] ^ d[21] ^ d[28] ^ d[29] ^ d[31];
x[5] <= x[0] ^ x[1] ^ x[3] ^ x[4] ^ x[5] ^ x[6] ^ x[7] ^ x[10] ^ x[13] ^ x[19] ^ x[20] ^ x[21] ^ x[24] ^ x[28] ^ x[29] ^ d[1] ^ d[2] ^ d[4] ^ d[5] ^ d[6] ^ d[10] ^ d[16] ^ d[17] ^ d[20] ^ d[27] ^ d[28] ^ d[30] ^ d[31];
x[6] <= x[1] ^ x[2] ^ x[4] ^ x[5] ^ x[6] ^ x[7] ^ x[8] ^ x[11] ^ x[14] ^ x[20] ^ x[21] ^ x[22] ^ x[25] ^ x[29] ^ x[30] ^ d[0] ^ d[1] ^ d[3] ^ d[4] ^ d[5] ^ d[9] ^ d[15] ^ d[16] ^ d[19] ^ d[26] ^ d[27] ^ d[29] ^ d[30];
x[7] <= x[0] ^ x[2] ^ x[3] ^ x[5] ^ x[7] ^ x[8] ^ x[10] ^ x[15] ^ x[16] ^ x[21] ^ x[22] ^ x[23] ^ x[24] ^ x[25] ^ x[28] ^ x[29] ^ d[0] ^ d[2] ^ d[3] ^ d[4] ^ d[8] ^ d[14] ^ d[15] ^ d[18] ^ d[25] ^ d[26] ^ d[28] ^ d[29] ^ d[31];
x[8] <= x[0] ^ x[1] ^ x[3] ^ x[4] ^ x[8] ^ x[10] ^ x[11] ^ x[12] ^ x[17] ^ x[22] ^ x[23] ^ x[28] ^ x[31] ^ d[1] ^ d[2] ^ d[3] ^ d[7] ^ d[13] ^ d[14] ^ d[17] ^ d[24] ^ d[25] ^ d[27] ^ d[28] ^ d[30] ^ d[31];
x[9] <= x[1] ^ x[2] ^ x[4] ^ x[5] ^ x[9] ^ x[11] ^ x[12] ^ x[13] ^ x[18] ^ x[23] ^ x[24] ^ x[29] ^ d[0] ^ d[1] ^ d[2] ^ d[6] ^ d[12] ^ d[13] ^ d[16] ^ d[23] ^ d[24] ^ d[26] ^ d[27] ^ d[29] ^ d[30];
x[10] <= x[0] ^ x[2] ^ x[3] ^ x[5] ^ x[9] ^ x[13] ^ x[14] ^ x[16] ^ x[19] ^ x[26] ^ x[28] ^ x[29] ^ x[31] ^ d[0] ^ d[1] ^ d[5] ^ d[11] ^ d[12] ^ d[15] ^ d[22] ^ d[23] ^ d[25] ^ d[26] ^ d[28] ^ d[29] ^ d[31];
x[11] <= x[0] ^ x[1] ^ x[3] ^ x[4] ^ x[9] ^ x[12] ^ x[14] ^ x[15] ^ x[16] ^ x[17] ^ x[20] ^ x[24] ^ x[25] ^ x[26] ^ x[27] ^ x[28] ^ x[31] ^ d[0] ^ d[4] ^ d[10] ^ d[11] ^ d[14] ^ d[21] ^ d[22] ^ d[24] ^ d[25] ^ d[27] ^ d[28] ^ d[30] ^ d[31];
x[12] <= x[0] ^ x[1] ^ x[2] ^ x[4] ^ x[5] ^ x[6] ^ x[9] ^ x[12] ^ x[13] ^ x[15] ^ x[17] ^ x[18] ^ x[21] ^ x[24] ^ x[27] ^ x[30] ^ x[31] ^ d[3] ^ d[9] ^ d[10] ^ d[13] ^ d[20] ^ d[21] ^ d[23] ^ d[24] ^ d[26] ^ d[27] ^ d[29] ^ d[30] ^ d[31];
x[13] <= x[1] ^ x[2] ^ x[3] ^ x[5] ^ x[6] ^ x[7] ^ x[10] ^ x[13] ^ x[14] ^ x[16] ^ x[18] ^ x[19] ^ x[22] ^ x[25] ^ x[28] ^ x[31] ^ d[2] ^ d[8] ^ d[9] ^ d[12] ^ d[19] ^ d[20] ^ d[22] ^ d[23] ^ d[25] ^ d[26] ^ d[28] ^ d[29] ^ d[30];
x[14] <= x[2] ^ x[3] ^ x[4] ^ x[6] ^ x[7] ^ x[8] ^ x[11] ^ x[14] ^ x[15] ^ x[17] ^ x[19] ^ x[20] ^ x[23] ^ x[26] ^ x[29] ^ d[1] ^ d[7] ^ d[8] ^ d[11] ^ d[18] ^ d[19] ^ d[21] ^ d[22] ^ d[24] ^ d[25] ^ d[27] ^ d[28] ^ d[29];
x[15] <= x[3] ^ x[4] ^ x[5] ^ x[7] ^ x[8] ^ x[9] ^ x[12] ^ x[15] ^ x[16] ^ x[18] ^ x[20] ^ x[21] ^ x[24] ^ x[27] ^ x[30] ^ d[0] ^ d[6] ^ d[7] ^ d[10] ^ d[17] ^ d[18] ^ d[20] ^ d[21] ^ d[23] ^ d[24] ^ d[26] ^ d[27] ^ d[28];
x[16] <= x[0] ^ x[4] ^ x[5] ^ x[8] ^ x[12] ^ x[13] ^ x[17] ^ x[19] ^ x[21] ^ x[22] ^ x[24] ^ x[26] ^ x[29] ^ x[30] ^ d[5] ^ d[6] ^ d[9] ^ d[16] ^ d[17] ^ d[19] ^ d[20] ^ d[22] ^ d[23] ^ d[25] ^ d[26] ^ d[27] ^ d[31];
x[17] <= x[1] ^ x[5] ^ x[6] ^ x[9] ^ x[13] ^ x[14] ^ x[18] ^ x[20] ^ x[22] ^ x[23] ^ x[25] ^ x[27] ^ x[30] ^ x[31] ^ d[4] ^ d[5] ^ d[8] ^ d[15] ^ d[16] ^ d[18] ^ d[19] ^ d[21] ^ d[22] ^ d[24] ^ d[25] ^ d[26] ^ d[30];
x[18] <= x[2] ^ x[6] ^ x[7] ^ x[10] ^ x[14] ^ x[15] ^ x[19] ^ x[21] ^ x[23] ^ x[24] ^ x[26] ^ x[28] ^ x[31] ^ d[3] ^ d[4] ^ d[7] ^ d[14] ^ d[15] ^ d[17] ^ d[18] ^ d[20] ^ d[21] ^ d[23] ^ d[24] ^ d[25] ^ d[29];
x[19] <= x[3] ^ x[7] ^ x[8] ^ x[11] ^ x[15] ^ x[16] ^ x[20] ^ x[22] ^ x[24] ^ x[25] ^ x[27] ^ x[29] ^ d[2] ^ d[3] ^ d[6] ^ d[13] ^ d[14] ^ d[16] ^ d[17] ^ d[19] ^ d[20] ^ d[22] ^ d[23] ^ d[24] ^ d[28];
x[20] <= x[4] ^ x[8] ^ x[9] ^ x[12] ^ x[16] ^ x[17] ^ x[21] ^ x[23] ^ x[25] ^ x[26] ^ x[28] ^ x[30] ^ d[1] ^ d[2] ^ d[5] ^ d[12] ^ d[13] ^ d[15] ^ d[16] ^ d[18] ^ d[19] ^ d[21] ^ d[22] ^ d[23] ^ d[27];
x[21] <= x[5] ^ x[9] ^ x[10] ^ x[13] ^ x[17] ^ x[18] ^ x[22] ^ x[24] ^ x[26] ^ x[27] ^ x[29] ^ x[31] ^ d[0] ^ d[1] ^ d[4] ^ d[11] ^ d[12] ^ d[14] ^ d[15] ^ d[17] ^ d[18] ^ d[20] ^ d[21] ^ d[22] ^ d[26];
x[22] <= x[0] ^ x[9] ^ x[11] ^ x[12] ^ x[14] ^ x[16] ^ x[18] ^ x[19] ^ x[23] ^ x[24] ^ x[26] ^ x[27] ^ x[29] ^ x[31] ^ d[0] ^ d[3] ^ d[10] ^ d[11] ^ d[13] ^ d[14] ^ d[16] ^ d[17] ^ d[19] ^ d[20] ^ d[21] ^ d[25] ^ d[31];
x[23] <= x[0] ^ x[1] ^ x[6] ^ x[9] ^ x[13] ^ x[15] ^ x[16] ^ x[17] ^ x[19] ^ x[20] ^ x[26] ^ x[27] ^ x[29] ^ x[31] ^ d[2] ^ d[9] ^ d[10] ^ d[12] ^ d[13] ^ d[15] ^ d[16] ^ d[18] ^ d[19] ^ d[20] ^ d[24] ^ d[30] ^ d[31];
x[24] <= x[1] ^ x[2] ^ x[7] ^ x[10] ^ x[14] ^ x[16] ^ x[17] ^ x[18] ^ x[20] ^ x[21] ^ x[27] ^ x[28] ^ x[30] ^ d[1] ^ d[8] ^ d[9] ^ d[11] ^ d[12] ^ d[14] ^ d[15] ^ d[17] ^ d[18] ^ d[19] ^ d[23] ^ d[29] ^ d[30];
x[25] <= x[2] ^ x[3] ^ x[8] ^ x[11] ^ x[15] ^ x[17] ^ x[18] ^ x[19] ^ x[21] ^ x[22] ^ x[28] ^ x[29] ^ x[31] ^ d[0] ^ d[7] ^ d[8] ^ d[10] ^ d[11] ^ d[13] ^ d[14] ^ d[16] ^ d[17] ^ d[18] ^ d[22] ^ d[28] ^ d[29];
x[26] <= x[0] ^ x[3] ^ x[4] ^ x[6] ^ x[10] ^ x[18] ^ x[19] ^ x[20] ^ x[22] ^ x[23] ^ x[24] ^ x[25] ^ x[26] ^ x[28] ^ x[31] ^ d[6] ^ d[7] ^ d[9] ^ d[10] ^ d[12] ^ d[13] ^ d[15] ^ d[16] ^ d[17] ^ d[21] ^ d[27] ^ d[28] ^ d[31];
x[27] <= x[1] ^ x[4] ^ x[5] ^ x[7] ^ x[11] ^ x[19] ^ x[20] ^ x[21] ^ x[23] ^ x[24] ^ x[25] ^ x[26] ^ x[27] ^ x[29] ^ d[5] ^ d[6] ^ d[8] ^ d[9] ^ d[11] ^ d[12] ^ d[14] ^ d[15] ^ d[16] ^ d[20] ^ d[26] ^ d[27] ^ d[30];
x[28] <= x[2] ^ x[5] ^ x[6] ^ x[8] ^ x[12] ^ x[20] ^ x[21] ^ x[22] ^ x[24] ^ x[25] ^ x[26] ^ x[27] ^ x[28] ^ x[30] ^ d[4] ^ d[5] ^ d[7] ^ d[8] ^ d[10] ^ d[11] ^ d[13] ^ d[14] ^ d[15] ^ d[19] ^ d[25] ^ d[26] ^ d[29];
x[29] <= x[3] ^ x[6] ^ x[7] ^ x[9] ^ x[13] ^ x[21] ^ x[22] ^ x[23] ^ x[25] ^ x[26] ^ x[27] ^ x[28] ^ x[29] ^ x[31] ^ d[3] ^ d[4] ^ d[6] ^ d[7] ^ d[9] ^ d[10] ^ d[12] ^ d[13] ^ d[14] ^ d[18] ^ d[24] ^ d[25] ^ d[28];
x[30] <= x[4] ^ x[7] ^ x[8] ^ x[10] ^ x[14] ^ x[22] ^ x[23] ^ x[24] ^ x[26] ^ x[27] ^ x[28] ^ x[29] ^ x[30] ^ d[2] ^ d[3] ^ d[5] ^ d[6] ^ d[8] ^ d[9] ^ d[11] ^ d[12] ^ d[13] ^ d[17] ^ d[23] ^ d[24] ^ d[27];
x[31] <= x[5] ^ x[8] ^ x[9] ^ x[11] ^ x[15] ^ x[23] ^ x[24] ^ x[25] ^ x[27] ^ x[28] ^ x[29] ^ x[30] ^ x[31] ^ d[1] ^ d[2] ^ d[4] ^ d[5] ^ d[7] ^ d[8] ^ d[10] ^ d[11] ^ d[12] ^ d[16] ^ d[22] ^ d[23] ^ d[26];

Home
Comments to David