3. 数字音频基础:采样定理、量化与信噪比

好,我们进入数字音频的核心地带。说白了,就是把连续的声波,变成一串离散的数字。这个过程,你绕不开三个东西:采样、量化、编码。今天我们先啃前两个,顺便把信噪比和动态范围讲透。

3.1 采样定理(奈奎斯特)

先问个问题:为什么CD要用44.1kHz采样率?为什么不是20kHz?

答案就在奈奎斯特采样定理里。定理说:要无失真地重建一个模拟信号,采样频率必须至少是信号最高频率的两倍。

核心公式:

fs ≥ 2 × fmax

其中 fs 是采样频率,fmax 是信号最高频率。

这个两倍的频率,就叫奈奎斯特频率。低于这个频率的采样,会产生一种叫“混叠”的现象——高频信号会伪装成低频信号混进来,你根本听不出来,但波形已经坏了。

我记得刚做Codec驱动时,遇到一个案子:客户说录音里有“嗡嗡”的低频噪声,查了半天,发现是ADC前端的抗混叠滤波器没做好,一个15kHz的噪声被采样后折叠到了3kHz附近。嗯,这就是典型的混叠。

避坑指南:

我曾经在调试I2S接口时,发现采样率配置错了。Codec的MCLK分频设成了44.1kHz,但实际音频数据是48kHz的。结果就是声音变调,像磁带卡住一样。所以,采样率必须严格匹配,差一点都不行。

常见的采样率有这些:

采样率 (kHz) 奈奎斯特频率 (kHz) 典型应用
8 4 电话语音
44.1 22.05 CD音频
48 24 DVD、专业音频
96 48 高清音频
192 96 超高保真录音

你想想看,为什么电话只用8kHz?因为人声的主要能量集中在300Hz到3.4kHz,8kHz采样足够覆盖。但你要是拿它放音乐,高频全没了,声音发闷。

3.2 量化与量化噪声

采样把时间轴离散化了,量化则是把幅度轴离散化。每个采样点,我们用一个有限位数的数字来表示它的幅度。

比如16位量化,就是把信号的动态范围分成65536个台阶。每个台阶对应一个数字。台阶越细,精度越高,但代价是数据量更大。

量化误差,就是实际模拟值与量化后的数字值之间的差值。这个差值,在频域上表现为一种噪声——量化噪声。

量化噪声的功率:

Pn = Δ² / 12

其中 Δ 是量化步长(LSB的大小)。

Δ = Vref / 2N

Vref 是参考电压,N 是位数。

量化噪声是均匀分布的,从0到fs/2。所以,采样率越高,噪声被摊开的频带越宽,带内的噪声密度就越低。这就是过采样技术的理论基础。

我个人习惯在设计Codec时,先算一下量化噪声的底噪。比如一个16位ADC,参考电压3.3V,量化步长大约是50μV。量化噪声功率算下来,等效到输入端,大概在-98dBFS左右。这个值,基本决定了ADC的动态范围上限。

小技巧:

实际Codec的量化噪声往往比理论值高3-6dB,因为还有热噪声、电源噪声、时钟抖动等因素。所以,选型时别只看位数,要看实测的SNR和THD+N。

3.3 信噪比(SNR)与动态范围

这两个概念经常被混用,但严格来说,它们不一样。

  • 信噪比(SNR): 信号功率与噪声功率的比值。通常用dB表示。对于满幅正弦波输入,理论SNR = 6.02N + 1.76 dB。
  • 动态范围(DR): 系统能处理的最大信号与最小信号(通常指噪声底)的比值。对于理想ADC,动态范围等于SNR。

但实际中,动态范围往往比SNR大,因为你可以用更小的信号,只要它还在噪声底之上。比如一个24位Codec,理论SNR约146dB,但实际能做到120dB就算顶级了。

位数 (N) 理论SNR (dB) 实际典型值 (dB) 应用场景
8 49.9 40-45 低端语音
16 98.1 85-95 CD音质
24 146.2 110-125 专业录音
32 194.3 130-140 高端测量

为什么会这样?因为实际电路有热噪声、电源纹波、时钟抖动、非线性失真等。你想想看,一个24位ADC的LSB只有几微伏,而电路板上的噪声随便就是几十微伏。所以,高位数Codec的瓶颈往往不在量化器本身,而在模拟前端。

避坑指南:

我曾经调试一个24位Codec,发现SNR始终只有100dB,离手册标称的120dB差很远。查了半天,发现是电源去耦电容没焊好,导致电源噪声耦合进了模拟输入。换了个低ESR的电容,SNR直接提升了15dB。所以,Layout和电源设计,比Codec本身更重要。

3.4 知识体系图

下面这张图,把采样、量化、信噪比的关系串起来了。你可以看到,从模拟信号到数字信号,每一步都有代价。

数字音频基础框架图 数字音频基础:采样 → 量化 → 信噪比 模拟信号 采样 量化 采样定理 fs ≥ 2 × fmax 避免混叠 量化噪声 Pn = Δ² / 12 均匀分布噪声 信噪比 (SNR) SNR = 6.02N + 1.76 dB 动态范围 ≈ SNR 采样决定频域完整性,量化决定幅度精度 信噪比是两者共同作用的结果

从图里你可以看到,采样和量化是串联的,但它们的噪声机制不同。采样带来混叠风险,量化带来量化噪声。最终的信噪比,是两者叠加的结果。实际Codec设计时,还要考虑模拟前端的噪声,所以最终SNR往往低于理论值。