《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于ARM與FPGA的便攜式GNSS信號采集回放系統(tǒng)設(shè)計
基于ARM與FPGA的便攜式GNSS信號采集回放系統(tǒng)設(shè)計
2016年電子技術(shù)應(yīng)用第10期
張婉明1,李 琦1,李金海2,汪 峰2,高 宇1,董 盟1
1.河北工業(yè)大學(xué) 電子信息工程學(xué)院,天津300401;2.中國科學(xué)院微電子研究所,北京100029
摘要: 設(shè)計了一種基于ARM與FPGA的便攜式GNSS導(dǎo)航信號采集回放系統(tǒng)。該系統(tǒng)可采集復(fù)雜情況下的導(dǎo)航衛(wèi)星信號,并且增益可控,為導(dǎo)航接收機測試提供了特定的信號源。系統(tǒng)將導(dǎo)航衛(wèi)星信號經(jīng)射頻電路轉(zhuǎn)換為數(shù)字中頻信號,通過FPGA處理后保存至SATA硬盤。ARM處理器作為監(jiān)控端發(fā)送指令至FPGA,控制FPGA進行數(shù)據(jù)采集與回放,同時接收監(jiān)控接收機串口發(fā)送的報文,提取載噪比信息,并繪制載噪比柱狀圖。該系統(tǒng)ARM端基于嵌入式Linux系統(tǒng)開發(fā),采用Qt4設(shè)計用戶圖形界面,可擴展及可移植性強,為系統(tǒng)的后續(xù)開發(fā)提供了保障。實驗結(jié)果表明,該系統(tǒng)信號質(zhì)量滿足要求,ARM監(jiān)控端數(shù)據(jù)處理時間在200 ms~500 ms之間,實時性良好。
關(guān)鍵詞: GNSS FPGA ARM 采集回放 嵌入式Linux
中圖分類號: TN965.5
文獻標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.10.014
中文引用格式: 張婉明,李琦,李金海,等. 基于ARM與FPGA的便攜式GNSS信號采集回放系統(tǒng)設(shè)計[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.
Design of portable GNSS signal capture and playback system based on ARM and FPGA
Zhang Wanming1,Li Qi1,Li Jinhai2,Wang Feng2,Gao Yu1,Dong Meng1
1.School of Electronic And Information Engineering,Hebei University of Technology,Tianjin 300401,China; 2.Institute of Microelectronics,Chinese Academy of Sciences,Beijing 100029,China
Abstract: A portable GNSS navigation signal capture and playback system based on ARM and FPGA is designed. This system can capture complex navigation satellite signals, control gain, and provide a specific signal source for navigation receiver testing. This system receives satellite signals via the RF circuit which is converted to a digital IF signal, and then the data is saved to the SATA hard disk after the processing by FPGA. The ARM processor works as a monitor which send commands to the FPGA, controls the FPGA to collect and playback navigation data, and receives the packets from monitoring receiver through serial port, as well as extracts the CNR and draw the histogram. This system is based on embedded Linux, using Qt4 to design graphical user interface. It has the advantage of scalabilityes and portability, and provides a guarantee for the subsequent development. Experimental results show that the quality of signal reach the requirements. The data processing time by ARM processor is between 200 ms and 500 ms which has good probability for real time application.
Key words : GNSS;FPGA;ARM;capture and playback;embedded Linux;Qt4

0 引言

    目前,GNSS衛(wèi)星導(dǎo)航定位系統(tǒng)的應(yīng)用越來越廣泛,包括中國、美國、歐盟、俄羅斯等世界主要強國都在積極布置自己的全球衛(wèi)星導(dǎo)航定位系統(tǒng)[1]。雖然中國在衛(wèi)星導(dǎo)航方面起步較晚,但是技術(shù)發(fā)展迅猛,隨著中國的北斗2號衛(wèi)星導(dǎo)航系統(tǒng)的逐步完善,使得中國成為繼美俄之后第三個擁有完整的導(dǎo)航系統(tǒng)的國家。國內(nèi)市場對導(dǎo)航接收機的需求也越來越多,設(shè)計高性能、多模式、低價位的導(dǎo)航接收機已成為研究熱點。作為導(dǎo)航接收機研發(fā)過程中必不可少的設(shè)備,采集回放系統(tǒng)具有廣闊的應(yīng)用前景。所以,迫切需要設(shè)計一種價格低廉、便攜性好、界面直觀、可操作性強的GNSS導(dǎo)航信號采集回放系統(tǒng)。

    綜上,該系統(tǒng)的監(jiān)控端采用了基于CortexA8系列的ARM處理器,該處理器同時兼顧了成本與性能的要求,可設(shè)計美觀的圖形化操作界面。該系統(tǒng)工作于BD2-B1和GPS-L1兩個頻點,便攜性好,界面直觀,可通過按鍵或觸摸屏兩種方式操作,同時可隨時采集戶外復(fù)雜環(huán)境下的導(dǎo)航衛(wèi)星信號,極大地提高了導(dǎo)航接收機的開發(fā)效率和質(zhì)量。

1 系統(tǒng)結(jié)構(gòu)

    本系統(tǒng)整體分為射頻模塊與基帶模塊兩大部分。其中,射頻模塊負(fù)責(zé)接收和發(fā)送射頻信號,并將射頻信號轉(zhuǎn)換為基帶信號后交由基帶模塊處理;基帶模塊完成用戶交互、接口對接等功能。此外還包括SSD硬盤(數(shù)據(jù)存儲的介質(zhì),存放采集和回放的數(shù)據(jù))以及對外各種接口。系統(tǒng)的結(jié)構(gòu)組成如圖1所示。

qrs2-t1.gif

2 系統(tǒng)硬件設(shè)計

2.1 射頻模塊

    射頻模塊可分為上變頻與下變頻兩大部分,下變頻部分的核心器件采用MAX2769B芯片,該芯片是一款多模導(dǎo)航接收機芯片,適用于GPS/北斗/格洛納斯/伽利略衛(wèi)星導(dǎo)航定位系統(tǒng)。上變頻部分的增益控制器件采用了HMC472LP4數(shù)控衰減芯片,該衰減芯片步進0.5 dB,最高衰減31.5 dB,分別由V1~V6 6個引腳控制,低電平有效。上下變頻部分均采用C8051F230單片機進行配置,下變頻部分采用GPIO口模擬SPI接口對MAX2769B芯片寫配置字,配置相關(guān)參數(shù);上變頻模塊通過控制12個GPIO口電平的高低配置增益。同時,射頻模塊的上下變頻部分均采用杭州中科微電子的ATGM332D導(dǎo)航接收機作為監(jiān)控接收機,上下變頻模塊分別將監(jiān)控接收機接收的報文信息通過串口送入FPGA模塊,由FPGA選擇輸出至ARM端。圖2為射頻模塊原理圖[2]

qrs2-t2.gif

2.2 基帶模塊

    基帶模塊可以分為FPGA模塊、ARM模塊及基帶底板3個部分?;鶐У装迨歉髂K連接的橋梁,并完成除ARM、FPGA之外的所有功能,各模塊均以接插件形式與底板連接。這里創(chuàng)新性地采用了SSD硬盤進行數(shù)據(jù)存儲,滿足了設(shè)備長時間采集數(shù)據(jù)對大容量空間的需求。由于系統(tǒng)復(fù)雜性高,本文對于基帶底板子模塊只介紹電源與時鐘電路的設(shè)計方案。

2.2.1 FPGA模塊

    FPGA采用了Xilinx 的XC7K325TFFG900-2型FPGA(下文簡稱K7)。K7系列是Xilinx最新推出的面向中低端市場的低價位、高性能FPGA[3]。K7核心板主要負(fù)責(zé)對接射頻數(shù)據(jù)接口和高速收發(fā)接口,F(xiàn)PGA內(nèi)部邏輯結(jié)構(gòu)如圖3所示,根據(jù)功能大致分為3個部分:控制單元、SATA控制器、UART分線單元。FPGA的控制單元主要負(fù)責(zé)系統(tǒng)的差錯控制及與ARM端的通信。這里ARM與FPGA是通過SMC總線進行通信的,需要在Linux內(nèi)核中編寫K7處理器的SMC總線驅(qū)動[4]。

qrs2-t3.gif

2.2.2 ARM模塊

    ARM模塊采用Atmel SAMA5D31處理器,該處理器基于Cortex-A5架構(gòu),主頻528 MHz,內(nèi)部集成了浮點運算單元,是一款高性能、低功耗的嵌入式處理器。ARM模塊集成了256 MB ROM、256 MB RAM,保證性能的同時降低了開發(fā)成本。對于本系統(tǒng)而言,選用該模塊是考慮了性能、功耗、價位等多種綜合因素的結(jié)果[5]。ARM作為主控芯片控制整個系統(tǒng)流程,圖4所示為ARM與其他部件的連接關(guān)系圖。

qrs2-t4.gif

2.2.3 基帶底板(電源與時鐘)

    本設(shè)計采用5 V~42 V寬壓電源輸入,根據(jù)各個器件工作時所需電流的大小,采用12 V/5 A適配器作為輸入電源,整體電源分配如圖5所示。

qrs2-t5.gif

    整個系統(tǒng)的時鐘源有2個,均為16.368 MHz的有源晶振,分別位于基帶底板(主時鐘)、射頻板(備用時鐘)。正常情況下使用主時鐘,在特殊應(yīng)用下使用備用時鐘。除16.368 MHz時鐘外,ARM具有自身的無源晶振作為自己的時鐘源。模塊通信時均采用異步通信方式,以避免鐘差產(chǎn)生的錯誤。圖6所示為系統(tǒng)的時鐘設(shè)計方案。

qrs2-t6.gif

3 系統(tǒng)軟件設(shè)計

3.1 FPGA程序設(shè)計

    本系統(tǒng)在采集數(shù)據(jù)時,F(xiàn)PGA接收來自下變頻模塊的8位AD數(shù)字信號(L1+B1),經(jīng)過處理后通過SATA接口存入到SSD硬盤中,完成數(shù)據(jù)的采集與存儲[6];回放時,F(xiàn)PGA從SSD硬盤中讀取數(shù)據(jù),經(jīng)過DA數(shù)模轉(zhuǎn)換后,送入上變頻模塊完成信號的播發(fā)[7]。在衛(wèi)星信號采集回放時,F(xiàn)PGA要接收來自上下變頻模塊監(jiān)控接收機的UART信息,確定采集和播發(fā)的信號是否正常。

    本設(shè)計采用VHDL語言[8]對需要實現(xiàn)的電路進行描述,Xilinx的K7系列FPGA內(nèi)部集成的高速收發(fā)器(GTX)數(shù)目高達(dá)16個,單個GTX的速率能達(dá)到12.5 Gb/s,GTX是實現(xiàn)SATA協(xié)議的核心器件,用于實現(xiàn)SATA2.0控制器綽綽有余。本文采用K7實現(xiàn)了SATA協(xié)議的物理層、鏈路層和傳輸層,主要包括完成鏈路初始化、幀的封裝、幀的發(fā)送/暫停/結(jié)束控制、幀的解析與校驗。SATA協(xié)議的傳輸層由萬兆位級收發(fā)器GTX、OBB控制模塊和接口傳輸率選擇模塊共同實現(xiàn)。GTX的主要功能包括16B/20B編碼/解碼、串并/并串轉(zhuǎn)換、逗點檢測、時鐘修正、預(yù)測重和線性均衡等。OBB控制模塊用于硬盤的上電過程或者硬件的復(fù)位過程,同時與SATA控制器建立通信鏈路。

3.2 ARM程序設(shè)計

    ARM模塊作為本系統(tǒng)的核心控制模塊,負(fù)責(zé)各個任務(wù)的調(diào)度,加之需要友好的用戶交互界面,因此采用嵌入式Linux作為ARM模塊的操作系統(tǒng)。根據(jù)ARM任務(wù)可以大致分為:用戶交互操作、模塊指令配置、數(shù)據(jù)文件管理、模塊狀態(tài)監(jiān)控。

    首先需要在Linux內(nèi)核中實現(xiàn)相應(yīng)接口的驅(qū)動程序,除SMC總線驅(qū)動外,Atmel官方提供的linux3.6.9版本的內(nèi)核中已經(jīng)提供了其他接口的驅(qū)動程序[9],只需在設(shè)備樹文件中引出相應(yīng)的設(shè)備節(jié)點即可。Atmel官方同時提供了SPI、I2C、GPIO接口的測試程序,可以直接移植相應(yīng)的程序到Qt4中用于實現(xiàn)相應(yīng)的功能。這里需要特別強調(diào)的是UART接口,在Qt4中沒有特定的用于串口通信的類,本系統(tǒng)參考第三方的qextserialport類,自定義一個PortSettings類型的結(jié)構(gòu)體,用于存儲串口參數(shù)。由于Linux系統(tǒng)不支持串口中斷方式,所以這里需要新建一個定時器QTimer,定時1 s,并在程序中實現(xiàn)串口發(fā)送與接收的同步。接下來調(diào)用open()函數(shù)打開串口,并調(diào)用bytesAvailable()函數(shù)判斷串口數(shù)據(jù)是否為零,若串口緩沖中有數(shù)據(jù),則調(diào)用readAll()函數(shù)將緩沖區(qū)中所有數(shù)據(jù)讀取到QByteArray類型變量中[10]。

    要實現(xiàn)實時接收機監(jiān)控,需要解析串口接收到的報文數(shù)據(jù),并提取載噪比信息,繪制柱狀圖用于實時顯示信號質(zhì)量。本系統(tǒng)針對Qt4用戶圖形界面,提出了一種全新的報文解析方式,首先需要將QByteArray型變量轉(zhuǎn)換為QString型,并調(diào)用replace()函數(shù)將報文中的星號、回車符全部替換為逗號,并以逗號為分隔符,調(diào)用split()函數(shù)對報文進行分割,用查詢的方式查找$GPGSV字段,將衛(wèi)星編號以及載噪比保存到數(shù)組中。根據(jù)數(shù)組中的數(shù)據(jù),采用第三方的QCustomPlot類繪制載噪比柱狀圖,首先調(diào)用setLabel函數(shù)設(shè)置橫縱坐標(biāo)名稱,并使用QCustomPlot提供的QCPBars來表示柱狀圖,調(diào)用setData()函數(shù)對每個柱子進行賦值,然后調(diào)用addPlittable()函數(shù)將柱狀圖添加到Widget上,橫坐標(biāo)賦值需要調(diào)用setTickVector()及setTickVectorLabels()函數(shù),最后調(diào)用replot()重繪柱狀圖,保證柱狀圖實時更新。

4 實驗與驗證

    由于Qt4在界面設(shè)計中的優(yōu)越性,因此可以隨時按照自己的需求改變界面樣式[11]

    為了驗證ARM端程序是否發(fā)生過串口阻塞現(xiàn)象及是否滿足實時性要求,對每幀報文的處理時間進行分析。將程序移植到嵌入式開發(fā)平臺上,使用labsat循環(huán)回放一段衛(wèi)星的中頻信號,該中頻信號包含GPS與BD2的報文信息,經(jīng)過3.5 h的連續(xù)測試得到一組數(shù)據(jù),將該數(shù)據(jù)用MATLAB分析后,得到圖7所示結(jié)果。

qrs2-t7.gif

    從圖7中可以清楚地看到,報文解析及繪圖時間多在250 ms左右,偶爾突發(fā)時刻會達(dá)到550 ms的峰值,處理時間在1 s之內(nèi),完全滿足實時性要求。

5 結(jié)束語

    本文設(shè)計的便攜式GNSS導(dǎo)航信號采集回放系統(tǒng)實現(xiàn)了對衛(wèi)星中頻數(shù)據(jù)的保存與回放,其監(jiān)控端采用ARM處理平臺,編寫了針對K7型FPGA的SMC總線驅(qū)動,并設(shè)計了相應(yīng)的圖形化操作界面,節(jié)約成本的同時保持了設(shè)備良好的可操作性,同時采用SSD作為存儲介質(zhì),保障了設(shè)備長時間采集的要求。這里用MATLAB對中頻信號的頻譜和功率譜分析后得知,其回放的信號質(zhì)量滿足導(dǎo)航接收機測試的需求,同時其保存的中頻數(shù)據(jù)為信號捕獲與跟蹤算法的研究提供了可靠的原始數(shù)據(jù),為研制高性能、低價位的導(dǎo)航接收機奠定了基礎(chǔ)。

參考文獻

[1] 楊亮,郭佩,秦紅磊.射頻直接采樣多頻GNSS信號采集系統(tǒng)的實現(xiàn)[J].電訊技術(shù),2011,51(8):51-55.

[2] 戴維斯[美].射頻電路設(shè)計[M].北京:機械工業(yè)出版社,2015.

[3] 周波,張磊,張寶燕.基于K7的高速FC物理層的設(shè)計和實現(xiàn)[J].光通信技術(shù),2015,39(10):59-62.

[4] 張福洪,徐春暉,胡舜峰.基于Linux的ARM與FPGA數(shù)據(jù)通信設(shè)計與實現(xiàn)[J].杭州電子科技大學(xué)學(xué)報,2015,35(4):26-30.

[5] 李寧.ARM Cortex-A8處理器原理與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2012.

[6] 王夢楠.基于FPGA的中頻數(shù)字信號處理[D].大連:大連海事大學(xué),2015.

[7] 何賓.FPGA數(shù)字信號處理實現(xiàn)原理及方法[M].北京:清華大學(xué)出版社,2010.

[8] 曾繁泰,曾祥云.VHDL程序設(shè)計教程(第4版)[M].北京:清華大學(xué)出版社,2001.

[9] 宋寶華.Linux設(shè)備驅(qū)動開發(fā)詳解:基于最新的Linux4.0內(nèi)核[M].北京:機械工業(yè)出版社,2015.

[10] 吳斌,楊根興.基于OEM、PXA250平臺的GPS接收機設(shè)計[J].計算機工程,2005,31(24):212-213.

[11] 黃麗琴.Qt4圖形設(shè)計與嵌入式開發(fā)[M].北京:人民郵電出版社,2009.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。