Verilog中的有理数

时间:2011-05-16 15:32:00

标签: verilog rational-numbers

我需要在Verilog代码中使用有理数字。我寻找任何资源,但我找不到任何关于这个问题。如何在Verilog中定义有理数。

2 个答案:

答案 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,则可以将此行为包装为数据类型。

祝你好运!