基于通用无线电外设的北斗信号仿真系统
2019-03-13刘舒豪邓中亮林开钦
刘舒豪, 尹 露, 邓中亮, 林开钦
(1.中兴通讯股份有限公司,南山 518057;2.北京邮电大学电子工程学院,北京 100876)
0 引言
北斗卫星导航系统是中国着眼于国家安全和经济社会发展需要,自主建设并且独立运行的全球卫星导航系统。北斗卫星导航系统的空间星座部包括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信号,最后用接收机对产生的仿真信号进行接收验证,实现北斗信号仿真系统的设计与验证。
1 北斗信号结构与特点
北斗卫星的信号为三频信号,包括B1、B2、B3这3个频段的信号,本文主要对B1信号进行研究,B1信号的I、Q两路都采取将测距码和导航电文正交扩频调制在载波上的调制方式。
1.1 载波
卫星的基准时钟源可产生不同的信号载波频率,B1信号的载波频率为1561.09MHz,调制方式为QPSK,右旋圆极化,CDMA的复用方式。
B1信号的表达式如下[7]:
(1)
式中,j表示卫星编号;A表示信号幅度;C表示信号测距码;D表示数据码;f表示载波频率;φ表示载波初始相位。I、Q分别表示同相、正交支路,I支路内容为开放服务;Q支路内容为授权服务,暂未公开。
1.2 测距码
测距码本质上是一种伪随机噪声(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的测距码,此测距码对应的卫星编号即对应发送该卫星信号的卫星编号。
1.3 导航电文
MEO/IGSO卫星的B1I和B2I信号负责播发D1导航电文,而GEO卫星的B1I和B2I信号负责播发D2导航电文。
2 北斗信号的调制与发射
北斗卫星发射的导航信号由载波、伪随机码和数据码共同组成。发射的时候,首先用数据码去调制伪随机码,展宽数据码的频谱,再用新生成的数据码去调制载波,让导航信号以频率较高的载波信号发射出去。在接收机部分,先从信号中剥离载波,再将伪随机码剥离,即先将高频信号下变频到中频,再用本地预先产生并保存的测距码去解扩中频卫星信号,得到卫星发送的数据码。最后根据星历参数表,将解扩得到的数据码转换为定位参数,完成定位,北斗信号组成结构框图如图2所示。
图2 北斗信号结构框图Fig.2 Schematic of Beidou signal structure block
2.1 北斗信号的产生
在对整体信号模块进行编辑前,先进行参数初始化模块,读取参数。首先将中频、采样频率等参数进行初始化设置。包括获取星上设备时延差,表示基准设备时延和信号时延的差值;读取北斗卫星星历参数,用于导航定位时坐标等参数的计算;然后进行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,显示了星载参考时钟、方位角、海拔高度等星历参数,后续会对该模拟信号进行发射,利用接收机对仿真信号进行验证。
2.2 北斗信号的发射
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
3 实验仿真与验证
3.1 多普勒频移仿真
整个系统的设备组成图如图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
3.2 仿真信号的验证
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
4 结论
本文分析了北斗卫星信号的结构与特点,设计和介绍了信号的各部分结构,使用Matlab定义并编码产生了研究较多的北斗二号的B1I信号和研究较少的北斗三号的B1C信号。基于USRP对信号进行了发射,最终通过接收信号来验证仿真系统是否产生了可用的仿真信号,由此完成一套完整的仿真系统设计。