吳舜曉,王 瓊,鄭 晨,姜苗苗
一種開放式衛(wèi)星導(dǎo)航基帶信號處理方法
吳舜曉1,2,王 瓊2,3,鄭 晨2,3,姜苗苗1
(1 中國人民解放軍93216部隊,北京 100089;2 中國電子科技集團公司第二十研究所,西安 710068; 3 陜西省組合與智能導(dǎo)航重點實驗室,西安 710068)
傳統(tǒng)全球?qū)Ш叫l(wèi)星系統(tǒng)(GNSS)接收機基帶處理模塊非開放式的實現(xiàn)架構(gòu)與多源融合導(dǎo)航算法的工程實現(xiàn)需求不夠匹配,針對機載、彈載的多源融合導(dǎo)航需求設(shè)計提出一種開放式的衛(wèi)星導(dǎo)航基帶信號處理方法。通過將衛(wèi)星導(dǎo)航基帶處理模塊的軟件實現(xiàn)嵌入到Linux操作系統(tǒng)中,獨立運行信號處理進程和底層驅(qū)動調(diào)度控制,以實現(xiàn)基礎(chǔ)的衛(wèi)星信號捕獲、跟蹤、時間同步控制等軟件功能。硬件實驗表明,搭載所述方法的開放式衛(wèi)星導(dǎo)航基帶信號處理系統(tǒng),可以通過開放式的衛(wèi)星導(dǎo)航基帶信號處理的軟件實現(xiàn),降低多源融合導(dǎo)航實現(xiàn)復(fù)雜度。
全球?qū)Ш叫l(wèi)星系統(tǒng)接收機;衛(wèi)星導(dǎo)航基帶信號處理;多源融合導(dǎo)航;開放式架構(gòu)
衛(wèi)星導(dǎo)航(Global Navigation Satellite System,GNSS)接收機通過對導(dǎo)航衛(wèi)星播發(fā)的射頻信號依次進行信號處理和信息處理,以獲得用戶的位置、速度和時間信息,是支撐衛(wèi)星導(dǎo)航實際應(yīng)用的基礎(chǔ)性產(chǎn)品[1-2]。
基帶處理模塊作為GNSS接收機的主要部件,通常采用專用芯片或現(xiàn)場可編程邏輯門陣列(Field Programmable Gate Array,F(xiàn)PGA)+處理器的形式實現(xiàn)[3-4]。目前主流GNSS基帶處理模塊通常都是非開放式的,導(dǎo)致用戶只能直接使用基帶處理模塊對外輸出的導(dǎo)航信息,不能以二次開發(fā)的開發(fā)式方式將多導(dǎo)航源融合、通信導(dǎo)航融合增強等功能嵌入到基帶處理模塊中[5]。
然而,當(dāng)GNSS接收機不再是載體平臺的主用導(dǎo)航設(shè)備(如應(yīng)用于高價值的飛機、精確制導(dǎo)彈藥等載體平臺)時,通常通過增加基帶處理模塊與主導(dǎo)航設(shè)備之間的數(shù)據(jù)交互,來實現(xiàn)多源融合導(dǎo)航之間的信息處理。但是這種方式會導(dǎo)致載體主導(dǎo)航設(shè)備與基帶芯片之間數(shù)據(jù)交互頻繁、部分導(dǎo)航信息重復(fù)處理,即增加了軟件實現(xiàn)的復(fù)雜程度,還存在計算資源的浪費;同時由于衛(wèi)星導(dǎo)航原始觀測數(shù)據(jù)的軟件接口需要標準化統(tǒng)一定義,使其在與其他導(dǎo)航算法進行多源融合處理時通用性和開放性不好,不便于算法的移植和推廣。
本文針對上述問題提出了一種開放式衛(wèi)星導(dǎo)航基帶信號處理方法,通過將衛(wèi)星導(dǎo)航基帶處理模塊的軟件實現(xiàn)嵌入到Linux操作系統(tǒng)中的軟硬件架構(gòu)優(yōu)化設(shè)計,解決了由于衛(wèi)星導(dǎo)航基帶信號處理模塊的軟件實現(xiàn)不夠開放,而導(dǎo)致衛(wèi)星慣性多源融合導(dǎo)航實現(xiàn)復(fù)雜度明顯增加的問題。最后搭建了開放式衛(wèi)星導(dǎo)航基帶處理硬件系統(tǒng),實驗驗證本文所述方法可以較大地節(jié)省處理器資源,用于后續(xù)多源融合導(dǎo)航功能的擴展。
GNSS接收機的原理是接收并處理來自導(dǎo)航衛(wèi)星的信號,將衛(wèi)星信號所攜帶的導(dǎo)航電文解調(diào)出來后,由導(dǎo)航解算軟件按照導(dǎo)航電文提供的參數(shù)對接收機當(dāng)前所處的位置進行解算,并輸出地理位置、移動速度等信息[6]。GNSS接收機主要由天線、射頻、基帶信號處理模塊及外接終端設(shè)備等構(gòu)成[7],如圖1所示。
圖1 接收機結(jié)構(gòu)示意圖
基帶信號處理模塊是GNSS接收機用來實現(xiàn)衛(wèi)星信號的同步和導(dǎo)航電文的解調(diào)功能的主要部件[8],目前通常采用專用芯片或FPGA+處理器的非開放式架構(gòu),主要涉及以下功能均在主處理器上實現(xiàn)[9]:
1) 維持對衛(wèi)星導(dǎo)航信號捕獲跟蹤處理;
2) 求解用戶位置、速度和鐘差等衛(wèi)導(dǎo)信息;
3)根據(jù)具體需求按照規(guī)定的數(shù)據(jù)幀格式輸出位置、速度和原始觀測量等導(dǎo)航數(shù)據(jù)。
因此,主處理器上的軟件實現(xiàn)會涉及高頻度的硬件中斷響應(yīng)操作和大量硬件計算資源調(diào)度操作,涉及到大量的總線輸入輸出(Input/Output,I/O)操作,而這些設(shè)計通常都是非開放式的,用戶只能直接使用基帶處理模塊對外輸出的導(dǎo)航信息,不能對多源導(dǎo)航等功能進行二次開發(fā)處理。
本文所述開放式衛(wèi)星導(dǎo)航基帶信號處理,采用主處理器與多個協(xié)處理器進行數(shù)據(jù)和控制交互的架構(gòu),通過協(xié)處理器調(diào)度和控制外圍的衛(wèi)星導(dǎo)航基帶信號處理專用計算加速模塊。在主處理器上運行嵌入式Linux操作系統(tǒng),以降低主處理器響應(yīng)硬件中斷的頻度和外部總線數(shù)據(jù)訪問的吞吐量;協(xié)處理器連接在主處理器的高速總線上,通過與主處理器的數(shù)據(jù)交互完成導(dǎo)航衛(wèi)星的信號捕獲或跟蹤的調(diào)度與控制任務(wù)。基帶信號處理原理框圖如圖2所示。
圖2 衛(wèi)星導(dǎo)航基帶信號處理原理框圖
利用Linux系統(tǒng)的開放性,用戶可以通過信息處理模塊接口獲取所需衛(wèi)星觀測數(shù)據(jù)和電文,進行衛(wèi)星慣性深組合和緊組合等多源融合導(dǎo)航處理,獲得定位、測速和授時(Position,Velocity,Time,PVT)信號和載體姿態(tài)等導(dǎo)航信息[10]。開放式衛(wèi)星導(dǎo)航基帶信號處理方法如圖3所示。
圖3 開放式衛(wèi)星導(dǎo)航基帶信號處理方法
具體步驟如下:
1)在基帶處理模塊上電開機后,Linux操作系統(tǒng)自動依據(jù)系統(tǒng)設(shè)計時定義的設(shè)備樹找到外接的捕獲調(diào)度與觀測量提取協(xié)處理器和跟蹤協(xié)處理器,并相應(yīng)地加載GNSS驅(qū)動模塊,將該模塊作為所運行的嵌入式Linux操作系統(tǒng)的一個擴展模塊。完成GNSS驅(qū)動模塊的加載后,在Linux系統(tǒng)的設(shè)備文件路徑/dev下生成第一設(shè)備文件GnssNavProc和第二設(shè)備文件GnssPvtInfo;
2)將信號處理模塊在Linux系統(tǒng)下編譯為可執(zhí)行文件SigProcBase.elf,并配置操作系統(tǒng)在開機啟動后,自動運行可執(zhí)行文件SigProcBase.elf,啟動信號處理進程;
3)將信息處理模塊在Linux系統(tǒng)下編譯為可執(zhí)行文件GnssAppDemo.elf,并配置操作系統(tǒng)在開機啟動并運行了SigProcBase.elf后,自動運行可執(zhí)行文件GnssAppDemo.elf,啟動信息處理進程。
信號處理模塊的進程執(zhí)行過程如圖4所示。
具體步驟如下:
1)調(diào)用open系統(tǒng)函數(shù),打開第一設(shè)備文件GnssNavProc,由GNSS驅(qū)動模塊執(zhí)行相關(guān)的驅(qū)動層初始化處理;
2)調(diào)用mmap系統(tǒng)函數(shù),從第一設(shè)備文件中映射產(chǎn)生三塊用戶空間的內(nèi)存區(qū)域,包括:
(1)p_mDataTrkCp:與跟蹤協(xié)處理器直接實現(xiàn)數(shù)據(jù)和控制命令的傳送;
(2)p_mTrkCmm:獲取與GNSS驅(qū)動模塊之間共享的支持應(yīng)用程序完成信號處理的參數(shù)信息;
(3)p_mObsNav:用于存儲包括電文、偽距和載波相位在內(nèi)的原始觀測數(shù)據(jù)。
3)完成本進程的包括數(shù)據(jù)結(jié)構(gòu)創(chuàng)建和全局變量初始化在內(nèi)的其他軟件初始化處理;
4)啟動4個采用SCHED_FIFO實時調(diào)度策略的線程,包括:
(1)TicMark_proc:配合GNSS驅(qū)動模塊完成跟蹤通道的啟動、復(fù)位等調(diào)度任務(wù);
(2)NavTrk_proc:在GNSS驅(qū)動模塊的配合下,根據(jù)從緩存區(qū)取出的各通道的ChReq寄存器的數(shù)值和TrackData中的命令關(guān)聯(lián)數(shù)據(jù),執(zhí)行信號跟蹤的虛警驗證、毫秒計數(shù)同步、幀內(nèi)Bit計數(shù)同步、電文譯碼或校驗等處理任務(wù);
(3)GetObs_proc:保持與捕獲調(diào)度與觀測量提取協(xié)處理器完成觀測量提取和初步計算的時刻同步,對原始觀測量再進行相關(guān)的量綱轉(zhuǎn)換后,填充到GNSS驅(qū)動模塊的p_mObsNav內(nèi)存空間中;
(4)AdjCnt_proc:等待信息處理模塊進程將設(shè)置捕獲模式、調(diào)整本地時間相關(guān)的參數(shù)寫入GNSS驅(qū)動模塊的p_mObsNav內(nèi)存空間中,然后執(zhí)行設(shè)置捕獲工作模式,調(diào)整本地時間等操作。
圖4 信號處理進程執(zhí)行過程
信息處理模塊的進程執(zhí)行過程如圖5所示。
具體步驟如下:
1)調(diào)用open系統(tǒng)函數(shù),打開第二設(shè)備文件GnssPvtInfo;
2)調(diào)用mmap系統(tǒng)函數(shù),從第二設(shè)備文件中將GNSS驅(qū)動模塊的p_mObsNav內(nèi)存空間映射到信息處理模塊進程中;
3)通過第二設(shè)備文件中名為TicCmdWait ObsNav的ioctl函數(shù),等待信號處理進程完成一次原始觀測量提取任務(wù),然后調(diào)用名為TicMoveNav Mess的ioctl函數(shù)將GNSS驅(qū)動模塊中已緩存的導(dǎo)航電文數(shù)據(jù)填充到p_mObsNav結(jié)構(gòu)體的NavMsgBuf分量中,在此基礎(chǔ)上進行PVT解算;
4)在完成一次PVT解算以后,將周計數(shù)、周內(nèi)秒和鐘差等時間信息寫入到GNSS驅(qū)動模塊的p_mObsNav內(nèi)存空間中,并通過調(diào)用第二設(shè)備文件中名為TicCmdTimeSync的ioctl函數(shù)通知信號處理進程中的AdjCnt_proc線程,由其通過GNSS驅(qū)動模塊執(zhí)行相關(guān)的底層操作。
5)重復(fù)步驟3),以持續(xù)進行衛(wèi)星導(dǎo)航信息 處理。
可以看出,在對應(yīng)于信息處理模塊的可執(zhí)行程序中,軟件只需專注于完成衛(wèi)星導(dǎo)航信息處理相關(guān)的功能,其他底層的處理均由同步在運行的信號處理進程完成,信息處理相關(guān)的輸入輸出數(shù)據(jù)均在GNSS驅(qū)動模塊的第三塊內(nèi)存空間p_mObsNav中,由此使得衛(wèi)星導(dǎo)航的信息處理可以在一個開發(fā)性很好的軟件開發(fā)環(huán)境中實現(xiàn),用戶的二次開發(fā)可非常方便地實現(xiàn)。
圖5 信息處理進程執(zhí)行過程
為了驗證本文所提算法的有效性,搭建了基于開放式衛(wèi)星導(dǎo)航基帶處理架構(gòu)的實驗硬件系統(tǒng)。該硬件系統(tǒng)由北京威視銳公司的FPGA開發(fā)板和一塊FPGA中間層板卡(FPGA Mezzanine Card,F(xiàn)MC)子卡構(gòu)成。開放式衛(wèi)星導(dǎo)航基帶處理硬件系統(tǒng)如圖6所示。
圖6 開放式衛(wèi)星導(dǎo)航基帶處理硬件系統(tǒng)
圖6中,右側(cè)紅色小盒子為威視銳的通用FPGA開發(fā)板,筆記本電腦為上位機軟件。
FPGA開發(fā)板具有一個串口線、一個網(wǎng)口線和兩路射頻信號輸入。其中串口線用于Linux操作系統(tǒng)的標準輸入與輸出;網(wǎng)口線用于向上位機傳輸數(shù)據(jù)。其外部接線圖如圖7所示。
圖7 FPGA開發(fā)板外部接線圖
FPGA開放板上安裝基于RX3706芯片的射頻前端子卡FMC3706,用于實現(xiàn)衛(wèi)星導(dǎo)航射頻信號的接收處理,將處理得到的數(shù)字信號及對應(yīng)的采樣時鐘信號通過FMC接口傳送到底板上,利用底板上的Zynq7035芯片實現(xiàn)GNSS接收機的基帶信號處理。FMC射頻子卡如圖8所示。
圖8 FMC射頻子卡
本實驗搭載上述實驗硬件系統(tǒng),采用雙天線的定位與定向應(yīng)用,進行72個跟蹤通道的GNSS基帶處理實驗驗證。每個天線對應(yīng)36個通道,其中14個通道用于接收北斗衛(wèi)星導(dǎo)航系統(tǒng)(Beidou Navigation Satellite System,BDS)的B3頻點信號,14個通道用于接收BDS的B1頻點信號,8個通道用于接收GPS的L1-C/A信號。
與傳統(tǒng)的GNSS基帶模塊中主處理器相比,通過引入捕獲調(diào)度與觀測量提取協(xié)處理器,主處理器在tic_req中斷中的處理任務(wù)由原來較為復(fù)雜的外設(shè)狀態(tài)監(jiān)測和控制調(diào)度任務(wù)降級為數(shù)據(jù)搬移等簡單的控制任務(wù),雖然沒有降低中斷的頻度,但明顯降低了需在中斷中完成的軟件處理任務(wù);通過引入跟蹤協(xié)處理器,在正常跟蹤狀態(tài)下,每通道每16 ms才產(chǎn)生一次tcp_irqtcp_irq中斷,而在傳統(tǒng)的實現(xiàn)方案中每個跟蹤通道至少需要每2 ms產(chǎn)生一次中斷,本文方法將對應(yīng)于跟蹤處理任務(wù)的中斷頻度減低到至少八分之一。
在Linux操作系統(tǒng)中,使用top命令查看的軟件進程資源使用情況,CPU資源占比情況如表1所示。其中1223號進程為信號處理,1224號進程為信息處理進程。
表1 軟件進程資源使用情況
從表1可以看出,在系統(tǒng)正常運行的情況下,信號處理模塊所對應(yīng)的進程占了3.8%的中央處理器(Central Processing Unit,CPU)資源,信息處理模塊所對應(yīng)的進程只占了0.1%的CPU資源,由此可以節(jié)省大量處理器資源用于后續(xù)多源融合導(dǎo)航功能的擴展。
本文針對機載、彈載的多源融合導(dǎo)航需求提出一種開放式衛(wèi)星導(dǎo)航基帶信號處理方法。將衛(wèi)星導(dǎo)航基帶處理模塊的軟件實現(xiàn)嵌入到Linux操作系統(tǒng)中,通過開發(fā)GNSS驅(qū)動模塊,使其可以獨立運行信號處理進程和底層驅(qū)動調(diào)度控制,從而實現(xiàn)基礎(chǔ)的衛(wèi)星信號捕獲、跟蹤和時間同步控制等軟件功能。硬件實驗表明,搭載本文方法的開放式衛(wèi)星導(dǎo)航基帶處理實驗硬件系統(tǒng)可以節(jié)省大量的處理器資源,在涉及衛(wèi)星導(dǎo)航基帶功能的二次開發(fā)時不再需要依賴涉及信號處理底層的軟件源代碼或軟件開發(fā)支持包,且可廣泛應(yīng)用于在彈載、機載等平臺,達到衛(wèi)星導(dǎo)航與慣性導(dǎo)航深組合、緊組合等多源融合導(dǎo)航多種組合方式的快速、高效率實現(xiàn)。
[1] 卡普蘭. GPS原理與應(yīng)用[M]. 北京:電子工業(yè)出版社,2002.
[2] 陳強. GNSS接收機基帶信號處理模塊的設(shè)計和實現(xiàn)[D]. 北京:清華大學(xué),2011.
[3] 張正烜,張其善,寇艷紅. GPS接收機基帶信號處理模塊的FPGA實現(xiàn)[J]. 遙測遙控,2006(4):6.
[4] 陳造,鄭慶敏. FPGA方法用于GPS/北斗雙模接收機基帶處理模塊設(shè)計[J]. 測繪技術(shù)裝備,2019(4):25-29.
[5] 賀洋. BD2接收機基帶系統(tǒng)的FPGA設(shè)計與實現(xiàn)[D]. 武漢:武漢理工大學(xué),2013.
[6] 何秋生. GNSS接收機基帶信號處理算法[M]. 北京:電子工業(yè)出版社,2012.
[7] 歐松. 基于FPGA的北斗接收機基帶處理設(shè)計與仿真[D]. 北京:北京交通大學(xué),2014.
[8] 阮帥. 北斗接收機基帶處理技術(shù)研究[D]. 哈爾濱:哈爾濱工程大學(xué),2017.
[9] 管仁昊,李署堅,徐峰. FPGA在基帶信號處理中的應(yīng)用[J]. 電子測量技術(shù),2006,29(4):2.
[10] 何靜. 多源融合導(dǎo)航系統(tǒng)仿真平臺設(shè)計與實現(xiàn)[D]. 成都:電子科技大學(xué),2021.
Open Satellite Navigation Baseband Signal Processing Method
WU Shunxiao, WANG Qiong, ZHENG Chen, JIANG Miaomiao
The non-open implementation architecture of traditional Global Navigation Satellite System receiver baseband processing module does not match well with the engineering implementation requirements of multi-source fusion navigation algorithms. An open satellite navigation baseband signal processing method for the multi-source fusion navigation requirements is proposed. By embedding the software implementation of the satellite navigation baseband processing module into the Linux operating system, the independent signal processing process and underlying driver scheduling control are completed through the embedded system to realize basic software functions such as satellite signal capture, tracking, and time synchronization control. Hardware experiments show that the open satellite navigation baseband signal processing system equipped with the method described in this paper can be implemented through open satellite navigation baseband signal processing software, reducing the complexity of multi-source fusion navigation implementation.
Global Navigation Satellite System Receiver; Satellite Navigation Baseband Signal Processing; Multi-source Fusion Navigation; Open Architecture
TN965
A
1674-7976-(2023)-05-313-05
2023-06-16,
吳舜曉(1986.12—),湖南益陽人,博士,工程師,主要研究方向為衛(wèi)星導(dǎo)航和陣列信號處理。