劉舒豪, 尹 露, 鄧中亮, 林開欽
(1.中興通訊股份有限公司,南山 518057;2.北京郵電大學電子工程學院,北京 100876)
北斗衛星導航系統是中國著眼于國家安全和經濟社會發展需要,自主建設并且獨立運行的全球衛星導航系統。北斗衛星導航系統的空間星座部包括35顆衛星,主要是5顆地球靜止軌道(Geostationary Orbit,GEO)衛星、27顆中圓地球軌道(Medium Earth Orbit,MEO)衛星和3顆傾斜地球同步軌道(Inclined GeoSynchronous Orbit,IGSO)衛星組成[1]。目前為止實現了中國國土及周邊區域的導航定位、授時、雙向報文通信服務能力。計劃于2020年實現全球組網,向全球提供服務。隨著北斗系統組網以及覆蓋能力的不斷發展更新,北斗系統的相關產品已逐漸應用于通信系統、天氣預報、車輛導航、地域測量等領域,并且在社會生產和人類生活方面,對北斗相關產品的需求也越來越大。同時在國家安全越來越重要的今天,為了減少對全球定位系統(Global Positioning System,GPS)的依賴,獨立發展自己國家的全球衛星定位系統尤為重要[2-3]。
北斗系統的設計為B1、B2、B3三頻信號完整服務,在此方面優于GPS,三頻導航的能力確保了信號在復雜電磁環境下的健壯性,在高精度測量方面更具優勢,高程精度定位能夠達到10m;在偽距和載波相位精度測量方面,北斗系統已經達到GPS的水平,偽距測量精度可達到33cm,載波精度可達到2mm[4]。
我國的北斗系統才開始起步,北斗信號的測距碼與GPS的C/A碼的結構有所不同,同時北斗采取的正交相移鍵控(Quadrature Phase-Shift Key-ing,QPSK)、二進制偏移載波(Binary Offset Carri-er,BOC)、正交復用二進制偏移載波(Quadrature Multiplexed BOC,QMBOC)等多種不同的調制方式。捕獲信號作為衛星信號接收的關鍵,北斗接收機用到的許多關鍵技術都是借鑒的GPS接收機的,北斗捕獲算法與GPS和伽利略系統的捕獲算法基本是一致的[5]。
通用軟件無線電外圍設備(Universal Software Radio Peripheral,USRP)是一種低成本并且充分吸收了軟件無線電思想的軟件無線電設備,能夠方便靈活地對信號的頻率、帶寬、采樣速率等特性進行變更。它的設計目的是想讓計算機具有和高帶寬的無線電設備一樣的功能。它可以充當一個射頻前端,將產生的北斗仿真信號從基帶調制到固定的高頻點發射[6]。
本文主要根據北斗信號的結構,通過Matlab的編碼產生北斗二號衛星的B1I信號和北斗三號衛星的B1C信號,最后用接收機對產生的仿真信號進行接收驗證,實現北斗信號仿真系統的設計與驗證。
北斗衛星的信號為三頻信號,包括B1、B2、B3這3個頻段的信號,本文主要對B1信號進行研究,B1信號的I、Q兩路都采取將測距碼和導航電文正交擴頻調制在載波上的調制方式。
衛星的基準時鐘源可產生不同的信號載波頻率,B1信號的載波頻率為1561.09MHz,調制方式為QPSK,右旋圓極化,CDMA的復用方式。
B1信號的表達式如下[7]:


(1)
式中,j表示衛星編號;A表示信號幅度;C表示信號測距碼;D表示數據碼;f表示載波頻率;φ表示載波初始相位。I、Q分別表示同相、正交支路,I支路內容為開放服務;Q支路內容為授權服務,暫未公開。
測距碼本質上是一種偽隨機噪聲(Pseudo Random Noise,PRN)碼,它具有良好的自相關和互相關特性。北斗信號采取擴頻通信,所有衛星的發射頻段都是同一頻點,如果不加以區別,接收機將無法分辨不同編號的衛星。因此,接收機根據導航電文上調制的獨特的測距碼便能準確區分出各顆衛星的編號。CB1I、CB2I分別為B1I、B2I信號的測距碼,碼速率為2.046Mchip/s,碼長為2046[8]。
具有工程量小、施工方便、節約勞動力的特點,在電力條件不能滿足的情況下,該方法具有明顯優勢。但該方法抽水高程有限,排水能力有限,可配合其他方法使用。虹吸排水包括注水式和抽真空式。
2個線性序列G1、G2模二加產生Gold碼后,截短一碼片即可組成CB1I、CB2I,G1、G2序列本質上是一種m序列,它們都是由11級線性移位寄存器生成的。兩者生成的多項式分別為:
G1(x)=1+x+x7+x8+x9+x10+x11
(2)
G2(x)= 1+x+x2+x3+x4+x5+
x8+x9+x11
(3)
其中,G1序列初始相位為01010101010;G2序列初始相位為01010101010。
CB1I和CB2I測距碼的發生器如圖1所示。

圖1 CB1I和CB2I測距碼發生器Fig.1 CB1I and CB2I ranging code generators
為了區分不同的衛星編號,根據圖1可以對G2序列不同的抽頭進行模二加操作,可達到實現G2序列不同相位偏移的目的。然后與G1序列模二加可以生成不同衛星的測距碼,通過上述操作該生成器可生成37種不同的測距碼來區分每一顆北斗導航衛星。
因為PRN碼有良好的自相關特性和互相關特性,因此接收機能有效地剝離測距碼以獲得有用的衛星信息。不同衛星的測距碼的互相關特性很小,可以說幾乎沒有,但測距碼的自相關特性幾乎為1。所以接收機可以先預產生所有衛星對應的測距碼,保存在本地接收機,當接收到衛星信號后,將該衛星信號和所有測距碼一一進行相關運算,得到碼相關運算結果的自相關特性幾乎為1的測距碼,此測距碼對應的衛星編號即對應發送該衛星信號的衛星編號。
MEO/IGSO衛星的B1I和B2I信號負責播發D1導航電文,而GEO衛星的B1I和B2I信號負責播發D2導航電文。
北斗衛星發射的導航信號由載波、偽隨機碼和數據碼共同組成。發射的時候,首先用數據碼去調制偽隨機碼,展寬數據碼的頻譜,再用新生成的數據碼去調制載波,讓導航信號以頻率較高的載波信號發射出去。在接收機部分,先從信號中剝離載波,再將偽隨機碼剝離,即先將高頻信號下變頻到中頻,再用本地預先產生并保存的測距碼去解擴中頻衛星信號,得到衛星發送的數據碼。最后根據星歷參數表,將解擴得到的數據碼轉換為定位參數,完成定位,北斗信號組成結構框圖如圖2所示。

圖2 北斗信號結構框圖Fig.2 Schematic of Beidou signal structure block
在對整體信號模塊進行編輯前,先進行參數初始化模塊,讀取參數。首先將中頻、采樣頻率等參數進行初始化設置。包括獲取星上設備時延差,表示基準設備時延和信號時延的差值;讀取北斗衛星星歷參數,用于導航定位時坐標等參數的計算;然后進行CRC循環冗余校驗以及BCH(15,11,1)糾錯編碼加交織。
初始化模塊準備就緒后,對測距碼模塊進行設計,根據中國導航衛星辦公室發布的空間信號接口控制文件,對測距碼進行編碼產生G1、G2序列。將G1序列和G2序列抽頭模二加之后生成北斗信號的測距碼。
接下來對北斗信號的導航電文進行編碼,根據控制文件公布的D1、D2導航電文的結構,對D1、D2導航電文的幀結構及每一幀對應的數據信息進行定義編碼。
最后將信號調制到高頻點,并構建多普勒頻移計算模塊,對多普勒頻移進行計算,最終生成B1I和B1C信號,生成的部分信號展示如圖3所示。

圖3 北斗信號生成圖Fig.3 Beidou signal generation diagram
圖3中,生成300s的衛星信號,B1I信號、B1C信號兩者載波頻率分別為1561.098MHz和1575.42MHz,采樣頻率取為5714280Hz,顯示了星載參考時鐘、方位角、海拔高度等星歷參數,后續會對該模擬信號進行發射,利用接收機對仿真信號進行驗證。
SDR程序為在筆記本電腦上利用高級編程語言來編輯的通信模塊,C語言編寫的SDR程序能夠較好地滿足SDR系統要求的實時性。因為不同的外設會用到不同的驅動模塊,采用UHD來驅動USRP外設,并且調用系統接口和內核。GPP和USRP是通過高速接口USB3.0連接的,它的理論傳輸速度為500Mbit/s,能夠很好地滿足系統吞吐量的需求,不會因為接口速度而限制整個系統的性能[10-11]。USRP中首先工作的是FPGA模塊,FPGA包括了數字上變頻(DUC)和發送控制2個模塊,并且FPGA具有較快的處理速度,發送控制模塊是用來控制整個USRP的接發行為的,DUC模塊的主要任務是將電腦傳輸過來的基帶數據上變頻到中頻。接著經過數模轉換器DAC,將數字域信號轉換為模擬域信號,再經過低通濾波器使得信號變得平滑。最后用得到的中頻模擬域數據和晶振產生的信號相乘,則可以將中頻信號調制到固定的頻點,并使用功率放大器放大后發射。使用USRP設備將電腦產生的北斗信號二進制基帶數據當作衛星信號發射,USRP硬件與電腦的連接圖和發射示意圖分別如圖4和圖5所示。

圖4 USRP實際連接圖Fig.4 Schematic of USRP actual connection

圖5 北斗信號發射圖Fig.5 Schematic of Beidou signal transmission
整個系統的設備組成圖如圖6所示。

圖6 系統設備組成圖
Fig.6 Schematic of system equipment
首先在電腦端通過Matlab對信號進行編碼,產生預期的北斗B1I信號,接下來將產生的北斗信號以二進制文件的形式在USRP上進行調制后,通過USRP的天線將射頻信號發射出去,最后通過北斗接收機接收該仿真信號并進行驗證。
分別對北斗系統的衛星進行了多普勒頻移仿真,其中PRN#2衛星信號多普勒頻移如圖7所示。

圖7 PRN#2衛星信號多普勒頻移Fig.7 PRN#2 satellite signal Doppler shift
GNSS接收機對仿真系統生成并發射的信號進行接收,仿真時間設定為2018年5月3日5:59:42,實際測量時間為2018年6月7日10:52:38開始,根據經緯度選取一個點為初始位置,以該初始位置為參考,仿真信號運動軌跡半徑設置為10km,時間為接收機位置的TTR時間減去自動參考時間,仿真信號沿著圓周做運動,速度可由時間和運動距離決定,信號設定的運動方式如圖8所示。

圖8 仿真信號設定運動軌跡Fig.8 Setting trajectory of the simulated signal
在實際情況下,用USRP發射仿真系統生成的信號,用接收機接收并顯示信號的運動軌跡。從圖中可以看到,仿真信號能良好地按照設定的軌跡運動,但是由于接收機從開機啟動時搜索衛星會經過一段時間,這段時間內,根據設定的速度,仿真信號已經沿著圓周走過了62.8km,而開始時接收機沒有收到仿真信號。故當接收機收到仿真信號后,軌跡會呈現為從初始的位置沿著直線到達初次接收到仿真信號的位置,所以開始階段的軌跡有所偏差(見圖9)。后續仿真接收結果基本符合設定的運動軌跡,由此可見仿真系統產生了良好的仿真信號。

圖9 仿真信號實際運動軌跡Fig.9 Actual trajectory of the simulated signal
本文分析了北斗衛星信號的結構與特點,設計和介紹了信號的各部分結構,使用Matlab定義并編碼產生了研究較多的北斗二號的B1I信號和研究較少的北斗三號的B1C信號。基于USRP對信號進行了發射,最終通過接收信號來驗證仿真系統是否產生了可用的仿真信號,由此完成一套完整的仿真系統設計。