文/田方礼 董立桥 王绪宁 王永超
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 码产生器由X
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;输出信号包括:四个序列的复位信号resetX
子模块P_code_gen 输入信号包括: 码钟code_clk, 卫星PRN 号prn, 四个序列的复位信号resetX1A、resetX1B、resetX2A、resetX2B, 三个序列的停止信号haltX1B、haltX
3.2 详细设计
(1)由pps 和Zcnt_wr 产生一个启动P码模块的信号startP,仅在Zcnt_wr 之后的第一个pps 处出现一次;startP 脉冲宽度为一个码钟。
(2)由启动信号startP 产生第一个X1起始信号headX1 脉冲和X1A 的复位信号resetX
(3) 定义两个计数器X1cnt4092( 计数范围1 ~ 4092) 和X1cnt3750( 计数范围1 ~ 3750),启动信号startP 初始化两个计数器为1,以码钟为驱动分别计X1A 码片数和X
(4) 定义一个X1cnt4093( 计数范围1 ~ 4093)计数器,用headX1 脉冲初始化计数器为1 清X1B 的暂停信号haltX1B,headX1脉冲产生时同时产生第一个X1B 的复位脉冲信号resetX1B, 然后只在X1cnt4093