提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
GPS跟踪环路MATLAB之——数字锁相环
- 前言
- 为什么要锁相环
- 科斯塔斯环
- 锁相环的一些基本概念
- 1、捕获、锁定与跟踪的概念
- 2、捕获时间和稳态相差
- 3、相位捕获和频率捕获
- 4、捕获带和同步带
- 5、最大频率阶跃范围
- 鉴相器
- 环路滤波器
- matlab程序
- 获取完整程序
前言
从事卫星导航基带处理的童鞋都知道,跟踪环路属于整个卫星导航信号处理中的精华之中的精华。接收机通过跟踪环在本地能够准确的复现接收到的信号的载波和伪码,是后续能够正确定位解算的关键步骤。整个跟踪环路将分成三小节,数字锁频环、数字锁相环和码环。其中数字锁频环和锁相环属于载波跟踪环。笔者所做的《从零开始研发GPS接收机》的工作中所使用的跟踪环路也将会在这里提到
《从零开始研发GPS接收机》记录了笔者实现一个硬件接收机的全过程,可通过公众号找到。
为什么要锁相环
导航信号在捕获成功之后,得到了粗略的多普勒频率值,加上中频IF,即可得到一个粗略的载波频率值。这个频率误差与真正的载波频率最高可能有一两百Hz的误差。如果捕获后频偏不大可直接使用锁相环,那么捕获需要更多资源提高精细度。如果捕获频偏有一两百Hz,最好还是先用锁频环牵引。但锁频环只能是频率的跟踪,无法进行相位的跟踪,如果不对相位进行跟踪,则无法得到正确的数据bit,无法进行接下来的位同步、帧同步、电文解算等流程。因此跟踪环最终还是需要锁相环才能同时准确的跟踪频率和相位。
科斯塔斯环
这里首先要介绍一下一个新的概念,科斯塔斯环。
科斯塔斯环是一种基于锁相环 (PLL) 的电路,用于从抑制载波调制信号(例如双边带抑制载波信号)和相位调制信号(例如 BPSK、QPSK)中恢复载波频率。它是由通用电气公司的 John P. Costas 在 1950 年代发明的。它的发明对现代数字通信产生了深远的影响。Costas 环的主要应用是无线接收器。与其他基于 PLL 的检测器相比,优势在于,在小偏差下,Costas 环路误差电压为,相比于其他PLL检测器的
,灵敏度翻倍,也使科斯塔斯环路特别适合跟踪多普勒频移载波。
基于科斯塔斯环结构的锁频环和锁相环的实现也比较类似,都是分成这几个部分
1、 鉴频器/鉴相器
2、 环路滤波器
3、 频率可变振荡器
锁相环的一些基本概念
1、捕获、锁定与跟踪的概念
(注意:这里的捕获、跟踪是相对于锁相环的捕获、跟踪)
捕获,是指从输入信号加到锁相环输入端开始开始,一直到环路达到锁定的全过程。
锁相环的锁定是指锁相环的输出频率等于输入频率,而输出信号的相位跟随输入信号的变化而变化。
跟踪是指锁相环锁定后的状态,一旦锁相环进入锁定状态,若输入信号产生了相位的变化,环路就调整压控振荡器的控制电压使得其输出信号的相位跟随输入信号的相位变化,即保持恒定的稳态相位差。这种状态称为跟踪或同步状态。
2、捕获时间和稳态相差
捕获时间是指捕获过程所需的时间。捕获时间的大小不仅与环路参数有关,而且与起始状态有关。
当环路进入同步状态之后,环内被控振荡器的振荡器频率已经等于输入信号的频率,两者之间只差一个固定的相位。这个相位差称为稳态相差。反过来说,若稳态相差为一个常数或等于0,则说明环路处于锁定状态。
3、相位捕获和频率捕获
“相位捕获”指在捕获过程中,相位没有经过2π的周期跳跃就能进入的锁定状态,即捕获过程小于一个2π周期的捕获过程称为相位捕获,又称快捕获。“频率捕获”指捕获经历一个以上的频率周期的捕获过程。即意味着环路的输入信号频率与输出信号频率在开始捕获前相差至少一个周期。一般来说,一个锁相环从捕获到锁定都要经历从频率捕获到相位捕获两个过程。
如下图的快捕范围就是快捕带,只有相位捕获,因此收敛较快,而除快捕范围的捕获带则首先要进行频率捕获,然后才是相位捕获。频率捕获相对来说是一个慢的过程,因此收敛较慢。
4、捕获带和同步带
捕获带是指保证环路必然进入锁定的最大固有频差值。换句话说,就是在保证环路不出现稳定的差拍状态所允许的最大固有频差值。
一旦环路进入锁定状态,系统就处于跟踪状态。随着输入信号的频率和相位的变化,环路应该始终能跟踪其变化,但一旦输入信号的频率与被控压控振荡器的自由振荡器频率相差太多,环路就会失去跟踪能力,这种状态称为“失锁”。
同步带是指系统保持同步的最大固有频差值
5、最大频率阶跃范围
描述PLL对于稳定工作状态的动态限制。环路初始处于锁定状态,当输入信号的频率发生阶跃变化的幅度在失锁带的范围之内,环路能够保持锁定。然而,当输入信号的频率发生阶跃变化的幅度超出失锁带的范围,环路不能保持锁定,输出信号无法跟踪输入参考信号。当然,通过缓慢的捕获过程,环路可再次入锁。
在跟踪环路中,如果有锁频环牵引,则可以快速进入快捕范围,实现稳定跟踪。
在跟踪环路正常运行过程中,一直处于快捕范围,此时频率和相位稳步的跟踪。如果突然有了频率的突变,且突变范围处于最大频率阶跃范围内,频率和相位跟踪不会丢失,也就是载波观测值不会出现跳周的情况。但突变范围进入了捕获范围,那么需要重新进入频率的捕获阶段,此时载波观测值的周期和相位将不再连续。
鉴相器
关于鉴相器介绍一下2种鉴相器:
鉴相器1:二象限反正切函数,
优点:最准确的鉴相方法,实际相位差异位于-90°至+90°的范围之内时,该鉴相器的工作保持线性,并且其输出的鉴相结果与信号幅值无关。
缺点:需要进行反正切求值,因而它也是计算量最大的一种。
鉴相器2:
优点:计算量小, 适合纯逻辑实现
缺点:鉴相近似准确,鉴相结果与正比,并且与信号幅值有关
优点:计算量小, 适合纯逻辑实现
缺点:鉴相近似准确,鉴相结果与图片成正比,并且与信号幅值有关
环路滤波器
二阶环路滤波器的结构如下图:
matlab程序
假设捕获之后初始的频率相差30Hz,在1s的时候频率突变10Hz,在2s的时候突变30Hz,在3s的时候突变100Hz,来理解快捕范围,频率阶跃、捕获带等这些概念。为了显示更加清楚,这里就不加码元信息了。
从频率跟踪图可以明显的看出。在一开始的时候相差30Hz,是处于捕获带,逐步调整频率,进入快捕带后就收敛很快,锁定了信号。在1s的时候,频率突变10Hz,环路仍然保持锁定,很快便调整到了正确的频率,因此10Hz属于最大阶跃范围内,2s的时候,频率突变30Hz,很明显的频率出现了震荡,这就是失锁了,但仍处于捕获带内,因此花了一点时间又重新锁定到正确的频率上,最后,频率突变100Hz,则直接跳出了捕获带之外,无法重新锁定了。
format long g;
clc;clear all;close all
SampleClk = 4.1e6;
PointNum = SampleClk*5;
IF = 1e6- 30 ;
Carr_cos(1:SampleClk) = cos(2*pi*(IF/SampleClk).*[1:SampleClk] + 0);
Carr_sin(1:SampleClk) = sin(2*pi*(IF/SampleClk).*[1:SampleClk] + 0);
IF = IF + 10;
Carr_cos(1+SampleClk:PointNum) = cos(2*pi*(IF/SampleClk).*[SampleClk+1:PointNum] + 0);
Carr_sin(1+SampleClk:PointNum) = sin(2*pi*(IF/SampleClk).*[SampleClk+1:PointNum] + 0);
IF = IF + 30;
Carr_cos(1+2*SampleClk:PointNum) = cos(2*pi*(IF/SampleClk).*[2*SampleClk+1:PointNum] + 0);
Carr_sin(1+2*SampleClk:PointNum) = sin(2*pi*(IF/SampleClk).*[2*SampleClk+1:PointNum] + 0);
IF = IF + 100;
Carr_cos(1+3*SampleClk:PointNum) = cos(2*pi*(IF/SampleClk).*[3*SampleClk+1:PointNum] + 0);
Carr_sin(1+3*SampleClk:PointNum) = sin(2*pi*(IF/SampleClk).*[3*SampleClk+1:PointNum] + 0);
%以下为付费程序
这是对应的IQ幅度图,可见在没有锁定的时候,I/Q不停的翻转,只有处于锁定状态,IQ幅值则稳定,有频率跳跃但处于最大跃阶范围时,IQ幅值很快就能恢复,当锁相环无法锁定时,IQ将永远翻转下去。
这是鉴相值图,但锁相环锁定时,鉴相值趋近于0。
获取完整程序
见公众号