当前位置: 首页 > 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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • centos中zabbix安装、卸载及遇到的问题
  • Pytest进阶之fixture的使用(超详细)
  • BGP之选路MED
  • 【科研】# Taylor Francis 论文 LaTeX template模版 及 Word模版
  • 【操作系统】解析线程安全中的 Synchronized 关键字
  • 【C++】:红黑树深度剖析 --- 手撕红黑树!
  • MySQL之索引及简单运用
  • 文本编辑三巨头(grep)
  • 【Node.js基础04】node.js模块化
  • 个人电脑网络安全 之 防浏览器和端口溢出攻击 和 权限对系统的重要性
  • C++ set
  • vue3学习记录1:emit的写法
  • java8函数式编程学习(二):optional,函数式接口和并行流的学习
  • Java-根据前缀-日期-数字-生成流水号(不重复)
  • 力扣34题 双二分查找(简单易懂)
  • 收藏网友的 源程序下载网
  • exif信息对照
  • Java小白进阶笔记(3)-初级面向对象
  • Mac转Windows的拯救指南
  • MySQL几个简单SQL的优化
  • React-生命周期杂记
  • V4L2视频输入框架概述
  • 欢迎参加第二届中国游戏开发者大会
  • 简单基于spring的redis配置(单机和集群模式)
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 什么软件可以剪辑音乐?
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • hi-nginx-1.3.4编译安装
  • kubernetes资源对象--ingress
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​ssh免密码登录设置及问题总结
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • #VERDI# 关于如何查看FSM状态机的方法
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (20)docke容器
  • (二十四)Flask之flask-session组件
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (五)Python 垃圾回收机制
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)iOS字体
  • (转)Sublime Text3配置Lua运行环境
  • ******IT公司面试题汇总+优秀技术博客汇总
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .Mobi域名介绍
  • .NET 8 跨平台高性能边缘采集网关
  • .NET C# 操作Neo4j图数据库
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net core Redis 使用有序集合实现延迟队列
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?