注意:Use a 32-bit wide XOR gate to invert the b input whenever sub is 1. (This can also be viewed as b[31:0] XORed with sub replicated 32 times.
我的代码:
module top_module(
input [31:0] a,
input [31:0] b,
input sub,
output [31:0] sum
);
wire [31:0] b_in ;
wire cout_cin ;
wire [15:0] sum_1,sum_2;
add16 add1(
.a(a[15:0]),
.b(b_in[15:0]),
.cin(sub),
.cout(cout_cin),
.sum(sum_1)
);
add16 add2(
.a(a[31:16]),
.b(b_in[31:16]),
.cin(cout_cin),
//.cout(),
.sum(sum_2)
);
assign sum ={sum_2,sum_1} ;
assign b_in = b^{32{sub}} ;//(~b&sub)|(b& ~sub) ;
endmodule