eth_crc32_8.sv (2319B)
1 // autogenerated by crctool -poly=4c11db7 -crcsz=32 -dinsz=8 -reverse 2 3 module eth_crc32_8( 4 input clk, 5 input rst, 6 input en, 7 input [7:0]din, 8 output [31:0]crc 9 ); 10 11 reg [31:0]c; 12 reg [31:0]n; 13 14 wire [7:0]d = {din[0],din[1],din[2],din[3],din[4],din[5],din[6],din[7]}; 15 16 assign crc = { 17 c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7] 18 ,c[8],c[9],c[10],c[11],c[12],c[13],c[14],c[15] 19 ,c[16],c[17],c[18],c[19],c[20],c[21],c[22],c[23] 20 ,c[24],c[25],c[26],c[27],c[28],c[29],c[30],c[31] 21 }; 22 23 always_comb begin 24 n[0] = c[24]^c[30]^d[0]^d[6]; 25 n[1] = c[24]^c[25]^c[30]^c[31]^d[0]^d[1]^d[6]^d[7]; 26 n[2] = c[24]^c[25]^c[26]^c[30]^c[31]^d[0]^d[1]^d[2]^d[6]^d[7]; 27 n[3] = c[25]^c[26]^c[27]^c[31]^d[1]^d[2]^d[3]^d[7]; 28 n[4] = c[24]^c[26]^c[27]^c[28]^c[30]^d[0]^d[2]^d[3]^d[4]^d[6]; 29 n[5] = c[24]^c[25]^c[27]^c[28]^c[29]^c[30]^c[31]^d[0]^d[1]^d[3]^d[4]^d[5]^d[6]^d[7]; 30 n[6] = c[25]^c[26]^c[28]^c[29]^c[30]^c[31]^d[1]^d[2]^d[4]^d[5]^d[6]^d[7]; 31 n[7] = c[24]^c[26]^c[27]^c[29]^c[31]^d[0]^d[2]^d[3]^d[5]^d[7]; 32 n[8] = c[0]^c[24]^c[25]^c[27]^c[28]^d[0]^d[1]^d[3]^d[4]; 33 n[9] = c[1]^c[25]^c[26]^c[28]^c[29]^d[1]^d[2]^d[4]^d[5]; 34 n[10] = c[2]^c[24]^c[26]^c[27]^c[29]^d[0]^d[2]^d[3]^d[5]; 35 n[11] = c[3]^c[24]^c[25]^c[27]^c[28]^d[0]^d[1]^d[3]^d[4]; 36 n[12] = c[4]^c[24]^c[25]^c[26]^c[28]^c[29]^c[30]^d[0]^d[1]^d[2]^d[4]^d[5]^d[6]; 37 n[13] = c[5]^c[25]^c[26]^c[27]^c[29]^c[30]^c[31]^d[1]^d[2]^d[3]^d[5]^d[6]^d[7]; 38 n[14] = c[6]^c[26]^c[27]^c[28]^c[30]^c[31]^d[2]^d[3]^d[4]^d[6]^d[7]; 39 n[15] = c[7]^c[27]^c[28]^c[29]^c[31]^d[3]^d[4]^d[5]^d[7]; 40 n[16] = c[8]^c[24]^c[28]^c[29]^d[0]^d[4]^d[5]; 41 n[17] = c[9]^c[25]^c[29]^c[30]^d[1]^d[5]^d[6]; 42 n[18] = c[10]^c[26]^c[30]^c[31]^d[2]^d[6]^d[7]; 43 n[19] = c[11]^c[27]^c[31]^d[3]^d[7]; 44 n[20] = c[12]^c[28]^d[4]; 45 n[21] = c[13]^c[29]^d[5]; 46 n[22] = c[14]^c[24]^d[0]; 47 n[23] = c[15]^c[24]^c[25]^c[30]^d[0]^d[1]^d[6]; 48 n[24] = c[16]^c[25]^c[26]^c[31]^d[1]^d[2]^d[7]; 49 n[25] = c[17]^c[26]^c[27]^d[2]^d[3]; 50 n[26] = c[18]^c[24]^c[27]^c[28]^c[30]^d[0]^d[3]^d[4]^d[6]; 51 n[27] = c[19]^c[25]^c[28]^c[29]^c[31]^d[1]^d[4]^d[5]^d[7]; 52 n[28] = c[20]^c[26]^c[29]^c[30]^d[2]^d[5]^d[6]; 53 n[29] = c[21]^c[27]^c[30]^c[31]^d[3]^d[6]^d[7]; 54 n[30] = c[22]^c[28]^c[31]^d[4]^d[7]; 55 n[31] = c[23]^c[29]^d[5]; 56 end 57 58 always_ff @(posedge clk) begin 59 if (rst) begin 60 c <= 32'hFFFFFFFF; 61 end else if (en) begin 62 c <= n; 63 end 64 end 65 66 endmodule