随着技术的发展和对性能考虑,模拟电路慢慢被推到一个链路的两端,在信号链中将出现更多的数字接口。这样既能避免模拟电路的走线对性能的影响又能节省电路。下图2给出了一个完整数字音频接口的例子。

图1. 传统的音频信号链路

图2. 数字音频信号链路
数字音频信号的常见传输标准,如I2S、PCM (Pulse Code Modulation) 和PDM (Pulse DensityModulation),主要用于同一块电路板上芯片之间音频信号的传输;Intel HDA (Intel High DefinitionAudio) 用于PC的Audio子系统(声卡)应用; S/PDIF和Ethernet AVB主要应用于板间长距离及需要电缆连接的场合。
这次主要先介绍I2S数字音频接口。
I2S全称Inter-IC Sound, Integrated Interchip Sound,或简写I2S,是飞利浦在1986年定义的数字音频传输标准,用于数字音频数据传输。除了都是由飞利浦定义外,I2S和I2C没有任何关系。
I2S是比较简单的数字接口协议,没有地址或设备选择机制。在I2S总线上,只能同时存在一个主设备和发送设备。主设备可以是发送设备,也可以是接收设备,或是协调发送设备和接收设备的其它控制设备。在I2S系统中,提供时钟(SCK和WS)的设备为主设备。图3是常见的I2S系统框图。

图3 I2S系统通信配置框图
I2S包括两个声道(Left/Right)的数据,在主设备发出声道选择/字选择(WS)控制下进行左右声道数据切换。通过增加I2S接口的数目或其它I2S设备可以实现多声道(Multi-Channels)应用。
在I2S传输协议中,数据信号、时钟信号以及控制信号是分开传输的。I2S协议只定义三根信号线:时钟信号SCK、数据信号SD和左右声道选择信号WS。
SCK是模块内的同步信号,从模式时由外部提供,主模式时由模块内部自己产生。不同厂家的芯片型号,时钟信号叫法可能不同,也可能称BCLK/Bit Clock或SCL/Serial Clock
SD是串行数据,在I2S中以二进制补码的形式在数据线上传输。在WS变化后的第一个SCK脉冲,先传输最高位(MSB, Most Significant Bit)。先传送MSB是因为发送设备和接收设备的字长可能不同,当系统字长比数据发送端字长长的时候,数据传输就会出现截断的现象/Truncated,即如果数据接收端接收的数据位比它规定的字长长的话,那么规定字长最低位(LSB: Least Significant Bit)以后的所有位将会被忽略。如果接收的字长比它规定的字长短,那么空余出来的位将会以0填补。通过这种方式可以使音频信号的最高有效位得到传输,从而保证最好的听觉效果。
√ 根据输入或输出特性,不同芯片上的SD也可能称SDATA、SDIN、SDOUT、DACDAT、ADCDAT等;
√ 数据发送既可以同步于SCK的上升沿,也可以是下降沿,但接收设备在SCK的上升沿采样,发送数据时序需考虑
WS是声道选择信号,表明数据发送端所选择的声道。当:
√ WS=0,表示选择左声道
√ WS=1,表示选择右声道
WS也称帧时钟,即LRCLK/Left RightClock。WS频率等于声音的采样率。WS既可以在SCK的上升沿,也可以在SCK的下降沿变化。从设备在SCK的上升沿采样WS信号。数据信号MSB在WS改变后的第二个时钟(SCK)上升沿有效(即延迟一个SCK),这样可以让从设备有足够的时间以存储当前接收的数据,并准备好接收下一组数据。
