最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

LabVIEWCompactRIO 開發(fā)指南31 在LabVIEW FPGA中使用DMA FIFO

2023-05-23 11:11 作者:bjcyck  | 我要投稿

LabVIEWCompactRIO?開發(fā)指南31

在LabVIEW?FPGA中使用DMA?FIFO

要為流數(shù)據(jù)創(chuàng)建DMA緩沖區(qū),請(qǐng)右鍵單擊FPGA目標(biāo)并選擇New...?FIFO。為FIFO結(jié)構(gòu)指定一個(gè)描述性名稱,并選擇“target?to?host”作為類型。這意味著數(shù)據(jù)應(yīng)該通過(guò)這個(gè)DMA?FIFO從FPGA目標(biāo)流向?qū)崟r(shí)主機(jī)。還可以設(shè)置數(shù)據(jù)類型和FPGAFIFO深度。單擊確定將這個(gè)新的FIFO放入項(xiàng)目中,可以將其拖放到FPGA框圖中。

圖5.21.一個(gè)通道上的簡(jiǎn)單DMA傳輸

提示:在LabVIEW2012FPGA及更高版本中,可以將定點(diǎn)數(shù)據(jù)轉(zhuǎn)換為單精度浮點(diǎn)數(shù)據(jù)。將這種轉(zhuǎn)換卸載到FPGA可以節(jié)省大量處理器資源。對(duì)于早期的LabVIEW版本,可以通過(guò)可下載的示例或NI開發(fā)人員專區(qū)文檔LabVIEWFixed-Point?(FXP)?to?Single?(SGL)?Conversion?on?LabVIEW?FPGA.轉(zhuǎn)換來(lái)獲得類似的轉(zhuǎn)換功能。

可以使用同一DMA通道傳輸多個(gè)數(shù)據(jù)流,例如從I/O通道收集的數(shù)據(jù)流。大多數(shù)CompactRIO系統(tǒng)具有三個(gè)DMA通道。在混合模式下,CompactRIO系統(tǒng)只有一個(gè)DMA通道。要將多個(gè)數(shù)據(jù)流或I/O通道打包到一個(gè)DMA?FIFO中,請(qǐng)使用圖5.22所示的交錯(cuò)技術(shù),并在主機(jī)上使用抽取進(jìn)行解包。

圖5.22.在For循環(huán)上使用構(gòu)建數(shù)組和索引來(lái)實(shí)現(xiàn)交錯(cuò)的多通道數(shù)據(jù)流

將多個(gè)模擬輸入通道傳遞到一個(gè)DMA?FIFO時(shí),通道的存儲(chǔ)方式與表5.1所示類似。此表假設(shè)四個(gè)模擬輸入通道交錯(cuò)到一個(gè)DMA?FIFO中。主機(jī)VI上的解包算法期望元素按此特定順序到達(dá)。如果FIFO溢出和元件丟失,則主機(jī)VI上的解包算法無(wú)法將數(shù)據(jù)點(diǎn)分配給其不正確的模擬輸入通道。因此,從多個(gè)模擬輸入通道讀取數(shù)據(jù)時(shí),確保無(wú)損數(shù)據(jù)傳輸非常重要。

表5.1.將多個(gè)通道寫入一個(gè)DMA?FIFO時(shí),主機(jī)VI期望element按特定順序到達(dá)

在主機(jī)上使用DMA?FIFO

通常,在主機(jī)VI上專用于一個(gè)單獨(dú)的循環(huán),以使用主機(jī)接口節(jié)點(diǎn)從DMA緩沖區(qū)檢索數(shù)據(jù)。在CompactRIO系統(tǒng)上從DMA?FIFO讀取數(shù)據(jù)時(shí),請(qǐng)執(zhí)行以下三步步驟,以實(shí)現(xiàn)最佳性能:

1.將DMA讀取超時(shí)設(shè)置為零。

2.讀取固定大小的元素?cái)?shù)(數(shù)據(jù)通道數(shù)的倍數(shù))。

3.等到緩沖區(qū)已滿后再讀取元素。

圖5.23提供了高效使用DMA?FIFO讀取函數(shù)獲取連續(xù)I/O數(shù)據(jù)流的示例。第一個(gè)DMAFIFO讀取函數(shù)計(jì)算緩沖區(qū)中剩余的元素?cái)?shù),并根據(jù)3000個(gè)元素的固定大小對(duì)其進(jìn)行檢查。如果要傳遞數(shù)據(jù)數(shù)組,則輸入的元素?cái)?shù)應(yīng)始終是數(shù)組大小的整數(shù)倍。例如,如果要傳遞一個(gè)包含八個(gè)元素的數(shù)組(如來(lái)自八個(gè)I/O通道的值),則“Numberof?Elements”應(yīng)為8的整數(shù)倍(如80,為每個(gè)I/O通道提供10個(gè)樣本)。

一旦緩沖區(qū)達(dá)到3000個(gè)元素,第二個(gè)DMA?FIFO讀取函數(shù)就會(huì)讀取數(shù)據(jù)或在False大小寫中休眠,并在下一次迭代時(shí)再次檢查。每個(gè)DMA事務(wù)都有開銷,因此讀取較大的數(shù)據(jù)塊通常更好。

最后,使用抽取一維數(shù)組函數(shù)按通道組織數(shù)據(jù)。

圖5.23.從DMA?FIFO讀取數(shù)據(jù)

無(wú)論何時(shí)從DMA?FIFO讀取數(shù)據(jù),都必須能夠檢測(cè)緩沖區(qū)溢出或超時(shí)情況并從中恢復(fù),以保持?jǐn)?shù)據(jù)正確性。下一節(jié)將提供推薦的體系結(jié)構(gòu),以確保在使用DMA?FIFO時(shí)進(jìn)行無(wú)損數(shù)據(jù)傳輸。

?

需要說(shuō)明的是,上述的例程和文檔,都是可以下載的,雙擊即可打開,其中壓縮文件是可以采用粘貼復(fù)制的方式,拷貝到硬盤上。這不是圖片,各位小伙伴看到后嘗試一下,這個(gè)問(wèn)題就不用加微信咨詢了。有關(guān)LabVIEW編程、LabVIEW開發(fā)等相關(guān)項(xiàng)目,可聯(lián)系們。附件中的資料這里無(wú)法上傳,可去公司網(wǎng)站搜索下載。


LabVIEWCompactRIO 開發(fā)指南31 在LabVIEW FPGA中使用DMA FIFO的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
安宁市| 永州市| 镇沅| 富民县| 定州市| 保山市| 枞阳县| 旺苍县| 家居| 邵武市| 固安县| 静乐县| 长垣县| 夏河县| 株洲市| 罗城| 邳州市| 海林市| 隆德县| 镇江市| 闽侯县| 富顺县| 海南省| 磐石市| 江北区| 鲜城| 紫金县| 黔西县| 上林县| 界首市| 双柏县| 永靖县| 九龙城区| 班玛县| 宁蒗| 霸州市| 鲁山县| 丹江口市| 延寿县| 汾阳市| 金昌市|