趙 琳, 王 野, 丁繼成
(哈爾濱工程大學(xué)自動化學(xué)院 哈爾濱 150001)
基于FPGA和USB的GNSS中頻信號采集器設(shè)計?
趙 琳, 王 野, 丁繼成
(哈爾濱工程大學(xué)自動化學(xué)院 哈爾濱 150001)
以FPGA+DSP經(jīng)典高速數(shù)據(jù)采集平臺為核心,應(yīng)用MAX2769射頻芯片,實現(xiàn)了通用GNSS中頻數(shù)據(jù)采集器的設(shè)計。采集器可以接收各GNSS系統(tǒng)衛(wèi)星的中頻信號并轉(zhuǎn)換成數(shù)字中頻數(shù)據(jù),通過編寫USB設(shè)備控制程序和上位機人機交互程序,實現(xiàn)中頻數(shù)據(jù)的高速采集、傳輸和保存,并應(yīng)用接收到的數(shù)據(jù)完成頻譜分析和信號捕獲。實驗結(jié)果表明,研制的GNSS中頻數(shù)據(jù)采集器能夠正確、完整地保存數(shù)據(jù),并且數(shù)據(jù)滿足定位要求。
GNSS; 中頻數(shù)據(jù); FPGA; USB
隨著各種全球?qū)Ш叫l(wèi)星系統(tǒng)GNSS(Global Navigation Satellite System)的建成與完善,衛(wèi)星導(dǎo)航定位接收機的研究與應(yīng)用日漸廣泛。當(dāng)前GNSS接收機已經(jīng)融合了軟件無線電的概念,逐漸由架構(gòu)固定的硬件接收機過渡到了軟件GNSS接收機研究階段,它以多系統(tǒng)組合導(dǎo)航為目標,是目前研究最多、最有可能先與其他系統(tǒng)集成實現(xiàn)GNSS組合導(dǎo)航的接收機平臺[1]。
GNSS中頻信號采集器接收GNSS高頻信號并將其轉(zhuǎn)換為中頻數(shù)據(jù),它是GNSS軟件接收機研制過程中的關(guān)鍵環(huán)節(jié)[1]。目前,市場上有Accord公司的GPS(Global Positioning System)L1和L2信號的中頻信號采樣器,北京東方聯(lián)星科技有限公司的GPS L1信號的中頻信號采樣器。這些產(chǎn)品價格昂貴,且內(nèi)部結(jié)構(gòu)不公開,使得軟件接收機的開發(fā)受到了很大的限制?;谠摤F(xiàn)狀,本文以FPGA+DSP經(jīng)典高速數(shù)據(jù)采集平臺為核心,應(yīng)用MAX2769射頻芯片,設(shè)計了一種多系統(tǒng)通用GNSS中頻信號采集器[2]。
GNSS中頻信號采集器的硬件分為三個部分:GNSS射頻前端,F(xiàn)PGA控制與數(shù)據(jù)轉(zhuǎn)存模塊,USB (Universal Serial Bus)數(shù)據(jù)傳輸模塊。其系統(tǒng)的硬件架構(gòu)如圖1所示。
1.1 GNSS射頻前端
射頻前端采用美信半導(dǎo)體公司生產(chǎn)的MAX2769芯片,此芯片適用于GPS/GLONASS/Galileo接收機,同時也可以通過配置寄存器實現(xiàn)北斗導(dǎo)航衛(wèi)星信號的接收,該芯片不僅可以實現(xiàn)單頻衛(wèi)星導(dǎo)航接收機功能,也可實現(xiàn)多體制衛(wèi)星導(dǎo)航系統(tǒng)的組合。
圖1 系統(tǒng)硬件架構(gòu)圖
芯片內(nèi)部集成設(shè)計了包括雙輸入低噪聲放大器、混頻器、抑制鏡像濾波器、可N分頻的頻率合成器、增益控制放大器、壓控振蕩器、晶體振蕩器以及多位ADC的完整接收機功能單元,總噪聲系數(shù)低達1.4dB。片內(nèi)集成的Σ-ΔN分頻合成器方便中頻編程實現(xiàn),精度可達±40Hz,有利于與系統(tǒng)全局時鐘頻率進行有效的配合工作。芯片內(nèi)部獨特設(shè)計的ADC輸出既可以為I、Q支路輸出一個或兩個量化位,又能為I支路輸出三個量化位。它支持CMOS和有限差分邏輯電平兩種輸出數(shù)據(jù)格式。
1.2 FPGA控制與數(shù)據(jù)轉(zhuǎn)存模塊
FPGA選擇Altera公司主打的Cyclone II市場化產(chǎn)品EP2C70F672C6 FPGA芯片,實現(xiàn)MAX2769射頻前端的控制與中頻數(shù)據(jù)信號的接收,并控制CY7C68013A USB芯片,構(gòu)成主從FIFO結(jié)構(gòu),實現(xiàn)數(shù)據(jù)的高速傳輸。芯片內(nèi)部集成了68416個邏輯資源,能夠設(shè)計實現(xiàn)大量功能單元,主要有內(nèi)嵌式18bit×18bit乘法器、可擴展專用存儲器外部接口電路、4Kbit內(nèi)置存儲模塊、鎖相環(huán)模塊和高速差分I/O線,資源相當(dāng)豐富。FPGA部分整體的設(shè)計方案如圖2所示[3]。
圖2中與射頻相連部分,PGM為工作狀態(tài)選擇:高電平時為高低電平配置工作狀態(tài),低電平時為串行配置工作狀態(tài)。SCLK(串行時鐘)、CS(芯片選擇)和SDATA(串行數(shù)據(jù))為射頻工作模式配置接口,既可以通過電平實現(xiàn)8種預(yù)配置工作,也可以經(jīng)SPI協(xié)議實現(xiàn)射頻內(nèi)寄存器的串行配置。
圖2中與USB相連部分,IFCLK為48MHz接口時鐘,由芯片內(nèi)部產(chǎn)生;CT2FLAG(A-C)為FIFO標志位,反映FIFO當(dāng)前的空滿狀態(tài);CS為從屬FIFO片選信號;FD[15:0]為16位數(shù)據(jù)總線;FIFOADR[1:0]用于選擇內(nèi)部4個緩沖區(qū)之一(EP2,EP4,EP6,EP8);SLOE是數(shù)據(jù)總線FD的輸出使能信號;PKTEND用于末尾數(shù)據(jù)處理,被激活時,表示向USB提交IN包,不考慮包的長度。
圖2 FPGA硬件連接圖
1.3 USB部分
本文選用Cypress公司EZ-USB FX2LP系列芯片中的CY7C68013A,它完全支持USB2.0標準,集成度高,且其具有以下結(jié)構(gòu)特點:①具有1個智能串行接口引擎和1個8051處理器,在執(zhí)行所有基本的USB功能的同時,保證了持續(xù)高速有效的數(shù)據(jù)傳輸;②4KB大容量FIFO數(shù)據(jù)緩沖區(qū),有效支持USB接口的從屬FIFO和GPIF(General Programmable Interface)兩種工作模式;③固件軟配置功能,可將固件程序由主機控制,方便在不修改硬件的情況下修改固件[4]。USB接口電路設(shè)計見圖2。
采集器系統(tǒng)的軟件包括FPGA控制射頻前端和USB、數(shù)據(jù)串并轉(zhuǎn)換的Verilog程序、USB內(nèi)部固件程序和上位機程序三個部分,系統(tǒng)的整體軟件結(jié)構(gòu)如圖3所示。
圖3 衛(wèi)星信號接收系統(tǒng)數(shù)據(jù)接收方案
2.1 FPGA程序設(shè)計
首先,F(xiàn)PGA對射頻前端進行配置。然后,F(xiàn)PGA將從射頻前端接收的中頻信號由2位串行數(shù)據(jù)轉(zhuǎn)換成8位并行數(shù)據(jù)并送入緩沖,同時控制USB接口芯片工作,將該并行數(shù)據(jù)傳送到USB接口芯片的端點FIFO中,供上位機完成端點FIFO中數(shù)據(jù)的接收、存儲和處理。
FPGA程序開發(fā)環(huán)境為QUARTUSII,按照自頂向下的設(shè)計方式,先根據(jù)整體設(shè)計方案定義頂層功能塊,分析構(gòu)成頂層模塊的必要的子模塊,即將系統(tǒng)分為MAX2769射頻模塊、數(shù)據(jù)轉(zhuǎn)存模塊和USB數(shù)據(jù)傳輸控制模塊三個子模塊;然后進一步對各子模塊進行分解,得到無法進一步分解的數(shù)據(jù)發(fā)生模塊、串行外設(shè)接口SPI(Serial Peripheral Interface)模塊、數(shù)據(jù)轉(zhuǎn)存模塊、PLL模塊和USB控制模塊五個底層功能塊,分塊之后的結(jié)構(gòu)如圖4所示。分塊完成后采用Verilog HDL語言編寫底層功能塊,將底層功能塊生成原理圖,最后整個程序采用原理圖方法進行綜合設(shè)計。
圖4 自頂向下分塊結(jié)構(gòu)圖
FPGA的軟件工作:①首先通過SCLK、CS和SDATA三個接口對射頻前端進行配置,可以應(yīng)用電平配置實現(xiàn)GPS/GLONASS/Galileo衛(wèi)星信號的接收或經(jīng)過SPI協(xié)議串行配置接收北斗衛(wèi)星信號,完成多種GNSS系統(tǒng)的中頻數(shù)據(jù)接收。MAX2769的串行配置時序如圖5所示。②將接收到的2位串行數(shù)據(jù)經(jīng)緩存轉(zhuǎn)換成16位并行數(shù)據(jù)傳輸?shù)経SB的16位并行數(shù)據(jù)總線,實現(xiàn)輸入輸出數(shù)據(jù)速度的匹配。③USB的控制同樣由FPGA完成,采用Slave FIFO從機方式實現(xiàn)FPGA對USB芯片的控制。異步Slave FIFO寫FPGA控制進程如下:
IDLE:當(dāng)寫事件發(fā)生時轉(zhuǎn)到狀態(tài)1。
狀態(tài)1:指向端點2,激活FIFO ADR[1:O],轉(zhuǎn)向狀態(tài)2。
狀態(tài)2:如果FIFO滿標志為“假”(FIFO不滿),則轉(zhuǎn)向狀態(tài)3,否則停留在狀態(tài)2。
狀態(tài)3:傳送總線驅(qū)動數(shù)據(jù)。為一個IFCLK激活SLWR,轉(zhuǎn)向狀態(tài)4。
狀態(tài)4:如果有更多的數(shù)據(jù)要寫,則轉(zhuǎn)向狀態(tài)2,否則轉(zhuǎn)向IDLE。
USB的異步寫狀態(tài)機如圖6所示。
2.2 USB固件程序
圖5 MAX2769串行配置的時序圖
圖6 狀態(tài)機設(shè)計:異步FIFO寫
固件程序主要是指配置接收機數(shù)據(jù)傳輸系統(tǒng)的微控制器的程序。對于開發(fā)的不同固件程序,接收機數(shù)據(jù)傳輸系統(tǒng)的傳輸方式、傳輸帶寬甚至對應(yīng)的上位機應(yīng)用程序都可以不同。固件程序本身只負責(zé)配置硬件的工作方式,例如設(shè)備描述符信息、設(shè)備類別、接口配置、對于特定終端的響應(yīng)函數(shù)等等。上位機在設(shè)備枚舉時獲取設(shè)備描述符,進而獲得設(shè)備的配置信息和相關(guān)的驅(qū)動信息。用戶可以通過修改固件描述符來改變設(shè)備特性[5]。
Cypress公司為FX2系列產(chǎn)品提供了固件框架和固件庫,它們是由Keil C51 C編寫的。固件框架和固件庫提供了能夠完成USB設(shè)備基本功能需求的參數(shù)和函數(shù),如宏、框架函數(shù)、常量、USB數(shù)據(jù)結(jié)構(gòu)等等,主要包含設(shè)備初始化、處理標準的USB設(shè)備請求以及USB掛起時的電源管理等基本功能,用戶利用該框架提供的結(jié)構(gòu)函數(shù),可以完善各函數(shù)的功能,開發(fā)出適合于設(shè)計需求專用的USB設(shè)備。
本設(shè)計中,采用FPGA作為外部主控制器與USB芯片進行通信,并工作于從屬FIFO模式。選用高速傳輸端點EP6,USB芯片在復(fù)位后,它的I/O引腳配置在“端口”模式下,而不是Slave FIFO模式。為將引腳配置為Slave FIFO模式,IFCONFIG寄存器的IFCFG[1:0]必須設(shè)置為11,因為USB芯片的FIFO工作在異步方式下,ASYNC位必須設(shè)置為1。選擇EP6與FD總線連接,在對該端點的設(shè)置上選擇塊傳輸,4倍緩存,端點緩沖區(qū)大小為512字節(jié),所以EP6CFG設(shè)置為0xe0,端點FIFO每512字節(jié)會自動打包上傳,那么EP6FIFOCFG設(shè)置為0x0d。為了對數(shù)據(jù)傳輸進行控制,需要對該端點的標志位進行設(shè)置,通過FPGA向EP6的端點FIFO寫數(shù)據(jù),F(xiàn)LAGB變低電平就表示FIFO為滿,此時不能再往里面寫數(shù)據(jù)了[6]。
數(shù)據(jù)包的大小為512字節(jié),需要設(shè)置EP6AUTOINLENH=0x02,EP6AUTOINLENL=0x00。通過上位機軟件可以讀取USB端點FIFO數(shù)據(jù),然后保存到硬盤文件中,供后續(xù)處理。
2.3 上位機程序
應(yīng)用程序不僅要能實現(xiàn)系統(tǒng)的既定功能,還要簡潔和美觀。本論文中的上位機應(yīng)用程序采用VC6.0軟件,基于MFC界面設(shè)計,調(diào)用Cypress公司的CyAPI.lib封裝庫編寫的基于對話框的單線程程序。上位機主要是完成數(shù)據(jù)的傳輸以及校驗,確保數(shù)據(jù)傳輸過程正確無誤,同時還要實現(xiàn)傳輸?shù)募磿r性、靈活性以及簡單明了的界面信息顯示。目前上位機可以即時傳輸數(shù)據(jù),通過設(shè)置實現(xiàn)任意時間長度的數(shù)據(jù)傳輸。它還具有校驗功能,如果數(shù)據(jù)傳輸過程出現(xiàn)了錯誤,則停止傳輸并發(fā)出警告。同時,它還可以實現(xiàn)USB設(shè)備的設(shè)備描述信息以及傳輸模式、傳輸大小、傳輸方式等具體信息的捕獲顯示。
上位機程序通過I/O控制調(diào)用來訪問EZUSB通用驅(qū)動程序。上位機程序首先通過調(diào)用Win32函數(shù)CreateFile()來獲得設(shè)備驅(qū)動程序的句柄,然后使用Win32函數(shù)DeviceIoCont rol(),通過CreateFile()函數(shù)返回的句柄,將I/O控制代碼和相關(guān)的輸入輸出緩沖區(qū)提交到驅(qū)動程序。圖7為整個數(shù)據(jù)采集和處理過程的流程圖。
圖7 數(shù)據(jù)采集和處理過程流程圖
為了驗證本文系統(tǒng)的功能,在哈爾濱工程大學(xué)三乙實驗樓接收了GPS信號,并對其做了初步處理,應(yīng)用MATLAB對中頻信號的頻譜和功率譜做了分析,同時進行了捕獲驗證,捕獲方法為串行捕獲[7,8]。得到的結(jié)果如圖8所示。圖9為NovAtel SS3-1CPT OEM(Original Equipment Manufacturer)版接收機在同一時間同一地點檢測到的結(jié)果。經(jīng)過對比,本文系統(tǒng)檢測到的GPS衛(wèi)星數(shù)量及衛(wèi)星號與NovAtel SS3-1CPT的捕獲結(jié)果一致,分析頻譜和功率譜可以看出可捕獲信號強度足夠,說明該GNSS中頻信號采集器采集的數(shù)據(jù)能夠滿足后續(xù)信號處理要求。
圖8 實時GPS信號接收與后處理驗證
圖9 NovAtel SS3-1CPT檢測結(jié)果圖
本文設(shè)計的GNSS中頻信號采集器實現(xiàn)了導(dǎo)航衛(wèi)星信號的中頻信號接收、傳輸和保存等功能,完整保存了GNSS中頻數(shù)據(jù),且數(shù)據(jù)質(zhì)量滿足后續(xù)信號處理的要求,為GNSS中頻信號捕獲和跟蹤算法的研究提供了可靠的原始數(shù)據(jù),為推動衛(wèi)星導(dǎo)航接收機技術(shù)的發(fā)展和多系統(tǒng)兼容接收機的實現(xiàn)奠定了基礎(chǔ)。
[1] 王 軻.單頻GPS軟件接收機通用硬件平臺的設(shè)計與驗證[D].武漢理工大學(xué),2010,11~29.
[2] 胡 輝.基于USB2.0的GPS中頻數(shù)據(jù)采集器研制[J].河南師范大學(xué)學(xué)報(自然科學(xué)版),2012,(5):56~57.
[3] 賀 喆.USB2.0 GNSS軟件接收機設(shè)計與實現(xiàn)[D].上海交通大學(xué),2009.
[4] 嚴 偉.GPS中頻信號采集與捕獲技術(shù)研究[J].東南大學(xué)學(xué)報,2009,(6):76~78.
[5] 趙 琳,丁繼成,馬雪飛.衛(wèi)星導(dǎo)航原理及應(yīng)用[M].西安:西北工業(yè)大學(xué)出版社,2011.
[6] 謝 鋼.GPS原理與接收機設(shè)計[M].北京:電子工業(yè)出版社,2009.
[7] Tsui,J ames Bao-Yen.Fundamentals of Global Positioning System Receivers:a Software Approach[M].John Wiley&Sons,Inc.,2000,573~576.
[8] Soon Lim,Deok Won Lim,Meilin Liu,Seung Wook Moon,Chansik Park,Sang Jeong Lee.Design of a Software-based Multi-channel GNSS IF Signal Generator[J].Control,Automation and Systems,ICCAS,2008,754~758.
Design of GNSS IF Signal Collection Platform Based on FPGA and USB
Zhao Lin, Wang Ye, Ding Jicheng
The general GNSS IF data collection is designed with MAX2769 RF chip and classic high-speed data acquisition platform of FPGA+DSP as the core.The IF signal of GNSS satellites can be received and converted into digital IF data.By writing the control programs of USB device and man-machine interface programs in PC,the high-speed data acquisition,transmission and saving of IF data are achieved.The frequency spectrum is analyzed and the signal is captured with the received data.The experimental results show that the GNSS IF data can be saved correctly and completely by using the IF data collection developed in this paper.And the data can satisfy the positioning requirement.
GNSS; IF data; FPGA; USB
V249.32
A
CN11-1780(2014)02-0019-06
趙 琳 1968年生,工學(xué)博士,教授,博士生導(dǎo)師,研究方向為慣性導(dǎo)航技術(shù)、衛(wèi)星導(dǎo)航技術(shù)、組合導(dǎo)航技術(shù)、信息處理與計算機仿真。
國家自然科學(xué)基金資助(編號:61273081,61304234)
2013-12-03
王 野 1988年生,在讀工學(xué)學(xué)士,碩士研究生,研究方向為衛(wèi)星無線電導(dǎo)航技術(shù),組合導(dǎo)航技術(shù)。