通过实例化 100 个完整加法器来创建 100 位二进制纹波进位加法器。加法器将两个 100 位数字和一个进位相加,以产生 100 位和并执行。
module top_module(
input [99:0] a, b,
input cin,
output [99:0] cout,
output [99:0] sum );
genvar i;
generate for (i = 0; i < 100; i++)
begin: adder
if (i == 0)
full_adder adder_i(.a(a[i]), .b(b[i]), .cin(cin), .cout(cout[i]), .sum(sum[i]));
else
full_adder adder_i(.a(a[i]), .b(b[i]), .cin(cout[i-1]), .cout(cout[i]), .sum(sum[i]));
end
endgenerate
endmodule
module full_adder(
input a,b,cin,
output cout,sum
);
assign sum = a^b^cin;
assign cout = (a&b)|(a&cin)|(b&cin);
endmodule