摘 要: 設(shè)計了一種基于ARM與FPGA的便攜式GNSS導(dǎo)航信號采集回放系統(tǒng)。該系統(tǒng)可采集復(fù)雜情況下的導(dǎo)航衛(wèi)星信號,并且增益可控,為導(dǎo)航接收機(jī)測試提供了特定的信號源。系統(tǒng)將導(dǎo)航衛(wèi)星信號經(jīng)射頻電路轉(zhuǎn)換為數(shù)字中頻信號,通過FPGA處理后保存至SATA硬盤。ARM處理器作為監(jiān)控端發(fā)送指令至FPGA,控制FPGA進(jìn)行數(shù)據(jù)采集與回放,同時接收監(jiān)控接收機(jī)串口發(fā)送的報文,提取載噪比信息,并繪制載噪比柱狀圖。該系統(tǒng)ARM端基于嵌入式Linux系統(tǒng)開發(fā),采用Qt4設(shè)計用戶圖形界面,可擴(kuò)展及可移植性強(qiáng),為系統(tǒng)的后續(xù)開發(fā)提供了保障。實驗結(jié)果表明,該系統(tǒng)信號質(zhì)量滿足要求,ARM監(jiān)控端數(shù)據(jù)處理時間在200 ms~500 ms之間,實時性良好。
0 引言
目前,GNSS衛(wèi)星導(dǎo)航定位系統(tǒng)的應(yīng)用越來越廣泛,包括中國、美國、歐盟、俄羅斯等世界主要強(qiá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)航接收機(jī)的需求也越來越多,設(shè)計高性能、多模式、低價位的導(dǎo)航接收機(jī)已成為研究熱點。作為導(dǎo)航接收機(jī)研發(fā)過程中必不可少的設(shè)備,采集回放系統(tǒng)具有廣闊的應(yīng)用前景。所以,迫切需要設(shè)計一種價格低廉、便攜性好、界面直觀、可操作性強(qiáng)的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)航接收機(jī)的開發(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所示。
2 系統(tǒng)硬件設(shè)計
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個引腳控制,低電平有效。上下變頻部分均采用C8051F230單片機(jī)進(jìn)行配置,下變頻部分采用GPIO口模擬SPI接口對MAX2769B芯片寫配置字,配置相關(guān)參數(shù);上變頻模塊通過控制12個GPIO口電平的高低配置增益。同時,射頻模塊的上下變頻部分均采用杭州中科微電子的ATGM332D導(dǎo)航接收機(jī)作為監(jiān)控接收機(jī),上下變頻模塊分別將監(jiān)控接收機(jī)接收的報文信息通過串口送入FPGA模塊,由FPGA選擇輸出至ARM端。圖2為射頻模塊原理圖[2]。
?
2.2 基帶模塊
基帶模塊可以分為FPGA模塊、ARM模塊及基帶底板3個部分?;鶐У装迨歉髂K連接的橋梁,并完成除ARM、FPGA之外的所有功能,各模塊均以接插件形式與底板連接。這里創(chuàng)新性地采用了SSD硬盤進(jìn)行數(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總線進(jìn)行通信的,需要在Linux內(nèi)核中編寫K7處理器的SMC總線驅(qū)動[4]。
?
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)系圖。
?
2.2.3 基帶底板(電源與時鐘)
本設(shè)計采用5 V~42 V寬壓電源輸入,根據(jù)各個器件工作時所需電流的大小,采用12 V/5 A適配器作為輸入電源,整體電源分配如圖5所示。
?
整個系統(tǒng)的時鐘源有2個,均為16.368 MHz的有源晶振,分別位于基帶底板(主時鐘)、射頻板(備用時鐘)。正常情況下使用主時鐘,在特殊應(yīng)用下使用備用時鐘。除16.368 MHz時鐘外,ARM具有自身的無源晶振作為自己的時鐘源。模塊通信時均采用異步通信方式,以避免鐘差產(chǎn)生的錯誤。圖6所示為系統(tǒng)的時鐘設(shè)計方案。
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)控接收機(jī)的UART信息,確定采集和播發(fā)的信號是否正常。
本設(shè)計采用VHDL語言[8]對需要實現(xiàn)的電路進(jì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)的功能。這里需要特別強(qiá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)實時接收機(jī)監(jiān)控,需要解析串口接收到的報文數(shù)據(jù),并提取載噪比信息,繪制柱狀圖用于實時顯示信號質(zhì)量。本系統(tǒng)針對Qt4用戶圖形界面,提出了一種全新的報文解析方式,首先需要將QByteArray型變量轉(zhuǎn)換為QString型,并調(diào)用replace()函數(shù)將報文中的星號、回車符全部替換為逗號,并以逗號為分隔符,調(diào)用split()函數(shù)對報文進(jìn)行分割,用查詢的方式查找$GPGSV字段,將衛(wèi)星編號以及載噪比保存到數(shù)組中。根據(jù)數(shù)組中的數(shù)據(jù),采用第三方的QCustomPlot類繪制載噪比柱狀圖,首先調(diào)用setLabel函數(shù)設(shè)置橫縱坐標(biāo)名稱,并使用QCustomPlot提供的QCPBars來表示柱狀圖,調(diào)用setData()函數(shù)對每個柱子進(jìn)行賦值,然后調(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)象及是否滿足實時性要求,對每幀報文的處理時間進(jìn)行分析。將程序移植到嵌入式開發(fā)平臺上,使用labsat循環(huán)回放一段衛(wèi)星的中頻信號,該中頻信號包含GPS與BD2的報文信息,經(jīng)過3.5 h的連續(xù)測試得到一組數(shù)據(jù),將該數(shù)據(jù)用MATLAB分析后,得到圖7所示結(jié)果。
從圖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)航接收機(jī)測試的需求,同時其保存的中頻數(shù)據(jù)為信號捕獲與跟蹤算法的研究提供了可靠的原始數(shù)據(jù),為研制高性能、低價位的導(dǎo)航接收機(jī)奠定了基礎(chǔ)。
?
評論
查看更多