I2S音频总线
Posted “逛丢一只鞋”
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了I2S音频总线相关的知识,希望对你有一定的参考价值。
文章目录
Inter-IC Sound
I2S(Inter-IC Sound)总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专门用于音频设备之间的数据传输,广泛应用于各种多媒体系统。它采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真,为用户节省了购买抵抗音频抖动的专业设备的费用。
说明
在飞利浦公司的I2S标准中,既规定了硬件接口规范,也规定了数字音频数据的格式。
I2S仅仅是PCM的一个分支,接口定义都是一样的
它们有四组信号: 位时钟信号,同步信号,数据输入,数据输出。
PCM一般传单声道的声音,也可以传立体声,采样频率一般为8KHz。
I2S一般传立体声,比PCM多了一个线路。数据格式都为PCM格式。左/右声道的一个采样点编码一般为16位(量化深度),两个声道加起来为32位。
I2S只能传2个声道的数据,PCM一个复帧可以传多达32路数据。
先补习一下下面的概念
一、时分复用(TDM)
时分多路复用适用于数字信号的传输。由于信道的位传输率超过每一路信号的数据传输率,因此可将信道按时间分成若干片段轮换地给多个信号使用。每一时间片由复用的一个信号单独占用,在规定的时间内,多个数字信号都可按要求传输到达,从而也实现了一条物理信道上传输多个数字信号。假设每个信号输入的数据比特率是9.
6kbit / s ,信道线路的最大比特率为76. 8 kbit / s ,则可传输8
路信号。在接收端,复杂的解码器通过接收一些额外的信息来准确地区分出不同的数字信号。PCM时分复用是利用各个信号的抽样值在时间上互不相重叠来达到在同一信道中传输多路信号的一种方法。在一个TDM系统中,各信号在时域上分开的,而在频域上是混叠在一起的。
(1)位&路:PCM一次取样传输8位,即8位为一路。
(2)路&帧:目前PCM传输推荐的有两种标准:32路(A律)和24路(U律)。A律编码主要用于30/32路一次群系统,U律编码主要用于24路一次群系统。A律PCM用于欧洲和中国,U律PCM用于北美和日本。2路为一帧。
(3)帧&复帧:32路为一复帧或24路为一复帧,即一复帧包含16帧或12帧。以32路(TS0~TS31)为例,TS0路包含一些特殊的位组合,使接收端能够将每一个时分复用帧(复帧)的位置确定出来,即帧同步;TS16路用于传送话路信令。
若PCM时钟频率为X,则传输一位用时t1=1/X,传输一路用时t2=8t1,帧同步信号时间间隔为32t2(代表每两个帧同步信号之间能传32路)。通过测量采样信号与帧同步信号之间的时间间隔就可以计算出该次采样为第几路。
相比较FDM,TDM有以下两个突出优点:
1.多路信号的复接和分路;2.信道的非线性会在FDM系统中产生交调失真和高次谐波,引起话间串扰,因此对信道的线性特性要求比较高,而TDM系统对信道非线性失真要求可以降低很多。二、频分多路复用(FDM)
三、缩写释义
CAS:随路信令,语音和信令在同一路话路中传送的信令
CCS:共路信令,语音和信令分开传输
ASLA - Advanced Sound Linux Architecture
OSS - 以前的Linux音频体系结构,被ASLA取代并兼容
Codec - Coder/Decoder
I2S/PCM/AC97 - Codec与CPU间音频的通信协议/接口/总线
DAI - Digital Audio Interface
其实就是I2S/PCM/AC97/PDM/TDM等,实现音频数据在CPU和Codec间的通信DAC - Digit to Analog Conversion
ADC - Analog to Digit Conversion
DSP - Digital Signal Processor
Mixer - 混音器,将来自不同通道的几种音频模拟信号混合成一种模拟信号
Mute - 消音,屏蔽信号通道
PCM - Pulse Code Modulation 一种从音频模拟信号转换成数字信号的技术,区别于PCM音频通信协议
采样频率 - ADC的频率,每秒采样的次数,典型值如44.1KHZ
量化精度 - 比如24bit,就是将音频模拟信号按照2的24次方进行等分
SSI - Serial Sound Interface
DAPM - Dynamic Audio Power Management
I2C总线 - 实现对Codec寄存器数据的读写
Codec - 音频编解码器Codec负责处理音频信息,包括ADC,DAC,Mixer,DSP,输入输出以及音量控制等所有与音频相关的功能。Codec与处理器之间通过I2C总线和数字音频接口DAI进行通信。
I2S有3个主要信号(数据线)
-
串行时钟SCLK,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有1个脉冲。SCLK的频率=2×采样频率×采样位数。
-
帧时钟LRCK(也称WS),用于切换左右声道的数据。LRCK的频率等于采样频率。
-
串行数据SDATA,就是用二进制补码表示的音频数据。
1、SCLK:串行时钟,频率= 2 * 采样频率 * 采样位数。 2、WS:字段(声道)选择,用来切换左右声道数据。WS = 采样频率(fs)。 a、1(左声道) b、0(右声道) 3、SD:串行数据(二进制补码)(MSB--->LSB:数据由最高位到最低位依次传输)
有时为了使系统间能够更好地同步,还需要另外传输一个信号MCLK,称为主时钟,也叫系统时钟(Sys Clock),是采样频率的256倍或384倍。
数据格式
随着技术的发展,在统一的 I2S接口下,出现了多种不同的数据格式。根据SDATA数据相对于LRCK和SCLK的位置不同,分为左对齐(较少使用)、I2S格式(即飞利浦规定的格式)和右对齐(也叫日本格式、普通格式)。
数据存储
假设有一路音频流,有左右两声道的数据。左声道用L表示,右声道用R表示。
存储时,如果是左右声道数据交替存储成一维数组,这种格式称为packed。格式为LRLRLR…LRLR
如果是分开存储成二维数组,这种格式称为planar。格式为LLLLLLLLLLLLLL和RRRRRRRRRRRRR
视频也是如此,但是对于YUV格式的数据,比音频多一种存储方法叫semi-planar,也就是半planar。一共2路存储,Y一路,UV一路,其中UV交叉存储。
PCM / I2S / AC97/PDM
1.PCM(脉冲编码调制)
(1) 时钟脉冲 BCLK ;
(2) 帧同步信号FS;
(3)接收数据DR;
(4)发送数据DX 。
在FS信号的上升沿,数据传输从MSB(Most Significant Bit)字开始,FS频率等于采样率。
FS信号之后开始数据字的传输,单个的数据位按顺序进行传输,1个时钟周期传输1个数据字。
发送MSB时,信号的等级首先降到最低,以避免在不同终端的接口使用不同的数据方案时造成MSB的丢失。
PCM接口很容易实现,原则上能够支持任何数据方案和任何采样率,但需要每个音频通道获得一个独立的数据队列。
2.I2S
IIS接口(Inter-IC Sound)在20世纪80年代首先被飞利浦用于消费音频,并在一个称为LRCLK(Left/Right CLOCK)的信号机制中经过多路转换,将两路音频信号变成单一的数据队列:
(1) LRCLK为低时,左声道数据被传输
(2) LRCLK为高时,右声道数据被传输
与PCM相比,IIS更适合于立体声系统。
对于多通道系统,在同样的BCLK和LRCLK条件下,并行执行几个数据队列也是可能的。
(1)时分复用串行数据信号SDATA:用二进制补码表示的音频数据,将两路音频信号变成单一的数据队列。
(2)字段选择信号 /帧时钟信号LRCLK:低电平时传左声道数据,高电平时传右声道数据。
(3)串行时钟信号SCLK /位时钟信号BCLK。
在I2S/PCM接口的ADC/DAC系统中,除了BCLK和FS(LRCLK)外,CODEC经常还需要控制器提供MCLK (Master Clock),这是由CODEC内部基于Delta-Sigma (ΔΣ)的架构设计要求使然。MCLK时钟频率一般为256*FS,具体参考特定器件手册。
3.AC97
AC’97(Audio Codec 1997)是以Intel为首的五个PC厂商Intel、Creative Labs、NS、Analog Device与Yamaha共同提出的规格标准。与PCM和IIS不同,AC’97不只是一种数据格式,用于音频编码的内部架构规格,它还具有控制功能。
AC’97采用AC-Link与外部的编解码器相连,AC-Link接口包括位时钟(BITCLK)、同步信号校正(SYNC)和从编码到处理器及从处理器中解码(SDATDIN与SDATAOUT)的数据队列。AC’97数据帧以SYNC脉冲开始,包括12个20位时间段(时间段为标准中定义的不同的目的服务)及16位“tag”段,共计256个数据序列。
例如,时间段“1”和“2”用于访问编码的控制寄存器,而时间段“3”和“4”分别负载左、右两个音频通道。“tag”段表示其他段中哪一个包含有效数据。把帧分成时间段使传输控制信号和音频数据仅通过4根线到达9个音频通道或转换成其他数据流成为可能。
与具有分离控制接口的IIS方案相比,AC’97明显减少了整体管脚数。一般来说,AC’97编解码器采用TQFP48封装。
4.PDM(脉冲密度调制)
是一种使用二进制数0,1表示模拟信号的调制方式。在PDM信号中,模拟信号的幅值使用输出脉冲对应区域的密度表示。
在PDM输出麦克风内部,可以发现一个小型ADC IC(调制器),其用于将MEMS传感器输出的模拟信号转换为PDM信号流。这种音频转换器技术所生成的信号,其低频频谱接近所需音频信号,而高频寄生部分的频率在某个拐点频率之上随频率上升快速升高,基本落在最终产品需要使用的音频频率范围之外。
对于每一个采样点,用1bit就可以记录,也就是说,仅仅用表示“否”的“0”和表示“是”的“1”去记录这一个采样点的电平值。
DSD的编码过程中,对信号进行量化的方式和PCM完全不一样。具体原理如下:
(1)首先是Δ调制这个概念
试想一下,我们不像PCM那样用一组规定的电平值去度量,而是只使用一个固定的差值Δ去度量原始模拟信号。依然是隔一段时间间隔取一次样,每次取样得到的电平会拿来与上一次取样的信号进行比较,如果其差值大于Δ,则输出1(0),否则输出为0(1)。于是每个采样点就能以1bit的形式来表示,而不是像PCM、I2S用8位、16位的量化深度去表示。
但是Δ调制有着一个缺点,就是随着输入模拟信号的频率增高,信噪比SNR会急剧下降。我们可以通过减小Δ的值,并且增大采样频率,来控制量化噪声(通过增大采样频率和减小Δ值来使确保采样的电平差值不会过大)。
PDM的主体思想就是这样,每一个采样的值是上一个采样的相对值,前后采样点相互连系密不可分。这种量化方式的思想因为其连续性,更加接近自然中的声音。
为了克服Δ调制的缺陷,发展出了∑-Δ调制器(Sigma-Delta Modulator)
如图,如果我们在信号的输入端再加一个差分器,信号从差分器正相输入,然后通过一个积分器,然后到Δ调制器(A/D),把Δ调制后的结果进行一次D/A转换,并且延时输入到差分器的反相端作为反馈,这就是一个完整的∑-Δ调制器了(应该都知道∑是什么意思)。
输入信号被发送到差分区,在差分块中从中减去反馈信号。产生的信号被发送到积分器,积分器的输出作用于比较器。比较器将参考电压与积分器的输出进行比较,并相应地产生“0”或“1”。
反过来,DAC由ADC输出的0和1去产生两个可用参考电压(最高电平或最低电平)。该参考电压被反馈到差值区。这个差分放大器的反馈设计使得DAC的输出平均值等于输入信号。DAC的输出是输入信号的模拟表示,即调制器的输出。
整体的量化方式思路还是和Δ调制类似,不过反馈回路差分放大器的反相输入端的电平为整个信号的最大值(逻辑1对应的模拟电压)或最小值(逻辑0对应的模拟电压),即Δ调制输出1,则反馈回Vmax,输出0,则反馈回Vmin,两者均为固定值。
也就是说积分器积分的是输入电平与最高或最低电平的差值,然后我们再对积分后结果进行一次Δ调制(这个过程可能不是那么容易想通,把原信号当成是某函数f(x)的导数,然后我们对f(x)来进行Δ调制量化,这样也许会更好理解一点)。
这样一来,量化的对象就变成了当前信号电平和先前所有差值和的差值,量化电平不再会受频率影响,最大量化范围直接取决于电平值。反馈中加入的延时电路使得∑-Δ调制器有着噪声整形的特征,一阶的∑-Δ调制器的噪声整形效果不明显,但是我们可以把多阶∑-Δ调制器叠加到一起,使得噪声整形效果达到一个较高水平。
这个噪声整形的具体结果就是,量化噪声总体量没有变,但是不是平均分布在所有频段上,低频段的量化噪声会较少,而高频的量化噪声会较多.也就是说,量化噪声被"推挤"到了高频中.在音频应用中,大部分量化噪声被推挤到了远超过20kHz的高频,也就是人耳听不到的频段,利用一个低通滤波就可以很简单地把这些噪声给干掉了。
PDM就是经过了以上的∑-Δ调制而得到的数字信号,如果把这一连串数字信号放在同一标尺上和原始信号相比,会发现数字"0"和"1"随着信号电频的增减成都而密度产生相应变化,所以称为是脉冲密度调制(Pulse Density Modulation)。
从实际工程设计的角度来看,典型PDM麦克风应有电源引脚、接地引脚,当然还需要时钟输入引脚、数据输出引脚和通道选择引脚。根据通道选择引脚的状态,麦克风的输出在时钟信号处于低电平或高电平状态为活跃状态,在另一状态下处于高阻抗。这种聪颖的设计意味着可以用一根话筒线多路复用两个麦克风,这样立体声PDM接口仅需两根线缆,即时钟输出线缆和一根同时支持两个声道的数据返回线。任何使用这种类型的数字麦克风接口的解决方案都会自动解复用出现在输入数据线上的两个信号。
在以PDM方式作为模数转换方法的应用接收端,需要用到抽取滤波器(Decimation Filter)将密密麻麻的0和1代表的密度分量转换为幅值分量。
PDM方式的逻辑相对复杂,但它只需要两根信号线,即时钟和数据。PDM在诸如手机和平板等对于空间限制严格的场合有着广泛的应用前景。在数字麦克风领域,应用最广的就是PDM接口,其次为I2S接口。PDM格式的音频信号可以在比如LCD屏这样Noise干扰强的电路附近走线(等于没说,这里指数字信号抗干扰能力相比于模拟信号更强,同样PCM也具有此优势)。
PDM连接示意图(2发送设备 + 1接收设备)
通过PDM接口方式,传输双声道数据只要用到两根信号线。如图21示意两个PDM接口的发送设备与同一个接收设备的连接情况,比如Source 1、2分别作为左右声道的麦克风,通过这种方式可以将采集到的双声道数据传送到接收设备。主设备(此例中作为接收设备)为两个从设备提供时钟,分别在时钟的上升沿和下降沿触发选择Source 1/2作为数据输入。图22为Maxim的Class-D类型功放MAX98358对PDM接口时序的要求,可以看到它在PDM_CLK的上升沿采样左声道数据,在PDM_CLK下降沿采样右声道数据。
PDM时序框图
基于PDM的架构不同于I2S和TDM之处在于,抽取滤波器(Decimation Filter)不在发送设备,而在接收设备内部。源端输出是原始的高采样率(oversample)调制数据,如Sigma-Delta调制器的输出,而不是像I2S中那样的抽取数据(An I2S output digital microphone includes the decimation filter, so its output is already at a standard audio sample rate that’s easy to interface to and process.)。基于PDM接口的应用降低了发送设备的复杂性,由于作为接收设备的CODEC内部集成抽取滤波器,因此系统整体复杂度大大降低。对于数字麦克风而言,通过使用面向CODEC或处理器制造的更精细硅工艺,而非传统麦克风使用的工艺,可以实现更高效率的抽取滤波器。
以上是关于I2S音频总线的主要内容,如果未能解决你的问题,请参考以下文章