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