文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.10.014
中文引用格式: 張婉明,,李琦,,李金海,等. 基于ARM與FPGA的便攜式GNSS信號(hào)采集回放系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,,2016,,42(10):58-61.
英文引用格式: Zhang Wanming,,Li Qi,,Li Jinhai,et al. Design of portable GNSS signal capture and playback system based on ARM and FPGA[J].Application of Electronic Technique,,2016,,42(10):58-61.
0 引言
目前,,GNSS衛(wèi)星導(dǎo)航定位系統(tǒng)的應(yīng)用越來(lái)越廣泛,包括中國(guó),、美國(guó),、歐盟、俄羅斯等世界主要強(qiáng)國(guó)都在積極布置自己的全球衛(wèi)星導(dǎo)航定位系統(tǒng)[1],。雖然中國(guó)在衛(wèi)星導(dǎo)航方面起步較晚,,但是技術(shù)發(fā)展迅猛,,隨著中國(guó)的北斗2號(hào)衛(wèi)星導(dǎo)航系統(tǒng)的逐步完善,使得中國(guó)成為繼美俄之后第三個(gè)擁有完整的導(dǎo)航系統(tǒng)的國(guó)家,。國(guó)內(nèi)市場(chǎng)對(duì)導(dǎo)航接收機(jī)的需求也越來(lái)越多,,設(shè)計(jì)高性能、多模式,、低價(jià)位的導(dǎo)航接收機(jī)已成為研究熱點(diǎn),。作為導(dǎo)航接收機(jī)研發(fā)過(guò)程中必不可少的設(shè)備,采集回放系統(tǒng)具有廣闊的應(yīng)用前景,。所以,,迫切需要設(shè)計(jì)一種價(jià)格低廉、便攜性好,、界面直觀,、可操作性強(qiáng)的GNSS導(dǎo)航信號(hào)采集回放系統(tǒng)。
綜上,,該系統(tǒng)的監(jiān)控端采用了基于CortexA8系列的ARM處理器,,該處理器同時(shí)兼顧了成本與性能的要求,可設(shè)計(jì)美觀的圖形化操作界面,。該系統(tǒng)工作于BD2-B1和GPS-L1兩個(gè)頻點(diǎn),,便攜性好,界面直觀,,可通過(guò)按鍵或觸摸屏兩種方式操作,,同時(shí)可隨時(shí)采集戶外復(fù)雜環(huán)境下的導(dǎo)航衛(wèi)星信號(hào),極大地提高了導(dǎo)航接收機(jī)的開(kāi)發(fā)效率和質(zhì)量,。
1 系統(tǒng)結(jié)構(gòu)
本系統(tǒng)整體分為射頻模塊與基帶模塊兩大部分,。其中,射頻模塊負(fù)責(zé)接收和發(fā)送射頻信號(hào),,并將射頻信號(hào)轉(zhuǎn)換為基帶信號(hào)后交由基帶模塊處理,;基帶模塊完成用戶交互、接口對(duì)接等功能,。此外還包括SSD硬盤(pán)(數(shù)據(jù)存儲(chǔ)的介質(zhì),,存放采集和回放的數(shù)據(jù))以及對(duì)外各種接口。系統(tǒng)的結(jié)構(gòu)組成如圖1所示,。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 射頻模塊
射頻模塊可分為上變頻與下變頻兩大部分,,下變頻部分的核心器件采用MAX2769B芯片,該芯片是一款多模導(dǎo)航接收機(jī)芯片,,適用于GPS/北斗/格洛納斯/伽利略衛(wèi)星導(dǎo)航定位系統(tǒng),。上變頻部分的增益控制器件采用了HMC472LP4數(shù)控衰減芯片,該衰減芯片步進(jìn)0.5 dB,,最高衰減31.5 dB,,分別由V1~V6 6個(gè)引腳控制,,低電平有效。上下變頻部分均采用C8051F230單片機(jī)進(jìn)行配置,,下變頻部分采用GPIO口模擬SPI接口對(duì)MAX2769B芯片寫(xiě)配置字,,配置相關(guān)參數(shù);上變頻模塊通過(guò)控制12個(gè)GPIO口電平的高低配置增益,。同時(shí),,射頻模塊的上下變頻部分均采用杭州中科微電子的ATGM332D導(dǎo)航接收機(jī)作為監(jiān)控接收機(jī),上下變頻模塊分別將監(jiān)控接收機(jī)接收的報(bào)文信息通過(guò)串口送入FPGA模塊,,由FPGA選擇輸出至ARM端,。圖2為射頻模塊原理圖[2]。
2.2 基帶模塊
基帶模塊可以分為FPGA模塊,、ARM模塊及基帶底板3個(gè)部分,。基帶底板是各模塊連接的橋梁,,并完成除ARM,、FPGA之外的所有功能,,各模塊均以接插件形式與底板連接,。這里創(chuàng)新性地采用了SSD硬盤(pán)進(jìn)行數(shù)據(jù)存儲(chǔ),滿足了設(shè)備長(zhǎng)時(shí)間采集數(shù)據(jù)對(duì)大容量空間的需求,。由于系統(tǒng)復(fù)雜性高,,本文對(duì)于基帶底板子模塊只介紹電源與時(shí)鐘電路的設(shè)計(jì)方案。
2.2.1 FPGA模塊
FPGA采用了Xilinx 的XC7K325TFFG900-2型FPGA(下文簡(jiǎn)稱K7),。K7系列是Xilinx最新推出的面向中低端市場(chǎng)的低價(jià)位,、高性能FPGA[3]。K7核心板主要負(fù)責(zé)對(duì)接射頻數(shù)據(jù)接口和高速收發(fā)接口,,F(xiàn)PGA內(nèi)部邏輯結(jié)構(gòu)如圖3所示,,根據(jù)功能大致分為3個(gè)部分:控制單元、SATA控制器,、UART分線單元,。FPGA的控制單元主要負(fù)責(zé)系統(tǒng)的差錯(cuò)控制及與ARM端的通信。這里ARM與FPGA是通過(guò)SMC總線進(jìn)行通信的,,需要在Linux內(nèi)核中編寫(xiě)K7處理器的SMC總線驅(qū)動(dòng)[4],。
2.2.2 ARM模塊
ARM模塊采用Atmel SAMA5D31處理器,該處理器基于Cortex-A5架構(gòu),,主頻528 MHz,,內(nèi)部集成了浮點(diǎn)運(yùn)算單元,是一款高性能,、低功耗的嵌入式處理器,。ARM模塊集成了256 MB ROM,、256 MB RAM,保證性能的同時(shí)降低了開(kāi)發(fā)成本,。對(duì)于本系統(tǒng)而言,,選用該模塊是考慮了性能、功耗,、價(jià)位等多種綜合因素的結(jié)果[5],。ARM作為主控芯片控制整個(gè)系統(tǒng)流程,圖4所示為ARM與其他部件的連接關(guān)系圖,。
2.2.3 基帶底板(電源與時(shí)鐘)
本設(shè)計(jì)采用5 V~42 V寬壓電源輸入,,根據(jù)各個(gè)器件工作時(shí)所需電流的大小,采用12 V/5 A適配器作為輸入電源,,整體電源分配如圖5所示,。
整個(gè)系統(tǒng)的時(shí)鐘源有2個(gè),均為16.368 MHz的有源晶振,,分別位于基帶底板(主時(shí)鐘),、射頻板(備用時(shí)鐘)。正常情況下使用主時(shí)鐘,,在特殊應(yīng)用下使用備用時(shí)鐘,。除16.368 MHz時(shí)鐘外,ARM具有自身的無(wú)源晶振作為自己的時(shí)鐘源,。模塊通信時(shí)均采用異步通信方式,,以避免鐘差產(chǎn)生的錯(cuò)誤。圖6所示為系統(tǒng)的時(shí)鐘設(shè)計(jì)方案,。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 FPGA程序設(shè)計(jì)
本系統(tǒng)在采集數(shù)據(jù)時(shí),,F(xiàn)PGA接收來(lái)自下變頻模塊的8位AD數(shù)字信號(hào)(L1+B1),經(jīng)過(guò)處理后通過(guò)SATA接口存入到SSD硬盤(pán)中,,完成數(shù)據(jù)的采集與存儲(chǔ)[6],;回放時(shí),F(xiàn)PGA從SSD硬盤(pán)中讀取數(shù)據(jù),,經(jīng)過(guò)DA數(shù)模轉(zhuǎn)換后,,送入上變頻模塊完成信號(hào)的播發(fā)[7]。在衛(wèi)星信號(hào)采集回放時(shí),,F(xiàn)PGA要接收來(lái)自上下變頻模塊監(jiān)控接收機(jī)的UART信息,,確定采集和播發(fā)的信號(hào)是否正常。
本設(shè)計(jì)采用VHDL語(yǔ)言[8]對(duì)需要實(shí)現(xiàn)的電路進(jìn)行描述,,Xilinx的K7系列FPGA內(nèi)部集成的高速收發(fā)器(GTX)數(shù)目高達(dá)16個(gè),,單個(gè)GTX的速率能達(dá)到12.5 Gb/s,GTX是實(shí)現(xiàn)SATA協(xié)議的核心器件,,用于實(shí)現(xiàn)SATA2.0控制器綽綽有余,。本文采用K7實(shí)現(xiàn)了SATA協(xié)議的物理層,、鏈路層和傳輸層,主要包括完成鏈路初始化,、幀的封裝,、幀的發(fā)送/暫停/結(jié)束控制、幀的解析與校驗(yàn),。SATA協(xié)議的傳輸層由萬(wàn)兆位級(jí)收發(fā)器GTX,、OBB控制模塊和接口傳輸率選擇模塊共同實(shí)現(xiàn)。GTX的主要功能包括16B/20B編碼/解碼,、串并/并串轉(zhuǎn)換,、逗點(diǎn)檢測(cè)、時(shí)鐘修正,、預(yù)測(cè)重和線性均衡等,。OBB控制模塊用于硬盤(pán)的上電過(guò)程或者硬件的復(fù)位過(guò)程,同時(shí)與SATA控制器建立通信鏈路,。
3.2 ARM程序設(shè)計(jì)
ARM模塊作為本系統(tǒng)的核心控制模塊,,負(fù)責(zé)各個(gè)任務(wù)的調(diào)度,加之需要友好的用戶交互界面,,因此采用嵌入式Linux作為ARM模塊的操作系統(tǒng),。根據(jù)ARM任務(wù)可以大致分為:用戶交互操作、模塊指令配置,、數(shù)據(jù)文件管理,、模塊狀態(tài)監(jiān)控。
首先需要在Linux內(nèi)核中實(shí)現(xiàn)相應(yīng)接口的驅(qū)動(dòng)程序,,除SMC總線驅(qū)動(dòng)外,Atmel官方提供的linux3.6.9版本的內(nèi)核中已經(jīng)提供了其他接口的驅(qū)動(dòng)程序[9],,只需在設(shè)備樹(shù)文件中引出相應(yīng)的設(shè)備節(jié)點(diǎn)即可,。Atmel官方同時(shí)提供了SPI、I2C,、GPIO接口的測(cè)試程序,,可以直接移植相應(yīng)的程序到Qt4中用于實(shí)現(xiàn)相應(yīng)的功能。這里需要特別強(qiáng)調(diào)的是UART接口,,在Qt4中沒(méi)有特定的用于串口通信的類,,本系統(tǒng)參考第三方的qextserialport類,自定義一個(gè)PortSettings類型的結(jié)構(gòu)體,,用于存儲(chǔ)串口參數(shù),。由于Linux系統(tǒng)不支持串口中斷方式,所以這里需要新建一個(gè)定時(shí)器QTimer,,定時(shí)1 s,,并在程序中實(shí)現(xiàn)串口發(fā)送與接收的同步,。接下來(lái)調(diào)用open()函數(shù)打開(kāi)串口,并調(diào)用bytesAvailable()函數(shù)判斷串口數(shù)據(jù)是否為零,,若串口緩沖中有數(shù)據(jù),,則調(diào)用readAll()函數(shù)將緩沖區(qū)中所有數(shù)據(jù)讀取到QByteArray類型變量中[10]。
要實(shí)現(xiàn)實(shí)時(shí)接收機(jī)監(jiān)控,,需要解析串口接收到的報(bào)文數(shù)據(jù),,并提取載噪比信息,繪制柱狀圖用于實(shí)時(shí)顯示信號(hào)質(zhì)量,。本系統(tǒng)針對(duì)Qt4用戶圖形界面,,提出了一種全新的報(bào)文解析方式,首先需要將QByteArray型變量轉(zhuǎn)換為QString型,,并調(diào)用replace()函數(shù)將報(bào)文中的星號(hào),、回車符全部替換為逗號(hào),并以逗號(hào)為分隔符,,調(diào)用split()函數(shù)對(duì)報(bào)文進(jìn)行分割,,用查詢的方式查找$GPGSV字段,將衛(wèi)星編號(hào)以及載噪比保存到數(shù)組中,。根據(jù)數(shù)組中的數(shù)據(jù),,采用第三方的QCustomPlot類繪制載噪比柱狀圖,首先調(diào)用setLabel函數(shù)設(shè)置橫縱坐標(biāo)名稱,,并使用QCustomPlot提供的QCPBars來(lái)表示柱狀圖,,調(diào)用setData()函數(shù)對(duì)每個(gè)柱子進(jìn)行賦值,然后調(diào)用addPlittable()函數(shù)將柱狀圖添加到Widget上,,橫坐標(biāo)賦值需要調(diào)用setTickVector()及setTickVectorLabels()函數(shù),,最后調(diào)用replot()重繪柱狀圖,保證柱狀圖實(shí)時(shí)更新,。
4 實(shí)驗(yàn)與驗(yàn)證
由于Qt4在界面設(shè)計(jì)中的優(yōu)越性,,因此可以隨時(shí)按照自己的需求改變界面樣式[11]。
為了驗(yàn)證ARM端程序是否發(fā)生過(guò)串口阻塞現(xiàn)象及是否滿足實(shí)時(shí)性要求,,對(duì)每幀報(bào)文的處理時(shí)間進(jìn)行分析,。將程序移植到嵌入式開(kāi)發(fā)平臺(tái)上,使用labsat循環(huán)回放一段衛(wèi)星的中頻信號(hào),,該中頻信號(hào)包含GPS與BD2的報(bào)文信息,,經(jīng)過(guò)3.5 h的連續(xù)測(cè)試得到一組數(shù)據(jù),將該數(shù)據(jù)用MATLAB分析后,,得到圖7所示結(jié)果,。
從圖7中可以清楚地看到,報(bào)文解析及繪圖時(shí)間多在250 ms左右,偶爾突發(fā)時(shí)刻會(huì)達(dá)到550 ms的峰值,,處理時(shí)間在1 s之內(nèi),,完全滿足實(shí)時(shí)性要求。
5 結(jié)束語(yǔ)
本文設(shè)計(jì)的便攜式GNSS導(dǎo)航信號(hào)采集回放系統(tǒng)實(shí)現(xiàn)了對(duì)衛(wèi)星中頻數(shù)據(jù)的保存與回放,,其監(jiān)控端采用ARM處理平臺(tái),,編寫(xiě)了針對(duì)K7型FPGA的SMC總線驅(qū)動(dòng),并設(shè)計(jì)了相應(yīng)的圖形化操作界面,,節(jié)約成本的同時(shí)保持了設(shè)備良好的可操作性,,同時(shí)采用SSD作為存儲(chǔ)介質(zhì),保障了設(shè)備長(zhǎng)時(shí)間采集的要求,。這里用MATLAB對(duì)中頻信號(hào)的頻譜和功率譜分析后得知,,其回放的信號(hào)質(zhì)量滿足導(dǎo)航接收機(jī)測(cè)試的需求,同時(shí)其保存的中頻數(shù)據(jù)為信號(hào)捕獲與跟蹤算法的研究提供了可靠的原始數(shù)據(jù),,為研制高性能,、低價(jià)位的導(dǎo)航接收機(jī)奠定了基礎(chǔ)。
參考文獻(xiàn)
[1] 楊亮,,郭佩,,秦紅磊.射頻直接采樣多頻GNSS信號(hào)采集系統(tǒng)的實(shí)現(xiàn)[J].電訊技術(shù),2011,,51(8):51-55.
[2] 戴維斯[美].射頻電路設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,,2015.
[3] 周波,張磊,,張寶燕.基于K7的高速FC物理層的設(shè)計(jì)和實(shí)現(xiàn)[J].光通信技術(shù),,2015,39(10):59-62.
[4] 張福洪,,徐春暉,,胡舜峰.基于Linux的ARM與FPGA數(shù)據(jù)通信設(shè)計(jì)與實(shí)現(xiàn)[J].杭州電子科技大學(xué)學(xué)報(bào),2015,,35(4):26-30.
[5] 李寧.ARM Cortex-A8處理器原理與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,,2012.
[6] 王夢(mèng)楠.基于FPGA的中頻數(shù)字信號(hào)處理[D].大連:大連海事大學(xué),2015.
[7] 何賓.FPGA數(shù)字信號(hào)處理實(shí)現(xiàn)原理及方法[M].北京:清華大學(xué)出版社,,2010.
[8] 曾繁泰,曾祥云.VHDL程序設(shè)計(jì)教程(第4版)[M].北京:清華大學(xué)出版社,,2001.
[9] 宋寶華.Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解:基于最新的Linux4.0內(nèi)核[M].北京:機(jī)械工業(yè)出版社,,2015.
[10] 吳斌,楊根興.基于OEM,、PXA250平臺(tái)的GPS接收機(jī)設(shè)計(jì)[J].計(jì)算機(jī)工程,,2005,31(24):212-213.
[11] 黃麗琴.Qt4圖形設(shè)計(jì)與嵌入式開(kāi)發(fā)[M].北京:人民郵電出版社,2009.