Sei sulla pagina 1di 6

`timescale 1ns / 1ps

////////////////////////////////////////////////////////////////////////////////
//
// Company:
// Engineer:
//
// Create Date:
14:31:49 05/22/2014
// Design Name:
// Module Name:
array1233
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////
//
module arraymulti16(x,y,clock,z);
//module arraymulti16(x,y,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
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
halfadder

fa53(p6[6],p7[5],p8[4],k1[53],j1[53]);
fa54(p6[7],p7[6],p8[5],k1[54],j1[54]);
fa55(p6[8],p7[7],p8[6],k1[55],j1[55]);
fa56(p6[9],p7[8],p8[7],k1[56],j1[56]);
fa57(p7[9],p8[8],p9[7],k1[57],j1[57]);
fa58(p8[9],p9[8],p10[7],k1[58],j1[58]);
fa59(p9[9],p10[8],p11[7],k1[59],j1[59]);
fa60(p10[9],p11[8],p12[7],k1[60],j1[60]);
fa61(p11[9],p12[8],p13[7],k1[61],j1[61]);
fa62(p12[9],p13[8],p14[7],k1[62],j1[62]);
fa63(p13[9],p14[8],p15[7],k1[63],j1[63]);
fa64(p9[2],p10[1],p11[0],k1[64],j1[64]);
fa65(p9[3],p10[2],p11[1],k1[65],j1[65]);
fa66(p9[4],p10[3],p11[2],k1[66],j1[66]);
fa67(p9[5],p10[4],p11[3],k1[67],j1[67]);
fa68(p9[6],p10[5],p11[4],k1[68],j1[68]);
fa69(p10[6],p11[5],p12[4],k1[69],j1[69]);
fa70(p11[6],p12[5],p13[4],k1[70],j1[70]);
fa71(p12[6],p13[5],p14[4],k1[71],j1[71]);
fa72(p13[6],p14[5],p15[4],k1[72],j1[72]);
fa73(p12[2],p13[1],p14[0],k1[73],j1[73]);
fa74(p12[3],p13[2],p14[1],k1[74],j1[74]);
fa75(p13[3],p14[2],p15[1],k1[75],j1[75]);
ha2(k1[1],j1[0],k2[0],j2[0]);

fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder

fa76(k1[2],p3[0],j1[1],k2[1],j2[1]);
fa77(k1[3],p3[1],p4[0],k2[2],j2[2]);
fa78(k1[4],k1[28],j1[3],k2[3],j2[3]);
fa79(k1[5],k1[29],p6[0],k2[4],j2[4]);
fa80(k1[6],k1[30],p6[1],k2[5],j2[5]);
fa81(k1[7],k1[31],k1[49],k2[6],j2[6]);
fa82(k1[8],k1[32],k1[50],k2[7],j2[7]);
fa83(k1[9],k1[33],k1[51],k2[8],j2[8]);
fa84(k1[10],k1[34],k1[52],k2[9],j2[9]);
fa85(k1[11],k1[35],k1[53],k2[10],j2[10]);
fa86(k1[12],k1[36],k1[54],k2[11],j2[11]);
fa87(k1[13],k1[37],k1[55],k2[12],j2[12]);
fa88(k1[14],k1[38],k1[56],k2[13],j2[13]);
fa89(k1[15],k1[39],k1[57],k2[14],j2[14]);
fa90(k1[16],k1[40],k1[58],k2[15],j2[15]);
fa91(k1[17],k1[41],k1[59],k2[16],j2[16]);
fa92(k1[18],k1[42],k1[60],k2[17],j2[17]);
fa93(k1[19],k1[43],k1[61],k2[18],j2[18]);
fa94(k1[20],k1[44],k1[62],k2[19],j2[19]);
fa95(k1[21],k1[45],k1[63],k2[20],j2[20]);
fa96(k1[22],k1[46],p14[9],k2[21],j2[21]);
fa97(k1[23],k1[47],p15[9],k2[22],j2[22]);
fa98(k1[24],k1[48],j1[23],k2[23],j2[23]);
fa99(k1[25],p14[12],p15[11],k2[24],j2[24]);
fa100(k1[26],p15[12],j1[25],k2[25],j2[25]);
fa101(p14[15],p15[14],j1[27],k2[26],j2[26]);
fa102(p7[0],j1[5],j1[29],k2[27],j2[27]);
fa103(p9[0],j1[7],j1[31],k2[28],j2[28]);
fa104(p9[1],p10[0],j1[8],k2[29],j2[29]);
fa105(k1[64],j1[9],j1[33],k2[30],j2[30]);
fa106(k1[65],p12[0],j1[10],k2[31],j2[31]);
fa107(k1[66],p12[1],p13[0],k2[32],j2[32]);
fa108(k1[67],k1[73],j1[12],k2[33],j2[33]);

fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
halfadder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
halfadder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder

fa109(k1[68],k1[74],p15[0],k2[34],j2[34]);
fa110(k1[69],k1[75],j1[14],k2[35],j2[35]);
fa111(k1[70],p14[3],p15[2],k2[36],j2[36]);
fa112(k1[71],p15[3],j1[16],k2[37],j2[37]);
fa113(k1[72],j1[17],j1[41],k2[38],j2[38]);
fa114(p14[6],p15[5],j1[18],k2[39],j2[39]);
fa115(p15[6],j1[19],j1[43],k2[40],j2[40]);
fa116(j1[20],j1[44],j1[62],k2[41],j2[41]);
fa117(p15[8],j1[21],j1[45],k2[42],j2[42]);
fa118(j1[34],j1[52],j1[64],k2[43],j2[43]);
fa119(j1[11],j1[35],j1[53],k2[44],j2[44]);
fa120(j1[36],j1[54],j1[66],k2[45],j2[45]);
fa121(j1[13],j1[37],j1[55],k2[46],j2[46]);
fa122(j1[38],j1[56],j1[68],k2[47],j2[47]);
fa123(j1[15],j1[39],j1[57],k2[48],j2[48]);
fa124(j1[40],j1[58],j1[70],k2[49],j2[49]);
fa125(j1[42],j1[60],j1[72],k2[50],j2[50]);
ha3(j2[0],k2[1],k3[0],j3[0]);
fa126(k2[2],j2[1],j1[2],k3[1],j3[1]);
fa127(k2[4],j2[3],j1[4],k3[2],j3[2]);
fa128(k2[5],j2[4],k2[27],k3[3],j3[3]);
fa129(k2[6],j2[5],j2[27],k3[4],j3[4]);
fa130(k2[7],j2[6],k2[28],k3[5],j3[5]);
fa131(k2[8],j2[7],k2[29],k3[6],j3[6]);
fa132(k2[9],j2[8],k2[30],k3[7],j3[7]);
fa133(k2[10],j2[9],k2[31],k3[8],j3[8]);
fa134(k2[11],j2[10],k2[32],k3[9],j3[9]);
fa135(k2[12],j2[11],k2[33],k3[10],j3[10]);
fa136(k2[13],j2[12],k2[34],k3[11],j3[11]);
fa137(k2[14],j2[13],k2[35],k3[12],j3[12]);
fa138(k2[15],j2[14],k2[36],k3[13],j3[13]);
fa139(k2[16],j2[15],k2[37],k3[14],j3[14]);
fa140(k2[17],j2[16],k2[38],k3[15],j3[15]);
fa141(k2[18],j2[17],k2[39],k3[16],j3[16]);
fa142(k2[19],j2[18],k2[40],k3[17],j3[17]);
fa143(k2[20],j2[19],k2[41],k3[18],j3[18]);
fa144(k2[21],j2[20],k2[42],k3[19],j3[19]);
fa145(k2[22],j2[21],j2[42],k3[20],j3[20]);
fa146(k2[23],j2[22],j1[47],k3[21],j3[21]);
fa147(k2[24],j2[23],j1[24],k3[22],j3[22]);
fa148(j2[25],k1[27],j1[26],k3[23],j3[23]);
fa149(j2[28],j1[32],j1[50],k3[24],j3[24]);
fa150(j2[31],k2[44],j2[43],k3[25],j3[25]);
fa151(j2[32],k2[45],j2[44],k3[26],j3[26]);
fa152(j2[33],k2[46],j2[45],k3[27],j3[27]);
fa153(j2[34],k2[47],j2[46],k3[28],j3[28]);
fa154(j2[35],k2[48],j2[47],k3[29],j3[29]);
fa155(j2[36],k2[49],j2[48],k3[30],j3[30]);
fa156(j2[37],j2[49],j1[59],k3[31],j3[31]);
fa157(j2[39],j2[50],j1[61],k3[32],j3[32]);
ha4(k3[1],j3[0],k4[0],j4[0]);
fa158(k2[3],j2[2],j3[1],k4[1],j4[1]);
fa159(k3[4],j3[3],j1[6],k4[2],j4[2]);
fa160(k3[5],j3[4],j1[49],k4[3],j4[3]);
fa161(k3[6],k3[24],j3[5],k4[4],j4[4]);
fa162(k3[7],j3[6],j3[24],k4[5],j4[5]);
fa163(k3[8],j3[7],j2[30],k4[6],j4[6]);
fa164(k3[9],j3[8],k3[25],k4[7],j4[7]);
fa165(k3[10],j3[9],k3[26],k4[8],j4[8]);
fa166(k3[11],j3[10],k3[27],k4[9],j4[9]);

fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder

fa167(k3[12],j3[11],k3[28],k4[10],j4[10]);
fa168(k3[13],j3[12],k3[29],k4[11],j4[11]);
fa169(k3[14],j3[13],k3[30],k4[12],j4[12]);
fa170(k3[15],j3[14],k3[31],k4[13],j4[13]);
fa171(k3[16],j3[15],j3[31],k4[14],j4[14]);
fa172(k3[17],j3[16],k3[32],k4[15],j4[15]);
fa173(k3[18],j3[17],j3[32],k4[16],j4[16]);
fa174(k3[19],j3[18],j2[41],k4[17],j4[17]);
fa175(k3[20],j3[19],j1[22],k4[18],j4[18]);
fa176(k3[22],j3[21],j1[48],k4[19],j4[19]);
fa177(j3[22],k2[25],j2[24],k4[20],j4[20]);
fa178(j3[26],j1[67],j1[73],k4[21],j4[21]);
fa179(j3[28],j1[69],j1[75],k4[22],j4[22]);

halfadder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder

ha5(k4[1],j4[0],k5[0],j5[0]);
fa180(k3[2],j1[28],j4[1],k5[1],j5[1]);
fa181(k4[5],j4[4],j2[29],k5[2],j5[2]);
fa182(k4[6],j4[5],k2[43],k5[3],j5[3]);
fa183(k4[7],j4[6],j1[65],k5[4],j5[4]);
fa184(k4[8],j4[7],j3[25],k5[5],j5[5]);
fa185(k4[9],j4[8],k4[21],k5[6],j5[6]);
fa186(k4[10],j4[9],j4[21],k5[7],j5[7]);
fa187(k4[11],j4[10],k4[22],k5[8],j5[8]);
fa188(k4[12],j4[11],j4[22],k5[9],j5[9]);
fa189(k4[13],j4[12],j3[30],k5[10],j5[10]);
fa190(k4[14],j4[13],j2[38],k5[11],j5[11]);
fa191(k4[16],j4[15],j2[40],k5[12],j5[12]);
fa192(k4[17],j4[16],j1[63],k5[13],j5[13]);
fa193(k4[18],j4[17],j1[46],k5[14],j5[14]);
fa194(k3[21],j3[20],j4[18],k5[15],j5[15]);

halfadder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
halfadder
fulladder
fulladder

ha6(j5[0],k5[1],k6[0],j6[0]);
fa195(j5[1],k3[3],j3[2],k6[1],j6[1]);
fa196(k5[7],j5[6],j3[27],k6[2],j6[2]);
fa197(k5[9],j5[8],j3[29],k6[3],j6[3]);
fa198(k5[10],j5[9],j1[71],k6[4],j6[4]);
fa199(k5[11],j5[10],k2[50],k6[5],j6[5]);
fa200(k4[15],j4[14],j5[11],k6[6],j6[6]);
ha7(k6[1],j6[0],k7[0],j7[0]);
fa201(j6[1],k4[2],j1[30],k7[1],j7[1]);
fa202(k5[8],j5[7],j6[2],k7[2],j7[2]);

halfadder
halfadder
halfadder
halfadder
halfadder
halfadder
halfadder
halfadder
halfadder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder

ha8(k7[1],j7[0],k8[0],j8[0]);
ha9(k4[3],j4[2],k8[1],j8[1]);
ha10(k4[4],j4[3],k8[2],j8[2]);
ha11(k5[2],j1[51],k8[3],j8[3]);
ha12(k5[3],j5[2],k8[4],j8[4]);
ha13(k5[4],j5[3],k8[5],j8[5]);
ha14(k5[5],j5[4],k8[6],j8[6]);
ha15(k5[6],j5[5],k8[7],j8[7]);
ha16(k6[2],j1[74],k8[8],j8[8]);
fa203(k8[1],j8[0],j7[1],k9[0],j9[0]);
fa204(k8[2],j8[1],j9[0],k9[1],j9[1]);
fa205(k8[3],j8[2],j9[1],k9[2],j9[2]);
fa206(k8[4],j8[3],j9[2],k9[3],j9[3]);
fa207(k8[5],j8[4],j9[3],k9[4],j9[4]);
fa208(k8[6],j8[5],j9[4],k9[5],j9[5]);
fa209(k8[7],j8[6],j9[5],k9[6],j9[6]);
fa210(k8[8],j8[7],j9[6],k9[7],j9[7]);
fa211(k7[2],j8[8],j9[7],k9[8],j9[8]);

fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
fulladder
endmodule

fa212(k6[3],j7[2],j9[8],k9[9],j9[9]);
fa213(k6[4],j6[3],j9[9],k9[10],j9[10]);
fa214(k6[5],j6[4],j9[10],k9[11],j9[11]);
fa215(k6[6],j6[5],j9[11],k9[12],j9[12]);
fa216(j6[6],k5[12],j9[12],k9[13],j9[13]);
fa217(k5[13],j5[12],j9[13],k9[14],j9[14]);
fa218(k5[14],j5[13],j9[14],k9[15],j9[15]);
fa219(k5[15],j5[14],j9[15],k9[16],j9[16]);
fa220(k4[19],j5[15],j9[16],k9[17],j9[17]);
fa221(k4[20],j4[19],j9[17],k9[18],j9[18]);
fa222(j4[20],k3[23],j9[18],k9[19],j9[19]);
fa223(k2[26],j3[23],j9[19],k9[20],j9[20]);
fa224(p15[15],j2[26],j9[20],k9[21],j9[21]);

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

Potrebbero piacerti anche