I2S音频总线
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
I2S⾳频总线
I2S⾳频总线学习
(⼀)数字⾳频技术
⼀、声⾳的基本概念
声⾳是通过⼀定介质传播的连续的波。
图1 声波
重要指标:
1. 振幅:⾳量的⼤⼩
2. 周期:重复出现的时间间隔
3. 频率:指信号每秒钟变化的次数
声⾳按频率分类:
图2 声⾳的频率(语⾳信号频率范围:300Hz-3kHz)
声⾳的传播携带了信息,它是⼈类传播信息的⼀种主要媒体。
声⾳的三种类型:
1. 波形声⾳:包含了所有声⾳形式
2. 语⾳:不仅是波形声⾳,⽽且还有丰富的语⾔内涵(抽象→提取特征→意义理解)
3. ⾳乐:与语⾳相⽐,形式更规范。
⾳乐是符号化的声⾳。
⼆、声⾳的数字化
1.声⾳信号的类型
模拟信号(⾃然界、物理)
数字信号(计算机)
2.声⾳数字化过程
图3 声⾳数字化过程
3.
声⾳数字化过程⽰意图
图4 声⾳数字化过程⽰意图
4.声⾳数字化三要素
采样频率
量化位数声道数每秒钟抽取声波幅度
样本的次数
每个采样点⽤多少⼆进制位表⽰数据范围使⽤声⾳通道的个数采样频率越⾼
声⾳质量越好
数据量也越⼤
量化位数越多⾳质越好数据量也越⼤⽴体声⽐单声道的表现⼒丰富,但数据量翻倍
11.025kHz
22.05 kHz
44.1 kHz 8位=25616位=65536单声道⽴体声5.声⾳数字化的数据量
⾳频数据量=采样频率×量化位数×声道数/8(字节/秒)
采样频率(kHz)量化位数(bit)数据量(KB/s)
单声道
⽴体声
(kHz)(bit)
11.025810.7721.35 1621.5343.07
22.05821.5343.07 1643.0786.13
44.1843.0786.13 1686.13172.27
三、⾳频的⽂件格式
1.WAV⽂件
WAV是Microsoft/IBM共同开发的PC波形⽂件。
因未经压缩,⽂件数据量很⼤。
特点:声⾳层次丰富,还原⾳质好
2.MP3⽂件
MP3(MPEG Audio layer3)是⼀种按MPEG标准的⾳频压缩技术制作的⾳频⽂件。
特点:⾼压缩⽐(11:1),优美⾳质
3.WMA⽂件
WMA(Windows Media Audio)是Windows Media格式中的⼀个⼦集(⾳频格式)。
特点:压缩到MP3⼀半
4.MIDI⽂件
MIDI(乐器数字接⼝)是由⼀组声⾳或乐器符号的集合。
特点:数据量很⼩,缺乏重现⾃然⾳
四、数字⾳频压缩标准
1.⾳频压缩⽅法概述
图5
压缩编码技术是指⽤某种⽅法使数字化信息的编码率降低的技术
⾳频信号能压缩的基本依据:
①声⾳信号中存在⼤量的冗余度;
②⼈的听觉具有强⾳能抑制同时存在的弱⾳现象。
⾳频信号压缩编码的分类:
①⽆损压缩(熵编码)
霍夫曼编码、算术编码、⾏程编码
②有损压缩
波形编码--PCM、DPCM、ADPCM 、⼦带编码、⽮量量化
参数编码--LPC
混合编码--MPLPC、CELP
2.⾳频压缩技术标准
2.⾳频压缩技术标准分类标准说明
电话语
⾳质量G.711采样8kHz,量化8bit,码率64kbps G.721采⽤ADPCM编码,码率32kbps
G.723采⽤ADPCM有损压缩,码率24kbps G.728采⽤LD-CELP压缩技术,码率16kbps
调幅
⼴
播质
量
G.722采样16kHz,量化14bit,码率224(64)kbps ⾼保
真
⽴体声MPEG
⾳频
采样44.1kHz,量化16bit,码率705kbps (MPEG三个压缩层次,384-64kbps)
五、声卡
1.声卡的主要功能
声卡是负责录⾳、播⾳和声⾳合成的⼀种多媒体板卡。
其功能包括:
①录制、编辑和回放数字⾳频⽂件
②控制和混合各声源的⾳量
③记录和回放时进⾏压缩和解压缩
④语⾳合成技术(朗读⽂本)
⑤具有MIDI接⼝(乐器数字接⼝)
2.芯⽚类型
CODEC芯⽚(依赖CPU,价格便宜)
数字信号处理器DSP(不依赖CPU)
(⼆)I2S总线协议
⼀、I2S总线概述
⾳响数据的采集、处理和传输是多媒体技术的重要组成部分。
众多的数字⾳频系统已经进⼊消费市场,例如数字⾳频录⾳带、数字声⾳处理器。
对于设备和⽣产⼚家来说,标准化的信息传输结构可以提⾼系统的适应性。
I2S(Inter—IC Sound)总线是飞利浦公司为数字⾳频设备之间的⾳频数据传输⽽制定的⼀种总线标准,该总线专责于⾳频设备之间的数据传输,⼴泛应⽤于各种多媒体系统。
⼆、I2S总线规范
I2S总线拥有三条数据信号线:
1、SCK: (continuous serial clock) 串⾏时钟
对应数字⾳频的每⼀位数据,SCK都有1个脉冲。
SCK的频率=2×采样频率×采样位数。
2、WS: (word select) 字段(声道)选择
⽤于切换左右声道的数据。
WS的频率=采样频率。
命令选择线表明了正在被传输的声道。
WS为“1”表⽰正在传输的是左声道的数据。
WS为“1”表⽰正在传输的是左声道的数据。
WS为“0”表⽰正在传输的是右声道的数据。
WS可以在串⾏时钟的上升沿或者下降沿发⽣改变,并且WS信号不需要⼀定是对称的。
在从属装置端,WS 在时钟信号的上升沿发⽣改变。
WS总是在最⾼位传输前的⼀个时钟周期发⽣改变,这样可以使从属装置得到与被传输的串⾏数据同步的时间,并且使接收端存储当前的命令以及为下次的命令清除空间。
3、SD: (serial data) 串⾏数据
⽤⼆进制补码表⽰的⾳频数据。
I2S 格式的信号⽆论有多少位有效数据,数据的最⾼位总是被最先传输(在WS变化(也就是⼀帧开始)后的第2个SCK脉冲处),因此最⾼位拥有固定的位置,⽽最低位的位置则是依赖于数据的有效位数。
也就使得接收端与发送端的有效位数可以不同。
如果接收端能处理的有效位数少于发送端,可以放弃数据帧中多余的低位数据;如果接收端能处理的有效位数多于发送端,可以⾃⾏补⾜剩余的位(常补⾜为零)。
这种同步机制使得数字⾳频设备的互连更加⽅便,⽽且不会造成数据错位。
为了保证数字⾳频信号的正确传输,发送端和接收端应该采⽤相同的数据格式和长度。
当然,对I2S格式来说数据长度可以不同。
对于系统⽽⾔,产⽣SCK和WS的信号端就是主设备,⽤MASTER表⽰,简单系统⽰意图如图1所⽰:
图1 简单系统配置和基本接⼝时序
另⼀个基本的接⼝时序图可以参看图2所⽰:
图2 I2S典型的接⼝时序
4、时序要求
在IIS总线中,任何设备都可以通过提供必需的时钟信号成为系统的主设备置,⽽从属设备通过外部时钟信号来得到它的内部时钟信号,这就意味着必须重视主设备和数据以及命令选择信号之间的传播延迟,总的延迟主要由两部分组成:
1.外部时钟和从设备的内部时钟之间的延迟
2.内部时钟和数据信号以及命令选择信号之间的延迟
对于数据和命令信号的输⼊,外部时钟和内部时的延迟不占据主导的地位,它只是延长了有效的建⽴时间(set-up time)。
延迟的主要部分是发送端的传输延迟和设置接收端所需的时间。
见图3和图4:
图3 Timing for IIS Transmitter
图4 Timing for IIS Receiver
其中:
T是时钟周期,Tr是最⼩允许时钟周期,T>Tr这样发送端和接收端才能满⾜数据传输速率的要求。
对于所有的数据速率,发送端和接收端均发出⼀个具有固定的传号空号⽐(mark—space ratio)的时钟信号,所以t LC和tHC是由T 所定义的。
t LC和tHC必须⼤于0.35T,这样信号在从属装置端就可以被检测到。
延迟(tdtr)和最快的传输速度(由Ttr定义)是相关的,快的发送端信号在慢的时钟上升沿可能导致tdtr不能超过tRC⽽使thtr为零或者负。
只有tRC不⼤于tRCmax的时候(tRCmax>:0.15T),发送端才能保证thtr⼤于等于0。
为了允许数据在下降沿被记录,时钟信号上升沿及T相关的时间延迟应该给予接收端充分的建⽴时间(set-up time)。
数据建⽴时间(set-up time)和保持时间(hold time)不能⼩于指定接收端的建⽴时间和保持时间。
5、电⽓特性
输出电压:
VL <0.4V
VH>2.4V
输⼊电压
VIL=0.8V
VIH=2.0V
注:⽬前使⽤的TTL电平标准,随着其他IC(LSI)的流⾏,其他电平也会⽀持。
I2S总线
引⾔
I2S(InterIC Sound Bus)是飞利浦公司针对数字⾳频设备之间的⾳频数据传输⽽制定的⼀种总线标准,采⽤沿独⽴的导线传输时钟与数据信号的设计,通过分离数据和时钟信号,避免了时差诱发的失真。
I2S总线简单有效,可以有效提升输出数据的质量,在各种嵌⼊式⾳频系统中有⼴泛应⽤。
但是在嵌⼊式⾳频系统设计中,并不是所有的MCU都⽀持I2S总线格式,再加上I2S 还没有统⼀的接⼝标准,不同的⼚家⽣产的设备接⼝也是五花⼋门,采⽤软件模拟实现I2S总线可有效解决在不⽀持其的MCU和设备之间通过I2S总线实现数据传输时出现的问题。
本⽂通过在以太⽹数字语⾳⼴播系统中软件模拟I2S总线实现语⾳数据传输,给出了软件模拟实现I2S总线的⽅法。
1 I2S总线规范
I2S为三线总线,3个信号分别为:
①串⾏时钟SCK,也叫位时钟(BCK)。
即每发送1位数字⾳频数据,SCK上都有1个脉冲。
SCK的频率=2×采样频率×采样位数。
在数据传输过程中,I2S总线的发送器和接收器都可以作为系统的主机来提供系统的时钟频率。
②帧时钟WS,即命令(声道)选择,⽤于切换左右声道的数据。
WS的频率等于采样频率,由系统主机提供。
WS为“1”表⽰传输的是左声道的数据,WS为“0”表⽰传输的是右声道的数据。
③串⾏数据信号SD,⽤于传输⼆进制补码表⽰的⾳频数据。
I2S格式的信号⽆论有多少位有效数据,数据位的最⾼位(MSB)总是被最先传输,1次能够发送的数据决定于I2S格式的有效位数。
1个典型的I2S信号时序如图1所⽰
图1 I2S总线典型时序图
随着技术的发展,在统⼀的I2S接⼝下出现了多种不同的数据格式。
根据SD信号相对于SCK和WS位置的不同,分为左对齐和右对齐2种格式,如图2和图3所⽰。
图2 16位有效位数的左对齐格式
图3 16位有效位数的右对齐格式
在上⾯2种数据传输格式中,当WS为“1”时传输的是左声道的数据,当WS为“0”时传输的是右声道的数据。
为了保证数字⾳频信号的正确传输,发送端和接收端必须采⽤相同的数据格式。
2 软件模拟I2S
以太⽹数字语⾳⼴播系统主要是指以以太⽹为传播介质提供⾳频服务的⼴播系统,将语⾳信号以标准IP包的形式在以太⽹上进⾏传送,以实现语⾳⼴播功能。
该系统在PC机端通过麦克风采集语⾳数据,然后将采集到的语⾳数据通过以太⽹发送给嵌⼊式终端,嵌⼊式终端将接收到的语⾳数据进⾏数/模转换后进⾏播放。
系统实现框图如图4所⽰[5]。
图4 以太⽹数字语⾳⼴播系统框图
图5 LM3S8962与MS6336的连接图
⼴播系统终端的MCU LM3S8962将接收到的语⾳数据通过I2S总线发送给语⾳解码芯⽚MS6336进⾏数/模转换并播放,
LM3S8962和MS6336的连接如图5所⽰。
为了完整还原出语⾳信号,需要保证软件模拟I2S信号时序严格精确,⾼低电平的转换采⽤延时程序实现。
MS6336为16位D/A芯⽚,其I2S时序如图6所⽰。
图6 MS6336的典型I2S时序图
该系统中的语⾳数据双声道,16位采样,1个采样点的数据为4字节,1个采样点数据通过MCU发送给MS6336,数据发送流程如图7所⽰。
图7 1个采样点数据发送流程
软件模拟I2S引脚的定义如下:
#define I2S_WS GPIO_PIN_5//模拟I2S声道选择时钟控制位
#define I2S_BCK GPIO_PIN_6//模拟I2S位时钟控制位
#define I2S_DATA GPIO_PIN_7//模拟I2S数据传送位
根据MS6336的I2S总线格式以及数据发送流程,软件模拟I2S总线的步骤如下:
①根据语⾳数据采样率及采样位数计算得到SCK的值和WS的值(WS的值等于采样频率)。
系统采样率为44.1 kHz,则SCK=2×44.1 kHz×103×16=1 411 200 Hz,WS=44 100 Hz。
1个SCK时钟周期T=1/SCK=0 7 µs。
采⽤延时程序模拟SCK时钟周期需要应⽤⽰波器来精确延时时间。
本系统中⼀个SCK周期的延时为delayI2S(2)。
②将WS、BCK和DATA均置为⾼电平。
③选择左右声道。
⾸先发送左声道数据,将WS置低(若发送右声道数据则将WS置⾼)。
for(ChannelCnt=0;ChannelCnt<2;ChannelCnt++){//双声道选择播放
if(ChannelCnt==0){//右声道选择信号为⾼电平
HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_WS << 2))) = ~I2S_WS;
}
else{//左声道选择信号为低电平
HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_WS << 2))) = I2S_WS;
}
……
}
④选择⾼低字节。
将左声道数据以⾼低字节的顺序发送,在发送⾼字节第1位数据之前先发送1个周期的串⾏时钟。
for(HorLCnt=0;HorLCnt<2;HorLCnt++){//声道数据⾼低字节选择
if(ChannelCnt==1){//左声道
if(HorLCnt==0){//低字节
c=*(SampleData+1);//SampleData指向⾳频数据缓冲区⾸地址,即左声道低字节
delayI2S(2);//发送第⼀个数据位之前需要延迟⼀个位时钟周期
}
else{//低字节
c=*SampleData;
}
}
……
}
⑤开始传输⾳频数据(⾳频数据的传输在SCK下降沿准备数据,在SCK的上升沿发
送给数据接收端)。
将采样点左声道数据的⾼字节最⾼位送给SD,设置SCK为低电平,此时为SCK的下降沿,数据准备好。
延时半个SCK周期以后将 SCK置为⾼电平,此时SD线上的数据发送给数据接收端,延时半个SCK周期。
依次将左声道剩余位数据按照最⾼位的⽅式发送出去。
for(BitCnt=0;BitCnt<8;BitCnt++){//1次传送的数据长度为8位,先传送⾼字节再传送低字节置时钟线SCK为低,开始准备数据位HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_BCK << 2))) = ~I2S_BCK;
if((c<<BitCnt)&0x80) {
HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_DATA << 2))) = I2S_DATA;
}
else{
HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_DATA << 2))) = ~I2S_DATA;
}
delayI2S(1); //延时半个SCK时钟周期置时钟线为⾼,开始传输数据位
HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_BCK << 2))) = I2S_BCK;
delayI2S(1);//延时半个时钟周期
}
⑥当将1个采样点的左声道的数据发送完以后,延时2个SCK周期,然后发送右声道的数据(同左声道数据的发送过程)。
根据以上的过程对每个采样点的数据进⾏处理,就可以实现通过软件模拟I2S总线传输⾳频数据了。
以上实现的是典型I2S时序模拟,⽽左对齐和右对齐2种格式只是时序稍有差异,模拟实现过程同典型I2S总线模拟实现过程基本相同。
结语
在以太⽹数字语⾳⼴播系统中应⽤软件模拟实现I2S总线时序,能够成功地实现语⾳信号的数据传输,实现语⾳信号的实时⼴播,表明了软件模拟实现 I2S总线的可⾏性,为解决不⽀持I2S总线的MCU和各种I2S总线设备间的通信提供了⼀种可⾏的⽅法。
但是,在应⽤软件模拟实现I2S的以太⽹数字语⾳⼴播系统实时播放语⾳信号时,存在⼀些噪声,表明在采⽤软件模拟实现I2S的时序精确性上存在⼀些⽋缺。
I2S总线和格式
I2S(Inter-IC Sound Bus)是飞利浦公司为数字⾳频设备之间的⾳频数据传输⽽制定的⼀种总线标准。
在飞利浦公司的I2S标准中,既规定了硬件接⼝规范,也规定了数字⾳频数据的格式。
I2S有3个主要信号:
1、串⾏时钟SCLK,也叫位时钟BCLK,即对应数字⾳频的每⼀位数据,SCLK有1个脉冲。
SCLK的频率=2×采样频率×采样位数。
2、帧时钟LRCK,⽤于切换左右声道的数据。
LRCK为“0”表⽰正在传输的是左声道的数据,为“1”则表⽰正在传输的是右声道的
2、帧时钟LRCK,⽤于切换左右声道的数据。
LRCK为“0”表⽰正在传输的是左声道的数据,为“1”则表⽰正在传输的是右声道的数据。
LRCK的频率等于采样频率。
3、串⾏数据SDATA,就是⽤⼆进制补码表⽰的⾳频数据。
有时为了使系统间能够更好地同步,还需要另外传输⼀个信号MCLK,称为主时钟,也叫系统时钟(Sys Clock),是采样频率的256倍或384倍。
I2S 格式的信号⽆论有多少位有效数据,数据的最⾼位总是出现在LRCK变化(也就是⼀帧开始)后的第2个SCLK脉冲处,见下⾯I2S格式图。
这就使得接收端与发送端的有效位数可以不同。
如果接收端能处理的有效位数少于发送端,可以放弃数据帧中多余的低位数据;如果接收端能处理的有效位数多于发送端,可以⾃⾏补⾜剩余的位。
这种同步机制使得数字⾳频设备的互连更加⽅便,⽽且不会造成数据错位。
随着技术的发展,在统⼀的 I2S接⼝下,出现了多种不同的数据格式。
根据SDATA数据相对于LRCK和SCLK的位置不同,分为左对齐(较少使⽤)、I2S格式(即飞利浦规定的格式)和右对齐(也叫⽇本格式、普通格式)。
⾮I2S格式如图:
I2S格式如图:
对⾮I2S格式⽽⾔,为了保证数字⾳频信号的正确传输,发送端和接收端应该采⽤相同的数据格式和长度。
对I2S格式来说数据长度可以不同。
⽽且帧时钟LRCK⾼低电平对应左右声道的意义也不同?
注意I2S总线和I2S格式的区别,I2S总线是⼀种总线标准,I2S格式是飞利浦制定的数据格式。
在统⼀的I2S总线接⼝下,出现了左对齐和右对齐等⾮I2S格式。
在我们系统Android中,设置sample_rate=44.1Khz,sample_length=16,channel=2;那么BCLK应该为
2×44.1Khz×16=32xsample_rate,⽽实际上
MCLK=11.289Mhz,BCLK=MCLK/4,sample_rate=LRCK=BLK/64=44.1Khz,BCLK和理论计算的值不符。
引⽤“如果接收端能处理的有效位数少于发送端,可以放弃数据帧中多余的低位数据;如果接收端能处理的有效位数多于发送端,可以⾃⾏补⾜剩余的位”,因此这是可以解释的。
PCM协议
PCM(PCM-clock、PCM-sync、PCM-in、PCM-out)脉冲编码调制,模拟语⾳信号经过采样量化以及⼀定数据排列就是PCM了。
理论上可以传输单声道,双声道⽴体声和多声道。
是数字⾳频的raw data.
从时序图可以看出,I2S左右声道分别为⾼低电平,PCM只有⼀个起始信号,左声道数据紧跟右声道.。