modelsim での verilog コードのシミュレーション中に実数を表示しようとしています。しかし、出力として 0 しか得られません。bitstoreal システム関数を使用しようとしています。Verilog はあまり得意ではないので、初心者の愚かな間違いかもしれません。
以下は私のコードです:
reg [31:0] y[1:0];
integer file;
localparam [31:0] test = 32'h3fb0d05d;
task read_data_from_fifo();
begin
file = $fopen("/tmp/data.fifo", "r");
$fread(y, file);
$display("y0 = %d, %f, %h", $bitstoreal(y[0]), $bitstoreal(test), $bitstoreal(y[0]));
$display("y1 = %f, %f, %h", y[1], $bitstoreal(32'h5dd0_b03f), y[1]);
end
endtask
(タスクは最初の開始ブロックから呼び出されます) 出力:
# y0 = 0, 0.000000, 00000000
# y1 = 3742779199.000000, 0.000000, df16473f
すべての助けに感謝します。
アップデート
bitstoreal は倍精度浮動小数点数 (64 ビット) のみをサポートしているようです。なぜなら
localparam [63:0] test = 64'h_3FF61A0BE5109071;
$display("%f", $bitstoreal(test));
結果は
1.381359