我要如何在 FPGA 中將原始數值(raw data)轉換為固定點數值(fixed point data)?



主要軟體:
主要軟體版本: 8.6.1
主要軟體修正版本: N/A
次要軟體: N/A

問題: 我在 FPGA 中使用一個只能輸出原始數值的函式,但是我的 I/O 節點是設定為使用固定點數值。我該如何將原始數值轉換為固定點數值?

解答: 你的 I/O 節點必須要有正確無誤的固定點數值設定,特別是整數位長度(integer word length)以及總體長度(total word length)。

第一步先將你的原始數值轉換為足夠涵括整個整數和小數點資料之中介固定點數值資料型態。舉例來說,假如你有一個 16-bit 之整數數值,你需要將它轉換為至少有 16 bits 之整數位長度(integer word length)之固定點數值(fixed point data)。

同時你也要確保這個中介的固定點數值必須要有足夠的小數點位數來正確地表示資料的小數點部分。
例如,如果你的 I/O 節點為具有 20 bits 的數值,而其中整數部分是 5 bits,那你的中介固定點數值就必須要有至少 15 bits 之小數點數值。

我們繼續來看下列這個範例。假設你的原始數值是 16 bits,而 I/O  節點的固定點數值資料型態設定為總體長度 20 bits,其中整數部分 5 bits,那麼你需要一個 31 bits 之中介的固定點數值資料型態(16 bits 的原始資料 + 15 bits 的小數點資料)。





當資料已經被轉換為中介的固定點數值資料型態,你必須位移適當的資料位元至小數點部分。在上述的範例當中,16-bit 的原始資料必須包含 5 bits 整數資料加上 11 bits 小數點資料(16 bits - 5 bits = 11 bits)。使用 Scale By a Power of 2 這個 VI 來位移固定點數值資料以取出相對應的小數點部分(以上述的範例來說是 -11)。

最後你必須將這個中介的固定點數值資料裁切為正確的 I/O 節點資料長度。在下列的示範中,最後的固定點數值必須有 20 bits 的長度,其中有 5 bits 的整數長度。這樣的設定會有效地裁去表示正負號位元(假如存在的話)之多餘的整數部分,同時移除超出這個裝罝能顯示之多餘的小數部分。

上面所示範的例子在程式中看起來會像是這樣:



相關連結: KnowlegeBase 4L5B754H: Switching Between Calibrated Fixed-Point and Raw Integer Modes for CompactRIO I/O
NI Developer Zone Community: Convert Sine Wave Generator Raw Output to Fixed Point

附加檔案:





報告日期: 05/05/2009
最後更新: 10/19/2015
文件偏號: 4X4J3EMO