基于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开发该有的姿势。笔者对代码有些许修改,以下是项目成功运行的截图,主要功能有添加,删除,确认,查看待办事项…

有哪些记事本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…

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

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

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的最低速度和最…

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

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

MYSQL数据库-数据库的学习

MYSQL数据库-数据库的学习 MYSQL数据库一、数据库的基本概念二、常见的数据库三、MySQL数据库四、SQL操作五、SQL高级操作六、SQL函数(SQL 拥有很多可用于计数和计算的内建函数) MYSQL数据库 一、数据库的基本概念 1、数据库的英文单词:DataBase 简称 : DB 2、什么…

C#基础--进程和线程的认识

C#基础–进程和线程的认识 一、基础概念 1. 什么是进程? 进程并不是物理的东西,是虚拟出来的,是一种概念。当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。是一种计算机概念,是程序在运…

【矩阵的创建与基本运算】——matlab基础

目录索引 创建矩阵:zeros():ones:eye():magic():引号创建序列矩阵:linspace(): 加减与数乘:其他运算:指数运算:*exp():* 点式运算: 创…

Fiddler抓包app(方便后端定位app调用的是那个接口?参数为何?)

一、抓http请求的包 1、设置Fiddler允许远程连接 选择Tools->Options 选择Connections选项卡,选中允许远程连接,如图所示 2、手机与电脑连接相同的wlan网络 3、手机wlan设置手动代理, 1)手动代理的主机名设为电脑ip&…

【统计函数3】——excel常见函数

相关数据资料来源于网易 函数一览: rank、rand、randbetween、floor、int rank函数: 求某单元格在某区域内的排名 RANK(数值,引用区域,降序0/升序1)范围多指定: 分开的范围之间可用逗号隔开,最后再用一个小括号括起来。F4可以快速锁定行和列。…

【测试开发】测试用例的设计方法

目录 一. 测试用例的基本要素 二. 测试用例的设计方法 1. 测试用例设计的万能公式 水杯测试用例 2. 基于需求的设计方法 邮箱注册测试用例 3. 等价类方法 有效等价类和无效等价类 等价类思想设计测试用例步骤 4. 边界值方法 边界值思想设计测试用例步骤 5. 判定表方法…

k8s1.18.20:cert-manager 1.8 安装部署

cert-manager 安装部署 一、官网安装文档 https://cert-manager.io/docs/installation/ 1.1、简介 cert-manager 在 Kubernetes 集群中增加了证书 (certificates) 和证书颁发者 (certificate issuers) 作为资源类型,并简化了获取、更新和应用这些证书的过程。 …

基于 Orbit 的云原生应用交付基础原则与良好实践

点击官网了解详情 本文作者:何文强——腾讯云 CODING 高级架构师。 负责 CODING DevOps产品解决方案架构设计和技术产品布道以及 CODING 云原生技术研究与落地实践。在多个技术大会担任演讲嘉宾,腾讯云 CODING DevOps 课程认证出品人,腾讯云云…