LabVIEWCompactRIO 開(kāi)發(fā)指南30 目標(biāo)間通信
LabVIEWCompactRIO?開(kāi)發(fā)指南30
目標(biāo)間通信
可以從兩種方法選擇在FPGA?VI和實(shí)時(shí)處理機(jī)上運(yùn)行的VI之間傳輸數(shù)據(jù)的方法:前面板控制和指示器或DMAFIFO??梢允褂们懊姘蹇丶椭甘酒鱽?lái)傳輸最新值或標(biāo)簽以及DMA?FIFO,以流式傳輸數(shù)據(jù)或發(fā)送消息和命令。這兩種方法都需要使用主機(jī)VI上的FPGA接口功能與FPGA進(jìn)行交互。
前面板控件和指示燈
如果只需要將最新數(shù)據(jù)值傳輸?shù)街鳈C(jī)VI或從主機(jī)VI傳輸,則可以將數(shù)據(jù)存儲(chǔ)到FPGA?VI上的控件或指示器,并使用主機(jī)VI中的讀/寫(xiě)控制功能訪(fǎng)問(wèn)這些數(shù)據(jù)。圖5.19顯示了一個(gè)簡(jiǎn)單的主機(jī)VI,它從FPGA上的數(shù)字I/O指示器讀取數(shù)據(jù),然后寫(xiě)入FPGA上的數(shù)字I/O控制。

圖5.19.讀取和寫(xiě)入前面板控件和指示器以在目標(biāo)之間共享最新值
與在FPGA和主機(jī)處理器之間傳輸數(shù)據(jù)的其他方法相比,編程前面板通信的開(kāi)銷(xiāo)較低。讀/寫(xiě)節(jié)點(diǎn)是FPGA和主機(jī)處理器之間傳輸多條信息的優(yōu)選,因?yàn)樗鼈兊拈_(kāi)銷(xiāo)相對(duì)較低。DMA?FIFO(如圖5.20所示)可以在流式傳輸大量數(shù)據(jù)時(shí)提供更好的吞吐量,但對(duì)于較小且不頻繁的數(shù)據(jù)傳輸,它們的效率不高。
使用前面板控件和指示燈在FPGA和主機(jī)處理器之間傳輸數(shù)據(jù)需要比DMA?FIFO更多地涉及主機(jī)處理器。因此,數(shù)據(jù)傳輸?shù)乃俣雀叨纫蕾?lài)于主機(jī)處理器的速度和可用性。處理器速度較慢或處理器可用性不足,會(huì)導(dǎo)致從FPGA目標(biāo)到主機(jī)的數(shù)據(jù)傳輸速度變慢。編程前面板通信的一個(gè)缺點(diǎn)是,這種方法僅傳輸存儲(chǔ)在FPGA?VI的控制或指示器上的最新數(shù)據(jù)。例如,如果FPGA?VI將數(shù)據(jù)寫(xiě)入指示器的速度快于主機(jī)VI讀取數(shù)據(jù)的速度,則數(shù)據(jù)可能會(huì)丟失。此外,F(xiàn)PGA?VI上的每個(gè)控制或指示器都使用FPGA上的資源。FPGA編程的最佳實(shí)踐建議限制FPGA?VI中前面板對(duì)象的數(shù)量。
DMAFIFOs
如果需要在FPGA和實(shí)時(shí)處理器之間流式傳輸大量數(shù)據(jù),或者需要用于基于命令或消息的通信的小型緩沖區(qū),請(qǐng)考慮使用DMAFIFO進(jìn)行數(shù)據(jù)傳輸。從FPGA讀取數(shù)據(jù)時(shí),DMA不涉及主機(jī)處理器;因此,它是在FPGA目標(biāo)和主機(jī)之間傳輸大量數(shù)據(jù)的最快方法。

圖5.20.DMA使用FPGA存儲(chǔ)器來(lái)存儲(chǔ)數(shù)據(jù)
以下列表重點(diǎn)介紹了使用DMA通信在FPGA目標(biāo)和主機(jī)之間傳輸數(shù)據(jù)的好處:
■釋放主機(jī)處理器在數(shù)據(jù)傳輸過(guò)程中執(zhí)行其他計(jì)算
■減少前面板控件和指示燈的使用,有助于節(jié)省FPGA資源,尤其是在傳輸數(shù)據(jù)陣列時(shí)
■自動(dòng)同步主機(jī)和FPGA目標(biāo)之間的數(shù)據(jù)傳輸
盡管DMA?FIFO是流式傳輸數(shù)據(jù)的絕佳機(jī)制,但在從多個(gè)通道流式傳輸數(shù)據(jù)、優(yōu)化吞吐量或在實(shí)時(shí)主機(jī)VI上擴(kuò)展數(shù)據(jù)時(shí),它們很快就會(huì)變得復(fù)雜。如果應(yīng)用需要從一個(gè)或多個(gè)模擬通道傳輸模擬數(shù)據(jù),應(yīng)使用本節(jié)末尾討論的NICompactRIO?Waveform?Acquisition?Reference?Library作為起點(diǎn)。該庫(kù)具有FPGA模板和類(lèi)似NI-DAQmx的用于流數(shù)據(jù)的API,并提供了許多優(yōu)勢(shì),包括優(yōu)化的性能和內(nèi)置的擴(kuò)展。
需要說(shuō)明的是,上述的例程和文檔,都是可以下載的,雙擊即可打開(kāi),其中壓縮文件是可以采用粘貼復(fù)制的方式,拷貝到硬盤(pán)上。這不是圖片,各位小伙伴看到后嘗試一下,這個(gè)問(wèn)題就不用加微信咨詢(xún)了。有關(guān)LabVIEW編程、LabVIEW開(kāi)發(fā)等相關(guān)項(xiàng)目,可聯(lián)系們。附件中的資料這里無(wú)法上傳,可去公司網(wǎng)站搜索下載。