《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于ARM與FPGA的便攜式GNSS信號采集回放系統(tǒng)設計
基于ARM與FPGA的便攜式GNSS信號采集回放系統(tǒng)設計
2016年電子技術應用第10期
張婉明1,李 琦1,李金海2,汪 峰2,高 宇1,董 盟1
1.河北工業(yè)大學 電子信息工程學院,天津300401;2.中國科學院微電子研究所,北京100029
摘要: 設計了一種基于ARM與FPGA的便攜式GNSS導航信號采集回放系統(tǒng)。該系統(tǒng)可采集復雜情況下的導航衛(wèi)星信號,并且增益可控,為導航接收機測試提供了特定的信號源。系統(tǒng)將導航衛(wèi)星信號經射頻電路轉換為數(shù)字中頻信號,通過FPGA處理后保存至SATA硬盤。ARM處理器作為監(jiān)控端發(fā)送指令至FPGA,控制FPGA進行數(shù)據(jù)采集與回放,同時接收監(jiān)控接收機串口發(fā)送的報文,提取載噪比信息,并繪制載噪比柱狀圖。該系統(tǒng)ARM端基于嵌入式Linux系統(tǒng)開發(fā),采用Qt4設計用戶圖形界面,可擴展及可移植性強,為系統(tǒng)的后續(xù)開發(fā)提供了保障。實驗結果表明,該系統(tǒng)信號質量滿足要求,ARM監(jiān)控端數(shù)據(jù)處理時間在200 ms~500 ms之間,實時性良好。
中圖分類號: TN965.5
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.10.014
中文引用格式: 張婉明,李琦,李金海,等. 基于ARM與FPGA的便攜式GNSS信號采集回放系統(tǒng)設計[J].電子技術應用,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)星導航定位系統(tǒng)的應用越來越廣泛,包括中國、美國、歐盟、俄羅斯等世界主要強國都在積極布置自己的全球衛(wèi)星導航定位系統(tǒng)[1]。雖然中國在衛(wèi)星導航方面起步較晚,但是技術發(fā)展迅猛,隨著中國的北斗2號衛(wèi)星導航系統(tǒng)的逐步完善,使得中國成為繼美俄之后第三個擁有完整的導航系統(tǒng)的國家。國內市場對導航接收機的需求也越來越多,設計高性能、多模式、低價位的導航接收機已成為研究熱點。作為導航接收機研發(fā)過程中必不可少的設備,采集回放系統(tǒng)具有廣闊的應用前景。所以,迫切需要設計一種價格低廉、便攜性好、界面直觀、可操作性強的GNSS導航信號采集回放系統(tǒng)。

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

1 系統(tǒng)結構

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

qrs2-t1.gif

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

2.1 射頻模塊

    射頻模塊可分為上變頻與下變頻兩大部分,下變頻部分的核心器件采用MAX2769B芯片,該芯片是一款多模導航接收機芯片,適用于GPS/北斗/格洛納斯/伽利略衛(wèi)星導航定位系統(tǒng)。上變頻部分的增益控制器件采用了HMC472LP4數(shù)控衰減芯片,該衰減芯片步進0.5 dB,最高衰減31.5 dB,分別由V1~V6 6個引腳控制,低電平有效。上下變頻部分均采用C8051F230單片機進行配置,下變頻部分采用GPIO口模擬SPI接口對MAX2769B芯片寫配置字,配置相關參數(shù);上變頻模塊通過控制12個GPIO口電平的高低配置增益。同時,射頻模塊的上下變頻部分均采用杭州中科微電子的ATGM332D導航接收機作為監(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ù)據(jù)對大容量空間的需求。由于系統(tǒng)復雜性高,本文對于基帶底板子模塊只介紹電源與時鐘電路的設計方案。

2.2.1 FPGA模塊

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

qrs2-t3.gif

2.2.2 ARM模塊

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

qrs2-t4.gif

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

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

qrs2-t5.gif

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

qrs2-t6.gif

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

3.1 FPGA程序設計

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

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

3.2 ARM程序設計

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

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

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

4 實驗與驗證

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

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

qrs2-t7.gif

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

5 結束語

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

參考文獻

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

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

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

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

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

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

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

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

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

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

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

此內容為AET網站原創(chuàng),未經授權禁止轉載。