3. Codec 硬件架构:ADC/DAC 原理、模拟输入输出通道、混音器与增益控制
各位同学,今天我们聊聊 Codec 的硬件架构。说实话,这部分内容在很多人看来就是「看 datasheet 就行」,但实际做项目时,你会发现坑全埋在这里。我最早做一款智能音箱的 Codec 驱动时,就因为没搞懂 PGA 的输入阻抗匹配,导致底噪大了 6 个 dB,被音频老大叫去会议室「喝茶」……嗯,从那以后,我对硬件架构的每个模块都格外上心。
3.1 ADC 与 DAC 的核心原理
ADC 和 DAC 是 Codec 的「翻译官」。一个把模拟世界的连续信号转成离散的数字码流,另一个反过来。你想想看,麦克风拾取的是空气振动,扬声器播放的也是空气振动,但中间的数字处理全靠 0 和 1,没有这对翻译官,啥都干不了。
3.1.1 ADC:从模拟到数字
常见的音频 ADC 架构有三种:
| 架构类型 | 采样率范围 | 典型应用 | 我个人觉得的优缺点 |
|---|---|---|---|
| 逐次逼近型 (SAR) | ~1 MSPS | 低功耗、中低端 Codec | 结构简单,延迟低,但分辨率做不高 |
| Δ-Σ (Delta-Sigma) | ~10 MSPS 以上 | 高保真音频 Codec | 过采样+噪声整形,信噪比极高,但延迟稍大 |
| 流水线型 (Pipeline) | ~100 MSPS | 高速、视频或仪器领域 | 音频里很少用,功耗大 |
音频领域,Δ-Σ ADC 是绝对的主流。为什么?因为它能把量化噪声推到高频段,再用数字滤波器切掉,这样在音频带内(20 Hz ~ 20 kHz)的信噪比可以轻松做到 100 dB 以上。我在项目中用过一颗 AKM 的 Codec,它的 Δ-Σ 调制器工作在 6.144 MHz,过采样率高达 128 倍,出来的声音底噪几乎听不见。
关键参数:ADC 的动态范围 (DR) 和总谐波失真加噪声 (THD+N)。这两个指标直接决定了录音的「干净程度」。我习惯先看 DR,再看 THD+N,如果 DR 低于 90 dB,做语音唤醒还行,做音乐录制就悬了。
3.1.2 DAC:从数字回到模拟
DAC 的原理和 ADC 对称,但实现上有个重要区别——输出重建滤波器。数字信号经过 DAC 转换后,会产生镜像频率(采样率的整数倍),必须用模拟低通滤波器把它们干掉,否则你听到的就是「数字味」的刺耳声。
我记得有一次调试蓝牙音箱,播放 1 kHz 正弦波时,频谱上在 48 kHz 附近出现了一个大包。查了半天,发现是 DAC 后的重建滤波器截止频率设得太高,镜像没滤干净。把滤波器拐点从 24 kHz 降到 20 kHz,问题解决。
小技巧:很多现代 Codec 把重建滤波器集成在片内,但外部通常还需要一个 RC 或 LC 低通网络做「二次滤波」。别省这个电容电阻,省了就是给自己挖坑。
3.2 模拟输入输出通道
Codec 的模拟通道,说白了就是信号进出的大门。输入通道负责把麦克风或 Line-in 信号调理好送给 ADC,输出通道负责把 DAC 出来的信号放大后送给扬声器或耳机。
3.2.1 输入通道结构
一个典型的模拟输入通道包含:
- 输入选择器 (Input Mux):选择从哪个物理引脚进来,比如 MIC1、MIC2、LINE_IN。
- 偏置电路 (Bias):给驻极体麦克风提供 2.0V ~ 2.5V 的偏置电压。
- 前置放大器 (Pre-amp):把麦克风的毫伏级信号放大到 ADC 的满量程附近。
- 抗混叠滤波器 (AAF):在 ADC 之前滤除高于奈奎斯特频率的信号,防止混叠。
这里有个容易忽略的点:输入阻抗匹配。我曾经接过一个案子,客户用高阻抗的 MEMS 麦克风,但 Codec 的输入阻抗只有 10 kΩ,结果信号衰减了 6 dB,信噪比直接崩了。后来在中间加了一级运放缓冲,才把指标拉回来。
3.2.2 输出通道结构
输出通道相对简单,但电流能力是关键:
- DAC 输出缓冲器:提供足够的驱动电流。
- 输出开关 (Output Mux):选择信号送到耳机、扬声器还是 Line-out。
- 静音电路 (Mute):上电或切换时先静音,防止「噗」声。
注意:输出通道的 Pop/Click 噪声 是嵌入式音频最常见的客诉之一。我见过一个产品,每次播放开始都会「啪」一声,原因是 DAC 输出使能时,电容上的直流偏置突然建立。解决方案是:先使能 DAC 输出,再通过软斜坡 (Soft Ramp) 缓慢抬起音量。
3.3 混音器 (Mixer)
混音器是 Codec 内部的「调音台」。它可以把多路音频信号按不同比例叠加,再送到输出通道。你想想看,一个通话设备需要同时处理:麦克风输入、系统提示音、蓝牙电话音频,这三路信号怎么合到一起?靠混音器。
3.3.1 模拟混音 vs 数字混音
| 类型 | 实现位置 | 优点 | 缺点 |
|---|---|---|---|
| 模拟混音 | ADC 之后、DAC 之前 | 零延迟,无量化误差 | 硬件固定,灵活性差 |
| 数字混音 | DSP 内部 | 可编程,支持增益/均衡 | 有延迟,需考虑溢出 |
大多数中高端 Codec 同时支持两种混音方式。我个人习惯:低延迟场景用模拟混音,需要音效处理的场景用数字混音。比如对讲机产品,延迟要求高,我就走模拟混音;音乐播放器要做 EQ 和 DRC,那就必须走数字混音。
3.3.2 混音器的增益管理
混音时最怕什么?削波 (Clipping)。两路 0 dB 信号叠加,如果不做衰减,输出直接削波。所以混音器每个输入通道都有独立的衰减器,通常以 -6 dB、-12 dB 步进。
我遇到过一个问题:混音后的信号听起来「发闷」。查了半天,发现是混音器内部做了 -6 dB 衰减,但后续的 PGA 又补了 +6 dB 增益,等于白忙活,还引入了额外噪声。正确的做法是:在混音器里做衰减,后续 PGA 保持 0 dB 或微增益。
经验公式:混音器输出电平 = 20 * log10( Σ(10^(输入电平/20)) )。如果不想算,记住一个原则:两路 0 dB 信号混音,至少衰减 6 dB;三路衰减 9.5 dB;四路衰减 12 dB。
3.4 增益控制 (PGA)
PGA,全称 Programmable Gain Amplifier,可编程增益放大器。它是 Codec 里最容易被低估的模块。很多人以为 PGA 就是个「音量旋钮」,其实它的设计好坏直接决定了系统的动态范围。
3.4.1 PGA 的位置
通常 Codec 内部有两个 PGA:
- 输入 PGA (ADC PGA):放在 ADC 之前,负责把模拟输入信号调整到 ADC 的最佳输入范围。
- 输出 PGA (DAC PGA):放在 DAC 之后,负责驱动耳机或扬声器。
这里有个关键概念:增益分配。输入 PGA 增益太高,ADC 容易饱和;增益太低,量化噪声会淹没信号。我一般这样估算:
// 假设麦克风最大输出为 100 mV RMS
// ADC 满量程输入为 1 V RMS
// 所需 PGA 增益 = 20 * log10(1 / 0.1) = 20 dB
// 但实际要留 6 dB 余量,防止突发大声
// 所以 PGA 增益设为 14 dB 左右
3.4.2 PGA 的噪声与失真
PGA 不是完美的。增益越大,噪声也越大。我见过一款 Codec,它的 PGA 在 +30 dB 增益时,输出噪声比 +0 dB 时高了 15 dB。这意味着什么?如果你用高增益去放大一个弱信号,信噪比反而会变差。
避坑指南:我曾经在调试会议麦克风阵列时,发现远场拾音噪声很大。排查后发现,PGA 增益设到了 +36 dB,而麦克风本身的 SNR 只有 60 dB。后来换了一颗 SNR 为 70 dB 的麦克风,PGA 增益降到 +20 dB,噪声问题迎刃而解。记住:PGA 增益不是越高越好,要在信号电平和噪声之间找平衡。
3.4.3 自动增益控制 (AGC)
很多 Codec 的 PGA 支持 AGC 模式。AGC 会根据输入信号的平均电平自动调整增益,适合语音通信场景。但 AGC 有个副作用:呼吸效应——当说话者停顿或背景安静时,AGC 会逐渐提高增益,导致背景噪声被放大,听起来像在「呼吸」。
我处理过一个案例:某款对讲机产品,开启 AGC 后,在安静环境下能听到明显的「嘶嘶」声。解决方案是:限制 AGC 的最大增益,并设置较长的释放时间。具体参数:最大增益限制在 +20 dB,释放时间设为 2 秒,这样既保证了语音清晰度,又避免了噪声放大。
3.5 整体架构图
下面这张 SVG 图展示了典型 Codec 的硬件架构,从模拟输入到数字处理再到模拟输出,你可以对照着理解每个模块的位置和作用。
3.6 本章小结
好,我们来捋一下。Codec 的硬件架构,核心就是 ADC、DAC、模拟通道、混音器和 PGA 这五个模块。ADC 和 DAC 决定了信号转换的质量,Δ-Σ 架构是音频主流;模拟输入输出通道负责信号调理和驱动,阻抗匹配和 Pop 噪声是常见坑;混音器解决多路信号叠加问题,增益管理要小心削波;PGA 是动态范围的关键,增益分配和 AGC 参数需要根据实际场景调优。
说实话,这些知识点光看书是不够的。我建议你找一块开发板,用示波器看看 PGA 增益变化时噪声底的变化,用频谱仪看看混音器削波时的谐波分布。亲手摸一遍,比看十遍 datasheet 都管用。