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