我一直在研究Verilog程序,该程序应该在每个时钟增量上向16位输出添加一个带符号的8位输入,并在接收到复位信号时复位。添加部分工作正常,甚至添加负1值的作品,但我得到奇怪的结果在模拟数字少于那个。自从我上次使用Verilog已经过去了大约一年之后,尽管尝试了所有我能想到的事情,但我不确定问题出在哪里。这是我有尽可能代码:Verilog签名加法减法错误
module varcount (clk, reset, in, out);
input clk, reset;
input [7:0] in;
output reg [15:0] out;
reg [15:0] temp;
reg [15:0]count;
parameter X=1000000;
always @ (posedge clk)
begin
if (in[7] == 1)
begin
temp = 16'b00000000000000001 + !in;
count = count - temp;
if (reset)
begin
count = 0;
out = 0;
end
out = count;
end
else
begin
count = count + in;
if (reset)
begin
count = 0;
out = 0;
end
out = count;
end
end
endmodule
这里是我的模拟输入:
这里就是我得到的输出。
好像在我的节目一个直接的错误,但我不能确定它。
欢迎StackOverflow上。由于您没有正确缩进,因此很难阅读您的代码。你也不会显示你期望的结果与实际结果的正确结果。 –