1. 音频Codec基础:在SoC中的位置与数字音频总线
音频Codec(Coder-Decoder)是嵌入式SoC系统中连接数字音频处理与模拟声音世界的核心器件。理解Codec在系统中的位置、模拟/数字域的划分以及数字音频总线协议,是进行ALSA驱动开发和寄存器调试的前提。
1.1 音频Codec在SoC系统中的位置
在典型的嵌入式音频系统中,Codec位于SoC的音频接口(如I2S、PCM)与外部模拟器件(扬声器、麦克风、耳机)之间。其核心作用是完成数字音频数据与模拟音频信号之间的双向转换,并处理音量控制、增益调节、混音、滤波等音频处理任务。
下图展示了Codec在SoC音频子系统中的典型位置与数据流向:
1.2 模拟域与数字域的划分
音频Codec内部清晰地划分为数字域和模拟域两个部分,两者通过ADC(模数转换器)和DAC(数模转换器)桥接。理解这一划分对于寄存器调试至关重要,因为数字域和模拟域的寄存器控制逻辑、电源域、时钟域通常是独立的。
| 域 | 主要功能 | 典型模块 | 调试关注点 |
|---|---|---|---|
| 数字域 | 处理数字音频数据流、协议解析、数字滤波、音量控制 | I2S/PCM接口、数字混音器、数字增益、数字滤波器、ALSA控制接口 | 时钟同步、位时钟极性、帧同步格式、数据位宽、数字音量寄存器 |
| 模拟域 | 处理模拟信号放大、衰减、阻抗匹配、抗混叠滤波 | ADC、DAC、模拟混音器、可编程增益放大器(PGA)、耳机放大器、麦克风偏置 | 模拟电源电压、参考电压、输出负载、增益步长、静音控制、pop噪声 |
1.3 I2S / PCM / TDM 总线协议概述
数字音频数据在SoC与Codec之间通过串行总线传输。最常见的三种协议是I2S、PCM(短帧同步)和TDM(时分多路复用)。它们共享相似的物理层(BCLK、DATA、FSYNC),但在帧同步时序和数据排列上存在关键差异。
1.3.1 I2S 协议(Inter-IC Sound)
I2S由飞利浦制定,是最广泛使用的立体声音频总线。其核心特征是:帧同步信号(LRCLK)在左声道数据期间为低电平,右声道数据期间为高电平(或相反,取决于配置),且数据在BCLK的下降沿变化,在上升沿采样。数据从MSB开始传输,且MSB在帧同步变化后的第二个BCLK周期开始传输。
- 典型配置: 采样率44.1kHz/48kHz,位宽16/24/32bit,BCLK = 采样率 × 位宽 × 通道数。
- 变体: 左对齐(Left-Justified)、右对齐(Right-Justified)、DSP模式。
1.3.2 PCM 协议(Pulse Code Modulation,短帧同步模式)
在嵌入式音频语境中,“PCM协议”通常指短帧同步模式(Short Frame Sync)。其核心特征是:帧同步信号(FSYNC)为一个BCLK周期的脉冲,用于标识每个采样周期的开始。数据在FSYNC脉冲之后连续传输,左右声道数据依次排列在同一数据线上。
- 典型应用: 蓝牙音频、数字无线麦克风、多通道语音。
- 与I2S的区别: FSYNC为脉冲而非电平,数据排列更紧凑,适合多通道扩展。
1.3.3 TDM 协议(Time Division Multiplexing)
TDM是PCM协议的扩展,允许在单一数据线上传输超过2个通道的音频数据。通过将每个采样周期划分为多个时隙(Slot),每个时隙分配给一个独立的音频通道。
| 特性 | I2S | PCM(短帧) | TDM |
|---|---|---|---|
| 通道数 | 2(立体声) | 1~2(通常2) | 2~16+ |
| 帧同步信号 | 50%占空比电平(LRCLK) | 1 BCLK周期脉冲 | 1 BCLK周期脉冲或电平 |
| 数据排列 | 左声道/右声道独立 | 左右声道连续排列 | 多时隙连续排列 |
| 典型位宽 | 16/24/32 bit | 16 bit | 16/24/32 bit |
| 调试关键点 | LRCLK极性、数据延迟1BCLK | FSYNC脉冲宽度、数据起始位置 | 时隙数量、时隙宽度、时隙映射 |
下图对比了I2S与PCM(短帧)在帧同步和数据时序上的核心差异:
1.4 小结
本章建立了音频Codec调试的基础知识框架:Codec在SoC系统中扮演数字与模拟世界的桥梁角色;数字域与模拟域的划分决定了寄存器调试的优先级和方向;I2S、PCM、TDM三种总线协议是SoC与Codec通信的物理层基础,其帧同步格式、数据排列和时序差异是驱动配置的核心参数。掌握这些基础概念,是后续使用ALSA工具链进行Codec寄存器分析和调试的必备前提。