【摘要】北斗衛星導航系統是我國自主研制的全球衛星導航系統,是繼美國的GPS以及俄羅斯的GLONASS之后的第三個成熟的衛星導航系統。北斗衛星導航系統的衛星信號采用了二次編碼技術,限制了相干積分的時間,給北斗導航信號的捕獲帶來了挑戰,因此本文提出了基于4ms的遍歷并行碼相位搜索的衛星捕獲算法,用來解決這個問題,提高衛星捕獲的靈敏度,提高衛星捕獲的性能。
【關鍵詞】北斗衛星捕獲;4ms遍歷;并行碼相位搜索;FPGA
1.引言
北斗衛星導航系統是中國自行研制的全球衛星定位與通信系統,是繼美國的全球定位系統(GPS)和俄國的GLONASS之后第三個成熟的衛星導航系統。2012年12月27日,北斗導航業務正式對亞太地區提供無源定位、導航、授時服務。
隨著北斗衛星導航系統的建立,北斗衛星導航接收機終端的研發也進入了關鍵階段,衛星導航接收機終端按照信號處理的流程來講,分為三個階段,第一階段是衛星的捕獲,第二階段是衛星的跟蹤,第三階段是定位結算[1]。本文研究的重點就是衛星的捕獲階段,導航終端接收到的衛星信號的能量必須要能夠保證進行PVT計算,如果當信號被建筑物所阻擋,那么信號的強度將會受到嚴重的衰減,這也意味著對該信號進行捕獲也將更具挑戰性。因此,在上述嚴峻的條件下我們需要引入新的捕獲技術來增加衛星捕獲的靈敏度。
北斗衛星信號不僅僅調制了數據位,而且還調制了NH碼,NH碼是一種二級碼,周期為20ms,每1ms就有可能發生比特跳變,為了保證衛星信號的捕獲性能,一種通用的方法是非相干積分算法[2],該算法將1ms的擴頻結果進行平方,借此消除了比特跳變的影響,但是這種方法卻引入了平方損耗,而且經過1ms相關解擴后的信噪比越低,引入的平方損耗就越大,因此無法應用于弱衛星信號的捕獲。有一些研究方向是采用差分的方法來減小平方損耗,但是對于調制了NH碼的北斗信號而言并不適用,還有一種方法就是延長相干積分時間,這也是最行之有效的方法。衛星信號上的NH碼把相干積分時間限制在1ms,也限制了相干積分增益,進而限制了捕獲的靈敏度。因此我們的研究目標是消除NH碼帶來的比特跳變的影響,避免引入平方損耗,提高捕獲靈敏度。
2.基于4ms的遍歷并行碼相位搜索算法
北斗衛星信號上調制的NH碼:
[3]。
每個NH碼片的長度為1ms,周期為20ms,從NH碼中我們可以找到規律,即NH碼的前5個比特是相同的,如果用該段數據進行相干積分,那么就可以不采用非相干積分的算法,直接延長相干積分的時間,從而可以增大相干積分增益,提高北斗衛星信號的捕獲靈敏度。因此在這個思路之下,我們設計了基于4ms的遍歷并行碼相位搜索算法,具體算法步驟如下:
A.取24ms的衛星中頻信號;
B.取4ms數據進行一次粗混頻,得到基帶信號;
C.對基帶信號進行抽取,降速率至4.092 MHz;
D.對降速率的信號進行插值,將信號速率調整至4.096MHz;
E.本地產生載波,對數據進行二次精細混頻,在頻率域上進行搜索;
F.將二次混頻后的數據進行4點DFT,然后送入4096點FFT模塊進行FFT運算;
G.本地產生該顆北斗衛星的PRN碼,預先作4096點FFT并取共軛,與衛星信號FFT后的數據相乘;
H.將相乘后的結果作4096點IFFT取模,根據模值進行排序;
I.搜索完這個頻率,再轉到步驟E,搜索其他的頻率;
J.搜索完這個4ms數據的全部頻率,再將數據的起點往后移1ms,再取4ms的數據,轉到步驟B.
K.重復20次的4ms數據搜索,就可以遍歷整個NH碼序列,因為取得是4ms的數據長度,無論起點的位置,遍歷之后4ms的數據都會落在5ms的相同符號的區域之內,搜索完畢之后,將最大的模值結果取出進行判決,如果超過閾值,那么說明該顆衛星存在并被捕獲到,如果沒有超過閾值,說明該顆衛星沒有被捕獲到。
上述步驟可以用圖1所示的流程圖描述。
圖1 基于4ms遍歷并行碼相位算法流程圖
3.北斗導航信號捕獲系統硬件系統設計
北斗導航信號的捕獲算法的計算量大,而且實時性要求較高,這樣就需要使用硬件實現,加速計算,保證實時性的要求[4]。因此本文中的北斗衛星導航信號捕獲系統由Verilog語言在FPGA平臺上進行設計,作為協處理器通過AMBA總線掛載在ARM7核上,負責北斗衛星信號的捕獲過程,各個功能模塊如圖2所示。
圖2 北斗導航信號捕獲系統功能模塊設計框圖
(1)ae_decimator模塊:混頻抽取模塊,將中頻輸入的衛星信號混頻至基帶,然后抽取降速。
(2)cap_buffer和cap_wr_ctl模塊:控制數據存儲到dsp_ram中。
(3)CPU register模塊:用來和ARM7核進行數據的交互。
(4)CRAM模塊:用來暫存最終的捕獲結果以及從CPU register模塊接收來的捕獲控制信息。
(5)AE_CTL模塊:用來控制捕獲協處理器的算法流程。
(6)Interpolator模塊:用來對暫存到dsp_ram中的數據進行插值,將原速率為4.092MHz的數據插值成4.096MHz的數據,方便后面進行4096點的FFT操作。
(7)FFT/IFFT engine模塊:負責4096點的FFT/IFFT的計算
(8)Work_mem模塊:用于FFT/IFFT計算中中間結果的暫存。
(9)MEM_arbiter模塊:DSP_MEM的仲裁器。
(10)DSP_MEM模塊:用于存儲捕獲過程中的中間數據。
4.北斗導航信號捕獲協處理器系統測試
北斗導航信號捕獲協處理器是通過AMBA總線掛載在ARM7核上的,協處理器運行之前需要配置好捕獲的控制信息,包括需要捕獲的衛星號,搜索頻率范圍,搜索的起始頻率等控制信息,這些信息是由配置軟件生成.mif文件,存儲在dsp_ram中,FPGA啟動后,ARM7核會從dsp_ram中讀取配置文件,將信息配置在捕獲模塊的寄存器中,啟動捕獲協處理器對北斗衛星信號進行捕獲。
在搭建好的FPGA環境中進行測試,使用的數據是天線接收到的北斗衛星導航信號,強度在-130dB左右,事先用matlab實現的北斗導航軟件接收機進行捕獲,可以成功捕獲到1號衛星,捕獲到的1號衛星的頻率是4.09115MHz,再使用verilog實現的北斗導航信號捕獲協處理器對該段數據進行捕獲,配置軟件中的衛星號設為1,一級混頻頻率設為4.092MHz搜索頻率范圍設定為10KHz,搜索步長設定為1KHz,結果如圖3所示,捕獲結果中發現o_peak處有明顯的峰值,根據載噪比的計算公式計算得到CN0為42.96dB·Hz,超過了閾值37.5dB·Hz,再查看捕獲到的頻率o_bin0=1,搜索的起始頻率為4.092MHz,因此硬件系統捕獲到的1號衛星頻率為4.091MHz,與matlab捕獲到的1號衛星的頻率相近,因此視作捕獲到1號衛星。
圖3 北斗導航信號捕獲測試結果
5.總結
本文為了解決北斗衛星信號中調制了NH碼所引入的比特跳變問題,提出了基于4ms的遍歷并行碼相位搜索的衛星捕獲算法,提高了捕獲靈敏度和導航接收機的性能,并使用FPGA硬件成功實現了該算法,將捕獲模塊作為一個協處理器掛載在ARM7核上,通過實際的測試,成功驗證了該算法與實現的正確性。
參考文獻
[1]謝剛.GPS原理與接收機設計[M].電子工業出版社,2009.
[2]易維勇,董緒榮,孟凡玉.GNSS單頻軟件接收機應用與編程[M].國防工業出版社,2010.
[3]北斗衛星導航系統空間信號接口控制文件,2012.
[4]JAMES BAO-YEN TSUI.GPS軟件接收機基礎[M].電子工業出版社,2008.
作者簡介:林嵩(1989—),男,福建福州人,廈門大學信息科學與技術學院通信工程系研究生在讀,研究方向:衛星導航接收機設計。