私は、クロック増分ごとに符号付き8ビット入力を16ビット出力に追加し、リセット信号を受信するとリセットされるVerilogプログラムに取り組んでいます。加算部分は正常に動作しており、負の1の値を加算しても動作しますが、それより少ない数のシミュレーションでは奇妙な結果が出ます。私がVerilogを最後に使用してから約1年が経ちました。私が考えることができるすべてを試しても、問題は何か不明です。ここで私は限りコードとして持っているものです。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
ここに私のシミュレーション入力です:
そして、ここでは、私が手出力です。
それは私のプログラムでストレートフォワード・エラーのように思えるが、私はそれを識別することはできません。
ようこそすなわち。コードを正しくインデントしていないため、コードを読みにくいです。実際の結果に対して正しい結果が期待されるものは表示されません。 –