module top_module (
input [3:0] x,
input [3:0] y,
output [4:0] sum);
reg [3:0] cout;
genvar i ;
generate
for(i=0;i<4;i++)
begin:ll
if(i == 0)
half_add(.a(x[i]),.b(y[i]),.sum(sum[i]),.cout(cout[i]));
else if(i == 3)
full_add(.a(x[i]),.b(y[i]),.cin(cout[i-1]),.sum(sum[i]),.cout(sum[i+1]));
else
full_add(.a(x[i]),.b(y[i]),.cin(cout[i-1]),.sum(sum[i]),.cout(cout[i]));
end
endgenerate
endmodule
module full_add(input a,b,cin,output sum,cout);
assign sum = abcin;
assign cout = (a&b)|(a&cin)|(b&cin);
endmodule
module half_add(input a,b,output sum,cout);
assign sum = a^b;
assign cout = a&b;
endmodule
HDLBits-Exams/m2014 q4j
最新推荐文章于 2024-11-29 22:02:49 发布