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