LabVIEWCompactRIO 開(kāi)發(fā)指南29 數(shù)據(jù)通信
LabVIEWCompactRIO?開(kāi)發(fā)指南29
數(shù)據(jù)通信
LabVIEW?FPGA中的數(shù)據(jù)通信分為兩類:進(jìn)程間和目標(biāo)間。進(jìn)程間通信通常對(duì)應(yīng)于FPGA目標(biāo)上的兩個(gè)或多個(gè)環(huán)路之間的數(shù)據(jù)共享。目標(biāo)間數(shù)據(jù)通信是在FPGA目標(biāo)和主機(jī)處理器之間共享數(shù)據(jù)。對(duì)于這兩種情況,在決定使用哪種機(jī)制之前,應(yīng)考慮是要傳達(dá)當(dāng)前值數(shù)據(jù)、消息或命令,還是在流式傳輸數(shù)據(jù)。
進(jìn)程間數(shù)據(jù)通信
如果FPGA目標(biāo)上存在多個(gè)環(huán)路,則可能希望在它們之間共享數(shù)據(jù),就像在實(shí)時(shí)或基于Windows的程序中一樣。LabVIEW?FPGA包含了多種用于在循環(huán)之間共享數(shù)據(jù)的機(jī)制。
變量
LabVIEW?FPGA具有局部和全局變量,用于在兩個(gè)或多個(gè)循環(huán)之間共享當(dāng)前值或標(biāo)簽。借助變量,可以訪問(wèn)或存儲(chǔ)FPGA觸發(fā)器中的數(shù)據(jù)。變量?jī)H存儲(chǔ)寫(xiě)入的最新數(shù)據(jù)。如果不需要使用獲取的每個(gè)數(shù)據(jù)值,那么它們是一個(gè)不錯(cuò)的選擇。
內(nèi)存項(xiàng)
共享最新值的另一種方法是使用可用的內(nèi)存項(xiàng)。利用內(nèi)存消耗的邏輯塊很少,但會(huì)使用板載內(nèi)存。LabVIEW?FPGA設(shè)備具有兩種類型的存儲(chǔ)項(xiàng):目標(biāo)示波器和VI定義??梢酝ㄟ^(guò)FPGA目標(biāo)下的所有VI訪問(wèn)目標(biāo)范圍的內(nèi)存項(xiàng)。VI定義的內(nèi)存項(xiàng)的范圍限定為定義它們的VI。圖5.17顯示了使用為目標(biāo)范圍的內(nèi)存項(xiàng)配置的內(nèi)存方法節(jié)點(diǎn)的框圖。該VI從內(nèi)存中讀取數(shù)據(jù),遞增數(shù)據(jù),然后用新數(shù)據(jù)覆蓋相同的內(nèi)存位置。

圖5.17.使用內(nèi)存方法節(jié)點(diǎn)讀取和寫(xiě)入內(nèi)存項(xiàng)
VI-scopedmemory是需要存儲(chǔ)數(shù)據(jù)陣列的應(yīng)用程序的強(qiáng)大工具。通常,應(yīng)始終避免使用大型數(shù)組作為數(shù)據(jù)存儲(chǔ)機(jī)制,而應(yīng)改用VI-scoped?memory。
FIFOs
如果要在兩個(gè)或多個(gè)循環(huán)之間傳輸消息或更新,或者流式傳輸數(shù)據(jù),請(qǐng)考慮使用FIFO進(jìn)行數(shù)據(jù)傳輸。FIFO是一種數(shù)據(jù)結(jié)構(gòu),它按接收順序保存元素,并使用先進(jìn)先出訪問(wèn)策略提供對(duì)這些元素的訪問(wèn)。

圖5.18.使用FIFO在兩個(gè)并行環(huán)路之間共享緩沖數(shù)據(jù)
與內(nèi)存項(xiàng)類似,有兩種類型的FIFO可供選擇:目標(biāo)范圍或VI定義??梢酝ㄟ^(guò)FPGA目標(biāo)下的所有VI訪問(wèn)目標(biāo)范圍的FIFO,并且VI定義的FIFO的范圍限定為定義它們的VI。
配置FIFO時(shí),必須指定確定哪些FPGA資源在FIFO中保存和傳輸數(shù)據(jù)的實(shí)現(xiàn)。以下建議可幫助選擇一種實(shí)現(xiàn)而不是另一種實(shí)現(xiàn)。
■觸發(fā)器—觸發(fā)器使用FPGA上的門(mén)來(lái)提供最快的性能。建議僅對(duì)非常小的FIFO(小于100字節(jié))使用。
■查找表—可以將數(shù)據(jù)存儲(chǔ)到FPGA上每個(gè)切片的兩個(gè)查找表中。僅建議對(duì)小型FIFO(小于300字節(jié))使用查找表。
■塊內(nèi)存—如果嘗試為應(yīng)用的其他部分保留FPGA門(mén)和查找表,則可以將數(shù)據(jù)存儲(chǔ)在塊存儲(chǔ)器中。
?
需要說(shuō)明的是,上述的例程和文檔,都是可以下載的,雙擊即可打開(kāi),其中壓縮文件是可以采用粘貼復(fù)制的方式,拷貝到硬盤(pán)上。這不是圖片,各位小伙伴看到后嘗試一下,這個(gè)問(wèn)題就不用加微信咨詢了。有關(guān)LabVIEW編程、LabVIEW開(kāi)發(fā)等相關(guān)項(xiàng)目,可聯(lián)系們。附件中的資料這里無(wú)法上傳,可去公司網(wǎng)站搜索下載。