本文重点以TI的TLV320AIC3101为例详细总结和解释模拟麦克风接入Audio Codec,通过I2S接口输出到Host,再从I2S接口接收Host的数字音频数据,并通过Audio Codec输出到扬声器的全过程。
本文在前一篇的基础上,继续开始对Audio模拟信号进行数模转换以及在数字域中的处理。
麦克风输出的模拟音频信号,经过PGA放大并且进行抗混叠滤波以后,就可以进入Audio ADC的阶段开始进行模数转换了。
参考《如何理解Audio Codec中ADC和DAC的SNR概念?》一文,音频系统中的Audio ADC和DAC广泛采用了Σ-Δ调制器架构而非传统架构(如SAR或Flash型)来实现,主要的原因是前者可通过过采样、噪声整形和数字滤波等技术的组合,在音频系统中实现了高分辨率、低量化噪声和低成本的平衡,完美契合了音频信号的处理需求。
因此,对模拟音频信号进行的模数转换主要包含两个阶段:Σ-Δ调制器和数字抽取滤波器(Digital Decimation Filter)。
关于Σ-Δ调制器的工作原理,参考资料3有一个很生动的动画网页进行介绍,其结构如下图所示:
其大致的工作逻辑是:
对于TLV320ALV3101而言,其Σ-Δ调制器的过采样率为128倍。那么,当以48K采样率对模拟音频信号进行采样时,意味着Σ-Δ调制器的采样速率高达:48K x 128 = 6.144MHz。因此,对于Σ-Δ调制器而言,在设置为48K采样率的情况下,调制器输出的结果就是6.144MHz频率的0/1位流。
数字抽取滤波器
Σ-Δ调制器的输出,接下来要经过数字抽取滤波器恢复为其Audio ADC定义的24bit数字音频采样信号。其工作逻辑是:
例如:单个音频采样的128bit中有80次为1,(80/128)×16,777,216=10,485,760(换算为十六进制就是0xA00000)。
完成ADC转换之后,就正式进入音频信号的数字域了。
对于不少更高级的Audio Codec而言,其内部能够支持回音消除等特性,所以音频3A(AEC,ANS,AGC)都是放在数字域,对ADC输出的数字音频信号进行处理的。不过TLV310AIC3101缺乏AEC这类高级特性,从以上模拟信号PGA放大的部分也可以看到,其AGC是通过反馈的方式自动控制PGA的增益,在模拟域来实现自动增益控制的。
下图是TLV320AIC3101模拟信号经过ADC转换后在数字域的处理流程图。可以看到,经过ADC转换后所得到的数字模拟信号,已经可以通过寄存器控制SW-D1和DOUTL的方式直接在数字接口上输出给Host了。同时,该型号audio codec还包含了一个工作在数字域的Effects模块,该模块可以对ADC输出的数字信号做进一步的增强处理后,再通过SW-D2输出到数字音频接口。
在TLV320AIC3101的音频处理链路中,数字音频效果处理模块(Effects)是实现音质增强和噪声抑制的核心模块。由上图可以看到,这个模块不仅可以对ADC转换的模拟音频输入信号进行增强处理,也可以对从I2S等数字音频接口直接接收到的数字音频输入信号进行处理。
在TLV321AIC3101的数据手册中,这个Effects模块所包含的功能包括:
因此总结起来,3-D音效增强实际上对左右声道的数字音频进行不同幅度的调整后混音,产生立体声的效果;Bass,Treble,Midrange这三个模块实际上分别时针对语音信号中的低频、高频以及中频分别通过增益控制分别实现选择性的增强或者衰减;EQ则是把整个频带分成多个不同的段,然后设置不同的增益;Notch Filter则专门用于消除特定频率点上的干扰。
经过以上Effects模块的处理以后,数字音频信号就可以通过以上的数字音频接口(一般是使用I2S)输出给Host了。一路I2S可以把两个ADC同时输出的声道数字音频信号,使用WCLK分区左右声道传输给Host。下图是左对齐的I2S信号时序图: