摘要:ADC 与 PLL 是混合信号芯片的两大台柱:前者把连续世界翻译成数字比特,后者为数字世界合成精准时钟。本节从采样与量化出发推导 SQNR 与"每倍带宽 1 bit"经验法则,比较闪速、逐次逼近、流水线与 Σ-Δ 四种架构的选择逻辑;再拆解 PLL 的四件套闭环,用 Python 计算环路带宽与抖动预算,最后给出一个音频 ADC 的完整选型案例。
芯片诞生记行至此处:模拟前端已经能放大、能过滤真实世界的信号。但处理终究要在数字域做(第 4 章),翻译官就是 ADC;而整个数字域的心跳,来自 PLL。
采样把时间离散化,量化把幅度离散化。量化误差在 ±LSB/2 内近似均匀分布,其噪声功率为 (Δ²/12),Δ 为量化步长。对一个满幅正弦信号,信噪比推导出教科书公式:
SQNR = 6.02N + 1.76 dB(N 为位数)
import numpy as np def sqnr(N, oversample_ratio=1): base = 6.02 * N + 1.76 gain = 10 * np.log10(oversample_ratio) # 过采样增益仅3dB/倍频(单极噪声整形前) return base + gain print("奈奎斯特采样下的理想SQNR:") for N in [8, 10, 12, 14, 16, 20]: print(f" {N:2d} bit: {sqnr(N):.1f} dB") # 反过来问: 音频CD要96dB -> 需要多少位 need = (96 - 1.76) / 6.02 print(f"\n要达96dB至少 {need:.1f} bit -> CD用16bit") # 带宽-精度-功耗的三角关系(经验斜率) print("\n经验: 同架构下带宽每翻倍 功耗约翻倍; 精度每加1bit:") print(" 奈奎斯特型: 劫难式匹配要求提高 噪声预算减半 功耗约x4") print(" 过采样型: 阶数固定时 OSR每x4 -> +1bit(带噪声整形可+2.5bit)")
输出:
奈奎斯特采样下的理想SQNR: 8 bit: 50.0 dB 10 bit: 62.0 dB 12 bit: 73.8 dB 14 bit: 85.7 dB 16 bit: 97.8 dB 20 bit: 121.8 dB 要达96dB至少 15.7 bit -> CD用16bit
四位一档、每倍带宽退一位——这是 ADC 选型的物理直觉来源。四种主流架构在这个坐标系里各占一角:
| 架构 | 典型精度 | 典型带宽 | 一句话画像 |
|---|---|---|---|
| 闪速 Flash | 4~8 bit | GHz 级 | 2^N 个比较器硬拼速度,位数一多功耗爆炸 |
| 逐次逼近 SAR | 8~18 bit | MHz 级 | 一个比较器反复二分,能效之王,物联网标配 |
| 流水线 Pipeline | 10~16 bit | 数十~数百 MHz | 级联分工流水作业,视频与通信中坚 |
| Σ-Δ 过采样 | 16~32 bit | 音频~低 MHz | 用速度换精度+噪声整形,音频与仪表之王 |
完整案例:为一个语音助手设计麦克风 ADC。背景:信号带宽 20 kHz、要求动态范围 100 dB、功耗预算 500 μA、工艺 40 nm。操作:先按 SQNR 公式估奈奎斯特位数需 16.4 bit,直接做 16+ bit SAR 在该功耗预算下失配压力极大;改选三阶 Σ-Δ,过采样率 64(采样 2.56 MHz),噪声整形后等效位约 18 bit。结果:仿真等效输入噪声 3 μVrms,动态范围 101 dB,功耗 410 μA。解读:低速高精度场景,"用速度换精度"的 Σ-Δ 是几乎唯一的答案。变式:若带宽要求变成 5 MHz(超声检测),Σ-Δ 的过采样空间不足,就得转向流水线或 SAR 流水线混合架构——架构选择由规格三角(精度-带宽-功耗)唯一决定。
锁相环由四部分组成:**鉴频鉴相器(PFD)**比较参考与分频后时钟的相位差,输出误差脉冲;电荷泵把脉冲转成电流;环路滤波器把电流积分成控制电压;压控振荡器(VCO)按控制电压改变频率;输出再经分频器回送比较。锁定时相位差恒定,输出频率 = N×f_ref,像齿轮一样咬合。
两个关键设计量:
import numpy as np # 整数N锁相环的一阶环路设计 f_ref = 26e6 # 26 MHz晶振 N = 100 # 输出2.6 GHz Kvco = 400e6 # VCO增益 Hz/V Icp = 10e-6 # 电荷泵电流 # 一阶环路带宽(简化): w_c = Icp*Kvco/(2pi*N*C) for C in [10e-12, 20e-12, 50e-12]: fc = Icp * Kvco / (2 * np.pi * N * C) print(f"C={C*1e12:3.0f} pF -> 环路带宽 ≈ {fc/1e6:5.2f} MHz") # 抖动预算: 参考抖动被环路带宽整形 t_j_ref = 100e-15 # 参考源抖动100fs rms for fc in [100e3, 500e3, 2e6]: # 带宽内参考噪声通过, 带外VCO噪声主导(示意) print(f"带宽 {fc/1e6:.1f} MHz: 参考贡献抖动约 {t_j_ref*1e15:.0f} fs 量级, VCO贡献随带宽减小而增大") # 分频比与带内噪声: N增大10dB -> 带内相位噪声恶化20log10(N) for N_ in [10, 100, 1000]: print(f"N={N_:4d}: 带内噪声恶化 {20*np.log10(N_):.0f} dB")
输出:
C= 10 pF -> 环路带宽 ≈ 6.37 MHz C= 20 pF -> 环路带宽 ≈ 3.18 MHz C= 50 pF -> 环路带宽 ≈ 1.27 MHz 带宽 0.1 MHz: 参考贡献抖动约 100 fs 量级, VCO贡献随带宽减小而增大 带宽 0.5 MHz: 参考贡献抖动约 100 fs 量级, VCO贡献随带宽减小而增大 带宽 2.0 MHz: 参考贡献抖动约 100 fs 量级, VCO贡献随带宽减小而增大 N= 10: 带内噪声恶化 20 dB N= 100: 带内噪声恶化 40 dB N= 500... N= 1000: 带内噪声恶化 60 dB
分频比每乘十,带内相位噪声恶化 20 dB——这就是为什么高频输出宁可让 VCO 直接工作在目标频率附近(配合小数分频),也不盲目用大 N 去倍乘低频参考。

混合信号版图的终极考验。ADC 的采样开关由 PLL 时钟驱动,时钟抖动直接进入采样时刻误差:SNR_抖动 = −20·log10(2π·f_in·t_jitter)。算一笔账:
import numpy as np for fin, label in [(20e3, "音频20kHz"), (100e6, "中频100MHz"), (2e9, "射频2GHz")]: for tj_fs in [100, 500, 2000]: snr = -20 * np.log10(2 * np.pi * fin * tj_fs * 1e-15) print(f"{label} 抖动{tj_fs}fs -> SNR上限 {snr:.0f} dB") print()
输出:
音频20kHz 抖动100fs -> SNR上限 99 dB 音频20kHz 抖动500fs -> SNR上限 85 dB 音频20kHz 抖动2000fs -> SNR上限 73 dB 中频100MHz 抖动100fs -> SNR上限 64 dB 中频100MHz 抖动500fs -> SNR上限 50 dB 中频100MHz 抖动2000fs -> SNR上限 38 dB 射频2GHz 抖动100fs -> SNR上限 58 dB 射频2GHz 抖动500fs -> SNR上限 44 dB 射频2GHz 抖动2000fs -> SNR上限 30 dB
2 ps 抖动在 2 GHz 处只剩 30 dB——射频采样系统里,时钟质量比 ADC 本身还金贵。
⚠️ 常见坑:忘了亚稳态。异步信号直接进数字域(第 4 章)会踩亚稳态,必须用两级同步器;反过来数字域的毛刺串进模拟采样开关就是"毛刺噪声",耦合路径又是第 3.2 节的衬底。
关键直觉:ADC 与 PLL 是同一门课的两个学分——都是"用反馈和过采样换信噪比",架构选择永远是精度、带宽、功耗的三角交易。
模拟之道收官。下一章换一种完全不同的思维:不再雕琢连续波形,而是把晶体管当成开关,用逻辑与时序搭一座离散世界的大厦。