999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

用LabVIEW FPGA模塊實現(xiàn)不同時鐘域的數(shù)據(jù)連續(xù)傳輸

2011-04-12 00:00:00崔佩佩何強韓壯志尚朝軒
現(xiàn)代電子技術(shù) 2011年17期

摘 要:為了解決基于LabVIEW FPGA模塊的DMA FIFO深度設(shè)定不當(dāng)帶來的數(shù)據(jù)不連續(xù)問題,結(jié)合LabVIEW FPGA的編程特點和DMA FIFO的工作原理,提出了一種設(shè)定FIFO深度的方法。對FIFO不同深度的實驗表明,采用該方法設(shè)定的FIFO深度能夠比較好地滿足系統(tǒng)對數(shù)據(jù)連續(xù)傳輸?shù)囊蟆Q芯拷Y(jié)果對深入展開研究和工程設(shè)計具有一定的指導(dǎo)意義。

關(guān)鍵詞:LabVIEW FPGA模塊; FIFO; 數(shù)據(jù)連續(xù)傳輸; 時鐘域

中圖分類號:TN958-34 文獻(xiàn)標(biāo)識碼:A

文章編號:1004-373X(2011)17-0149-04

LabVIEW FPGA-Based Data Continuous Transmission Between Two Clock Domains

CUI Pei-pei, HE Qiang, HAN Zhuang-zhi, SHANG Chao-xuan

(Department of Optics and Electronics Engineering, Ordnance Engineering College, Hebei shijiazhuang 050003, China)

Abstract: In order to solve the problem of data transmission discontinuity caused by the improperly depth setting of DMA FIFO based on LabVIEW FPGA, a method of setting the depth of FIFO is presented in combination with the characteristic of LabVIEW FPGA and the working principle of DMA FIFO. The experiment of FIFO with different depth indicates that the method can satisfy the requirement of the continuity of data transmission. The result has a certain instruction meaning for further research and engineering design.

Keywords: LabVIEW FPGA; FIFO; continuous data transmission; clock domain

0 引 言

20世紀(jì)80年代中期,NI公司推出了一種圖形化的編程語言LabVIEW[1],并于2003年推出FPGA模塊[2]。該模塊用于對NI公司RIO設(shè)備中的FPGA進(jìn)行編譯,使得工程師無需了解VHDL或其他底層硬件設(shè)計工具,就可以使用FPGA技術(shù)進(jìn)行系統(tǒng)的設(shè)計[3-5]。本文使用LabVIEW FPGA和PXIe-5641R中頻收發(fā)卡設(shè)計了一套中頻信號生成系統(tǒng)。中頻卡上的FPGA接收來自主控計算機的數(shù)據(jù),并將其發(fā)送到上變頻器AD9857。數(shù)據(jù)進(jìn)入FPGA的速率高于傳出的速率,持續(xù)的傳輸會造成數(shù)據(jù)的溢出,斷續(xù)的傳輸可能會造成數(shù)據(jù)不連續(xù)。使用基于LabVIEW FPGA的DMA FIFO作為主控計算機和FPGA之間的緩存,若DMA FIFO深度設(shè)置的合適,F(xiàn)IFO不會溢出和讀空,那么就能實現(xiàn)數(shù)據(jù)輸出FPGA是連續(xù)的。

本文在介紹了LabVIEW FPGA模塊程序設(shè)計特點的基礎(chǔ)上,結(jié)合DMA FIFO的工作原理,提出了一種設(shè)定FIFO深度的方法,解決了FIFO溢出、讀空的問題,實現(xiàn)了數(shù)據(jù)的連續(xù)傳輸。實驗結(jié)果表明該方法正確、可行,程序設(shè)計滿足系統(tǒng)對數(shù)據(jù)傳輸連續(xù)性的要求。

1 LabVIEW FPGA模塊

LabVIEW FPGA是LabVIEW的一個子模塊,使用該模塊可以通過圖形化的編程對NI公司RIO (Reconfigurable I/O)設(shè)備上的FPGA進(jìn)行配置[6]。圖形化的程序直接在硬件上實現(xiàn),通過對RIO設(shè)備上的I/O接口的控制[7],可以靈活地對I/O信號進(jìn)行分析和處理,表現(xiàn)出比固定I/O硬件更加優(yōu)異的特性。使用LabVIEW FPGA模塊開發(fā)出來的系統(tǒng)具有開發(fā)周期短、結(jié)構(gòu)模塊化、升級方便等優(yōu)點。例如,圖1表示了一個用LabVIEW FPGA模塊設(shè)計的程序,在FPGA上實現(xiàn)方波發(fā)生器。該方波發(fā)生器通過數(shù)字接口DIO_1輸出方波,其占空比和周期可調(diào)。LabVIEW FPGA模塊在程序的設(shè)計與實現(xiàn)上都展現(xiàn)出了極大的靈活性。

1.1 LabVIEW FPGA程序開發(fā)流程

使用LabVIEW FPGA模塊開發(fā)應(yīng)用程序的流程如圖2所示。首先創(chuàng)建FPGA vi,之后用FPGA設(shè)備仿真器在主控計算機上運行程序,反復(fù)地調(diào)試、修改,直至程序正確無誤。然后編譯FPGA vi,并把程序下載到FPGA上。FPGA部分的程序完成后,再根據(jù)需要在主控計算機上創(chuàng)建用戶界面程序Host vi,最終就完成整個系統(tǒng)的設(shè)計。

FPGA設(shè)備仿真器的打開方法是:首先在“項目瀏覽器”窗口中的打開“我的電腦”子菜單,右擊子菜單中的“FPGA Target”并在快捷菜單中選擇“Execute vi on”下一級子菜單中的“Development Computer with Simulated I/O”。然后再在FPGA vi中點擊“Run”按鈕,這時程序在FPGA的設(shè)備仿真器上運行。

1.2 開發(fā)FPGA vi

發(fā)應(yīng)用程序的第一步是創(chuàng)建用于配置PXIe-5641R板載FPGA的程序。在FPGA vi中可以實現(xiàn)算法邏輯,包括信號同步,定制數(shù)字通信協(xié)議,板載控制和預(yù)警處理判決機制等功能。通過LabVIEW FPGA模塊,可使用LabVIEW開發(fā)環(huán)境和許多類似的功能。但是由于FPGA不支持浮點操作,所以LabVIEW FPGA模塊較之LabVIEW完整Windows版開發(fā)軟件缺少了一些操作符和分析函數(shù)。另外,由于PXIe-5641R板卡[8]沒有硬盤和操作系統(tǒng),因此不支持文件I/O和ActiveX功能。LabVIEW FPGA模塊的函數(shù)面板如圖3所示。

硬件對象不管是FPGA設(shè)備還是FPGA仿真器,都可以訪問LabVIEW FPGA函數(shù)。仿真器使用RIO設(shè)備的I/O接口,可在主機處理器上執(zhí)行邏輯算法。檢驗vi設(shè)計中的一些簡單性錯誤,避免不必要的反復(fù)編譯,尤其是在程序比較大的時候可節(jié)省大量的時間,提高編程效率。也可使用仿真器驗證vi的執(zhí)行流程,但無法驗證硬件的確定性,若需要驗證硬件性能的確定性,必須對FPGA vi進(jìn)行編譯。與其他FPGA開發(fā)工具一樣,根據(jù)應(yīng)用程序的復(fù)雜程度和計算機資源的不同,編譯步驟可能要花上幾分鐘到幾個小時的時間。

1.3 開發(fā)Host vi

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

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

本文中的中頻信號生成系統(tǒng)是將主控計算機模擬生成的數(shù)據(jù)通過FPGA送到AD9857發(fā)送出去。數(shù)據(jù)進(jìn)入FPGA的速率為52 MB/s[9],由于計算機的非實時性呈現(xiàn)斷續(xù)的形式,其實際的速率要低一些;數(shù)據(jù)傳出FPGA時,其數(shù)據(jù)位寬為16 b,輸出頻率為10 MHz,固其持續(xù)傳輸速率為20 MB/s。數(shù)據(jù)進(jìn)入FPGA的速率高于出FPGA的速率,這就造成數(shù)據(jù)在不同時鐘域之間傳輸?shù)膯栴}。

為了避免數(shù)據(jù)的溢出和保證數(shù)據(jù)連續(xù)性,本文使用DMA FIFO作為主控計算機與FPGA之間的緩存。它的存儲空間包括兩部分:一是主控計算機部分,主控計算機開辟一塊內(nèi)存作為FIFO緩存;二是FPGA部分,F(xiàn)IFO占用部分Block Memory資源作為緩存。二者共同組成一個完整的FIFO,通過PXIe總線傳遞數(shù)據(jù)。FIFO的傳輸機制是:主控計算機首先把一個數(shù)組的數(shù)據(jù)存入作為FIFO緩存的內(nèi)存中;DMA控制器會自動查詢FPGA上的FIFO剩余空間,當(dāng)滿足緩存剩余空間大于數(shù)據(jù)塊容量的條件時,控制器通過PXIe總線把整個數(shù)據(jù)塊一并送入FPGA上的FIFO中;FPGA FIFO再將數(shù)據(jù)順序送出。

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

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

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

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

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

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

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

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

3.3 實驗驗證

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

當(dāng)數(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ù)組長度增大之后,單位時間寫入到內(nèi)存的數(shù)據(jù)量也隨之增大,內(nèi)存里的數(shù)據(jù)能夠滿足FPGA FIFO讀取數(shù)據(jù)的需求,在內(nèi)存讀空之前把下一組數(shù)據(jù)送入了內(nèi)存,所以輸出的數(shù)據(jù)能夠保持連續(xù)性。實驗結(jié)果驗證了上述推測公式的正確性。

4 數(shù)據(jù)連續(xù)傳輸?shù)腖abVIEW實現(xiàn)

在本文中系統(tǒng)軟件包括兩部分:Host vi和FPGA vi,二者是獨立而又有聯(lián)系的兩個部分。Host vi運行于主控計算機上,F(xiàn)PGA vi運行于FPGA上,二者通過FIFO來傳輸數(shù)據(jù)。

4.1 FPGA 程序設(shè)計

使用圖形化的編程環(huán)境LabVIEW FPGA模塊來定義FPGA邏輯,除了具有上述的優(yōu)點以外,LabVIEW作為一種并行結(jié)構(gòu)的編程語言,非常適用于FPGA的并行結(jié)構(gòu),能夠十分方便地實現(xiàn)多線程并行任務(wù)[10]。

當(dāng)FPGA vi開始運行時,從Host vi讀取數(shù)據(jù)的FIFO需要一定的初始化時間,時間長度與FIFO的深度成正比。在初始化期間FIFO輸出一系列的無效默認(rèn)值。為了不讓無效值進(jìn)入到下一級的運算中,在DMA方式的FIFO之前加了一個FIFO函數(shù)——Get Number of Element to Read,該函數(shù)用于獲得FIFO內(nèi)有效數(shù)據(jù)的數(shù)量。當(dāng)有效數(shù)據(jù)的數(shù)量大于0時,再開始進(jìn)行下一級運算。考慮到FPGA有限的硬件資源和FPGA FIFO最小值的限制,將數(shù)據(jù)的地址寬度設(shè)為M=11,根據(jù)上文分析DMA FIFO的深度設(shè)為2M+5=2 053 KB。

4.2 主控計算機程序設(shè)計

Host vi是系統(tǒng)程序的另一部分部分,它具有建立硬件對象(FPGA)、與硬件通信和圖形顯示等功能。主控計算機程序圖如圖6所示,首先要建立與之進(jìn)行通信的硬件對象,即FPGA;其次配置系統(tǒng)時鐘、輸出模式;再次創(chuàng)建FIFO,設(shè)置其在主控計算機部分的FIFO深度;然后從電子表格讀取數(shù)據(jù),并循環(huán)查詢FIFO剩余空間的大小,當(dāng)剩余空間大于數(shù)組長度時,數(shù)據(jù)寫入FIFO;當(dāng)沒有足夠的空間時,數(shù)據(jù)保留到下一個循環(huán),滿足條件后再寫入FIFO;最后關(guān)閉FIFO應(yīng)用,處理錯誤。

當(dāng)輸入數(shù)組長度分別為300和1 000,形狀如圖7所示的波形時,輸出數(shù)據(jù)的波形如圖8所示。由于AD9857上變頻的原因,使得輸出波形在輸入的矩形包絡(luò)中帶有載波,載波頻率為60 MHz。根據(jù)表1中的數(shù)據(jù)可以得出結(jié)論:此處的編程和上述實驗的結(jié)果是一致的,即FPGA輸出頻率為10 MHz,數(shù)組長度大于500時,系統(tǒng)數(shù)據(jù)的輸出是連續(xù)。同時此結(jié)果也表明本文中的LabVIEW程序?qū)崿F(xiàn)了數(shù)據(jù)的連續(xù)傳輸。

5 結(jié) 語

在使用LabVIEW FPGA模塊和NI公司的RIO設(shè)備設(shè)計中頻信號生成系統(tǒng)時,F(xiàn)PGA收發(fā)數(shù)據(jù)的速率不同造成了數(shù)據(jù)傳輸?shù)牟贿B續(xù),設(shè)定合適的FIFO深度可以有效解決該問題。本文根據(jù)DMA FIFO的工作原理,確定了給FIFO兩個部分分別設(shè)定合適深度的方法。通過設(shè)定合適的FIFO深度,實現(xiàn)了數(shù)據(jù)的連續(xù)傳輸,為后續(xù)的工程設(shè)計奠定了基礎(chǔ)。該設(shè)定FIFO深度的方法也對其他使用LabVIEW FPGA模塊的工程設(shè)計具有一定的參考價值。

參 考 文 獻(xiàn)

[1]陳錫輝,張銀鴻.LabVIEW 8.20程序設(shè)計從入門到精通[M].北京:清華大學(xué)出版社,2007.

[2]陳明星,朱靈,張龍,等.基于LabVIEW的光纖傅里葉變換光譜儀數(shù)據(jù)處理技術(shù)[J].儀器儀表學(xué)報,2010,31(3):488-492.

[3]GOMEZ A, GOETHERT E. Control system design using LabVIEW FPGA for a digital picture kiosk [C]// Proceedings of the 2006 American Control Conference. Minneapolis, Minnesota, USA: IEEE, 2006: 1395-1409.

[4]MEARS L M, FALCON J S, KURFESS T R. Real-time identification of sliding friction using LabVIEW FPGA [C]// Proceedings of the 2006 American Control Conference. Minneapolis, Minnesota, USA: IEEE, 2006: 1410-1615.

[5]楊堯,王民鋼,趙岳樓.LabVIEW FPGA模塊在飛控計算機測試系統(tǒng)中的應(yīng)用[J].測控技術(shù),2010,29(3):48-51.

[6]AL-NAAMI B, CHEBIL J, TRABSHEH B, et al. Developing custom signal processing algorithm with LabView FPGA and Compact RIO to detect the aortic stenosis disease [J].Computers in Cardiology, 2006, 33: 193-196.

[7]GADGIL Shubhada, VERMA Dharmesh, PANSE M S. et al. Sea state monitoring HF radar controller using reconfigurable LabVIEW FPGA [C]// Proceedings of 2009 International Conference on Advances in Computing, Control, and Telecommunication Technologies. [S.l.]: [s.n.], 2009: 395-397.

[8]National Instruments. NI PXIe-5641R product in-depth [S]. [S.l.]: National Instruments, 2009.

[9]National Instruments. NI PXIe-5641R specifications-reconfigurable IF transceiver [S]. [S.l.]: National Instruments, 2009.

[10]秦紅磊,路輝,郎榮玲.自動測試系統(tǒng):硬件及軟件技術(shù)[M].北京:高等教育出版社,2007.

作者簡介:

崔佩佩 1986年出生,男,河北石家莊人,碩士研究生。主要研究方向為雷達(dá)信號處理。

何 強 1972年出生,男,天津人,博士,副教授。主要研究方向為雷達(dá)信號處理。

韓壯志 1970年出生,男,河北石家莊人,博士,副教授。主要研究方向為雷達(dá)信號處理。

尚朝軒 1964年出生,男,河南滑縣人,教授,博士生導(dǎo)師。主要研究方向為雷達(dá)系統(tǒng)仿真,雷達(dá)信號處理。

主站蜘蛛池模板: 欧美午夜在线观看| 国产主播一区二区三区| 黄色网页在线播放| 91美女视频在线| 国产精品亚洲αv天堂无码| 亚洲美女久久| 午夜日本永久乱码免费播放片| 2021国产在线视频| 久久婷婷国产综合尤物精品| 中文字幕欧美日韩| 国产麻豆永久视频| 国产91高跟丝袜| 免费一级毛片完整版在线看| 国产午夜看片| 亚洲黄色视频在线观看一区| 精品成人一区二区三区电影 | 高清无码一本到东京热| 国产一级毛片yw| 国产国产人在线成免费视频狼人色| 伊人国产无码高清视频| 亚洲嫩模喷白浆| 美女裸体18禁网站| 国产成人欧美| 亚洲欧美成人| 国产亚洲欧美在线视频| 国产一级毛片网站| 中文字幕调教一区二区视频| 尤物午夜福利视频| 综合网久久| 免费人欧美成又黄又爽的视频| 朝桐光一区二区| 欧美综合成人| 伊人久久大香线蕉成人综合网| 欧美国产精品不卡在线观看| 最新精品久久精品| 欧美日韩资源| 超清人妻系列无码专区| 一级黄色网站在线免费看| jijzzizz老师出水喷水喷出| 国产精品免费电影| 久久黄色小视频| 国产成人h在线观看网站站| 国产在线视频福利资源站| 一区二区三区国产精品视频| 国产人碰人摸人爱免费视频| 成人av手机在线观看| 国产极品美女在线观看| a级毛片免费看| 中文字幕免费视频| 亚洲欧美日本国产专区一区| 四虎永久在线精品国产免费| 91成人在线观看| 老色鬼久久亚洲AV综合| 无码精油按摩潮喷在线播放| 国产精品毛片一区视频播| 亚洲国产日韩视频观看| 久久综合亚洲鲁鲁九月天| AV在线天堂进入| 亚洲视频影院| 经典三级久久| 精品国产网站| 香蕉久久国产超碰青草| 国产91导航| 久久综合九九亚洲一区| 亚洲人精品亚洲人成在线| 91年精品国产福利线观看久久| 黄色在线网| 国产成人三级| 国产亚洲美日韩AV中文字幕无码成人| 亚洲日本中文字幕乱码中文| 国产欧美日韩资源在线观看| 9丨情侣偷在线精品国产| 色视频国产| 中文字幕在线看视频一区二区三区| 美女啪啪无遮挡| 亚洲一区黄色| 亚洲精品片911| 中文毛片无遮挡播放免费| 国产成人乱无码视频| 国产精品亚洲综合久久小说| 国产精品国产三级国产专业不| 国产特级毛片|