Codec 芯片基础:从框图到关键指标
做音频系统,绕不开 Codec 芯片。它就像音频世界的翻译官——把模拟的声音变成数字信号,再把数字信号还原成人耳能听懂的模拟声。我最早接触 Codec 是在一个便携录音笔项目上,那时候光看数据手册就花了两天,因为里面东西真不少。今天咱们就把 Codec 的里里外外拆开看看。
Codec 芯片内部框图
先看一张典型的 Codec 内部结构图。别被那些方块吓到,其实核心就几大块。
Codec 内部核心模块
- ADC 通道:模拟输入 → 模拟前端 → 采样保持 → 量化编码 → 数字输出
- DAC 通道:数字输入 → 插值滤波 → 噪声整形 → 模拟重建 → 模拟输出
- 数字接口:I²S / TDM / PCM,负责和 DSP 或 CPU 通信
- 控制接口:I²C / SPI,用来配置寄存器
- 时钟管理:PLL 和分频器,生成内部采样时钟
- 电源管理:LDO、电荷泵,给模拟和数字部分供电
我习惯把 Codec 想象成一个微型工厂。模拟信号进来,先经过模拟前端做增益调整和抗混叠滤波,然后 ADC 把它切成数字样本。数字信号出去时,DAC 再把数字样本还原成连续的模拟波形。中间的数字接口就是工厂的物流通道,控制接口是厂长办公室——你通过 I²C 写寄存器,告诉它「采样率设 48kHz」「增益加 6dB」。
你看,ADC 和 DAC 路径是分开的,但共享时钟和控制。这也是为什么很多 Codec 支持全双工——同时录音和放音。嗯,这里要注意:模拟和数字部分通常有独立的电源引脚,布局时千万不能混,否则底噪会让你头疼。
ADC 工作原理
ADC 的核心任务就一个:把连续变化的电压,变成一串离散的数字。说白了就是「切」和「量化」。
- 采样:以固定时间间隔读取模拟电压值。采样率必须满足奈奎斯特定理——至少是信号最高频率的两倍。
- 保持:把采样到的电压稳住,给量化电路足够时间去处理。
- 量化:把连续的电压范围分成若干等级,每个等级对应一个数字码。
- 编码:把量化后的等级转换成二进制数据,比如 16 位、24 位。
我遇到过有人问:「是不是采样率越高越好?」理论上是的,但代价是数据量暴增,功耗也上去了。实际项目中,语音用 8kHz 或 16kHz,音乐用 44.1kHz 或 48kHz,足够了。
避坑指南
我曾经在一个车载项目里用了 96kHz 采样率,结果 DSP 算力全耗在滤波上,音频延迟飙到 30ms。后来降到 48kHz,延迟降到 8ms,人耳完全听不出区别。选采样率别盲目追高,够用就行。
DAC 工作原理
DAC 是 ADC 的逆过程。数字样本进来,重建出连续的模拟波形。
- 插值滤波:数字样本之间插入中间值,提高有效采样率,减轻后面的模拟滤波压力。
- 噪声整形:把量化噪声推到人耳不敏感的高频段,提升带内信噪比。这是 Sigma-Delta DAC 的核心技术。
- 模拟重建:通过开关电容网络或电阻阶梯,把数字码转换成模拟电压。
- 低通滤波:滤掉高频噪声和镜像频率,输出干净的模拟信号。
你想想看,如果 DAC 不做插值,直接输出原始样本,那波形就像台阶一样,听起来全是毛刺。插值滤波就是把这些台阶磨平。
Codec 关键指标
选 Codec 不能光看牌子,得看指标。我列几个最关键的,也是数据手册上你第一眼就该找的。
| 指标 | 含义 | 典型值(消费级) | 典型值(专业级) |
|---|---|---|---|
| SNR(信噪比) | 信号功率与噪声功率的比值 | 90-100 dB | 110-120 dB |
| THD+N(总谐波失真+噪声) | 失真和噪声占总信号的百分比 | 0.01% - 0.001% | 0.0005% 以下 |
| 动态范围 | 最大不失真信号与最小可分辨信号的比值 | 90-100 dB | 110-120 dB |
| 采样率 | 每秒采集/输出的样本数 | 48 kHz - 96 kHz | 192 kHz 以上 |
| 位深 | 每个样本的比特数 | 16 bit / 24 bit | 24 bit / 32 bit |
注意
SNR 和动态范围在数值上可能很接近,但概念不同。SNR 是在有信号时测的,动态范围是在无信号时测的最小可分辨信号。有些厂商会拿 SNR 当动态范围宣传,别被忽悠了。
SNR 与 THD+N 的实战理解
SNR 高,说明底噪低。你录音时背景干净,没有嘶嘶声。THD+N 低,说明失真小,声音保真度高。我习惯用 THD+N 来评估 Codec 的「纯净度」。
举个例子:一个 Codec 标称 SNR 为 100 dB,THD+N 为 0.003%。这意味着在满量程信号下,噪声比信号低 100 dB,失真和噪声加起来只占信号的十万分之三。听起来不错对吧?但实际用起来,还得看你的信号电平。如果你只用了 1/10 的满量程,SNR 会下降 20 dB,因为噪声是固定的。
我曾经在一个录音笔项目里,选了 SNR 很高的 Codec,结果 PCB 布局没做好,电源噪声串进了模拟地,实测 SNR 掉了 15 dB。后来加了 LDO 和地平面分割才救回来。所以指标是纸上的,实际效果看系统设计。
动态范围的实际意义
动态范围决定了你能同时处理多小的声音和多响的声音。比如交响乐,最弱和最响之间可能差 100 dB。如果你的 Codec 动态范围只有 90 dB,那弱音就会被噪声淹没,强音又会削波。
我建议做音频产品时,动态范围至少留 10-15 dB 的余量。别卡着指标选型,否则量产时批次差异会让你抓狂。
选型检查清单
- SNR 是否满足目标应用?(语音 ≥ 80 dB,音乐 ≥ 100 dB)
- THD+N 是否低于系统噪声底?(通常 ≤ 0.01% 可接受)
- 动态范围是否覆盖信号峰值和底噪?
- 采样率和位深是否匹配 DSP 处理能力?
- 电源和时钟要求是否容易满足?
好了,Codec 的基础就这些。下一块咱们要聊的是 Codec 和 DSP 怎么握手——数字音频接口的时序和协议。不过那是后面的事了,先把今天的内容消化掉。