答案:
module top_module(
input [31:0] a,
input [31:0] b,
output [31:0] sum
);
wire cin1,cin0;
reg [15:0] sum1,sum2,sum3;
reg cout1;
reg [31:0]sum0;
assign cin1 = 1'b1 ;
assign cin0 = 1'b0 ;
add16 instance_lower (.a(a[15:0]) , .b(b[15:0]), .cin(), .sum(sum1), .cout(cout1)) ;
add16 instance_upper0(.a(a[31:16]), .b(b[31:16]), .cin(cin0), .sum(sum2), .cout()) ;
add16 instance_upper1(.a(a[31:16]), .b(b[31:16]), .cin(cin1), .sum(sum3), .cout()) ;
always @(*) begin
if(cout1)
sum0 = {sum3,sum1} ;
else
sum0 = {sum2,sum1} ;
end
assign
sum = sum0 ;
endmodule
这里需要注意的是要用Always (*)来触发赋值语句,这是使用if 语句的前提。