GPSL1卫星导航模拟器P码产生设计与实现

时间:2022-04-23 02:47:14

GPSL1卫星导航模拟器P码产生设计与实现

摘 要

GPS L1卫星导航模拟器需要产生P码,本文从信号产生的角度,介绍了P码的产生原理,给出了一种适用于GPS卫星导航模拟器的P码产生实现方式,并详细描述了FPGA实现P码产生的过程,然后用GPS接收机进行了接收验证,证明了设计的P码产生程序的正确性,这说明用FPGA可以根据Z计数能够实现任意时刻的任意卫星P码的产生,对模拟器的设计很有意义。

【关键词】P码 模拟器 GPS FPGA

1 前言

文献[1][2]根据接收机的捕获和跟踪需要对P码的产生做了研究和设计,本文从信号产生的角度,根据导航模拟器信号产生的需求,对P码产生的实现进行了研究和试验,为P码接收机实验室条件下的开发、测试和验证提供了重复性和边界条件测试手段。卫星导航模拟器由数据仿真和信号产生两部分构成。信号产生根据数据仿真下发的Z计数产生相应时刻的P码。

2 P码产生原理

P码产生器由X1A、X1B、X2A和X2B四个12位的线性反馈移位寄存器构成;X1A和X2A截短序列4092码片;X1B和X2B截短序列4093码片;X1A序列循环3750次即完成一次X1序列周期;此时X1B循环了3749次,当X1B完成3749次循环停止移位等待X1A完成3750次循环后产生信号对X1A和X1B移位寄存器重新初始化;X1A的输出与X2B的输出进行异或产生X1序列。X2序列产生与X1类似,区别是,每次X2A序列完成3750次循环后再等待37个时钟才重新初始化X2A和X2B移位寄存器;形成X2与X1的相对运动;X1A始终保持4092码片循环,X1B、X2A和X2B是参照其进行的;X2输出结果送给一个移位寄存器,延迟卫星PRN号的码片数,然后与X1异或产生P码。

3 P码产生的FPGA设计

3.1 模块划分

P码产生程序由顶层模块和两个子模块构成。顶层模块为Pcode如图1所示,输入信号包括:码钟code_clk,秒脉冲信号pps,Z计数Zcnt_in,Z计数写信号Zcnt_wr和卫星PRN号prn;输出信号为P码P_code。两个子模块为P_gen_ctrl和P_code_gen,如图2所示。

子模块P_gen_ctrl输入信号包括:码钟code_clk,秒脉冲信号pps,Z计数Zcnt_in和Z计数写信号Zcnt_wr;输出信号包括:四个序列的复位信号resetX1A、resetX1B、resetX2A、resetX2B,三个序列的停止信号haltX1B、haltX2A和haltX2B,X1和X2序列的起始信号headX1和headX2。

子模块P_code_gen输入信号包括:码钟code_clk,卫星PRN号prn,四个序列的复位信号resetX1A、resetX1B、resetX2A、resetX2B,三个序列的停止信号haltX1B、haltX2A和haltX2B;输出信号为P码P_code。

3.2 详细设计

(1)由pps和Zcnt_wr产生一个启动P码模块的信号startP,仅在Zcnt_wr之后的第一个pps处出现一次;startP脉冲宽度为一个码钟。

(2)由启动信号startP产生第一个X1起始信号headX1脉冲和X1A的复位信号resetX1A脉冲,并将输入的Z计数赋给Zcnt(计数范围0~403199)。

(3)定义两个计数器X1cnt4092(计数范围1~4092)和X1cnt3750(计数范围1~3750),启动信号startP初始化两个计数器为1,以码钟为驱动分别计X1A码片数和X1A循环次数,每当X1cnt4092计满4092后产生一次resetX1A同时X1cnt3750加1,当X1cnt3750计满3750后产生一次headX1,同时Z计数器Zcnt加1;当Zcnt计满403199后再从零开始计数。

(4)定义一个X1cnt4093(计数范围1~4093)计数器,用headX1脉冲初始化计数器为1清X1B的暂停信号haltX1B,headX1脉冲产生时同时产生第一个X1B的复位脉冲信号resetX1B,然后只在X1cnt4093计满4093后产生一次resetX1B,在X1cnt3750计满3750后产生一次haltX1B脉冲信号。

(5)在X1起始脉冲信号headX1延迟37×Zcnt个码钟后产生X2起始脉冲信号headX2。

(6)当码钟采到headX2脉冲时置位第一个resetX2A,同时初始化X2cnt4092(计数范围1~4092)和X2cnt3750(计数范围1~3750)计数器为1。

(7)在码钟驱动下X2cnt4092循环从1计到4092,计满4092后X2cnt3750加1,当X2cnt3750计满3750后haltX2A置位,只在X2cnt4092计满4092后产生一次resetX2A。

(8)当码钟采到headX2脉冲时置位第一个resetX2B,同时初始化X2cnt4093计数器为1。

(9)在码钟驱动下X2cnt4093循环从1计到4093,只在计满4093后产生一次resetX2B脉冲信号,在X2cnt3750计满3750后产生一次haltX2B脉冲信号。

(10)headX1脉冲信号与haltX1B的下降沿对齐,脉冲信号resetX1A和resetX1B对齐,相对headX1延迟一个码钟;headX2脉冲信号与haltX2A、haltX2B的下降沿对齐,脉冲信号resetX2A和resetX2B对齐,相对headX2延迟一个码钟。

(11)根据X1A\X1B\X2A\X2B多项式和初相产生伪码;当复位脉冲有效时置初相,然后当halt无效时在码钟的驱动下通过移位寄存器产生伪码,当halt信号有效时停止移位。

(12)将X1A与X1B序列模2加产生X1序列,同样的X2A与X2B序列模2加产生X2序列。

(13)根据输入卫星号PRN,将X2序列延迟prn个码钟后再与X1模2加产生P码。

4 实验验证

本设计的P码产生器可以产生任意Z计数时的P码,如图3所示的在线仿真图片给出的是Z计数为1时子模块P_gen_ctrl各输出信号的关系,此时headX1和headX2相差37个码钟。图4所示的阴影部分为1号卫星P码输出,可以看到输出的前12bit为4444O,与GPS接口控制文件给出的是一致的。用GPS接收机进行了接收验证,如图5所示,这说明本设计所产生的P码是正确的。

5 结束语

本文用FPGA实现了卫星导航模拟器所需的任意Z计数时的P码产生,并进行了编码和在线仿真,验证了本设计的正确性。为卫星导航模拟器GPS L1P L2P信号的产生提供了基础,对研究P码接收机提供了测试保障。

参考文献

[1] 曹进,李荣冰,徐昭等.GPS P码接收机本地信号发生器的FPGA实现[J].系统仿真技术,2013(9):104-108.

[2] 刘博,黄显高.GPS P码产生器的模拟与相关特性分析[J].全球定位系统,2008(1):39-41,45.

[3] Elliott D.Kaplan,Christopher J. Hegarty 主编,寇艳红译.GPS原理与应用(第二版)[M].北京:电子工业出版社,2007.

作者单位

中国电子科技集团公司第五十四研究所 河北省石家庄市 050081

上一篇:浅析武术套路攻防技击特点 下一篇:分析当前电气工程及其自动化的发展