我在代码中使用了有符号的定点数字。为了更容易地验证这些值,我希望看到它们在波形中所表示的实数。例如,让我们说:
// 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位数,并考虑指数等等(见维基百科),所以这绝对不是一种简单的方法。
知道我该怎么做吗?
发布于 2016-02-11 15:21:25
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会更好。
https://stackoverflow.com/questions/35341963
复制相似问题