题目描述
You are provided with a BCD one-digit adder named bcd_fadd that adds two BCD digits and carry-in, and produces a sum and carry-out.
module bcd_fadd (
input [3:0] a,
input [3:0] b,
input cin,
output cout,
output [3:0] sum );
Instantiate 100 copies of bcd_fadd to create a 100-digit BCD ripple-carry adder. Your adder should add two 100-digit BCD numbers (packed into 400-bit vectors) and a carry-in to produce a 100-digit sum and carry out.
代码
module top_module(
input [399:0] a, b,
input cin,
output cout,
output [399:0] sum );
wire[99:0] cc;
bcd_fadd fadd(a[3:0],b[3:0],cin,cc[0],sum[3:0]);
generate
genvar i;
for(i=1;i<100;i++)
begin:bcd_fadd1
bcd_fadd fadd(
a[(4*i+3):(4*i)],
b[(4*i+3):(4*i)],
cc[i-1],
cc[i],
sum[(4*i+3):(4*i)]);
end
endgenerate
assign cout=cc[99];
endmodule