基于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 记录

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从零开发短视频电商 单元测试(TestNG)

文章目录 简介简单示例执行测试并查看测试报告方式一 在IDEA中运行testng.xml文件方式二 在IDEA中运行测试类或者package方式三 在Maven中运行测试 统计测试覆盖率方式一 IDEA 支持详细的代码测试覆盖率统计方式二 Maven支持测试覆盖率 在IDEA中创建测试用例使用 IDEA 快速创建…

ELK搭建

ELK介绍: ELK是一组开源工具的缩写,它由Elasticsearch、Logstash和Kibana三个组件组成,用于处理、分析和可视化大量日志数据。 入门级ELK搭建(无Docker环境) 安装前准备 1.获取安装包 https://artifacts.elastic…

【InsCode Stable Diffusion 美图活动一期】生成着玩

此为内容创作模板,请按照格式补充内容,在发布之前请将不必要的内容删除 一、 Stable Diffusion 模型在线使用地址: https://inscode.csdn.net/inscode/Stable-Diffusion 二、模型相关版本和参数配置: 三、图片生成提示词与反向…

【Docker】详解docker安装及使用

详解docker安装及使用 1. 安装docker1.1 查看docker版本信息 2. Docker镜像操作3. Docker容器操作4.知识点总结4.1 docker镜像操作4.2 docker容器操作4.3 docker run启动过程 参见docker基础知识点详解 1. 安装docker 目前Docker只能支持64位系统。 ###关闭和禁止防火墙开机自…

Hadoop: High Available

序言 在Hadoop 2.X以前的版本,NameNode面临单点故障风险(SPOF),也就是说,一旦NameNode节点挂了,整个集群就不可用了,而且需要借助辅助NameNode来手工干预重启集群,这将延长集群的停…

Windows 组策略 部署打印机

一、服务端 1、打印机管理:添加打印机 2、选择打印机 3、第一次安装,选择这个 4、下载驱动,从磁盘安装 5、已成功安装 6、选中打印机右击属性:列出目录 7、创建一个组策略 8、组策略设置 用户设置 → 首选项 → 控制面板 → 打印…

C++day4 (拷贝构造函数、拷贝赋值函数、匿名对象、友元函数、常成员函数、常对象、运算符重载)

#include <iostream> #include <cstring> using namespace std;class mystring { private:char *str; //记录C风格字符串int size; //记录字符串的实际长度public://无参构造mystring():size(10){strnew char[size];//构造出一个长度为10的字符串strcpy(str,&…

22.代理模式

代理模式 二十三种设计模式中的一种&#xff0c;属于结构型模式。它的作用就是通过提供一个代理类&#xff0c;在调用目标方法的时候&#xff0c;不再是直接对目标方法进行调用&#xff0c;而是通过代理类间接调用。让不属于目标方法核心逻辑的代码从目标方法中剥离出来——解耦…

移动端深度学习部署:TFlite

1.TFlite介绍 &#xff08;1&#xff09;TFlite概念 tflite是谷歌自己的一个轻量级推理库。主要用于移动端。 tflite使用的思路主要是从预训练的模型转换为tflite模型文件&#xff0c;拿到移动端部署。 tflite的源模型可以来自tensorflow的saved model或者frozen model,也可…

初识protobuf

Protobuf 全称Protocol Buffers&#xff08;协议缓冲区&#xff09;&#xff0c;是一种轻量级、高效的数据序列化格式&#xff0c;由Google开发。它被设计用于结构化数据的序列化、反序列化以及数据交换&#xff0c;常用于网络通信和数据存储等领域。 Protobuf使用简洁的消息描…

解决appium-doctor报 bundletool.jar cannot be found

一、下载bundletool.jar 下载地址&#xff1a;https://github.com/google/bundletool/releases 二、重命名 重命名这个jar包为bundletool.jar&#xff0c;在android sdk目录下&#xff0c;新建bundle-tool目录&#xff0c;把bundletool.jar包放入其中。 三、配置环境 path后追加…

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

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

蒲公英打包环境搭建碰到问题

一&#xff1a;证书那边选择手动&#xff0c;不要自动&#xff0c;——》debug配置dev证书&#xff0c;release配置ad-hoc证书 二&#xff1a;证书有时候不生效&#xff0c;删除重新下载。~/Library/MobileDevice/Provisioning Profiles 三&#xff1a;更新测试手机时&#…

# Linux终端控制字符详解以及简单应用实践

Linux终端控制字符详解以及简单应用实践 文章目录 Linux终端控制字符详解以及简单应用实践1 控制字符表2 控制字符 ESC &#xff08;0x1B&#xff0c;^[&#xff09;子参数表3 控制字符 ESC &#xff08;0x1B&#xff0c;^[&#xff09;子参数表 - 字符颜色参照表4 实践&#x…

SpringBoot+JWT实现单点登录解决方案

一、什么是单点登录? 单点登录是一种统一认证和授权机制&#xff0c;指在多个应用系统中&#xff0c;用户只需要登录一次就可以访问所有相互信任的系统&#xff0c;不需要重新登录验证。 单点登录一般用于互相授信的系统&#xff0c;实现单一位置登录&#xff0c;其他信任的…

【JavaEE面试题(九)线程安全问题的原因和解决方案】

多线程-初阶 4. 多线程带来的的风险-线程安全 (重点)4.1 观察线程不安全原因是 1.load 2. add 3. save 4.2 线程安全的概念4.3 线程不安全的原因最根本的是 操作系统对线程的调度是随机的★1. 修改共享数据&#xff08;多个线程修改同一个变量&#xff09;★2. 操作不是原子性★…

EIK+Filebeat+Kafka

目录 Kafka 概述 为什么需要消息队列&#xff08;MQ&#xff09; 使用消息队列的好处 消息队列的两种模式 Kafka 定义 Kafka 简介 Kafka 的特性 Kafka 系统架构 Partation 数据路由规则&#xff1a; 分区的原因 部署 kafka 集群 1.下载安装包 2.安装 Kafka 修改配…

前端 | (七)浮动 | 尚硅谷前端html+css零基础教程2023最新

学习来源&#xff1a;尚硅谷前端htmlcss零基础教程&#xff0c;2023最新前端开发html5css3视频 文章目录 &#x1f4da;浮动介绍&#x1f407;元素浮动后的特点&#x1f407;浮动小练习&#x1f525;盒子1右浮动&#x1f525;盒子1左浮动&#x1f525;所有盒子都浮动&#x1f5…

后端Linux软件安装大全[JDK、Tomcat、MySQL、Irzsz、Git、Maven、Redis...持续更新中]

文章目录 前言1.软件安装方式2.安装jdk3.安装Tomcat4.安装MySQL5.安装lrzsz6. 安装Git7. 安装Maven8. 安装Redis 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。当然&#xff0c;如果能帮到一些萌新进行新技术的…

Vue第三篇:最简单的vue购物车示例

本文参考&#xff1a;Vue Cli&#xff08;脚手架&#xff09;实现购物车小案例 - - php中文网博客 效果图&#xff1a; 编写流程&#xff1a; 1、首先通过vue/cli创建工程 vue create totalprice 2、改写App.vue代码如下&#xff1a; <template><div><div v…