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