当前位置: 首页 > news >正文

锁相环 vivado FPGA

原理

  1. 同步状态/跟踪状态:相位差在2kπ附近,频率差为0
  2. 到达上述状态的过程称为捕获过程
  3. 锁相环的捕获带:delta w的最大值,大于这个值的话就不能捕获
  4. 鉴相器(PD-phase discriminator):相乘加LPF,相差提取到电压函数sin的相位中
  5. LF(Loop Filter):对PD产生的电压函数进行变换
  6. VCO:将电压信息转移到瞬时频率上,与电压是一次函数关系(但是输入电压范围有限,才保持线性)
  7. VCO反馈给PD:PD要的是相位,也就是瞬时频率的积分。最终VCO反馈的是LF输出电压的积分,也就是输入相差的积分。(PID中I的意思)
  8. 准同步,相差较小时(+30度时,误差5%以内),LF输出值正比于相差

LF原理与FPGA实现

模拟LF

在这里插入图片描述
RC/无源比例/有源比例(常用)

  1. 有源比例传递函数
    在这里插入图片描述
  2. 以tau表示的传递函数,从上到下分别是:电压传递/开环相位传递/闭环相位误差/闭环相位传递,具体含义如图:
    请添加图片描述

在这里插入图片描述
表格中,理想积分指的是有源比例,对应电路©其中tau的公式如下:
τ 1 = ( R 1 + A R 1 + R 2 ) C \tau_{1}=\left(R_{1}+A R_{1}+R_{2}\right) C τ1=(R1+AR1+R2)C τ 2 = R 2 C \quad \tau_{2}=R_{2} C τ2=R2C
A是运放的开环增益。
这样带来的问题是,数字滤波器中这些电路参量的意义不明,故引入 ω n 振荡器中心频率 , ξ 阻尼系数,通常取 1 2 \omega _{n}振荡器中心频率 ,\xi阻尼系数,通常取\frac{1}{\sqrt2} ωn振荡器中心频率,ξ阻尼系数,通常取2 1
以下是转换变量后的传递函数
在这里插入图片描述

至此的问题

  1. ω n 怎么定 \omega_{n}怎么定 ωn怎么定
  2. s怎么定
  3. 知道H后filter怎么设计

——2.答:双线性变换变成z式子,就有了离散的F(z)
s = 2 T 1 − z − 1 1 + z − 1 s=\frac{2}{T} \frac{1-z^{-1}}{1+z^{-1}} s=T21+z11z1
z = 1 + T 2 s 1 − T 2 s z=\frac{1+\frac{T}{2} s}{1-\frac{T}{2} s} z=12Ts1+2Ts
代入\tau式后如下图,得到C的tau\T表达式
在这里插入图片描述
信号流图画法参考下图例子:
在这里插入图片描述
流图如下:
在这里插入图片描述
C的omega\xi表达式:
在这里插入图片描述
系统稳定的条件:
在这里插入图片描述
锁相环的性能参数:

  • 快捕时间:
  • 概念:理想二阶锁相环的捕获全过程包含频率捕获相位捕获两个过程,通常又把保证锁相环只有相位捕获一个过程的最大固有频差称为快捕带,频率捕获过程所需要的时间称为频率捕获时间,相位捕获过程所需要的时间称为快捕时间通常频率捕获时间远大于相位捕获时间,所以通常所说的捕获时间都是指频率捕获时间,而不考虑相位捕获时间的影响。但在频率捕获时间很短或要求快速相位捕获的情况下,计算相位捕获时间也是必要的。
  • 计算:
    在这里插入图片描述
    问题:快捕带应当有什么要求?

当前使用的C1/C2计算方法:

用C的tau表达式
在这里插入图片描述
加上xi的固定取值
在这里插入图片描述
加上下面这个LF截止频率的式子,确定fc后,即可解出tau1/2,带入C1/C2,即可得到LF式子
在这里插入图片描述
下一步就是弄清楚上面这个fc公式的含义

环路滤波器fc公式理解

LF是一个低通滤波器,其波特图示例如下图:
在这里插入图片描述
IIR滤波器不具有线性相位,但是同样的幅频条件下所需的阶数小很多。下面是这个低通滤波截止频率的计算过程,源头是有源比例积分滤波器的传递函数(也叫理想积分滤波器):请添加图片描述
待定的系数:K,fc,Wn,t1,t2
已有方程个数:3
待定个数:2,可取K,fc、

波特图分析法

  • 表示开环传递函数Ho的幅频、相频特性
  • 横轴用对数,dB坐标;纵轴用“度”,线性坐标
  • 波特准则:利用开环频响来判断闭环的稳定性(锁相环路能否稳定跟踪)
    即:如果增益在穿越0dB时(fT),相位滞后小于180度,则稳定。有一定使用条件但是对于锁相环一般都成立
  • 相位裕度:其概念等价于上述波特准则
    公式:arg[Ho(fT)]+180
    如果是正的,则稳定。如果负则不稳定。正的越多越好,说明相位滞后比较少,比较容易稳定。
    工程上通常要求相位裕度在30-60度

如何画开环FT(传递函数)的bode图

K = 50 ;
fc = 100 ;
g = tf([K*fc],[1 fc K*fc]) ;
bode(g);
hold on ;
  • 解释:tf(numerator,denominator)=tf([K*fc],[1 fc K*fc])
    从高次到低次,以数组的形式输入系数。该传递函数是
    在这里插入图片描述
    该式是RC积分滤波器的闭环相位传递函数H(s),推导如下:
    请添加图片描述
    绘图代码:
K = 50 ;
fc = 100 ;
g = tf([K*fc],[1 fc K*fc]) ;
bode(g);
hold on ;fc = 10 ;
g = tf([K*fc],[1 fc K*fc]) ;
bode(g);
hold on ;fc = 0.1 ;
g = tf([K*fc],[1 fc K*fc]) ;
bode(g);
hold on ;

在这里插入图片描述
注意,这里绘制的是闭环ft曲线,不能用bode principle

增益相关

注意计算K时和后面计算C时的单位
请添加图片描述
请添加图片描述

VCO

  • 公式:
    ω v ( t ) = ω o + K 0 u c ( t ) \omega_{\mathrm{v}}(t)=\omega_{\mathrm{o}}+K_{0} u_{\mathrm{c}}(t) ωv(t)=ωo+K0uc(t)
  • Ko:VCO的频率控制灵敏度 or 增益系数
  • 锁相环的效果如下图:输入信号电压越大,输出频率越高
    请添加图片描述
  • 在数字系统中,这里的V,输入信号电压,对应的是NCO的频率控制字PINC

PD

  • 公式:
    u d ( t ) = U d sin ⁡ θ e 1 ( t ) ≈ U d θ e 1 ( t ) = K d θ e 1 ( t ) u_{\mathrm{d}}(t)=U_{\mathrm{d}} \sin \theta_{\mathrm{e} 1}(t) \approx U_{\mathrm{d}} \theta_{\mathrm{e} 1}(t)=K_{\mathrm{d}} \theta_{\mathrm{e} 1}(t) ud(t)=Udsinθe1(t)Udθe1(t)=Kdθe1(t)
  • Kd:为鉴相器的鉴相增益,单位V/rad,计算公式如下:
    请添加图片描述
    Ui:输入数据有效位宽10位(ADC),则最大幅值2^9=512
    Uo: NCO输出数据位宽10位
    Bpd:Ui和Uo相乘,10位*10位得到19位。不使用20位是为了节约资源。因为只有两个负数最大值-512相乘时才会出现20位的情况。计算过程展示如下:
    B I N : 10 _ 0000 _ 0000 × 10 _ 0000 _ 0000 = 0100 _ 0000 _ 0000 _ 0000 _ 0000 BIN:10\_0000\_0000\times10\_0000\_0000=0100\_0000\_0000\_0000\_0000 BIN:10_0000_0000×10_0000_0000=0100_0000_0000_0000_0000
    D E C : − 2 9 × − 2 9 = 2 18 DEC:-2^{9}\times-2^{9}=2^{18} DEC:29×29=218
    20位有符号数的表示范围是: − 2 19 → 2 19 − 1 -2^{19}\to2^{19}-1 2192191
    19位有符号数的表示范围是: − 2 18 → 2 18 − 1 -2^{18}\to2^{18}-1 2182181
    则可以通过将2^18替换为2^18-1,实现资源最大化利用
    K d = 2 B P D − 2 K_d=2^{B_{PD}-2} Kd=2BPD2
    而上述计算Kd的公式中,Bpd也是使用了同样的位宽策略,10位与10位相乘,输出采用19位。如果直接使用20位位宽,则应当为Bpd-3

相关文章:

锁相环 vivado FPGA

原理 同步状态/跟踪状态:相位差在2kπ附近,频率差为0到达上述状态的过程称为捕获过程锁相环的捕获带:delta w的最大值,大于这个值的话就不能捕获鉴相器(PD-phase discriminator):相乘加LPF&…...

英语科技写作 希拉里·格拉斯曼-蒂(英文版)pdf下载

下载链接: 链接1:https://pan.baidu.com 链接2:/s/1fxRUGnlJrKEzQVF6k1GmBA 提取码:b69t 由于是英文版,可能有些看着不太方便,可以在网页版使用以下软件中英文对照着看,看着更舒服,…...

《Dynamic Statistical Learning in Massive Datastreams》论文阅读笔记

论文地址: https://www3.stat.sinica.edu.tw/ss_newpaper/SS-2023-0195_na.pdf 论文题目翻译:《在大规模数据流中的动态统计学习》 核心观点: 动态跟踪和筛选框架(DTS):论文提出了一个在线学习和模型更新的新框架&…...

【数据分享】2008-2022年我国省市县三级的逐日NO2数据(excel\shp格式)

空气质量数据是在我们日常研究中经常使用的数据!之前我们给大家分享了2000-2022年的省市县三级的逐日PM2.5数据、2013-2022年的省市县三级的逐日CO数据和2013-2022年的省市县三级的逐日SO2数据(均可查看之前的文章获悉详情)! 本次…...

JavaEE (1)

web开发概述 所谓web开发,指的是从网页中向后端程序发送请求,与后端程序进行 交互. 流程图如下 Web服务器是指驻留于因特网上某种类型计算机的程序. 可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览; 它是一个容器&…...

事务、函数和索引

什么是事务? 事务(Transaction),就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内 的所有SQL都将被取消执行。 特点 一个事务中如果有一个数据库操作失败,那么整个事务…...

Android APP 基于RecyclerView框架工程(知识体系积累)

说明:这个简单的基于RecyclerView的框架作用在于自己可以将平时积累的一些有效demo整合起来(比如音视频编解码的、opengles的以及其他也去方向的、随着项目增多,工程量的增加,后期想高效的分析和查找并不容易)&#xf…...

【iOS】GCD

参考文章:GCD函数和队列原理探索 之前写项目的时候,进行耗时的网络请求使用GCD处理过异步请求,但对一些概念都很模糊,这次就来系统学习一下GCD相关 相关概念 什么是GCD? Grand Center Dispatch简称GCD,是…...

C语言 | Leetcode C语言题解之第282题给表达式添加运算符

题目: 题解: #define MAX_COUNT 10000 // 解的个数足够大 #define NUM_COUNT 100 // 操作数的个数足够大 long long num[NUM_COUNT] {0};long long calc(char *a) { // 计算表达式a的值// 将数字和符号,入栈memset(num, 0, sizeof(num));in…...

如何使用 API list 极狐GitLab 容器镜像仓库中的 tag?

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署…...

粒子群算法PSO优化BP神经网络(PSO-BP)回归预测——Python和MATLAB实现

下面是一个使用Python实现的粒子群算法(PSO)优化反向传播神经网络(BP)的示例代码。 以下是具体的代码实现: python import numpy as np from sklearn.datasets import make_regression from sklearn.model_selection…...

React-router路由配置及跳转

1、V6对比V5的修改内容 1、API: useNavigate 代替了useHistory 。 2、废弃了Route组件的exact属性。 3、组件 <Routes>代替了<Switch> 4、组件NavLink中移除了 activeStyle activeClassName 属性。 2、安装依赖react-router-dom npm install react-router-dom…...

vue3【实战】可编辑的脱敏信息

<script lang"ts" setup> import { ref, onMounted } from "vue"; let real_name ref("朝阳");let name ref("");onMounted(() > {name.value des_name(real_name.value); });function focusing() {name.value real_name…...

S71200 - 笔记

1 S71200 0 ProfiNet - 2 PLC编程 01.如何零基础快速上手S7-1200_哔哩哔哩_bilibili 西门子S7-1200PLC编程设计学习视频&#xff0c;从入门开始讲解_哔哩哔哩_bilibili...

linux系统查历史cpu使用数据(使用sar 查询cpu和网络占用最近1个月历史数据)。

一 sar 指令介绍 在 Linux 系统中&#xff0c;sar 是 System Activity Reporter 的缩写&#xff0c;是一个用于收集、报告和保存系统活动信息的工具。它是 sysstat 软件包的一部分&#xff0c;提供了丰富的系统性能数据&#xff0c;包括 CPU、内存、网络、磁盘等使用情况&am…...

Edge浏览器加载ActiveX控件

背景介绍 新版Edge浏览器也是采用Chromium内核&#xff0c;虽然没有谷歌浏览器市场占有率高&#xff0c;但是依托微软操作系统的优势&#xff0c;Edge浏览器还是发展很强劲&#xff0c;占据着市场第二的位置。随着微软停止服务IE浏览器&#xff0c;曾经风光无限的IE浏览器页退出…...

BUG与测试用例设计

一.软件测试的生命周期 需求分析→测试计划→测试设计,测试开发→测试执行→测试评估→上线→运行维护 二.BUG 1.bug的概念 (1)当且仅当规格说明(需求文档)是存在的并且正确,程序与规格说明之间的不匹配才是错误. (2)当需求规格说明书没有提到的功能,判断标准以最终用户为准…...

怎么在使用select2时,覆盖layui的下拉框样式

目录 1.覆盖下拉框样式代码 2.自定义样式 3.样式使用 1.覆盖下拉框样式代码 .layui-form-select .layui-select-title {border: none !important; /* 去除边框 */background-color: transparent !important; /* 去除背景色 */display: none;/* 其他你想要覆盖的样式 */} 2.自…...

MacOSM1 配置Miniconda环境,并设置自启动

文章目录 设置环境变量设置自启动参考 设置环境变量 cd vim .zshrc输入一下内容 # 配置Conda CONDA_HOME/Users/hanliqiang/miniconda3 PATH$CONDA_HOME/bin:$PATH生效配置 source .zshrc设置自启动 conda init zsh.zshrc 文件中将会出现以下内容 # >>> conda i…...

poi库简单使用(java如何实现动态替换模板Word内容)

目录 Blue留言&#xff1a; Blue的推荐&#xff1a; 什么是poi库&#xff1f; 实现动态替换 第一步&#xff1a;依赖 第二步&#xff1a;实现word模板中替换文字 模板word&#xff1a; 通过以下代码&#xff1a;&#xff08;自己建一个类&#xff0c;随意取名&#xf…...

机器人开源调度系统OpenTcs6二开-车辆表定义

前面已经知道opentcs 需要车辆的模型结构数据&#xff0c;将里面的数据结构化&#xff0c;已表的形式生成&#xff0c;再找一个开源的基础框架项目对车辆进行增删改的管理 表结构&#xff1a; CREATE TABLE Vehicle (id INT AUTO_INCREMENT PRIMARY KEY COMMENT 唯一标识符,n…...

麦歌恩MT6521-第三代汽车磁性角度传感器芯片

磁性编码芯片 -在线编程角度位置IC 描述&#xff1a; MT6521是麦歌恩微电子推出的新一代基于水平霍尔及聚磁片(IMC)技术原理的磁性角度和位置检测传感器芯片。该芯片内部包含了两对互成90放置的水平霍尔阵列及聚磁片&#xff0c;能够根据不同的型号配置来实现对XY&#xff0…...

【数据结构】堆,优先级队列

目录 堆堆的性质大根堆的模拟实现接口实现构造方法建堆入堆判满删除判空获取堆顶元素 Java中的PriorityQueue实现的接口构造方法常用方法PriorityQueue注意事项 练习 堆 如果有一个集合K {k0&#xff0c;k1&#xff0c; k2&#xff0c;…&#xff0c;kn-1}&#xff0c;把它的…...

2024 暑假友谊赛 2

Tree Queries - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路:LCA好题&#xff0c;也有看见用时间戳写的&#xff0c;不是很明白. 用LCA非常好写。 要想到,给出k个节点&#xff0c;要确定一条路径&#xff0c;使得给出的k个点要么在路径上&#xff0c;要么和路径中某点的…...

c++ 线程

在 C 中&#xff0c;std::thread 构造函数可以用于将参数传递给线程。这里是一个基本的示例&#xff0c;展示了如何使用 std::thread 来传递参数&#xff1a; #include <iostream> #include <thread>// 定义一个被线程调用的函数 void threadFunc(int arg1, doubl…...

【SpringBoot】URL映射之consumes和produces匹配、params和header匹配

4.2.3 consumes和produces匹配 //处理request Content-Type为"application/json"类型的请求 RequestMapping(value"/Content",methodRequestMethod.POST,consumes"application/json") public String Consumes(RequestBody Map param){ return…...

vscode配置django环境并创建django项目(全图文操作)

文章目录 创建项目工作路径下载python插件&#xff1a;创建虚拟环境1. 命令方式创建2. 图文方式创建 在虚拟环境中安装Django创建Django项目安装Django插件选择虚拟环境 创建项目工作路径 输入 code . 下载python插件&#xff1a; 创建虚拟环境 1. 命令方式创建 切换在工作目…...

(一)延时任务篇——延时任务的几种实现方式概述

前言 延时任务是我们在项目开发中经常遇到的场景&#xff0c;例如订单超时30分钟自动取消&#xff0c;邮件5分钟后通知等等&#xff0c;对于这样的应用场景&#xff0c;我们又该如何应对呢&#xff0c;尤其是在微服务环境下&#xff0c;如何保证我们的延迟任务并发问题以及数据…...

每天五分钟计算机视觉:目标检测模型从RCNN到Fast R-CNN的进化

本文重点 前面的课程中,我们学习了RCNN算法,但是RCNN算法有些慢,然后又有了基于RCNN的Fast-RCNN,Fast R-CNN是一种深度学习模型,主要用于目标检测任务,尤其在图像中物体的识别和定位方面表现出色。它是R-CNN系列算法的一个重要改进版本,旨在解决R-CNN中计算量大、速度慢…...

环境变量配置文件中两种路径添加方式

环境变量配置文件中两种路径添加方式 文章目录 环境变量配置文件中两种路径添加方式代码示例区别和作用 代码示例 export HBASE_HOME/opt/software/hbase-2.3.5 export PATH$PATH:$HBASE_HOME/binexport SPARK_HOME/opt/software/spark-3.1.2 export PATH$SPARK_HOME/bin:$PAT…...