3. 数字音频基础:奈奎斯特定理与采样率、量化与量化噪声、ADC/DAC架构简介、数字音频接口

各位好,欢迎来到第三章。这一章我们聊聊数字音频的根基。说白了,就是怎么把连续的声音信号,变成计算机能处理的0和1。

我见过不少刚入行的朋友,觉得这部分太理论,直接跳过。结果呢?做出来的产品要么噪声大,要么高频失真。嗯,基础不牢,地动山摇。咱们今天就把这几个核心概念彻底讲透。

3.1 奈奎斯特定理与采样率

先问个问题:为什么CD的采样率是44.1kHz?不是44.0,也不是48?

答案就在奈奎斯特定理里。定理说得很清楚:采样频率必须大于信号最高频率的两倍。否则就会发生混叠——高频信号会伪装成低频信号混进来,你根本分不清。

核心公式: fs > 2 × fmax

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

人耳能听到的上限大约是20kHz。所以理论上40kHz就够了。但实际滤波器做不到那么陡峭的截止,得留点余量。44.1kHz就是这么来的——20kHz × 2.205 = 44.1kHz。多出来的0.205倍,就是给模拟抗混叠滤波器留的过渡带。

我个人习惯在设计系统时,采样率至少留20%的余量。比如处理20kHz信号,我绝不会卡着40kHz,至少用48kHz。48kHz是专业音频的标准,也是很多DSP芯片的常用主时钟。

避坑指南: 我曾经在一个项目里,为了省功耗,把采样率从48kHz降到44.1kHz。结果发现ADC的模拟前端滤波器设计没跟上,高频段出现了明显的混叠噪声。后来不得不重新设计滤波器,工期拖了两周。所以,采样率的选择不是拍脑袋定的,要跟模拟前端一起考虑。

常见的采样率有这些:

采样率 应用场景 最高理论频率
8 kHz 电话语音 4 kHz
16 kHz 宽带语音 8 kHz
44.1 kHz CD、MP3 22.05 kHz
48 kHz 专业音频、DVD 24 kHz
96 kHz 高解析度音频 48 kHz
192 kHz 超高解析度、录音 96 kHz

你想想看,96kHz和192kHz真的有必要吗?从理论上讲,人耳听不到24kHz以上的声音。但有些工程师认为,更高的采样率能保留超声波段的相位信息,对低频的瞬态响应有改善。我个人持保留态度,但在某些高端录音设备上,确实有它的价值。

3.2 量化与量化噪声

采样是把连续时间离散化,量化则是把连续幅度离散化。说白了,就是用有限个数字去表示无限个可能的电压值。

假设一个ADC的位数是N位,那么它能把信号分成2N个等级。16位就是65536个等级,24位就是16777216个等级。等级越多,精度越高,但代价也越大——数据量更大,成本更高。

量化过程一定会引入误差。这个误差就是量化噪声。它的功率可以用一个简单的公式估算:

量化噪声功率: σ2 = Δ2 / 12

其中 Δ 是量化步长(LSB对应的电压值)。

量化噪声的频谱是平坦的,从0Hz一直延伸到采样率的一半。这就是为什么它被称为“白噪声”。

信噪比(SNR)跟位数直接相关:

SNR ≈ 6.02 × N + 1.76 dB

16位ADC的理论SNR大约是98dB。24位则是146dB。但实际中你永远达不到这个值。为什么?因为还有热噪声、时钟抖动、电源噪声等等。

注意: 量化噪声是均匀分布的,但前提是输入信号足够“活跃”。如果输入信号是静音或者极小的信号,量化噪声就不再是白噪声了,而是变成与信号相关的失真。这就是所谓的“量化失真”。在低电平信号下,这种失真特别明显。我建议在DSP里加一个微弱的抖动信号(dither),可以有效改善这个问题。

我曾经调试过一个语音采集模块,16位ADC,信噪比始终只有70dB左右。查了半天,发现是电源纹波太大,耦合到了ADC的参考电压上。后来换了低噪声LDO,SNR直接提升了15dB。所以,量化噪声不只是ADC本身的事,整个模拟链路的噪声都会叠加进来。

3.3 ADC/DAC架构简介

ADC和DAC的架构有很多种,但音频领域最常见的是两种:Sigma-Delta(Σ-Δ)和SAR(逐次逼近)。

3.3.1 Sigma-Delta ADC/DAC

Sigma-Delta是当前音频ADC/DAC的主流架构。它的核心思想是:用极高的采样率(过采样)和极低的位数(通常1位)来换取高精度。

工作原理大致是这样的:

  1. 过采样: 以远高于奈奎斯特频率的速率采样(比如64倍或128倍)。
  2. 噪声整形: 通过反馈环路,把量化噪声推到高频段。
  3. 数字滤波: 用低通滤波器滤掉高频噪声,再把采样率降回目标值。

Sigma-Delta的优点很明显:精度高(轻松做到24位),线性度好,对模拟前端的抗混叠滤波器要求低。缺点呢?延迟大,对时钟抖动敏感。

个人经验: 我在做一款高端音频解码器时,用了Sigma-Delta DAC。刚开始时钟抖动没处理好,导致底噪里出现了明显的“嘶嘶”声。后来在时钟路径上加了一个低抖动的PLL,问题才解决。Sigma-Delta对时钟的要求,比你想的要高得多。

3.3.2 SAR ADC

SAR(逐次逼近寄存器)ADC是另一种常见架构。它用二分法逐位逼近输入电压。比如12位SAR,需要12个时钟周期完成一次转换。

SAR的优点:功耗低,延迟小,没有流水线延迟。缺点:精度有限(通常不超过16位),对输入信号的建立时间有要求。

SAR ADC常用于多通道同步采样场景,比如麦克风阵列。因为它的延迟是确定的,而且每个通道可以独立工作。

特性 Sigma-Delta SAR
精度 高(16-32位) 中(8-16位)
功耗 中高 低
延迟 大(多周期) 小(单周期)
抗混叠要求 低 高
典型应用 高保真音频 多通道采集、控制

我建议你在选择ADC架构时,先问自己三个问题:需要多少位精度?延迟能不能接受?功耗预算多少?答案自然就出来了。

3.4 数字音频接口

ADC和DAC转换出来的数字信号,需要通过接口传输。音频领域最常见的三种接口是:I2S、TDM和PDM。

3.4.1 I2S

I2S(Inter-IC Sound)是飞利浦在80年代制定的标准。它用三根线传输立体声音频:

  • BCLK(位时钟): 每个数据位一个脉冲。
  • LRCLK(左右声道时钟): 频率等于采样率,高电平左声道,低电平右声道。
  • SDATA(数据线): 串行传输音频数据。

I2S的格式很灵活。数据位宽可以是16、24、32位。BCLK的频率 = 采样率 × 位宽 × 通道数。比如48kHz采样、24位立体声,BCLK = 48k × 24 × 2 = 2.304MHz。

注意: I2S的LRCLK在数据变化前一个BCLK周期切换。这是I2S和左对齐(Left-Justified)格式的区别。很多新手在这里栽跟头,数据总是对不上。

3.4.2 TDM

TDM(时分复用)是I2S的扩展。它用一根数据线传输多个通道。比如8通道TDM,每个帧周期内依次传输8个通道的数据。

TDM的典型应用是麦克风阵列。一个阵列有4个、8个甚至16个麦克风,用TDM一根线就能搞定。BCLK频率 = 采样率 × 位宽 × 通道数。16通道、48kHz、24位,BCLK = 48k × 24 × 16 = 18.432MHz。

我建议在设计TDM总线时,注意信号完整性。频率高了,走线长度、阻抗匹配、串扰都会成为问题。我曾经在一个16通道的阵列项目里,TDM时钟跑到20MHz以上,结果数据线串扰严重,导致误码。后来调整了PCB布局,加长了保持时间,才稳定下来。

3.4.3 PDM

PDM(脉冲密度调制)是MEMS麦克风常用的接口。它只有一根数据线和一根时钟线。数据是1位的高速比特流,密度代表信号幅度。

PDM的采样率很高,通常是1MHz到4MHz。但它的数据是1位的,所以需要后续的抽取滤波器(decimation filter)转换成多位的PCM数据。

PDM的优点:接口简单,抗干扰能力强。缺点:需要额外的DSP资源做抽取滤波。

避坑指南: 我曾经用PDM麦克风做语音唤醒。刚开始直接用MCU的GPIO读PDM数据,结果CPU占用率飙升到80%。后来换了一个带PDM接口的DSP,硬件直接做抽取滤波,CPU占用率降到5%。所以,选型时一定要考虑后续处理能力。

下面这张图展示了三种接口的典型连接方式:

数字音频接口对比 I2S 主设备 I2S 从设备 BCLK LRCLK SDATA TDM 主设备 从1 从2 从N BCLK FSYNC SDATA PDM 主设备 PDM 从设备 CLK DATA I2S TDM PDM