2011-02-12 59 views
1

我想將浮點數傳遞給整數。基本上我有一個浮點數在1和0之間,有三位小數,我想把它傳遞給一個整數,就好像我乘以1000.我懷疑應該有一個更優化的方法來做到這一點比使用算術多操作x1000。我正在尋找一段代碼。感謝所有可能的代碼,參考文獻,文章或評論。VHDL:如何將浮點數轉換爲整數

+0

您是否在行爲代碼中使用float(real)進行仿真或RTL代碼應該進入硬件? – Philippe 2011-02-12 08:49:05

回答

0

如果您有一個不是常數的二進制浮點數,則無法實際執行乘法和積分轉換,因此無法將其轉換爲整數[0,1000]

嘗試在紙上做二進制運算。基10的縮放不適用於移位或任何特殊的東西......它只是一個通用的縮放操作。

由於數字在範圍[0,1]中,請考慮以固定點計算所有算術,可能使用1/1024作爲單位,或甚至以1/1000爲單位的定點小數。

如果您需要更接近零的精度,則只應使用浮點數學運算。

3

如果你想這對於模擬只有你可以這樣做:

i <= integer(r * 1000); 

如果你想合成硬件,你可以考慮電源的兩到使邏輯更緊湊。

i <= integer(r * 1024); 

但@Potatoswatter有一個有效的觀點:你應該考慮你是否真的需要一個實際的(浮點數)。