📄 multi16.v
字号:
module multi16(x,y,clock,z);
input[15:0] x,y;
input clock;
output[31:0] z;
reg [15:0] reg_x;
reg [15:0] reg_y;
reg [31:0] reg_z;
wire[16:0] p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15;
wire[75:0] j1,k1;
wire[50:0] j2,k2;
wire[32:0] j3,k3;
wire[22:0] j4,k4;
wire[15:0] j5,k5;
wire[6:0] j6,k6;
wire[2:0] j7,k7;
wire[8:0] j8,k8;
wire[21:0] j9,k9;
assign z=reg_z;
always @(posedge clock)
begin
reg_x <=x ;
reg_y <=y ;
reg_z<={j9[21],k9[21],k9[20],k9[19],k9[18],k9[17],k9[16],k9[15],k9[14],k9[13],k9[12],
k9[11],k9[10],k9[9],k9[8],k9[7],k9[6],k9[5],k9[4],k9[3],k9[2],k9[1],k9[0],k8[0],k7[0],
k6[0],k5[0],k4[0],k3[0],k2[0],k1[0],p0[0]};
end
pp pp0(reg_x,reg_y[0],p0);
pp pp1(reg_x,reg_y[1],p1);
pp pp2(reg_x,reg_y[2],p2);
pp pp3(reg_x,reg_y[3],p3);
pp pp4(reg_x,reg_y[4],p4);
pp pp5(reg_x,reg_y[5],p5);
pp pp6(reg_x,reg_y[6],p6);
pp pp7(reg_x,reg_y[7],p7);
pp pp8(reg_x,reg_y[8],p8);
pp pp9(reg_x,reg_y[9],p9);
pp pp10(reg_x,reg_y[10],p10);
pp pp11(reg_x,reg_y[11],p11);
pp pp12(reg_x,reg_y[12],p12);
pp pp13(reg_x,reg_y[13],p13);
pp pp14(reg_x,reg_y[14],p14);
pp pp15(reg_x,reg_y[15],p15);
halfadder ha1(p0[1],p1[0],k1[0],j1[0]);
fulladder fa1(p0[2],p1[1],p2[0],k1[1],j1[1]);
fulladder fa2(p0[3],p1[2],p2[1],k1[2],j1[2]);
fulladder fa3(p0[4],p1[3],p2[2],k1[3],j1[3]);
fulladder fa4(p0[5],p1[4],p2[3],k1[4],j1[4]);
fulladder fa5(p0[6],p1[5],p2[4],k1[5],j1[5]);
fulladder fa6(p0[7],p1[6],p2[5],k1[6],j1[6]);
fulladder fa7(p0[8],p1[7],p2[6],k1[7],j1[7]);
fulladder fa8(p0[9],p1[8],p2[7],k1[8],j1[8]);
fulladder fa9(p0[10],p1[9],p2[8],k1[9],j1[9]);
fulladder fa10(p0[11],p1[10],p2[9],k1[10],j1[10]);
fulladder fa11(p0[12],p1[11],p2[10],k1[11],j1[11]);
fulladder fa12(p0[13],p1[12],p2[11],k1[12],j1[12]);
fulladder fa13(p0[14],p1[13],p2[12],k1[13],j1[13]);
fulladder fa14(p0[15],p1[14],p2[13],k1[14],j1[14]);
fulladder fa15(p1[15],p2[14],p3[13],k1[15],j1[15]);
fulladder fa16(p2[15],p3[14],p4[13],k1[16],j1[16]);
fulladder fa17(p3[15],p4[14],p5[13],k1[17],j1[17]);
fulladder fa18(p4[15],p5[14],p6[13],k1[18],j1[18]);
fulladder fa19(p5[15],p6[14],p7[13],k1[19],j1[19]);
fulladder fa20(p6[15],p7[14],p8[13],k1[20],j1[20]);
fulladder fa21(p7[15],p8[14],p9[13],k1[21],j1[21]);
fulladder fa22(p8[15],p9[14],p10[13],k1[22],j1[22]);
fulladder fa23(p9[15],p10[14],p11[13],k1[23],j1[23]);
fulladder fa24(p10[15],p11[14],p12[13],k1[24],j1[24]);
fulladder fa25(p11[15],p12[14],p13[13],k1[25],j1[25]);
fulladder fa26(p12[15],p13[14],p14[13],k1[26],j1[26]);
fulladder fa27(p13[15],p14[14],p15[13],k1[27],j1[27]);
fulladder fa28(p3[2],p4[1],p5[0],k1[28],j1[28]);
fulladder fa29(p3[3],p4[2],p5[1],k1[29],j1[29]);
fulladder fa30(p3[4],p4[3],p5[2],k1[30],j1[30]);
fulladder fa31(p3[5],p4[4],p5[3],k1[31],j1[31]);
fulladder fa32(p3[6],p4[5],p5[4],k1[32],j1[32]);
fulladder fa33(p3[7],p4[6],p5[5],k1[33],j1[33]);
fulladder fa34(p3[8],p4[7],p5[6],k1[34],j1[34]);
fulladder fa35(p3[9],p4[8],p5[7],k1[35],j1[35]);
fulladder fa36(p3[10],p4[9],p5[8],k1[36],j1[36]);
fulladder fa37(p3[11],p4[10],p5[9],k1[37],j1[37]);
fulladder fa38(p3[12],p4[11],p5[10],k1[38],j1[38]);
fulladder fa39(p4[12],p5[11],p6[10],k1[39],j1[39]);
fulladder fa40(p5[12],p6[11],p7[10],k1[40],j1[40]);
fulladder fa41(p6[12],p7[11],p8[10],k1[41],j1[41]);
fulladder fa42(p7[12],p8[11],p9[10],k1[42],j1[42]);
fulladder fa43(p8[12],p9[11],p10[10],k1[43],j1[43]);
fulladder fa44(p9[12],p10[11],p11[10],k1[44],j1[44]);
fulladder fa45(p10[12],p11[11],p12[10],k1[45],j1[45]);
fulladder fa46(p11[12],p12[11],p13[10],k1[46],j1[46]);
fulladder fa47(p12[12],p13[11],p14[10],k1[47],j1[47]);
fulladder fa48(p13[12],p14[11],p15[10],k1[48],j1[48]);
fulladder fa49(p6[2],p7[1],p8[0],k1[49],j1[49]);
fulladder fa50(p6[3],p7[2],p8[1],k1[50],j1[50]);
fulladder fa51(p6[4],p7[3],p8[2],k1[51],j1[51]);
fulladder fa52(p6[5],p7[4],p8[3],k1[52],j1[52]);
fulladder fa53(p6[6],p7[5],p8[4],k1[53],j1[53]);
fulladder fa54(p6[7],p7[6],p8[5],k1[54],j1[54]);
fulladder fa55(p6[8],p7[7],p8[6],k1[55],j1[55]);
fulladder fa56(p6[9],p7[8],p8[7],k1[56],j1[56]);
fulladder fa57(p7[9],p8[8],p9[7],k1[57],j1[57]);
fulladder fa58(p8[9],p9[8],p10[7],k1[58],j1[58]);
fulladder fa59(p9[9],p10[8],p11[7],k1[59],j1[59]);
fulladder fa60(p10[9],p11[8],p12[7],k1[60],j1[60]);
fulladder fa61(p11[9],p12[8],p13[7],k1[61],j1[61]);
fulladder fa62(p12[9],p13[8],p14[7],k1[62],j1[62]);
fulladder fa63(p13[9],p14[8],p15[7],k1[63],j1[63]);
fulladder fa64(p9[2],p10[1],p11[0],k1[64],j1[64]);
fulladder fa65(p9[3],p10[2],p11[1],k1[65],j1[65]);
fulladder fa66(p9[4],p10[3],p11[2],k1[66],j1[66]);
fulladder fa67(p9[5],p10[4],p11[3],k1[67],j1[67]);
fulladder fa68(p9[6],p10[5],p11[4],k1[68],j1[68]);
fulladder fa69(p10[6],p11[5],p12[4],k1[69],j1[69]);
fulladder fa70(p11[6],p12[5],p13[4],k1[70],j1[70]);
fulladder fa71(p12[6],p13[5],p14[4],k1[71],j1[71]);
fulladder fa72(p13[6],p14[5],p15[4],k1[72],j1[72]);
fulladder fa73(p12[2],p13[1],p14[0],k1[73],j1[73]);
fulladder fa74(p12[3],p13[2],p14[1],k1[74],j1[74]);
fulladder fa75(p13[3],p14[2],p15[1],k1[75],j1[75]);
halfadder ha2(k1[1],j1[0],k2[0],j2[0]);
fulladder fa76(k1[2],p3[0],j1[1],k2[1],j2[1]);
fulladder fa77(k1[3],p3[1],p4[0],k2[2],j2[2]);
fulladder fa78(k1[4],k1[28],j1[3],k2[3],j2[3]);
fulladder fa79(k1[5],k1[29],p6[0],k2[4],j2[4]);
fulladder fa80(k1[6],k1[30],p6[1],k2[5],j2[5]);
fulladder fa81(k1[7],k1[31],k1[49],k2[6],j2[6]);
fulladder fa82(k1[8],k1[32],k1[50],k2[7],j2[7]);
fulladder fa83(k1[9],k1[33],k1[51],k2[8],j2[8]);
fulladder fa84(k1[10],k1[34],k1[52],k2[9],j2[9]);
fulladder fa85(k1[11],k1[35],k1[53],k2[10],j2[10]);
fulladder fa86(k1[12],k1[36],k1[54],k2[11],j2[11]);
fulladder fa87(k1[13],k1[37],k1[55],k2[12],j2[12]);
fulladder fa88(k1[14],k1[38],k1[56],k2[13],j2[13]);
fulladder fa89(k1[15],k1[39],k1[57],k2[14],j2[14]);
fulladder fa90(k1[16],k1[40],k1[58],k2[15],j2[15]);
fulladder fa91(k1[17],k1[41],k1[59],k2[16],j2[16]);
fulladder fa92(k1[18],k1[42],k1[60],k2[17],j2[17]);
fulladder fa93(k1[19],k1[43],k1[61],k2[18],j2[18]);
fulladder fa94(k1[20],k1[44],k1[62],k2[19],j2[19]);
fulladder fa95(k1[21],k1[45],k1[63],k2[20],j2[20]);
fulladder fa96(k1[22],k1[46],p14[9],k2[21],j2[21]);
fulladder fa97(k1[23],k1[47],p15[9],k2[22],j2[22]);
fulladder fa98(k1[24],k1[48],j1[23],k2[23],j2[23]);
fulladder fa99(k1[25],p14[12],p15[11],k2[24],j2[24]);
fulladder fa100(k1[26],p15[12],j1[25],k2[25],j2[25]);
fulladder fa101(p14[15],p15[14],j1[27],k2[26],j2[26]);
fulladder fa102(p7[0],j1[5],j1[29],k2[27],j2[27]);
fulladder fa103(p9[0],j1[7],j1[31],k2[28],j2[28]);
fulladder fa104(p9[1],p10[0],j1[8],k2[29],j2[29]);
fulladder fa105(k1[64],j1[9],j1[33],k2[30],j2[30]);
fulladder fa106(k1[65],p12[0],j1[10],k2[31],j2[31]);
fulladder fa107(k1[66],p12[1],p13[0],k2[32],j2[32]);
fulladder fa108(k1[67],k1[73],j1[12],k2[33],j2[33]);
fulladder fa109(k1[68],k1[74],p15[0],k2[34],j2[34]);
fulladder fa110(k1[69],k1[75],j1[14],k2[35],j2[35]);
fulladder fa111(k1[70],p14[3],p15[2],k2[36],j2[36]);
fulladder fa112(k1[71],p15[3],j1[16],k2[37],j2[37]);
fulladder fa113(k1[72],j1[17],j1[41],k2[38],j2[38]);
fulladder fa114(p14[6],p15[5],j1[18],k2[39],j2[39]);
fulladder fa115(p15[6],j1[19],j1[43],k2[40],j2[40]);
fulladder fa116(j1[20],j1[44],j1[62],k2[41],j2[41]);
fulladder fa117(p15[8],j1[21],j1[45],k2[42],j2[42]);
fulladder fa118(j1[34],j1[52],j1[64],k2[43],j2[43]);
fulladder fa119(j1[11],j1[35],j1[53],k2[44],j2[44]);
fulladder fa120(j1[36],j1[54],j1[66],k2[45],j2[45]);
fulladder fa121(j1[13],j1[37],j1[55],k2[46],j2[46]);
fulladder fa122(j1[38],j1[56],j1[68],k2[47],j2[47]);
fulladder fa123(j1[15],j1[39],j1[57],k2[48],j2[48]);
fulladder fa124(j1[40],j1[58],j1[70],k2[49],j2[49]);
fulladder fa125(j1[42],j1[60],j1[72],k2[50],j2[50]);
halfadder ha3(j2[0],k2[1],k3[0],j3[0]);
fulladder fa126(k2[2],j2[1],j1[2],k3[1],j3[1]);
fulladder fa127(k2[4],j2[3],j1[4],k3[2],j3[2]);
fulladder fa128(k2[5],j2[4],k2[27],k3[3],j3[3]);
fulladder fa129(k2[6],j2[5],j2[27],k3[4],j3[4]);
fulladder fa130(k2[7],j2[6],k2[28],k3[5],j3[5]);
fulladder fa131(k2[8],j2[7],k2[29],k3[6],j3[6]);
fulladder fa132(k2[9],j2[8],k2[30],k3[7],j3[7]);
fulladder fa133(k2[10],j2[9],k2[31],k3[8],j3[8]);
fulladder fa134(k2[11],j2[10],k2[32],k3[9],j3[9]);
fulladder fa135(k2[12],j2[11],k2[33],k3[10],j3[10]);
fulladder fa136(k2[13],j2[12],k2[34],k3[11],j3[11]);
fulladder fa137(k2[14],j2[13],k2[35],k3[12],j3[12]);
fulladder fa138(k2[15],j2[14],k2[36],k3[13],j3[13]);
fulladder fa139(k2[16],j2[15],k2[37],k3[14],j3[14]);
fulladder fa140(k2[17],j2[16],k2[38],k3[15],j3[15]);
fulladder fa141(k2[18],j2[17],k2[39],k3[16],j3[16]);
fulladder fa142(k2[19],j2[18],k2[40],k3[17],j3[17]);
fulladder fa143(k2[20],j2[19],k2[41],k3[18],j3[18]);
fulladder fa144(k2[21],j2[20],k2[42],k3[19],j3[19]);
fulladder fa145(k2[22],j2[21],j2[42],k3[20],j3[20]);
fulladder fa146(k2[23],j2[22],j1[47],k3[21],j3[21]);
fulladder fa147(k2[24],j2[23],j1[24],k3[22],j3[22]);
fulladder fa148(j2[25],k1[27],j1[26],k3[23],j3[23]);
fulladder fa149(j2[28],j1[32],j1[50],k3[24],j3[24]);
fulladder fa150(j2[31],k2[44],j2[43],k3[25],j3[25]);
fulladder fa151(j2[32],k2[45],j2[44],k3[26],j3[26]);
fulladder fa152(j2[33],k2[46],j2[45],k3[27],j3[27]);
fulladder fa153(j2[34],k2[47],j2[46],k3[28],j3[28]);
fulladder fa154(j2[35],k2[48],j2[47],k3[29],j3[29]);
fulladder fa155(j2[36],k2[49],j2[48],k3[30],j3[30]);
fulladder fa156(j2[37],j2[49],j1[59],k3[31],j3[31]);
fulladder fa157(j2[39],j2[50],j1[61],k3[32],j3[32]);
halfadder ha4(k3[1],j3[0],k4[0],j4[0]);
fulladder fa158(k2[3],j2[2],j3[1],k4[1],j4[1]);
fulladder fa159(k3[4],j3[3],j1[6],k4[2],j4[2]);
fulladder fa160(k3[5],j3[4],j1[49],k4[3],j4[3]);
fulladder fa161(k3[6],k3[24],j3[5],k4[4],j4[4]);
fulladder fa162(k3[7],j3[6],j3[24],k4[5],j4[5]);
fulladder fa163(k3[8],j3[7],j2[30],k4[6],j4[6]);
fulladder fa164(k3[9],j3[8],k3[25],k4[7],j4[7]);
fulladder fa165(k3[10],j3[9],k3[26],k4[8],j4[8]);
fulladder fa166(k3[11],j3[10],k3[27],k4[9],j4[9]);
fulladder fa167(k3[12],j3[11],k3[28],k4[10],j4[10]);
fulladder fa168(k3[13],j3[12],k3[29],k4[11],j4[11]);
fulladder fa169(k3[14],j3[13],k3[30],k4[12],j4[12]);
fulladder fa170(k3[15],j3[14],k3[31],k4[13],j4[13]);
fulladder fa171(k3[16],j3[15],j3[31],k4[14],j4[14]);
fulladder fa172(k3[17],j3[16],k3[32],k4[15],j4[15]);
fulladder fa173(k3[18],j3[17],j3[32],k4[16],j4[16]);
fulladder fa174(k3[19],j3[18],j2[41],k4[17],j4[17]);
fulladder fa175(k3[20],j3[19],j1[22],k4[18],j4[18]);
fulladder fa176(k3[22],j3[21],j1[48],k4[19],j4[19]);
fulladder fa177(j3[22],k2[25],j2[24],k4[20],j4[20]);
fulladder fa178(j3[26],j1[67],j1[73],k4[21],j4[21]);
fulladder fa179(j3[28],j1[69],j1[75],k4[22],j4[22]);
halfadder ha5(k4[1],j4[0],k5[0],j5[0]);
fulladder fa180(k3[2],j1[28],j4[1],k5[1],j5[1]);
fulladder fa181(k4[5],j4[4],j2[29],k5[2],j5[2]);
fulladder fa182(k4[6],j4[5],k2[43],k5[3],j5[3]);
fulladder fa183(k4[7],j4[6],j1[65],k5[4],j5[4]);
fulladder fa184(k4[8],j4[7],j3[25],k5[5],j5[5]);
fulladder fa185(k4[9],j4[8],k4[21],k5[6],j5[6]);
fulladder fa186(k4[10],j4[9],j4[21],k5[7],j5[7]);
fulladder fa187(k4[11],j4[10],k4[22],k5[8],j5[8]);
fulladder fa188(k4[12],j4[11],j4[22],k5[9],j5[9]);
fulladder fa189(k4[13],j4[12],j3[30],k5[10],j5[10]);
fulladder fa190(k4[14],j4[13],j2[38],k5[11],j5[11]);
fulladder fa191(k4[16],j4[15],j2[40],k5[12],j5[12]);
fulladder fa192(k4[17],j4[16],j1[63],k5[13],j5[13]);
fulladder fa193(k4[18],j4[17],j1[46],k5[14],j5[14]);
fulladder fa194(k3[21],j3[20],j4[18],k5[15],j5[15]);
halfadder ha6(j5[0],k5[1],k6[0],j6[0]);
fulladder fa195(j5[1],k3[3],j3[2],k6[1],j6[1]);
fulladder fa196(k5[7],j5[6],j3[27],k6[2],j6[2]);
fulladder fa197(k5[9],j5[8],j3[29],k6[3],j6[3]);
fulladder fa198(k5[10],j5[9],j1[71],k6[4],j6[4]);
fulladder fa199(k5[11],j5[10],k2[50],k6[5],j6[5]);
fulladder fa200(k4[15],j4[14],j5[11],k6[6],j6[6]);
halfadder ha7(k6[1],j6[0],k7[0],j7[0]);
fulladder fa201(j6[1],k4[2],j1[30],k7[1],j7[1]);
fulladder fa202(k5[8],j5[7],j6[2],k7[2],j7[2]);
halfadder ha8(k7[1],j7[0],k8[0],j8[0]);
halfadder ha9(k4[3],j4[2],k8[1],j8[1]);
halfadder ha10(k4[4],j4[3],k8[2],j8[2]);
halfadder ha11(k5[2],j1[51],k8[3],j8[3]);
halfadder ha12(k5[3],j5[2],k8[4],j8[4]);
halfadder ha13(k5[4],j5[3],k8[5],j8[5]);
halfadder ha14(k5[5],j5[4],k8[6],j8[6]);
halfadder ha15(k5[6],j5[5],k8[7],j8[7]);
halfadder ha16(k6[2],j1[74],k8[8],j8[8]);
fulladder fa203(k8[1],j8[0],j7[1],k9[0],j9[0]);
fulladder fa204(k8[2],j8[1],j9[0],k9[1],j9[1]);
fulladder fa205(k8[3],j8[2],j9[1],k9[2],j9[2]);
fulladder fa206(k8[4],j8[3],j9[2],k9[3],j9[3]);
fulladder fa207(k8[5],j8[4],j9[3],k9[4],j9[4]);
fulladder fa208(k8[6],j8[5],j9[4],k9[5],j9[5]);
fulladder fa209(k8[7],j8[6],j9[5],k9[6],j9[6]);
fulladder fa210(k8[8],j8[7],j9[6],k9[7],j9[7]);
fulladder fa211(k7[2],j8[8],j9[7],k9[8],j9[8]);
fulladder fa212(k6[3],j7[2],j9[8],k9[9],j9[9]);
fulladder fa213(k6[4],j6[3],j9[9],k9[10],j9[10]);
fulladder fa214(k6[5],j6[4],j9[10],k9[11],j9[11]);
fulladder fa215(k6[6],j6[5],j9[11],k9[12],j9[12]);
fulladder fa216(j6[6],k5[12],j9[12],k9[13],j9[13]);
fulladder fa217(k5[13],j5[12],j9[13],k9[14],j9[14]);
fulladder fa218(k5[14],j5[13],j9[14],k9[15],j9[15]);
fulladder fa219(k5[15],j5[14],j9[15],k9[16],j9[16]);
fulladder fa220(k4[19],j5[15],j9[16],k9[17],j9[17]);
fulladder fa221(k4[20],j4[19],j9[17],k9[18],j9[18]);
fulladder fa222(j4[20],k3[23],j9[18],k9[19],j9[19]);
fulladder fa223(k2[26],j3[23],j9[19],k9[20],j9[20]);
fulladder fa224(p15[15],j2[26],j9[20],k9[21],j9[21]);
endmodule
module fulladder(a,b,cin,sum,co);
input a,b,cin;
output sum,co;
assign sum=a^b^cin;
assign co=(a&b)|(a&cin)|(b&cin);
endmodule
module halfadder(a,b,sum,co);
input a,b;
output sum,co;
assign sum=a^b;
assign co=a&b;
endmodule
module pp(a,b,c);
input[16:0] a;
input b;
output[16:0] c;
assign c[0]=a[0]&b;
assign c[1]=a[1]&b;
assign c[2]=a[2]&b;
assign c[3]=a[3]&b;
assign c[4]=a[4]&b;
assign c[5]=a[5]&b;
assign c[6]=a[6]&b;
assign c[7]=a[7]&b;
assign c[8]=a[8]&b;
assign c[9]=a[9]&b;
assign c[10]=a[10]&b;
assign c[11]=a[11]&b;
assign c[12]=a[12]&b;
assign c[13]=a[13]&b;
assign c[14]=a[14]&b;
assign c[15]=a[15]&b;
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -