date
Apr 6, 2025
slug
2025-04-06-the-popular-audio-codec-inferface
status
Published
tags
音视频
硬件
AudioCodec
summary
本文基于对市场上常用的Audio Codec TLV320AI3101的数据手册进行总结和学习,从中更深入的总结通用audio codec的输入输出接口及其内部的信号处理流程,以此建立对audio codec及其音频处理流程的更为全面的认识。
type
Post
category
音视频
AI summary
本文基于对市场上常用的Audio Codec TLV320AI3101的数据手册进行总结和学习,从中更深入的总结通用audio codec的输入输出接口及其内部的信号处理流程,以此建立对audio codec及其音频处理流程的更为全面的认识。
全文分为三个部分:
- 模拟音频输入接口
- 模拟音频输出接口
- 数字音频接口
模拟音频输入接口简介
以TLV320AI3101为例,该型号Audio Codec可以支持6个单端模拟音频输入引脚,其中包含 2路全差分输入(抗噪声能力强,适合远距离麦克风连接)和2路单端输入(简化电路设计)。可以通过内部寄存器的配置以及外部电路设置为单端麦克风接入,差分麦克风接入以及单端/差分Line In接入的工作模式。
下图为TLV320AIC3101的简化框图。对于模拟音频输入而言,标准的做法就是:如果使用单端麦克风,可以通过L2_L和L2_R实现两路独立的左右声道单端麦克风的接入;而如果是使用差分式麦克风的话,可以分别通过L1_L+,L1_L-以及L1_R+,L1_R-接入两路独立的左右声道差分麦克风。

当然,也可以把差分模式的L1_L和L1_R作为单端麦克风的接口,这样最多可以同时接入6路单端麦克风。
但是需要注意的是,TLV320AI3101内部只有2个ADC,可以同时并行处理两路模拟音频数据的接入,因此如果同时有更多路模拟音频数据接入的话,就需要共享同一个ADC在多路音频数据通道上切换。而音频采样的采样率是设置到ADC的,所以这样也就意味着多路音频输入共享同一个ADC会导致实际采样率的降低。例如,一路ADC最大可支持96 kHz采样率,若同时激活3路输入,那么每路模拟音频输入的采样率仅为32kHz。
下图是TLV320AIC3101多个模拟音频接入共享同一个ADC的示意图,三个模拟音频输入引脚MIC1L/LINE1L,MIC2L/LINE2L/MICDET,MIC1R/LINE1R共享同一个Left ADC。

Mic In
Mic In就是接入模拟麦克风信号的工作模式,这也是Audio Codec最常用的模拟音频数据的接入模式。
我们在产品中常用的驻极体麦克风的输入信号的峰峰值标准值一般为10 mV ~ 100 mV,而ADC的输入范围则通常设计为±1 V(全差分)或0~2 V(单端),所以麦克风输出信号在进行ADC转换之前,需要先通过前置放大器提升信号的电平,以最大程度的扩展ADC转换信号电平的动态范围。
此外,为了能够让驻极体麦克风正常工作,Audio Codec还需要通过MICBIAS引脚(TLV320AIC3101的MICBIAS典型供电电压2V-2.5V)给驻极体麦克风供电。MICBIAS给驻极体麦克风供电的典型连接是,MICBIAS电压通过电阻(如2.2 kΩ)连接至麦克风正极,形成电流回路(典型电流约0.5 mA)。
下图是麦克风单端接入的示意图:

为了进一步提升麦克风采集信号的降噪性能,可以采样差分接入的方式最大程度抑制共模噪声:

Line In
Line In接口(以及针对输出的Line Out接口)用于与其他的消费电子设备或专业音频设备进行对接。
TLV320AIC3101提供了两组Line In接口,同样可以支持单端输入或差分输入两者模式,通过寄存器配置为单端或者差分连接模式。在单端输入的情况下,其峰峰值(Vpp)的范围为 0.5 V ~ 2 V(对接需避免超过电源电压);在差分输入的情况下,其峰峰值范围为1 V ~ 4 V(共模电压需在AVDD/2 ± 0.3 V内)。因此,当以Line In模式接入时,其电压的动态范围已经接近了ADC的满量程输入了,因此就不需要对其进行进行前置放大了,只需要在PGA中对其增益进行适当微调就好,这一点是Line In模式接入和MIC In接入不同的地方。
此外,在Line In接入的情况下,也不需要额外的通过MICBIAS给Line In信号的上游设备供电,这是两者迥异的另外一点。
下图是全志H3平台的Audio Codec的Mic In以及Line In以差分方式接入系统的示意图。

模拟音频输出接口简介
对于Audio Codec而言,有模拟输入接口(MIC,Line In),自然就有模拟输出接口(Line Out,HPOut)。总的来讲,Audio Codec的模拟输出接口一般用于把其内部DAC转换的模拟音频信号通过音频功放放大后驱动不同功率的扬声器、耳机以及以Line Out方式提供给下游的专业音频设备Line In输入接口。
大部分的Audio Codec所包含的模拟音频输入接口,主要有两种类型:
- HPOUT,在Audio Codec的DAC输出后增加了一个小的功放,可以直接用于驱动耳机、小功率扬声器。
- Line Out,实际上就是Audio Codec的DAC输出,没有在其内部进行功率放大,因此可以用于连接后一级的功放来驱动更高功率的扬声器。
Line Out
Audio Codec在模拟音频输出接口方面,Line Out接口适合连接高阻抗设备,例如专业的音频调音台和通过功放来驱动更大功率的扬声器。该接口的输出峰峰值一般在1 V ~ 2 V之间,具有输入阻抗高、输出阻抗低、输出电流很小(<1mA)的特点,适合连接高阻抗负载(> 10 kΩ)。
以TLV320AIC3101为例,该Audio Codec包含两组可独立设置的全功能差分式Line Out接口,均可用于驱动10 kΩ的差分式负载。从DAC输出的模拟音频信号,经过灵活的音频信号路径控制,在混音模块中实现多路不同来源的语音信号的混音处理,再经过增益调节后,最终输出差分音频信号。以下为TLV320AIC3101的Line Out输出的结构图。

- 左右声道DAC输出的模拟音频信号分别通过寄存器配置连接到DAC_L1/2/3和DAC_R1/2/3。
- 当需要在模拟音频输出中使用混音功能时,把DAC_L1和DAC_R1(DAC_L2和DAC_R2用于HPOUT的输出),以及模拟音频输入端的ADC输入信号PGA_L/PGA_R(这样输入Audio Codec的模拟音频信号经过PGA放大以后就不需要进入ADC-DAC的处理,直接进入模拟音频输出环节)分别接入两个独立的混音模块Volume Controls Mixing,在其内部执行混音功能。
- 如果不需要使用混音功能,可以把混音模块旁路掉,直接把DAC_L3和DAC_R3作为Line Out的模拟音频输出信号。
- 混音模块的输出,与DAC_L3/DAC_R3经过音频路径控制的选择,再经过0-9dB的增益调节后,最终在Line Out接口经过差分电路的转换后以差分形式输出。
需要注意的是,以上电路模块图中,Line OUT接口输出的模拟语音信号的处理路径中包含了一个0-9dB的增益调节功能,这个功能只用于调节DAC输出到Line Out或混音器的信号电压幅度,匹配后端设备的输入灵敏度(如功放、调音台),避免信号过弱或过载。该功能只能提升电压,不能提升电流驱动能力。因此Line Out的驱动电路能力仅<1 mA,无法直接驱动低阻负载(如耳机或扬声器)。如果要驱动后一级的大功率扬声器,需要额外增加AB类或者D类功放来进行功率放大。
混音模块Volume Controls Mixing
再来简单介绍以下TLV310AIC3101内部所包含的混音模块也就是Volume Controls Mixing。该模块可以把多路不同来源的模拟音频信号以不同的幅度和增益混合在一起,形成混音信号在Line Out接口上输出。可以支持混音信号的来源包括:左声道ADC的模拟输入音频信号PGA_L,右声道ADC的模拟输入音频信号PGA_R,左声道DAC输出的模拟音频信号DAC_L1,右声道DAC输出的模拟音频信号DAC_R1。
下图是混音模块的内部工作结构图。可以看到,四路独立的模拟音频信号,经过寄存器控制的独立增益控制(增益控制范围为0到-78dB)后再叠加到一起后输出。

当然,混音模块只是一个可选项,如果应用中不需要用到混音模块的话,最简单的就是直接在Line Out上通过音频路径选择控制输出DAC_L3和DAC_R3即可。
HPOUT
HPOUT与Line Out最大的区别是,HPOUT接口的实现上包含了一定的功率放大,因此可以直接驱动小功率的耳机和扬声器外设。使用这种接口的好处就是对于驱动小功率外设的情况下,不需要外置功放,电路设计更简单,成本更低。
Audio Codec的HPOUT接口输出电压的峰峰值一般为1V-2V(增益可调),可以匹配耳机的输入需求(典型耳机灵敏度为90~110 dB/mW),其输出阻抗<1 Ω(低输出阻抗确保驱动耳机时频响平坦,无低频衰减),适合用于驱动低阻抗负载(16~32 Ω),输出的电流较大(30 mA),这一点跟Line Out接口适合驱动高阻抗负载、输出电流极小形成鲜明对比。
HPOUT专为驱动耳机设计,其输出功率范围(15~30 mW)完全匹配典型耳机的需求(如32Ω耳机在1 Vrms下的功率大致为30mW左右)。
HPOUT的命名很容易产生理解上的混淆,例如在TLV320AIC3101里面HPOUT是High Power Output,即高功率输出接口。但是实际上HPOUT接口内置的功放功率很小,只能用于驱动耳机或者很小功率的扬声器,所以说不上是高功率。这里的High Power应该是针对Line Out接口的,因为Line Out接口没有内置功放,输出电流很小。其实如果这个接口只是用去驱动耳机负载的话称为Head Phone Output倒是更为合适。
完整理解了上面的Line Out接口的结构图以后,理解HPOUT的结构图就比较容易了。其中DAC输出、混音模块、模拟音频信号的路径管理模块都与Line Out的结构别无二致,两者最大的不同在于,HPOUT接口在输出之前进行了功率放大(最后的三角形),所以HPOUT可以用于驱动负荷其功率限制的小功率负载。

除了以上的Line Out接口和HPOUT接口以外,部分Audio Codec还内置了一种SPKOUT的更高输出功率的模拟音频输出接口。SPKOUT接口可以用于驱动4~8Ω扬声器,输出功率达到了100-150mW的样子,可以满足一些小功率扬声器的驱动需求。实际上TLV320AIC3101是把HPOUT和SPKOUT两种接口合并起来提供了一个综合的HPOUT接口,既可以用于驱动耳机负载也可以用于驱动小功率的扬声器。
以下表格总结了Line Out接口和HPOUT接口在应用特性上的差异:

数字音频接口简介
除了能够支持以上的模拟音频数据的输入和输出以外,一般的Audio Codec也同时提供了数字音频数据传输的接口,至少,这个数字传输的接口可以用于:
- 把模拟麦克风采集的音频数据经过AD转换以后得到的数字音频数据,通过数字音频接口传输给DSP进行进一步的处理。
- 通过数字音频接口接收DSP传输过来的数字音频数据,经过DA转换以后在扬声器、耳机等设备上播放出来。
而对于Audio Codec而言,最常用的数字音频接口就是I2S接口。一路I2S接口可以用于传输包含两路独立音频数据流的双声道音频数据。为了利用I2S的硬件接口同时传输更多路的音频数据,部分Audio Codec也会在I2S硬件接口上提供TDM时分复用的方式传输多路音频数据的音频传输协议。
I2S接口
I2S(Inter-IC Sound)是一种同步串行接口,专门用于音频数据的传输,具有简单、高效和抗干扰能力强的特点。I2S接口传输的是数字音频数据,通常以PCM(脉冲编码调制)格式表示,实际上也就是Audio Codec中从麦克风采集语音数据经过AD转换后的数字音频数据,或者从DSP接收到的、需要通过Audio Codec进行DA转换后在扬声器播放出来的数字音频数据。
通过I2S所传输的数字音频数据对应的参数包括采样率(如16KHz、32KHz、44.1kHz、48kHz等)、位深(如16位、24位等)和声道数(如立体声双声道)。具体的传输过程中,I2S接口通过时钟信号来同步音频数据的传输。它使用多个时钟信号来控制数据的发送和接收,确保音频数据的准确传输。
I2S硬件接口的信号线包括:
- SDIN/SDOUT(Serial Data):串行数据线,用于对外或者对内传输数字音频数据。
- WCLK(Word Clock):字选择信号,用于指示当前传输的是左声道还是右声道数据。通常WCLK为高电平时传输左声道数据,为低电平时传输右声道数据。
- BCLK(Bit Clock):串行位时钟线,用于控制数据的采样速率。音频数据在BCLK的上升沿或下降沿被采样。
下图是TLV320AIC3101的I2S工作时序图。在I2S标准中,数据在WCLK边沿(上升沿或下降沿)延迟1个时钟周期(BCLK)后开始传输下一个声道的MSB数据位。

TDM接口
如上所述,一路I2S接口只能以左右声道的方式用于传输两路独立的音频数据,形成双声道立体声的音频效果。但是很多时候我们的产品(例如包含麦克风阵列的功能)想要传输更多路独立音频流的时候,除了使用多路独立的I2S接口以外,还可以使用TDM接口来解决这个问题。
在硬件接口上,TDM接口与I2S接口共享同一组物理引脚(DOUT/DIN、SCK、WS),只不过数据传输协议不同。I2S模式可用于传输双通道(立体声)音频数据;TDM模式则用于使用相同的物理接口同时传输多通道(2~8通道)音频数据,通过时隙划分复用同一数据线。
在音频Codec中,TDM接口可以用于在单条数据线上传输多个独立音频通道的采样数据,每个通道的数据按预先分配的时间槽(Time Slot)依次传输。在具体的工作过程中,TDM接口和协议会将数据传输周期划分为多个时隙,每个时隙分配给一个独立的音频数据通道。例如,若TDM支持8个时隙,则可传输8个通道的音频数据,8个通道轮流使用自己的时隙传输数据。
下图是TLV320AIC3101的TDM数据传输时序图。可以看到,使用TDM模式进行多路音频数据传输使用了与I2S相同的硬件接口和物理引脚,只不过不再使用Word Clock区分左右声道,而是在Data In和Data Out固定设置不同音频流所使用的传输时隙,因此,对于使用TDM接口进行多路音频数据传输的上下游设备而言,需要提前协商清楚并设置好同时传输几路音频流,以及各路音频流在传输时序中的时隙才行。

对于TDM接口的使用,需要注意的是,TDM接口仍然没有完全的标准化,针对其通信协议细节(如时隙数、对齐方式、时钟相位)缺乏统一的标准,不同厂商的实现可能存在一定的差异,所以在使用TDM接口进行上下游设备之间的对接调试中,可能会遇到一定的兼容性问题,需要调试部分参数才能解决。
PCM接口
其实除了以上的I2S接口和TDM接口以外,在一些Audio Codec上还有一种用于传输数字音频信号的PCM接口(TLV320AIC3101没有PCM接口),该接口多用于语音通信和多通道数据传输场景。
PCM接口一般用于传输未经压缩的多通道(能够更灵活的支持多通道是PCM接口与I2S之间的最大差别)线性PCM音频数据,可支持语音、音乐等多种场景。
具体的使用过程中,PCM接口的典型应用场景就是与单设备多通道、多设备多通道等形态的音频设备进行连接,通过一组PCM接口可以实现多个独立的音频通道的音频数据的传输。例如:
- 1个8通道ADC芯片通过PCM接口连接Host,每个时隙传输1个通道的采样数据。
- Host通过1个PCM接口连接4个单声道麦克风(每个设备占用1个时隙)。

从接口的硬件定义上,PCM接口与I2S接口很类似,通常包含以下数据线:
- PCM_CLK(位时钟):由主设备生成和控制,频率为采样率 × 位宽 × 通道数。例如在16位、8通道、48 kHz采样率的情况下,PCM_CLK频率 = 48k × 16 × 8 = 6.144 MHz。
- PCM_SYNC(帧同步):由主设备生成和控制,标识音频帧的起始位置,频率等于采样率。
- PCM_DIN(数据输入)与 PCM_DOUT(数据输出):传输多通道音频数据。
从以上PCM接口所包含的数据线可以看到,PCM_CLK、PCM_DIN、PCM_DOUT的定义与I2S没有区别,双方之间的区别主要是在I2S的WCLK和PCM的PCM_SYNC上。

要彻底解释清楚这两者的差异,首先要弄清楚PCM接口中用于作为帧同步信号的PCM_SYNC中的音频帧是什么意思。
PCM接口中所传输的音频帧,总是由PCM_SYNC的一次跳变(跳变边沿可编程设置)来启动传输,而一个音频帧中包含了PCM接口所连接的多通道中每一个通道的一个音频采样数据,每个音频采样数据占据一个固定的时隙,各个通道在音频帧中所占据的时隙在Host和Device两端的寄存器中进行设置。在这种PCM接口连接多通道音频设备的情况下,一个音频帧被分为多个时隙,每个时隙包含其中一个通道的音频采样数据,整个音频帧由PCM_SYNC信号触发开始一个完整的数据传输周期(即这个音频帧的周期)。
如下图所示的PCM接口连接的四通道音频传输的示意图,一次PCM_SYNC(FS)的跳变启动一个PCM Frame的传输,一个PCM Frame包含四个独立通道的音频采样数据,每个通道的采样数据占据固定的时隙。

所以本质上,PCM接口也是以TDM时分复用的方式在在一根DIN和DOUT线上使用不同的时隙传输多个通道的音频采样数据。
参考资料
- TLV320AI3101 datasheet