我试图在模拟过程中显示 IEEE 754 单精度 float 。我正在使用 $display()
并尝试在 ModelSim 和我的控制台中打印数字(在 Mac 上使用 Icarus Verilog)。到目前为止我最好的尝试是:
wire [31:0] out;
wire signed [200:0] conv = -1**(out[31]) * (1'b1 + (out[22:0] * 2'b10**($signed(8'b11101001)))) * 2'b10**(out[30:23] + $signed(8'b10000001));
$display("The number is %f", conv);
转换后的宽度是任意大的。对于 11000001100111010000100000110000,上面将打印出 -16.000000。我已经确定符号和指数部分有效,但尾数乘以 2^-23,只是变为 0。真正的答案应该是 -19.628998。
我缺少什么想法吗?这在 Verilog 中可能吗?
最佳答案
如果我理解正确的话,你想要的是$bitstoreal ,类似;
wire [31:0] out;
$display("The number is %f", $bitstoreal(out));
关于floating-point - $在控制台中显示 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16880216/