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