2. 数字音频基础

在I2S/TDM多通道音频硬件设计中,所有时钟、数据线、通道映射的最终目的,都是把模拟声音可靠地转换为数字比特流,再在接收端还原。理解采样率、位深、量化噪声、PCM编码以及音频数据流与时钟的关系,是读懂I2S时序图、配置TDM时隙、判断爆音与底噪问题的前提。本节从“模拟到数字”的链路出发,把这些概念串成一条可验证的硬件设计线索。

一、核心原理:从连续声波到离散比特

声音本质是随时间连续变化的模拟压力波。数字音频系统要做的第一件事是采样:以固定时间间隔读取模拟幅度,把连续时间轴变成离散时间点。这个固定间隔的倒数就是采样率(fs),常见值有8 kHz、16 kHz、44.1 kHz、48 kHz、96 kHz、192 kHz。采样率决定可表示的最高频率,依据奈奎斯特准则,可无混叠还原的带宽上限为fs/2。例如48 kHz系统理论带宽为24 kHz,覆盖人耳可听范围。

第二件事是量化:把每个采样点的连续幅度映射到有限个离散电平。量化位数就是位深(bit depth),常见16 bit、24 bit、32 bit。位深决定幅度分辨率,也决定理论动态范围。理想情况下,量化信噪比近似为6.02N+1.76 dB,其中N为位深。16 bit约98 dB,24 bit约146 dB。这个公式是硬件选型时判断“底噪是否够低”的快速标尺。

第三件事是编码:把量化后的整数按约定格式排列成二进制流。PCM(脉冲编码调制)是最基础、最通用的线性编码方式,I2S和TDM传输的音频数据本质上都是PCM样本。PCM样本可以是左对齐、右对齐或I2S格式,区别在于有效位在帧中的位置,而不是数值本身。

模拟声波 → 采样 → 量化 → PCM编码 → I2S/TDM数据流 模拟声波 连续时间 / 连续幅度 采样 fs = 48 kHz 离散时间点 量化 24 bit 离散幅度电平 PCM编码 线性二进制样本 左/右对齐 / I2S I2S / TDM 多通道数据流 SCK / WS / SD 时钟关系:SCK、WS、SD 的层级与频率 SCK 位时钟 SCK = fs × 位深 × 通道数 例:48k × 32 × 2 = 3.072 MHz 每一位数据对应一个SCK周期 WS 帧同步 WS = fs 一个周期 = 左声道 + 右声道 TDM中一个周期含N个时隙 SD 数据线 数据速率 = fs × 位深 × 通道数 与SCK同源,由SCK采样 MSB通常延迟1个SCK

二、量化噪声与位深选择

量化噪声来自“连续幅度被四舍五入到离散电平”这一不可逆过程。它通常被近似为均匀白噪声,幅度约为±0.5 LSB。位深每增加1 bit,量化台阶减半,噪声功率下降约6 dB,动态范围提升约6 dB。因此24 bit相对16 bit,理论动态范围多出约48 dB,这对高保真录音、远场拾音和低电平细节保留非常关键。

硬件设计中要注意:位深并不等于“有效位数”。ADC/DAC的实际ENOB(有效位数)受模拟前端噪声、参考电压抖动、电源纹波和时钟抖动限制。一个标称24 bit的Codec,若模拟底噪较大,实际可能只有18~20 bit有效。因此选型时应同时看THD+N、SNR、动态范围,而不是只看“支持24 bit”。

快速估算:若系统要求底噪低于-100 dBFS,则至少需要约17 bit有效位;若要求-120 dBFS,则至少需要约20 bit有效位。设计时建议留3~6 dB余量。

三、PCM编码与数据流组织

PCM把每个采样点的量化值表示为二进制补码整数。以24 bit单声道为例,一个样本占3字节;立体声则按L/R交替排列。I2S协议规定:WS变化后,数据在SCK边沿逐位输出,MSB通常比WS边沿延迟一个SCK周期。TDM则把多个通道塞进同一个WS帧内,每个通道占用固定时隙(slot),时隙宽度通常为32 bit。

下面是一个典型的TDM 8通道、32 bit时隙、48 kHz采样率的参数计算:

fs        = 48000 Hz
slot_bits = 32
channels  = 8
SCK       = fs × slot_bits × channels
          = 48000 × 32 × 8
          = 12.288 MHz
WS        = fs = 48 kHz
每帧时长  = 1 / 48000 ≈ 20.833 μs
每时隙时长 = 1 / (48000 × 8) ≈ 2.604 μs

这些数字直接决定PCB走线、时钟树和Codec配置。若SCK过高而走线过长,容易引起建立/保持时间不足;若WS与SCK相位关系配置错误,则会出现左右声道交换或通道错位。

四、案例:48 kHz/24 bit立体声与TDM 8通道对比

项目 I2S 立体声 TDM 8通道
采样率 fs 48 kHz 48 kHz
位深 24 bit 24 bit(32 bit时隙)
通道数 2 8
WS频率 48 kHz 48 kHz
SCK频率 48k × 32 × 2 = 3.072 MHz 48k × 32 × 8 = 12.288 MHz
数据线 1根SD,L/R交替 1根SD,8个时隙循环
典型应用 耳机、立体声Codec 麦克风阵列、车载音频

五、常见误区与复盘

  • 误区一:采样率越高越好。采样率提高会增加SCK频率和数据吞吐,若后端DSP或存储带宽不足,反而引入丢帧。应按应用带宽需求选择,语音常用16 kHz,音乐常用48 kHz,高保真才上96/192 kHz。
  • 误区二:位深等于精度。位深只是理论分辨率,实际精度受模拟噪声、时钟抖动和电源质量限制。24 bit系统若时钟抖动大,ENOB可能明显下降。
  • 误区三:WS和SCK可以任意配置。WS必须与SCK保持整数倍关系,且TDM时隙数、位深、通道数必须与Codec寄存器一致,否则会出现通道错位或数据截断。
  • 误区四:忽略MSB延迟。I2S标准要求MSB在WS边沿后延迟一个SCK,若主控配置为“左对齐”而Codec配置为“I2S”,会导致数据整体偏移一位,表现为音量减半或噪声。

排障提示:若听到周期性“咔哒”声,优先检查WS与SCK是否同源、PLL是否锁定;若底噪偏高,优先检查量化位深、模拟前端增益和电源纹波;若左右声道反相,检查WS极性及L/R时隙顺序。

把采样率、位深、量化噪声、PCM编码和时钟关系放在同一张链路图中理解,就能在硬件设计时快速判断:SCK是否超限、WS是否匹配、时隙是否对齐、底噪是否达标。这些判断直接决定I2S/TDM系统能否稳定传输多通道音频。