ADC底噪,一个频谱分析时的常见误区
前言:ADC底噪的误区
很多 ADC 的性能指标需要借助频谱分析获得,大体流程为 ADC 先采集一组数据,然后在 PC 上通过 FFT 运算生成频谱图 。
在 ADC 的数据手册里也会展示这样的频谱图,比如下面截图来自 AD9444,它是 Analog Devices(ADI)的一款 ADC 芯片:
图2的左右分别是输入信号为 10.1 MHz 和 100.3 MHz 的频谱图,如文中介绍,它经过了 64K Points 的 FFT 运算。
备注一下:100.3 MHz 的输入经过 80 MSPS 的采样,根据奈奎斯特采样定理发生混频,因此折叠至 20 MHz 左右的位置。
仔细看图2,如果我们问这款 ADC 底噪是多少,该如何回答?
很多时候会凭直觉说: -120 dBFS。
这个说法是错的。
可能你也马上意识到,输入信号是 -0.5 dBFS,如果底噪是 -120 dBFS,两者相减, SNR 等于 119.5 dB,这明显与 ADC 的描述不符。
那么是哪里出了问题?
原因分析
FFT 将频谱图的横坐标分成很多 bin,参与 FFT 运算的点数是 M(上图为 64K Points),带宽是 Fs 采样率的一半(上图为 80 MSPS / 2 = 40 MHz),则 bin 的数量是 M / 2,且每个 bin 里面包含的 Δf 是 (Fs/2) / (M/2) = Fs / M。
频谱图的纵坐标表示 bin 的能量或幅度有效值,重点是它只代表一个 bin 内的情况。
对于 ADC SNR 来说,要计算信号与噪声之比,噪声来源于量化、热、时钟抖动等,重点是噪声分布在整个带宽范围内。
单个 bin 的噪声是 -120 dBFS 没错,但是如果将信号只与单个 bin 相比,结果肯定会比 SNR 要大。
现在我们来看下 ADI 经典的 MT 系列教程之一 MT-003 (参考资料[2])的说法,其中有一张图,展示了 SNR 与频谱图里 “ADC 底噪” 的关系,并且它还给这种所谓 “ADC 底噪” 赋予了一个准确名称,叫做 “FFT Noise Floor”,它不是真正的 “ADC 底噪” :
对于图中的例子:
- 采用了 N 为 12 bit 的 ADC ,FFT 点数 M 为 8192 Points;
- SNR 只考虑量化噪声,因此可根据理想公式计算 SNR,即 SNR = 6.02*N + 1.76 = 74 dB;
- FFT Noise Floor 的位置要低于 SNR ,并且 FFT Noise Floor 与 SNR 的位置差距也有一个计算公式,即 10 log ( M/2 ) = 36 dB;
- 两者相减,FFT Noise Floor = -74 - 36 = -110 dB,正好如图在频谱图纵坐标 -110 dB 的位置。
MT-003 文中将 FFT Noise Floor 与 SNR 的位置差距,定义为 “FFT Process Gain”。所以,要记住频谱图上看到的 FFT Noise Floor 低于 SNR,并且实际 ADC 噪声的计算,需要在整个带宽范围内累加而得。
此外,还需要注意 FFT bin 具有变化性。这种变化与“带宽”有关,也与“FFT 点数”有关。比如下图来自于 ADI 的另一片技术文章 “Use Noise Spectral Density to Evaluate ADCs in Software-Defined Systems”(参考资料[3]):
图中,带宽一样都是 150 MHz,区别是上半图 FFT 用了 524,288 Points,下半图 FFT 用了 8192 Points。造成一个 FFT Noise Floor 是约 -130 dB,另一个是约 -110 dB 的结果。
我们可以从这个角度理解:前者 bin 数量多,将带宽分割成更小的 Δf(频谱分辨率更高);后者 bin 数量少,将带宽分割成更大的 Δf(频谱分辨率低)。理想情况下总噪声不变,后者 bin 涵盖了更多的频率,也就 FFT Noise Floor 更高了。
ADC底噪的正确读法
回到图1 和 图2,我们再看看是否能根据图内信息推出正确的底噪。
首先将 -120 dBFS 的 FFT Noise Floor,改为线性数值,即:10^(-120/10) = 10^(-12)
FFT 一共有 64K Points,但带宽范围是 Fs/2,对应 FFT bin 数量是 M/2,将其在带宽范围内进行累加,即:10^(-12) * 64,000/2 = 0.000000032
再将其变换为 dBFS,为:10 * log(0.000000032) = −74.95 dBFS
这个 -74.95 dBFS 就是 ADC 底噪。
考虑到输入信号是 -0.5 dBFS,两者相减为 SNR,即:SNR = -0.5 - (-74.95) = 74.45 dB
这样就与 AD9444 描述的 SNR 为 72.3 dB 、73.9 dB 等情况比较接近了,具体差异可能来自于对频谱图的精确读数,估计 FFT Noise Floor 实际比 -120 dBFS 略高一点。
我们也可以用前文 FFT Process Gain 的公式来验证一下,FFT Process Gain = 10 log ( M/2 ) = 10 log ( 64,000/2 ) = 45.05 dB
然后计算 SNR ,即 SNR = Input Level - FFT Noise Floor - FFT Process Gain = -0.5 - (-120) - 45.05 = 74.45 dB
总结
本文介绍了 ADC 数据手册中常见的频谱图,需注意频谱图里的噪声是 FFT Noise Floor,它不代表 ADC 底噪,应用 FFT Process Gain 等公式纠正后计算 SNR。
参考资料
- ADI AD9444 Datasheet: https://www.analog.com/en/products/ad9444.html
- ADI MT-003: https://www.analog.com/media/en/training-seminars/tutorials/mt-003.pdf
- ADI Use Noise Spectral Density to Evaluate ADCs in Software-Defined Systems: https://www-cce.cldnet.analog.com/media/en/technical-documentation/tech-articles/Use-Noise-Spectral-Density-to-Evaluate-ADCs-in-Software-Defined-Systems.pdf
欢迎关注我的微信公众号“疯狂的运放”
,及时收到最新的推文。