你好!这里是风筝的博客,
欢迎和我一起交流。
最近在做音频这块,接触了挺多接口,收集了一下各种音频接口的介绍,包括:
PCM、I2S、TDM、PDM。
1.PCM(脉冲编码调制)
区别于PCM编码,也是种通讯协议,一般传输单声道数据,比如麦克风。通常用于AP处理器和通信MODEM之间传输语音数据(就是双向打电话的数据)。
电路信号包括:
- PCM_CLK 数据时钟信号
- PCM_SYNC 帧同步时钟信号
- PCM_IN 接收数据信号
- PCM_OUT 发送数据信号
PCM_SYNC频率等于采样率,PCM_SYNC信号之后开始数据字的传输,单个的数据位按顺序进行传输,1个时钟周期传输1个数据字。
PCM接口很容易实现,原则上能够支持任何数据方案和任何采样率,但需要每个音频通道获得一个独立的数据队列。
2.I2S(Integrated Interchip Sound)
PCM和I2S的区别于数据相对于帧时钟(FSYNC/LRCK)的位置、时钟的极性和帧的长度。其实,I2S上传输的也是PCM类型的数据,因此可以说I2S不过是PCM接口的特例。
- 位时钟信号(BCLK)
- 同步信号(LRCK)
- 数据输入(SDIN)
- 数据输出(SDOUT)
与PCM相比,IIS更适合于立体声系统。
(1) LRCLK为低时,左声道数据被传输
(2) LRCLK为高时,右声道数据被传输
I2S操作模式又可细分为:标准IIS模式、左对齐模式和右对齐模式
-
标准I2S模式 Phillips Standard
I2S模式是标准左对齐格式再延迟一个时钟位变化来的:
-
左对齐模式 Left Justified Standard
标准左对齐格式的数据的MSB没有相对于BCLK延迟一个时钟。左对齐格式的左右声道数据的MSB在LRCLK边沿变化后BCLK的第一个上升沿有效:
-
右边对齐模式 Right Justified Standard
也叫日本格式,sony格式,接收设备必须事先知道待传数据的字长:
注意左右对齐模式的WS时钟高电平为左声道,低电平为右声道,刚好与标准I2S相反。
在I2S/PCM接口的ADC/DAC系统中,CODEC经常还需要控制器提供MCLK (Master Clock),这是由CODEC内部基于Delta-Sigma (ΔΣ)的架构设计要求使然。MCLK时钟频率一般为256*FS,具体参考特定器件手册。
参考:IIS接口详细介绍
3.TDM(时分多路复用)
TDM感觉不算是一种接口,而是一种方式。因为I2S仅仅能够两个通道,当需要传输多个通道的数据时就得歇菜了,而PCM通过时分复用TDM方式可以承载多达N(N>8)通道的数据,并有一个类似于I2S的数据/时钟结构。
TDM每个通道的数据都使用数据总线上的一个槽(Slot),其宽度相当于帧的1/N,
其中N是传输通道的数量。出于实用考虑,N通常四舍五入到最近的2次幂(2、4、8、或16),并且任何多余通道都被空闲。一个TDM帧时钟通常实现为一位宽的脉冲,这与I2S的50%占空比时钟相反。超过25
MHz的时钟速率通常不用于TDM数据,原因是较高的频率会引起印刷电路板设计者要避免的板面布局问题。
TDM: 包括PCM format 和 I2S format,下图是TDM-I2S Mode, 在I2S format下传输多channel。
PCM: short frame 和long frame。long frame 模式下,LRCK脉冲宽度占2个BCLK时钟周期。
short frame模式下,LRCK 只占一个BCLK时钟周期,如下图。
long frame如下:
参考:数字音频接口时序----IIS、TDM、PCM、PDM
4.PDM(Pulse Density Modulation)
PDM的逻辑相对复杂,但只需要两根线,时钟和数据。
主设备分别在时钟的上升沿(左声道)和下降沿(右声道)触发选择Source 1/2作为数据输入。
它在PDM_CLK的上升沿采样左声道数据,在PDM_CLK下降沿采样右声道数据:
参考:PDM接口介绍
综合不少厂商的数据手册,笔者发现,在应用PCM音频接口传输单声道数据(如麦克风)时,其接口名称为PCM;双声道经常使用I2S;而TDM则表示传输两个及以上声道的数据,同时区别于I2S特定的格式。
好文参考:数字音频接口