crc32_dat64.v

来自「本電子檔為 verilog cookbook,包含了通訊,影像,DSP等重要常用」· Verilog 代码 · 共 688 行 · 第 1/3 页

V
688
字号
        d19 ^ c0 ^ c30 ^ d6 ^ d62 ^ d55 ^ d10 ^ c21 ^ d18 ^ d25 ^ 
        c18 ^ c28 ^ d2 ^ d42 ^ d47 ^ d22 ^ d16;  // 46 ins 1 outs

    assign x12 = d4 ^ d59 ^ d63 ^ d9 ^ c24 ^ c25 ^ c14 ^ c20 ^ d12 ^ 
        d51 ^ c21 ^ d50 ^ d47 ^ d41 ^ d57 ^ d5 ^ d31 ^ d24 ^ c31 ^ 
        d52 ^ c27 ^ d0 ^ d18 ^ c22 ^ d2 ^ c18 ^ c9 ^ c15 ^ c19 ^ 
        d17 ^ d42 ^ d46 ^ c17 ^ d13 ^ d49 ^ d1 ^ d61 ^ d27 ^ d15 ^ 
        d56 ^ d54 ^ d30 ^ d6 ^ d21 ^ c10 ^ d53 ^ c29;  // 47 ins 1 outs

    assign x11 = d15 ^ d28 ^ d58 ^ c25 ^ c18 ^ c19 ^ d14 ^ d36 ^ d40 ^ 
        d59 ^ d33 ^ c16 ^ d41 ^ d26 ^ c4 ^ c11 ^ d43 ^ d16 ^ d1 ^ 
        d47 ^ d27 ^ d50 ^ c27 ^ c9 ^ c13 ^ c24 ^ d56 ^ d54 ^ d48 ^ 
        d51 ^ c26 ^ d57 ^ c1 ^ c8 ^ d0 ^ d45 ^ d3 ^ d24 ^ c12 ^ 
        d17 ^ c23 ^ d25 ^ d9 ^ d12 ^ d31 ^ c22 ^ c15 ^ d44 ^ d4 ^ 
        d55 ^ d20;  // 51 ins 1 outs

    assign x10 = c1 ^ c24 ^ d3 ^ d52 ^ d35 ^ d36 ^ d55 ^ d31 ^ d16 ^ 
        c4 ^ d26 ^ d29 ^ d32 ^ d14 ^ c8 ^ c0 ^ c10 ^ d2 ^ d42 ^ 
        d63 ^ c23 ^ c30 ^ c7 ^ d60 ^ c26 ^ d0 ^ d28 ^ d50 ^ c31 ^ 
        d40 ^ d19 ^ d59 ^ c18 ^ c28 ^ c20 ^ d9 ^ c27 ^ d58 ^ d5 ^ 
        d62 ^ d33 ^ d13 ^ d56 ^ d39 ^ c3;  // 45 ins 1 outs

    assign x9 = d32 ^ d29 ^ c1 ^ d51 ^ c29 ^ d34 ^ d11 ^ c2 ^ d52 ^ 
        d33 ^ c23 ^ d58 ^ c28 ^ d41 ^ d60 ^ d61 ^ d23 ^ d13 ^ d24 ^ 
        d9 ^ c3 ^ c26 ^ c11 ^ d1 ^ d5 ^ d18 ^ d47 ^ d12 ^ c19 ^ 
        d2 ^ c9 ^ d43 ^ c20 ^ c12 ^ c0 ^ d44 ^ d36 ^ c15 ^ d46 ^ 
        d55 ^ c4 ^ c6 ^ c14 ^ d35 ^ c21 ^ c7 ^ d39 ^ d38 ^ d53 ^ 
        d4;  // 50 ins 1 outs

    assign x8 = d10 ^ d45 ^ c13 ^ c1 ^ d51 ^ d34 ^ c0 ^ d60 ^ d37 ^ 
        c2 ^ d33 ^ c8 ^ c5 ^ d8 ^ d57 ^ d12 ^ c31 ^ d0 ^ d54 ^ 
        d35 ^ d32 ^ d23 ^ d17 ^ d63 ^ d50 ^ d28 ^ c10 ^ c11 ^ c18 ^ 
        d42 ^ c19 ^ c27 ^ d59 ^ d11 ^ c25 ^ d31 ^ c6 ^ d40 ^ d1 ^ 
        c22 ^ d4 ^ d22 ^ d52 ^ d43 ^ c20 ^ c28 ^ d3 ^ d46 ^ d38 ^ 
        c3 ^ c14;  // 51 ins 1 outs

    assign x7 = d47 ^ c5 ^ d24 ^ d28 ^ d60 ^ c0 ^ d29 ^ c25 ^ c24 ^ 
        c20 ^ c19 ^ d22 ^ d7 ^ c13 ^ d2 ^ d54 ^ d3 ^ c11 ^ d41 ^ 
        d56 ^ d37 ^ d57 ^ d25 ^ c18 ^ c10 ^ d45 ^ d51 ^ c22 ^ d43 ^ 
        d46 ^ d23 ^ c7 ^ c2 ^ d16 ^ c9 ^ d10 ^ d15 ^ d39 ^ d42 ^ 
        d58 ^ d21 ^ d5 ^ c15 ^ c26 ^ d0 ^ d32 ^ d50 ^ d52 ^ d8 ^ 
        d34 ^ c28 ^ c14;  // 52 ins 1 outs

    assign x6 = d11 ^ d30 ^ c18 ^ c28 ^ c9 ^ d29 ^ d41 ^ c22 ^ d14 ^ 
        d54 ^ c6 ^ d8 ^ d7 ^ d55 ^ d21 ^ d51 ^ c13 ^ d6 ^ d50 ^ 
        c24 ^ d60 ^ d25 ^ d52 ^ d42 ^ d40 ^ d56 ^ c15 ^ d2 ^ d5 ^ 
        d45 ^ d1 ^ d47 ^ c23 ^ d4 ^ d20 ^ d43 ^ c11 ^ c20 ^ c19 ^ 
        d38 ^ c30 ^ c8 ^ d62 ^ c10 ^ d22;  // 45 ins 1 outs

    assign x5 = d53 ^ d10 ^ d24 ^ d50 ^ c14 ^ d59 ^ c29 ^ d51 ^ d20 ^ 
        c12 ^ c31 ^ c5 ^ d5 ^ c23 ^ d0 ^ d42 ^ d54 ^ d44 ^ c21 ^ 
        d29 ^ d41 ^ d37 ^ d4 ^ c27 ^ c17 ^ c7 ^ c19 ^ d46 ^ d13 ^ 
        c22 ^ d61 ^ d21 ^ d7 ^ d49 ^ d39 ^ d1 ^ c9 ^ d55 ^ c10 ^ 
        d19 ^ d3 ^ d6 ^ c18 ^ d63 ^ d40 ^ d28 ^ c8;  // 47 ins 1 outs

    assign x4 = c1 ^ d11 ^ d19 ^ d33 ^ d18 ^ d50 ^ d48 ^ c26 ^ c7 ^ 
        d29 ^ d58 ^ d39 ^ c31 ^ c8 ^ d6 ^ d46 ^ d0 ^ d4 ^ d40 ^ 
        c15 ^ d8 ^ d2 ^ c14 ^ d3 ^ d15 ^ c18 ^ d30 ^ c6 ^ d12 ^ 
        d25 ^ c13 ^ d31 ^ d45 ^ d59 ^ d57 ^ c9 ^ d24 ^ c25 ^ d47 ^ 
        d41 ^ c12 ^ c16 ^ d63 ^ d44 ^ d20 ^ c27 ^ d38;  // 47 ins 1 outs

    assign x3 = c22 ^ d39 ^ d38 ^ c20 ^ d14 ^ d58 ^ c1 ^ d32 ^ d3 ^ 
        d52 ^ d40 ^ d17 ^ c8 ^ d8 ^ c21 ^ d59 ^ d9 ^ c24 ^ c6 ^ 
        d45 ^ d25 ^ d27 ^ c26 ^ d31 ^ d54 ^ d19 ^ d1 ^ d36 ^ c5 ^ 
        d60 ^ d18 ^ d2 ^ d7 ^ c4 ^ d15 ^ d33 ^ c0 ^ c28 ^ d53 ^ 
        c13 ^ c27 ^ d56 ^ d37 ^ c7 ^ d10;  // 45 ins 1 outs

    assign x2 = d0 ^ d9 ^ d24 ^ d37 ^ c27 ^ c5 ^ d58 ^ d32 ^ c12 ^ 
        c25 ^ c23 ^ d57 ^ d17 ^ d31 ^ d35 ^ c21 ^ d13 ^ d59 ^ d1 ^ 
        d44 ^ d26 ^ d2 ^ d18 ^ c3 ^ d30 ^ d8 ^ d55 ^ c0 ^ d51 ^ 
        d16 ^ d52 ^ d6 ^ d39 ^ c7 ^ d7 ^ d53 ^ c6 ^ c4 ^ d36 ^ 
        c26 ^ d38 ^ c20 ^ d14 ^ c19;  // 44 ins 1 outs

    assign x1 = d44 ^ d47 ^ d12 ^ d58 ^ d0 ^ c26 ^ d16 ^ c2 ^ d53 ^ 
        d56 ^ d27 ^ d63 ^ d24 ^ d28 ^ d1 ^ d49 ^ c27 ^ d34 ^ c6 ^ 
        d59 ^ d35 ^ d33 ^ d7 ^ d6 ^ c15 ^ d13 ^ c17 ^ d17 ^ c21 ^ 
        c12 ^ d50 ^ d60 ^ c1 ^ d51 ^ c31 ^ c14 ^ c3 ^ d11 ^ c24 ^ 
        c18 ^ c28 ^ d62 ^ c30 ^ d38 ^ d46 ^ c19 ^ d9 ^ c5 ^ d37;  // 49 ins 1 outs

    assign x0 = c0 ^ d55 ^ d44 ^ d47 ^ c5 ^ c15 ^ c22 ^ d31 ^ d12 ^ 
        d58 ^ d37 ^ d9 ^ d28 ^ d63 ^ c16 ^ d10 ^ d25 ^ c23 ^ c12 ^ 
        d24 ^ d45 ^ d48 ^ c28 ^ c18 ^ c31 ^ d60 ^ c21 ^ d34 ^ c13 ^ 
        d29 ^ d26 ^ c29 ^ d30 ^ d50 ^ d32 ^ d61 ^ d0 ^ c26 ^ d16 ^ 
        c2 ^ d53 ^ d6 ^ d54;  // 43 ins 1 outs

endmodule

////////////////////////////////////////////////////////////////
// Depth optimal factored version
////////////////////////////////////////////////////////////////

module crc32_dat64_factor (crc_in,dat_in,crc_out);
input [31:0] crc_in;
input [63:0] dat_in;
output [31:0] crc_out;

wire [31:0] crc_out;

wire x767, x766, x765, x764, x763, x762, x761, 
       x760, x759, x758, x757, x756, x755, x754, x753, 
       x752, x751, x750, x749, x748, x747, x746, x745, 
       x744, x743, x742, x741, x740, x739, x738, x737, 
       x736, x735, x734, x733, x732, x731, x730, x729, 
       x728, x727, x726, x725, x724, x723, x722, x721, 
       x720, x719, x718, x717, x716, x715, x714, x713, 
       x712, x711, x710, x709, x708, x707, x706, x705, 
       x704, x703, x702, x701, x700, x699, x698, x697, 
       x696, x695, x694, x693, x692, x691, x690, x689, 
       x688, x687, x686, x685, x684, x683, x682, x681, 
       x680, x679, x678, x677, x676, x675, x674, x673, 
       x672, x671, x670, x669, x668, x667, x666, x665, 
       x664, x663, x662, x661, x660, x659, x658, x657, 
       x656, x655, x654, x653, x652, x651, x650, x649, 
       x648, x647, x646, x645, x644, x31, x30, x29, 
       x28, x27, x26, x25, x24, x23, x22, x21, 
       x20, x19, x18, x17, x16, x15, x14, x13, 
       x12, x11, x10, x9, x8, x7, x6, x5, 
       x4, x3, x2, x1, x0;

assign crc_out = {x31,x30,x29,x28,x27,x26,x25,x24,x23,x22,x21,x20,x19,x18,x17,
        x16,x15,x14,x13,x12,x11,x10,x9,x8,x7,x6,x5,x4,x3,x2,x1,
        x0};

wire d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,
    d15,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,
    d31,d32,d33,d34,d35,d36,d37,d38,d39,d40,d41,d42,d43,d44,d45,d46,
    d47,d48,d49,d50,d51,d52,d53,d54,d55,d56,d57,d58,d59,d60,d61,d62,
    d63;

assign { d63,d62,d61,d60,d59,d58,d57,d56,d55,d54,d53,d52,d51,d50,d49,
        d48,d47,d46,d45,d44,d43,d42,d41,d40,d39,d38,d37,d36,d35,d34,d33,
        d32,d31,d30,d29,d28,d27,d26,d25,d24,d23,d22,d21,d20,d19,d18,d17,
        d16,d15,d14,d13,d12,d11,d10,d9,d8,d7,d6,d5,d4,d3,d2,d1,
        d0} = dat_in [63:0];

wire c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,
    c15,c16,c17,c18,c19,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c30,
    c31;

assign { c31,c30,c29,c28,c27,c26,c25,c24,c23,c22,c21,c20,c19,c18,c17,
        c16,c15,c14,c13,c12,c11,c10,c9,c8,c7,c6,c5,c4,c3,c2,c1,
        c0} = crc_in [31:0];

    xor6 x767i (.out(x767),.a(x678),.b(d60),.c(d41),.d(c22),.e(d10),.f(1'b0));  // 5 ins 1 outs

    xor6 x766i (.out(x766),.a(x644),.b(x664),.c(d60),.d(d34),.e(d11),.f(1'b0));  // 5 ins 1 outs

    xor6 x765i (.out(x765),.a(d45),.b(d24),.c(d19),.d(d12),.e(1'b0),.f(1'b0));  // 4 ins 1 outs

    xor6 x764i (.out(x764),.a(x648),.b(x660),.c(d18),.d(d40),.e(c21),.f(1'b0));  // 5 ins 1 outs

    xor6 x763i (.out(x763),.a(x659),.b(x653),.c(d5),.d(d52),.e(c14),.f(1'b0));  // 5 ins 1 outs

    xor6 x762i (.out(x762),.a(c16),.b(c28),.c(x738),.d(d26),.e(x658),.f(1'b0));  // 5 ins 1 outs

    xor6 x761i (.out(x761),.a(x746),.b(d13),.c(d56),.d(d42),.e(1'b0),.f(1'b0));  // 4 ins 1 outs

    xor6 x760i (.out(x760),.a(c6),.b(d16),.c(d55),.d(d32),.e(1'b0),.f(1'b0));  // 4 ins 1 outs

    xor6 x759i (.out(x759),.a(d17),.b(d2),.c(d13),.d(d11),.e(1'b0),.f(1'b0));  // 4 ins 1 outs

    xor6 x758i (.out(x758),.a(c28),.b(x731),.c(d60),.d(d50),.e(c18),.f(1'b0));  // 5 ins 1 outs

    xor6 x757i (.out(x757),.a(x649),.b(d19),.c(d20),.d(d22),.e(1'b0),.f(1'b0));  // 4 ins 1 outs

    xor6 x756i (.out(x756),.a(d45),.b(c15),.c(d48),.d(d27),.e(1'b0),.f(1'b0));  // 4 ins 1 outs

    xor6 x755i (.out(x755),.a(x729),.b(d0),.c(x648),.d(x666),.e(x659),.f(1'b0));  // 5 ins 1 outs

    xor6 x754i (.out(x754),.a(d18),.b(d14),.c(d27),.d(d7),.e(d62),.f(1'b0));  // 5 ins 1 outs

    xor6 x753i (.out(x753),.a(x645),.b(d12),.c(d3),.d(d62),.e(d38),.f(1'b0));  // 5 ins 1 outs

    xor6 x752i (.out(x752),.a(d3),.b(d52),.c(d0),.d(x662),.e(x664),.f(d13));  // 6 ins 1 outs

    xor6 x751i (.out(x751),.a(x700),.b(c8),.c(x668),.d(d25),.e(d37),.f(c24));  // 6 ins 1 outs

    xor6 x750i (.out(x750),.a(d49),.b(c8),.c(c12),.d(d2),.e(d21),.f(1'b0));  // 5 ins 1 outs

    xor6 x749i (.out(x749),.a(c31),.b(d6),.c(d21),.d(x720),.e(x666),.f(1'b0));  // 5 ins 1 outs

    xor6 x748i (.out(x748),.a(d14),.b(x645),.c(d27),.d(x667),.e(d19),.f(1'b0));  // 5 ins 1 outs

    xor6 x747i (.out(x747),.a(d11),.b(x652),.c(x645),.d(d12),.e(x659),.f(1'b0));  // 5 ins 1 outs

    xor6 x746i (.out(x746),.a(c22),.b(c21),.c(d9),.d(d7),.e(1'b0),.f(1'b0));  // 4 ins 1 outs

    xor6 x745i (.out(x745),.a(x651),.b(d44),.c(d8),.d(d47),.e(c12),.f(d22));  // 6 ins 1 outs

    xor6 x744i (.out(x744),.a(d55),.b(d39),.c(x662),.d(c10),.e(d47),.f(d29));  // 6 ins 1 outs

    xor6 x743i (.out(x743),.a(x658),.b(d5),.c(d14),.d(c6),.e(c9),.f(x656));  // 6 ins 1 outs

    xor6 x742i (.out(x742),.a(x652),.b(d10),.c(x670),.d(d34),.e(c2),.f(c14));  // 6 ins 1 outs

    xor6 x741i (.out(x741),.a(d38),.b(d0),.c(d44),.d(c12),.e(d26),.f(x649));  // 6 ins 1 outs

    xor6 x740i (.out(x740),.a(x667),.b(d8),.c(d21),.d(x647),.e(x658),.f(c30));  // 6 ins 1 outs

    xor6 x739i (.out(x739),.a(d3),.b(x650),.c(x672),.d(d15),.e(d46),.f(d28));  // 6 ins 1 outs

    xor6 x738i (.out(x738),.a(c4),.b(d9),.c(d24),.d(d14),.e(d36),.f(1'b0));  // 5 ins 1 outs

    xor6 x737i (.out(x737),.a(d50),.b(c18),.c(c17),.d(x669),.e(x691),.f(x664));  // 6 ins 1 outs

    xor6 x736i (.out(x736),.a(x647),.b(d32),.c(d25),.d(x660),.e(d5),.f(c6));  // 6 ins 1 outs

    xor6 x735i (.out(x735),.a(d13),.b(d42),.c(d10),.d(x710),.e(x666),.f(x668));  // 6 ins 1 outs

    xor6 x734i (.out(x734),.a(x667),.b(x659),.c(d30),.d(d27),.e(x654),.f(d19));  // 6 ins 1 outs

    xor6 x733i (.out(x733),.a(d33),.b(c1),.c(x664),.d(x672),.e(c9),.f(1'b0));  // 5 ins 1 outs

    xor6 x732i (.out(x732),.a(d33),.b(d6),.c(d52),.d(d15),.e(x646),.f(1'b0));  // 5 ins 1 outs

    xor6 x731i (.out(x731),.a(d34),.b(d52),.c(d20),.d(d62),.e(d12),.f(1'b0));  // 5 ins 1 outs

    xor6 x730i (.out(x730),.a(c24),.b(x694),.c(c13),.d(x660),.e(d23),.f(1'b0));  // 5 ins 1 outs

    xor6 x729i (.out(x729),.a(d38),.b(c27),.c(d59),.d(c6),.e(d49),.f(c4));  // 6 ins 1 outs

    xor6 x728i (.out(x728),.a(x665),.b(d36),.c(c5),.d(x678),.e(d10),.f(c16));  // 6 ins 1 outs

    xor6 x727i (.out(x727),.a(d30),.b(d7),.c(d3),.d(x651),.e(d53),.f(x650));  // 6 ins 2 outs

    xor6 x726i (.out(x726),.a(x655),.b(c24),.c(d63),.d(d2),.e(x662),.f(c20));  // 6 ins 1 outs

    xor6 x725i (.out(x725),.a(c16),.b(c4),.c(d53),.d(x665),.e(d2),.f(c31));  // 6 ins 1 outs

    xor6 x724i (.out(x724),.a(x665),.b(c8),.c(d16),.d(d14),.e(c30),.f(1'b0));  // 5 ins 1 outs

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?