本帖最后由 nethopper 于 2019-3-1 23:48 编辑
三、如何避免或减小频谱泄漏
3.1 什么是频谱泄漏
要测准总谐波失真THD首先要解决FFT最常见又最令人头痛的频谱泄漏问题。对一个信号做快速傅里叶变换(FFT)就必然要对其在时域进行截断,然后在有限长度的数据上进行分析。FFT算法假定在所截取的数据之外的信号正好是所截取数据的周期延拓,也就是所截取数据的周期性重复。如果一个FFT数据段正好包含了被测信号的整数个周期,则经过周期延拓出来的信号将与被测信号的实际情况完全一致,这时得到的频谱将真实反映原信号的频谱。否则在周期延拓的边界处,信号将出现不连续的现象,这与被测信号的实际情况不完全一致,反映到频谱上,就会出现所谓的频谱泄漏现象,其结果是本来应该属于某个单频点的能量向该频点以外的频点扩散开来。在失真测量中,频谱泄漏会造成所测试的正弦信号的基波和谐波幅度不准确,噪音成分增大,测得的结果完全不准确。
下图是一个存在严重频谱泄漏的例子。[采样频率] = 48 kHz,[信号频率] = 1 kHz(由于软件生成的理想信号),[FFT点数] = 32768,[信号周期数] = 1000 / 48000 × 32768 = 682.6667,[采样位数] = 24,[窗函数] = 矩形窗,FFT数据段尾部无补零(因为采样点数为48000,大于FFT点数32768,所以不用补零)。由于FFT数据段中包含的[信号周期数]不为整数,所以不是整周期采样,频谱泄漏严重,从图中可看到各次谐波谱线完全被泄漏的频谱所淹没,测得的结果为:THD = 0.1664 % (-55.85 dB), THD+N = 14.2383% (-16.93 dB),SINAD = 16.93 dB,SNR = 16.84 dB,ENOB = 2.52 Bit,很明显这些测量结果对于一个24位完全理想的正弦波是完全错误的。
图1 非整周期采样+矩形窗(不加窗)导致严重频谱泄漏
3.2 频谱泄漏的解决方法
3.2.1 整周期采样或称为相干采样(Coherent Sampling)法
避免频率泄漏的方法是之一是采用所谓的整周期采样或称为相干采样(Coherent Sampling),就是要保证FFT数据段的采样时间正好是信号周期的整数倍,用公式表达为:[采样频率]/[信号频率]= [FFT点数]/ [信号周期数]。其中FFT点数取为2的N次方。为了避免重复采样,即避免在所采集到的各个信号周期中出现任何两个周期采集到同样一组数据的情况,这个[信号周期数]最好是除开2以外的质数。
下图是一个采用整周期采样的例子。[采样频率] = 48 kHz,[信号频率] = 1000.48828125 Hz(由于软件生成的理想信号),[FFT点数] = 32768,[信号周期数] = 1000.48828125 /48000 × 32768 = 683,[采样位数] = 24,[窗函数] = 矩形窗,FFT数据段尾部无补零(因为采样点数为48000,大于FFT点数32768,所以不用补零)。由于FFT数据段中包含的[信号周期数]为整数,属整周期采样,无频谱泄漏,测得的结果为:THD = 0.0000032 % (-149.80 dB), THD+N = 0.0000032 % (-150.00 dB),SINAD = 150.00 dB, SNR = 1000 dB (溢出,因理想正弦波噪声几乎为零), ENOB = 24 Bit,这些测量结果反映了软件在24位整周期采样情况下所能测得的最理想的数据,所测得THD和THD+N远小于常用的HIFI音频设备的失真与噪声,说明这些参数选择可用于高保真音频设备的测量,它们从软件层面保证了这些测量的准确性。那么为什么完全理想的正弦波仍然能测到失真和噪声?其实这些残余的失真与噪声主要是量化噪声以及数值计算的残留误差造成的,这将在后面详述。
图2 整周期采样 + 矩形窗(不加窗)无频谱泄漏
3.2.2 加窗法
当无法实现整周期采样时,要减小频谱泄漏,就必须采取给截断后的数据加窗的方法。此法要求FFT数据段包含的信号周期数目不能过少,采样点数越多,包含的信号周期越多,周期延拓的边界不连续部分占所采集数据的比例越小,对频谱泄漏的抑制效果越好。
对于THD测量,应选取能最大限度地将信号能量集中于主谱线附近的,就是主瓣比较大的大头窗,推荐Kaiser 6~ Kaiser10。
下图是在图1的基础上,将矩形窗改为能极大压制频谱泄漏的Kaiser 8窗,其它参数完全不变测得的,其结果为:THD = 0.0000055 % (-145.23 dB), THD+N = 0.0000046% (-146.76 dB),SINAD = 146.76 dB, SNR = 1000 dB (溢出,因理想正弦波噪声几乎为零), ENOB = 24 Bit,这些测量结果反映了软件在24位非整周期采样且加窗分析的情况下所能测得的最理想的数据,所测得THD和THD+N远小于常用的高保真HIFI音频设备的失真与噪声,说明这些参数选择可用于高保真音频设备的测量,它们从软件层面保证了这些测量的准确性。同样地,为什么完全理想的正弦波仍然能测到失真和噪声?这些残余的失真与噪音主要是量化噪声以及数值计算的误差造成的,这将在后面详述。
图3 非整周期采样 + Kaiser 8窗可极大减小频谱泄漏
仔细观察图3的1kHz的主谱线比图2的略低也略宽,这是因为图3虽然采用了加窗的办法来抑制频谱泄漏,但它只是将泄漏的能量聚集在主谱线附近的多条谱线上以避免向更远的地方泄漏,却无法将其汇聚到一条单一的谱线上,不过这已经足以通过软件算法来实现精准计算了。
3.2.3 选择整周期采样还是选择采集多个信号周期再加窗?
正如前面的图2和图3两个例子,如果条件允许,两种方法都可以用,结果差不多。如果实际测量中存在某些限制,则需要做出正确选择。比如说,如果采样点数有限,无法在一个FFT段内采集较多的信号周期数,则应选择整周期采样,因为即使只采集一个整周期,也能正常工作。而当采集的周期数目较少时,加窗法的误差会比较大。
如果测量仪器的ADC和DAC不共用同一采样时钟,则应采用加窗法来测量,因为两个时钟的不同步抖晃(Jitter)同样会造成一定程度的频谱泄漏。那么满足整周期采样条件时,能将矩形窗(即:不加窗)改为比如Kaiser 6窗吗?当然可以,测得的THD和THD+N等参数不会有太大的区别,只是这时加窗反而会造成轻微的频谱泄漏,信号能量不会集中于一条单一的谱线上,而是集中到主谱线周围相邻的几条谱线上,当然这仍然可通过软件来实现精准测量
|