2013-06-02 106 views
0

我试图在模拟过程中显示一个IEEE 754单精度浮点数。我使用$ 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中甚至可能吗?谢谢!

回答

3

如果我理解正确,你想要的是$bitstoreal,类似;

wire [31:0] out; 

$display("The number is %f", $bitstoreal(out));