我已声明两个输入[32:0]端口in1,in2和一个输出reg [32:0] out
在always块中,代码如下: OUT = IN1 + IN2;
现在它可以正常添加,但是当in1 = 0且in2 = -1时,out总是0x0000ffff而不是0xffffffff
我尝试声明整数[32:0]类型,但我认为这样做不正确。
(转录自评论:)
module adder(out, in1, in2, sub);
output reg[31:0] out;
input [31:0] in1, in2;
input [4:0] sub;
always @(*) begin
case (sub)
`ALU_ADD: begin out=alutemp1+alutemp2; //out=in1+in2;
$display("in1 %x and in2 %x and out %x\n",in1,in2,out);
end
end
请指教, 感谢
答案 0 :(得分:0)
我不认为你的加法器工作正常(因为它在我正在使用的软件中无法编译)。但是,如果您将代码更改为以下内容:
module Verilog1(out, in1, in2, sub);
output reg[31:0] out;
input [31:0] in1, in2;
input [4:0] sub;
always @(*)
begin
out <= in1 + in2;
$display("in1 %x and in2 %x and out %x\n",in1,in2,out);
end
endmodule
对于输入in1 = 0
和in2 = -1
,您获得0xffff_ffff
。