这个例子展示了如何分析弱非线性系统在噪声存在的谐波失真。
在这个例子中,我们将探索放大器的简化模型的输出,该模型具有噪声耦合到输入信号并表现出非线性。我们将探讨输入端的衰减如何减少谐波失真。我们还将举例说明如何用数学方法校正放大器输出的失真。
观察放大器非线性效应的一种方便的方法是观察当受到正弦信号刺激时放大器输出的周期图。正弦波的振幅设置为放大器的最大允许电压。(2 Vpk)
在这个例子中,我们将为一个持续时间为50ms的2khz正弦信号提供源。
vmaxpk = 2;最大工作电压Fi = 2000;%正弦频率2千赫fs = 44.1e3;%采样率44.1kHztstop = 50e-3;%正弦波持续时间t = 0:1 / Fs: Tstop;%输入时间向量%使用放大器的最大允许电压inputVmax = VmaxPk * sin(2 *π* Fi * t);outputVmax = helperHarmonicDistortionAmplifier (inputVmax);
查看输出正弦曲线的放大区域。注意,当相对于时间绘制时,我们的放大器的缺陷很难在视觉上看到。
plot(t,outcoudvmax)xlabel(“时间”) ylabel (输出电压的)轴([0 5e-3 -2.5 2.5])标题(放大器输出的)
现在让我们看一下放大器输出的周期图。
helperPlotPeriodogram (outputVmax Fs,“权力”,'注释');
请注意,除了我们放置在投入的2 kHz正弦曲线上,我们将在4 kHz,6 kHz,8 kHz和10 kHz处看到其他正弦曲线。这些正弦波是基本2 kHz频率的倍数,并且由于放大器的非线性。
我们还看到了一个相对平坦的噪音力量。
为了便于比较,让我们检查一些常见的失真度量
我们的期限图显示了基本信号的一些非常明确的谐波。这表明我们测量输入信号的总谐波失真,其返回所有谐波内容的功率比率与基本信号的功率。
(thd (outputVmax Fs)
ans = -60.3888
注意第三次和最大次谐波从基频下降约60分贝。这是大多数失真发生的地方。
我们还可以获得我们输入中存在的总噪声的估计。为此,我们调用SNR,返回基本功率与所有非谐波内容的力量的比率。
信噪比(outputVmax Fs)
ans = 130.9300
计算的另一个有用的指标是SINAD。这计算了信号中所有其他谐波和噪声内容的功率与所有其他谐波和噪声内容的比率。
sinad (outputVmax Fs)
ans = 60.3888
THD,SNR和SINAD分别为-60 dB,131 dB和60 dB。由于THD的大小大致等于SINAD,因此我们可以归因于大多数失真是由于谐波失真。
如果我们检查周期图,我们可以注意到三次谐波主导了输出的失真。
大多数模拟电路执行放大具有谐波失真和噪声功率之间的固有折衷。在我们的示例中,与谐波失真相比,我们的放大器具有相对低的噪声功率。这使得适合于检测低功率信号。如果我们的输入可以减弱进入这个低功耗区域,我们可以恢复一些谐波失真。
让我们把输入电压降低2倍来重复测量。
InputVhalf =(vmaxpk / 2)* sin(2 * pi * fi * t);outputvhalf = HelperharmonicDistorGragrayamplifier(InputVhalf);HelperplotPiodograph(OutputVhalf,FS,“权力”,'注释');
让我们再次重做我们的指标,这次测量降低输入电压的效果。
thdVhalf = thd(outputVhalf, Fs)
THDVHALF = -72.0676.
SNRVHALF = SNR(OutputVhalf,FS)
snrVhalf = 124.8767
sinadVhalf = sinad(outputVhalf, Fs)
SINADVHALF = 72.0676.
请注意,只要将输入功率级衰减6 dB,谐波含量就会降低。SINAD和THD从~60 dB提高到~72 dB。这是以信噪比从131 dB降至125 dB为代价的。
进一步的衰减能改善我们的整体失真性能吗?让我们绘制THD, SNR和SINAD作为输入衰减的函数,将输入衰减器从1扫到30 dB。
%分配一个包含30个表项的表nReadings = 30;convert = 0 (nreads, 3);计算每个衰减设置的THD, SNR和SINAD为了i = 1: nreads inputVbestAtten = db2mag(-i) * VmaxPk * sin(2*pi*Fi*t);outputVbestAtten = helperHarmonicDistortionAmplifier (inputVbestAtten);= [abs(thd(outputVbestAtten, Fs)) snr(outputVbestAtten, Fs) sinad(outputVbestAtten, Fs)];结尾%绘制结果情节(distortionTable)包含(“输入衰减(dB)”) ylabel ('动态范围(DB)') 传奇(“官| |”,“信噪比”,“SINAD”,“位置”,'最好的事物')标题(“失真指标与输入衰减”)
该图显示了每个指标对应的可用动态范围。的级THD的值对应于无谐波的范围。同样,信噪比对应的是不受噪声影响的动态范围;SINAD对应的是无失真的总动态范围。
从图中可以看出,信噪比随着输入功率衰减的增大而降低。这是因为当你衰减信号时,只有信号被衰减,但放大器的噪声底保持不变。
还需要注意的是,总谐波失真的幅度会稳步提高,直到它与信噪比曲线相交,之后测量变得不稳定。当谐波“消失”在放大器的噪声之下时,就会发生这种情况。
放大器的实际衰减选择是26 dB(产生103 dB的SINAD)。这将是一个合理的折衷之间的谐波和噪声失真。
%搜索表中最大的SINAD读取[maxSINAD, iAtten] = max(失真表(:,3));流(“马克斯SINAD(%。1f dB)发生在%。f分贝衰减\ n”,...maxSINAD iAtten)
最大SINAD (103.7 dB)发生在26 dB衰减
让我们绘制衰减器设置为26 dB时的周期图。
inputVbestAtten = db2mag(-iAtten) * VmaxPk * sin(2*pi*Fi*t);outputVbestAtten = helperHarmonicDistortionAmplifier (inputVbestAtten);helperPlotPeriodogram (outputVbestAtten Fs,“权力”,'注释',“shownoise”);
这里我们还画出了总计横跨光谱传播的噪声功率。注意,在该衰减设置下,在光谱中仍然可见,但也可见,但也比总噪声功率相当低。如果我们要有一个使用可用频谱的较小带宽的应用程序,我们将受益于进一步提高衰减以降低谐波含量。
有时我们可以校正放大器的某些非线性。如果对放大器的输出进行数字化处理,通过对捕获的输出进行数字化后处理并对非线性进行数学校正,可以恢复更有用的动态范围。
在我们的例子中,我们用线性斜坡刺激输入,并拟合一个最适合输入的三阶多项式。
inputRamp = 2:0.00001:2;outputRamp = helperHarmonicDistortionAmplifier (inputRamp);polyCoeff = polyfit (outputRamp inputRamp 3)
polyCoeff =1×40.0010 -0.0002 1.0000 -0.0250
现在我们有了系数,我们可以在输出处进行后校正,并与原始的未校正输出进行并排比较
correctedOutputVmax = polyval(polyCoeff, outputVmax);helperPlotPeriodogram ([outputVmax;correctedOutputVmax], Fs,“权力”);次要情节(2,1,1)标题(“未纠结”)子图(2,1,2)标题(“多项式纠正”)
注意,当使用多项式校正时,第二和第三次谐波显著减少。
让我们用校正后的输出再重复一次测量。
ThdcorRectectVmax = THD(RECTENTIONOUTPUTVMAX,FS)
thdCorrectedVmax = -99.6194
SnrcorrectedVmax = SNR(RECTENTIONOUTPUTVMAX,FS)
snrCorrectedVmax = 130.7491
sinadCorrectedVmax = sinad(correctedOutputVmax, Fs)
sinadcorratedvmax = 99.6162
注意我们的SINAD(和THD)从60 dB降到了99 dB,同时保留了原来的131 dB的信噪比。
我们可以结合衰减和多项式评估来找到理想的工作电压,使我们的系统的总体SINAD最小化。
子图(1,1,1)%在我们的失真表中添加三列[nreading,3)]; / /将数据转换为0为了i = 1: nreads inputVreduced = db2mag(-i) * VmaxPk * sin(2*pi*Fi*t);outputVreduced = helperHarmonicDistortionAmplifier (inputVreduced);correctedOutput = polyval(polyCoeff, outputVreduced);失真表(i,4:6) = [abs(thd(correctedOutput, Fs)) snr(correctedOutput, Fs) sinad(correctedOutput, Fs)];结尾h =情节(distortionTable)
h = 6x1 Line array: Line Line Line Line . h = 6x1 Line array: Line Line Line Line
包含(“输入衰减(dB)”) ylabel ('动态范围(DB)')为了i = 1:3 h(i + 3).color = h(i).color;h(i + 3).linestyle =' - ';结尾传奇(”| |(未调整的),的信噪比(未调整的),'Sinad(未纠正)',...”| |(修正),'SNR(纠正)',“SINAD(修正),“位置”,'最好的事物')标题(“失真度量与输入衰减和多项式校正”);
在这里,我们已经绘制了所有的三个指标旁边的未校正和多项式校正放大器。
从图中可以看出,THD大大提高,而SNR不受多项式校正的影响。这是预期的,因为多项式校正仅影响谐波失真而不是噪声失真。
让我们展示当被多项式修正后的最大SINAD可能
[maxSINADcorrected, iAttenCorr] = max(失真表(:,6));流('修正:最大SINAD(%。1f dB) at %。f分贝衰减\ n”,...maxSINADcorrected iAttenCorr)
修正:最大SINAD (109.7 dB)在17 dB衰减
对于多项式校正放大器来说,放大器衰减的一个好的选择是20dB(产生109.8 dB的SINAD)。
用多项式的最大SINAD衰减设置重新编译放大器inputVreduced = db2mag(-iAttenCorr) * VmaxPk * sin(2*pi*Fi*t);outputVreduced = helperHarmonicDistortionAmplifier (inputVreduced);correctedOutputVbestAtten = polyval(polyCoeff, outputVreduced);helperPlotPeriodogram (correctedOutputVbestAtten Fs,“权力”,'注释',“shownoise”);标题(衰减多项式校正放大器的周期图)
请注意,除了在理想的衰减设置下,所有但第二次谐波完全消失了多项式校正。如前所述,在第二次谐波出现在总噪声机床的功率水平下面。这提供了使用放大器全带宽的应用程序中的合理权衡。
我们已经展示了如何将多项式校正应用于放大器的输出失真,以及如何选择一个合理的衰减值以减少谐波失真的影响。