王樂寧,喻 敏*,王孟園,許 輝
(1.武漢理工大學(xué) 交通學(xué)院,湖北 武漢 430063;2.電子科技大學(xué) 通信抗干擾技術(shù)國家級重點(diǎn)實(shí)驗(yàn)室,四川 成都 611731)
衛(wèi)星信號的成功跟蹤和鎖定,需接收機(jī)提前粗略地估計(jì)出該衛(wèi)星信號的載波頻率和C/A碼相位,并且要求其估計(jì)誤差值滿足跟蹤載波環(huán)和碼環(huán)的牽入范圍,該任務(wù)由衛(wèi)星信號的捕獲過程完成[1]。對于GNSS用戶直接關(guān)心的是接收機(jī)啟動后的定位時間,研究高效和可靠的捕獲算法,縮短冷啟動的重捕時間,從而減少首次定位所需時間,可迎合快速定位的需求。目前,GNSS軟件接收機(jī)通用的捕獲算法大都基于Van Nee等人提出的FFT圓周相關(guān)捕獲算法[2],相比傳統(tǒng)的時域線性捕獲算法和并行頻率捕獲算法,具有搜索次數(shù)少、速度快的特點(diǎn)。
在捕獲過程中,搜索框架和運(yùn)算量是限制捕獲時間的兩大因素。為了優(yōu)化捕獲算法,國內(nèi)外學(xué)者也從上述兩個方面提出改進(jìn)方案,如罩新賢[3]等人提出了優(yōu)化搜索路徑的方法;Wu.Z.F[4]等人提出利用差分處理技術(shù)提高捕獲信號的載噪比;Rntnarn.D.V[5]等人通過蝶形FFT算法提高捕獲速度。本文將對傳統(tǒng)并行碼相位搜索框架進(jìn)行改進(jìn),引入二次平均分組采樣處理模塊以達(dá)到下采樣的目的,從而減少傅里葉變換點(diǎn)數(shù)和降低運(yùn)算量。利用GNSS軟件接收機(jī)采集的實(shí)際信號進(jìn)行算法驗(yàn)證,使用Matlab編程和Simulink器件仿真相結(jié)合的方式,獲得粗碼相位的捕獲結(jié)果和所需時間,以驗(yàn)證改進(jìn)算法的有效性。
GNSS信號捕獲大都以GPS為藍(lán)圖,是偽碼(PRN)、碼相位和頻率的三維搜索過程[1,3]。在沒有歷書和星歷的支持下,偽碼搜索是按照衛(wèi)星次序進(jìn)行順序搜索。其他二維搜索根據(jù)搜索框架的不同,可以分為線性捕獲、并行頻率捕獲和并行碼相位捕獲。傳統(tǒng)并行碼相位捕獲是將碼帶進(jìn)行一次傅里葉變換后,然后進(jìn)行頻帶搜索,此方法是傳統(tǒng)搜索模型中搜索次數(shù)最少的。
一般情況,信號捕獲過程按照衛(wèi)星次序依次搜索1~32號衛(wèi)星即偽碼(PRN)捕獲,然后進(jìn)行碼相位和頻率的二維搜索。假設(shè)按照搜索步長500 Hz將多普勒頻移搜索范圍(±20 kHz)劃分為41個頻帶進(jìn)行搜索,碼相位搜索按照0.5個碼片的搜索范圍進(jìn)行對1 023個碼片進(jìn)行搜索(即2 046次搜索),所以并行碼相位捕獲算法的搜索次數(shù)為41×1次。相比線性捕獲的41×2 046次搜索和并行頻率捕獲的1×2 046次搜索,并行碼相位捕獲算法最為受人青睞。
并行碼相位捕獲過程中,數(shù)字中頻信號與本地正余弦載波進(jìn)行混頻生成復(fù)數(shù)結(jié)果I+jQ,然后將此復(fù)數(shù)結(jié)果進(jìn)行傅里葉變換。進(jìn)而將變換結(jié)果與本地C/A碼傅里葉變換的共軛值做乘積運(yùn)算,得到頻域相關(guān)結(jié)果,最后傅里葉反變換得到時域相關(guān)結(jié)果,檢測相關(guān)結(jié)果的峰值是否超過門限,便可以得到衛(wèi)星信號的捕獲,如圖1[1,5]所示。

圖1 并行碼相位捕獲算法框圖
周期偽隨機(jī)碼的相關(guān)值大小可以反映捕獲結(jié)果。從數(shù)學(xué)推導(dǎo)上看,長度為N的2個周期性序列x(n)和y(n)的相關(guān)值z(n)[1,5]為:
(1)
對式(1)進(jìn)行N點(diǎn)的離散傅里葉變換,得到N點(diǎn)的變換值Z(k):
(2)

盡管并行碼相位捕獲算法極大地減少了搜索次數(shù),但每完成一次頻帶搜索,要進(jìn)行2次傅里葉變換和1次傅里葉逆變換,運(yùn)算量較大,影響捕獲時間。改進(jìn)型平均相關(guān)捕獲算法是基于平均相關(guān)采樣的原理,減少傅里葉變化點(diǎn)數(shù),降低單頻帶捕獲的運(yùn)算量,進(jìn)而減少捕獲時間的方法。
在采樣信號分別與本地的同相、正交載波信號進(jìn)行混頻后,將N點(diǎn)的混頻信號進(jìn)行“二次平均分組采樣”[6-7]即選取中頻信號采樣點(diǎn)的最初1~M點(diǎn)作為分組的起點(diǎn),將采樣點(diǎn)每連續(xù)N/2k點(diǎn)進(jìn)行數(shù)據(jù)平均后即可得到2k個平均點(diǎn),這樣將采樣信號轉(zhuǎn)換為了M組2k點(diǎn)的平均采樣,圖2為前3點(diǎn)平均分組采樣示意圖。

圖2 前3點(diǎn)平均分組采樣示意圖
然后將二次平均采樣的數(shù)據(jù)點(diǎn)和本地C/A碼同樣處理后的數(shù)據(jù)點(diǎn)進(jìn)行快速傅里葉變換,結(jié)果共軛相乘后反變換,從M組中取最大值相關(guān)值判別后輸出結(jié)果,改進(jìn)型平均相關(guān)捕獲框圖如圖3所示。

圖3 改進(jìn)型平均相關(guān)捕獲框圖
因?yàn)橐WC平均的每個采樣點(diǎn)都在同一個數(shù)據(jù)碼片上,故采用不同起點(diǎn)的分組平均采樣取最大相關(guān)值的方法。混頻后的傅里葉變換將信號變換到頻域,其有用信息只包含在前半段頻率分量之中,因?yàn)楹蟀攵问乔鞍攵蔚膹?fù)數(shù)共軛,所以可以進(jìn)行頻譜截半[8-9]。最后進(jìn)行 IFFT運(yùn)算進(jìn)行捕獲結(jié)果判斷,便可以得到相應(yīng)的碼相位起始偏移值和載波頻率估計(jì)值。改進(jìn)型平均圓周相關(guān)捕獲算法相較于傳統(tǒng)的并行碼相位捕獲方法,將2次的N點(diǎn)傅里葉變換運(yùn)算改為了2M次2k的FFT,一般情況2k遠(yuǎn)遠(yuǎn)小于N,故減少了運(yùn)算量,提高了運(yùn)算速度。
Matlab具有強(qiáng)大的數(shù)值分析、數(shù)字信號處理和數(shù)字圖像處理功能,其中,Simulink可以對動態(tài)系統(tǒng)進(jìn)行建模、仿真和分析。Simulink提供了豐富的器件庫,支持連續(xù)、離散以及二者混合的線性和非線性系統(tǒng)仿真,可以根據(jù)仿真的最佳效果來調(diào)試及修訂控制系統(tǒng)的參數(shù)[12-13]。用戶可以從模塊庫中選擇所需要的基本功能模塊,建立結(jié)構(gòu)圖模型,設(shè)置仿真參數(shù),進(jìn)行動態(tài)仿真并觀看輸出結(jié)果,針對輸出結(jié)果進(jìn)行分析和比較。根據(jù)傳統(tǒng)并行碼相位捕獲和改進(jìn)型平均相關(guān)捕獲框圖,搭建器件完成動態(tài)仿真,對捕獲結(jié)果和所需時間進(jìn)行比較,驗(yàn)證改進(jìn)型平均相關(guān)捕獲算法的正確性和優(yōu)化性。
實(shí)驗(yàn)采用GNSS接收機(jī)采集的頻率為9.548 MHz的數(shù)字中頻信號,采樣頻率為38.192 MHz。根據(jù)傳統(tǒng)并行碼相位的捕獲框架,通過Matlab的load程序?qū)⒍ㄩL數(shù)據(jù)寫入Workspace中,然后利用Simulink的Repeating Sequence Stair器件,即圖4中的data器件載入到仿真空間中。將GNSS數(shù)字中頻信號和本地正余弦信號進(jìn)行混頻,其中的sinCar模塊和cosCar模塊為本地正余弦信號產(chǎn)生模塊,其頻率和采樣參數(shù)的設(shè)定根據(jù)所搜索的頻帶而定,混頻后再將信號進(jìn)行傅里葉變換。上述步驟進(jìn)行的同時,本地C/A碼信號也通過C/A碼生成器產(chǎn)生,并以GNSS數(shù)字中頻信號的同樣采樣頻率采樣后進(jìn)行傅里葉變換隨后進(jìn)行共軛,然后與混頻后的傅里葉變換相乘進(jìn)行傅里葉逆變換,取模平方后得出某頻帶碼相位的相關(guān)值。如果有峰值出現(xiàn)且滿足門限設(shè)置則捕獲成功,此時正余弦模塊的頻率和峰值出現(xiàn)的碼相位便是GNSS捕獲頻率和粗碼相位,傳統(tǒng)并行碼相位的仿真圖如圖4所示。

圖4 并行碼相位仿真圖及捕獲結(jié)果
由于1 ms采樣點(diǎn)數(shù)為38 192,傳統(tǒng)并行碼相位的傅里葉變換和傅里葉逆變換的點(diǎn)數(shù)均為38 192。并且Simulink是實(shí)時動態(tài)系統(tǒng)的仿真,為了保證FFT傅里葉變換模塊能正確按照點(diǎn)數(shù)進(jìn)行運(yùn)算,在傅里葉變換之前加上Buffer模塊用于數(shù)據(jù)緩存,在實(shí)際仿真的第一個1 ms時間內(nèi)是沒有顯示捕獲結(jié)果的。為了便于與改進(jìn)型平均相關(guān)捕獲算法的結(jié)果進(jìn)行比較,證明改進(jìn)型算法的優(yōu)化性,實(shí)驗(yàn)進(jìn)行相關(guān)值和捕獲時間的實(shí)時輸出,圖4中的Scope模塊用于捕獲時間的實(shí)時觀測,圖中的Simout模塊用于傅里葉逆變換的結(jié)果輸出到Workspace,從而對捕獲的衛(wèi)星信號的粗略碼相位進(jìn)行顯示。傳統(tǒng)并行碼相位的捕獲結(jié)果(PRN=6)如圖5所示,其中捕獲粗碼的碼相位為28 202,如圖6所示。

圖5 傳統(tǒng)并行碼相位捕獲結(jié)果

圖6 傳統(tǒng)并行碼相位捕獲的粗碼
由于Matlab中處理的是離散數(shù)據(jù),原則上要選擇N點(diǎn)的DFT離散傅里葉變換,但在實(shí)際操作中點(diǎn)數(shù)選用2的整數(shù)冪個,從而進(jìn)行基于2的快速傅里葉變換FFT更為高效[3,14]。N點(diǎn)的DFT運(yùn)算要進(jìn)行N2次復(fù)數(shù)乘法和N(N-1)次復(fù)數(shù)加法,而N點(diǎn)的基于2的FFT運(yùn)算要進(jìn)行(N/2)lbN次復(fù)數(shù)乘法和NlbN次復(fù)數(shù)加法,基于2的FFT運(yùn)算量減少。對于本文仿真實(shí)驗(yàn)未進(jìn)行平均分組采樣之前是進(jìn)行38 192點(diǎn)傅里葉變換,按照平均分組之后可以將38 192個采樣點(diǎn)分成9組2 121點(diǎn)的傅里葉變換,運(yùn)算量減少較大。如果采樣點(diǎn)數(shù)是2的整數(shù)冪時,運(yùn)算量減少效果會更為明顯。
改進(jìn)型平均相關(guān)捕獲算法是在傳統(tǒng)并行碼相位捕獲框架的基礎(chǔ)上進(jìn)行改進(jìn)的,在采樣數(shù)據(jù)進(jìn)行傅里葉變換的之前,加上一個平均采樣的過程,通過將標(biāo)稱中心頻點(diǎn)為9.548 MHz的中頻信號數(shù)據(jù)經(jīng)過38.192 MHz的采樣存放到名為data的Repeating Sequence Stair器件中,和本地載波信號sinCar和cosCar進(jìn)行混頻,和本地C/A碼信號進(jìn)行第一步38.192 MHz采樣后繼續(xù)進(jìn)行平均采樣,同平均后將38 192點(diǎn)下采樣9×2 121點(diǎn)快速傅里葉變化即9組18采樣點(diǎn)平均的2 121點(diǎn)的快速傅里葉變換,改進(jìn)型平均圓周相關(guān)捕獲的Simulink仿真如圖7所示。

圖7 改進(jìn)型平均相關(guān)捕獲的Simulink仿真圖
在Matlab中由于FFT快速傅里葉變換時基于2的整數(shù)冪的,2 121點(diǎn)的FFT實(shí)際操作是補(bǔ)零進(jìn)行4 096點(diǎn)的FFT[15-16]。第二組FFT時峰值超出了門限值,圖8為改進(jìn)型平均相關(guān)捕獲結(jié)果,其中捕獲的碼相位為1 567,如圖9所示。最后是還原碼相位的過程中,可以按照最基本的碼相位還原公式進(jìn)行還原:粗碼相位=(平均相關(guān)最大值碼相位/快速傅里葉點(diǎn)數(shù))×采樣點(diǎn)數(shù)即(最大值碼相位/4 096)×38 192+起點(diǎn),但是由于采樣點(diǎn)并非2的整數(shù)冪,故采樣點(diǎn)數(shù)采用平均分組采樣點(diǎn)數(shù),故碼相位為(1 567/2 121)×(2 121×18)+2=28 206。

圖8 改進(jìn)型平均相關(guān)捕獲結(jié)果

圖9 改進(jìn)型平均相關(guān)捕獲算法碼相位捕獲結(jié)果
為了實(shí)現(xiàn)傳統(tǒng)并行碼相位捕獲算法和改進(jìn)型平均相關(guān)捕獲算法的捕獲效率和誤差分析,本文選擇運(yùn)用scope模塊進(jìn)行捕獲相關(guān)峰值的實(shí)時輸出,從而對所用捕獲時間進(jìn)行直接的圖示。通過對圖10(a)和圖10(b)傳統(tǒng)并行碼相位仿真捕獲時間和改進(jìn)型平均相關(guān)仿真捕獲時間的對比,可以得出同一采樣信號的不同捕獲方法用時不同,并行碼相位捕獲算法1.9 ms時刻捕獲到了衛(wèi)星,而改進(jìn)型平均圓周相關(guān)捕獲算法,僅僅用了1.1 ms的時間,大約縮短了42%的時間,可以看出改進(jìn)型平均圓周相關(guān)能夠提高捕獲效率,縮短捕獲時間。

圖10 仿真捕獲時間
從圖6和圖9的捕獲的粗碼相位對比中可以看出,傳統(tǒng)并行碼相位的捕獲結(jié)果為28 202,改進(jìn)型平均相關(guān)捕獲算法捕獲的粗碼相位為28 206,兩者有著4個碼相位的偏移,存在著0.02%的誤差。其中誤差原因有2點(diǎn):① 實(shí)驗(yàn)數(shù)的采樣頻率即每毫秒的采樣點(diǎn)數(shù)不是2的整數(shù)冪;② 分組平均采樣致使相關(guān)點(diǎn)減少,會引起少量的碼片偏移。對于粗碼的捕獲而言誤差在允許范圍之內(nèi),且減少了運(yùn)算量縮短了近42%捕獲時間,可證明改進(jìn)型平均相關(guān)算法具有優(yōu)化效果。
通過對傳統(tǒng)并行碼相位的框架進(jìn)行了改進(jìn),提出改進(jìn)型平均相關(guān)捕獲技術(shù),將原38 192個采樣點(diǎn)的FFT平均分組為9組2 121點(diǎn)的FFT變換(非2的整數(shù)冪補(bǔ)零),減少了運(yùn)算量,可有效地提高捕獲效率。利用Matlab/Simulink器件庫進(jìn)行實(shí)時捕獲框架的搭建,得到改進(jìn)型算法的捕獲結(jié)果,驗(yàn)證了改進(jìn)型平均相關(guān)捕獲算法的正確性。
通過比較改進(jìn)型捕獲算法的粗碼相位捕獲結(jié)果和所用時間,可以得出改進(jìn)型平均相關(guān)捕獲算法比傳統(tǒng)并行碼相位捕獲算法運(yùn)算量小,捕獲時間縮短了42%,雖存在0.02%的碼相位誤差,但誤差在合理范圍之內(nèi),是傳統(tǒng)并行碼相位捕獲算法的合理優(yōu)化。