Home
Support
在LabVIEW的FIFO中,我該如何轉換我的定點數(Fixed-Point)資料?
在LabVIEW的FIFO中,我該如何轉換我的定點數(Fixed-Point)資料?
主要軟體:
主要軟體版本: 8.5
主要軟體修正版本:
次要軟體: N/A
問題: 我在LabVIEW FPGA模組中的計算使用了定點數(fixed-point)資料型態。我想傳送資料,但是如果我透過FIFO傳送資料或儲存於記憶體中,當FIFO或記憶體被讀取時,我只收到整數部分。我該如何傳送資料才能使小數部分(尾數)仍可完整保留?
解答: 根據不同的LabVIEW使用版本,有幾個不同的方法可以使用:
使用LabVIEW 8.6版
如果您是使用LabVIEW 8.6版,這可以很簡單的做到,只需將專案中DMA FIFO更改為可處理定點數。要做到這點,無論是建立FIFO時或編輯專案中它的設定,您可以選擇定點數(FXP)為FIFO的資料型態。這樣會允許您以未更動的方式透過FIFO傳送定點數資料。
使用LabVIEW 8.5.x版
在LabVIEW 8.5.x版中,DMA FIFO只支援U32的資料型態,無論是target和VI-scoped的FIFO或記憶體,皆不支援定點數資料。如果定點數值直接被傳入FIFO或記憶體中,小數的部分會因為被轉換為整數而被截去。
為了可以保存小數部分,可以將定點數轉變為相同位元的整數資料型態。
要做到這點,您會需要將定點數的二進位表示法傳入FIFO或記憶體,並當資料被讀取時再轉換這位元組。接下來的步驟詳細介紹透過DMA FIFO(使用U32資料型態)傳送定點數到host的方法。
注意:Target與VI-scoped的FIFO與記憶體可以傳送各種不同的資料型態。使得FIFO或記憶體的型態與定點數的字元長度相同,使讀FIFO或記憶體的資料型態達成一致。舉例來說,假如您欲傳送一個字元長度20的定點數,可以使用U32的FIFO。
FPGA轉換
- 使用Number to Boolean Array VI將定點數轉換為布林陣列。
- 使用Boolean Array to Number VI將這個布林陣列轉換為U32的整數。
- 將Boolean Array to Number的輸出接到FIFO Write VI。
Host轉換
- 在host端,從DMA FIFO中讀取資料。
- 在auto-indexed迴圈中,使用Number to Boolean Array VI將資料一一做轉換。
- 在for loop中放置一個Boolean Array to Number VI,並將布林陣列連接起來。
- 在Boolean Array to Number VI上按右鍵並選擇Properties。將representation改變為定點數,並根據FPGA上的定點數資料型態來填入Fixed-Point Configuration。
- 連接定點數輸出資料連接至for loop的auto-indexed通道。
注意:為了轉換host上的數字,知道FPGA上的定點數資料型態設定是必要的。
一旦轉換好定點數資料,您就可以使用數值轉換VIs來將資料轉換為任意host需要的表現方式。
注意:使用Binary Array to Number並修改該VI的輸出設定是必要的。若只使用Binary Array to Number並搭配使用To FXP VIs,資料的小數部分仍然會被截去。
相關連結:
附加檔案:
報告日期: 09/26/2007
最後更新: 02/24/2009
文件偏號: 4DPGKPKO
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.