翻开一个 DAC 芯片的数据手册,它们使用的数据协议基本上要么是 I²C,要么是 SPI,再有的便是 I²S 协议,而相对于其它两种协议,I²S 协议则是专注于数字音频的传输,因而在 DAC,ADC,音频放大器 等中常常可见其身影,所以本文的主题便是 I²S 协议。
由于 I²S 的变体很多,故本文将从几个典型制式出发,进行分析。
I²S 简介
Wikipedia(中文)中这样介绍:
I²S 或 I2S(Inter-IC Sound 或 Integrated Interchip Sound)是 IC 间传输数字音频资料的一种接口标准,采用序列的方式传输2组(左右声道)资料。I²S 常被使用在发送 CD 的 PCM 音频资料到CD播放器的 DAC 中。由于 I²S 将资料信号和时脉信号分开发送,它的抖动(jitter)有损十分地小。
I²S 协议
传输线
通常而言,传输线有3根,分别是
BCLK (Bit Clock),也有叫 BICK (Bit Clock) 的
LRCLK (Left-Right Clock),也有叫 WS (Word Select) 和 FS (Frame Sync) 的
SDATA (Serial Data),也有叫 SD (Serial Data),SDIN (Serial Data Input)(对于输入设备),SDOUT (Serial Data Output)(对于输出设备)的
时序
标准版
图上展示了3种 音频位深度 在 I²S 协议下的传输方式
当 LRCLK 为低电平时,表示传输的是数据属于左声道,而当电平为高电平时,表示传输的是数据属于右声道
当 BCLK 为上升沿时,SDATA(图中为SIN)被记录一次
其中,SDATA 由 MSB 向 LSB 由高比特位向低比特位逐位传输
例如,当 音频位深度 为 32bit 时,先从第31(最高)位传输,直到传输到第0(最低)位
或许你也注意到了,SDATA 有一个比特的延迟,即 SDATA 比 BCLK 要慢一个比特,至于为什么,博主并没有找到一个合适的答案,如果你找到了,可以在下方留言。
图中所示的,便是一个采样点(一帧)数据的传输过程,所以,由此可见,如果一个音频采样率为 48kHz,深度为 32bit,声道数为 2,那么,传输速率即为
$$ 48\mathrm{kHz} \times 32\mathrm{Bit} \times 2 = 3072\mathrm{kBit/s} = 3.072\mathrm{MBit/s} $$
同理,采样率为 96kHz,深度为 24bit,声道数为 2,那么,传输速率即为 $ 4.608\mathrm{MBit/s} $
左对齐版
变化并不大,而其中改变的,便是 SDATA 的一个比特的延迟没了,即最高位与 LRCLK 对齐,还有就是 LRCLK 中左右声道对应的低高电平变为了高低电平
其它变体
比如 AK4490 这款 DAC,其中就有3种不同的 I²S 协议可供选择,详细参见其 Datasheet 的 P34~35
(或许以后博主会再总结几种,但显然不是这次~)
总结
鉴于不同型号的芯片对于 I²S 协议都或多或少可能有些许变化,所以说:
一切请以 Datasheet 为准!
一切请以 Datasheet 为准!!
一切请以 Datasheet 为准!!!
:)