本文重点以TI的TLV320AIC3101为例详细总结和解释模拟麦克风接入Audio Codec,通过I2S接口输出到Host,再从I2S接口接收Host的数字音频数据,并通过Audio Codec输出到扬声器的全过程。
首先从麦克风的输出开始,麦克风输出的模拟信号在模拟域经过一系列处理以后,通过模数转换变成数字信号,再经过Audio Codec内部针对数字域的增强处理并通过I2S接口输出给Host的全过程。该过程从总体上包括以下阶段:
该阶段相当于是麦克风输出的模拟信号在进行Audio Codec模数转换之前所进行的一系列处理。这个过程主要包括:麦克风的接入,PGA放大,抗混叠滤波。
如[[消费类Audio Codec的音频接口总结]]所解释的,在消费类电子产品中常用的麦克风是驻极体麦克风,输出模拟语音信号,可以以单端或者差分的方式接入Audio Codec。例如下图是TLV320AIC3101数据手册的参考设计中所提供的差分方式连接麦克风的框架图。
从上图中可以看到:
给麦克风通过MICBIAS引脚供电容易理解,但为什么需要给麦克风输出的模拟信号使用一个电容进行隔离呢?
原因是,麦克风所输出的模拟音频信号中包含一部分直流偏置电压,这个电压需要在进行信号放大之前过滤掉,否则会影响后续放大环节的信号动态范围。因此,在MIC输出的模拟信号通道上增加一个交流耦合电容,与Audio Codec MIC输入接口的输入阻抗之间实际上形成了一个RC高通滤波器,可以显著衰减掉麦克风输出模拟信号中包含的直流成分以及RC滤波器截止频率之下的低频成分。
按照高通滤波截止频率=1/(2πRC)的计算公式,在R一定的情况下,C越大截至频率越低,C越小截至频率越高,更高频率的信号分类会被过滤掉,因此可以通过C的调整来设置需要过滤的低频分量的频率范围。
PGA(可编程增益放大器)本身是一个基于差分的运算放大器,其通过切换反馈电阻网络实现放大增益的调节。在实际应用中,可以通过I2C写入寄存器的方式设置PGA的放大增益。
在模拟音频信号的处理流程中,PGA用于把麦克风输入的mV级信号放到到ADC满量程的70%-90%。在PGA的使用中,一般通过寄存器设置合理的增益,确保经过PGA放大以后的信号既不会超出ADC量程而导致消波,对其小的信号经过放大后又可以具有较好的信噪比。
因为麦克风输入信号过小,PGA的放大倍数一般都比较大,输入信号中所包含的噪声也会被放大,因此PGA的[敏感词]特点就是低噪声,尽量避免放大过程中引入新的噪声对信号放大的SNR造成劣化的效果。(这有点类似于射频电路中对天线接收到的微弱无线信号进行放大的LNA低噪声放大器)
因此,简单总结起来,PGA放大的这个阶段的作用就是把麦克风进来的微弱模拟信号放大到ADC的量程范围内。
当然,TLV320AIC3101模拟放大链路在设计上稍有不同。首先,从麦克风或者Line in进来的模拟语音信号会先进入一个input level control的模块:
这个input level control模块虽然是个放大器,但是它的作用并不是用来做信号放大的。从它所支持的放大倍率0到-12dB的范围上看,实际上,这个模块可以把信号的幅度进一步缩小。为什么要对输入audio codec的模拟信号做缩小的处理?原因是这个模块的功能主要是用来混合多路输入的不同幅度的模拟信号的。
以上图为例,三路不同的音频模拟信号经过input level control模块各自处理并叠加后,一起送入PGA模块进行信号放大。而如果三路模拟信号的幅度不同(例如麦克风的典型输出信号幅度为数十mV,Line In信号的幅度一般在1-2V),那么直接叠加不同幅度的信号,实际上就把幅度小的信号在叠加过程中淹没掉了。因此这里可以根据不同路模拟信号的幅度情况,在input level control模块中把幅度大的信号衰减到跟幅度小的信号大致相同的范围内再进行叠加,这样才能保证叠加后的信号中同时包含有多路信号的分量。
在TLV320AIC3101的模拟信号处理流程中,模拟信号经过叠加后进入PGA模块进行放大。其PGA增益的控制有两种方式:
麦克风输出的模拟音频信号经过放大以后,在进入Audio ADC进行模数转换之前,还必须要进行抗混叠滤波(Anti-Aliasing Filter, AAF)的处理。该流程的作用,主要是通过一个低通滤波器通过抑制高频信号分量,确保后续ADC的采样过程符合奈奎斯特采样定理,避免混叠失真。
所谓的混叠失真,是指要进行ADC转换的模拟信号中包含了超过ADC采样奈奎斯特频率的高频分量,这些高频分量在后续的ADC采样和转换过程中会造成信号失真,劣化信号质量。
按照奈奎斯特采样定理,当等待采样的信号中包含有频率大于采样频率/2的成分时,采样过程会导致频谱折叠(Aliasing),产生不可逆的失真。例如,如果采样频率Fs=48kHz,那么输入25kHz信号时,采样过程就会被混叠为48-25=23kHz的虚假信号。因此,有必要在进行ADC采样之前先通过一个低通的抗混叠滤波器强制把大于采样频率/2的成分抑制掉。
至此,从麦克风输入的模拟信号经过以上在模拟域的一系列处理以后,就做好了进行模数转换进入数字域的准备了