4 digit BCD adder
// 顶层模块,实现4位BCD进位传递加法器
module top_module (
input [15:0] a, // 16位BCD输入a(由4位BCD数字组成)
input [15:0] b, // 16位BCD输入b(由4位BCD数字组成)
input cin, // 进位输入
output cout, // 进位输出
output [15:0] sum // 16位BCD和
);
// 中间信号,用于保存每个BCD加法器的进位输出
wire c1, c2, c3;
// 实例化4个bcd_fadd加法器,分别处理每4位BCD数字的加法
bcd_fadd bcd0 (
.a(a[3:0]), .b(b[3:0]), .cin(cin), .cout(c1), .sum(sum[3:0]) // 处理最低4位
);
bcd_fadd bcd1 (
.a(a[7:4]), .b(b[7:4]), .cin(c1), .cout(c2), .sum(sum[7:4]) // 处理次低4位
);
bcd_fadd bcd2 (
.a(a[11:8]), .b(b[11:8]), .cin(c2), .cout(c3), .sum(sum[11:8]) // 处理次高4位
);
bcd_fadd bcd3 (
.a(a[15:12]), .b(b[15:12]), .cin(c3), .cout(cout), .sum(sum[15:12]) // 处理最高4位
);
endmodule