翟紅英,齊建中,宋 鵬
(北方工業大學 電子信息工程學院,北京 100144)
隨著我國自主研制的“北斗二代”衛星導航系統成功投入運營,用戶設備部分即北斗衛星導航接收機的研制也蓬勃發展,其中信號捕獲是接收機研制過程中至關重要的第一步。
高靈敏度捕獲技術針對微弱信號進行捕獲處理,方法主要包括加長相干積分時間和增加非相干累加次數。一般而言,加長相干積分時間提高信噪比的效果要好于增加非相干累加次數的效果,然而相干積分時間的加長需要相應地減小捕獲搜索頻率步長,增加搜索次數,大大消耗了捕獲所需的時間。在實際應用中需要綜合考慮捕獲時間和捕獲靈敏度的問題。由于傳統的GPS信號中導航電文每20 ms可能產生一次極性變化[1],這種較長的間隔時間使得相干積分、非相干積分和差分相干積分等弱信號捕獲技術得以有效實施[2],而北斗信號中NH碼的調制使得這種極性翻轉更為頻繁[3],直接采用上述積分方式極有可能帶來很大的能量損失,因此必須深入研究NH碼調制對捕獲的影響,以便采用合適的處理方式,提高弱信號環境下的北斗信號處理增益。
基于此,本文以實際應用為背景,提出并實現了一種基于FPGA+DSP的北斗MEO/IGSO衛星B1頻點弱信號捕獲方法。該方法首先對20位NH碼采樣,再對低通濾波后的數據進行去NH碼運算,之后采用相干積分以獲得較高的信噪比增益,采用FFT-IFFT(FFT循環相關)進行信號自相關處理[4],在此基礎上,采用可變長度非相干累加進一步提高信噪比增益,在成功捕獲該信號后即停止非相干累加。這樣在既保證了捕獲靈敏度的同時又盡量減少捕獲所需時間。同時通過一定捕獲控制策略,保證成功捕獲時的多普勒頻率接近真實多普勒頻率,從而實現北斗MEO/IGSO衛星B1頻點弱信號的捕獲及后續處理。
由于GPS信號調制的載波頻率較高,一般不適合直接進行處理。因此通過下變頻將接收天線收到的北斗MEO/IGSO衛星B1頻點弱信號下變頻為3.098 MHz的中頻信號,然后對中頻模擬信號進行數字量化,提供給FPGA進行捕獲處理[5]。因此,本文中的信號模型指輸入到FPGA的數字信號,其表達式為:
S(t)=AC(t-τ)D(t-τ)NH(t-τ)·
cos(2πfIFt+f)(t)+n(t),
(1)
式中,A為指信號功率;C(t)為C/A碼;D(t)為北斗衛星的導航數據碼;NH(t)為北斗信號的NH編碼;fIF為信號的載波頻率;φ(t)為初始相位;n(t)為均值為0的高斯白噪聲。
對FPGA輸入的數字信號首先要進行載波剝離,即將輸入信號與本地產生的載波相乘,并保留低頻成分。本地載波發生器輸出同相、正交兩路信號,其表達式為:
I(t)=cos(2π(fIF+Δf)t+φ0),
(2)
Q(t)=sin(2π(fIF+Δf)t+φ0),
(3)
經過相乘和低通濾波之后的結果為:
I(t)=AC(t-τ)D(t-τ)NH(t-τ)cos(φ(t)-
2πΔft-φ0),
(4)
Q(t)=AC(t-τ)D(t-τ)NH(t-τ)sin(φ(t)-
2πΔft-φ0),
(5)
上式中不包含噪聲分量。
然后進行去NH碼運算,對20 ms長的20位NH碼一個碼片采樣2點,循環產生40路NH碼序列,去NH碼運算表達式為:

cos(φ(t)-2πΔft-φ0),
(6)

sin(φ(t)-2πΔft-φ0)。
(7)
正確去NH碼之后的結果為:
I(t)=AC(t-τ)D(t-τ)cos(φ(t)-2πΔft-φ0),
(8)
Q(t)=AC(t-τ)D(t-τ)sin(φ(t)-2πΔft-φ0),
(9)
完成去NH碼運算之后信號被送入捕獲處理單元[6]。
信號的捕獲單元采用FFT-IFFT完成偽碼自相關運算。在對數字信號進行FFT循環相關之前,首先進行相干積分,即數字信號的相干累加過程[7]。在FFT之前進行相關積分可以減小資源占用率。相干累加對每1 ms的數據對應相位處進行累加,相干累加Tcohms之后便進行FFT循環相關。相干積分的表達式為:

(10)

(11)
式中,N取10 ms對應采樣點數。
對自相關后的數據取模進行非相干累加,非相干累加值體現了多個時刻相關結果的平均。非相干累加最大次數可通過外部配置,合理地選取最大次數可以有效減少捕獲時間[8]。非相干累加的表達式為:

(12)
式中,i,q為自相關后的結果,非相干累加次數M本文中取5。

圖1 算法流程
完成非相干累加后查找相關峰,通過門限比較判斷捕獲是否成功。判斷捕獲是否成功的方法除了門限比較外還可以選取比值法,即通過比較最大值和次大值的比值來判斷是否捕獲成功。本文中的方法采用比值法進行判斷,在比值較大時可以停止捕獲,減少捕獲時間;而在比值不明顯時同一頻點搜索次數超過40次(與產生NH碼序列數相同)即停止捕獲,保證了捕獲靈敏度。捕獲流程如圖1所示。
為了配合后續信號跟蹤,本文的算法在信號成功捕獲某個頻點后,減小步進,繼續搜索附近頻點,通過比較捕獲的結果,取比值較大者對應的頻點作為成功捕獲的頻點,這樣就減小了與真實多普勒的頻率誤差,從而提高捕獲精度。
由于“北斗二代”B1信號的在D1導航電文上調制的Neumann-Hoffman碼導致“北斗二代”弱信號捕獲有其特殊性。由于NH碼二次調制的存在導致“北斗二代”B1信號的相關周期變為20 ms,即每20 ms出現一次相關峰值。
NH碼Matlab仿真自相關結果如圖2。

圖2 NH碼自相關結果
可以發現,NH碼自相關最大值比其他值大87%左右,且最大值之外的結果相差不明顯,可見,NH碼自相關性比C/A碼弱很多[9]。
利用20 ms的數據剝離NH碼,即先將由中頻降到基頻的信號數據,依次每1 ms乘以一個NH碼,然后與本地1 ms的偽隨機碼相關,之后將20個1 ms的相關結果直接累加得20 ms的相干積分結果,最后尋找最大值[10]。為了取得更高的相干積分幅度增益,最理想的情況是將接收信號包含的NH碼與相乘的NH碼完全對齊,并保持一致[11]。由于未知接收信號的碼相位起始位置,也未知當前碼元對應的NH碼(共有20種可能),因此要估計碼元起始位置的同時也要估計當前碼元對應的NH碼[12]。因此,需要對NH碼進行不同精度的采樣,尋找最優的采樣精度,使得捕獲峰值大且時間短,經測試,選擇一個NH碼片采樣2點。
由于北斗MEO/IGSO衛星B1頻點信號1 bit數據長20 ms[3],因此運用半比特積分算法[13],可以選取10 ms相干積分時間。這樣做的好處是:由于該頻點信號數據一個比特長度是20 ms,相鄰2個10 ms分組一定有一個不受比特跳變影響。把每間隔一組數據進行非相干累加,共獲得2組累加數據,在這2組數據中取比值較大者作為有效結果進行捕獲判斷[14]。半比特積分算法原理圖如圖3所示。

圖3 半比特法原理
將數據分組標記為Yi(i=1,2,3...2n),記非相干累加結果為S0和S1,即
S0=Y1+Y3+Y5+...+Y2n-1,
(13)
S1=Y2+Y4+Y6+...+Y2n,
(14)
通過比較S0和S1結果中的數據,將比值較大者送至捕獲判決器。
該方法的缺點是:每組10 ms數據在相干積分時,首先對每1 ms進行積分,然后累加成10 ms數據,算法計算量大;由于數據分成了10 ms,積分時間受到固定,當數據比特存在連0或連1時,反而限制了積分時間的增長[15]。
對半比特法存在的一些不足,提出了一種改進方法。改進后的方法采用“先累加后相關”的思想,即將10 ms數據分成連續10個1 ms數據,對這10個1 ms數據對應相加后形成1 ms累加數據,即進行半比特相干積分之后再進行一次相干積分,針對累加后的1 ms數據進行FFT循環相關,這樣就大大減少了計算量[16]。
提高處理增益是實現弱信號捕獲的關鍵,它是對弱信號進行捕獲處理的一個非常重要的指標[2]。
經過時間為Tcoh的相干積分后可以獲得的相關積分處理增益為:
Gcoh=10·lg(Tcoh)。
(15)
經過Nnc次非相干累加后,可以獲得的非相干處理增益為:
Gnc=10·lgNnc-LSQ,
(16)
式中,LSQ是由對噪聲進行非相干累加引起的平方損耗。
因此,經過Tcoh的相干積分和Nnc次非相干累加后,可以獲得的總處理增益為:
Gtot=Gcoh+Gnc。
(17)
算法驗證采用自主研發的GNSS三系統接收機,包括GPS、GLONASS和BDS。接收機硬件FPGA使用XILINX公司的ARTIX-7系列芯片,型號為XC7A200T。該型號的FPGA芯片具有豐富的邏輯資源,能夠處理的數據量大,并配備有豐富的IP核可供調用,適合用于弱信號的捕獲處理。接收機實物圖如圖4所示。

圖4 接收機實物
北斗MEO/IGSO衛星B1頻點弱信號的生成采用SPIRENT公司的GSS6700 Multi-GNSS Simulator信號模擬器生成。該模擬源性能穩定,配備了相對應的控制軟件,通過軟件界面就可以模擬不同場景,實現對信號的配置,輸出強度可調的衛星信號。信號配置界面圖如圖5所示。

圖5 信號配置界面
調節模擬源輸出低強度的北斗MEO/IGSO衛星B1頻點信號讓接收機進行捕獲,使用ChipScope采樣經過捕獲后得到的不同偽碼相位處的自相關結果,FPGA實際捕獲效果如圖6~圖10所示。可以發現,去NH碼后捕獲到的比值更大,更容易捕獲成功。
沒有進行去NH碼運算的結果如圖6所示,此時并沒有明顯峰值出現,無法進行捕獲判斷。

圖6 捕獲結果(1)
經過去NH碼運算,NH碼一個碼片采樣2點,10 ms數據累加為1 ms,5次非相干累加后的結果如圖7所示,此時已經有了較明顯的相關峰出現,可以很容易判斷捕獲成功。

圖7 捕獲結果(2)
經過去NH碼運算,NH碼一個碼片采樣1點,10 ms數據累加為1 ms,5次非相干累加后的結果如圖8所示,此時也有較明顯的相關峰出現,但最大值與次大值的比值與圖7相比較小,可以發現,隨著NH碼采樣點數的增加,更容易捕獲成功,但一個頻點的搜索次數成倍增加,增加了捕獲時間[1]。

圖8 捕獲結果(3)
經過去NH碼運算,NH碼一個碼片采樣2點,10 ms數據累加為2 ms,5次非相干累加后的結果如圖9所示,此時也有較明顯的相關峰出現,但最大值與次大值的比值與圖7相比仍較小,可以發現,隨著相干累加次數的增加,更容易捕獲成功[1]。

圖9 捕獲結果(4)
經過去NH碼運算,NH碼一個碼片采樣2點,10 ms數據累加為1 ms,2次非相干累加后的結果如圖10所示,可以看出此時也有較明顯的相關峰出現,但最大值與次大值的比值與圖7相比仍較小,可以發現,隨著非相干累加次數的增加,更容易捕獲成功[1]。

圖10 捕獲結果(5)
經過一段時間之后,接收機對所有北斗MEO/IGSO衛星B1頻點信號的捕獲結果如表1所示。
表1 實測結果

系統衛星號高度/(°)方位角/(°)信噪比/dB?Hz多普勒/Hz偽距/m狀態BD26*73306321 38736 038 215CPBFBD28*3521331-55438 188 056CPBFBD27*3494312 64438 250 939CPBFBD29*36271311 78838 092 071CPBFBD212*27313313 51024 420 444CPBFBD21400002 147 483 6474
本文以實際應用為背景,提出了一種基于FPGA+DSP實現的北斗MEO/IGSO衛星B1頻點信號捕獲方法。該方法經過大量實際測試,效果穩定,信號捕獲靈敏度可達-142 dBm,平均一個頻點捕獲最長時間為4 s,實際中能夠較快速地實現對北斗MEO/IGSO衛星B1頻點弱信號的捕獲。