3 bit binary adder

module top_module( 
    input [2:0] a, b,    // 两个3位输入
    input cin,            // 进位输入
    output [2:0] cout,    // 进位输出
    output [2:0] sum );   // 和数输出

    // 中间进位信号
    wire c1, c2;  // 用于连接全加器的进位输出

    // 第一个全加器
    full_adder fa0 (
        .a(a[0]),
        .b(b[0]),
        .cin(cin),
        .sum(sum[0]),
        .cout(c1)
    );

    // 第二个全加器
    full_adder fa1 (
        .a(a[1]),
        .b(b[1]),
        .cin(c1),
        .sum(sum[1]),
        .cout(c2)
    );

    // 第三个全加器
    full_adder fa2 (
        .a(a[2]),
        .b(b[2]),
        .cin(c2),
        .sum(sum[2]),
        .cout(cout[2])
    );

    // 最终进位输出
    assign cout[1] = c2;  // 第二个全加器的进位输出
    assign cout[0] = c1;  // 第一个全加器的进位输出

endmodule
module full_adder (
    input a,       // 输入A
    input b,       // 输入B
    input cin,     // 进位输入Cin
    output sum,    // 和数输出
    output cout   // 进位输出
);

    // 和数 = A XOR B XOR Cin
    assign sum = a ^ b ^ cin;

    // 进位 = (A AND B) OR (A AND Cin) OR (B AND Cin)
    assign cout = (a & b) | (a & cin) | (b & cin);

endmodule