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