发明内容
本发明所要解决的技术问题在实现北斗替换GPS的过程中所出现的因GPS接收机与外围其他设备耦合在一起而直接用BD2接收机代替GPS接收机的问题,提供一种基于北斗卫星信号转GPS模拟信号方法与系统。
为解决上述问题,本发明是通过以下技术方案实现的:
一种基于北斗卫星信号转GPS模拟信号方法,包括如下步骤:
步骤1,接收到北斗卫星信号,北斗卫星信号经下变频和模数转换后送入基带信号处理;
步骤2,在基带信号处理过程中,先对信号进行捕获,当同时跟踪四颗或四颗以上的卫星信号时,方可进行PVT解算;捕获成功的可见星信号将继续在进行持续的跟踪,并获得北斗码NCO、北斗载波NCO和北斗导航电文;
步骤3,在实时时钟控制下,将北斗码NCO、北斗载波NCO和北斗导航电文转换为GPS码NCO,GPS载波NCO和GPS导航电文,并生成GPS信号;
步骤4,在实时时钟控制下,完成GPS信号的扩频和载波调制,生成GPS数字中频信号;
步骤5,GPS数字中频信号经数模转换和上变频后,变为射频模拟信号向外发出。
上述步骤2中,在进行PVT解算的过程中,还进一步包括计算出本地时钟与系统时间之差,并使用计算出的钟差修正本地时间,实现本地时间与导航系统时间保持一致的步骤。
上述步骤3中,在进行北斗码NCO和北斗载波NCO转换为GPS码NCO,GPS载波NCO的过程中,还进一步包括对数据进行闭环实时校正的步骤。
上述步骤3中,在生成GPS信号的过程中,还进一步包括生成C/A码的步骤,且该C/A码需要同时满足以下3个条件,即
①根据接收到的北斗卫星号选定GPS卫星号产生所对应的C/A码序列,并有换星功能;
②能对接收到的北斗一个C/A码历元周期中的C/A码基码序列号,C/A码基码的码片相位对应转化为GPS一个C/A基码序列号和基码的码;
③GPS的C/A基码速率跟北斗C/A基码速率的比例关系是1:2,而且,生成的GPS的C/A基码速率包含了卫星和接收机载体的相对运动带来的多普勒频率的影响。
上述步骤4中,对GPS信号进行的是BPSK调制。
基于上述方法而设计的一种基于北斗卫星信号转GPS模拟信号系统,其包括北斗信号接收单元和GPS信号模拟单元。北斗信号接收单元主要由下变频模块、模数转换模块、基带信号处理模块和PVT解算模块组成。GPS信号模拟单元主要由导航电文编码模块、码和载波NCO模块、信号调制模块、数模转换模块和上变频模块组成。下变频模块的输出端经模数转换模块与基带信号处理模块的输入端相连;基带信号处理模块的输出端分为2路,一路经PVT解算模块连接导航电文编码模块,另一路直接连接码和载波NCO模块;导航电文编码模块和码和载波NCO模块的输出端均与信号调制模块相连,信号调制模块的输出端经数模转换模块连接上变频模块的输入端。
所述北斗信号接收单元还进一步包括钟差修正单元,该钟差修正单元的输入端与PVT解算模块相连,输出端与基带信号处理模块相连。
所述上变频模块的输出端为电缆或天线。
与现有技术相比,本发明利用北斗卫星信号,实现现有GPS接收机的PVT解算,虽然GPS接收机中的PVT解算过程采用的卫星虽然码编号是GPS卫星,但是实际上利用的是北斗卫星,PVT精度跟传统的北斗接收机PVT精度相当。这样无需替换现有各行业中的设备(包括GPS接收机)便能够实现GPS向北斗的过渡转换,因而能够大为降低设备的替换难度,进而有效提升了通信的安全性和可靠性。
具体实施方式
一种基于北斗卫星信号转GPS模拟信号方法,如图1所示,包括如下步骤:
步骤1,接收到北斗卫星信号,北斗卫星信号经下变频和模数转换后送入基带信号处理。
步骤2,在基带信号处理过程中,先对信号进行捕获,当同时跟踪四颗或四颗以上的卫星信号时,方可进行PVT解算。捕获成功的可见星信号将继续在进行持续的跟踪,并获得北斗码NCO、北斗载波NCO和北斗导航电文。在进行PVT解算的过程中,还进一步包括计算出本地时钟与系统时间之差,并使用计算出的钟差修正本地时间,实现本地时间与导航系统时间保持一致的步骤。
步骤3,在实时时钟控制下,将北斗码NCO、北斗载波NCO和北斗导航电文转换为GPS码NCO,GPS载波NCO和GPS导航电文,并生成GPS信号。
在生成GPS信号的过程中,还进一步包括生成C/A码的步骤,且该C/A码需要同时满足以下3个条件,即
①根据接收到的北斗卫星号选定GPS卫星号产生所对应的C/A码序列,并有换星功能。
②能对接收到的北斗一个C/A码历元周期中的C/A码基码序列号,C/A码基码的码片相位对应转化为GPS一个C/A基码序列号和基码的码。
③GPS的C/A基码速率跟北斗C/A基码速率的比例关系是1:2,而且,生成的GPS的C/A基码速率包含了卫星和接收机载体的相对运动带来的多普勒频率的影响。
在进行北斗码NCO和北斗载波NCO转换为GPS码NCO,GPS载波NCO的过程中,还进一步包括对数据进行闭环实时校正的步骤。
步骤4,在实时时钟控制下,完成GPS信号的扩频和载波调制,生成GPS数字中频信号。其中对GPS信号进行的是BPSK调制。
步骤5,GPS数字中频信号经数模转换和上变频后,变为射频模拟信号向外发出。
基于上述方法而设计的一种基于北斗卫星信号转GPS模拟信号系统,如图2所示,其包括北斗信号接收单元和GPS信号模拟单元。北斗信号接收单元主要由下变频模块、模数转换模块、钟差修正单元、基带信号处理模块和PVT解算模块组成,参见图3。GPS信号模拟单元主要由导航电文编码模块、码和载波NCO模块、信号调制模块、数模转换模块和上变频模块组成。下变频模块的输入端与北斗卫星相连。下变频模块的输出端经模数转换模块与基带信号处理模块的输入端相连。该钟差修正单元的输入端与PVT解算模块相连,输出端与基带信号处理模块相连。基带信号处理模块的输出端分为2路,一路经PVT解算模块连接导航电文编码模块,另一路直接连接码和载波NCO模块。导航电文编码模块和码和载波NCO模块的输出端均与信号调制模块相连,信号调制模块的输出端经数模转换模块连接上变频模块的输入端。上变频模块的输出端通过电缆或天线与外部GPS接收机相连。
基于DSP+FPGA平台,接收北斗信号,经下变频、基带信号处理、电文解码、伪距提取实现北斗PVT解算;根据北斗接收机跟踪的码NCO,码相位,载波NCO和导航电文,生成GPS信号,包括C/A码、导航电文和载波,并在RTC控制下,完成GPS的扩频和载波调制,生成GPS中频信号;GPS中频信号经上变频模块变为射频模拟信号,该射频模拟信号可以通过电缆或天线发射出去给GPS接收机,完成GPS高精度PVT解算。
具体实现步骤:
(1)硬件平台:基于DSP+FPG的硬件平台,DSP芯片选用的是TI公司的TMS320C6713浮点型芯片;FPGA芯片选用的是ALTERA公司的Cyclone IIEP2C70F672芯片。其中,FPGA主要是北斗信号的捕获和跟踪,GPS的CA码NCO产生、载波NCO生成和信号调制;DSP主要实现北斗信号的捕获和跟踪机制控制,位同步、帧同步、电文解调、伪距提取和PVT解算,GPS电文编码、时间信息提取、调制电文开始标志位和通道开标志等功能。
(2)北斗信号接收:接收北斗信号,首先经下变频和AD后进行基带信号处理,主要包括信号的捕获、跟踪、电文解调、伪距和时间提取、PVT解算。
(3)GPS信号产生:接收北斗码NCO、载波NCO、北斗导航电文,在RTC控制下,转换为GPS的码NCO、载波NCO和GPS导航电文,并进行BPSK调制,生成GPS数字中频信号,经D/A转换得到GPS模拟中频信号。上变频模块接收模拟中频信号,实现上变频。
(4)DSP和FPGA通信:DSP提取北斗信号载波整周数、时间观测量、定位解算结果、时标志位等传给FPGA,控制FPGA信号调制的起点。
以下对本发明各功能的实现过程进行进一步详细说明:
1)北斗卫星信号接收处理模块
接收北斗卫星信号,信号首先经射频模块、基带信号处理和PVT解算,。导航卫星信号到达地面之后,经接收设备天线接收送入射频模块;射频模块对输入信号进行放大、混频、滤波和模数转换后输出数字信号至基带处理模块;基带处理模块首先对信号进行捕获,捕获成功的可见星信号将会继续在本模块中进行持续的跟踪;当同时跟踪四颗或四颗以上的卫星信号,方可进行PVT解算,同时计算出本地时钟与系统时间之差,即接收机钟差;在授时模块中使用钟差修正本地时间,实现本地时间与导航系统时间保持一致。
基带信号处理模块主要分为信号捕获和信号跟踪两个部分。信号捕获中采用的最重要的算法为并行码相位捕获方法,该算法可以通过一次FFT和IFFT计算完成1023次伪码相关,从而找到码相位的起始点,减少了捕获时间。然后通过比较最大相关值的峰值与噪底的大小确定是否通过捕获门限,通过门限则捕获成功,否则继续捕获。信号跟踪部分的主要功能是始终保持本地复制的载波和伪码信号对卫星导航信号的跟踪。载波信号跟踪应用了二阶锁频环辅助三阶锁相环路,该环路可以兼顾卫星信号的动态性和环路的低噪性能,充分发挥锁频环牢固锁定信号和锁相环精确跟踪信号的能力。
伪码跟踪环路使用延迟锁定环路(DLL),即产生三路相位依次不同的伪码信号,借助于伪码良好的自相关性和互相关性,精确确定卫星信号的伪码相位,并时刻进行反馈。如果伪码跟踪环路只复制一路伪码信号,伪码相关结果无从进行比较,无法确定当前接收设备对卫星信号中的伪码跟踪是不是完全保持一致。因此,伪码跟踪环路一般生成三路伪码信号,分别称为超前码(Early)、即时码(Prompt)、滞后码(Late),其中超前码的相位超前即时码的相位,滞后码的相位滞后即时码的相位,即时码的相位可认为是与卫星信号中的伪码相位是对齐的。
当信号跟踪成功之后,伪码跟踪环路通过伪码鉴相和载波鉴相,时刻保持着对卫星信号的跟踪,此时本地产生的码NCO和载波NCO与北斗卫星信号中的伪码和载波是对齐的。对跟踪信号进行解码,获得北斗导航电文,即卫星号、卫星健康标志、卫星有效标志和星历参数。这些数据在RTC控制下,实时传到GPS信号同步产生模块。
2)GPS信号同步产生模块
接收北斗码NCO、载波NCO、北斗导航电文,在RTC控制下,转换为GPS的码NCO、载波NCO和GPS导航电文,并进行BPSK调制,生成GPS数字中频信号,经D/A转换得到GPS模拟中频信号。上变频模块接收模拟中频信号,实现上变频。
GPS同步产生的信号为:
式中,i是卫星号;是信号强度;x(i)(t)是i号卫星对应的C/A码;Di(t)是数据码电平值(导航电文);fi是GPS L1信号载波频率是1575.42MHz;θ1载波相位初始相位。
根据GPS L1信号体制,生成L1信号包括C/A码、导航电文、载波三个部分。电文编写和电文调制时序关系如图4所示:
与传统卫星信号生成不同,GPS码NCO和载波NCO不是依靠内部时钟生成的,而是由接收到的北斗码NCO和载波NCO按照码速率和载波速率,按比例生成的。导航电文也不再是传统意义上的GPS导航电文,而是由北斗卫星的导航电文转化而来。其调制过程跟GPS信号调制过程相同。
在卫星信号仿真中,对于生成的C/A码有三点要求:①根据接收到的北斗卫星号选定GPS卫星号产生所对应的C/A码序列,并有换星功能。②能对接收到的北斗一个C/A码历元周期中的C/A码基码序列号(GPS为1~1023,BD2为1~2046)、C/A码基码的码片相位对应转化为GPS一个C/A基码序列号和基码的码。③GPS的C/A基码速率跟北斗C/A基码速率的比例关系是1:2,而且,生成的GPS的C/A基码速率包含了卫星和接收机载体的相对运动带来的多普勒频率的影响。
卫星信号产生的每一个通道可以实时产生GPS卫星信号因为不同位置、时间的接收机载体观测到的北斗卫星星号是不同的,而且随时间而变化。这就要求设备的每一个通道都有选星、换星的功能。
GPS卫星信号的发射时刻可以用北斗卫星导航电文的子帧号、子帧中字的序列号、字中位的序列号、位中伪随机码历元周期的序列号、伪随机码历元周期中的码基码序列号、伪码基码的码片相位来表示。导航电文的子帧、字、位都和伪码基码有严格的同步关系。所以在仿真过程中,有必要对伪码基码序列号、伪码基码的码片相位进行初始设置和控制。对伪码基码序列号的控制可以通过对两个移位寄存器G1和G2的值进行预置来实现。伪码基码的码片相位和基码速率的设置和控制可以通过码NCO(采用直接数字频率合成技术)来实现,改变码NCO的频率控制字就可以改变基码速率,码NCO的相位对应C/A码基码的码片相位。
码NCO的实现有几种方式,主要考虑如何能够快速实现。码相位受到初相,自然速率(GPS为1.023MHz)和多普勒的影响。为了防止溢出的影响,FPGA处理过程中中将码NCO定义为32bit的无符号整数寄存器。因此它总共有232个状态,一个完整的CA码周期是1ms,因此这个码NCO的分辨率就是0.23ps。伪码NCO实现如图5所示。
相对于码NCO,载波NCO的实现相对可以更简单些,如图6所示,因为没有码周期是1023个码元的限制,最终输出的结果是直接映射的余弦和正弦的相位值。载波NCO的状态字总数设计为2的幂次,虽然由于载波的波长较短,NCO状态字总数的幂次可以不用太高,例如210,对应距离分辨率为:19cm/1000=0.2mm。但是在FPGA的处理流程中,由于是实时输出,无需存储结果,也没有速度上的限制,处理一个状态字总数为210和232的NCO所占用资源是相差无几的,所以仍然采取了232总状态字的载波NCO,这样距离分辨率在理论上可以达到19cm/232=0.0044mm。载波NCO输出的状态对应也有232种。
码NCO和载波NCO的直接输出结果是其累加值。对于码NCO,溢出一次代表着C/A码前进一个码片。对于载波NCO,需要将其输出的累加值映射到同向(余弦)和正交(正弦)两路。
若载波NCO的累加器宽度位数是固定的,则360°的相位平面分割输出也是固定的。当累加器位数是J时,360°的相位平面会被分为2J=K个相位点。
FPGA内的设计中,调用了一个Sin-Cos查找表的IP核实现了NCO输出到正余弦输出的映射。该查找表的输入和输出位宽可调,并可选择输出是无符号还是有符号类型,可同时输出正弦和余弦两路信号。应用时选择输入为20位,而载波NCO的输出是32位,截取其高20位输入到查找表。
在一个特定的时刻,从查找表输出特定的正弦和余弦输出值,该值与该时刻的码状态相乘(1或-1),得到调制后的信号。某个特定时刻的码状态是由该时刻的导航电文码(1或-1)和C/A码(1或-1)相乘得到。其中导航电文码由DSP送入FPGA,C/A码由FPGA内部生成。FPGA工作是28通道并行处理。
查找表的输出位数及类型主要是按照DA芯片的参数来设定。设计中采用的AD9744,要求输入位16位,这样查找表的输出应设位13位,28个通道的相加结果为16位。
信号产生过程,随着时间的推移和控制字量化误差,码NCO和载波NCO的累加模拟将产生一定误差。对于高动态信号模拟来讲,该误差会迅速累积,并对模拟精度带来较大误差。因此设计了FPGA---DSP间的数据闭环实时校正。具体原理和过程如下:
①FPGA根据历元计数器生成实时的NCO累加值,码片相位值、码周期计数值和导航电文比特计数值,存入固定的寄存器组中。
②每次系统中断来临时,作为回传数据将上述寄存器中的数据通过总线发送至DSP。
③DSP内部对当前模拟时间进行独立的计算,同时将时间分解成导航电文计数、ms计数、码片计数和码相位,与FPGA回传数据一一对应。
④比较FPGA和DSP响对应的计数器和码相位,若二者之间的误差达到了一定值,则校正该误差,微调下次中断发送的码NCO和载波NCO频率字。
3)北斗导航电文同步转GPS导航电文
导航电文编写主要是实现了在RTC的控制下,延迟时间值的毫秒数来把电文的有用信息调制在C/A码和载波上去,以模拟实时的卫星信号。导航电文编写工作在DSP中进行,控制变量是星历有效标志位,卫星健康标志位。北斗导航电文和GPS导航电文的星历参数,大多数相同,部分不相同的只是在导航电文中占用的位数不同,转换过程通过参数仿真,确定精度范围和影响。根据北斗输入卫星号及该卫星对应的星历参数,按照IS-GPS-200D导航电文帧格式进行电文编码,并将电文发给FPGA。
编电文前,通道第一次跟踪上卫星,而且星历有效,卫星健康时,DSP中断5向FPGA发送开模拟器通道标志位和启动电文调制延迟量。
每个子帧的10个字校验通过后,进行电文解调,解得前3个子帧的星历参数,即导航电文解调到PAGE1的a点(如图7所示),我们定义a点为星历有效时间。因为每个子帧的长度是30秒,a点周内时对30取模,所以此时应该取30模为18;同时卫星星历有效标志位置有效为1。
判断星历中解得的卫星健康标志位是否为0(0卫星健康,非0不健康)。编写导航电文的第一子帧电文时,星历有效、卫星健康、卫星处于跟踪状态,且满足(int)本地时间=星历有效时间+9,开始编写第一子帧电文。
从第2子帧开始,按照
的逻辑编写电文,如图7所示。
4)GPS信号调制
得到C/A码、载波和导航电文后,组成信号的3个部分已经全部产生了,调制模块的工作就是在正确的时间,也就是编电文的电文时间,启动调制。这个时刻C/A码初始相位和导航电文起始沿是对齐的对齐的,乘上载波得到数字中频信号,如图8所示。D/A变换后输出模拟中频信号,在经过图上变频模块,得到了GPS L1射频信号。
5)硬件平台
基于DSP+FPG的硬件平台,DSP芯片选用的是TI公司的TMS320C6713浮点型芯片;FPGA芯片选用的是ALTERA公司的Cyclone II EP2C70F672芯片。其中,FPGA主要是北斗信号的捕获和跟踪,GPS的CA码NCO产生、载波NCO生成和信号调制;DSP主要实现北斗信号的捕获和跟踪机制控制,位同步、帧同步、电文解调、伪距提取和PVT解算,GPS电文编码、时间信息提取、调制电文开始标志位和通道开标志等功能。如图9所示。
如果当前通道卫星处于稳定跟踪状态,接收机完成位同步和帧同步后,获得本地时间初始值,组帧得到每个子帧的10个字,10个字都校验通过,解调当前子帧;当第1、2、3子帧电文都解调完成时,星历为有效状态,星历有效时间如图4中卫星信号时间(t1)。星历有效时间是卫星在这个时刻的周内时,为整秒,对30取模有MOD(t1,30)=18。DSP在开始时刻+9时刻编写第1子帧导航电文,从示意图4可以知道,若忽略DSP编程处理时间,编电文时间距离电文开始时间提前3秒钟,也就是说导航电文在启动调制前3秒就将电文编好并发给FPGA。
编写完第一子帧6秒后的开始编写第2子帧电文;再6秒钟后编写第3子帧电文……,依次编完电文。卫星星历有效且卫星健康的状态下,信号是连续的。
编完导航电文,DSP需要通知FPGA启动信号调制,卫星发射时刻的时间计数,是通过电文比特计数(20ms)、C/A码整周期计数(1ms)、整数码片数和小数码片数(码相位)得到。因此卫星发射时刻距离启动电文调制的时刻的时间量是全部上述计数的累加值。FPGA收到该累加值后,通过C/A码周期进行倒计时,每个周期递减1ms。当累加值计数值为0时,此时C/A码码相位为0,相位和导航电文比特起始沿对齐,如下图10所示。
启动电文调制时刻,C/A码初始相位为0,并且跟导航电文起始沿对齐,生成导航电文和C/A码,载波NCO值通过DSP跟踪环路计算得到,并传给FPGA,产生20.42MHz的中频载波,调制载波得到数字中频信号。D/A转换后,经过上变频模块,生成载波为1575.42MHz的GPS L1信号。
本发明主要通过Verilog和C语言实现,前者对应FPGA芯片,后者对应DSP芯片。DSP通过接收机解调的星历重新编写GPS导航电文,另外给FPGA发送开通道和关通道标志位、启动电文调制标志位。并完成相应的运算。需要指出的是,编程时,所有和模拟器相关的变量以及标志位,都必须按照通道来进行,而且当某个通道的卫星从有效状态变为无效状态时,所有相关变量应进行初始化。变量及标志位说明将在后面的子模块中进行详细说明。FPGA的工作是生成C/A码、载波,完成信号的调制;实现GPS中频信号数模转换,并完成与上位机通讯工作。
6)DSP和FPGA通信
DSP和FPGA之间的通信是通过中断完成的。
C67x系列DSP核支持16个优先级的中断,其中优先级最高的是INT_00(RESET中断),优先级别最低的是INT_15(中断15)。前4个中断是固定的而且是不可屏蔽中断。中断4-中断15是可屏蔽中断。其中,中断4-中断5的中断源可以通过对MUXL和MUXH寄存器编程。
本发明中,信号接收机处理部分采用中断4,其中断控制寄存器值是00100,信号生成部分采用中断5,其中断控制寄存器值是00101。
DSP外部中断5与FPGA的硬件连接中,EXTINT5和IO_VBN3_C6这个IO口实现了硬连接,即DSP外部中断5电平值变换是通过Dsp_0p4ms_interrupt变化来实现的。工作过程:在62MHz的工作频率下,从0计数到30999,即31000*(1/62000000)S=0.5ms。也就是说int_pulse_0p4ms的值每0.5ms电平反转一次,即Dsp_0p4ms_interrupt每0.5ms一次有效,这就实现了0.5ms中断。
状态控制寄存器有两位用于中断控制,分别是GIE和PGIE。GIE是全局中断使能位(bit0),GIE可以使能或者禁止所有可屏蔽中断。GIE是全局中断控制位:GIE=1,开全局中断;GIE=0,关全局中断。
中断使能寄存器包含了32个中断源,其中中断31~中断16,这16个中断是系统保留的,用户不能使用。本项目程序拟采用外部中断4和外部中断5,因此需要将外部中断4和外部中断5对应的中断源控制位置1,也就是使IE5=1,IE4=1。
外部中断5的0.5ms是信号接收处理的基准时间,10ms提取载波整周数、1秒提取时间观测量以及1秒进行一次定位解算这些计时标志位都是通过中断5实现的。信号产生模块计算卫星发射时间、星历有效时间、电文起始时间、开始调制电文的延迟量都是在中断5中进行的。另外也通过中断5向FPGA发送调制电文延迟量、开始调制电文标志位和开通道标志位。其程序流程如图11。