该笔记主要用于本人思路整理与记录
本设计运用的是电荷泵一阶环路滤波器,二阶三阶则在此基础上举一反三,以后如有机会会慢慢补全
一.仿真模型
在Matlab中的Simulink组件中搭建以下模型
DPLL基本框架就不赘述,本处PDF用的是乘法器鉴频鉴相,电荷泵省略,N分频器选择N=1,因此没画。
目标频率是15KHz,VCO初始频率10KHz,压控灵敏度1KHz/V,采样频率1e7
一阶环路滤波器模型如下:
PS(题外话)
电荷泵电流,因为项目对功耗的需要,肯定是越小越好,但是电流越小,环路滤波带宽就越小(Kd=Ip/(2*pi))(Kd不是环路滤波带宽!别搞错了),锁相时间就越长,最终的频谱显示的信号噪声就越大(带宽越小,对VCO噪声抑制就越小);当然,环路滤波带宽不是越大越好,太大了就无法抑制晶振噪声和电荷泵鉴相器相位噪声,同时影响最大的就是信号的抖动会变大。因此环路滤波带宽应该选择一个适中的值。
实际项目中将800mA的电荷泵电路减少为200mA,相应的就该调整电路中的环路滤波器带宽调大4倍左右(环路滤波器由RC组成)
二.仿真结果
![](https://i-blog.csdnimg.cn/blog_migrate/1343d969a3d7845107ffbcc8386c0988.png)
VTUNE电压(VCO控制电压)稳定在了5V,10K+5*1K=15K,仿真达成。
感兴趣的可以继续往下看我对环路滤波器的分析
三.环路滤波器分析
不得不说,整个电路里,环路滤波器是真的头疼。
环路滤波器参数决定锁相时间,锁相能力(简单来说环路滤波带宽决定上一张图锁相时,抖动的幅度),噪声抑制等。
![](https://i-blog.csdnimg.cn/blog_migrate/d0e0a6c3b82eec1954a1ab490ad46e3b.png)
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就能运行,
![](https://i-blog.csdnimg.cn/blog_migrate/bc3d1b2afbd6edd31a3e991e4dde3a12.png)
看到这图,我就醒悟,去掉那个1,不就对带外的信号严重抑制了么,整个环路跑了一轮就抑制成这样,多跑几轮不就抑制没了么。但是恰恰不能抑制没了,抑制没了,还咋进行锁相。
再看频域乘以1,等于时域乘以冲激函数,换句话来说,保留了信号的信息量,保留了信息量就等于保留了频差,有了频差就能控制VCO进行锁相,缩小频差至0
2. 环路滤波器对比没环路滤波器
第一张是环路滤波前的,第二张是环路滤波后的。
一看就知道,环路滤波器不能没有的原因是,没有它,VTUNE的直流电压无法爬升,因为直流电压是滤出来的
以后有兴趣看看二阶三阶环路滤波,VCO也可以换成NCO进行仿真。
2023.07.17 记录