基于simulink的DPLL仿真笔记

该笔记主要用于本人思路整理与记录
本设计运用的是电荷泵一阶环路滤波器,二阶三阶则在此基础上举一反三,以后如有机会会慢慢补全

文章目录

  • 一.仿真模型
        • PS(题外话)
  • 二.仿真结果
  • 三.环路滤波器分析
      • 1. 环路滤波器对比LPF
      • 2. 环路滤波器对比没环路滤波器

一.仿真模型

在Matlab中的Simulink组件中搭建以下模型
在这里插入图片描述
DPLL基本框架就不赘述,本处PDF用的是乘法器鉴频鉴相,电荷泵省略,N分频器选择N=1,因此没画。

目标频率是15KHz,VCO初始频率10KHz,压控灵敏度1KHz/V,采样频率1e7

一阶环路滤波器模型如下:
在这里插入图片描述

PS(题外话)

电荷泵电流,因为项目对功耗的需要,肯定是越小越好,但是电流越小,环路滤波带宽就越小(Kd=Ip/(2*pi))(Kd不是环路滤波带宽!别搞错了),锁相时间就越长,最终的频谱显示的信号噪声就越大(带宽越小,对VCO噪声抑制就越小);当然,环路滤波带宽不是越大越好,太大了就无法抑制晶振噪声和电荷泵鉴相器相位噪声。因此环路滤波带宽应该选择一个适中的值。
实际项目中将800mA的电荷泵电路减少为200mA,相应的就该调整电路中的环路滤波器带宽调大4倍左右(环路滤波器由RC组成)

二.仿真结果

VTUNE电压(VCO控制电压)稳定在了5V,10K+5*1K=15K,仿真达成。
感兴趣的可以继续往下看我对环路滤波器的分析

三.环路滤波器分析

不得不说,整个电路里,环路滤波器是真的头疼。

1. 环路滤波器对比LPF

一开始我就纳闷了,为什么会多出来+1,去掉+1多好,妥妥的LPF,matlab仿真发现,滤波器曲线有没有这个1好像差不多。
但我加入信号后就发现不一样了

fs=1e6;
N=1e7;
w1=10000*2*pi;w2=15000*2*pi;w3=45000*2*pi;w4=75000*2*pi;
t=0:1e-6:10;
y=sin(w1*t+pi/4).*(cos(w2*t+pi/6)+cos(w3*t+pi/6)+cos(w4*t+pi/6));fft_y=fft(y);
fftshift_y=fftshift(fft_y);
f=linspace(-fs/2,fs/2,N+1);
subplot 311
plot(f,abs(fftshift_y))
title('原信号频谱')B1=[10 0];
A1=[10000 -10000];
k=filter(B1,A1,y);
fft_k=fft(k);
fftshift_k=fftshift(fft_k);
subplot 312
plot(f,abs(fftshift_k));
title('低通滤波频谱')B1=[10010 -10000];
A1=[10000 -10000];
k=filter(B1,A1,y);
fft_k=fft(k);
fftshift_k=fftshift(fft_k);
subplot 313
plot(f,abs(fftshift_k));
title('环路滤波频谱')

以上代码直接粘贴至matlab就能运行,

看到这图,我就醒悟,去掉那个1,不就对带外的信号严重抑制了么,整个环路跑了一轮就抑制成这样,多跑几轮不就抑制没了么。但是恰恰不能抑制没了,抑制没了,还咋进行锁相。
再看频域乘以1,等于时域乘以冲激函数,换句话来说,保留了信号的信息量,保留了信息量就等于保留了频差,有了频差就能控制VCO进行锁相,缩小频差至0

2. 环路滤波器对比没环路滤波器

在这里插入图片描述
第一张是环路滤波前的,第二张是环路滤波后的。
一看就知道,环路滤波器不能没有的原因是,没有它,VTUNE的直流电压无法爬升,因为直流电压是滤出来的

以后有兴趣看看二阶三阶环路滤波,VCO也可以换成NCO进行仿真。

2023.07.17 记录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/2913.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Shikra:新一代多模态大语言模型,理解指向,说出坐标

“ Shikra:解锁多模态语言模型参考对话的魔法” Shikra和用户的对话案例 在人类的日常交流中,经常会关注场景中的不同区域或物体,双方都可以通过说话并指向这些区域来进行高效的信息交换。我们将这种对话模式称为参考对话(Referen…

等保协议概要

一、等级划分 《信息安全等级保护管理办法》将信息系统的安全保护等级分为以下五级: 第一级,信息系统受到破坏后,会对公民、法人和其他组织的合法权益造成损害,但不损害国家安全、社会秩序和公共利益。 第一级信息系统运营、使用单位应当依据国家有关管理规范和技术标准进…

uniapp自定义头部,计算状态栏和导航栏高度超简单三步

效果图 1.pages.json 页面给要自定义头部的页面加入一行代码 "navigationStyle":"custom" {"path": "pages/index/index","style": {"navigationBarTitleText": "","navigationStyle":"…

Gin+Gorm练手小项目bubble清单企业级结构剖析

概述 本项目来源于Qimi老师的小清单项目——基于gingorm开发的练手小项目,通过该项目可初识go web开发该有的姿势。笔者对代码有些许修改,以下是项目成功运行的截图,主要功能有添加,删除,确认,查看待办事项…

05 信号与槽机制

信号(Signal): 信号的本质是事件,例如鼠标点击,窗口刷新,键盘输入等 槽(Slot): 槽的本质是信号对应的函数,可以有参,可以发生重载 信号与槽机制…

有哪些记事本app可以用来整理个人笔记?

我总是在思考一个问题,为什么现在越来越多的人选择使用记事本app?它们相比传统笔记本,又有什么吸引人的地方呢?这其实并不难理解。因为,记事本app不仅可以让我们及时记录重要信息,还能对这些信息进行系统、…

Django实现接口自动化平台(九)环境envs序列化器及视图【持续更新中】

相关文章: Django实现接口自动化平台(八)测试报告reports序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解,查看本章内容时,要结合整体项目代码来看: python django vue …

mac 下 geoserver 安装

一、去官网下载geoserver https://geoserver.org/ 选择一个版本,然后点进去 二、需要配置java环境和设置geoserver 环境变量 1)、java 环境安装 Java Downloads | Oracle 中国 2)、环境变量设置 1.打开终端:command 空格键 2…

Python自动获取字母站视频

如果有疑问的话可以在我的谈论群:706128290 来找我 目录 前言 二、编写代码 1.引入库 2.编写主类 3. 自动获取cookies值和生成headers 4.获取命令行参数 运行效果 前言 browser_cookie3 第三方模块 browser_cookie3是browser_cookie模块的分支,…

jupyter notebook更换虚拟环境(内核)

jupyter notebook更换虚拟环境(内核) 创建一个新的虚拟环境 # stk_env 虚拟环境的名字,任取。 conda create -n stkenv python3.9激活虚拟环境 conda activate stkenv安装ipykernel # 为该虚拟环境,安装内核。 conda install -c a…

基于C语言设计的足球信息查询系统

完整资料进入【数字空间】查看——baidu搜索"writebug" 需求分析与概要设计 2.1 项目说明 我们小组的选题主要是面向足球爱好者,在普通社交软件的基础之上,围绕足球的主题展开设计,以便于他们能够更好的交流相关的话题&#xff…

LangChain(2)提示工程 Prompt Engineering

提示一般包含如下部分: Instructions:整体结构,模型的人设 Instructions tell the model what to do, how to use external information if provided, what to do with the query, and how to construct the output. External information&a…

linux之Ubuntu系列(六)用户管理 终端命令 which 查看执行命令所在的位置

提示 /etc/passwd 是用于保存用户信息的文件 可以用cat 命令查看 cat /etc/passwd/usr/bin/passwd 是用于修改用户密码的 程序 ,是程序 程序 , which 命令 可以查看执行命令所在的位置 # 输出 /bin/ls which ls # 输出 /usr/sbin/useradd which useradd…

话费电费中控搭建,api接口h5,公众号,小程序app

话费充值接口文档 接口版本:1.0 ―、引言 文档概述 本文档提供话费充值接口规范说明,提供一整套的完整的接入示例(http 接口)供商户参 考,可以帮助商户开发人员快速完成接口开发与联调,实现与话费充值系统的交易互联。 公司官网…

【算法第六天7.19】反转字符串,反转字符串||,剑指 Offer 05. 替换空格,反转字符串的单词, 左旋转字符串

链接:力扣344-反转字符串 链接:力扣541-反转字符串|| 链接:剑指 Offer 05. 替换空格 链接:力扣151- 反转字符串的单词 链接:剑指 Offer 58 - II. 左旋转字符串 链接:力扣344-反转字符串 思路&#xff…

git clone 或者是vscode clone 时遇到the remote end hung up unexpectedly

fatal: the remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed使用git clone总是报错 查看原因有三种可能:要么是缓存不够,要么是网络不行,要么墙的原因。 如果是网络不行,可以配置git的最低速度和最…

C#基础--线程之Task

C#基础–线程之Task Task 是.NetFramework3.0出现的,Task里面的线程是来自于线程池 一、Task 1. 开启一个线程 Task 构造函数 传入一个无参数的 Action 委托作为参数 Task task = new Task(() =>{this.DoSomethingLong("btntask_Click1");}); task.Start();Run…

局部响应归一化LRN(Local Response Normalization)

LRN(Local Response Normalization)是一种局部响应归一化的技术,在深度学习中常用于增强模型的泛化能力和对光照、对比度等变化的鲁棒性。LRN主要用于激活函数后的归一化过程,它对局部神经元响应进行归一化,使得响应较…

C/C++ 使用 define 实现运行时函数是在哪个文件哪个函数被调用

1. 原始代码 // demo2.h #include <iostream>void testFunc(int num) {std::cout << num << std::endl; }//main.cc #include "demo2.h"void func1() { }void func2() {testFunc(24); }int main() {func1();func2();return 0; }我现在需要知道 te…

re学习(19)[ACTF新生赛2020]easyre1(UPX脱壳)

文章链接&#xff1a;BUUCTF在线评测 参考视频&#xff1a;B站 【新手教程三】小Z带你学习什么是ESP定律和什么是堆栈平衡 &#xff1f; - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn 题解&#xff1a; 工具脱壳 key"*F\"N,\"…