如何使用ModelSim查看波形中定点数的实际值? (系统Verilog)

时间:2016-02-11 14:26:12

标签: verilog system-verilog waveform modelsim

我在代码中使用了带符号的定点数字。为了更容易验证值,我希望看到它们在波形中表示的实数。 例如,让我们说:

    // 1bit signal, 4bits integer, 4bits fraction
    wire [8:0] my_number1 = 9'b1_1111_1000; // -0.5
    wire [8:0] my_number2 = 9'b0_0000_1000; //  0.5

我想分别为my_number1和my_number2看-0.5和0.5。 当我使用Cadence工具时,我可以点击信号波形并选择创建表达式'并简单地创建一个新信号:

    (my_number1*(2.0**-4))

ModelSim Altera入门版在其GUI上没有此选项,所以我想我可以在我的测试平台中创建一个与定点相关的真实信号,然后跟踪这个数字。

我试图在我的测试平台中创建一个真实的信号:

    real my_number1_real = (my_number1*(2.0**-4));

但是我能看到的只是-0。我也试过$ bitstoreal但是我必须将它转换为64位数并考虑指数等等(see wikipedia),所以它绝对不是一个简单的方法。

知道我该怎么做?

1 个答案:

答案 0 :(得分:2)

real my_number1_real = (my_number1*(2.0**-4));

是在时间0评估的常量表达式。以下情况会更好。

real my_number1_real;
always @* 
 my_number1_real = (my_number1*(2.0**-4));

我认为always @*可能会触发实数,因此如果您可以使用系统verilog,那么always_comb会更好。