干混合信号芯片分析这行久了,你拿到的资料往往是不完整的。前段时间,我手里多了一批某国际模拟大厂的流水线ADC电路资料,型号LTC2255,14bit pipelined adc,采样率标称125MSPS。这颗芯片在高速采集领域算得上经典中的经典,偏偏这套电路只有一部分:没有完整采样前端、没有后台校准逻辑,能看清楚的只是中间几级比较器、一大片开关电容阵列和几条模糊的反馈走线。
大多数人拿到残图的第一反应是去找完整版图,我不这么干。部分电路反而能逼着人把每一级的工作原理彻底啃透——只有当自己对完整架构了如指掌时,才能从零散的半张图里看出门道。这篇文章是这次逆向还原过程的完整记录,从局部模块反推整体架构,再用公开指标做验证,最后落到“能迁移到自己设计里”的经验。无论你是做模拟IC设计的、搞嵌入式采集系统的,还是单纯对高速ADC感兴趣,这篇都值得花几分钟读完。
1. 拿到半张图纸:LTC2255这颗芯片为什么值得逆向
1.1 14bit 125MSPS的性能定位
LTC2255属于那种典型的“速度与精度兼得”的流水线ADC。14bit分辨率意味着量化间隔非常细,对于2Vpp满量程输入,1LSB只有大约122μV;125MSPS采样率则意味着每秒要完成1.25亿次这样的精细量化。这两者放在一起,直接把应用场景指向了中频采样、软件无线电、医疗超声、通信接收机、测试测量设备这一类对动态范围和实时性都要求极高的系统。
要理解它为什么用流水线结构,把三种主流ADC拉出来对比就一目了然。
| 架构 | 分辨率 | 采样率 | 核心优势 | 主要瓶颈 |
|---|---|---|---|---|
| SAR | 12~18bit | 中低速 | 功耗低、精度高、易集成 | 单次转换时间随位数线性增加,难上100MSPS |
| Flash | 6~8bit | GHz级 | 极快 | 比较器数量随位数指数爆炸,做不到14bit |
| Pipeline | 12~16bit | 几十~几百MSPS | 速度与精度兼顾 | 级间误差、时钟和参考设计复杂 |
SAR在低速高精度领域很强,Flash在超高速低分辨率领域很强,而在125MSPS配合14bit这个交叉点上,流水线几乎是唯一现实选择。这也是为什么LTC2255这类产品到今天仍被很多射频前端和仪器项目引用为经典参考设计——它把速度、精度、功耗三个互相拉扯的指标压到了一个在当时相当极限的位置。
1.2 逆向范围的界定和初步规划
这次手里的东西,准确说是“部分的电路图加部分版图痕迹”,不是拿来就能直接仿真的完整网表。数了数,可辨认的内容大致是:
- 中间几级的开关电容放大网络,反馈电容、采样电容的拓扑基本能勾出来;
- 首级比较器阵列的一部分,能看到比较器个数和阈值抽头走向;
- 参考电压缩放的电阻串,以及通往各级顶板的开关;
- 输出驱动级电路的一小角,走线断在半路。
缺失的部分同样明显:没有完整的采样保持前端,没有时钟生成和数字校正逻辑,也没有片上基准核心。这种残缺程度反而让我觉得可行——因为流水线ADC的性能瓶颈和设计精华,恰恰就藏在中间这几级的级间残差放大、冗余量化和自举开关里。我的逆向思路很明确:先根据残图把“每一级有几bit、级间增益是多少、电容取值在什么量级”算出来,再用公开指标(SNR、SFDR、INL、功耗)去做交叉验证。指标对得上,说明架构猜对了;对不上,就回头改模型。整个流程跑下来,相当于把一颗未知芯片的设计意图反推出来一大半。
2. 流水线ADC的架构到底怎么搭:先看懂LTC2255的骨架
2.1 每一级做什么:级间残差放大的数学逻辑
流水线ADC的核心思想,用一句话概括就是:先粗略量化,再把量化误差放大继续量。你可以把“量电压”想象成先用大刻度尺子量完,再用放大镜看剩下的残差部分,最后把每一段数字拼起来,整体精度就到了。
每一级的模拟残差表达式是:Vres = G × (Vin − VDAC)。G是这一级的级间增益,MDAC在同一级内完成DAC转换与减法放大。如果一级有效k bit,G通常在2^k附近,残差被放大到接近满量程后交给下一级。这里的关键是各级采用流水线式级联,每一级只在某个时钟相位工作,所以整条流水线的吞吐率只由输入级采样速率决定。125MSPS的主时钟进来,各级同步动起来,前一级算完传给后一级,像工厂流水线一样,每个节点都有人干活。
以2.5bit/级为例,一级内通常有6个比较器,把量程分成7个状态,但有效信息大约只有2.2bit,级间增益G=4。数值细节因架构而异,逻辑却是同一个:每级负责缩小一部分不确定范围,下一级在缩小的范围内继续精耕细作,最后一级再做精细量化。
2.2 冗余位:比较器不准也能交差的秘密
流水线ADC能在大批量生产后依旧保持14bit,最关键的功臣是“冗余位”。没有冗余时,比较器阈值偏差超过半个LSB就会让输出码直接错乱;而现实中比较器失调很难做到那么低。冗余的思路是:让每一级的量化范围比标称范围略大,下一级同时覆盖上一级的错误区间,这样前级比较器即使偏得离谱,后级也能把错误救回来。
最经典的1.5bit/级就是为此而生。它只有两个比较器,阈值分别在1/4VREF和3/4VREF,输出三种状态编码为0、1、2,但有效位数只有1bit,多出来的0.5bit就是冗余。后一级的满量程范围正好覆盖前一级误差区间,所以前级比较器失调容忍度可以做到±1/4VREF的量级,几乎不用为比较器做复杂的失调消除。这相当于用少量数字逻辑和模拟面积,换来了极高的容错能力。
在LTC2255这种14bit产品上,冗余位的使用会更激进。部分电路上看到的比较器数量比理论最小数量明显要多,比如一个有效4bit级用了超过16个比较器状态,多出来的就是冗余比较器。这些比较器不做传统意义上的高精度失调校准,但配合后台数字校准,整体INL照样能做到1LSB以内。理解这一点,对后面逆向残图非常有帮助。
2.3 LTC2255的整体级数分配推测
逆向到一半,最需要回答的问题是:14bit是怎么分配到这么多级上的?我根据残图上的比较器数量和电容阵列尺寸做了综合推断,比较合理的划分是首级4bit,后续若干级采用2.5bit或1.5bit结构,总共约8~10级。
为什么首级用4bit而不是1.5bit?因为首级的噪声和失调会直接影响整条链路性能,首级做得越粗,后面所有级的噪声预算就越轻松。但首级也不是越大越好——4bit首级意味着十几个比较器同时挂在输入节点上,输入电容变大,前端采样网络驱动难度加大。LTC2255在百毫瓦级功耗下能做到125MSPS,说明它必须在“首级位数”和“每级功耗”之间做出精细平衡。首级4bit、后级逐级降低位数,是这类低功耗高速ADC的主流选型。而从部分电路里看到的几个尺寸明显更大的采样电容,也指向首级承担了更大的噪声压力和建立精度任务。
3. 从残图反推关键模块:这半张电路里有什么
3.1 先把开关电容网络拼出来
这部分是逆向的“考古现场”。拿到残图后,我第一步不是看运放长什么样,而是先找节点:所有接GND或者固定电位的是底板节点;所有栅极信号能归到两个时钟相位的开关,就是采样相和放大相的界限。把这两个相位标出来,开关电容网络的骨架就出来了。
具体操作可以按下面几步走:
- 在残图上标出所有MOS开关,按栅极信号分成采样相和放大相两组;
- 找出与输入信号相连的电容顶板,采样相时顶板接输入、底板接固定电位;
- 在放大相,反馈电容把输出连回运放输入端,其余电容顶板改接VREFP或VREFN;
- 根据反馈电容和输入电容的面积比值,反推级间增益。例如看到一个残图里3个单位采样电容和1个单位反馈电容,级间增益G=(Cs+Cf)/Cf≈4,这对应一个典型的2bit有效级设计。
残图有个好处:即使连线断掉,电容阵列的相对尺寸还在,而相对尺寸正是判定级间增益最硬的证据。电容匹配是流水线架构的命根子,厂商一般会把关键电容做成完全一样的unit cell,一眼就能认出来。
3.2 比较器组和电阻梯:首级粗量化的识别方法
拿到比较器阵列,先找电阻串。电阻串从VREFP一路串联到VREFN,每两个电阻之间引出一个抽头接比较器。这是最典型的Flash子ADC结构。数抽头数量就能知道首级大概的位数:16个比较器对应4bit全并行,32个对应5bit。但你还要再看抽头间距——如果最上端和最下端各留出一段不用的区间,说明设计者在阈值范围上做了冗余,有效位数可能略低于比较器数量暗示的位数。
比较器本身也有规律。低精度的Flash比较器结构通常是“预放大器加锁存器”:前面一串MOS管做电压放大,后面正反馈latch把结果锁成数字电平。在高性能流水线ADC里还会看到分时工作的动态比较器,它们不需要静态功耗,只在latch瞬间消耗电流。残图里如果比较器数量多、晶体管尺寸小、没有明显的电流源偏置,那大概率是动态比较器。
3.3 参考电压buffer和CMFB电路
残图的另一个宝藏是参考电压网络。开关电容电路在工作时不断从VREFP和VREFN抽取电流——每次开关切换都相当于一个瞬态抽水动作。为了让供给电压在几个纳秒内稳定下来,参考电压buffer必须是一个低输出阻抗的闭环放大器。残图上如果能看到一大片并联的输出管、输出到反相输入的反馈连接,还有数量可观的对地电容,那基本就是参考buffer的输出级。
共模反馈(CMFB)往往藏在运放周围不太起眼的位置:一对电阻或开关电容从运放两个输出端采样,接到一两个管子栅极,形成负反馈环路。在全差分设计里,如果CMFB画错了或者环路带宽不够,输出共模会漂移,后级就无法正确建立。从残图找CMFB的线索很直接:找连接两个输出端且等值的电阻或电容,再找它们共同接到的一个偏置管栅极。
3.4 自举开关在电路中的形态
到了14bit这个精度,采样开关就不只是一个NMOS那么简单了。普通开关的导通电阻Ron≈1/(μCox·W/L·(Vgs−Vth)),当输入信号变化时,普通开关的栅极接固定时钟电平,Vgs会随输入源极电压变化,于是开关导通电阻被信号调制,采样值产生失真。输入幅度越大、分辨率越高,这种失真越致命。
自举开关的解决办法是把Vgs钳在一个恒定值。常见做法是用一个大电容在采样相充到电源电压,然后在开关导通瞬间把电容跨接在栅极和源极之间,让栅压跟着源极走,Vgs始终等于电容上的电压,与输入无关。在部分电路里识别自举开关的方法很直接:找一个尺寸明显偏大的MOS管做开关管,它的栅极连着一个电容的一极和若干交叉开关;那些交叉开关里NMOS和PMOS互相嵌套,就是电荷泵和电平转移的标准长相。在LTC2255这类产品上,首级自举开关的尺寸和电容值远比后级大,因为它直接决定了整条链路的线性度。
4. 残缺图纸外的补全:从指标和仿真两个维度验证
4.1 用SFDR/INL指标反向校准猜想
逆向不是猜完就完事,必须拿芯片的真实行为来交叉验证。LTC2255的公开特性描述是:14bit分辨率、125MSPS、SNR大致在73dBFS左右、SFDR在奈奎斯特带宽内能到85dBc上下、INL典型值在±1.2LSB以内。这些数字是极好的校准锚点。
怎么用?举个例子。从残图推出来的首级采样电容如果是2pF,kT/C噪声约46μV rms,这是众多噪声源之一。把它和比较器噪声、参考buffer噪声、量化噪声按功率叠加,总噪声大约能落在150μV rms附近,对应SNR约73dB,和公开值吻合。反过来,如果残图看到的电容只有0.4pF,单个kT/C噪声就到100μV rms,总噪声无论如何到不了73dB,那就说明要么残图的电容抽取值偏了,要么架构假设有误。指标就像一台精密天平,能帮你把一个个局部推断称出真实重量。
4.2 噪声和电容尺寸的估算
这部分是硬核算账。ADC总噪声的底线由采样电容的kT/C噪声决定:噪声功率等于kT/C,噪声电压rms等于sqrt(kT/C)。当环境温度T=300K时,k=1.38×10⁻²³,于是kT≈4.14×10⁻²¹焦耳。以LTC2255的典型输入满量程2Vpp计算,14bit的1LSB约为122μV。等效输入噪声要支撑约73dB的SNR,总噪声rms大约在150μV上下,所以设计时通常会把采样网络单独压制到总噪声预算的一半以下,也就是60μV rms左右。
C_min = kT / Vn² = 4.14×10⁻²¹ / (60×10⁻⁶)² ≈ 1.2pF
也就是说,首级采样电容理论上至少要1.2pF。若想让采样噪声进一步降到30μV rms,电容直接跳到约4.6pF;15μV rms时约18.4pF。实际芯片还会留若干余量给其他噪声源和工艺偏差,所以LTC2255这种级别的首级采样电容做到2~4pF完全合理。版图抽取结果如果落在这个区间,说明残图没有大问题。
| 采样网络噪声rms目标 | 最小采样电容(kT/C计算值) | 实际设计通常取值 |
|---|---|---|
| 60μV | 1.2pF | 2pF以上 |
| 30μV | 4.6pF | 5~8pF |
| 15μV | 18.4pF | 20~30pF |
4.3 开环增益要求与管子长度的选择
残差放大器的增益精度对整体线性度至关重要。14bit下,级间增益误差必须小于约0.5LSB。如果运放开环增益不够,MDAC的闭环增益会出现偏差,等效于引入增益误差。工程经验公式是:运放开环增益AV0至少达到2的(N+1)次方,N是有效位数。14bit时需要AV0>32768,换算成分贝就是约90dB。
90dB开环增益靠普通共源级根本做不到,必须上cascode结构或gain-boosting技术。Telescopic是叠管子,速度快但摆幅受限;Folded-cascode摆幅大但功耗稍高;更极端的做法是在cascode管栅极再接一个辅助放大器,把输出阻抗再推高,这就是gain-boost。从残图里如果看到cascode管栅极上额外连着一小簇放大器,那就是gain-boost的明显信号,也说明这一级对建立精度要求极高。
5. 逆向过程中踩过的几个坑
5.1 被金属密度填充欺骗的电容匹配
第一次抽取残图电容值时,我拿到了一个很“奇怪”的结果:一组应该严格相等的unit电容,数值参差不齐,最离谱的差了将近20%。我当时以为自己拿错了图,后来才意识到,是版图里的金属密度填充层在捣乱。
金属密度填充是芯片制造厂为了保证化学机械抛光均匀性而强制加的dummy金属块,它们不参与电气连接,但电容抽取工具会把它们和真实金属之间的寄生算进去,叠加以后unit电容之间的匹配就乱了。解决办法很简单:在抽取前屏蔽所有标注为FILL、DUMMY的层,只保留有真实网络标记的金属和器件层;抽取后把结果和原始版图再对比一遍,差值超过10%就说明过滤不干净。经过这层处理后,unit电容就恢复了正常的等比关系。这件事也给我一个经验:从残图看到的电容比例通常比单颗电容绝对值可靠得多,因为匹配是电路设计者刻意保证的,而绝对容值受寄生影响更大。
5.2 比较器失调原来是靠数字后台校准兜底
在还原某个2.5bit级时,我发现几个比较器的阈值间隔明显不均匀,一个比较器好像比预期偏了快100mV。按常理,这种级别的偏差会直接破坏子ADC的代码判定。我当时几乎认定是残图本身就错了。直到我把相邻级的冗余区间和几条通往后级数字逻辑的走线连起来看,才意识到这是后台数字校准的痕迹。
那几条走线把比较器输出送进了一片数字逻辑,数字逻辑再反过来修正级间增益或比较器阈值。也就是说,厂商允许比较器有较大失调,同时用数字补偿来兜底。这件事给我提了个醒:做部分逆向时,不要对单点偏差下结论,先问自己“系统里有没有补偿机制能容忍这个偏差”。在高端ADC里,这种“模拟不修、数字来修”的思路比比皆是,看到某一处不够完美,先想想是不是后级和数字部分的伏笔。
5.3 不要把仿真理想开关当回事
用理想开关搭了一个残图推测模型做行为级仿真,SFDR直接冲到100dBc以上。换成带电荷注入、时钟馈通和导通电阻变化源的开关模型后,性能掉到82dBc左右——这才和真实芯片的公开指标在同一水平。踩这个坑不是第一次了。理想开关丢失的每一个非理想项,在高精度采样电路里都会变成真正的谐波。
给读者的建议是:逆向验证阶段,至少给采样开关加上非零Ron、与Vgs相关的Ron变化,以及简单电荷注入模型,再跑一次corner仿真。如果仿真数字和公开指标差太远,先别急着改架构假设,先检查开关模型有没有“太理想”。很多时候,性能差距不是架构猜错了,而是验证模型自己太天真。
6. 逆向完之后,我学到什么
6.1 从“抄电路”到“抄设计思想”
LTC2255的局部设计,表面上是一堆电容、比较器和开关,实质上是一整套设计哲学的浓缩。冗余位思想教会我,与其死磕比较器的失调精度,不如在架构上留好容错空间;自举开关提醒我,在高精度采样里,每个寄生电容和导通电阻的变化都值得单独审视;后台数字校准则让我看到模拟和数字的边界可以移动——模拟做不了的,数字可以补。
这些思想不局限于流水线ADC。做SAR ADC时可以借鉴冗余比较器策略;做高速接口时可以参考自举开关的低失真采样思路;做高精度源测量时,后台增益误差校准架构同样有用。逆向一颗芯片如果能带走这些,就比单纯“抄网表”有价值得多。
6.2 部分逆向的通用方法论
这次逆向最终能跑通,靠的不是运气,而是一套可复用的流程。我把它整理成了下面这个表,之后分析其他混合信号芯片也都按这个套路来。
| 步骤 | 做什么 | 关键产出 |
|---|---|---|
| 1. 界定已知与未知 | 列出残图能辨认的模块、缺失模块、可用的公开指标 | 分析地图 |
| 2. 架构假设 | 根据比较器数量、电容比例、功耗水平推断级数和每级位数 | 初始拓扑 |
| 3. 参数估算 | 用kT/C、开环增益公式等把电容和增益误差落到数值 | 关键设计参数 |
| 4. 指标校准 | 把估算结果与SNR/SFDR/INL公开值做对比 | 可信度判断 |
| 5. 建模仿真 | 用带非理想项的模型验证;偏离则回到第2步 | 收敛结论 |
这套方法的关键点是不要让残缺资料吓住自己:只要有一两个硬指标和几个局部线索,就能把全局拼回来一大半。真正难的不是画图,而是在每一步都保持“怀疑—验证—修正”的循环。
6.3 关于部分电路逆向,我想多说两句
最后分享一点个人经验。玩逆向最幸福的时刻,不是你终于把整张图拼完,而是你忽然看懂厂商为什么在某个角落多放了一只管子、多画了一个交叉开关。那一刻你会觉得,自己不是在模仿某国际大厂的布局,而是在和一位经验丰富的设计师隔空对话。
如果让我给刚接触高速ADC的人一个建议,我会说:拿到芯片先别急着拆,先把datasheet里的SNR、SFDR、INL、功耗这些数字背熟。它们是你逆向时最可靠的路标,比任何残缺的电路图都更能把你带回正确的分析轨道。至于这篇LTC2255的复盘,模板和方法都在上面了。下次你手里如果也有一张只有一半的电路图,不妨照这个思路试试,大概率能少走不少弯路。