

摘要:GNSS軟件接收機在信號捕獲、追蹤和導航定位算法研究方面有巨大優勢,衛星導航信號的偽隨機碼結構特性是進行GNSS軟件接收機設計開發的基礎和前提。本文根據北斗衛星導航系統空間信號接口控制文件,分析研究了北斗衛星導航系統B1I偽隨機碼的生成原理,提出并實現了相應的軟件生成算法,通過仿真模擬,深入分析研究了B1I偽隨機碼自身特性及其自相關、互相關特性。
關鍵詞:北斗衛星導航系統(BDS);B1I測距碼;生成算法;相關性
一、引言
北斗衛星導航系統是我國獨立發展、自主運行的全球衛星導航系統,能夠提供高精度、高可靠的導航、定位和授時服務[1]。2018年11月19日,我國成功發射第42、43顆北斗導航衛星,這兩顆衛星也是我國北斗三號系統第18、19顆組網衛星。此次任務的成功發射標志著我國北斗三號基本系統星座部署圓滿完成。
與傳統的硬件實現的GNSS接收機相比,軟件接收機可以在不改變硬件結構的前提下進行新算法的驗證,并處理各種軟件設備采集的中頻數據和不同采樣頻率的信號[2]。GNSS軟件接收機因其很強的靈活性,一直受到接收機設計和導航定位算法研究人員的關注。在2000年以前,受計算機CPU頻率、內存等硬件條件的制約,軟件實現的接收機只能同時追蹤2-3顆GNSS導航衛星,無法實現實時導航定位功能。
近年來,隨著計算機性能的大幅提升,一般的個人計算機CPU主頻已達到2.0GHz以上內存達到4G甚至8G以上,已完全具備同時追蹤幾十顆GNSS導航衛星并完成實時導航定位的功能。因此,國內外眾多高校和研究院所紛紛針對新一代GNSS導航衛星系統展開GNSS軟件接收機的設計研發[3],并測試驗證了許多新的捕獲、跟蹤和導航定位算法。
我國北斗衛星導航定位系統的導航信號采用碼分多址的通訊技術播發,系統內所有衛星共享相同的載波頻段。而偽隨機碼(或測距碼)是接收機區分不同衛星信號的標志,擴展了初始信號帶寬,這也是GNSS接收機可以檢測并處理弱信號的關鍵所在;另外,偽隨機提供的碼相位觀測量是獲得偽距觀測值的基礎,而后續的導航定位算法都是基于偽距觀測值展開的。因此,偽隨機碼在衛星導航信號中具有關鍵作用,分析研究偽隨機碼特性對于GNSS軟件接收機的設計開發具有非常重要的實際意義。
二、北斗衛星B1I測距碼的生成原理
根據信號頻段的不同,北斗導航衛星中的偽隨機碼有多種,包括:B1頻段上的B1I、B1C碼;B2頻段上的B2a碼;B3頻段的B3I碼等。與GPS L1頻段上調制的C/A碼不同,北斗導航衛星中的B1I信號調制的偽隨機碼實質上是一種非平衡的Gold碼。
B1I測距碼周期為2046個碼片,時間長度為1ms,故GNSS接收機可以很快實現對該測距碼的捕獲。B1I碼由兩個Gold碼的m序列生成,這兩個序列分別為G1、G2序列。將G1序列與抽頭選擇后的G2序列進行模二相加,即可得到每顆北斗衛星所發射的唯一B1I碼序列。
北斗導航衛星中G1、G2序列的線性移位寄存器的位數都是11位,根據m序列的性質,兩個11級m序列模二相加可產生周期為211-1=2047個碼片的平衡Gold碼,將該平衡Gold碼序列截斷1個碼片即可得到周期為2046個碼片的非平衡Gold碼,該非平衡的Gold即為B1I測距碼。
在用戶接收機中,兩個11位線性移位寄存器在本地碼環路控制的時鐘頻率為2.046MHz的數字壓控振蕩器(NCO)調節下,分別生成G1、G2序列,接收機通過線性反饋抽頭配置生成G1、G2序列的多項式可表示為[14]:
(1)
G1、G2寄存器具有相同的初始相位,即:
(2)
使用ri表示G1的11位線性寄存器內容,i=1…11,在接收機每一個計數時鐘開始時刻,第1個寄存器內容被當前G1序列的抽頭反饋值F1更新,同時,第2至11個寄存器的內容依次被前一個寄存器內容更新。根據上述過程,G1序列寄存器內容更新公式可表示為:
(3)
式中:⊕為模二相加運算符。同理,G2序列寄存器內容更新公式可表示為:
(4)
B1I偽隨機碼是G1序列的第11個寄存器內容r11和G2序列抽頭選擇后的寄存器內容rs1、rs2模二相加的結果,即:
(5)
需要注意的是,不同的BDS衛星號有唯一的G2序列的抽頭選擇值rs1、rs2,如1號BDS衛星G2的抽頭選擇值為第1和3個寄存器的內容,這也保證也不同衛星測距碼結構的唯一性。當接收機工作時鐘計數到2046時,碼控制環路強制將G1和G2寄存器內容清零,并重新置為初始相位。
三、北斗衛星B1I測距碼生成算法及實現
根據北斗衛星B1I測距碼的生成原理,繪制B1I測距碼生成的算法,該算法過程可描述為:
①設定G1、G2序列寄存器的初始相位,并根據輸入的衛星號,設定兩組寄存器序列的抽頭選擇值;
②提取G1序列寄存器第11個寄存器的內容r11,根據輸入的衛星號,提取相應的G2序列寄存器中第rs1、rs2個寄存器的內容;
③將r11、rs1、rs2三個寄存器的值進行模二相加,得到并存儲為第i個測距碼的值;
④進行移位操作,分別更新G1、G2序列寄存器中第2至第11個寄存器的內容,然后并分別對G1、G2序列寄存器進行抽頭操作,更新兩個序列寄存器中第1個寄存器的值;
⑥重復2-4,直至得到第2046個測距碼值。
由于C語言中特有的異或操作運算符直接對應于模二相加運算,因此,使用C語言可以非常方便地實現上述算法,并使用C語言根據上述算法編制相應的計算代碼。
四、北斗B1I測距碼仿真模擬與相關性分析
根據上文中編制的北斗B1I測距碼生成程序,本節對北斗衛星導航系統32顆衛星的B1I測距碼進行了仿真模擬,分析了其碼結構的不平衡特性;同時也對衛星測距碼的自相關和互相關進行了仿真模擬,分析了B1I碼的自相關和互相關特性。
(一) 仿真模擬
根據所編制的北斗B1I測距碼生成程序可生成不同北斗衛星的測距碼序列,使用該程序生成的北斗3號及北斗25號衛星一個周期的B1I測距碼序列。兩衛星的測距碼序列是明顯不同的。
測距碼的平衡性(即測距碼序列中1值和-1值的個數)會影響測距碼的相關特性,為了分析北斗衛星B1I測距碼的平衡特性,分別對1-32號衛星一個周期內的測距碼序列中-1、1的個數進行統計,以y坐標值表示測距碼序列中1值個數與-1值個數之差,繪制32顆衛星測距碼的兩值個數之差的統計直方圖。北斗衛星導航系統有19顆衛星測距碼序列中1的個數比-1個數多2個,而其余13顆衛星中1的個數與-1個數是相等的,這點與GPS系統不同。在GPS衛星導航系統中,所有衛星一個周期內的C/A碼中1的個數比-1的個數都是只多1個。
(二)B1I測距碼的自相關性分析
測距碼結構良好的自相關特性是基帶信號處理的基礎,包括北斗信號的捕獲、碼跟蹤和偽距觀測值的獲取,同時對多路徑信號的抑制也起著至關重要的作用。自相關函數值可以用來衡量一個信號和其自身在時間軸上偏移某段時長后的相似性。
通過北斗25號衛星B1I測距碼的自相關函數值圖可以看出,當測距碼延遲為0個碼片時,B1I碼的自相關函數值達到最大值1;當測距碼延遲不為0時,其自相關函數值為一個非常小的值。這種良好的自相關特性保證了測距碼鑒相結果的精確性。通過北斗25號衛星自相關函數值域分布圖可以看出,B1I碼只有一個值為1的最大自相關函數值,其余自相關函數值在-0.069至0.060之間呈近似連續的正態分布。北斗B1I測距碼的這種特性與GPS系統的C/A碼不同,對C/A碼來說,雖然也只有一個最大自相關函數值,但是其余自相關函數值呈離散的均勻分布且離散值只有三個:-0.001、-0.064和0.062。
測距碼的最大自相關函數值可稱為信號的主瓣,而異于最大自相關函數值的其他自相關函數值稱為旁瓣。主瓣與旁瓣的比值越大,在實際GNSS信號處理中把旁瓣誤認為主瓣的概率越小,GNSS接收機的偽距測量值也就越可靠。通過北斗32顆衛星B1I測距碼的旁瓣取值范圍,可以看出,以分貝表示的B1I測距碼最小的主瓣和旁瓣比值為20·log(1/max(旁瓣))≈21.9dB。該值表明,B1I測距碼的最大自相關值比旁瓣自相關值至少要高出21.9dB,在衛星信號質量較好的情況下,GNSS接收機是很難將B1I測距碼的旁瓣作為主瓣來處理的,這也證明了B1I測距碼的可靠性。
另外,對GPS系統的C/A碼而言,其最小主瓣和旁瓣比值約為23.9dB,該值略高與北斗B1I碼的比值,這種差異主要是由于北斗B1I碼截斷1個碼片后導致的測距碼序列的不平衡性引起的。
(三)B1I測距碼的互相關性分析
和自相關函數不同,測距碼的互相關函數值是用來衡量一組測距碼序列和其他測距碼序列在時間軸上偏移某段時間后的相似性。除GLONASS系統外,現有的GNSS導航定位系統都采用擴頻通訊技術發射電磁波信號,不同導航衛星發射的電磁波信號共享一個載波頻段,因此必須通過偽碼來分辨不同的衛星導航信號。在不同測距碼序列完全正交的理想情況下,不同衛星發射的測距碼互相關函數值為0。
而實際上,由于北斗測距碼只是近似正交的,北斗B1I測距碼的互相關函數值也隨著碼延遲量的不同而不同,這點與其自相關函數值類似。測距碼互相關函數的值域在-0.071至0.067之間也呈近似的連續正態分布,和自相關函數值相比,只是缺少了自相關函數的最大值。此外需要注意的是,GPS系統的C/A碼序列的互相關函數的值域范圍與其自相關函數值域范圍是一致的。
測距碼的互相關特性對現代高靈敏度接收機的設計有非常重要的影響。針對強、弱衛星信號共存的情況(如市區、峽谷等典型場景中),GNSS接收機很容易在捕獲弱星信號時捕獲到強星信號的互相關峰值,從而導致非常大的偽距測量誤差,甚至失鎖現象的發生。北斗系統32顆衛星的互相關函數的值域范圍與衛星號為i的測距碼互相關函數取最小、最大值時對應的衛星號分別用SAT1、SAT2表示。
可以看出,北斗系統1-32號衛星B1I測距碼之間的互相關函數值域范圍在-0.097至0.090之間;其最小值-0.097發生在19號和22號衛星之間,最大值0.090發生在5號和30號衛星之間。根據上述結果可以求得,北斗B1I測距碼最大互相關函數值和自相關函數峰值的比例為20·log(max(互相關函數峰值))≈-20.3dB,而GPS系統C/A碼最大互相關函數值和自相關函數峰值的比例為-23.9dB。該值表明,在最不利的情況下,北斗B1I測距碼間的互相關抑制性能相比GPS-C/A碼惡化約3.6dB。因此,在進行北斗弱信號捕獲時,必須要對測距碼間互相關的結果進行必要的處理。
五、結束語
本文分析研究了北斗衛星導航系統B1I測距碼的生成原理,提出了B1I測距碼的軟件生成算法,并使用C語言實現了算法,編制了相關的計算程序。通過計算機仿真模擬,本文對北斗B1I測距碼的自相關和互相關特性進行了分析研究,并得出如下主要結論:
①B1I測距碼為不平衡的Gold碼,北斗1-32號衛星中有19顆衛星測距碼序列中1值的個數比-1值的個數多2個,13顆衛星測距碼序列中1值的個數與-1值的個數是相同的;
②B1I碼序列只且只有一個最大自相關函數值,其余自相關函數值呈近似連續的正態分布,且B1I測距碼主瓣和旁瓣比值均高于21.9dB;
③B1I測距碼互相關函數的值呈近似的連續正態分布,其最大互相關函數值和自相關函數峰值的比值為-20.3dB,在處理北斗弱信號時必須要對測距碼間互相關的結果進行必要地處理。
作者單位:孫超 內蒙古昊盛煤業有限公司
參" 考" 文" 獻
[1]章紅平,李夢楊,郭文飛.北斗B_1/B_2雙頻軟件接收機的設計與實現[J].測繪地理信息,2019,44(01):18-21.
[2]賈興剛.基于VS的GPS/北斗衛星軟件接收機設計[D].石家莊:河北科技大學,2020.
[3]楊陽.基于FPGA和DSP的GNSS軟件接收機設計[D].南京:東南大學,2020.
[4]韓艷.GPS/BDS雙模軟件接收機設計與實現[D].大連:大連海事大學,2019.
[5]肖然.Galileo衛星導航軟件接收機關鍵技術的研究[D].成都:電子科技大學,2019.
[6]賁星.GLONASS衛星導航信號模擬與軟件接收機開發[D].南京:南京航空航天大學,2018.