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

📄 modified_booth_cla_rtl_group.v

📁 主題 : Low power Modified Booth Multiplier 介紹 : 為了節省乘法器面積、加快速度等等
💻 V
📖 第 1 页 / 共 3 页
字号:
  my_CLA_9bits_0 add1 ( .sum({\first_sum[0][8] , \first_sum[0][7] ,         \first_sum[0][6] , \first_sum[0][5] , \first_sum[0][4] ,         \first_sum[0][3] , \first_sum[0][2] , \first_sum[0][1] ,         \first_sum[0][0] }), .cout(carry[0]), .x({1'b0, 1'b0, ppin0[8:2]}),         .y(ppin1), .cin(1'b0) );  my_CLA_9bits_1 add2 ( .sum({\first_sum[1][8] , \first_sum[1][7] ,         \first_sum[1][6] , \first_sum[1][5] , \first_sum[1][4] ,         \first_sum[1][3] , \first_sum[1][2] , \first_sum[1][1] ,         \first_sum[1][0] }), .cout(carry[1]), .x({1'b0, 1'b0, ppin2[8:2]}),         .y(ppin3), .cin(1'b0) );  my_CLA_12bits add3 ( .sum(second_sum), .x({1'b0, 1'b0, 1'b0, 1'b0, carry[0],         \first_sum[0][8] , \first_sum[0][7] , \first_sum[0][6] ,         \first_sum[0][5] , \first_sum[0][4] , \first_sum[0][3] ,         \first_sum[0][2] }), .y({carry[1], \first_sum[1][8] ,         \first_sum[1][7] , \first_sum[1][6] , \first_sum[1][5] ,         \first_sum[1][4] , \first_sum[1][3] , \first_sum[1][2] ,         \first_sum[1][1] , \first_sum[1][0] , ppin2[1:0]}), .cin(1'b0) );  my_CLA_16bits add4 ( .sum(sum), .x({1'b1, 1'b0, 1'b1, 1'b0, 1'b1, 1'b0, 1'b1,         1'b1, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0}), .y({second_sum,         \first_sum[0][1] , \first_sum[0][0] , ppin0[1:0]}), .cin(1'b0) );endmodulemodule ppgenerator ( pp0, pp1, pp2, pp3, x, mul, shift, twocom );  output [8:0] pp0;  output [8:0] pp1;  output [8:0] pp2;  output [8:0] pp3;  input [7:0] x;  input [3:0] mul;  input [3:0] shift;  input [3:0] twocom;  wire   N2, N3, N4, N5, N6, N7, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11,         n12, n13, n14, n15, n16, n17, n18, n19, n20, n21, n22, n23, n24, n25,         n26, n27, n28, n29, n30, n31, n32, n33, n34, n35, n36, n37, n38, n39,         n40, n41, n42, n43, n44, n45, n46, n47, n48, n49, n50, n51, n52, n53,         n54, n55, n56, n57, n58, n59, n60, n61, n62, n63, n64, n65, n66, n67,         n68, n69, n70, n71, n72, n73, n74, n75, n76, n77, n78, n79, n80, n81,         n82, n83, n84, n85, n86, n87, n88, n89, n90, n91, n92, n93, n94, n95,         n96, n97, n98, n99, n100, n101, n102, n103, n104, n105, n106, n107,         n108, n109, n110, n111, n112, n113, n114, n115, n116, n117, n118,         n119, n120, n121, n122, n123, n124, n125, n126, n127, n128, n129,         n130, n131, n132, n133, n134, n135, n136, n137, n138;  wire   [7:0] tmp;  my_mux_0 m0 ( .out(pp0), .xshi({n124, n116, n108, n100, n106, n112, n133,         n120, 1'b0}), .xtwo({n124, n63, n117, n109, n101, n104, n115, n131,         n121}), .zero({1'b1, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0}),         .xorg({n60, n20, n53, n45, n36, n32, n41, n51, n128}), .xmul({n61, n56,         n46, n37, n33, n42, n51, n58, 1'b0}), .sel({n28, n90, n22}) );  my_mux_3 m1 ( .out(pp1), .xshi({n125, n118, n111, n103, n107, n113, n130,         n68, 1'b0}), .xtwo({n125, n64, n119, n110, n102, n105, n114, n130,         n122}), .zero({1'b1, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0}),         .xorg({n135, n4, n54, n46, n37, n33, n42, n1, n129}), .xmul({n135, n53,         n43, n34, n30, n39, n50, n128, 1'b0}), .sel({n26, n71, mul[1]}) );  my_mux_2 m2 ( .out(pp2), .xshi({n123, n117, n110, n102, n106, n115, n133,         n122, 1'b0}), .xtwo({n123, n64, n119, n109, n101, n107, n113, n131,         n121}), .zero({1'b1, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0}),         .xorg({n136, n4, n137, n44, n35, n31, n40, n48, n127}), .xmul({n60,         n56, n45, n36, n32, n41, n50, n127, 1'b0}), .sel({n24, n66, mul[2]})         );  my_mux_1 m3 ( .out(pp3), .xshi({n126, n116, n108, n100, n104, n112, n132,         n120, 1'b0}), .xtwo({n126, tmp[7], n118, n111, n103, n105, n114, n132,         tmp[0]}), .zero({1'b1, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0}), .xorg({n136, x[7], n55, n44, n35, n3, n2, n49, n129}), .xmul({n134, n54, n43,         n34, n30, n39, n48, x[0], 1'b0}), .sel({n19, n85, mul[3]}) );  ppgenerator_DW01_inc_0 add_70 ( .A({n134, n138, N2, N3, N4, N5, N6, N7}),         .SUM(tmp) );  CLKINVXL U3 ( .A(x[4]), .Y(n11) );  CLKINVXL U4 ( .A(x[5]), .Y(n5) );  CLKINVXL U5 ( .A(tmp[6]), .Y(n81) );  CLKINVXL U6 ( .A(n137), .Y(n138) );  CLKINVXL U7 ( .A(n40), .Y(N5) );  CLKINVXL U8 ( .A(n63), .Y(n97) );  CLKINVXL U9 ( .A(tmp[2]), .Y(n72) );  CLKINVXL U10 ( .A(n49), .Y(N6) );  CLKINVXL U11 ( .A(x[0]), .Y(n8) );  CLKINVXL U12 ( .A(tmp[1]), .Y(n75) );  CLKINVXL U13 ( .A(tmp[0]), .Y(n67) );  CLKINVXL U14 ( .A(N6), .Y(n1) );  CLKINVXL U15 ( .A(N5), .Y(n2) );  CLKINVXL U16 ( .A(N4), .Y(n3) );  INVXL U17 ( .A(n31), .Y(N4) );  CLKINVXL U18 ( .A(n61), .Y(n4) );  INVXL U19 ( .A(n59), .Y(n61) );  CLKINVXL U20 ( .A(n5), .Y(n6) );  CLKINVXL U21 ( .A(n5), .Y(n7) );  CLKINVXL U22 ( .A(n8), .Y(n9) );  CLKINVXL U23 ( .A(n8), .Y(n10) );  CLKINVXL U24 ( .A(n11), .Y(n12) );  CLKINVXL U25 ( .A(n11), .Y(n13) );  CLKINVXL U26 ( .A(x[1]), .Y(n14) );  CLKINVXL U27 ( .A(x[1]), .Y(n47) );  CLKINVXL U28 ( .A(x[6]), .Y(n15) );  CLKINVXL U29 ( .A(x[6]), .Y(n52) );  CLKINVXL U30 ( .A(x[2]), .Y(n16) );  CLKINVXL U31 ( .A(x[2]), .Y(n38) );  CLKINVXL U32 ( .A(x[3]), .Y(n17) );  CLKINVXL U33 ( .A(x[3]), .Y(n29) );  CLKINVXL U34 ( .A(twocom[3]), .Y(n18) );  CLKINVXL U35 ( .A(n18), .Y(n19) );  BUFXL U36 ( .A(x[7]), .Y(n20) );  CLKINVXL U37 ( .A(mul[0]), .Y(n21) );  CLKINVXL U38 ( .A(n21), .Y(n22) );  CLKINVXL U39 ( .A(twocom[2]), .Y(n23) );  CLKINVXL U40 ( .A(n23), .Y(n24) );  CLKINVXL U41 ( .A(twocom[1]), .Y(n25) );  CLKINVXL U42 ( .A(n25), .Y(n26) );  CLKINVXL U43 ( .A(twocom[0]), .Y(n27) );  CLKINVXL U44 ( .A(n27), .Y(n28) );  CLKINVXL U45 ( .A(n29), .Y(n30) );  CLKINVXL U46 ( .A(n17), .Y(n33) );  CLKINVXL U47 ( .A(n17), .Y(n31) );  CLKINVXL U48 ( .A(n29), .Y(n32) );  BUFXL U49 ( .A(n13), .Y(n34) );  BUFXL U50 ( .A(n12), .Y(n37) );  BUFXL U51 ( .A(n12), .Y(n35) );  BUFXL U52 ( .A(n13), .Y(n36) );  CLKINVXL U53 ( .A(x[4]), .Y(N3) );  CLKINVXL U54 ( .A(n38), .Y(n39) );  CLKINVXL U55 ( .A(n16), .Y(n42) );  CLKINVXL U56 ( .A(n16), .Y(n40) );  CLKINVXL U57 ( .A(n38), .Y(n41) );  BUFXL U58 ( .A(n7), .Y(n43) );  BUFXL U59 ( .A(n6), .Y(n46) );  BUFXL U60 ( .A(n6), .Y(n44) );  BUFXL U61 ( .A(n7), .Y(n45) );  CLKINVXL U62 ( .A(x[5]), .Y(N2) );  CLKINVXL U63 ( .A(n47), .Y(n48) );  CLKINVXL U64 ( .A(n14), .Y(n51) );  CLKINVXL U65 ( .A(n14), .Y(n49) );  CLKINVXL U66 ( .A(n47), .Y(n50) );  CLKINVXL U67 ( .A(n52), .Y(n53) );  CLKINVXL U68 ( .A(n15), .Y(n56) );  CLKINVXL U69 ( .A(n52), .Y(n54) );  CLKINVXL U70 ( .A(n15), .Y(n55) );  CLKINVXL U71 ( .A(n9), .Y(n57) );  CLKINVXL U72 ( .A(n57), .Y(n58) );  CLKINVXL U73 ( .A(n96), .Y(n59) );  CLKINVXL U74 ( .A(n59), .Y(n60) );  CLKINVXL U75 ( .A(tmp[7]), .Y(n62) );  CLKINVXL U76 ( .A(n62), .Y(n63) );  CLKINVXL U77 ( .A(n62), .Y(n64) );  CLKINVXL U78 ( .A(shift[2]), .Y(n65) );  CLKINVXL U79 ( .A(n65), .Y(n66) );  CLKINVXL U80 ( .A(n67), .Y(n68) );  CLKINVXL U81 ( .A(n67), .Y(n69) );  CLKINVXL U82 ( .A(shift[1]), .Y(n70) );  CLKINVXL U83 ( .A(n70), .Y(n71) );  CLKINVXL U84 ( .A(n72), .Y(n73) );  CLKINVXL U85 ( .A(n72), .Y(n74) );  CLKINVXL U86 ( .A(n75), .Y(n76) );  CLKINVXL U87 ( .A(n75), .Y(n77) );  INVXL U88 ( .A(tmp[3]), .Y(n78) );  CLKINVXL U89 ( .A(n78), .Y(n79) );  CLKINVXL U90 ( .A(n78), .Y(n80) );  CLKINVXL U91 ( .A(n81), .Y(n82) );  CLKINVXL U92 ( .A(n81), .Y(n83) );  CLKINVXL U93 ( .A(shift[3]), .Y(n84) );  CLKINVXL U94 ( .A(n84), .Y(n85) );  INVXL U95 ( .A(tmp[5]), .Y(n86) );  CLKINVXL U96 ( .A(n86), .Y(n87) );  CLKINVXL U97 ( .A(n86), .Y(n88) );  CLKINVXL U98 ( .A(shift[0]), .Y(n89) );  CLKINVXL U99 ( .A(n89), .Y(n90) );  INVXL U100 ( .A(tmp[4]), .Y(n91) );  CLKINVXL U101 ( .A(n91), .Y(n92) );  CLKINVXL U102 ( .A(n91), .Y(n93) );  BUFXL U103 ( .A(n20), .Y(n94) );  CLKINVXL U104 ( .A(n94), .Y(n95) );  CLKINVXL U105 ( .A(n94), .Y(n96) );  BUFXL U106 ( .A(n95), .Y(n134) );  BUFXL U107 ( .A(n95), .Y(n136) );  BUFXL U108 ( .A(n96), .Y(n135) );  CLKINVXL U109 ( .A(n97), .Y(n98) );  CLKINVXL U110 ( .A(n97), .Y(n99) );  BUFXL U111 ( .A(n93), .Y(n100) );  BUFXL U112 ( .A(n92), .Y(n103) );  BUFXL U113 ( .A(n92), .Y(n101) );  BUFXL U114 ( .A(n93), .Y(n102) );  BUFXL U115 ( .A(n80), .Y(n104) );  BUFXL U116 ( .A(n79), .Y(n107) );  BUFXL U117 ( .A(n79), .Y(n105) );  BUFXL U118 ( .A(n80), .Y(n106) );  BUFXL U119 ( .A(n88), .Y(n108) );  BUFXL U120 ( .A(n87), .Y(n111) );  BUFXL U121 ( .A(n87), .Y(n109) );  BUFXL U122 ( .A(n88), .Y(n110) );  BUFXL U123 ( .A(n74), .Y(n112) );  BUFXL U124 ( .A(n73), .Y(n115) );  BUFXL U125 ( .A(n73), .Y(n113) );  BUFXL U126 ( .A(n74), .Y(n114) );  BUFXL U127 ( .A(n83), .Y(n116) );  BUFXL U128 ( .A(n82), .Y(n119) );  BUFXL U129 ( .A(n82), .Y(n117) );  BUFXL U130 ( .A(n83), .Y(n118) );  BUFXL U131 ( .A(n69), .Y(n120) );  BUFXL U132 ( .A(n68), .Y(n121) );  BUFXL U133 ( .A(n69), .Y(n122) );  CLKINVXL U134 ( .A(n99), .Y(n123) );  CLKINVXL U135 ( .A(n99), .Y(n126) );  CLKINVXL U136 ( .A(n98), .Y(n124) );  CLKINVXL U137 ( .A(n98), .Y(n125) );  BUFXL U138 ( .A(n10), .Y(n129) );  BUFXL U139 ( .A(n9), .Y(n127) );  BUFXL U140 ( .A(n10), .Y(n128) );  BUFXL U141 ( .A(n76), .Y(n130) );  BUFXL U142 ( .A(n77), .Y(n133) );  BUFXL U143 ( .A(n76), .Y(n131) );  BUFXL U144 ( .A(n77), .Y(n132) );  CLKINVXL U145 ( .A(n58), .Y(N7) );  BUFXL U146 ( .A(n55), .Y(n137) );endmodulemodule booth_encoder ( mul, shift, twocom, x );  output [3:0] mul;  output [3:0] shift;  output [3:0] twocom;  input [7:0] x;  wire   \x[0] , \x[7] , n1, n2, n3, n4, n5, n6, n7, n8, n12, n13, n14, n15,         n16;  assign mul[0] = \x[0] ;  assign \x[0]  = x[0];  assign twocom[3] = \x[7] ;  assign \x[7]  = x[7];  MXI2X1 U2 ( .A(n16), .B(n15), .S0(n6), .Y(shift[1]) );  BUFXL U3 ( .A(x[4]), .Y(n1) );  BUFXL U4 ( .A(x[2]), .Y(n2) );  CLKINVXL U5 ( .A(x[1]), .Y(n3) );  CLKINVXL U6 ( .A(n3), .Y(n4) );  CLKINVXL U7 ( .A(n3), .Y(n5) );  CLKINVXL U8 ( .A(x[3]), .Y(n6) );  CLKINVXL U9 ( .A(n6), .Y(n7) );  BUFXL U10 ( .A(x[5]), .Y(n8) );  BUFXL U11 ( .A(x[5]), .Y(twocom[2]) );  XOR2XL U12 ( .A(twocom[2]), .B(x[6]), .Y(mul[3]) );  XNOR2XL U13 ( .A(n8), .B(\x[7] ), .Y(n12) );  BUFXL U14 ( .A(x[3]), .Y(twocom[1]) );  NAND2XL U15 ( .A(n1), .B(n7), .Y(n13) );  OR2XL U16 ( .A(n7), .B(n1), .Y(n14) );  BUFXL U17 ( .A(x[1]), .Y(twocom[0]) );  XOR2XL U18 ( .A(x[2]), .B(n4), .Y(mul[1]) );  XOR2XL U19 ( .A(x[4]), .B(twocom[1]), .Y(mul[2]) );  MXI2X1 U20 ( .A(n13), .B(n14), .S0(n8), .Y(shift[2]) );  NOR2XL U21 ( .A(mul[3]), .B(n12), .Y(shift[3]) );  NOR2BXL U22 ( .AN(twocom[0]), .B(\x[0] ), .Y(shift[0]) );  NAND2XL U23 ( .A(n2), .B(n4), .Y(n15) );  OR2XL U24 ( .A(n5), .B(n2), .Y(n16) );endmodulemodule modified_booth_cla ( pro, x, y );  output [15:0] pro;  input [7:0] x;  input [7:0] y;  wire   n23, n24, n25, n26, n27, n28, n29, n30, n31, n32, n33, n34, n35, n36,         n37, n38, n39, n40, n41, n42, n43, n44, n45, n46, n47, n48, n49, n50,         n51, n52, n53, n54;  wire   [7:0] tmpx;  wire   [7:0] tmpy;  wire   [3:0] mul;  wire   [3:0] shift;  wire   [3:0] twocom;  wire   [8:0] pp0;  wire   [8:0] pp1;  wire   [8:0] pp2;  wire   [8:0] pp3;  booth_encoder m1 ( .mul(mul), .shift(shift), .twocom(twocom), .x({tmpx[7:5],         n23, tmpx[3], n25, tmpx[1:0]}) );  ppgenerator m2 ( .pp0(pp0), .pp1(pp1), .pp2(pp2), .pp3(pp3), .x({tmpy[7:1],         n28}), .mul(mul), .shift(shift), .twocom(twocom) );  com_tree_CLA m3 ( .sum(pro), .ppin0(pp0), .ppin1(pp1), .ppin2(pp2), .ppin3(        pp3) );  NOR2X1 U29 ( .A(n33), .B(n51), .Y(tmpx[0]) );  NAND2BXL U30 ( .AN(n41), .B(x[2]), .Y(n24) );  CLKINVXL U31 ( .A(y[4]), .Y(n44) );  CLKINVXL U32 ( .A(y[5]), .Y(n43) );  AOI21XL U33 ( .A0(n35), .A1(x[6]), .B0(y[6]), .Y(n42) );  NOR2XL U34 ( .A(y[2]), .B(y[1]), .Y(n53) );  CLKINVXL U35 ( .A(x[2]), .Y(n48) );  CLKINVXL U36 ( .A(x[3]), .Y(n46) );  CLKINVXL U37 ( .A(n45), .Y(tmpy[3]) );  MX2XL U38 ( .A(x[7]), .B(y[7]), .S0(n26), .Y(tmpy[7]) );  CLKINVXL U39 ( .A(n34), .Y(n26) );  CLKINVXL U40 ( .A(y[0]), .Y(n52) );  CLKINVXL U41 ( .A(x[1]), .Y(n50) );  CLKINVXL U42 ( .A(n35), .Y(n29) );  CLKINVXL U43 ( .A(x[0]), .Y(n51) );  CLKINVXL U44 ( .A(n47), .Y(tmpy[2]) );  CLKINVXL U45 ( .A(n49), .Y(tmpy[1]) );  AND2XL U46 ( .A(n36), .B(x[4]), .Y(n23) );  CLKINVXL U47 ( .A(n24), .Y(n25) );  OAI2BB1XL U48 ( .A0N(n41), .A1N(x[5]), .B0(n43), .Y(tmpy[5]) );  CLKINVXL U49 ( .A(n26), .Y(n27) );  OAI2BB1XL U50 ( .A0N(n27), .A1N(x[4]), .B0(n44), .Y(tmpy[4]) );  BUFXL U51 ( .A(tmpy[0]), .Y(n28) );  OAI21XL U52 ( .A0(n37), .A1(n51), .B0(n52), .Y(tmpy[0]) );  INVXL U53 ( .A(n42), .Y(tmpy[6]) );  CLKINVXL U54 ( .A(n29), .Y(n30) );  CLKINVXL U55 ( .A(n29), .Y(n31) );  NOR4XL U56 ( .A(y[6]), .B(y[5]), .C(y[4]), .D(y[3]), .Y(n54) );  BUFXL U57 ( .A(n36), .Y(n32) );  CLKINVXL U58 ( .A(n32), .Y(n33) );  CLKINVXL U59 ( .A(n32), .Y(n34) );  BUFXL U60 ( .A(n34), .Y(n40) );  OR2XL U61 ( .A(x[7]), .B(n27), .Y(tmpx[7]) );  AND2XL U62 ( .A(n38), .B(x[5]), .Y(tmpx[5]) );  NOR2XL U63 ( .A(n40), .B(n46), .Y(tmpx[3]) );  NOR2XL U64 ( .A(n40), .B(n50), .Y(tmpx[1]) );  AND4X1 U65 ( .A(y[7]), .B(n52), .C(n53), .D(n54), .Y(n35) );  CLKINVXL U66 ( .A(n31), .Y(n36) );  CLKINVXL U67 ( .A(n31), .Y(n39) );  CLKINVXL U68 ( .A(n30), .Y(n37) );  CLKINVXL U69 ( .A(n30), .Y(n38) );  AND2XL U70 ( .A(n39), .B(x[6]), .Y(tmpx[6]) );  AOI2BB1XL U71 ( .A0N(n37), .A1N(n50), .B0(y[1]), .Y(n49) );  AOI2BB1XL U72 ( .A0N(n39), .A1N(n48), .B0(y[2]), .Y(n47) );  AOI2BB1XL U73 ( .A0N(n38), .A1N(n46), .B0(y[3]), .Y(n45) );  BUFXL U74 ( .A(n33), .Y(n41) );endmodule

⌨️ 快捷键说明

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