最后一题:使用for循环和4位全加器生成一个400位的全加器
module bcd_fadd (
input [3:0] a,
input [3:0] b,
input cin,
output cout,
output [3:0] sum );
解题思路:使用for循环来进行批量实例例化,
module top_module(
input [399:0] a, b,
input cin,
output cout,
output [399:0] sum );
wire [99:0] cout_temp;
generate
genvar i;
for(i=0;i<100;i++) begin:bcd_fadd
if(i == 0)
bcd_fadd bcd_fadd_inst(a[3:0],b[3:0],cin,cout_temp[0],sum[3:0]);
else
bcd_fadd bcd_fadd_inst(a[3+4*i:0+4*i],b[3+4*i:0+4*i],cout_temp[i-1],cout_temp[i],sum[3+4*i:0+4*i]);
end
endgenerate
assign cout = cout_temp[99];
endmodule
100位的全加器也是类似的思路方法