音频Codec核心架构:ADC/DAC工作原理、模拟前端(AFE)设计、数字信号处理(DSP)模块、I2S/PCM/TDM接口协议

各位好,欢迎来到第二章。上一章我们聊了声音的本质和数字化的基本概念。这一章,咱们要真正钻进Codec芯片内部,看看它到底是怎么工作的。

很多人觉得Codec就是个黑盒子——模拟信号进去,数字信号出来。其实没那么玄乎。我当年第一次拆解一颗Codec的Die(裸片)时,才真正理解什么叫“麻雀虽小,五脏俱全”。一颗小小的芯片里,模拟、数字、时钟、电源管理全挤在一起,稍有不慎就会串扰。

好,咱们从信号流的角度,一步步拆开它。

2.1 信号链全景:从麦克风到数字总线

先看一张整体架构图。我习惯把Codec分成四个核心域:模拟前端(AFE)、ADC/DAC核心、数字信号处理(DSP)、数字接口。信号从麦克风进来,经过AFE调理,送入ADC量化成数字流,再经过DSP做滤波或增益调整,最后通过I2S/PCM/TDM总线送给主控(SoC/CPU)。回放路径则反过来。

核心信号链(录音方向):

麦克风 → PGA(可编程增益放大器) → 抗混叠滤波器 → ADC(Σ-Δ调制器+抽取滤波器) → DSP(高通/降噪/均衡) → 数字接口(I2S/TDM) → 主控

下面这张SVG图把四个模块的关系画清楚了。我建议你保存下来,后面每个小节都可以回来对照。

音频Codec核心架构框图 音频Codec核心架构框图 模拟前端 (AFE) PGA · 偏置 · 抗混叠 差分/单端输入选择 ADC 核心 Σ-Δ 调制器 抽取滤波器 (CIC + FIR) DSP 模块 高通/降噪/DRC EQ · 音量控制 数字接口 I2S / PCM TDM DAC 核心 插值滤波器 Σ-Δ 调制器 + 模拟LPF 模拟输出驱动 LPF · 耳机功放 说明: 实线箭头为录音路径(ADC方向),虚线箭头为回放路径(DAC方向)。 实际芯片中,AFE和DAC输出可能共用引脚,通过内部开关切换。

2.2 模拟前端(AFE)设计

AFE是信号进入Codec的第一道关卡。说白了,它的任务就是把麦克风或线路输入的微弱信号,调理到ADC能舒服工作的电平范围。

我遇到过不少项目,ADC选得挺好,结果AFE没设计好,底噪直接毁了整个产品。嗯,这里有几个关键点你必须注意。

2.2.1 输入结构:单端 vs 差分

  • 单端输入:信号对地测量。简单、省引脚,但容易受共模噪声干扰。消费电子里常见。
  • 差分输入:信号用正负两根线传,共模噪声被抵消。抗干扰能力强,信噪比高。专业音频和车载领域几乎必选。

我的经验: 如果板子上有开关电源或数字信号走线,尽量用差分输入。我曾经在一个智能音箱项目里,为了省一个引脚用了单端,结果50Hz工频干扰怎么都滤不干净,最后不得不改板。血的教训。

2.2.2 可编程增益放大器(PGA)

PGA负责把信号放大到ADC的满量程附近。为什么需要可编程?因为麦克风的灵敏度差异很大——有的-26dBV,有的-42dBV。固定增益的话,小声说话可能只有几个LSB,大声说话直接削波。

PGA的增益范围通常在0dB到+60dB之间,步长1dB或0.5dB。我个人习惯在初始化时先做一次自动增益校准:播放1kHz 0dBFS信号,调整PGA直到ADC读数在-6dBFS左右,留出余量。

2.2.3 抗混叠滤波器

这是个硬性要求。ADC采样前,必须用模拟低通滤波器把高于奈奎斯特频率的信号干掉。否则这些高频分量会折叠到基带,产生混叠失真。

对于Σ-Δ ADC来说,抗混叠滤波器可以做得简单些——因为调制器本身过采样,奈奎斯特频率很高。但DAC输出端也需要一个重建滤波器(也是低通),把阶梯波平滑成连续信号。

注意: 抗混叠滤波器的截止频率不能太陡,否则会引入相位失真。我一般建议用二阶或三阶巴特沃斯,通带纹波控制在0.1dB以内。

2.3 ADC/DAC核心工作原理

现在主流的音频Codec几乎都用Σ-Δ(Sigma-Delta)架构。为什么?因为它能用相对低的模拟精度,换取高分辨率(16/24/32bit)。

2.3.1 Σ-Δ ADC:过采样 + 噪声整形

核心思想就两点:

  1. 过采样:用远高于奈奎斯特频率的速率(比如64倍或128倍)对信号采样。量化噪声被摊开到更宽的频带里。
  2. 噪声整形:通过反馈环路,把低频段的噪声推到高频段。基带内的噪声就小了。

然后,数字抽取滤波器(CIC + FIR)把高频数据降回目标采样率(比如48kHz),同时滤掉高频噪声。

举个例子: 一个64倍过采样的Σ-Δ ADC,内部调制器跑在3.072MHz(48kHz × 64)。量化噪声被整形后,20Hz-20kHz内的信噪比可以轻松做到100dB以上。如果用传统逐次逼近(SAR)ADC,要达到同样SNR,模拟电路精度要求高得多。

2.3.2 Σ-Δ DAC:插值 + 噪声整形 + 模拟LPF

DAC是ADC的逆过程。数字信号先经过插值滤波器把采样率升上去(比如从48kHz升到3.072MHz),然后送入Σ-Δ调制器做噪声整形,最后经过1bit或多位DAC输出,再用模拟低通滤波器平滑。

这里有个坑:DAC输出的模拟低通滤波器设计不好,会直接影响THD+N。我见过有人直接用RC一阶滤波,结果高频噪声残留太多,SNR比规格书低了10dB。

2.4 数字信号处理(DSP)模块

现代Codec内部基本都集成了一个轻量级DSP核心。它不跑操作系统,只做固定的音频处理流水线。好处是:不占用主控CPU资源,延迟低,功耗小。

常见的DSP处理模块包括:

处理模块 功能 典型参数
高通滤波器(HPF) 滤除直流偏移和次声波 截止频率 20Hz ~ 200Hz,一阶或二阶
降噪滤波器(NR) 抑制稳态背景噪声 单麦克风/双麦克风降噪
动态范围压缩(DRC) 防止削波,提升响度 阈值 -40dBFS ~ 0dBFS,压缩比 1:1 ~ 20:1
均衡器(EQ) 调整频响曲线 5段 ~ 10段参数EQ
音量控制 数字域增益调整 步长 0.5dB,范围 -120dB ~ +24dB

避坑指南: 我曾经在调试一个会议麦克风阵列时,发现DSP的高通滤波器默认开启且截止频率设在了300Hz。结果人声低频全被切了,听起来像电话音。后来我改成80Hz,问题解决。所以,拿到Codec后第一件事:检查所有DSP模块的默认配置。

2.5 数字接口协议:I2S / PCM / TDM

DSP处理完的数字音频,要通过串行总线送给主控。这里最常用的就是I2S(Inter-IC Sound),也叫PCM接口。其实两者物理层几乎一样,只是时序定义略有差异。

2.5.1 I2S 总线信号

I2S只需要三根线:

  • BCLK(位时钟):每个bit一个脉冲。频率 = 采样率 × 位深 × 通道数。
  • LRCK(左右声道时钟/帧同步):频率等于采样率。高电平左声道,低电平右声道(或反过来,看配置)。
  • SDATA(串行数据):二进制补码格式,MSB first。

举个例子:48kHz采样率,24bit立体声,BCLK频率 = 48k × 24 × 2 = 2.304MHz。

2.5.2 PCM 与 I2S 的区别

特性 I2S PCM(标准模式)
数据对齐 LRCK变化后延迟1个BCLK LRCK变化时数据立即开始
LRCK极性 左声道低电平,右声道高电平 通常左声道高电平,右声道低电平
兼容性 飞利浦标准,最广泛 早期DSP/Codec使用

实际项目中,大多数Codec都支持I2S模式。如果你遇到PCM模式,通常可以通过寄存器配置切换。

2.5.3 TDM(时分复用)

当需要传输超过两个声道时(比如5.1环绕声、麦克风阵列),I2S就不够用了。TDM把多个声道的数据按时间片塞进同一条数据线。每个帧同步周期内,依次传输声道0、声道1、声道2……

TDM的BCLK频率会更高。比如8通道、48kHz、24bit,BCLK = 48k × 24 × 8 = 9.216MHz。布线时要注意信号完整性。

我曾经踩过的坑: 在一个8麦克风阵列项目中,TDM的BCLK跑到12.288MHz。PCB走线没做等长,结果数据线比时钟线长了约2cm,导致建立时间不足,高位数据偶尔出错。后来在Codec端加了BCLK的相位延迟寄存器才解决。所以,高频TDM一定要做等长布线。

2.6 本章小结

这一章我们走通了Codec的完整信号链:

  • AFE负责信号调理,差分输入是抗干扰的首选。
  • Σ-Δ ADC/DAC用过采样和噪声整形实现高保真转换。
  • DSP模块提供灵活的滤波和增益控制,但默认配置要仔细检查。
  • I2S/PCM/TDM是数字音频的“高速公路”,时序和布线是稳定通信的关键。