☰
SAR ADC学习路线与Cadence仿真实战:从原理到逐次逼近型转换器设计
2026/10/18 7:55:24 网站建设 项目流程

关于 SAR ADC 的学习,我一直有个很直接的感受:资料不算少,但很多教程要么停在原理框图,要么一上来就撒给你一大堆论文,根本不知道在 Cadence 里怎么落地。这篇文章就是冲着这个问题来的。我想从“一个正在摸爬滚打的人”的角度,把 SAR ADC 的学习路线、Cadence 实操要点、仿真验证方法和资源渠道重新捋一遍。如果你正准备接触逐次逼近型模数转换器,或者已经在学但卡在某个环节,这篇内容应该能给你一些实在的参考。

1. 为什么偏偏是 SAR ADC:原理、定位与学习价值

1.1 串行逼近到底在做什么

SAR ADC 的全称是 Successive Approximation Register Analog-to-Digital Converter,也就是逐次逼近型模数转换器。它的工作方式像一个“二分猜数”游戏:假设模拟输入落在 0 到 Vref 之间,先猜中间值 Vref/2,用比较器判断输入比它大还是小,然后把范围缩小一半;接着在新区间里再猜中点,再判断,再缩小。重复 N 次之后,就能猜出一个 N 位二进制码。

每次猜数都需要一个时钟周期,所以 N 位 SAR ADC 完成一次转换至少需要 N+1 个周期(多出来的一个用于采样保持)。这种结构决定了它的核心特征:速度不会特别快,但功耗很低,精度可以做到中高分辨率,面积也相对紧凑。它的实际应用覆盖很广,工业数据采集、生物电信号检测、传感器接口、电源管理芯片里都能看到它的身影,尤其是在对功耗敏感但对速度要求没那么极端的场景里,SAR 常常是首选。

之所以推荐拿它入门 ADC 设计,原因很简单:结构足够复杂,能让你接触到采样开关、电容阵列、比较器、数模反馈逻辑、时序控制这些混合信号设计的基本功;但复杂度又没到让你望而却步的程度。相比流水线 ADC 需要处理级间增益、数字校正,或者 Sigma-Delta ADC 需要理解调制器环路和数字滤波,SAR ADC 的思路更直观,每个环节都能独立验证,适合学习者一步步拆解。

1.2 速度、精度与功耗的铁三角怎么选

ADC 设计的核心永远是“折中”两个字,SAR ADC 也不例外。它的约束关系体现得非常清楚:

  • 速度取决于比较器的判断时间、电容阵列的建立时间和逻辑电路的延迟之和。提高速度最直接的办法是增大比较器电流,但代价是噪声性能变差、功耗上升。
  • 精度受限于比较器的失调电压和噪声、电容阵列的失配程度、采样开关的热噪声和电荷注入。想要更高精度,最简单粗暴的办法是加大器件尺寸、增加电容,但这会拖慢速度、增加功耗。
  • 功耗主要由动态电容充放电和比较器功耗决定。SAR 本身是数字密集型结构,开关电容只在翻转时消耗能量,所以功耗水平天然比流水线和 Sigma-Delta 要好。

学 SAR 的过程,其实就是反复体会这几个指标互相拉扯的过程。比如你把单位电容从 20fF 加到 50fF,匹配精度可能变好了,但每个比较周期里电容充电时间变长,速度就下来了;反过来如果你为了省电把比较器电流砍半,那么它的噪声会增大,可能直接吃掉一个 LSB 的精度。

1.3 什么样的基础可以开始学

我不是说一定要把所有前置课程都修完才能碰 SAR ADC,但至少下面这些基本概念你得大概清楚:

  • 基本模拟电路:运放、比较器、开关电容电路、采样保持的基本工作原理。
  • 数字逻辑:D 触发器、移位寄存器、状态机的基本时序。
  • 半导体物理基础:MOSFET 的导通阻抗、阈值电压、沟道电荷注入的基本概念。
  • Cadence 工具的基础操作:至少要知道怎么建 cellview、怎么画 schematic、怎么跑 Spectre 仿真。

如果你之前没接触过 EDA 工具,我建议先花两周时间把 Virtuoso 的原理图编辑和 ADE L/ADE XL 的基本流程跑通,比如做一个简单的反相器、运放,并完成直流、瞬态和交流仿真。不要一上来就挑战完整 SAR ADC,工具流程不熟的时候,光排查连线和仿真设置就能耗掉大半精力,很容易劝退自己。

2. Cadence 环境里从零跑通一颗 6 位 SAR ADC

2.1 先用小规模电路建立闭环

很多初学者容易被论文里的 12 位、14 位指标吓到,实际上学习阶段完全没必要直接挑战高分辨率。我强烈建议先从 6 位 SAR ADC 开始做。原因在于:

  • 6 位意味着 64 个量化电平,仿真时间短,波形清楚,出问题时容易定位。
  • 电容阵列只有 6 位权重,单位电容选大一点也不会导致总面积离谱,方便你手动布局。
  • 6 位精度对器件失配的要求很低,即使用比较粗糙的模型,也能正常工作,从而让你先跑通“采样+逐次逼近+数字输出”的完整链路,建立信心。

我在看到一个好的参考资料后,通常第一件事就是先在 Cadence 里搭一个 6 位理想行为级模型,用 Verilog-A 快速实现一个理想比较器、理想 DAC 和理想逻辑,把算法验证了,再替换成真实电路。这样能把“系统设计”和“电路设计”两个问题分开,排错效率高很多。

2.2 从原理图到 Spectre 瞬态仿真的四个关键配置

搭好原理图之后,仿真环节有几个地方特别容易出问题,我第一次跑的时候在这上面浪费了整整一个下午。列出来给你做个参考:

  • 采样时钟设置:测试一个 SAR ADC,你必须提供一个采样时钟(通常由时钟发生器产生,或者直接用一个周期脉冲源),以及一个足够快的比较器时钟。在 ADE L 里我用的是 Vpulse 源,注意上升时间不宜设成默认的 1ns 就完事,实际加载到采样开关上会产生较大的馈通,建议显式设置rise=0.1n这种量级,模拟相对真实的时钟边沿。

  • 输入信号设置:做动态测试时,输入正弦波频率要按相干采样的条件选取,例如fin = fs * M / N,其中 M 是整数、N 是采样点数,这样才能避免频谱泄露。初学者最容易犯的错是随手设一个像 1MHz 这样的整数值,算出 ENOB 奇低无比,还以为是电路问题。

  • 瞬态仿真时间:SAR ADC 是全数字控制的混合信号电路,你至少需要跑完一个完整转换周期,通常时间范围设为采样周期的数倍。例如采样时钟 10MHz,转换需要 8 个时钟周期,那瞬态时间至少设到 1us,同时把maxstep设为比较器时钟周期的 1/20 左右,否则波形会失真。注意maxstep设置不当会导致收敛性和精度问题,这是 Spectre 瞬态仿真里最核心的坑之一。

  • 保存波形节点:Spectre 默认会保存所有节点电压,但大数据量会让仿真变慢。跑 Monte Carlo 的时候建议你只保存输出数字码、比较器输出和关键控制信号这几个节点,方法是直接选中需要保存的 wire 后右键,可以显著减少仿真时间。

2.3 波形怎么看:从“盲人摸象”到按位解析

仿真完了之后,很多人面对一屏密密麻麻的波形完全不知道从哪看起。我常用的办法是:把采样时钟、比较器时钟、比较器输出、数字输出码和 SAR 逻辑的逐位控制信号全部摆到同一个波形窗口里,对齐比较器时钟的每个上升沿来观察。这样你能很直观地看到每一位的判断过程:最高位置 1 时比较器输出是什么,紧接着的 DAC 输出电压是否被正确建立。

如果某一位判断错了,最直接的判断方法是看电容阵列的电压建立波形。比如你发现当某一位从 0 翻到 1 时,DAC 输出没有在比较器时钟沿之前稳定到目标值,那就是建立时间不够;如果发现有明显的时钟馈通毛刺,那就要检查开关尺寸和时钟馈通抑制方式。实际调试时,我习惯性地把 CDAC 的顶板电压拉到显示屏面上,盯着它看整个逐次逼近过程是不是呈现“二分收敛”的趋势,如果出现来回跳动,基本可以断言逻辑或比较器出了问题。

3. 三个核心模块:电容 DAC、比较器与 SAR 逻辑

3.1 电容阵列的大小怎么定

电容 DAC(CDAC)是 SAR ADC 的灵魂。它的功能是:采样期间存储输入电压,转换期间按逐次逼近的结果切换各权重电容的底极板,使顶极板电压逼近输入电压。单位电容的取值是你第一个要做的设计决策。这里有一个用得比较多的参考路径:

先按 kTC 噪声约束算电容下限。kT/C 噪声是采样电容上不可避免的热噪声,通常要求它小于量化噪声的某个比例。假如一个 10 位 SAR ADC,量化噪声约等于 LSB^2/12,LSB 为 Vref/1024。把 kT/C 噪声设定在量化噪声的 1/2 以下时,可以推得最小电容值大约在几十 fF 级别。这只是理想计算,只适合作为数量级参考,真正定容值还要看匹配和工艺限制。

然后按匹配精度算电容下限。电容失配会直接导致 DNL/INL 恶化,在标准 CMOS 工艺里,单位电容的失配可以近似反比于电容面积的平方根,因此为了达到 10 位精度,单位电容通常要选到几十 fF 到几百 fF 不等。实际项目里,工程师经常会在匹配和功耗之间反复权衡,有时还会引入校准电路来放宽匹配要求。初学者如果只做学习验证,我建议你在 6 位架构里直接取单位电容 100fF,既能保证匹配,又不会让面积太夸张。

3.2 比较器的失调与噪声如何取舍

比较器在 SAR 里的角色是“粗判后精断”。你不需要它像仪表放大器那样提供高增益,但要求它响应快、失调小、噪声低。常用的结构是动态锁存比较器,它由一对交叉耦合反相器和尾电流管构成,在时钟控制下完成放大和锁存。动态比较器有一个很迷人的特性:没有静态功耗,因为它在复位阶段关断,只在比较阶段瞬间导通。这正好匹配 SAR ADC 对低功耗的需求。

动态比较器的失调电压主要来自于输入对管、交叉耦合管的阈值电压失配,而这一失配是一个工艺偏差的随机量。想要减少失调,最简单可靠的思路是增大输入管的宽长比和面积,用面积换匹配。噪声则主要来自输入管的等效热噪声,加大导通跨导可以降低噪声。但你一加大尺寸,比较器的寄生电容就会变大,比较时间跟着变长,速度就下来了。所以在某个具体设计里,比较器的尺寸常常要通过蒙特卡洛仿真迭代寻优,而不是一次就能定下来。

如果你做的结构里失调电压大到超出量化精度的容忍范围(例如 10 位精度要求失调小于 0.5LSB),常见处理是加输入失调校准电路。最简单的校准方案是在输入对管的尾电流对应加入可调电流源阵列,或者直接在比较器内部接一个失调补偿电容,逐位用逻辑校准。我建议学习阶段先别急着上校准,先把比较器的原始失调测出来,画好蒙特卡洛分布,再去考虑校准电路,这样你对“什么是失配”会有更直观的理解。

3.3 SAR 逻辑常见的“掉链子”环节

SAR 逻辑是决定转换顺序的数字电路。最经典的结构是移位寄存器驱动一个逐位逼近状态机:复位后最高位置 1,比较器输出决定保留还是清除,然后右移一位继续比较下一位。这个环节看起来不难,但实际仿真时经常出两类问题。

第一类是时钟竞争。比较器输出是在某个时钟沿后稳定,而 SAR 逻辑又需要在一个时钟周期内完成“读取输出+更新 DAC”。如果比较器的输出延迟和 DAC 的建立时间重叠,就可能出现反馈回路还没稳定就再次触发比较的情况,导致误码。解决方法是合理划分相位:比较器时钟从高电平变为低电平时完成锁存,SAR 逻辑在比较器时钟为高电平期间完成状态更新,DAC 在下一个比较边沿前建立。时序图一画下来,每个环节的时间窗口就清晰了。

第二类是异步复位问题。SAR 逻辑上电后如果没有可靠的复位信号,状态机会进入未知状态,转换结果完全不可预测。一些资料里会在模拟控制信号来之前先给一个全局复位脉冲。我建议你务必在仿真激励里加入这个复位动作,否则你会看到非常诡异的输出码。

4. 精度的敌人:噪声、失配与建立时间的博弈

4.1 kTC 噪声和单位电容的拉扯

把采样电容做大,噪声会变小,但面积和功耗都会上去;把电容做小,速度倒是快了,但精度可能被热噪声吃掉。这个矛盾怎么破?可以记住一个常用的工程原则:让采样电容上的 kTC 噪声略小于量化噪声的 1/3 到 1/2,不要追求“彻底淹没噪声”。这里有一个计算示例:

设 10 位 SAR ADC,Vref = 1.2V,LSB = 1.2/1024 ≈ 1.17mV。量化噪声功率是 LSB²/12 ≈ 114uV²。把这个作为目标约束,即 kT/C ≤ 57uV²,取 T = 300K,k = 1.38e-23,可以估算出 C ≥ 1.38e-23 * 300 / 57e-12 ≈ 72fF。这只是理论下限,实际匹配需求往往会把单位电容推到 200fF 以上。学习阶段不必死磕精确值,有一个量级概念就行。

4.2 建立时间:时间预算怎么分

SAR 转换里的时间分配是一个经常让人焦头烂额的事情。给定一个比较器时钟周期 Tclk,你需要在这个时间窗口里完成三件大事:

  • 比较器完成判断:动态比较器从复位到锁存需要一定时间,这部分由输入管的跨导和输出节点电容决定。
  • SAR 逻辑更新状态:D 触发器和组合逻辑的传播延迟。
  • CDAC 建立到目标电压:采样电容和权重电容通过开关充电的过程,时间常数取决于开关导通电阻和电容总容值。

这三段时间的和必须小于 Tclk,否则逐次逼近的精度会崩塌。实际设计中,时间预算往往是不均等的:比较器判断占用最大份额,DAC 建立其次,逻辑延迟最短。我的经验是先用系数 0.5 做第一轮预算,比如 20ns 的比较周期里留 10ns 给比较器,5ns 给 DAC,5ns 给逻辑和余量。仿真后再根据实测波形调整,直到每一步都安全收敛。

4.3 失配校准:模拟世界的“调零”思路

前面提到 CDAC 的电容失配会带来非线性,常见的两种破解之道是:加大电容面积,或者引入校准。前者简单可靠但代价高,后者是更高阶的技术。逐次逼近型校准的经典思路是:用另一路精度更高的参考 DAC 来测出权重电容的实际值,再把误差存进数字域,转换时用修正后的权重来重建输出码。这类方法在论文里有大量变体,但核心思想都是“测量失配,修正编码”。我学习阶段的建议是:先用蒙特卡洛仿真了解你的失配大概有多大,如果 DNL 指标还凑合,就不要急着加校准,先把基本架构吃透再说。

5. 仿真验证:从 DNL/INL 到 ENOB,再到蒙特卡洛

5.1 静态指标仿真:慢斜坡测试法

DNL(微分非线性)和 INL(积分非线性)是 ADC 最基本的静态精度指标。学习阶段可以直接用慢斜坡信号做瞬态仿真,然后统计输出码的跳变位置:理想情况下每个码字占 1 LSB 宽度,实际宽度和理想值之差就是 DNL;把 DNL 累加起来就得到 INL。

具体操作上,我建议用一个缓慢上升的斜坡源,确保每个输入电压点上系统都来得及完成至少一次转换。然后写好一个脚本,对采样钟沿附近完成的数据点做直方图统计。这一步 Cadence 自带波形计算器也能完成,但说实话用脚本处理更方便。很多开源工具都支持读取 Cadence 导出的文本波形,直接把数据喂进去就有 DNL/INL 曲线,非常省事。

5.2 动态指标仿真:相干采样与 FFT

ENOB 和 SFDR 的仿真要用正弦波注入,然后对采样后的数字码做 FFT。关键点是保证相干采样条件,否则频谱泄露会毁掉结果。相干采样的本质是你设定的采样点数和周期数互质,建议用一个计算器生成激励频率后再填到输入源里。若输入频率非相干,你会看到频谱基底抬高,ENOB 掉得很假。很多人第一次测 ENOB 偏小,八成是频率设置的问题。

采样保持之后,转换出来的数字码需要从波形里提取出来。我在实际中一般是让 Spectre 把数字输出节点的波形存成文本,再用脚本读取。若用理想 Verilog-A 模型做行为级验证,这一步尤其快,甚至可以直接输出数字码流。

5.3 蒙特卡洛仿真:给你的 ADC 做“体检”

真实芯片里器件参数会有工艺偏差。蒙特卡洛仿真就是在每个 run 里给模型参数加随机扰动,跑成千上百次,看你的设计在统计意义上能不能满足指标。对 SAR ADC 来说,主要关注失调电压、DNL/INL 分布和 ENOB 分布。Cadence ADE XL 里可以很方便地配置 Monte Carlo 采样点数,并对结果做 mean 和 sigma 统计。

我踩过的一个坑是:为了加快仿真,把蒙特卡洛采样点设得太少(比如 20 次),结果分布完全看不出规律。后来改成 200 次左右,做统计才好用。如果你关心的是最差情况而非平均值,那采样次数至少翻倍才有意义。初学者如果每次蒙特卡洛仿真都跑很久,可以先把采样点数设小做验证,确认流程本身没问题,再放开跑大批次。

6. 学习路线图:资源、实践与常见弯路

6.1 资源怎么找:教程、论文与代码的互补关系

Cadence 官方的入门教程和演示库确实是第一条路。它的好处是和你手上的工具版本完全匹配,不会出现版本兼容问题;缺点是它更偏“操作教学”,很少讲“为什么这样设计”。所以我会建议你用下面这个资源搭配:

  • Cadence 自带教程 + 官方文档:搞定工具操作闭环,比如如何建库、如何跑仿真。
  • 大学公开课讲义:虽然某些具体内容可能篇幅长,但胜在结构完整,从原理到电路实例都有,适合搭建知识框架。
  • IEEE 期刊论文:适合进阶后阅读特定专题,比如近期关于全动态 SAR 或冗余算法的前沿研究。
  • 开源仿真项目:很多开源项目里包含了完整的 SAR ADC 模型和测试激励,在理解原理后快速阅读可以极大拓宽视野。

我个人的习惯是:先找 1 到 2 份可靠技术教程做主线,然后通过具体论文深挖细节。不要一开始就收藏几十份资源,反而会陷入只看不练的陷阱。实际动手永远比泛读资料有效。

6.2 横向对比学习法:为什么别人家的指标高

学 SAR ADC 的过程中,最让人困惑的事往往是看到别人的论文里做到了 12 位 100MS/s 甚至更高的指标,而自己仿出来的性能却很普通。横向对比时,关键是先列出别人用了几位冗余、用了什么校准手段、工艺节点是多少、供电电压和参考电压是多少。这些条件直接决定了指标的“含金量”。把参数表列出来,再对照自己设计的条件,你会更清楚差距来自哪里。

位冗余设计是很多高性能 SAR 常用的技巧:每级比较引入冗余位,目的是放宽比较器的建立精度要求,降低 DAC 建立压力,代价是增加转换周期和逻辑复杂度。这属于进阶内容,建议在对基础 SAR 结构有把握之后再尝试。我见过不少初学者一上来就研究冗余算法,结果基础架构没调通,反而把自己绕晕。

6.3 时间安排与验收标准

学习进度这件事,每个人的基础差异很大,但一个参考节奏是:每周投入 10 到 15 小时的情况下,2 周跑通 Cadence 流程并完成一个简单反向器/采样保持器仿真;再用 3 到 4 周搭出 6 位 SAR ADC 并完成基本瞬态验证;再用 2 到 3 周完善指标仿真,如 DNL/INL、ENOB 和蒙特卡洛;最后用 2 周左右写一份关于架构选型和仿真的总结报告。这个计划不是死规定,而是给你一个“每个阶段有验收成果”的参照。

验收标准也有层次:第一层是能看懂逐次逼近的波形,能解释每一位的建立过程;第二层是能在没有参考的情况下画出 6 位 SAR ADC 的系统框图和时序图;第三层是能独立完成 Cadence 仿真并分析指标;第四层是能根据指标要求修改电容值、比较器尺寸和开关时序,并观察性能变化。能到第三层,就已经超过很多口头上“学过 SAR ADC”的人了。

7. 最后分享一点学习过程中的发现

在学 SAR ADC 这件事上,我最大的体会是:它看着像一门“电路课”,真正拉开差距的却是“规划”能力。规划时间预算,规划电容大小,规划逻辑时序,规划仿真方案。Cadence 用熟了以后,所有工具操作都只是实现手段,真正的判断力来自你对指标、结构和取舍的把握。你可能也会经历和我一样的时候:仿真结果不好,不是电路问题,是激励信号不如人意;或者看着波形里奇怪的小台阶,半天才发现是某个控制信号的时序歪了。这种排查过程虽然折磨人,但每解决一次,你对整个架构的理解就会深一层。做模拟设计没有运气可言,经验都是一个个 bug 换来的。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询