摘要
I2S、TDM和PCM是数字音频系统中的三大核心传输协议。I2S是立体声音频的事实标准,TDM用于多声道应用(如专业音频、汽车音响),PCM则是更通用的脉冲编码调制接口。本文详细介绍三种接口的工作原理、时序参数、硬件连接和选型要点,为硬件工程师提供完整的音频接口选型参考。数据参考I2S标准和各芯片数据手册,不确定处另行注明。
一、数字音频接口基础
1.1 为什么需要数字音频接口
模拟音频信号在传输中容易受到干扰和噪声影响。数字音频接口将音频信号以数字形式传输,具有抗干扰、无音质退化、支持长距离传输等优势,是现代音频系统的主流选择。
1.2 三大接口协议对比
| 接口 | 全称 | 应用场景 | 声道数 | 主时钟要求 |
|---|---|---|---|---|
| I2S | Inter-IC Sound | 立体声音频、消费电子 | 2(立体声) | 64fs/128fs/256fs |
| TDM | Time Division Multiplexing | 多声道、专业音频 | 4/8/16 | 128fs/256fs |
| PCM | Pulse Code Modulation | 语音、通话、单声道 | 1/2 | 8kHz/16kHz等 |
二、I2S接口详解
2.1 I2S时序与信号定义
I2S接口包含三条基本信号线:
| 信号 | 说明 | 方向 |
|---|---|---|
| BCLK(BCLK/BCK) | 位时钟,bit clock | 主设备输出 |
| LRCK(WCLK/SYNC) | 左右声道时钟,word select | 主设备输出 |
| SD(SDOUT/SDIN) | 串行数据,serial data | 发送设备输出 |
I2S数据在BCLK的下降沿(或上升沿,看芯片定义)被采样,LRCK用于区分左右声道:
| LRCK状态 | 传输声道 |
|---|---|
| 高电平 | 右声道(Right) |
| 低电平 | 左声道(Left) |
I2S数据格式为MSB(最高位)在前,数据的位长度可以为16/18/20/24/32bit。对于16bit音频数据,如果使用24bit帧,则后8位为0。
2.2 I2S数据时序(飞利浦标准)
| 参数 | 说明 | 常见值 |
|---|---|---|
| 数据有效沿 | SD数据在BCLK边沿稳定 | 下降沿有效(Philips标准) |
| LRCK切换 | 发生在BCLK下降沿后1个BCLK周期 | 第一个BCLK周期为前一位数据 |
| 数据位序 | MSB在前,LSB在后 | 16/24/32bit |
| BCLK频率 | 采样率x声道数x位深 | 48kHz/16bit/Stereo=1.536MHz |
2.3 I2S主时钟(MCLK)
MCLK(也称SYSCLK)是供给CODEC的参考时钟,通常为采样率的整数倍:
| 采样率 | 256fs(MCLK) | 384fs(MCLK) |
|---|---|---|
| 44.1kHz | 11.2896MHz | 16.9344MHz |
| 48kHz | 12.288MHz | 18.432MHz |
| 96kHz | 24.576MHz | 36.864MHz |
| 192kHz | 49.152MHz | 73.728MHz |
注意:44.1kHz和48kHz系统需要不同的MCLK(11.2896MHz vs 12.288MHz),不能互换。
三、TDM接口详解
3.1 TDM为什么存在
I2S只能传输2声道。当系统需要4/8/16声道时(如汽车音频主机输出到DSP),需要TDM接口。TDM将多个声道的数据在时间上复用,通过一根数据线传输多声道音频。
3.2 TDM时序与信号定义
| 信号 | 说明 | 方向 |
|---|---|---|
| BCLK | 位时钟 | 主设备输出 |
| TDM slot数量 | 槽位数量 | 4/8/16 |
| SD | 串行数据(多声道复用) | 发送设备输出 |
| FS(Frame Sync) | 帧同步,等同于I2S的LRCK | 主设备输出 |
3.3 TDM数据帧结构
| Slot数量 | 每帧BCLK周期 | 声道分配 |
|---|---|---|
| 4 | 4 x 位深 | Slot 0/1/2/3 |
| 8 | 8 x 位深 | Slot 0到7 |
| 16 | 16 x 位深 | Slot 0到15 |
TDM每帧(LRCK高到低)传输多个slot的数据。例如48kHz/8Slot/24bit:BCLK=48kHz x 8 x 24=9.216MHz。
3.4 I2S vs TDM 对比
| 对比项 | I2S | TDM |
|---|---|---|
| 声道数 | 2(立体声) | 4/8/16 |
| 应用 | 消费电子、便携设备 | 汽车音响、专业音频 |
| BCLK频率 | 较低(<50MHz) | 高(可达100MHz) |
| 引脚数量 | 3(BCLK/LRCK/SD) | 3(相同) |
四、PCM接口详解
4.1 PCM与I2S的区别
PCM(脉冲编码调制)是最通用的音频数字化方式。在通信领域(VoIP、电话),PCM通常指8kHz/16kHz采样的语音通道,使用短帧结构。
4.2 PCM信号定义
| 信号 | 说明 |
|---|---|
| PCM_CLK | 时钟 |
| PCM_SYNC | 帧同步 |
| PCM_DIN/PCM_DOUT | 数据 |
PCM的帧同步(SYNC)通常比I2S的LRCK宽,可以是1个bit宽度(短帧)或1个slot宽度(长帧)。
4.3 PCM应用场景
| 应用 | 采样率 | 位深 | 说明 |
|---|---|---|---|
| 电话通话 | 8kHz | 16bit | 语音专用 |
| 蓝牙通话(CVSD) | 8kHz | 16bit | 早期蓝牙 |
| 降噪麦克风 | 16kHz | 16bit | 环境降噪采集 |
五、I2S/TDM/PCM硬件连接
5.1 I2S连接拓扑
I2S通常为点对点连接(音源到CODEC或功放)。主设备(通常是CPU或DSP)输出BCLK和LRCK,从设备接收。如果有多个从设备,需要音频开关(I2S switch)进行切换。
5.2 多设备I2S连接
| 方案 | 说明 |
|---|---|
| I2S开关 | 使用I2S analog switch(如SN74LV4053A)进行切换 |
| TDM总线 | 多设备并联在TDM总线上,通过slot区分 |
| Daisy-chain | 部分DSP支持daisy-chain连接 |
5.3 走线注意事项
| 参数 | 要求 |
|---|---|
| BCLK/LRCK长度差 | <5mm(等长要求) |
| 数据线长度差 | <5mm |
| 最大走线长度 | <15cm(超过需加 repeater) |
| 阻抗控制 | 50Ω±10% |
| 包地 | 时钟线两侧包地 |
六、选型指南
6.1 接口选择决策树
| 问题 | 决策 |
|---|---|
| 声道数小于等于2? | 选I2S |
| 声道数大于2? | 选TDM |
| 应用是语音/通话? | 选PCM |
| 采样率高于96kHz? | 选I2S或TDM(需要高BCLK) |
6.2 典型应用选型
| 应用 | 推荐接口 | 理由 |
|---|---|---|
| TWS耳机(立体声) | I2S | 立体声,功耗低 |
| USB-C耳机(多声道) | TDM(内部连接) | 多声道ANC |
| 汽车音频主机 | TDM(8Slot) | 多声道输出 |
| 语音通话模块 | PCM | 8kHz/16kHz语音 |
| 专业声卡 | I2S + TDM | 多种输入输出 |
6.3 常见芯片接口支持
| 芯片 | I2S | TDM | PCM |
|---|---|---|---|
| Realtek ALC5670 | Yes | Yes(8Slot) | No |
| 骅讯 CM7104 | Yes | Yes(4Slot) | Yes |
| 昆腾微 KT0231H | Yes | No | No |
| 科胜讯 CX21988 | Yes | Yes(16Slot) | Yes |
七、总结
I2S、TDM和PCM是数字音频系统的三大基础接口。I2S是立体声音频的事实标准,适合消费电子和便携设备;TDM通过时间复用支持多声道,适合汽车音响和专业音频;PCM则是语音通信的主流选择。选型时应根据声道数、采样率和应用场景综合决定。硬件设计时需要关注BCLK频率、时钟同步和走线等长三大要点,确保音频信号完整性。
常见问题(FAQ)
Q1:I2S和TDM可以互转吗? 可以通过DSP进行协议转换。例如使用ADSP-21489将I2S立体声转换为TDM 8Slot输出。部分CODEC也支持I2S输入+TDM输出。
Q2:MCLK必须和BCLK/LRCK同步吗? 是的,MCLK需要与BCLK/LRCK同步,通常由同一个PLL产生。如果MCLK和BCLK不同步,会产生POP音或失真。
Q3:I2S数据线可以多长? 建议小于15cm。超过15cm需要加信号调理(repeater)或使用差分I2S(如TDM使用LVDS)。长距离传输建议使用USB或Optical接口。
Q4:TDM的slot如果不使用会怎样? 如果不填充数据,接收端会将对应slot的数据视为0。部分芯片可以配置slot掩码,忽略未使用的slot。
Q5:PCM和I2S的数据格式有什么不同? PCM通常是unsigned 8bit/16bit(0到255或-32768到32767),而I2S通常是signed 16bit/24bit。混用时需要确认数据格式是否匹配,否则会产生底噪或静音问题。
Q6:BCLK频率如何计算? BCLK = 采样率 x 声道数 x 位深。例如48kHz/立体声/16bit:BCLK = 48000 x 2 x 16 = 1.536MHz。如果是TDM/8Slot/24bit:BCLK = 48000 x 8 x 24 = 9.216MHz。
技术标准参考
本文参考 Philips I2S Bus Specification(1996)、Intel HD Audio Specification 和各芯片厂商数据手册。不确定处另行注明。