⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csa_float_multiplier_dc.v

📁 新型的浮点乘法器 用csa来实现可以用在浮点乘法器的地方
💻 V
📖 第 1 页 / 共 5 页
字号:

module selector_DW01_add_0 ( A, B, CI, SUM, CO );
  input [8:0] A;
  input [8:0] B;
  output [8:0] SUM;
  input CI;
  output CO;
  wire   \carry[7] , \carry[6] , \carry[5] , \carry[4] , \carry[3] ,
         \carry[2] , \carry[1] ;

  ADDFX2 U1_1 ( .A(A[1]), .B(B[1]), .CI(\carry[1] ), .S(SUM[1]), .CO(
        \carry[2] ) );
  ADDFX2 U1_2 ( .A(A[2]), .B(B[2]), .CI(\carry[2] ), .S(SUM[2]), .CO(
        \carry[3] ) );
  ADDFX2 U1_3 ( .A(A[3]), .B(B[3]), .CI(\carry[3] ), .S(SUM[3]), .CO(
        \carry[4] ) );
  ADDFX2 U1_4 ( .A(A[4]), .B(B[4]), .CI(\carry[4] ), .S(SUM[4]), .CO(
        \carry[5] ) );
  ADDFX2 U1_5 ( .A(A[5]), .B(B[5]), .CI(\carry[5] ), .S(SUM[5]), .CO(
        \carry[6] ) );
  ADDFX2 U1_6 ( .A(A[6]), .B(B[6]), .CI(\carry[6] ), .S(SUM[6]), .CO(
        \carry[7] ) );
  ADDFX2 U1_7 ( .A(A[7]), .B(B[7]), .CI(\carry[7] ), .S(SUM[7]), .CO(SUM[8])
         );
  AND2X1 U1 ( .A(A[0]), .B(B[0]), .Y(\carry[1] ) );
  XOR2X1 U2 ( .A(B[0]), .B(A[0]), .Y(SUM[0]) );
endmodule


module selector ( A_in, B_in, clk, rst_n, man_a, man_b, exp_out, sign, zero );
  input [31:0] A_in;
  input [31:0] B_in;
  output [23:0] man_a;
  output [23:0] man_b;
  output [8:0] exp_out;
  input clk, rst_n;
  output sign, zero;
  wire   sign_a, sign_b, N131, N132, N133, N134, N135, N136, N137, N138, N139,
         n4, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19,
         n20, n21, n22, n23, n24, n25, n27, n28;
  wire   [7:0] exp_a;
  wire   [7:0] exp_b;
  wire   [31:0] A_reg;
  wire   [31:0] B_reg;

  DFFTRX1 \man_a_reg[22]  ( .D(A_in[22]), .CK(clk), .RN(rst_n), .Q(man_a[22]), 
        .QN() );
  DFFTRX1 \man_a_reg[21]  ( .D(A_in[21]), .CK(clk), .RN(rst_n), .Q(man_a[21]), 
        .QN() );
  DFFTRX1 \man_a_reg[20]  ( .D(A_in[20]), .CK(clk), .RN(rst_n), .Q(man_a[20]), 
        .QN() );
  DFFTRX1 \man_a_reg[19]  ( .D(A_in[19]), .CK(clk), .RN(rst_n), .Q(man_a[19]), 
        .QN() );
  DFFTRX1 \man_a_reg[18]  ( .D(A_in[18]), .CK(clk), .RN(rst_n), .Q(man_a[18]), 
        .QN() );
  DFFTRX1 \man_a_reg[17]  ( .D(A_in[17]), .CK(clk), .RN(rst_n), .Q(man_a[17]), 
        .QN() );
  DFFTRX1 \man_a_reg[16]  ( .D(A_in[16]), .CK(clk), .RN(rst_n), .Q(man_a[16]), 
        .QN() );
  DFFTRX1 \man_b_reg[0]  ( .D(B_in[0]), .CK(clk), .RN(rst_n), .Q(man_b[0]), 
        .QN() );
  DFFHQX1 \man_a_reg[23]  ( .D(rst_n), .CK(clk), .Q(man_a[23]) );
  DFFHQX1 \man_b_reg[23]  ( .D(rst_n), .CK(clk), .Q(man_b[23]) );
  DFFTRX1 \man_a_reg[15]  ( .D(A_in[15]), .CK(clk), .RN(rst_n), .Q(man_a[15]), 
        .QN() );
  DFFTRX1 \man_a_reg[14]  ( .D(A_in[14]), .CK(clk), .RN(rst_n), .Q(man_a[14]), 
        .QN() );
  DFFTRX1 \man_a_reg[13]  ( .D(A_in[13]), .CK(clk), .RN(rst_n), .Q(man_a[13]), 
        .QN() );
  DFFTRX1 \man_a_reg[12]  ( .D(A_in[12]), .CK(clk), .RN(rst_n), .Q(man_a[12]), 
        .QN() );
  DFFTRX1 \man_a_reg[11]  ( .D(A_in[11]), .CK(clk), .RN(rst_n), .Q(man_a[11]), 
        .QN() );
  DFFTRX1 \man_a_reg[10]  ( .D(A_in[10]), .CK(clk), .RN(rst_n), .Q(man_a[10]), 
        .QN() );
  DFFTRX1 \man_a_reg[9]  ( .D(A_in[9]), .CK(clk), .RN(rst_n), .Q(man_a[9]), 
        .QN() );
  DFFTRX1 \man_a_reg[8]  ( .D(A_in[8]), .CK(clk), .RN(rst_n), .Q(man_a[8]), 
        .QN() );
  DFFTRX1 \man_a_reg[7]  ( .D(A_in[7]), .CK(clk), .RN(rst_n), .Q(man_a[7]), 
        .QN() );
  DFFTRX1 \man_a_reg[5]  ( .D(A_in[5]), .CK(clk), .RN(rst_n), .Q(man_a[5]), 
        .QN() );
  DFFTRX1 \man_a_reg[4]  ( .D(A_in[4]), .CK(clk), .RN(rst_n), .Q(man_a[4]), 
        .QN() );
  DFFTRX1 \man_a_reg[3]  ( .D(A_in[3]), .CK(clk), .RN(rst_n), .Q(man_a[3]), 
        .QN() );
  DFFTRX1 \man_a_reg[2]  ( .D(A_in[2]), .CK(clk), .RN(rst_n), .Q(man_a[2]), 
        .QN() );
  DFFTRX1 \man_a_reg[1]  ( .D(A_in[1]), .CK(clk), .RN(rst_n), .Q(man_a[1]), 
        .QN() );
  DFFTRX1 \man_a_reg[0]  ( .D(A_in[0]), .CK(clk), .RN(rst_n), .Q(man_a[0]), 
        .QN() );
  DFFTRX1 \man_b_reg[22]  ( .D(B_in[22]), .CK(clk), .RN(rst_n), .Q(man_b[22]), 
        .QN() );
  DFFTRX1 \man_b_reg[21]  ( .D(B_in[21]), .CK(clk), .RN(rst_n), .Q(man_b[21]), 
        .QN() );
  DFFTRX1 \man_b_reg[20]  ( .D(B_in[20]), .CK(clk), .RN(rst_n), .Q(man_b[20]), 
        .QN() );
  DFFTRX1 \man_b_reg[19]  ( .D(B_in[19]), .CK(clk), .RN(rst_n), .Q(man_b[19]), 
        .QN() );
  DFFTRX1 \man_b_reg[18]  ( .D(B_in[18]), .CK(clk), .RN(rst_n), .Q(man_b[18]), 
        .QN() );
  DFFTRX1 \man_b_reg[17]  ( .D(B_in[17]), .CK(clk), .RN(rst_n), .Q(man_b[17]), 
        .QN() );
  DFFTRX1 \man_b_reg[16]  ( .D(B_in[16]), .CK(clk), .RN(rst_n), .Q(man_b[16]), 
        .QN() );
  DFFTRX1 \man_b_reg[15]  ( .D(B_in[15]), .CK(clk), .RN(rst_n), .Q(man_b[15]), 
        .QN() );
  DFFTRX1 \man_b_reg[14]  ( .D(B_in[14]), .CK(clk), .RN(rst_n), .Q(man_b[14]), 
        .QN() );
  DFFTRX1 \man_b_reg[13]  ( .D(B_in[13]), .CK(clk), .RN(rst_n), .Q(man_b[13]), 
        .QN() );
  DFFTRX1 \man_b_reg[12]  ( .D(B_in[12]), .CK(clk), .RN(rst_n), .Q(man_b[12]), 
        .QN() );
  DFFTRX1 \man_b_reg[11]  ( .D(B_in[11]), .CK(clk), .RN(rst_n), .Q(man_b[11]), 
        .QN() );
  DFFTRX1 \man_b_reg[10]  ( .D(B_in[10]), .CK(clk), .RN(rst_n), .Q(man_b[10]), 
        .QN() );
  DFFTRX1 \man_b_reg[9]  ( .D(B_in[9]), .CK(clk), .RN(rst_n), .Q(man_b[9]), 
        .QN() );
  DFFTRX1 \man_b_reg[8]  ( .D(B_in[8]), .CK(clk), .RN(rst_n), .Q(man_b[8]), 
        .QN() );
  DFFTRX1 \man_b_reg[7]  ( .D(B_in[7]), .CK(clk), .RN(rst_n), .Q(man_b[7]), 
        .QN() );
  DFFTRX1 \man_b_reg[6]  ( .D(B_in[6]), .CK(clk), .RN(rst_n), .Q(man_b[6]), 
        .QN() );
  DFFTRX1 \man_b_reg[5]  ( .D(B_in[5]), .CK(clk), .RN(rst_n), .Q(man_b[5]), 
        .QN() );
  DFFTRX1 \man_b_reg[4]  ( .D(B_in[4]), .CK(clk), .RN(rst_n), .Q(man_b[4]), 
        .QN() );
  DFFTRX1 \man_b_reg[3]  ( .D(B_in[3]), .CK(clk), .RN(rst_n), .Q(man_b[3]), 
        .QN() );
  DFFTRX1 \man_b_reg[2]  ( .D(B_in[2]), .CK(clk), .RN(rst_n), .Q(man_b[2]), 
        .QN() );
  DFFTRX1 \man_b_reg[1]  ( .D(B_in[1]), .CK(clk), .RN(rst_n), .Q(man_b[1]), 
        .QN() );
  DFFTRX1 \man_a_reg[6]  ( .D(A_in[6]), .CK(clk), .RN(rst_n), .Q(man_a[6]), 
        .QN() );
  NOR2BX1 U38 ( .AN(N139), .B(n28), .Y(exp_out[8]) );
  NOR2BX1 U39 ( .AN(N138), .B(n28), .Y(exp_out[7]) );
  NOR2BX1 U40 ( .AN(N137), .B(n28), .Y(exp_out[6]) );
  NOR2BX1 U41 ( .AN(n4), .B(n28), .Y(zero) );
  OAI22X1 U42 ( .A0(n6), .A1(n7), .B0(n8), .B1(n9), .Y(n4) );
  NAND4X1 U43 ( .A(n22), .B(n23), .C(n24), .D(n25), .Y(n6) );
  NAND4X1 U44 ( .A(n18), .B(n19), .C(n20), .D(n21), .Y(n7) );
  NOR2BX1 U45 ( .AN(N136), .B(n28), .Y(exp_out[5]) );
  NOR2BX1 U46 ( .AN(N135), .B(n28), .Y(exp_out[4]) );
  NOR2BX1 U47 ( .AN(N134), .B(n28), .Y(exp_out[3]) );
  NOR2BX1 U48 ( .AN(N133), .B(n28), .Y(exp_out[2]) );
  NOR2BX1 U49 ( .AN(N132), .B(n28), .Y(exp_out[1]) );
  INVX1 U50 ( .A(rst_n), .Y(n28) );
  NOR4X1 U51 ( .A(A_reg[23]), .B(A_reg[22]), .C(A_reg[21]), .D(A_reg[20]), .Y(
        n13) );
  NOR4X1 U52 ( .A(A_reg[9]), .B(A_reg[8]), .C(A_reg[7]), .D(A_reg[6]), .Y(n17)
         );
  NOR4X1 U53 ( .A(B_reg[23]), .B(B_reg[22]), .C(B_reg[21]), .D(B_reg[20]), .Y(
        n21) );
  NOR4X1 U54 ( .A(B_reg[9]), .B(B_reg[8]), .C(B_reg[7]), .D(B_reg[6]), .Y(n25)
         );
  NOR4X1 U55 ( .A(B_reg[1]), .B(B_reg[19]), .C(B_reg[18]), .D(B_reg[17]), .Y(
        n20) );
  NOR4X1 U56 ( .A(B_reg[5]), .B(B_reg[4]), .C(B_reg[3]), .D(B_reg[31]), .Y(n24) );
  NOR4X1 U57 ( .A(B_reg[16]), .B(B_reg[15]), .C(B_reg[14]), .D(B_reg[13]), .Y(
        n19) );
  NOR4X1 U58 ( .A(B_reg[30]), .B(B_reg[2]), .C(B_reg[29]), .D(B_reg[28]), .Y(
        n23) );
  NOR4X1 U59 ( .A(B_reg[12]), .B(B_reg[11]), .C(B_reg[10]), .D(B_reg[0]), .Y(
        n18) );
  NOR4X1 U60 ( .A(B_reg[27]), .B(B_reg[26]), .C(B_reg[25]), .D(B_reg[24]), .Y(
        n22) );
  NAND4X1 U61 ( .A(n14), .B(n15), .C(n16), .D(n17), .Y(n8) );
  NOR4X1 U62 ( .A(A_reg[27]), .B(A_reg[26]), .C(A_reg[25]), .D(A_reg[24]), .Y(
        n14) );
  NOR4X1 U63 ( .A(A_reg[30]), .B(A_reg[2]), .C(A_reg[29]), .D(A_reg[28]), .Y(
        n15) );
  NOR4X1 U64 ( .A(A_reg[5]), .B(A_reg[4]), .C(A_reg[3]), .D(A_reg[31]), .Y(n16) );
  NAND4X1 U65 ( .A(n10), .B(n11), .C(n12), .D(n13), .Y(n9) );
  NOR4X1 U66 ( .A(A_reg[12]), .B(A_reg[11]), .C(A_reg[10]), .D(A_reg[0]), .Y(
        n10) );
  NOR4X1 U67 ( .A(A_reg[16]), .B(A_reg[15]), .C(A_reg[14]), .D(A_reg[13]), .Y(
        n11) );
  NOR4X1 U68 ( .A(A_reg[1]), .B(A_reg[19]), .C(A_reg[18]), .D(A_reg[17]), .Y(
        n12) );
  NOR2BX1 U69 ( .AN(N131), .B(n28), .Y(exp_out[0]) );
  AND2X2 U70 ( .A(n27), .B(rst_n), .Y(sign) );
  XOR2X1 U71 ( .A(sign_b), .B(sign_a), .Y(n27) );
  DFFTRX1 \exp_b_reg[1]  ( .D(B_in[24]), .CK(clk), .RN(rst_n), .Q(exp_b[1]), 
        .QN() );
  DFFTRX1 \exp_a_reg[1]  ( .D(A_in[24]), .CK(clk), .RN(rst_n), .Q(exp_a[1]), 
        .QN() );
  DFFTRX1 \exp_a_reg[0]  ( .D(A_in[23]), .CK(clk), .RN(rst_n), .Q(exp_a[0]), 
        .QN() );
  DFFTRX1 \exp_b_reg[0]  ( .D(B_in[23]), .CK(clk), .RN(rst_n), .Q(exp_b[0]), 
        .QN() );
  DFFTRX1 sign_a_reg ( .D(A_in[31]), .CK(clk), .RN(rst_n), .Q(sign_a), .QN()
         );
  DFFTRX1 \exp_b_reg[7]  ( .D(B_in[30]), .CK(clk), .RN(rst_n), .Q(exp_b[7]), 
        .QN() );
  DFFTRX1 \exp_b_reg[6]  ( .D(B_in[29]), .CK(clk), .RN(rst_n), .Q(exp_b[6]), 
        .QN() );
  DFFTRX1 \exp_b_reg[5]  ( .D(B_in[28]), .CK(clk), .RN(rst_n), .Q(exp_b[5]), 
        .QN() );
  DFFTRX1 \exp_b_reg[4]  ( .D(B_in[27]), .CK(clk), .RN(rst_n), .Q(exp_b[4]), 
        .QN() );
  DFFTRX1 \exp_b_reg[3]  ( .D(B_in[26]), .CK(clk), .RN(rst_n), .Q(exp_b[3]), 
        .QN() );
  DFFTRX1 \exp_b_reg[2]  ( .D(B_in[25]), .CK(clk), .RN(rst_n), .Q(exp_b[2]), 
        .QN() );
  DFFTRX1 \A_reg_reg[31]  ( .D(A_in[31]), .CK(clk), .RN(rst_n), .Q(A_reg[31]), 
        .QN() );
  DFFTRX1 \A_reg_reg[28]  ( .D(A_in[28]), .CK(clk), .RN(rst_n), .Q(A_reg[28]), 
        .QN() );
  DFFTRX1 \A_reg_reg[24]  ( .D(A_in[24]), .CK(clk), .RN(rst_n), .Q(A_reg[24]), 
        .QN() );
  DFFTRX1 \A_reg_reg[20]  ( .D(A_in[20]), .CK(clk), .RN(rst_n), .Q(A_reg[20]), 
        .QN() );
  DFFTRX1 \A_reg_reg[17]  ( .D(A_in[17]), .CK(clk), .RN(rst_n), .Q(A_reg[17]), 
        .QN() );
  DFFTRX1 \A_reg_reg[13]  ( .D(A_in[13]), .CK(clk), .RN(rst_n), .Q(A_reg[13]), 
        .QN() );
  DFFTRX1 \A_reg_reg[6]  ( .D(A_in[6]), .CK(clk), .RN(rst_n), .Q(A_reg[6]), 
        .QN() );
  DFFTRX1 \A_reg_reg[0]  ( .D(A_in[0]), .CK(clk), .RN(rst_n), .Q(A_reg[0]), 
        .QN() );
  DFFTRX1 \B_reg_reg[31]  ( .D(B_in[31]), .CK(clk), .RN(rst_n), .Q(B_reg[31]), 
        .QN() );
  DFFTRX1 \B_reg_reg[28]  ( .D(B_in[28]), .CK(clk), .RN(rst_n), .Q(B_reg[28]), 
        .QN() );
  DFFTRX1 \B_reg_reg[24]  ( .D(B_in[24]), .CK(clk), .RN(rst_n), .Q(B_reg[24]), 
        .QN() );
  DFFTRX1 \B_reg_reg[20]  ( .D(B_in[20]), .CK(clk), .RN(rst_n), .Q(B_reg[20]), 
        .QN() );
  DFFTRX1 \B_reg_reg[17]  ( .D(B_in[17]), .CK(clk), .RN(rst_n), .Q(B_reg[17]), 
        .QN() );
  DFFTRX1 \B_reg_reg[13]  ( .D(B_in[13]), .CK(clk), .RN(rst_n), .Q(B_reg[13]), 
        .QN() );
  DFFTRX1 \B_reg_reg[6]  ( .D(B_in[6]), .CK(clk), .RN(rst_n), .Q(B_reg[6]), 
        .QN() );
  DFFTRX1 \B_reg_reg[0]  ( .D(B_in[0]), .CK(clk), .RN(rst_n), .Q(B_reg[0]), 
        .QN() );
  DFFTRX1 \A_reg_reg[26]  ( .D(A_in[26]), .CK(clk), .RN(rst_n), .Q(A_reg[26]), 
        .QN() );
  DFFTRX1 \A_reg_reg[22]  ( .D(A_in[22]), .CK(clk), .RN(rst_n), .Q(A_reg[22]), 
        .QN() );
  DFFTRX1 \A_reg_reg[19]  ( .D(A_in[19]), .CK(clk), .RN(rst_n), .Q(A_reg[19]), 
        .QN() );
  DFFTRX1 \A_reg_reg[15]  ( .D(A_in[15]), .CK(clk), .RN(rst_n), .Q(A_reg[15]), 
        .QN() );
  DFFTRX1 \A_reg_reg[11]  ( .D(A_in[11]), .CK(clk), .RN(rst_n), .Q(A_reg[11]), 
        .QN() );
  DFFTRX1 \A_reg_reg[8]  ( .D(A_in[8]), .CK(clk), .RN(rst_n), .Q(A_reg[8]), 
        .QN() );
  DFFTRX1 \A_reg_reg[4]  ( .D(A_in[4]), .CK(clk), .RN(rst_n), .Q(A_reg[4]), 
        .QN() );
  DFFTRX1 \A_reg_reg[2]  ( .D(A_in[2]), .CK(clk), .RN(rst_n), .Q(A_reg[2]), 
        .QN() );
  DFFTRX1 \B_reg_reg[26]  ( .D(B_in[26]), .CK(clk), .RN(rst_n), .Q(B_reg[26]), 
        .QN() );
  DFFTRX1 \B_reg_reg[22]  ( .D(B_in[22]), .CK(clk), .RN(rst_n), .Q(B_reg[22]), 
        .QN() );

⌨️ 快捷键说明

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