4、过采样技术:过采样的基本原理、噪声整形概念、过采样对SNR的提升计算
各位同学,咱们今天聊聊过采样。这玩意儿在音频ADC/DAC里,可以说是「化腐朽为神奇」的关键技术。我当年刚入行时,总觉得过采样就是「多采几个点嘛,有啥了不起的」。后来被现实狠狠教育了一顿——嗯,这里面的门道,比你想象的要深得多。
4.1 过采样的基本原理
先说说什么是过采样。说白了,就是用远高于奈奎斯特频率的采样率去采集信号。
奈奎斯特告诉我们:要无失真地恢复一个最高频率为fB的信号,采样率至少得是2fB。这个2fB,我们叫它奈奎斯特频率fN。
那过采样率(OSR)怎么定义?很简单:
OSR = f_s / (2 × f_B) = f_s / f_N
其中fs是实际采样率,fB是信号带宽。
举个例子:你要处理20kHz的音频信号,理论上40kHz就够了。但如果你用2.8224MHz去采(这是SACD的采样率),那OSR就是:
OSR = 2.8224 MHz / 40 kHz ≈ 70.56
为什么要这么干?我告诉你,核心原因有两个:
- 降低对抗混叠滤波器的要求——采样率越高,镜像频谱离得越远,模拟滤波器可以做得更简单
- 提升信噪比——这是咱们今天的重点
我个人习惯把过采样比作「用更宽的画布去画同一幅画」。画布宽了,你就有更多空间去处理细节,误差也被稀释了。
4.2 噪声整形概念
好,接下来是重头戏——噪声整形。这个概念我第一次接触时,觉得它简直像魔术。
先想一个问题:量化噪声的功率谱密度是什么样的?
在传统ADC里,量化噪声被认为是白噪声,均匀分布在0到fs/2的频带内。总噪声功率是Δ²/12,其中Δ是量化步长。
那过采样怎么提升SNR?很简单——噪声总功率不变,但分布带宽变宽了。落在信号带宽内的噪声就少了。
等等,这还不是噪声整形。真正的噪声整形,是通过反馈环路把噪声「推」到高频去。
我给大家画个简单的框图(用文字描述):
输入 → [积分器] → [量化器] → 输出
↑ ↓
└── [反馈DAC] ←┘
这就是一阶Δ-Σ调制器的结构。它的传递函数有个特点:
- 对信号:低通特性(信号无损通过)
- 对量化噪声:高通特性(噪声被推到高频)
为什么会这样?因为反馈环路对量化噪声做了差分处理。你想想看,量化器产生的误差,经过反馈后会被下一次量化「修正」。这个修正过程,本质上就是对噪声做了一阶高通滤波。
关键结论:噪声整形把低频段的噪声「搬」到了高频段。而高频段的噪声,后面可以用数字低通滤波器轻松滤掉。
我在项目中遇到过一阶调制器不够用的情况。那时候做一款24bit音频ADC,一阶调制器死活达不到目标SNR。后来换成三阶调制器,噪声整形效果好了不止一个数量级。嗯,这里要提醒大家:阶数越高,稳定性越难保证,这是个trade-off。
4.3 过采样对SNR的提升计算
终于到了算账的时候。过采样到底能提升多少SNR?咱们一步步来。
4.3.1 单纯过采样(无噪声整形)
先看最简单的情况:只过采样,不做噪声整形。
量化噪声总功率:
P_n = Δ² / 12
这个功率均匀分布在0到fs/2之间。噪声功率谱密度(PSD)为:
S_n(f) = Δ² / (12 × f_s/2) = Δ² / (6f_s)
落在信号带宽fB内的噪声功率:
P_n,inband = S_n(f) × f_B = (Δ² / (6f_s)) × f_B
因为fs = OSR × 2fB,代入得:
P_n,inband = (Δ² / (6 × OSR × 2f_B)) × f_B = Δ² / (12 × OSR)
所以SNR提升为:
SNR_improvement = 10 × log₁₀(OSR) [dB]
OSR每翻一倍,SNR提升3dB。说白了,就是半个bit的精度提升。
| OSR | SNR提升(dB) | 等效bit数提升 |
|---|---|---|
| 2 | 3.0 | 0.5 |
| 4 | 6.0 | 1.0 |
| 8 | 9.0 | 1.5 |
| 16 | 12.0 | 2.0 |
| 64 | 18.0 | 3.0 |
看到没?OSR到64了,才提升3个bit。效率有点低啊。
4.3.2 过采样 + 一阶噪声整形
现在加上一阶噪声整形。一阶Δ-Σ调制器的噪声传递函数(NTF)为:
NTF(z) = 1 - z⁻¹
在频域中,它的幅度响应是:
|NTF(f)| = 2 × sin(πf / f_s)
当f << f_s时,近似为:
|NTF(f)| ≈ 2πf / f_s
所以带内噪声功率为:
P_n,inband = ∫₀^fᴮ (Δ² / (6f_s)) × (2πf/f_s)² df
算出来(我跳过中间步骤,直接给结果):
P_n,inband = (Δ² × π²) / (18 × OSR³)
对比无噪声整形时的Δ²/(12×OSR),SNR提升为:
SNR_improvement = 10 × log₁₀(OSR³) - 10 × log₁₀(π²/1.5)
≈ 30 × log₁₀(OSR) - 3.2 [dB]
OSR每翻一倍,SNR提升约9dB!相当于1.5个bit。
我的经验:一阶调制器配合OSR=64,理论上能提升约30×log₁₀(64) - 3.2 ≈ 51dB。加上1bit量化器本身的6dB,总SNR约57dB,相当于9bit左右。够用吗?做语音还行,做Hi-Fi音频就差了。
4.3.3 高阶噪声整形
对于L阶Δ-Σ调制器,带内噪声功率与OSR的关系为:
P_n,inband ∝ 1 / OSR^(2L+1)
SNR提升为:
SNR_improvement ≈ (20L + 10) × log₁₀(OSR) - C [dB]
其中C是与调制器阶数有关的常数。
| 调制器阶数L | OSR翻倍时SNR提升 | 典型OSR=64时提升 |
|---|---|---|
| 0(无整形) | 3 dB | 18 dB |
| 1 | 9 dB | ~51 dB |
| 2 | 15 dB | ~84 dB |
| 3 | 21 dB | ~117 dB |
| 4 | 27 dB | ~150 dB |
注意:高阶调制器(L≥3)存在稳定性问题。我曾经在做一个四阶调制器时,仿真跑得好好的,一上芯片就振荡。后来发现是环路增益偏差导致极点移到了单位圆外。解决方案是限制输入幅度,或者用多bit量化器。
4.4 实际设计中的考量
讲完了理论,说说实际干活时要注意什么。
第一,OSR不是越高越好。OSR高了,数字滤波器功耗大,时钟抖动敏感。我见过有人把OSR做到512,结果功耗比模拟部分还高,得不偿失。
第二,噪声整形有代价。高阶调制器虽然SNR漂亮,但动态范围会受限。输入信号太大,调制器就饱和了。这叫「稳定性与动态范围的trade-off」。
第三,别忘了数字滤波器。过采样和噪声整形只是前半段。后半段要用数字低通滤波器把高频噪声滤掉,再降采样回奈奎斯特率。这个滤波器设计不好,前面的一切努力都白费。
我曾经在一个项目里,调制器做得完美,SNR仿真值120dB。结果数字滤波器通带纹波太大,把带内噪声又「晃」回来了。最后实测SNR只有98dB。教训就是:系统设计要整体考虑,不能只盯着一个模块。
4.5 小结
咱们今天聊了过采样的三个核心点:
- 基本原理:用高OSR换取低噪声密度和宽松的滤波器要求
- 噪声整形:通过反馈环路把噪声推到高频,再滤掉
- SNR计算:无整形时3dB/倍频,一阶9dB/倍频,高阶更猛
最后说一句:过采样技术是音频数据转换器的基石。你想想看,没有它,我们怎么可能用1bit的量化器做出120dB动态范围的DAC?这就是工程艺术的魅力。
下一章咱们聊多bit量化器和MASH结构,那又是另一番天地了。