基于LabVIEW的FPGA模塊FIFO深度設定實(shí)現
本文引用地址:http://dyxdggzs.com/article/193640.htm
4 數據連續傳輸的LabVIEW實(shí)現
在本文中系統軟件包括兩部分:Host vi和FPGAvi,二者是獨立而又有聯(lián)系的兩個(gè)部分。Host vi運行于主控計算機上,FPGA vi運行于FPGA上,二者通過(guò)FIFO來(lái)傳輸數據。
4.1 FPGA程序設計
使用圖形化的編程環(huán)境LabVIEW FPGA模塊來(lái)定義FPGA邏輯,除了具有上述的優(yōu)點(diǎn)以外,LabVIEW作為一種并行結構的編程語(yǔ)言,非常適用于FPGA的并行結構,能夠十分方便地實(shí)現多線(xiàn)程并行任務(wù)。

當FPGA vi開(kāi)始運行時(shí),從Host vi讀取數據的FIFO需要一定的初始化時(shí)間,時(shí)間長(cháng)度與FIFO的深度成正比。在初始化期間FIFO輸出一系列的無(wú)效默認值。為了不讓無(wú)效值進(jìn)入到下一級的運算中,在DMA方式的FIFO之前加了一個(gè)FIFO函數——Get Number of Element to Read,該函數用于獲得FIFO內有效數據的數量。當有效數據的數量大于0時(shí),再開(kāi)始進(jìn)行下一級運算??紤]到FPGA有限的硬件資源和FPGA FIFO最小值的限制,將數據的地址寬度設為M=11,根據上文分析DMA FIFO的深度設為2M+5=2 053 KB。
4.2 主控計算機程序設計
Host vi是系統程序的另一部分部分,它具有建立硬件對象(FPGA)、與硬件通信和圖形顯示等功能。主控計算機程序圖如圖6所示,首先要建立與之進(jìn)行通信的硬件對象,即FPGA;其次配置系統時(shí)鐘、輸出模式;再次創(chuàng )建FIFO,設置其在主控計算機部分的FIFO深度;然后從電子表格讀取數據,并循環(huán)查詢(xún)FIFO剩余空間的大小,當剩余空間大于數組長(cháng)度時(shí),數據寫(xiě)入FIFO當沒(méi)有足夠的空間時(shí),數據保留到下一個(gè)循環(huán),滿(mǎn)足條件后再寫(xiě)入FIFO;最后關(guān)閉FIFO應用,處理錯誤。

當輸入數組長(cháng)度分別為300和1 000,形狀如圖7所示的波形時(shí),輸出數據的波形如圖8所示。由于A(yíng)D9857上變頻的原因,使得輸出波形在輸入的矩形包絡(luò )中帶有載波,載波頻率為60 MHz。根據表1中的數據可以得出結論:此處的編程和上述實(shí)驗的結果是一致的,即FPGA輸出頻率為10 MHz,數組長(cháng)度大于500時(shí),系統數據的輸出是連續。同時(shí)此結果也表明本文中的LabVIEW程序實(shí)現了數據的連續傳輸。
5 結語(yǔ)
通過(guò)設定合適的FIFO深度,實(shí)現了數據的連續傳輸,為后續的工程設計奠定了基礎。該設定FIFO深度的方法也對其他使用LabVIEW FPGA模塊的工程設計具有一定的參考價(jià)值。
評論