2011-05-16 43 views
2

我需要在我的Verilog代碼中使用有理數。我尋找任何資源,但我找不到任何有關此問題的信息。如何在Verilog中定義有理數。Verilog中的有理數

+3

是否需要綜合? – Andy 2011-05-16 17:32:27

回答

2

的Verilog具有用於實(浮點)數的real數據類型:

1)如果您:

real data; 
initial data = 1.55; 
+0

有什麼方法可以將1.55表示爲二進制? – suphero 2011-05-17 00:35:14

+0

是的,取決於您需要的位數和滿量程範圍。這與你原來的問題有什麼關係? – toolic 2011-05-17 12:52:29

1

有以HDL實現有理數兩種途徑想要一個總是2的冪的固定分母,可以簡單地使用具有普通二進制補碼錶示的定點數,但是具有小於零的索引的位,所以就像[3:0]"0111"將是0*2**3 + 1*2**2 + 1*2**1 + 1*2**0 = 7,[1:-2]"0111"將是0*2**1 + 1*2**0 + 1*2**-1 + 1*2**-2 = 1.75。在常規的Verilog中,你可以使用這樣的負面指示,但是當你手動操作時(例如把每個操作放在它自己的函數或模塊中),你將不得不處理移位和縮放。使用SystemVerilog或VHDL,您可以創建(或使用現有的)定點程序包,並自動處理數據類型。 2)如果你想有任意的分母,你可以簡單地用兩個regs來表示每個值,其中一個是分子,一個是分母。同樣,你將不得不手動處理數學運算的實現。再次,如果使用SystemVerilog或VHDL,則可以將此行爲包裝爲數據類型。

祝你好運!