これは私が書いたシンプルなコードです。私は122116を得ました。しかし、 'outt'の幅を33ビット([32:0])に変更すると、コードがうまく動作し、正解-140028を返すようです。この行動の理由は何ですか?どのようにしてレジスタのビット幅を正しく決定できますか?
`timescale 1ns/1ps
module valu_parser(clk,outt);
input clk;
reg signed [31:0] r_1;
reg signed [31:0] r_2;
output reg signed [31:0] outt;
initial begin
r_1 = -47938;
r_2 = -150096;
end
always @ (posedge clk) begin
outt <= ((r_1 + r_2)* 11585 + 8192)>>>14;
end
endmodule
本当にありがとうございました! – RONEY