注意:第一级加法器与之前相同,但是我们复制了第二级加法器,一个假设进位= 0,另一个假设进位= 1,然后使用快速2比1多路复用器选择哪个结果碰巧是正确的。
我的代码:
module top_module(
input [31:0] a,
input [31:0] b,
output [31:0] sum
);
wire [15:0] sum_1,sum_2,sum_3 ;
wire cout_out ;
add16 add1 (
.a(a[15:0]),
.b(b[15:0]),
.cin(0),
.cout(cout_out),
.sum(sum_1)
);
add16 add2 (
.a(a[31:16]),
.b(b[31:16]),
.cin(0),
//.cout(),
.sum(sum_2)
);
add16 add3 (
.a(a[31:16]),
.b(b[31:16]),
.cin(1),
//.cout(),
.sum(sum_3)
);
always @(*)begin
case(cout_out)
0:sum={sum_2,sum_1} ;
1:sum={sum_3,sum_1} ;
endcase
end
endmodule