Yuhang Zheng

音频的IIS引脚的理解

N 人看过

来个音频部分的名词解释:

SSI (Synchronous Serial Interface) 同步串行接口
IIS (IntegrateInterfaceofSound) 集成音频接口
PCM (Pulse-code modulation) 脉冲编码调制
Codec 编解码器
DAPM (Dynamic Audio Power Management) 动态音频电源管理
DAI (Digital Audio Interfaces) 数字音频接口
mfd (Multifunction device) 多功能设备
LDO (low dropout regulator) 低压差线性稳压器


飞凌imx6平台中,Codec与SOC连接部分,是使用SOC的 SSI 接口用作 IIS 功能,以下分别是IIS的引脚名称

AUD3_TXFS 发送帧同步
AUD3_TXC 发送时钟
AUD3_RXD 发送
AUD3_TXD 接收
AUD_MCLK 外部24M时钟

相对应的Codec的引脚为

DACLRC 数字转模拟左右声道时钟
BCLK Bit Clock 位时钟
ADCDAT 模拟转数字数据
DACDAT 数字转模拟数据
MCLK 外部24M时钟

IIS与Codec的引脚连接如图

img


DACLRC是什么:

DACLRC,也叫做LRCLK,就是模拟信号的采样时钟

这里模拟信号的采样,简单的理解就是在什么时候对模拟信号做一个取样。比如每隔1ms做一次采样,这样就有FS=1/0.001s=1KHz,FS就是采样频率。

采样决定什么时候对模拟信号进行取值。要多少的采样频率才能完整的还原一个模拟信号?这里涉及到数字信号处理,满足FS>=2fsMAX(fsMAX是模拟信号的最高频率)就可以无损失的还原模拟信号了。

人耳的听力频率范围是20~20KHz, fsMAX=20KHz。因此对人耳听力内的声音做一个没有损失的数字化需要FS>=40KHz。CD的采样率为44.1K,已经是高保真了,它已经涵盖人耳所能听到的所有声音了。

一个时钟周期中,会有一个高一个低电平,为了充分利用资源,I2S协议规定在高电平的时候传输左通道信息,在低电平时候传输右通道信息。当然在DSP里我们可以也可以设置高低电平传左通道还是右通道。

I2S中的LRCLK == FS,就是采样频率了。

img

黄色是LRCLK,蓝色是BCLK

img

黄色是LRCLK,蓝色是数据DAT

很多资料里面说到fs,这里说的fs,其实就是sampling frequency,采样频率的意思,比如 256 fs ,128 fs等等,fs越大音频就还原得就越真实。存储音频所需要的存储空间也就越大。

img

如果把音频当成一条曲线,那么采样率就是一秒钟从这个曲线里面提取样本的次数。

  • 8,000 Hz - 电话所用采样率, 对于人的说话已经足够
  • 11,025 Hz - AM调幅广播所用采样率
  • 22,050 Hz和24,000 Hz - FM调频广播所用采样率
  • 32,000 Hz - miniDV 数码视频 camcorder、DAT (LP mode)所用采样率
  • 44,100 Hz - 音频 CD, 也常用于 MPEG-1 音频(VCD, SVCD, MP3)所用采样率
  • 47,250 Hz - 商用 PCM 录音机所用采样率
  • 48,000 Hz - miniDV、数字电视、DVD、DAT、电影和专业音频所用的数字声音所用采样率
  • 50,000 Hz - 商用数字录音机所用采样率
  • 96,000 或者 192,000 Hz - DVD-Audio、一些 LPCM DVD 音轨、BD-ROM(蓝光盘)音轨、和 HD-DVD (高清晰度 DVD)音轨所用所用采样率
  • 2.8224 MHz - Direct Stream Digital 的 1 位 sigma-delta modulation 过程所用采样率。

采样越高,声音的还原就越真实越自然,人对频率的识别范围是 20HZ - 20000HZ, 如果每秒钟能对声音做 20000 个采样, 回放时就足可以满足人耳的需求。所以 22050 的采样频率是常用的, 44100已是CD音质, 超过48000的采样对人耳已经没有意义。


BCLK 是什么:

Bclk,也就是Bit Clock ,中文也就被称作位时钟。

img

我们看了上面的解说,知道采样率这样东西了,但是BCLK,不是完全等于采样率的,它是通过计算出来的。我们知道I2C,SPI这样的通信协议,I2S的通信协议也是一样,在时钟上升沿或者下降沿的时候,数据为有效。所以BCLK的意义就是,有多少BCLK,就有多少bit位的数据。

BCLK = 采样率 x 采样宽度 x 采样通道数

sample_rate=44.1Khz,

sample_length=16,channel=2时

那么BCLK应该为

2×44.1KHz×16=32 x sample_rate=1.4112MHz

看图知道采样的位深是16bit(位),这个16bit 对应的是ADC芯片里面的数据采样位宽,把模拟信号转换成数字信号的位数,比如一个3.3V的电压,采样深度是16bit,那么他能把3.3v 均分成 2^16次方,如果采样深度是 8bit,那么他能把3.3v均分成2^8次方,从这个对比可以知道,采样深度越大,那么能均分的份数就越多,那听起来的声音也就越细腻。

img如上图,横坐标就是采样率,纵坐标就是采样深度,如果采样深度越大,那声音也就越细腻,可以理解为,我可以用更多的数字量来表达一个电压。

拓展:

量化就是对采样到的信号进行数字编码,这时有个采样精度问题。举个例子来说,我的ADC的采样电压是0~5V,采样位数是16位,16位是由ADC的硬件决定,16位的意思是对每一个采样到的数据编码成一个16进制的数据,5V编码为1111 1111 1111 1111 1111,0V编成为0000 0000 0000 0000,采样精度就是(5V-0V)/216,通俗地讲就是我能分辨的最小电压间隔.。

每次采样到的转化为16位信号,我就要让人知道在什么时候去同步16位数据啊,取的要够快,不能在下一个数据到来的时候还没有把数据取完啊。还是继续上面的CD的例子,CD在每隔1/44.1KHZ的时候采样一个模拟信号,那么在这么短的时间保存2次16位编码(高电平传输一次,低电平传输一次,也就是一次传输2个通道信号) ,需要的脉冲频率高于2x16x44.1 =1441.2,单位是kbps,就是我们说的比特率了。

我们说CD的是无损的,因为它对数字信号进行无压缩的PCM编码,这时的编成是得到上面采样后的数据,要想得到更好的音质就需要更高的采样精度了,比如DVD的48khz,但是不是说DVD采用48khz的高采样率就会得到比CD更好的音质了,采样率是决定能完整还原模拟信号频率。对于人耳听力范围内的频率,如上面说的FS>=2fsMAX,理论上只要40KHZ的采样率就可以满足了,但是因为音乐信号有些甚高频的东西,它影响音乐的听觉,所以很多时候我们会追求较高的采样率。

对于MP3,比特率64,128,192,256,320kbps。因为MP3是一种压缩编码格式,它会损失原来一部分信号来获得。我们常说的高保真,就是模拟信号转为数字信号在还原为模拟信号的损失而言的,CD的音质已经算是高保真,笼统划分是以1441.2Kbps为分界点。所以MP3音乐是不能算作高保真的。这里扯远了,拉回来继续说, BCLK,DATA I2S信号它会有32.0 format/64.0format。我的理解就是它是最高支持32/64位采样率的, 这样BCLK就是BCLK = 2x采样位数xFS,拿32.0 format来说, BCLK = 2x44.1Hz x32 =2.8224MHz。注意CD的采样位数是16位的。

(I2S格式的信号无论有多少位有效数据,数据的最高位总是出现在LRCK变化(也就是一帧开始)后的第2个SCLK脉冲处。这就使得接收端与发送端的有效位数可以不同。如果接收端能处理的有效位数少于发送端,可以放弃数据帧中多余的低位数据;如果接收端能处理的有效位数多于发送端,可以自行补足剩余的位。这种同步机制使得数字音频设备的互连更加方便,而且不会造成数据错位。–出自百度)

对于这点,需要补充一点,就是不管你的模拟电压的峰峰值多少,在I2S 32.0 format/64.0format。CD的16位采样,I2S会自动补零,这对实际的16位采样不产生任何影响,但是对于你用32format的I2S信号传送超过32位采样率的音频信号,就会有损失。不过在民用的音频领域很少会看到32位精度的ADC了。 

MCLK,经过上面的说明,我不知道大家对I2S信号的理解怎么样了。MCLK很简单,就是给2个器件传送data时候做一个基准,是一个同步信号。一般是256FS/384FS。

下面说说在做DSP时候的I2S配置问题。 如果对上面的东西已经有了理解,那对以下的话可以忽略了。 

DSP的MCLK是既定的,这个样你能配置的就是mclk,Bclk跟LRclk的比值了。MCLK/LRCLK=256/384,BCLK/LRCLK = 64/128/256. 这些都是根据协议来的所以没有什么为什么。