文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)06-0024-03
中文引用格式:蔡曉暉,鄭植,李浩.基于PCIe總線的衛(wèi)星導(dǎo)航信號(hào)傳輸系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2015,41(06):24-26+30.
0 引言
近年來,隨著軟件無線電技術(shù)的快速發(fā)展,GNSS軟件接收機(jī)因其高度的靈活性、通用性、開放性等優(yōu)點(diǎn),成為GNSS接收機(jī)的發(fā)展主流[1]。GNSS數(shù)據(jù)傳輸系統(tǒng)作為軟件接收機(jī)的硬件部分,通過射頻接收、A/D轉(zhuǎn)換、數(shù)字采集與傳輸?shù)饶K為GNSS軟件接收機(jī)提供原始的觀察數(shù)據(jù),原始數(shù)據(jù)的質(zhì)量在一定程度上影響著軟件接收機(jī)對(duì)原始數(shù)據(jù)的要求。
目前導(dǎo)航中頻信號(hào)的傳輸系統(tǒng)大都基于USB、PCI總線[2-3],采樣速率、數(shù)據(jù)傳輸速率都越來越無法滿足高性能軟件接收機(jī)的需求,PCIe作為第三代的高性能I/O串行總線,在總線帶寬、傳輸速率、靈活性等方面都有了較大的提升,根據(jù)實(shí)際系統(tǒng)的不同,它可以靈活配置成X1、X4、X8和X16通道,單通道在每個(gè)方向上的發(fā)送與接收速率可以達(dá)到2.5 Gb/s,可以滿足各種軟件接收機(jī)對(duì)原始導(dǎo)航數(shù)據(jù)的需求。
1 系統(tǒng)組成
本文所設(shè)計(jì)的導(dǎo)航數(shù)字中頻信號(hào)傳輸系統(tǒng)由A/D模塊、Xilinx、PCIe IP硬核+PCIe-DMA控制模塊、數(shù)據(jù)緩存模塊組成,系統(tǒng)基本結(jié)構(gòu)如圖1所示。A/D模塊接收射頻前端產(chǎn)生的模擬中頻型號(hào),對(duì)其進(jìn)行240 MS/s的采樣;FPGA完成A/D的控制邏輯及采樣后信號(hào)的數(shù)字處理,同時(shí)FPGA還產(chǎn)生PCIe硬核的DMA控制邏輯,將最終的導(dǎo)航數(shù)據(jù)通過PCIe接口傳輸?shù)缴衔粰C(jī)。
2 系統(tǒng)關(guān)鍵模塊設(shè)計(jì)
2.1 A/D模塊設(shè)計(jì)
模數(shù)轉(zhuǎn)換器(ADC)是采集系統(tǒng)的關(guān)鍵器件之一。系統(tǒng)采用AD9467實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換功能,AD9467是一款量化精度為16 bit、采樣時(shí)鐘頻率高達(dá)250 MHz的模數(shù)轉(zhuǎn)換器,具有優(yōu)異的性能。該模塊接收射頻前端模塊經(jīng)下變頻產(chǎn)生的模擬中頻信號(hào),考慮到GNSS各頻段導(dǎo)航信號(hào)(包括GPS、GLONSS、GALILEO以及北斗)為大約210 MHz[4]的帶通信號(hào)(見表1)以及整數(shù)倍頻率抽取兩個(gè)因素,將A/D采樣頻率設(shè)置為240 MS/s,采樣后的數(shù)據(jù)經(jīng)過FPGA數(shù)字處理模塊后變成IQ數(shù)據(jù),采樣率變?yōu)?0 Mb/s,通過數(shù)據(jù)緩存,經(jīng)PCIe接口傳輸?shù)缴衔粰C(jī)。
2.2 PCIe-DMA控制模塊設(shè)計(jì)
本系統(tǒng)采用Xilinx公司的Virtex5-XC5VFX70T芯片,該芯片集成了PCIe硬核,實(shí)現(xiàn)了X4通道的PCIe接口。系統(tǒng)的DMA控制邏輯原理框圖如圖2所示,其主要包含PCIe配置空間接口設(shè)計(jì)、發(fā)送模塊、接收模塊以及中斷控制模塊。
2.2.1 PCIE接口的配置空間
PCI Express配置空間與驅(qū)動(dòng)程序設(shè)計(jì)密切相關(guān),它是PCI Express傳輸卡與上位機(jī)的接口管理部分。配置寄存器空間用來與上位機(jī)進(jìn)行交流,上位機(jī)驅(qū)動(dòng)程序主要通過這組寄存器對(duì)傳輸卡進(jìn)行控制。而FPGA端則根據(jù)上位機(jī)在配置寄存器中的具體參數(shù)來完成DMA傳輸。表2列出了這組寄存器的具體名稱及偏移地址。
2.2.2 數(shù)據(jù)發(fā)送模塊
在本設(shè)計(jì)中,發(fā)送數(shù)據(jù)模塊(TX_ENGING)接收經(jīng)A/D采樣、數(shù)字處理后的導(dǎo)航信號(hào),根據(jù)上位機(jī)的DMA讀請(qǐng)求,將導(dǎo)航數(shù)據(jù)組織成相應(yīng)的TLP包[5]發(fā)送至上位機(jī)。其幀頭格式如圖3所示。
初始狀態(tài)下狀態(tài)機(jī)處于TX_RXT復(fù)位狀態(tài),如圖4所示,其有效轉(zhuǎn)換狀態(tài)可以概括為以下幾點(diǎn):
(1)發(fā)送CPLD包:TX端帶數(shù)據(jù)的完成包主要響應(yīng)上位機(jī)對(duì)配置空間的讀請(qǐng)求,當(dāng)板卡RX端收到上位機(jī)的DMA讀請(qǐng)求后,會(huì)由開始狀態(tài)進(jìn)入發(fā)送CPLD包的狀態(tài),根據(jù)讀請(qǐng)求包中的地址信息,將配置空間對(duì)應(yīng)寄存器中數(shù)據(jù)返回給上位機(jī)。
(2)發(fā)送存儲(chǔ)器寫數(shù)據(jù)包(MWR包):在配置寄存器中存儲(chǔ)著每次DMA寫操作的相關(guān)參數(shù),當(dāng)DMA寫開始后,TX端會(huì)根據(jù)上述寄存器參數(shù)來組織發(fā)送相應(yīng)的MWR包。
(3)發(fā)送存儲(chǔ)器讀數(shù)據(jù)包(MRD包):該數(shù)據(jù)包用來讀取上位機(jī)的回傳數(shù)據(jù),當(dāng)DMA讀開始后,TX端會(huì)根據(jù)配置寄存器參數(shù)組織發(fā)送相應(yīng)的MRD包。
2.2.3 數(shù)據(jù)接收模塊
接收端(RX_ENGING)接收上位機(jī)經(jīng)PCIe IP硬核傳輸過來的TLP包,其狀態(tài)機(jī)設(shè)計(jì)如圖5所示,可以大致分為以下幾種狀態(tài)跳轉(zhuǎn):
(1)接收完成包(CPLD包):當(dāng)TX端發(fā)出對(duì)上位機(jī)的讀請(qǐng)求后,RX端會(huì)收到上位機(jī)發(fā)出的CPLD完成包,其中包內(nèi)的數(shù)據(jù)即為所要讀取的PC端數(shù)據(jù),此時(shí)狀態(tài)機(jī)進(jìn)入CPLD狀態(tài),開始接收PC端的數(shù)據(jù)。
(2)接收存儲(chǔ)器寫數(shù)據(jù)包(MWR包)和存儲(chǔ)器讀數(shù)據(jù)包(MRD包):PC端能夠讀寫板卡的范圍只能是配置空間的配置寄存器,并且每次讀寫只能是一個(gè)雙字。PC端通過讀寫B(tài)AR空間來實(shí)現(xiàn)板卡與上位機(jī)的“交流”,大致可以概括為以下兩點(diǎn):
①對(duì)于DMA寫操作:PC端通過MWR包來設(shè)置相應(yīng)寄存器的值,主要包含:WriteDMATLPAddress、WriteDMATLPSize、WriteDMATLPCount、DCSR2、INT。通過MRD包來讀取相應(yīng)寄存器的值,在DMA寫過程中主要讀取DMA寫結(jié)束寄存器來判斷DMA寫是否結(jié)束。
②對(duì)于DMA讀操作:PC端通過MWR包來設(shè)置相應(yīng)寄存器的值,主要包含:ReadDMATLPAddress、ReadDMATLPSize、WriteDMATLPCount、DCSR2、INT。通過MRD包來讀取相應(yīng)寄存器的值,在DMA讀過程中主要讀取DMA讀結(jié)束寄存器來判斷DMA讀是否結(jié)束。
其操作配置空間寄存器流程如圖6所示。
2.2.4 中斷控制模塊
中斷是為計(jì)算機(jī)處理緊急事件或非預(yù)測事件而設(shè)計(jì)的,也是PCIe傳輸系統(tǒng)設(shè)計(jì)的重要組成部分[6],優(yōu)良的中斷設(shè)計(jì)可以有效提高整個(gè)系統(tǒng)的性能。在Xilinx平臺(tái)中,發(fā)出中斷主要操作核的4個(gè)信號(hào),其時(shí)序圖如圖7所示,cfg_interrupt_n為中斷信號(hào),在整個(gè)中斷周期內(nèi)拉低兩次,第一次表示發(fā)出中斷,第二次表示清除中斷。
設(shè)置配置空間偏移地址0x50為中斷寄存器,其具體格式如表3所示。當(dāng)DMA讀或者寫完成后,F(xiàn)PGA發(fā)出相應(yīng)的讀寫完成中斷到上位機(jī),同時(shí)將中斷寄存器中的中斷有效位和讀/寫位置1,上位機(jī)驅(qū)動(dòng)收到該中斷后,讀取BAR空間中斷寄存器的值,判斷中斷類型,進(jìn)入相應(yīng)中斷處理程序,此后FPGA端發(fā)出清除中斷信號(hào),同時(shí)將中斷寄存器各位置0,當(dāng)上位機(jī)收到該信號(hào)后,跳出中斷控制程序,數(shù)據(jù)傳輸結(jié)束。
3 實(shí)驗(yàn)與測試
數(shù)據(jù)采集傳輸卡設(shè)計(jì)完成后,在基于PCIe的總線的上位機(jī)上進(jìn)行測試,A/D端接入射頻前端的模擬中頻信號(hào),經(jīng)數(shù)據(jù)處理、緩存后送入PCIe總線并傳入上位機(jī),F(xiàn)PGA程序使用Verilog語言編寫,在ISE開發(fā)環(huán)境進(jìn)行設(shè)計(jì)和測試,上位機(jī)驅(qū)動(dòng)采用微軟的驅(qū)動(dòng)開發(fā)環(huán)境WDF(Windows Driver Foundation)。系統(tǒng)集成后首先利用ISE ChipScope工具對(duì)硬件邏輯設(shè)計(jì)部分進(jìn)行驗(yàn)證,圖8所示為一次導(dǎo)航數(shù)據(jù)DMA傳輸?shù)臅r(shí)序圖,為了便于觀察時(shí)序,設(shè)置一次傳輸DMA的包個(gè)數(shù)為100。時(shí)序分析可知,中斷控制信號(hào)cfg_interrupt_n在數(shù)據(jù)發(fā)送端口trn_td發(fā)送完數(shù)據(jù)包后,連續(xù)兩次有效,最終完成一次DMA的傳輸。
考慮到上位機(jī)對(duì)FPGA發(fā)出的PCIe的中斷處理需要一定時(shí)間,而這個(gè)時(shí)間在DMA傳輸數(shù)據(jù)量較小時(shí)對(duì)系統(tǒng)性能影響較大,因此在速度測試時(shí)參考了3個(gè)速度,分別是傳輸卡、設(shè)備驅(qū)動(dòng)以及應(yīng)用程序,傳輸卡速度為PCIe傳輸接口上的總線速度,不考慮上位機(jī)的中斷響應(yīng)時(shí)間,測試結(jié)果如圖9、圖10所示。結(jié)果表明,在傳輸數(shù)據(jù)較小時(shí)由于上位機(jī)中斷處理所需時(shí)間,驅(qū)動(dòng)層與應(yīng)用層讀寫速度較慢;當(dāng)傳輸數(shù)據(jù)逐漸增大后,三者傳輸速度趨于一致,DMA寫速度為800 MB/s,DMA讀速度為630 MB/s。
4 結(jié)論
本文設(shè)計(jì)了一種基于Virtex-5 FPGA的4通道PCIe導(dǎo)航中頻信號(hào)傳輸系統(tǒng),經(jīng)過測試與驗(yàn)證,該系統(tǒng)能夠滿足了高精度軟件接收機(jī)對(duì)導(dǎo)航原始數(shù)據(jù)的需求,與目前主流的基于USB、PCI總線的導(dǎo)航中頻信號(hào)傳輸系統(tǒng)相比,本系統(tǒng)在信號(hào)采集速率、傳輸速度方面都具有明顯的優(yōu)勢。同時(shí)該系統(tǒng)的設(shè)計(jì)方法也可以推廣到雷達(dá)、通信、圖像處理等高速數(shù)據(jù)傳輸領(lǐng)域。
參考文獻(xiàn)
[1] 謝鋼.GPS原理與接收機(jī)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2009.
[2] 胡濱,王慶,嚴(yán)偉.基于USB和FPGA的GPS中頻信號(hào)采集平臺(tái)設(shè)計(jì)[J].艦船電子對(duì)抗,2009(9):63-66.
[3] 賈志宏,崔曉偉.室內(nèi)GPS的數(shù)字化采集設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2012(9):7031-7034.
[4] 鄧仕海,姚錚.全頻段多系統(tǒng)全球?qū)Ш叫l(wèi)星系統(tǒng)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].科學(xué)技術(shù)與工程,2014(1):191-194.
[5] 候杭呈,王憶文,李輝.一種基于PCI Express總線的DMA高速傳輸系統(tǒng)[J].微電子學(xué),2013(6):383-386.
[6] 唐雷雷,賀占莊.PCI Express總線中消息中斷的研究[J].微電子學(xué)與計(jì)算機(jī),2013(7):137-140.