Audio Codec的音频接口总结之数字音频接口
本文基于对市场上常用的Audio Codec TLV320AI3101的数据手册进行总结和学习,从中更深入的总结通用audio codec的输入输出接口及其内部的信号处理流程,以此建立对audio codec及其音频处理流程的更为全面的认识。
全文分为三个部分:
• 模拟音频输入接口
• 模拟音频输出接口
• 数字音频接口
本文是其中的数字音频接口部分。
I2S(Inter-IC Sound)是一种同步串行接口,专门用于音频数据的传输,具有简单、高效和抗干扰能力强的特点。I2S接口传输的是数字音频数据,通常以PCM(脉冲编码调制)格式表示,实际上也就是Audio Codec中从麦克风采集语音数据经过AD转换后的数字音频数据,或者从DSP接收到的、需要通过Audio Codec进行DA转换后在扬声器播放出来的数字音频数据。
通过I2S所传输的数字音频数据对应的参数包括采样率(如16KHz、32KHz、44.1kHz、48kHz等)、位深(如16位、24位等)和声道数(如立体声双声道)。具体的传输过程中,I2S接口通过时钟信号来同步音频数据的传输。它使用多个时钟信号来控制数据的发送和接收,确保音频数据的准确传输。
I2S硬件接口的信号线包括:
• SDIN/SDOUT(Serial Data):串行数据线,用于对外或者对内传输数字音频数据。
• WCLK(Word Clock):字选择信号,用于指示当前传输的是左声道还是右声道数据。通常WCLK为高电平时传输左声道数据,为低电平时传输右声道数据。
• BCLK(Bit Clock):串行位时钟线,用于控制数据的采样速率。音频数据在BCLK的上升沿或下降沿被采样。
下图是TLV320AIC3101的I2S工作时序图。在I2S标准中,数据在WCLK边沿(上升沿或下降沿)延迟1个时钟周期(BCLK)后开始传输下一个声道的MSB数据位。
如上所述,一路I2S接口只能以左右声道的方式用于传输两路独立的音频数据,形成双声道立体声的音频效果。但是很多时候我们的产品(例如包含麦克风阵列的功能)想要传输更多路独立音频流的时候,除了使用多路独立的I2S接口以外,还可以使用TDM接口来解决这个问题。
在硬件接口上,TDM接口与I2S接口共享同一组物理引脚(DOUT/DIN、SCK、WS),只不过数据传输协议不同。I2S模式可用于传输双通道(立体声)音频数据;TDM模式则用于使用相同的物理接口同时传输多通道(2~8通道)音频数据,通过时隙划分复用同一数据线。
在音频Codec中,TDM接口可以用于在单条数据线上传输多个独立音频通道的采样数据,每个通道的数据按预先分配的时间槽(Time Slot)依次传输。在具体的工作过程中,TDM接口和协议会将数据传输周期划分为多个时隙,每个时隙分配给一个独立的音频数据通道。例如,若TDM支持8个时隙,则可传输8个通道的音频数据,8个通道轮流使用自己的时隙传输数据。
下图是TLV320AIC3101的TDM数据传输时序图。可以看到,使用TDM模式进行多路音频数据传输使用了与I2S相同的硬件接口和物理引脚,只不过不再使用Word Clock区分左右声道,而是在Data In和Data Out固定设置不同音频流所使用的传输时隙,因此,对于使用TDM接口进行多路音频数据传输的上下游设备而言,需要提前协商清楚并设置好同时传输几路音频流,以及各路音频流在传输时序中的时隙才行。
其实除了以上的I2S接口和TDM接口以外,在一些Audio Codec上还有一种用于传输数字音频信号的PCM接口(TLV320AIC3101没有PCM接口),该接口多用于语音通信和多通道数据传输场景。
PCM接口一般用于传输未经压缩的多通道(能够更灵活的支持多通道是PCM接口与I2S之间的最大差别)线性PCM音频数据,可支持语音、音乐等多种场景。
具体的使用过程中,PCM接口的典型应用场景就是与单设备多通道、多设备多通道等形态的音频设备进行连接,通过一组PCM接口可以实现多个独立的音频通道的音频数据的传输。例如:
• 1个8通道ADC芯片通过PCM接口连接Host,每个时隙传输1个通道的采样数据。
• Host通过1个PCM接口连接4个单声道麦克风(每个设备占用1个时隙)。
从接口的硬件定义上,PCM接口与I2S接口很类似,通常包含以下数据线:
• PCM_CLK(位时钟):由主设备生成和控制,频率为采样率 × 位宽 × 通道数。例如在16位、8通道、48 kHz采样率的情况下,PCM_CLK频率 = 48k × 16 × 8 = 6.144 MHz。
• PCM_SYNC(帧同步):由主设备生成和控制,标识音频帧的起始位置,频率等于采样率。
• PCM_DIN(数据输入)与 PCM_DOUT(数据输出):传输多通道音频数据。
从以上PCM接口所包含的数据线可以看到,PCM_CLK、PCM_DIN、PCM_DOUT的定义与I2S没有区别,双方之间的区别主要是在I2S的WCLK和PCM的PCM_SYNC上。
要彻底解释清楚这两者的差异,首先要弄清楚PCM接口中用于作为帧同步信号的PCM_SYNC中的音频帧是什么意思。
PCM接口中所传输的音频帧,总是由PCM_SYNC的一次跳变(跳变边沿可编程设置)来启动传输,而一个音频帧中包含了PCM接口所连接的多通道中每一个通道的一个音频采样数据,每个音频采样数据占据一个固定的时隙,各个通道在音频帧中所占据的时隙在Host和Device两端的寄存器中进行设置。在这种PCM接口连接多通道音频设备的情况下,一个音频帧被分为多个时隙,每个时隙包含其中一个通道的音频采样数据,整个音频帧由PCM_SYNC信号触发开始一个完整的数据传输周期(即这个音频帧的周期)。
如下图所示的PCM接口连接的四通道音频传输的示意图,一次PCM_SYNC(FS)的跳变启动一个PCM Frame的传输,一个PCM Frame包含四个独立通道的音频采样数据,每个通道的采样数据占据固定的时隙。
所以本质上,PCM接口也是以TDM时分复用的方式在在一根DIN和DOUT线上使用不同的时隙传输多个通道的音频采样数据。
免责声明: 本文章转自其它平台,并不代表本站观点及立场。若有侵权或异议,请联系我们删除。谢谢! Disclaimer: This article is reproduced from other platforms and does not represent the views or positions of this website. If there is any infringement or objection, please contact us to delete it. thank you! |