<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 測試測量 > 設計應用 > 基于LabVIEW的FPGA模塊FIFO深度設定實(shí)現

基于LabVIEW的FPGA模塊FIFO深度設定實(shí)現

作者: 時(shí)間:2012-07-09 來(lái)源:網(wǎng)絡(luò ) 收藏

1.3 開(kāi)發(fā)Host vi

本文引用地址:http://dyxdggzs.com/article/193640.htm

  在 vi完成調試、編譯、下載到板卡之后,就需要在主控計算機上創(chuàng )建一個(gè)用戶(hù)界面程序Host vi。在用戶(hù)界面應用程序中可以完成一些實(shí)時(shí)性要求不高的操作,例如配置系統參數,管理數據等。Host vi通過(guò)接口函數與 vi進(jìn)行通信,以及處理中斷。FPGA接口函數面板會(huì )在安裝 FPGA之后,自動(dòng)添加到的函數面板中。函數面板中的FPGA接口函數面板如圖4所示。

  

LabVIEW函數面板中的FPGA接口函數面板圖

  2 不同時(shí)鐘域的數據連續傳輸

  本文中的中頻信號生成系統是將主控計算機模擬生成的數據通過(guò)FPGA送到AD9857發(fā)送出去。數據進(jìn)入FPGA的速率為52 MB/s,由于計算機的非實(shí)時(shí)性呈現斷續的形式,其實(shí)際的速率要低一些;數據傳出FPGA時(shí),其數據位寬為16 b,輸出頻率為10 MHz,固其持續傳輸速率為20 MB/s。數據進(jìn)入FPGA的速率高于出FPGA的速率,這就造成數據在不同時(shí)鐘域之間傳輸的問(wèn)題。為了避免數據的溢出和保證數據連續性,本文使用DMA 作為主控計算機與FPGA之間的緩存。它的存儲空間包括兩部分:一是主控計算機部分,主控計算機開(kāi)辟一塊內存作為緩存;二是FPGA部分,占用部分Block Memory資源作為緩存。二者共同組成一個(gè)完整的FIFO,通過(guò)PXIe總線(xiàn)傳遞數據。FIFO的傳輸機制是:主控計算機首先把一個(gè)數組的數據存入作為FIFO緩存的內存中;DMA控制器會(huì )自動(dòng)查詢(xún)FPGA上的FIFO剩余空間,當滿(mǎn)足緩存剩余空間大于數據塊容量的條件時(shí),控制器通過(guò)PXIe總線(xiàn)把整個(gè)數據塊一并送入FPGA上的FIFO中;FPGA FIFO再將數據順序送出。

  若在主控計算機向FIFO兩次寫(xiě)入數據的間隔期間,FIFO中的數據保持不被讀空,就能保證輸出FPGA的數據是連續的。而合適的FIFO深度是FIFO不被讀空的基礎,所以確定FIFO深度的設定方法是數據在不同時(shí)鐘域之間實(shí)現連續傳輸的關(guān)鍵。

  3 FIFO深度的設定方法

  3.1 FPGA FIFO深度的設定

  DMA控制器將數據從主控計算機內存整塊的傳送到FPGA的FIFO緩存中,所以FIFO的深度要大于數據塊的大小。LabVIEW FPGA里塊存儲FIFO是以2 KB大小來(lái)應用的。DMA FIFO使用RIO設備可獲取的內置RAM來(lái)存儲數據信息,該存儲空間與內存讀/寫(xiě)是共享的。所以要留一部分RAM空間進(jìn)行內存的讀/寫(xiě),FIFO的最大值為RAM容量減去16 KB。PXIe-5641R的RAM的容量是1 098 KB,所以,FPGAFIFO的深度設定范圍為2~1 082 KB。

  另一方面,實(shí)際上LabVIEW為了能使FPGA高效運行,對Block Memory方式FIFO的大小作了規定,其大小只能為2M-1(數據由FPGA傳向主控計算機)或2M+5(數據由主控計算機傳向FPGA),M為數據的地址寬度;當設定值不是這些標準值時(shí),LabVIEW會(huì )自動(dòng)的放大到距其最近的一個(gè)標準值。這樣就確定了FPGAFIFO的深度,但是還不能保證數據能夠連續輸出。

  3.2 主控計算機FIFO深度的設定

  由于對主控計算機內存部分FIFO的讀/寫(xiě)是以數組形式斷續進(jìn)行的。所以,數組的長(cháng)度和兩次寫(xiě)入的間隔時(shí)間是能否保證數據連續性的重要參數,同時(shí)考慮到數據輸出FPGA是連續且頻率固定的。根據FIFO不讀空的原則推測:當寫(xiě)入內存的數組的長(cháng)度N與數據寫(xiě)入內存的時(shí)間T和數據輸出FPGA的頻率F之間滿(mǎn)足如下的關(guān)系時(shí),就能做到數據的連續傳輸:

  N/T>F (1)

  鑒于主控計算機操作系統的非實(shí)時(shí)性,需要將主控計算機FIFO深度D的大小設定為N的若干倍;通過(guò)大量實(shí)驗并與NI工程師討論,確定當FIFO的深度D的大小為N的3~5倍時(shí),可完全滿(mǎn)足數據連續傳輸的要求。

  3.3 實(shí)驗驗證

  

  數據寫(xiě)入內存的時(shí)間與主控計算機運行速度以及數組的大小有關(guān)。表1所示的是數組長(cháng)度和寫(xiě)入內存的時(shí)間與輸出數據連續性之間關(guān)系的實(shí)驗結果。其中,平均寫(xiě)入內存時(shí)間指的是同一個(gè)數組循環(huán)執行寫(xiě)入操作10萬(wàn)次得到的平均結果。輸出FPGA的速率為10 MHz。

  當數組長(cháng)度較小時(shí),單位時(shí)間內寫(xiě)入到內存中的數據較少,內存里的數據不能滿(mǎn)足FPGA FIFO讀取數據的需求,在下一組數據到達之前內存里的數據已經(jīng)讀空,故輸出的數據不能連續。當數組長(cháng)度增大之后,單位時(shí)間寫(xiě)入到內存的數據量也隨之增大,內存里的數據能夠滿(mǎn)足FP-GA FIFO讀取數據的需求,在內存讀空之前把下一組數據送入了內存,所以輸出的數據能夠保持連續性。實(shí)驗結果驗證了上述推測公式的正確性。



關(guān)鍵詞: LabVIEW FPGA FIFO 模塊

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>