分析有损伤的简单ADC
这个例子展示了如何使用零阶保持块作为采样器实现一个基本的ADC。这个简单的ADC突出了模数转换器中引入的一些典型损伤,如孔径抖动、非线性、量化和饱和。这个例子展示了如何使用频谱分析仪模块和混合信号模块中的ADC AC测量模块来测量这些损伤的影响。为了更好地近似真实世界的性能,您可以单独启用模型中的缺陷。
模型=“MSADCImpairments”;open_system(模型)
要观察理想ADC的行为,可以使用开关绕过损伤。设置正弦波源以生成两个音调作为输入信号。
set_param([模型/孔径抖动的],“西南”,' 1 ');set_param([模型' /非线性'],“西南”,' 0 ');set_param([模型“/量化和饱和”],“西南”,' 0 ');set_param([模型/正弦波的],“频率”,“2 *π* (47 53)* 1 e6的);
模拟模型,观察ADC预期的干净输出频谱。
sim(模型);
孔径抖动的影响
将第一个开关置于下位。可变延迟块按其上的量逐个采样地延迟信号道明输入。噪声源块生成一个均匀随机变量,该随机变量在到达噪声谱块之前经过对抖动噪声谱块的低通滤波道明输入变量延迟。使用形状均匀的噪声分布来表示抖动。注意,在这个模型中,ADC的时钟是在理想的零阶保持块中指定的,它等于1/Fs,其中Fs是在模型初始化回调中定义的MATLAB®变量,等于1.024
GHz。
set_param([模型/孔径抖动的],“西南”,' 0 ');
正如预期的那样,由于抖动的存在,频谱会退化。
sim(模型);
非线性效应
把第二个开关调到上位。这使得ADC非线性。缩放双曲正切函数具有非线性。它的比例因子,α,决定了tanh应用于信号的非线性量。默认情况下,α是0.01
.
set_param([模型' /非线性'],“西南”,' 1 ');
当产生高阶谐波时,频谱由于非线性而退化。
sim(模型);
量化和饱和效果
将第三个开关设置到上位置,使ADC量化和硬饱和。
set_param([模型“/量化和饱和”],“西南”,' 1 ');
由于量化效应,频谱会退化。从谱图中可以看出,噪声底提高了。
sim(模型);
ADC交流测量
使用混合信号模块™中的ADC AC测量模块来测量ADC的噪声性能并计算有效比特数(ENOB)。
使用单正弦波作为ADC的输入来测量其他指标。
bdclose(模型);模型=“MSADCImpairments_AC”;open_system(模型);
Ftest = 33/round(2*pi*2^8)*Fs;set_param([模型/正弦波的],“频率”,2 *π*英国《金融时报》的);Scopecfg = get_param([模型' /光谱范围的],“ScopeConfiguration”);scopecfg.DistortionMeasurements.Algorithm =“谐”;scopecfg。FFTLength =“512”;scopecfg。WindowLength =“512”;sim(模型);
来自Mixed-Signal Blockset™的孔径抖动测量块测量信号上引入的平均抖动,近似等于1
ps.添加延迟
此外,使用频谱分析仪测量:
输出三阶截点(OIP3)
信噪比
总谐波失真(THD)
增加因子α以增加ADC的非线性,并使非线性的影响在噪声底之上更加明显。这只是为了演示。
Alpha = 0.8;
使用一个双音测试信号作为ADC的互调测量输入。
set_param([模型/正弦波的],“频率”,' 2 *π* (50 e6 75 e6)”);
要启用频谱分析仪中的失真测量,请单击变形测量如下图所示并选择互调
作为失真类型。
scopecfg.DistortionMeasurements.Algorithm =“互调”;scopecfg。FFTLength =“4096”;scopecfg。WindowLength =“4096”;sim(模型);
该范围允许测量与输入信号相邻的三阶积,并确定输出参考的三阶截点。2022世界杯八强谁会赢?