转自http://www.wangdali.net/i2s/svg
PCM (Pulse Code Modulation) 是经过等时间隔(即采样率时钟周期)采样将模拟信号数字化的方法。图11为4 bit 采样深度的PCM数据量化示意图。.net
图11. 4-bit PCM的采样量化orm
PCM数字音频接口,即说明接口上传输的音频数据经过PCM方式采样获得的,以区别于PDM方式。在音频领域,PCM接口经常使用于板级音频数字信号的传输,与I2S类似。PCM和I2S的区别于数据相对于帧时钟(FSYNC/WS)的位置、时钟的极性和帧的长度。其实,I2S上传输的也是PCM类型的数据,所以能够说I2S不过是PCM接口的特例。blog
相比于I2S接口,PCM接口应用更加灵活。经过时分复用(TDM, Time Division Multiplexing)方式,PCM接口支持同时传输多达N个(N>8)声道的数据,减小了管脚数目(其实是减小I2S的“组”数,由于每组I2S只能传输两声道数据嘛)。TDM不像I2S有统一的标准,不一样的IC厂商在应用TDM时可能略有差别,这些差别表如今时钟的极性、声道配置的触发条件和对闲置声道的处理等。接口
TDM/PCM数字音频接口的硬件拓扑结构也与I2S相近。图12表示应用DSP做为主设备控制ADC和DAC间数字音频流的例子。ip
综合很多厂商的数据手册,笔者发现,在应用PCM音频接口传输单声道数据(如麦克风)时,其接口名称为PCM;双声道常常使用I2S;而TDM则表示传输两个及以上声道的数据,同时区别于I2S特定的格式。get
图12. TDM系统框图同步
PCM接口与I2S类似,电路信号包括:it
TDM/PCM与I2S接口对应关系见表2:io
表2. PCM vs I2S接口
根据 SD相对帧同步时钟FSYNC的位置,TDM分两种基本模式:
图13. TDM Mode A
图14. TDM Mode B
注:
因为没有统一标准,不一样厂商对Mode A和Mode B定义可能有所差异。
在实际应用中,老是以帧同步时钟FSYNC的上升沿表示一次传输的开始。帧同步时钟的频率老是等于音频的采样率,好比44.1 kHz,48 kHz等。多数应用只用到FSYNC的上升沿,而忽略其降低沿。根据不一样应用FSYNC脉冲宽度的差异,PCM帧同步时钟模式大体分为两种:
长帧同步,短帧同步时序模式以下图16和图17所示。
注:
a. 长帧同步,如图15所示,FSYNC脉冲宽度等于1个Slot的长度。Slot在TDM中表示的是传输单个声道所占用的位数。如图15所示TI McASP接口的TDM包括6个Slots,即它最多可包括6声道数据。注意,Slot的位数并不必定等于音频的量化深度。好比Slot可能为32 bit,其中包括24 bit有效数据位(Audio Word) + 8 bit零填充(Zero Padding)。不一样厂商对Slot的叫法可能有所区别,好比Circus Logic称之为Channel Block;
图15. 长帧同步模式
b. 短帧同步,FSYNC脉冲宽度等于1个BCLK周期长度;
c. 因为没有统一标准,不一样厂商对FSYNC脉冲宽度及触发边沿的设置可能不一样,以器件手册为准。
图16. 8-bit长帧同步模式
图17. 16-bit短帧同步模式
4. 时钟(BCLK)频率的计算
FSYNC的频率等于音频的采样率(例如44.1 kHz,48 kHz等)。Frame每次传输包括全部声道的数据。PCM采样音频数据量化深度通常在16-32bit(最多见为16/24bit)。那么对于8声道,每一个声道32bit音频数据,采样率48kHz的系统,TDM的BCLK时钟速率为:8 × 32 × 48kHz = 12.288 MHz
在器件Datasheet中能够见到TDM128/TDM256/TDM384/TDM512等说法,数字的含义为单个TDM数据帧包含数据的比特数(即帧长)。如上例8声道(Channels)32bit的音频数据,亦称为TDM256(=8*32)。TDM系统时钟速率就能够简单地用采样率乘以TDM帧长计算得出。相同的例子,TDM系统时钟速率:48kHz × 256 = 12.288 MHz
下表4列出系统时钟SCK/BCLK和采样率fs及TDM帧长的关系:
表4. 常见音频采样率对应的系统时钟
在PCM/TDM传输的数据帧(Slots)中,可能还包括音频数据以外的信息。好比在CSR BC06器件Datasheet说明,其设置为16 bit Slot字长时,3或8 bit未使用bit能够用做标签位(Sign Extension)、零填充(Zeros Padding)或是兼容Motorola编解码器的3 bit音频衰减值,如图18所示。
图18. 16-bit位采样字格式