目录
可参考本人转载的一篇文章:
1.I2S接口及时序
1.1 I2S接口信号
I2S主要有三根信号:分别是SCK(sclk/bclk), WS[word select](lrclk), SD(serial data).
有时候为了使音频 CODEC 芯片与主控制器之间能够更好的同步,会引入另外一个叫做 MCLK 的信号,也叫做主时钟或系统时钟,一般是采样率的 256 倍或 384 倍。
I2S 可以设置为全双工/半双工,也支持主从模式。
全双工:sdi,sdo两根SD线(指的是pad上的两个IO pin)
半双工:一根SD线(指的是pad上一个双向IO pin)
【说明:这些低速串口在soc上基本都是用GPIO实现,PAD上的IO pin的方向是可配置为input,output或动态可配的inout】
所以半双工的情况下 在数字逻辑里面会多一根sd_oen的 SD IO的方向控制信号
真实的与GPIO的连接情况如下:
主模式是指输出sck和ws的设备,对应接受sck和ws的为从模块。
audio的master/slave都可以是接受音频数据(RX)也可以是发送音频数据(TX).
同样设备既要做master又要做slave时可以有两组独立的sck和ws,也可以分时复用,通过sck_oen,ws_oen来选择SCK,WS IO PIN当前的方向。
位时钟(BCLK):又名SCK,对应每一位(bit)数据,都有一个脉冲。
BCLK = 2 * 采样频率 * 量化位数。
问:为什么BCLK是采样频率和量化位数乘积的2倍?
答:量化位数是相对于单声道来说的,SCK是同时用于左、右声道数据交替传输的时钟。例如先传输16个bit的左通道数据,再传输16个bit的右通道数据,一直这样按顺序交替传输音频。
采样频率:等于LRCK。一般音频使用16K。还有多种采样频率,看需求。
LRCK:用于切换左右声道的数据。一般,1表示左声道,0表示右声道。
MCLK:主时钟(也名过采样率),一般是采样频率[不是bclk而是LRCK]的128、或256、或384或512倍。
量化位数:常见的位数有16bit,24bit,32bit,20bit。
1.2 I2S接口时序
I2S的标准时序如下图所示:
SD数据变化在sck的下降沿。
至于左对齐 右对齐的概念可参考:
1.3 MCLK的作用
MCLK是Master clock的缩写,在DAC内部的delta-sigma调制器以及数字滤波器都需要用到这个时钟,大部分的DAC可以使用内部的振荡器产生这个时钟,在某些要求较高的场合,例如HIFI音响系统等,需要使用一个额外的高质量的时钟用以获得最好的性能。这时候就需要用到MCLK信号了。切记,MCLK并不是必须的。可有可无,看设计要求。MCLK一般是Fs*256或者Fs*384。
2. PCM(TDM)接口
2.1 PCM(TDM)接口信号
无论I2S还是PCM音频接口,传输的都是pcm编码之后的数据pcm编码即脉冲编码调制。
该接口由时钟脉 冲(BCLK)、帧同步信号(FS)及接收数据(DR)和发送数据(DX)组成。在FS信号的上升沿,数据传输从MSB(Most Significant Bit)字开始,FS频率等于采样率。FS信号之后开始数据字的传输,单个的数据位按顺序进行传输,1个时钟周期传输1个数据字。发送MSB时,信号的等 级首先降到最低,以避免在不同终端的接口使用不同的数据方案时造成MSB的丢失。
PCM接口包括四根信号:
PCM_CLK (BCLK):数据时钟信号
PCM_SYNC (FS):帧同步时钟信号
PCM_IN(DR) :接收数据信号
PCM_OUT (DX):发送数据信号
PCM/TDM接口时序虽然和I2S有写差别,但完全是可以信号线复用的,无论是数字信号还是pad上的IO PIN。
2.2 PCM接口时序
以下内容摘自
根据 SD相对帧同步时钟FSYNC的位置,TDM分两种基本模式:
Mode A:数据在FSYNC有效后,BCLK的第2个上升沿有效。
Mode B:数据在FSYNC有效后,BCLK的第1个上升沿有效。
3.audio codec
audio的codec主要分为:
codec_DA: pcm解码--->DA转换
codec_AD:AD转换---->pcm编码
可参考: