Friday, February 6, 2015

multiplier

module ha(sout,cout,a,b);
input a,b;
output sout,cout;
assign sout=a^b;
assign cout=a&b;
endmodule
module fa(sout,cout,a,b,c);
input a,b,c;
output sout,cout;
assign sout=a^b^c;
assign cout=a&b|b&c|c&a;
endmodule
module multi88(p,a,b);
input[3:0] a,b;
output[7:0]p;
wire[17:0]x ;
assign p[0]=a[0]&b[0];
ha e1(p[1],x[1],(a[1]&b[0]),(b[1]&a[0]));
fa e2(x[2],x[3],x[1],(b[1]&a[1]),(b[2]&a[0]));
fa e3(x[4],x[5],x[3],(b[2]&a[1]),(b[3]&a[0]));
ha e4(x[7],x[6],x[5],(b[3]&a[1]));
ha e5(p[2],x[8],x[2],(b[0]&a[2]));
fa e6(x[9],x[10],x[8],x[4],(b[1]&a[2]));
fa e7(x[11],x[12],x[10],x[7],(b[2]&a[2]));
fa e8(x[13],x[14],x[12],x[6],(b[3]&a[2]));
ha e9(p[3],x[15],x[9],(b[0]&a[3]));
fa e10(p[4],x[16],x[15],x[11],(b[1]&a[3]));
fa e11(p[5],x[17],x[16],x[13],(b[2]&a[3]));
fa e12(p[6],p[7],x[14],x[17],(b[3]&a[3]));
endmodule

No comments:

Post a Comment