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

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

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

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

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

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

圖5 傳統并行碼相位捕獲結果

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

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

圖8 改進型平均相關捕獲結果

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

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