<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于LabVIEW的FPGA模塊FIFO深度設(shè)定實(shí)現(xiàn)

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

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

          1.3 開發(fā)Host vi

          本文引用地址:http://www.ex-cimer.com/article/193640.htm

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

            

          LabVIEW函數(shù)面板中的FPGA接口函數(shù)面板圖

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

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

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

            3 FIFO深度的設(shè)定方法

            3.1 FPGA FIFO深度的設(shè)定

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

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

            3.2 主控計(jì)算機(jī)FIFO深度的設(shè)定

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

            N/T>F (1)

            鑒于主控計(jì)算機(jī)操作系統(tǒng)的非實(shí)時(shí)性,需要將主控計(jì)算機(jī)FIFO深度D的大小設(shè)定為N的若干倍;通過大量實(shí)驗(yàn)并與NI工程師討論,確定當(dāng)FIFO的深度D的大小為N的3~5倍時(shí),可完全滿足數(shù)據(jù)連續(xù)傳輸?shù)囊蟆?/p>

            3.3 實(shí)驗(yàn)驗(yàn)證

            

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

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



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

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();