PCM和I2S区别详解:数字音频接口技术解析
PCM和I2S区别详解:数字音频接口技术解析
I2S和PCM接口都是数字音频接口,而所见的蓝牙到CPU以及CODEC的音频接口都是用PCM接口,是不是两个接口有各自不同的应用呢?先来看下概念。
PCM(脉冲编码调制)
PCM(PCM-clock、PCM-sync、PCM-in、PCM-out)是脉冲编码调制,模拟语音信号经过采样量化以及一定数据排列就是PCM了。理论上可以传输单声道,双声道立体声和多声道。是数字音频的raw data。
I2S(集成互连声音总线)
I2S是音频数字化后数据排列的一种格式,说传输的就是PCM,支持单声道和立体声。I2S是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。在飞利浦公司的I2S标准中,既规定了硬件接口规范,也规定了数字音频数据的格式。I2S有3个主要信号:
- 串行时钟 SCLK(BCLK):对应数字音频的每一位数据,SCLK的频率=2×采样频率×采样位数
- 帧时钟LRCK:用于切换左右声道的数据,LRCK为“0”表示正在传输的是左声道的数据,为“1”表示正在传输的是右声道的数据
- 串行数据SDATA:就是用二进制补码表示的音频数据
PCM和I2S的区别
PCM和I2S最明显的一个不同就是PCM_SYNC信号和LRCLK信号这两个复用的pin
- PCM_SYNC用来同步帧,有long fram sync和short frame sync等模式,但并不专门区分左右声道。
- 而I2S中,这个pin叫做LRCLK,专门用来区分左右声道,以此来同步。低电平代表左声道,高电平代表右声道。
同时,时钟的上升沿和下降沿哪个是输入采样和输出,在PCM和I2S是不同的,I2S还有自己特定的格式。
应用场景
一般手机CPU到蓝牙的通话实时音频和MP3之类的音频都使用PCM,有的蓝牙芯片内置MP3 CODEC,MP3走UART/USB更合适。
从蓝牙角度讲,蓝牙在制定协议的时候就特意为通话需求制定了一个协议层,专门定义了一种包结构(SCO)用于通话,有很好的实时性。而通过UART传输的包一般为ALC,用分组传输的方式。两种包的编解使用的软硬件都有些区别。SCO包支持的基础码率也是8K的PCM。所以一般蓝牙芯片都会有一个PCM接口。
DSP相关概念
采样率:常用的表示符号是fs。通俗的讲采样频率是指计算机每秒钟采集多少个声音样本。采样频率与声音频率之间有一定的关系,根据奈奎斯特理论,只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音,是衡量声卡采集、记录和还原声音文件的质量标准。
采样精度:模拟信号的幅度轴进行数字化,它决定了模拟信号数字化以后的动态范围。采样精度为24bit位即动态范围0~96dbfs。
帧长:DSP一次处理的音频采样点数,决定处理延时。如帧长64,采样率为48Kbps,DSP一次计算延时至少0.001333333s。
时钟
- BCLK:位时钟 (Bitclock,BCK,也称串行时钟SCK):确立数据流中两个相邻位之间边界的信号
- LRCK:左/右时钟 (LRCK)/字时钟 (Wordclock,也称WS):一个在采样速率下运行、占空比为 50% 的慢时钟,它确立数据流中两条相邻通道(左和右)之间的边界。
- MCLK:主时钟,一般而言,DSP不需要音频主时钟,因为它们能够以一种完全不同的速率对数据进行处理,
例如: 设声音的采样频率为44.1 kHz,即声道选择信号(帧时钟)WS的频率必须也为44.1 kHz;左/右2个声道的量化深度均为16 bit,则I2S的SCK的频率为:44.1 kHz×16×2=1.4112 MHz,SCK = 采样率 * 位宽 * 通道数,WS = 采样率
- TDM/PCM与I2S接口对应关系
根据 SD相对帧同步时钟FSYNC的位置,TDM分两种基本模式:
Mode A: 数据在FSYNC有效后,BCLK的第2个上升沿有效
Mode B: 数据在FSYNC有效后,BCLK的第1个上升沿有效
注:不同厂商对Mode A和Mode B定义可能有所差别
应用中,总是以帧同步时钟FSYNC的上升沿表示一次传输的开始。帧同步时钟的频率总是等于音频的采样率,比如44.1 kHz,48 kHz等。多数应用只用到FSYNC的上升沿,而忽略其下降沿。根据不同应用FSYNC脉冲宽度的差别,PCM帧同步时钟模式大致分为两种:
长帧同步 Long Frame Sync
短帧同步 Short Frame Sync
举例:对于8声道,每个声道32bit音频数据,采样率48kHz的系统,TDM的系统时钟速率为:8 × 32 × 48kHz = 12.288 MHz
BCLK = 采样率 * 位宽 * 通道数
FYNC = 采样率