GPS跟踪环路MATLAB之——数字锁相环
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
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。
获取完整程序
见公众号
相关文章:

GPS跟踪环路MATLAB之——数字锁相环
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 GPS跟踪环路MATLAB之——数字锁相环 前言为什么要锁相环科斯塔斯环锁相环的一些基本概念1、捕获、锁定与跟踪的概念2、捕获时间和稳态相差3、相位捕获和频率捕获4、捕获带和同…...
docker开发环境搭建-关于数据库的IP是什么
故事的背景是这样的: 我在本地的ubuntu系统上安装了docker,并创建了一个mysql容器,但是在使用DBeaver连接该数据库时,需要填写数据库的ip,填写127.0.0.1,工具提示找不到这个库,然后使用ip addr…...
loginApi
import request from "/utils/request"; import { AxiosPromise } from "axios"; import { CaptchaResult, LoginData, LoginResult } from "./types";/*** 登录API** param data {LoginData}* returns*/ export function loginApi(data: LoginD…...

【RAG检索增强生成】Ollama+AnythingLLM本地搭建RAG大模型私有知识库
目录 前言一、Ollama:革新性的本地LLM服务工具1.核心优势2.技术亮点 二、AnythingLLM 概览1.核心特性2.技术生态支持 三、搭建本地智能知识库1. Ollama的安装启航2. AnythingLLM的安装对接3. AnythingLLM的配置精调4. 工作区与文档管理5. 聊天与检索的智能交互 四、…...

【wiki知识库】08.添加用户登录功能--前端Vue部分修改
🍊 编程有易不绕弯,成长之路不孤单! 目录 🍊 编程有易不绕弯,成长之路不孤单! 一、今日目标 二、前端Vue模块的修改 2.1 the-header组件 2.2 store工具 2.3 router路由配置修改 一、今日目标 上篇文章…...

写给非机器学习人员的 embedding 入门
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...

Oracle【plsql编写九九乘法表】
九九乘法表 DECLAREi NUMBER : 1;j NUMBER : 1; BEGINFOR i IN 1 .. 9LOOPFOR j IN 1 .. iLOOPDBMS_OUTPUT.put (i || * || j || || i * j || );END LOOP;DBMS_OUTPUT.put_line ( );END LOOP; END;输出结果...

ansible安装K8s
部署Kubernetes (k8s) 集群使用Ansible是一个常见的自动化解决方案。下面我将提供一个基本的步骤概述和所需的命令,用于在CentOS 7.8上使用Ansible部署k8s集群,包括Master节点和Worker节点(Web和DB节点)。 步骤 1: 准备环境 确保所…...

restful传值
GetMapping 普通的get请求 后端: restfule的get请求 通过/asd/123这种方式get请求传入后端 前端 url: /system/role/deptTree/ roleId / tenantId, method: get后端PathVariable从path上取对应的值 通过 GetMapping(value "/deptTree/{roleId}/{tenan…...

Qt自定义TreeWidget,实现展开折叠按钮在右侧,且一条竖直线上对齐
效果如下: 图片随便找的,可能需要调下样式,代码复制可用,留给有需要的人。 #ifndef CustomTreeWidget_h__ #define CustomTreeWidget_h__#include <QTreeWidget> #include <QPushButton>class CCustomTreeWidget : p…...

硅步千里:如何入行?——之入行成为软件开发者
无论何时,你是否有遇到这样的场景(在自己从未涉足过的行业或领域,现在需要自己去这个行业或领域学习探索,最初的目标是熟悉行业,快速融入进去,很多时候,我们只是了解了个大概,并没能…...

Sandbox: rsync.samba(80134) deny(1) file-write-create
Xcode15运行报错:Sandbox: rsync.samba(80134) deny(1) file-write-create/xxx/xxx 如下图: 解决办法: Build Settings 搜索 sandbox,把 Build Options 中的 User Script Sandboxing改为 NO...

lvs的dr模式综合实践
目录 编辑虚拟机准备工作 编辑编辑编辑 配置过程 配置client主机 配置router主机 配置lvs主机(vip使用环回来创建) 配置server1主机(vip使用环回来创建) 配置server2主机(vip使用环回来创建࿰…...
什么是自然语言处理
自然语言处理(Natural Language Processing, NLP)是人工智能(AI)的一个子领域,涉及计算机与人类语言的交互。它的目标是让计算机能够理解、分析、生成和操作自然语言,从而实现与人类的有效沟通。 自然语言处…...
快速理解互联网中的常用名词
并发与并行 并发:任务交替执行,伪并行,涉及CPU时间片和上下文切换。并行:任务真正同时执行,需要多核处理器,无上下文切换。 并发量(Concurrency) 概念:服务端程序单位…...

统计接口调用耗时_黑白名单配置
黑名单配置 黑名单就是那些被禁止访问的URL创建自定义过滤器 BlackListUrlFilter,并配置黑名单地址列表blacklistUrl如果有其他需求,还可以实现自定义规则的过滤器来满足特定的过滤要求 /*** 黑名单过滤器** author canghe*/ Component public class B…...

树莓派4 AV没有视频输出
使用AV接口输出,没有画面 需要在config.txt文件中 增加配置 enable_tvout1config.txt 中的 dtoverlayvc4-kms-v3d 行末尾添加,composite: dtoverlayvc4-kms-v3d,composite默认情况下,输出 NTSC 复合视频。要选择不同的模式,请在…...

短信群发平台:解决短信验证码接收问题的5大策略
在享受数字化服务时,如APP注册或网站登录,若遇到短信验证码无法接收的困扰,无疑会增添不少烦恼。为了帮助您迅速解决这一问题,我们精心总结了以下十大原因及对应的解决方法,助您顺畅完成验证流程。 一、优化网络环境 …...
WebSocket 初体验:构建实时通信应用
WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行双向通信,从而实现低延迟的数据交换。WebSocket非常适合需要实时交互的应用场景,比如聊天应用、在线游戏、实时数据分析等。 WebSocket简介 什么是WebSocket…...

LISA: Reasoning Segmentation via Large Language Model
发表时间:CVPR 2024 论文链接:https://openaccess.thecvf.com/content/CVPR2024/papers/Lai_LISA_Reasoning_Segmentation_via_Large_Language_Model_CVPR_2024_paper.pdf 作者单位:CUHK Motivation:尽管感知系统近年来取得了显…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...

STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...