摘 要: 針對軟件無線電系統(tǒng)中數(shù)據(jù)實時處理和高速傳輸?shù)囊螅O(shè)計了一種基于NI PCI Express接口的高速數(shù)據(jù)傳輸方案,。利用NI公司的數(shù)字I/O卡以及配套驅(qū)動開發(fā)軟件搭建開發(fā)平臺,。信號調(diào)理設(shè)備和微機間的數(shù)據(jù)通過PCI Express接口以DMA方式進行傳輸。數(shù)字I/O卡的32通道雙向并行數(shù)據(jù)傳輸速率高達50 Mb/s,。該方案實現(xiàn)了靈活的數(shù)據(jù)傳輸控制,、精確的時鐘同步以及可靠的數(shù)據(jù)容錯功能。工程實踐驗證了該方案的有效性和可靠性,。
關(guān)鍵詞: 數(shù)據(jù)采集,;NI PCI Express;高速數(shù)據(jù)傳輸,;DMA,;實時處理
軟件無線電系統(tǒng)只在天線到A/D轉(zhuǎn)換和D/A轉(zhuǎn)換環(huán)節(jié)的射頻段存在模擬信號,其中頻和基帶的處理全部采用數(shù)字邏輯運算實現(xiàn),,數(shù)據(jù)處理量大,,實時性要求較高。某些情況下高速傳輸又是實時處理的前提,,因此,,軟件無線電實現(xiàn)的關(guān)鍵是需要有高速的數(shù)據(jù)處理與傳輸設(shè)備。為了將數(shù)據(jù)處理結(jié)果通過數(shù)據(jù)采集設(shè)備實時傳送給微機,,信號調(diào)理設(shè)備和微機之間必須具有高速的互聯(lián)總線,。作為第三代高性能I/O總線,PCI Express接口具有雙通道,、高帶寬,、傳輸快、低功耗以及傳輸可靠等優(yōu)點,,正逐漸取代原有PCI接口,。PCI Express2.0標(biāo)準(zhǔn)實現(xiàn)了x1的單向速率5 Gb/s,因此PCI Express總線接口特別適合于高速的數(shù)據(jù)傳送,。同時,,現(xiàn)在絕大多數(shù)電腦可以使用直接內(nèi)存訪問DMA(Direct Memory Access)傳送方式,它使用專門的硬件把數(shù)據(jù)直接傳送到計算機內(nèi)存,,從而提高了系統(tǒng)的數(shù)據(jù)吞吐量,。采用這種方式后,,處理器不需要控制數(shù)據(jù)的傳送,因此它就可以用來處理更復(fù)雜的工作,。因此,,基于PCI Express總線并采用DMA方式進行數(shù)據(jù)傳輸可以充分發(fā)揮PCI Express總線高速的優(yōu)勢[1-2]。
美國國家儀器NI(National Instruments)公司在信號調(diào)理和數(shù)據(jù)采集領(lǐng)域有著豐富的產(chǎn)品生產(chǎn)和設(shè)計經(jīng)驗,,已經(jīng)成功為各行業(yè)的用戶提供了優(yōu)秀的解決方案,。其中基于PCI Express接口系列的數(shù)字I/O卡可以滿足高速數(shù)據(jù)傳輸?shù)囊蟆W鳛槟耻浖o線電系統(tǒng)的子課題,,本文基于該系列硬件和配套的軟件進行開發(fā),,實現(xiàn)了信號調(diào)理設(shè)備和微機之間進行實時高速數(shù)據(jù)傳輸?shù)墓δ堋嵺`表明,,該方案無論在數(shù)據(jù)傳輸還是實時控制方面都有較好的性能,,對于搭建應(yīng)用越來越廣泛的高速數(shù)據(jù)傳輸平臺具有一定的借鑒意義[3]。
1 NI PCIe-6537數(shù)字I/O卡簡介
NI PCIe-6537是NI公司生產(chǎn)的一款高速數(shù)字I/O系列數(shù)據(jù)采集卡[4],,具有32個可進行雙向并行數(shù)據(jù)傳輸?shù)耐ǖ溃≒ort0~Port3,,每個Port由8個通道組成)和6個可編程函數(shù)接口PFI(Programmable Function Interface),即PFI0~PFI6,,并行速率可達50 MHz,;支持同步輸出,時鐘各項指標(biāo)精度高,,可以接受外部時鐘作為工作時鐘源,;所有通道和接口具有獨立的ADC,保證了良好的動態(tài)性能,;支持多種同步,、異步握手模式,其中包含豐富的定時和事件觸發(fā)功能,;板載2 048個32 bit基于FIFO的內(nèi)存單元,,可以作為信號調(diào)理設(shè)備和計算機之間進行DMA傳輸?shù)母咚倬彺妫⑶揖哂绣e誤檢測及自我恢復(fù)機制,。該數(shù)字I/O卡可以實現(xiàn)高速的雙向數(shù)據(jù)傳輸,,具有靈活的控制功能,并可以通過控制可編程函數(shù)接口保證數(shù)據(jù)傳輸?shù)目煽啃?。板卡結(jié)構(gòu)如圖1所示,。
隨著數(shù)據(jù)采集硬件、計算機和軟件復(fù)雜程度的增加,,好的驅(qū)動軟件就顯得尤為重要,。合適的驅(qū)動軟件可以最佳地結(jié)合靈活性和高性能,同時還能極大地降低開發(fā)數(shù)據(jù)采集程序所需的時間,。NI公司為其數(shù)據(jù)采集卡開發(fā)了豐富的應(yīng)用軟件和驅(qū)動,。本方案采用NI專有的Measurement Studio開發(fā)軟件和DAQ驅(qū)動,。為了讓用戶能開發(fā)出完整的數(shù)據(jù)采集和控制程序,NI提供了可以支持C,、Visual C++,、Visual Basic和C#調(diào)用驅(qū)動函數(shù)的應(yīng)用軟件Measurement Studio。結(jié)合工程項目需要,,本方案采用C#作為調(diào)用驅(qū)動函數(shù)的語言,,同時使用HP DL180機架式服務(wù)器,以保證穩(wěn)定,、高效的數(shù)據(jù)傳輸和存取性能,。
2 基于NI PCIe-6537數(shù)字I/O卡高速數(shù)據(jù)傳輸設(shè)計
NI PCIe-6537數(shù)字I/O卡具有高速的數(shù)據(jù)傳輸能力,Measurement Studio和Visual Studio安裝融合之后的開發(fā)環(huán)境中包含了豐富的驅(qū)動函數(shù),,可以滿足實際工程各種應(yīng)用需求。但是由于其內(nèi)部封裝不可見,,用戶必須使用專門的驅(qū)動函數(shù)進行設(shè)計,。本方案分為數(shù)據(jù)采集部分和控制信號輸出部分的設(shè)計,功能實現(xiàn)程序以C#動態(tài)鏈接庫(DLL)的形式提供給項目主程序使用,。圖2給出了數(shù)據(jù)采集和控制信號輸出流程圖,,下面以此為基礎(chǔ)介紹本方案各部分功能的設(shè)計。
2.1 數(shù)據(jù)采集的主要功能及其設(shè)計方案
本方案使用25 Mb/s的傳輸速率同時進行雙向數(shù)據(jù)傳輸,,使用Port0,、Port1和Port2 3個端口共計24條數(shù)據(jù)通道用來進行連續(xù)數(shù)據(jù)采集。為保證數(shù)據(jù)傳輸過程中的時鐘和數(shù)據(jù)精確同步,,采用可編程函數(shù)接口PFI5接收外部時鐘作為板卡工作時鐘,。下面首先對定時設(shè)置進行簡要說明。定時設(shè)置參數(shù)與工作模式和采樣長度有關(guān),,在初始化設(shè)備資源之前就要設(shè)置完畢,。對于連續(xù)工作模式,采樣長度一般為計算機內(nèi)存中緩沖區(qū)的大小,,實際中取較大的值即可,;對于有限采樣工作模式,采樣長度與當(dāng)前傳輸數(shù)據(jù)長度有關(guān),,若下一次的采樣長度與當(dāng)前采樣長度不同,,就要重新設(shè)置定時參數(shù)。根據(jù)項目要求,,設(shè)定調(diào)理設(shè)備每20 ms發(fā)一包數(shù)據(jù),,數(shù)據(jù)采集部分的定時參數(shù)相應(yīng)設(shè)置為連續(xù)工作模式。每包數(shù)據(jù)到達的同時還有一個和包長度相同的握手信號(Pause Trigger)到達板卡,,即以握手信號的有無和長短決定是否接收數(shù)據(jù)和接收數(shù)據(jù)的長度,,這里用PFI1接收觸發(fā)信號,。由于設(shè)置為連續(xù)工作模式,因此所有的參數(shù)只需設(shè)置一次,,服務(wù)器程序即可對相應(yīng)設(shè)備資源進行初始化,,之后通過C#事件觸發(fā)的方式自動進入循環(huán)接收數(shù)據(jù)包的狀態(tài),同時可以通過委托把數(shù)據(jù)包實時傳遞給主調(diào)函數(shù),。
在對數(shù)據(jù)進行高速采集的同時,,應(yīng)考慮實際工作中不可預(yù)知的軟硬件錯誤。錯誤一般有兩種類型:一種是由微機未能及時從板卡FIFO中讀取數(shù)據(jù)造成FIFO溢出,,從而造成數(shù)據(jù)包傳輸出錯,;另一種情況是由于信號調(diào)理設(shè)備由眾多設(shè)備組成,如果其中某個環(huán)節(jié)發(fā)生傳輸延誤,,導(dǎo)致某一包數(shù)據(jù)未能連續(xù)傳輸,,進而造成FIFO采集不到完整的數(shù)據(jù)包。實際中經(jīng)過反復(fù)測試發(fā)現(xiàn),,雖然錯誤的種類可能會比較多,,但是對于服務(wù)器來說,錯誤檢測只能依賴于包頭數(shù)據(jù)檢測,。因此,,針對可能出現(xiàn)的軟硬件錯誤,制定解決方案如下:在數(shù)據(jù)包的固定位置插入一個標(biāo)志數(shù)據(jù),,每一包數(shù)據(jù)接收完畢之后對標(biāo)志數(shù)據(jù)進行檢測,,如果標(biāo)志數(shù)據(jù)正確,則可以認(rèn)為當(dāng)前數(shù)據(jù)包已正確接收,;如果標(biāo)志數(shù)據(jù)出錯,,則立即清空FIFO,直到檢測結(jié)果正確為止,。另外,,由于數(shù)據(jù)傳輸速率較高,有效數(shù)據(jù)只占20 ms中的小部分時間,,從而保證板卡FIFO有充足的時間自我清空,。
2.2 發(fā)送控制信號方案設(shè)計
為了控制信號調(diào)理設(shè)備,服務(wù)器還需要通過PCI Express卡發(fā)送控制信號給信號調(diào)理設(shè)備,,本方案使用Port3的8條數(shù)據(jù)通道輸出控制信號,,時鐘通過PFI4接口輸出給信號調(diào)理設(shè)備。由于控制信號只在必要的情況下發(fā)出,,因此相應(yīng)的定時參數(shù)設(shè)置為有限工作模式,。設(shè)定控制信號精度為16 bit,并且不同控制信號有著不同功能,。本方案使用Port3的高4位標(biāo)識不同功能的控制信號,,低4位傳輸控制信號,,每個控制信號在4個時鐘周期內(nèi)輸出給信號調(diào)理設(shè)備。與數(shù)據(jù)采集部分類似,,板卡輸出控制信號時需要一個握手信號(Date Active Event),,外部信號調(diào)理設(shè)備根據(jù)該握手信號決定是否接收控制信號以及信號長度。但與數(shù)據(jù)采集部分不同的是,,由于控制部分為有限工作模式,,每次發(fā)送控制信號均需要重新初始化設(shè)備資源,因此會造成一定的時延,。實際測試發(fā)現(xiàn),,如果某段時間內(nèi)發(fā)送控制信號過多或者過于頻繁,這種時延就會造成控制信號發(fā)送錯誤,。經(jīng)過反復(fù)試驗證明,,每次控制信號發(fā)送完畢之后暫不釋放硬件資源,重新初始化時只需用一條語句重新設(shè)置定時參數(shù),,大大降低了時延并保證了控制信號輸出的可靠性,。
3 高速數(shù)據(jù)傳輸方案實現(xiàn)和測試
本文設(shè)計的高速數(shù)據(jù)傳輸方案為某軟件無線電系統(tǒng)的重要組成部分。因此,,本文以該系統(tǒng)在實際當(dāng)中的運行結(jié)果對設(shè)計方案進行測試,下面分別介紹測試平臺并說明測試結(jié)果,。
3.1 高速數(shù)據(jù)傳輸方案測試平臺
硬件平臺為HP DL180 機架式服務(wù)器,、NI PCIe-6537數(shù)字I/O卡以及信號調(diào)理設(shè)備;操作系統(tǒng)為Windows Server 2003 R2(32 bit),;軟件平臺為Visual Studio 2005.NET,、Measurement Studio 2009和DAQ 9.1.7。
其中,,Visual Studio和Measurement Studio版本必須一致,,操作系統(tǒng)和DAQ驅(qū)動軟件的版本需要一致。并且由于驅(qū)動軟件的限制,,Windows Server 2003操作系統(tǒng)下可用內(nèi)存資源受到限制[5],。
3.2 高速數(shù)據(jù)傳輸方案實現(xiàn)結(jié)果
系統(tǒng)數(shù)據(jù)采集和控制信號的傳輸速率均為25 Mb/s,數(shù)據(jù)循環(huán)采集的收包間隔時間為20 ms,、包長為10 016,、數(shù)據(jù)為32 bit整形數(shù)。圖3為軟件界面顯示的某時刻數(shù)據(jù)采集結(jié)果,。其中,,包循環(huán)號表示信號調(diào)理設(shè)備發(fā)送數(shù)據(jù)包的編號,收包計數(shù)表示數(shù)字I/O卡成功接收并驗證正確的數(shù)據(jù)包,,計數(shù)差值正常情況下為上述兩個指標(biāo)的差值,,丟包計數(shù)為發(fā)生錯誤的數(shù)據(jù)包,。數(shù)據(jù)接收結(jié)果顯示,該時刻已接收2 610包數(shù)據(jù)并且所有數(shù)據(jù)包均正確無誤,??刂菩盘柖槿缦率M制數(shù):0x400D和0x400F,每個十六進制數(shù)在4個時鐘周期內(nèi)發(fā)送完畢,。在FPGA中,,用SignalTap II觀察信號調(diào)理設(shè)備發(fā)送的數(shù)據(jù),如圖4所示,。其中,,pc_clk、pc_control和pc_data分別為PCIe-6537輸出給FPGA的時鐘,、握手信號和輸出信號,。設(shè)備長期運行結(jié)果表明,本設(shè)計可以通過PCIe-6537實現(xiàn)FPGA與服務(wù)器之間穩(wěn)定的高速數(shù)據(jù)傳輸,。
數(shù)據(jù)采集接口是計算機系統(tǒng)與外部數(shù)據(jù)聯(lián)系的一個橋梁,,設(shè)計的關(guān)鍵是提高數(shù)據(jù)采集系統(tǒng)的速度和可靠性。本文以某軟件無線電系統(tǒng)的實際需求出發(fā),,充分利用PCI Express接口通過DMA傳輸方式實現(xiàn)了信號調(diào)理設(shè)備與服務(wù)器之間進行高速數(shù)據(jù)傳輸?shù)墓δ?。方案通過對NI PCIe-6537數(shù)字I/O卡性能的了解和挖掘,以及對驅(qū)動函數(shù)的合理調(diào)用,,保證了數(shù)據(jù)傳輸?shù)母咝屎涂煽啃?。實際應(yīng)用中還可以根據(jù)工程需要實現(xiàn)更多的功能。同時,,NI公司基于PCI Express接口的高速數(shù)據(jù)I/O卡在高速數(shù)據(jù)通信以及實時信號處理領(lǐng)域有著良好的應(yīng)用前景,,而本方案作為一個典型案例,對工程實踐人員有較好的參考價值,。
參考文獻
[1] BUDRUK R,, ANDERSON D, SHANLEY T. PCI Express系統(tǒng)體系結(jié)構(gòu)標(biāo)準(zhǔn)教材[M].田玉敏,,王崧,,張波,等,,譯.北京:電子工業(yè)出版社,,2005.
[2] 許軍,李玉山.PCI Express總線技術(shù)研究[J].計算機工程與科學(xué),,2006,,28(5):20~40.
[3] NI.數(shù)據(jù)采集技術(shù)文摘[EB/OL].http://sine.ni.com,2010-09-01.
[4] NI.PCI Express接口的50M數(shù)字I/O[EB/OL].http://sine.ni.com,2010-09-01.
[5] NI.NI-DAQmx Specifications[EB/OL].http://sine.ni.com,,2010-09-01.