PLL输出时的相位噪声
本例展示了如何预测锁相环(PLL)输出处的相位噪声,使用PLL Testbench对PLL进行仿真,并将仿真结果与理论预测进行比较。
这个例子演示了三相噪声效果,单独或组合,取决于你选择的配置:
参考调制或相位噪声
VCO相位噪声
由反馈预分频器下采样的VCO相位噪声
打开模型PllPhaseNoiseExample.slx
。
open_system (“PllPhaseNoiseExample.slx”);
本例使用整数N锁相环与单模预估器来自混合信号块集™。
锁相环测试台为锁相环生成参考输入信号,并测量锁相环输出处的相位谱密度。
该模型中可选的PRBS6参考相位调制用于对比参考相位变化的响应与VCO相位噪声的响应。
频谱估计器输入端的低通重采样器是抗混叠滤波器。这些滤波器将变阶跃离散信号转换为频谱估计器所需的固定阶跃离散信号。
锁相环输入和输出信号的频谱被估计并记录在基本工作空间中,以便您可以将仿真结果与理论计算结果进行比较。
示例模型中的示波器为仿真提供了一个进度指示器。
为了评估PLL在各种条件下的行为,为每一组不同的条件使用单独的工作空间文件。本例提供了5个这样的支持的.mat文件。它们都产生相同的循环瞬态响应。
Baseline.mat
-尽可能接近理想状态。用于评估模型和模拟器引入的数值噪声。ReferenceModulation.mat
-介绍参考相位调制。用于评估锁相环的相位传递函数。VCOPhaseNoise.mat
-引入VCO相位噪声和等于1的预倍率。用于评估锁相环控制回路的误差函数。InbandPhaseNoise.mat
-引入VCO相位噪声和大于1的预调频比。用于评估预估倍率对锁相环控制回路误差函数的影响。TotalPhaseNoise.mat
-启用所有相位噪声源,且prescaler比大于1。
理论计算
本节展示了如何计算锁相环的预期响应。
锁相环的目标环路带宽为2 MHz,相位裕度为45度。环路滤波器组件被缩放到实际水平,电荷泵输出电流按相同的因子缩放,以保持相同的环路动态。
这个函数getPllLoopResponse
将环路增益作为频率的函数计算,然后计算PLL外部或内部信号的预期响应。定义输入参数,如电荷泵输出电流,VCO灵敏度,预调频比和无源环路滤波器组件值getPllLoopResponse
函数使用。
PllKphi = 5 e - 3;% Charge泵输出电流PllKvco = 100 e6;% VCO的敏感性PllN = 70;%预定标器比PllR2 = 1.33 e3;%二阶响应环路滤波器电阻(欧姆)PllR3 = 1.7 e4;三阶响应的%环路滤波器电阻(欧姆)PllR4 = 0;四阶响应的%环路滤波器电阻(欧姆)PllC1 = 1.31 e-11;%回路滤波器直接电容(F)PllC2 = 1.44平台以及;%二阶响应的环路滤波器电容(F)PllC3 = 9.41 e-13;%三阶响应回路滤波器电容(F)PllC4 = 0;%四阶响应回路滤波器电容(F)
这个脚本prepareExpectedSpectra
计算参考相位调制和VCO输出相位噪声的谱密度。然后该脚本还将结果与锁相环响应结合,以获得锁相环输出处的相位噪声谱密度。参考相位调制是一个确定的过程,其中谱分量的振幅表示为载波振幅(dBc)的分数。相比之下,VCO相位噪声是一个随机过程,其谱密度以dBc/Hz表示。
定义的输入参数prepareExpectedSpectra
脚本,如参考输入频率、PRBS6相位调制数据图的每个符号的参考周期数、PRBS6参考相位调制的单个光谱成分的幅值、用相位噪声评估光谱的分辨率带宽、频率偏移向量和在指定频率偏移处的相位噪声谱密度。
PllAddPhaseNoise =“上”;%启用VCO相位噪声PllFoffset = [30e3 100e3 1e6 3e6 10e6];% VCO偏置频率(Hz)PllPhaseNoise = [-92 -106 -132 -143 -152];% VCO输出相位噪声(dBc/Hz)CfgSelectRefMod =' 0 ';%启用参考相位噪声调制CfgRef = 30 e6;%参考频率CfgCyclesPerSymbol = 2;每个PRBS6调制符号的%引用周期CfgModLevel = -110;%参考相位调制电平(dBc/Hz)CfgResBandwidth = 100年e3;%锁相环测试台分辨率带宽CfgTargetSpectrum = [100e3 -145;1e6 -135;3e6 -140;10e6 -150];% PLL测试台目标相位噪声(dBc/Hz)
如果变量WorkspaceFile
存在并指向一个可以加载的文件,将该文件加载到工作区中。要使用本例中提供的配置,请设置的值WorkspaceFile
到该配置文件的名称。
如果存在(“WorkspaceFile”,“var”) & &存在(WorkspaceFile“文件”)负载(WorkspaceFile);结束
分析锁相环控制环使用getPllLoopResponse
函数。该函数的输出为:
LoopFrequency
-计算预期响应的频率点。LoopZofs
-循环滤波器的传递阻抗作为频率的函数。LoopGofs
-从预分频器的输出到VCO的输入的环路增益,包括VCO的电压灵敏度。注意,预分频器比不包含在这个输出中,而是包含在闭环传递函数中。LoopHofs
-从锁相环参考输入到锁相环输出的闭环相位传递函数。LoopEofs
-闭环相位误差传递函数相对于VCO输出。
[LoopFrequency, LoopZofs, LoopGofs, LoopHofs, LoopEofs, LoopPhStep] =…getPllLoopResponse ([0 PllR2 PllR3 PllR4], [PllC1、PllC2 PllC3, PllC4),…PllKphi、PllKvco PllN);
组织预期谱密度的计算,将谱分量直接放入频率箱中。
预期光谱密度的工作空间变量为:
ExpInputFrequency
-用于计算预期输入频谱的频率向量(Hz)。ExpInputSpectrum
-在锁相环(dBm)的参考输入处的期望频谱值的向量,在分辨率带宽为的情况下变为一欧姆负载CfgResBandwidth
)。ExpOutputFrequency
-用于计算预期输出频谱的频率向量(Hz)。ExpOutputSpectrum
- PLL输出处(dBm到一欧姆负载的分辨率带宽的预期频谱值的向量CfgResBandwidth
)。
prepareExpectedSpectra;
研究预期结果
在本节中,检查预期的锁相环行为。
先来看看PLL的闭环响应。考虑三个基本响应:瞬态响应、传递函数和误差函数。
瞬态响应
在大多数锁相环应用中,环路初始获取锁相时,环路瞬态响应是最重要的。对于非常小的初始频率偏移或相对较高的闭环带宽,瞬态响应相当准确地预测了环路采集时间。然而,在许多情况下,环路瞬态响应只代表相位采集期间的响应,在频率采集已经发生之后。本例仅处理相位采集时间。
绘制锁相环的环路瞬态响应。
图(1);情节(LoopPhStep.Time LoopPhStep.Data);标题({“锁相环瞬态响应”;“To Unit Input Phase Step”});包含(“秒”);ylabel (“输出阶段”);
传递函数
从参考输入到锁相环输出的传递函数可能是重要的,或者当锁相环被期望非常精确地跟踪调制输入,或者当它被期望滤除噪声输入中的噪声时。
创建PLL传递函数的对数-对数图。
图(2);semilogx (LoopFrequency, 20 * log10 (abs (LoopHofs)));标题(锁相环传递函数的);包含(“赫兹”);ylabel (“数据库”);
误差函数
锁相环控制环预计将拒绝锁相环本身内部产生的相位噪声,如VCO相位噪声。VCO相位噪声和锁相环输出之间的传递函数有时被称为环路误差函数。在将环路误差应用到另一个噪声源之前,检查这个传递函数有助于补偿环路误差。
创建PLL循环错误函数的对数-对数图。
图(3);semilogx (LoopFrequency, 20 * log10 (abs (LoopEofs)));标题(“PLL循环错误函数”);包含(“赫兹”);ylabel (“数据库”);
在PLL输出处绘制总期望相位噪声。
图(4);情节(ExpOutputFrequency ExpOutputSpectrum);标题(锁相环输出光谱的);包含(“赫兹”);ylabel (“dBm转换为1欧姆”);xlim ([PllN * CfgRef-2 * PllFoffset(结束),PllN * CfgRef + 2 * PllFoffset(结束)]);
的phaseNoiseMeasure
function是PLL测试台使用的回调函数。它显示目标输出相位噪声谱密度以及模拟的或预期的相位噪声谱密度。
要将预期输出相位噪声与特定设计目标进行比较,请定义工作空间变量CfgTargetSpectrum
。CfgTargetSpectrum
由两个列阵列组成,指定PLL输出处的目标相位噪声。第一列指定频率偏移(以Hz为单位),第二列指定相应的相位噪声谱密度(以dBc/Hz为单位)。PLL测试台使用回调函数phaseNoiseMeasure
显示预期和模拟的相位噪声谱密度。
以dBc/Hz为单位查看预期锁相环输出相位噪声。
(~) = phaseNoiseMeasure (ExpOutputFrequency ExpOutputSpectrum,…CfgResBandwidth CfgTargetSpectrum(: 1)。”“上”,“5”,…CfgTargetSpectrum(:, 2)。');
如果循环响应不令人满意,你可以看看更详细的结果,如循环滤波器跨阻抗(LoopZofs
,以获得更多的见解,可以帮助您改进锁相环设计。
运行仿真
虽然配置过程很简单,但需要配置的参数很多。使用configureExamplePLL
脚本配置PLL Simulink®模型,然后执行模型。
configureExamplePll;SimOut = sim卡(“PllPhaseNoiseExample”);
为了使绘图更容易,将结果转换为以下四个工作空间变量:
SimInputFrequency
-用于存储模拟输入频谱的频率向量(Hz)。SimInputSpectrum
-在锁相环的参考输入处的频谱值向量(dBm)到分辨率带宽为的一欧姆负载CfgResBandwidth
)。SimOutputFrequency
-计算模拟输出频谱的频率向量(Hz)。SimOutputSpectrum
-在锁相环输出(dBm)处模拟频谱值的矢量,转换为分辨率带宽为的一欧姆负载CfgResBandwidth
)。
使结果更容易从工作区绘制。
SimInputFrequency =重塑(SimOut.InputFrequency.Data(:,结束),1,[]);SimInputSpectrum =重塑(SimOut.InputSpectrum.Data(:,结束),1,[]);SimOutputFrequency =重塑(SimOut.OutputFrequency.Data(:,结束),1,[]);SimOutputSpectrum =重塑(SimOut.OutputSpectrum.Data(:,结束),1,[]);
比较预期和模拟结果
比较锁相环输出处的预期和模拟相位噪声。
图(4);情节(ExpOutputFrequency ExpOutputSpectrum);标题(锁相环输出光谱的);包含(“赫兹”);ylabel (“dBm转换为1欧姆”);xlim ([PllN * CfgRef-2 * PllFoffset(结束),PllN * CfgRef + 2 * PllFoffset(结束)]);持有在;情节(SimOutputFrequency SimOutputSpectrum);持有从;
以dBc/Hz为单位查看预期锁相环输出相位噪声。
(~) = phaseNoiseMeasure (SimOutputFrequency SimOutputSpectrum,…SimOutputFrequency (2) -SimOutputFrequency (1),…CfgTargetSpectrum(: 1)。”“上”,“5”CfgTargetSpectrum(: 2)。');
保存配置和结果
保存整个工作区,包括当前状态下的系统配置和结果,到一个文件中。如果WorkspaceFile
变量已经存在,您可以将当前状态重新保存到该文件。若要保存到新文件,请更改的值WorkspaceFile
。
如果存在(“WorkspaceFile”,“var”)保存(WorkspaceFile);结束
另请参阅
整数N锁相环与单模预估器|锁相环Testbench|变量脉冲延迟