GPS L1信号捕获跟踪MATLAB仿真(终极版)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
GPS L1信号捕获跟踪MATLAB仿真(终极版)
- 前言
- 内容
- matlab程序
- 获取完整程序
前言
本节将介绍捕获跟踪MATLAB仿真完整版。
里面用到的捕获方法为短时相关+FFT捕获;
跟踪环路为锁频+锁相+码环;
该实现直接采用笔者《从零开始研发GPS接收机》系列中近期FPGA实现的参数,保持与FPGA设计的一致性。
例如中频:3.992e6,采样率:16.369MHz
MATLAB仿真中的的跟踪环中环路参数和环路结果、相关时间均与硬件实现保持一致。
《从零开始研发GPS接收机》记录了笔者实现一个硬件接收机的全过程,可通过公众号找到。。
内容
除了捕获算法 和跟踪算法外,该MATLAB还包含一些其他内容。
例如捕获门限的计算以及判定捕获成功
捕获结果如何设置跟踪的初始参数
等一些控制内容。该MATLB还可以用于验证一些跟踪环的理论知识。
接下来我们验证一下跟踪环对于频率阶跃激励(匀速运动)、频率斜升激励(加速度运动)、以及频率有加速度的频率斜变(加加速度)下的跟踪状态
1、信源包含20ms电文,初始多普勒频率为1000Hz,后续保持不变。这是一个频率阶跃激励。
相关值比较正常:
频率多普勒处于跟踪状态,如下图:
相对于载波多普勒的码多普勒为1000/1540,不到1Hz。
鉴相值位于0处,且比较稳定:
这个现象与谢钢的《GPS原理与接收机设计》书中P276中描述的 ”在频率阶跃激励下,二阶环路可以准确无误的跟踪频率阶跃信号“相吻合。
2、信源包含20ms电文,初始多普勒频率为1000Hz,包含一个斜升信号,该斜升信号1秒钟增加50Hz的多普勒。仿真8秒钟
相关值似乎没有受到斜升信号的影响:
频率多普勒处于跟踪状态,如下图。
码多普勒随着频率多普勒变化而变化。
但是载波鉴相值出现了偏差,位于0.5处,但并没有失锁,仍然稳定跟踪。
二阶环路虽然仍能跟踪信号,但它会产生一个恒定的相位跟踪误差“相吻合。想准确无误的跟踪需要三阶环,使用三阶环跟踪没有固定的相位误差。
3、信源包含20ms电文,初始多普勒频率为1000Hz,包含一个斜升信号以及频率存在加速度变化的信号
相关值随着锁相环失锁而恶化,最后相关值逐渐归为0
载波多普勒在跟踪了一段时间开始体力不支,跟不上频率变化的脚步。
码多普勒随着载波环失锁,也唇亡齿寒。
鉴相值随着误差的累积最后开始彻底摆烂。
二阶环已经完全不能适用于这类高动态的信号,只能使用三阶环了。使用三阶载波环后:
有这种运动姿态的东西,估计可能是马斯克的星舰了吧。希望马斯克下次发射星舰的时候告诉我一声能把我这个接收机带上测试一把。
matlab程序
程序中不包含三阶环路,二阶环绝大部分场景足矣。
% 作者:FPGA十年老鸟
% 不包含三阶环路
close all;clear all;clc;%% 信号源生成部分
SampleClk = 16.369e6;
SimTime = 8; %仿真时长8s
PointNum = SampleClk*SimTime; %仿真点数
PRNNUM = 1; %卫星PRN号IF = 3.996e6; %中频
Doppler(1:PointNum) = 1000; %频率阶跃%以下为付费程序
获取完整程序
见公众号
至此,整个捕获跟踪的仿真大部分内容基本阐述完毕。相信购买了笔者仿真程序的读者,对于整个捕获跟踪的如何具体运作的理解以坐缆车的速度至少跨越了N个山峰,特别是对于初学者节省时间可以以年来计算,毕竟自己折腾总是一个耗时耗力而且不一定能出结果的。但即便只是浏览仿真文章的读者,也能从文章信息中得到很多信息量和感悟,从原来比较枯燥的理论书籍到现在能看到实际仿真的图片,相信应该也能受益良多