我在代码中使用了带符号的定点数字。为了更容易验证值,我希望看到它们在波形中表示的实数。 例如,让我们说:
// 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),所以它绝对不是一个简单的方法。
知道我该怎么做?
答案 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
会更好。