我需要在Verilog代码中使用有理数字。我寻找任何资源,但我找不到任何关于这个问题。如何在Verilog中定义有理数。
答案 0 :(得分:2)
Verilog有real
数据类型,用于实数(浮点)数字:
real data;
initial data = 1.55;
答案 1 :(得分:1)
在HDL中实现有理数的方法主要有两种:
1)如果你想要一个总是2的幂的固定分母,你可以简单地使用具有正常二进制补码表示的固定点数,但是具有索引小于零的位,所以就像一个{ {1}} [3:0]
为"0111"
,0*2**3 + 1*2**2 + 1*2**1 + 1*2**0 = 7
[1:-2]
为"0111"
。在常规Verilog中,您可以使用这样的负数指示,但是当您手动执行操作时(例如,将每个操作放在其自己的功能或模块中),您将不得不处理移位和缩放。使用SystemVerilog或VHDL,您可以创建(或使用现有的)定点包,以自动处理数据类型。
2)如果你想拥有任意分母,你可以简单地使用两个reg来表示每个值,其中一个是分子,一个是分母。同样,您必须手动处理数学运算的实现。同样,如果您使用SystemVerilog或VHDL,则可以将此行为包装为数据类型。
祝你好运!