☰
SAR ADC入门实战:8bit设计与版图避坑指南
2026/10/21 16:56:31 网站建设 项目流程

很多刚从拉扎维或者艾伦的数模混合设计课里走出来的朋友,第一次认认真真拍板做一个完整ADC的时候,基本都会撞上同一道坎:Flash太费面积、Pipeline还没吃透、Sigma-Delta的数学又让人头疼。这时SAR ADC是绕不过去的正确答案。我自己入门时期的第三款芯片就选了8bit逐次逼近型(SAR)ADC,整体做成了一版带完整版图的成品。今天把整个设计过程、参数推导、仿真和版图的坑都翻出来聊一遍,希望能给正在做或打算做SAR ADC的新朋友省一些弯路。

1. 为什么初学模拟IC,SAR ADC是最好的入门练手项目

1.1 在ADC家族里,SAR属于“既简单又完整”的位置

先给还不熟悉的朋友理一下ADC的大致谱系。Flash ADC速度最快,但比较器是按2的N次方堆的,8bit要想做出正常性能得有256个比较器,入门基本不用想。Pipeline ADC把精度分摊到多级流水里,每一级只需要做1.5~2.5bit,但版图复杂、时钟相位要求多、级间增益误差校准就够喝一壶。Sigma-Delta靠过采样和噪声整形换精度,数字后处理逻辑不轻,滤波器设计也要花不少功夫。

SAR ADC在这个大家族里是相当特殊的一个位置:它没有大量的模拟运算放大器,也不需要高倍过采样时钟,核心硬件就三个部分,采样保持、比较器、数模转换器,再加一段数字逻辑。用到的模拟模块少,意味着新手可以把精力集中在真正影响精度的关键环节上,而不是被无数个偏置电路绑架。它同时又覆盖了ADC设计的全部核心环节:采样开关的非线性、比较器的失调与噪声、DAC电容阵列的匹配、数字逻辑的时序控制,这些概念在任何高精度ADC里都要用到。

所以我一直觉得,SAR ADC不是“低端架构”,而是一种把ADC的核心难度压缩到最小规模的教学型架构。做懂了它,再去做14bit SAR或者Pipeline,你脑子里会有一个非常清晰的物理图景:信号经过采样之后,精度是怎么一步步从模拟域转移到数字域的。

1.2 8bit这个位数的红利,新手未必意识得到

为什么不是6bit,也不是12bit?6bit做起来太水了,只需要64个量化台阶,失调和噪声稍微注意一下就能地,很难体会完整设计流程里那些取舍。12bit又太硬核,电容匹配要求、比较器噪声要求、校准算法要求全都上来了,新手一上来就被打击自信心,很容易中途放弃。

8bit正好是一个“误差预算很宽裕”的位数。我用常见参数算一笔账你就明白:参考电压取1V,1个LSB就是1V除以256,大约3.9mV。这意味着什么?你的比较器失调电压做到10mV以内,理论上校正都还来得及;kT/C噪声方面,采样电容取到1pF,常温下等效噪声大约几十个微伏,离LSB很远;DAC电容失配只要不是乱画的版图,也能把DNL压在0.5LSB之内。

也就是说,8bit这个量级对新手特别友好:你不需要把每个模块都做到极致,只要每个模块“大致正确”,整颗芯片就能工作。但如果你只按“大致正确”来做,又会发现后仿真里出现一些莫名其妙的问题,比如某些码字就是跳不过去,或者ENOB死活上不了7bit。这就是SAR ADC最精妙的地方——单看每个模块都很宽松,但放在一起时,误差源会互相耦合、互相叠加。能够把这种“整体约束”理清楚,就是课程作业和真正设计之间最大的差距。

2. 顶层架构与核心模块拆解

2.1 全二进制电荷再分配DAC:先把它算明白

做SAR ADC,第一个大选择就是用哪种DAC结构。常见的有电阻分压DAC、电流舵DAC和电荷再分配DAC。我在这版成品里用的是全二进制电荷再分配型电容DAC,也就是经典的CDAC架构。为什么选它?因为对SAR ADC来说,DAC不只是产生比较基准,它同时还承担了采样保持的功能。用电容阵列采样,信号进来直接存储在上极板电荷里,不需要额外一个独立的采样保持放大器,节省功耗和面积。

整个DAC阵列可以理解为一组比例电容和一个底极板开关网络。8bit需要256个最小单位电容的等效权重,但实际摆放时通常按二进制位拆,最高位是128C,次高位64C,一直往下到最低位1C。这里C是单位电容。我的设计里单位电容取了25fF,整体采样电容就是256乘以25fF等于6.4pF。这个值不是随便拍的,它主要受到两个约束:一是kT/C热噪声,6.4pF对应的采样噪声远小于1LSB折算的电压预算;二是版图面积和开关驱动的平衡,太大会让面积爆炸,太小又会在后仿里吃不住寄生。

电荷再分配的原理用一句话概括就是:采样阶段把所有电容上极板接到共模电位,底极板接到输入信号,电容阵列充到输入电压;比较阶段断开输入,把所有上极板连在一起悬空,然后底极板根据数字码逐位切到VREF或者GND。由于上极板没有放电通路,总电荷保持不变,上极板电压就会被DAC码字拉高或者拉低。表达式整理下来就是一个非常干净的线性关系:

对比较器正负输入做差后,比较器看到的就是输入信号和当前DAC码对应模拟量之间的差值。换句话说,每次比较就是一次“猜大猜小”的更新,而DAC负责把数字猜测翻译成模拟电压。这个理解一旦建立起来,后面调任何问题都有方向。

2.2 比较器的失调、噪声与速度,如何定指标

比较器是SAR ADC里唯一一个纯模拟判决单元,它的好坏直接影响整个转换器的精度。新手常常犯的错是把比较器当成一个“大增益运放”来设计,结果功耗和面积都浪费了。SAR里的比较器真正需要的不是高增益,而是一个足够清晰的逻辑判决:在给定的比较周期内,能把亚毫伏级的差分输入放大到逻辑电平。

我的做法是两级结构:第一级一个差分输入对做小信号放大,第二级用锁存器做正反馈判决。第一级提供电压增益的同时也起到了输入隔离作用,防止第二级锁存时产生的大摆幅回踢噪声直接耦合到CDAC上极板,把上一次判决建立好的电压打乱。

失调电压是必须要校的。8bit、1V参考下等效到比较器输入端,一个LSB是3.9mV。我的设计目标把失调压在2mV以内,也就是半个LSB。做法倒不复杂,输入对管的版图严格匹配、L取大一些减少沟道长度调制,必要时在输入对管的源极加一个小的负反馈电阻来线性化。实测仿真里如果不做任何校准,失调通常能跑到5到8mV,这个数值看起来不大,但对8bit SAR来说已经会吃掉1到2个LSB了,所以版图匹配要重视,必要时可以考虑在比较器输入两端加可调电容阵列做粗校准。

速度方面,比较器要在一个时钟周期内完成判决。我的采样率定在10MS/s,一次完整转换是10个比较周期,所以每个比较周期大约10ns。这给第二级锁存器的时间不算宽裕,但也不紧。关键是输入对管的带宽要够,不能让第一级的输出在锁存器启动前还没建立到足够幅度,否则后级会产生亚稳态,数字输出码在边界附近来回抖。仿真时可以通过扫比较器输入过驱动电压来验证判决时间,输入越接近0V,锁存判决需要的时间越长,这个最坏情况必须卡在比较周期之内。

2.3 SAR逻辑与时序:把转换过程拆成十个节拍

SAR控制逻辑听起来像纯数字电路,但它在SAR ADC里的地位一点都不比模拟模块低。很多新手把逻辑当成“能跑就行”,结果前仿良好、后仿一塌糊涂,原因往往就出在逻辑的时序余量上。

我用的控制方式是同步SAR逻辑,外部给一个主时钟,内部通过计数器产生每一位判决的节拍。一次转换过程是这样的:第一个节拍做采样,把输入信号打到CDAC上极板;第二个节拍断开采样开关,先让DAC顶部电压稳定;接下来八个节拍依次从MSB到LSB做逐位逼近;最后预留一个节拍做复位。可以看到,一次转换最少需要11个节拍,加上一些建立余量,我最后用12拍来完成一次采样转换周期。

这里有一个容易被忽略的点:采样开关断开后,CDAC上极板的电压会因为电荷注入和时钟馈通产生一个小的跳变。这个跳变对所有码字来说是一个共模性质的偏移,如果差分结构做得好可以基本抵消,但单端结构里它会被直接叠在输入信号上。所以我特意把采样开关断开时刻设计成发生在主时钟的特定边沿,并且让开关管的尺寸不太大,以控制沟道电荷的总量,再配合一个dummy管提供互补电荷注入抵消。

另外,数字逻辑产生的控制信号如果不同步到达各个电容底极板开关,会造成DAC建立过程中的毛刺。我在版图阶段给底极板开关驱动做了等长走线,并且在逻辑输出和开关栅极之间加了局部缓冲级。这个细节后文还会提到,但它对成品能否达到设计指标的影响,比想象中大得多。

3. 关键参数怎么定:从指标到仿真验证

3.1 误差预算分配可以先拍脑袋,再逐项验证

做任何一个数据转换器,我习惯先做一张误差预算表。这张表不需要很精确,但它能帮你在翻车的时候快速定位锅在谁身上。8bit的LSB是3.9mV@1V参考,我会把预算按下面的比例大致分摊:

失调电压预算0.3LSB,约1.2mV;比较器噪声预算0.3LSB,约1.2mV;DAC电容失配预算0.2LSB;开关电荷注入与采样非线性预算0.2LSB。各项独立假设下平方和开根,总误差大约0.55LSB,这个值对应下来就是8bit指标能保住,但已经没什么裕量了,所以每一项都不能掉链子。

比较器噪声这一项很容易被忽略。动态比较器在再生阶段会把自己内部的热噪声放大,等效到输入端往往在几百微伏到几毫伏之间,取决于设计。8bit的噪声预算只有1.2mV,如果一个比较器输入等效噪声做到了3mV,那ENOB直接就掉到7.5以下了。这时候唯一的办法是加大比较器输入对管的尺寸和尾电流,让噪声降下来,代价是功耗和面积上升。新手容易在功耗指标上过于激进,结果把噪声预算吃掉,得不偿失。

3.2 仿真流程:不只跑一个瞬态就交差

我把这款SAR ADC的仿真分成了三个层次:功能验证、性能验证、鲁棒性验证。功能验证最简单,给一个斜坡输入,看输出数字码是否从0递增到255;如果出现某个码字跳过或者重复,说明逻辑或者DAC权重有错。性能验证就要细致得多,我一般会做两种瞬态扫描:低频正弦和接近奈奎斯特频率的正弦。低频正弦能反映静态的INL和DNL,近奈奎斯特正弦能反映采样开关带宽和比较器动态判决带来的SFDR损失。

测试台的搭法也有讲究。输入正弦幅度我设为满量程的90%,也就是振幅0.45V叠加在0.5V共模上,避免输入削波导致的虚假谐波。采样率10MS/s,采样点数取8192个,然后在Matlab或者Python里做FFT,计算SNR、SNDR和ENOB。这个流程看起来简单,但我见过太多人直接把瞬态波形里的电压数据塞进FFT,没有做相干采样处理,窗口泄漏搞得频谱乱七八糟。建议先确定输入频率和采样频率互质,再通过计算保证采样窗口内恰好包含整数个输入周期。

还有一点必须提:跑完典型角之后,一定要扫温度和高低压角。很多新手前仿真在TT、27°C下表现亮眼,一到FF、120°C就出现DNL超标,原因通常是采样开关的导通电阻在不同工艺角下变化太大,出现信号相关的采样时刻偏差。这种动态非线性在低频正弦测试里看不出来,只有扫工艺角才能暴露。

3.3 动态性能的参照:怎么判断结果算“做完了”

我给自己定的标准是:TT角、室温、10MS/s、输入信号1MHz附近时,SNDR不低于46dB,对应ENOB约7.5bit以上;DNL最大不超过0.8LSB,INL最大不超过1LSB。这组数字对8bit SAR来说不算出彩,但已经能稳定覆盖大多数控制类的应用场景。

仿真里最容易出现的一个现象是:DNL在某个中段码字上突然出现一个很大的值,比如2LSB甚至更高。这个现象的根源往往不是比较器或者逻辑,而是DAC电容权重的失配。权重最大的那一两个位如果偏了,会在对应跳变的码字附近产生巨大台阶。前仿真里电容是理想的,所以你跑到这一步时如果发现DNL很干净,理所当然;真正的问题在后面的提参后仿里才会现出原形。

4. 版图设计与提参后仿的实战细节

4.1 电容阵列的匹配布局,最不能省功夫

版图是SAR ADC从“仿真能跑”到“流片能用”之间最大的分水岭。而DAC电容阵列又是版图里最核心的部分。全二进制电容阵列的匹配要求是:每个bit对应的电容面积比例必须精确保持二进制关系。听起来简单,实际做起来到处都是坑。

我用的方法是common centroid布局。把单位电容按照某种对称矩阵摆放,高位电容拆成多个单位电容并分散排布,避免任何一位电容集中在某一块区域,因为工艺里的氧化层厚度梯度和边缘刻蚀效应会对集中分布的大电容产生系统性偏差。摆在中间的单位电容和摆在边缘的单位电容有效值能差出百分之零点几,放大到最高位上就是百分之几的权重误差,足以把INL推到好几个LSB。

单位电容不要选得过小。25fF这个值在当前工艺下是一个比较保守的选择,面积不大但边缘效应占比可控。如果单位电容降到5fF,面积是小了,但版图里一条金属走线的寄生电容可能就有零点几fF,对最高位的影响非常可观。新手做版图的时候最容易“干净”过头,总把走线拉得又长又绕,结果寄生电容全落在CDAC内部,权重自然全偏。

dummy电容必须加。我把阵列最外围一圈全部摆上不参与工作的单位电容,用来吸收边缘刻蚀的不均匀性。这个操作在某些工艺下能把匹配误差改善一个量级,而且不花额外的逻辑成本,属于典型的“花小钱办大事”。

4.2 模拟数字隔离与寄生控制

SAR ADC天然是最典型的数模混合电路:一小块数字逻辑在每一个时钟周期都在跳变,开关驱动在给电容底极板充放电,而同时比较器又在分辨亚毫伏级的电压差。这个矛盾在版图里若不处理,后仿里会直接表现为输出码的大量噪声跳动。

我的处理原则有这几条:数字逻辑区域用保护环围起来,接到独立的数字地;模拟地是单独一个网络,不跟数字地共用;比较器的输入对管和CDAC上极板走线要短,避免长距离金属线拾取耦合噪声;SAR逻辑的控制信号在进入开关驱动之前做一次再定时,确保它们不在比较器判决的关键时刻发生跳变。

电源线的处理特别容易被新手忽视。数字逻辑和开关驱动在翻转时会从电源线上抽取大电流脉冲,如果模拟比较器的电源和它们共用一条低阻抗走线,电源电压瞬间的drop会通过比较器的电源抑制比不足传到输出端。我在版图里把比较器电源与数字电源从焊盘就开始分开,中间只通过一个RC低通连接,把高频脉冲挡在外面。

4.3 提参后仿:才是见真章的地方

版图画完提取寄生参数,用带寄生的网表重新跑瞬态仿真,这一步很多刚入门的同学是抗拒的,因为后仿结果往往比前仿差一大截,而且跑一次要等很久。我自己的经验是:后仿不是走流程,它是在帮你找出版图里“看不见的错”。

这款SAR ADC后仿里最典型的问题出现在最高位切换的时候。前仿里DAC输出波形干净利落,后仿里却出现一个明显的过冲,导致比较器判决错误。追查下来发现是最高位电容的底极板开关驱动能力不足,开关切换时产生的电流脉冲通过寄生电感和耦合电容反向打到了比较器输入端。解决办法是增大开关驱动管的尺寸,同时在比较器输入端加一个很小的前馈电容,把高频毛刺滤掉。这个修正在前仿完全看不出来,但后仿的ENOB从6.8bit回到了7.6bit,差距就是这么明显。

所以我的建议是,别把后仿只当成“确认一下没问题”的环节。遇到性能下降,先别急着怀疑比较器失调,用排除法把每个模块可能的贡献跑一遍,逐步缩小范围。很多时候问题出在你想不到的地方,但一定能在波形里找到证据。

5. 新手最容易踩的坑:现象、原因与排查

5.1 症状一:DNL曲线在某些码字上突然冒出尖刺

这是我见过最多的一类问题。DNL在低位码附近很平,在中高位码附近突然出现一根很大的正尖刺,相邻码又出现一个负尖刺。典型的罪魁祸首是DAC电容失配,尤其是MSB和MSB-1这两位的权重偏差。排查方法很简单:把DAC每个位的理想权重和实际权重列出来,再看哪个码字位置的理论跳变沿与权重误差重叠。

修复手段主要是两种:要么优化版图匹配,要么在后端加数字校准。对入门阶段来说,优先优化版图,因为数字校准会牵扯出很多算法细节。我自己的经验是,common centroid排布加上dummy管,能把失配导致的DNL尖刺压到1LSB以内。如果还需要进一步改善,就得考虑对MSB电容做拆分的技巧了,这个等下一篇再展开。

5.2 症状二:输出码出现缺失,即某些码永远不出现

缺失码和尖刺不完全一样,它表现为转换结果从码字k直接跳到k+2,k+1在整个测试过程里从未出现。这个现象通常意味着比较器存在系统性失调,并且失调值超过了0.5LSB。当实际输入电压落在码字k+1对应的窗口里时,比较器因为失调直接判到了相邻区间,导致这个码字被跳过。

排查方法是做一个静态斜坡测试:给一个全覆盖的斜坡输入,统计每个码字出现的次数。出现次数为零的码字就是缺失码,记录它的位置,再看这些位置是否集中分布在高位切换附近。如果是,那基本可以锁定是DAC权重断档;如果全范围均匀分布,那就更可能是比较器失调或者采样开关的电荷注入不均。修复办法里,比较器失调可以在版图上严格匹配输入对管,也可以考虑在每一帧转换前进行一次自动归零操作,只是会增加电路复杂度。

5.3 症状三:低频性能好、高频性能崩

有些设计测1kHz正弦时ENOB有7.8bit,换成接近奈奎斯特频率的输入后直接掉到5bit。这种现象多半指向采样网络的问题。采样开关的导通电阻本身具有电压依赖性,信号幅度大的时候Rds变化也大,导致不同瞬时电压下的采样时刻发生偏差,产生谐波失真。8bit对采样的线性度要求其实不低,所以采样开关不能直接用最简单的单管。

解决办法比较成熟:用自举开关(bootstrap switch)让栅源电压在采样窗口内保持恒定,把导通电阻的电压依赖性压到最低。如果工艺条件允许做全差分结构,配合自举开关,高频SFDR能改善非常明显。我这个项目里的第一版没有用自举开关,结果在Fin=4.8MHz时SFDR只有42dB,后来换成自举开关,同条件下SFDR提升了接近9dB,整个项目的验收才真正过关。

5.4 现场排错速查表

我把这些年调试SAR ADC遇到的一些高频问题整理成一张表,供大家在卡壳的时候快速对照:

症状可能原因定位方法修复方向
DNL中段尖刺DAC高位电容失配对比权重统计版图匹配/电容拆分
缺失码均匀分布比较器失调超标斜坡码统计输入管匹配/自动归零
高频谐波大采样开关非线性频谱对比自举开关
后仿ENOB骤降寄生耦合/电源干扰开关节点波形观察电源隔离/加去耦电容
码字边界抖动比较器亚稳态扫过驱电压增加锁存gm/降低时钟速率
低温性能差开关截止不彻底观察采样波形塌陷增大开关尺寸/互补管

这张表我自己是打印出来贴在工位上的,每次仿真翻车就按着这张表的顺序去定位,能省下大量瞎试的时间。

写完之后再说几句个人体会

三个SAR ADC做下来,我最深的感受是:模拟设计里没有真正独立的小模块,采样网络、电容阵列、比较器和数字逻辑之间全是隐藏的耦合路径。前仿真里这些都接近理想,所以看着很美的设计,提参后往往会被打个措手不及。新手如果想省时间,一定不要只在原理图层面追求优化,尽早进入版图和提参循环,哪怕第一次跑得慢,也比最后在测试台上返工强。

另外,8bit SAR表面上简单,但它把ADC设计中最核心的静态指标和动态指标全部覆盖了一遍。把它彻底吃透以后,再往上做更高位或者更高速度的版本,无非是在这个骨架里加电容拆分、加校准、加异步逻辑而已。希望这篇文章能帮你少走一点我当年走过的弯路。

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

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

立即咨询