开头先聊个现象。带隙基准Bandgap Reference在模拟IC里属于那种“原理图三分钟、落地全是坑”的模块。教科书上两页纸就能推完一个运放、两个BJT、一串电阻正温度系数和负温度系数一拼输出约1.2V理论温漂为0。可真到流片回来测数据温度从-40℃扫到125℃你大概率会发现实测温漂曲线跟仿真差了一截有的批次甚至在低温段掉了十几毫伏电源拉偏10%输出跟着漂个别芯片换到高温下干脆就没输出了。这些现象核心都指向带隙基准的非理想因素。这篇文章就把我在模拟IC里调带隙基准时经常碰到的非理想来源、量化影响以及对应解决办法整理一遍适合正在做bandgap项目的模拟设计工程师也适合刚要接触基准模块的研究生内容偏工程实践仿真环境照着搭就能复现。1. 先搞清楚带隙基准到底在补偿什么1.1 Vbe、PTAT与“一阶魔法”带隙基准能稳定输出靠的是把两个温度系数符号相反的电压拼在一起。BJT的基极-发射极电压Vbe随温度升高而下降典型斜率约-1.8mV/℃这是负温度系数两个不同电流密度下的BJT其Vbe之差ΔVbekT/q*ln(N)随温度升高而线性上升常温附近斜率约0.087mV/℃N是电流密度比这是正温度系数。把ΔVbe放大一定倍数再跟Vbe相加一阶项就能抵消掉。输出电压表达式写成Vref Vbe (R2/R1)·kT/q·ln(N)其中R2/R1是电阻比例N是两个BJT的电流密度比。为了让一阶温度系数在常温附近为0通常会把(R2/R1)·ln(N)做到17~22之间。比如取N8ln(N)2.08那R2/R1就得在8~10附近这是一个常用设计区间。但注意这个表达式是“一阶抵消”的理想模型。实际芯片里Vbe本身包含二阶、三阶温度项电阻有温度系数运放有失调BJT有工艺偏差电源电压还会压缩偏置。任何一个环节偏离理想假设最终温漂曲线就会从“一条水平线”变成“一条抛物线”甚至在两端翘得更狠。1.2 从电路看非理想因素从哪进来把带隙基准拆开你能看到四个主要子系统BJT核心、运算放大器、电阻网络、启动与偏置电路。非理想因素就从这四个节点以四种不同“形态”侵蚀精度运放的输入失调电压Vos会直接串入反馈环路被电阻比例放大后出现在输出端。电源到输出的PSRR有限电源纹波和DC漂移会泄漏到基准上。Vbe的高阶温度项和电阻的温度系数会让一阶补偿之后留下“残余曲率”。工艺偏差导致BJT的Vbe绝对值、电阻绝对值、以及电流镜比例偏移表现为批次间输出分布太宽。这几类问题不是独立的。你压了失调可能把噪声折进去你改了电阻类型温漂系数又会跟着变。所以做带隙基准本质上是在几个约束之间做权衡先分清主次再动手比上来就猛加电路要靠谱得多。2. 五种非理想因素的机理与影响量化2.1 运放失调电压——最大的“隐形成分”MOS管的阈值电压Vth失配、栅氧厚度涨落、沟道长度调制效应都会贡献运放输入级的Vos。CMOS工艺里常规尺寸下运放的Vos典型值在1mV到10mV之间具体数值跟面积和工艺density有关。为什么在带隙基准里特别要命因为失调电压不是只加在输出端、直接偏移一点那么简单它会被电阻比例放大后进入ΔVbe路径相当于直接扭曲了PTAT电压的斜率。拿上文的经典表达式做估算。假设置有Vos的模型则Vref Vbe (R2/R1)·(ΔVbe Vos)R2/R1通常在8~10Vos5mV的话输出就会多出40~50mV。这个偏移本身可以用trim修掉一部分麻烦的是Vos还有温度漂移。CMOS差分对的Vos温度漂移大约是1~2µV/℃乘10倍到输出就是10~20µV/℃折算到1.2V参考上等于8~16ppm/℃的温漂增量。如果你的目标spec是10ppm/℃以内一条失调漂移就快吃满预算了。要理解为什么失调对温漂的杀伤力这么大可以从环路增益角度看。带隙运放工作在深度负反馈下但Vos位于运放输入端它不受环路增益抑制而是像输入信号一样直接被放大。所以无论运放增益多高都救不了失调。这也是为什么后续处理失调需要靠chopper、auto-zero或者trimming而不是单纯提高增益。2.2 电源抑制比PSRR不足带隙基准通常工作在有一定纹波的电源环境下尤其是车载、工业电源系统里低频纹波和负载突变造成的毛刺都很大。PSRR电源抑制比定义是电源电压变化对输出电压的泄漏比例理想为无穷大实际值要靠电路结构撑起来。带隙里的PSRR有几个天然短板。一是BJT的Vbe本身受电源影响很小但PTAT电流产生支路上的电流镜如果沟道长度不够Early电压会让镜像电流随电源电压变化ΔVbe随之抖动。二是运放的电源抑制能力有限运放电源端扰动会通过差分对的漏源电阻洄灌到输出。三是电阻分压网络与电源之间没有隔离如果基准输出直接接了一串电阻到电源那么电源噪声会分压进入反馈节点。低频时PSRR主要由环路增益决定。你可以用仿真直接看环路增益曲线在1kHz以内通常能做到60~80dB以上。高频段环路增益下降PSRR也随之变差通常要依靠输出级的RC滤波或LDO前级来兜底。如果带隙是给ADC、PLL用的建议至少对100kHz以内的PSRR做一次全corner扫描避免在某个温度点上电源抑制退化到20dB以下。2.3 Vbe的温度曲率——二阶乃至高阶误差一阶补偿抵消了Vbe的线性温度项但Vbe本身的长相是Vbe(T) VG0 - (VG0 - Vbe0)·(T/T0) - (η-m)·VT·ln(T/T0)最后一项里的ln(T/T0)是“曲率”项。η是硅的迁移率温度指数通常3~4m是BJT集电极电流的温度指数与电流源类型有关。这一项带来的非线性会让温漂曲线呈现“上凸”或“下凹”的形态常温附近温漂最小低温或高温段偏差变大。实测中典型一阶补偿曲线在-40℃~125℃范围内总温漂大约在30~80ppm/℃量级这就是曲率未消除的结果。那为什么不能靠反复调R2/R1把温度曲线压平因为R2/R1只改变线性PTAT增益它能把常温中心附近压平但无法改变曲线的弯曲方向。要压掉弯曲必须叠加一个与T·ln(T/T0)形状相符的高阶电流或电压信号这就是曲率补偿要干的事。2.4 工艺偏差电阻、BJT与修调窗口工艺偏差是另一个大头它不像失调那样只影响一点而是影响整批芯片的基准电压分布。首先是Vbe绝对值。BJT的Vbe取决于基区掺杂浓度、发射极面积和工艺温度不同批次间能差±30~50mV。Vbe一旦变了即使PTAT项很精准输出也会整段偏移。电阻的影响更隐蔽。带隙输出电压是Vbe (R2/R1)·ΔVbeR2/R1这个比例很准但两种电阻的温度系数可能不匹配。比如R1用的是高阻polyR2用的是p poly两种材料的温度系数分别是-500ppm/℃和200ppm/℃那R2/R1就会随温度变化等效给PTAT项加了一个温漂包络。设计时最好让R1和R2尽量用同类型、同温度系数的电阻或者把敏感电阻放在同一工艺层里避免引入额外温差。从精度分配角度看Vbe偏差决定输出绝对值分布宽度电阻比例偏差决定温漂中心的偏移失调额外增加随机偏移。量产时通常会留出修调窗口用来覆盖这三部分的总和。常见做法是输出端电阻串留5~8个bit的修调位步长0.5%~1%覆盖范围5%对应大约60~120mV的可调范围。2.5 容易被忽略的β、漏电与机械应力寄生PNP的电流增益β在CMOS工艺里并不高低温时可能掉到1~3高温时会回升到10~30。如果基极驱动电流设计不足β过低会让带隙“拉不动”输出电流Vref在高负载下会下跌。另一个藏在暗处的问题是漏电流。ESD保护环、封装材料里的离子沾污、以及高温下的反偏PN结漏电都会在基准节点上叠加一个额外电流拉偏Vbe。高温125℃时一个pA级别的漏电就能让高阻抗节点产生mV级偏移。机械应力同样值得提。模封料在固化过程和温度循环中会对芯片施加不均匀应力BJT基区应力会改变Vbe多晶电阻的压阻效应会改变电阻值。设计上可以在敏感器件周围加dummy环版图尽量对称降低应力梯度带来的偏差。3. 针对非理想因素的工程应对方案3.1 失调消除面积、Trim、Chopper怎么选处理失调首先要面对一个不等式关系失调电压大约与有源区面积的平方根成反比。把差分对面积放大4倍Vos大概能降一半。但面积上去之后输入电容变大运放带宽下降功耗和版图面积也会跟着涨。所以纯靠面积去压Vos在量产芯片里不现实。工程上最常用的是trim修调。在晶圆测试阶段对每颗芯片读一次Vref看它跟目标值的偏差决定要不要熔断保险丝或写入片上OTP寄存器调整电阻分压比。calibration精度做到0.5%左右可以把失调和Vbe工艺漂移一次性拉到很小。注意trim解决的是“静态误差”Vos随温度的漂移、长时间使用后的老化漂移trim是修不掉的。如果需要把时间漂移和温度漂移也压掉就要用动态失调消除。chopper和auto-zero是两种主流方案。chopper的原理是把低频失调和1/f噪声调制到时钟频率再用低通滤波把它们滤掉auto-zero是采样失调并在后续阶段扣除掉。在带隙基准里chopper用得更多因为基准输出是直流信号后级加个RC低通不仅滤掉了纹波也不会影响直流精度。chopper在bandgap里落地时要注意调制纹波。斩波开关把Vos搬到斩波频率处如果后级滤波不够输出会迭加一个与斩波频率同频的纹波。这个纹波通常用两级RC滤除代价是建立时间变长。斩波频率一般选几十kHz到几百kHz要远高于1/f噪声转角频率又不能让开关电荷注入影响运放稳定。我的经验是先看运放1/f噪声拐角频率在哪再定斩波时钟一般至少比拐角高5~10倍。3.2 PSRR提升的三种手段低PSRR的根源是环路增益不足和电源泄漏通路太多。提升PSRR可以分三级去逐段加固。第一级是电源预稳压。在bandgap前面加一个LDO或者从系统里已有的更干净电源取电是最省事的做法。很多SoC会把bandgap直接接在LDO输出后面用LDO的70~80dB PSRR先把电源纹波压下去。注意LDO的环路带宽要足够宽如果LDO的PSRR在100kHz以后掉得很快高频纹波照样会串进来。第二级是提高运放自身电源抑制能力。差分对管和电流镜的cascode器件能显著降低电源对漏极电流的扰动。尤其电流镜里用高增益cascode结构能把镜像电流的电源敏感度压低一个数量级以上。运放的偏置电流源也要尽量做成与电源无关的结构否则电源一变尾电流变了Vos和Vbe偏置点都会漂。第三级是输出阻抗和滤波。在基准的输出端串一个小电阻加一个大电容形成低通极点可以把带外噪声和残余纹波压住。代价是输出阻抗上升电容负载下环路稳定性需要重新检查。仿真时建议直接给VDD叠加一个交流扫频源扫1Hz到10MHz看Vref端的PSRR曲线。同时把corner切到ss和温度125℃这种偏弱工作点这时环路增益最低PSRR最容易恶化。3.3 曲率补偿的主流做法曲线弯曲来自Vbe的T·ln(T/T0)项思路是产生一个形状匹配的附加电压或电流把它反相加回去。最经典的方法是“二阶曲率补偿”在基准电流里叠加一路与温度二次方成正比的电流源从BJT支路抽走或注入从而修正Vbe的弯曲项。实现上多用几个工作在亚阈值区的MOS管利用其ID-VGS指数特性去“等比例复制”bania温度行为。这种做法的代价是电路复杂度上升需要额外偏置且对亚阈值MOS的失配很敏感。另一类更耐用的是“分段线性补偿”。它不追求完美复现曲率曲线而是把温度范围分成低温段和高温段在不同段分别打开补偿电流。比如低于常温时开启一个随温度降低而增大的补偿电流把低温端的下跌拉回来高于常温时再开启另一个方向的补偿电流把高温端压下去。分段补偿的优势是鲁棒性强补偿点可以用两三路比较器配合bandgap输出电压自己产生不依赖深亚阈值器件的匹配。还有一类精度更高的做法是做beta-compensated结构专门针对BJT电流增益β随温度变化引起的误差。用电路让本身流过BJT发射极的电流按β的方式变化抵消β对基极电流的损耗。这个方法在精密基准里很常见但面积和功耗较高适合对功耗不敏感的参考源。实际项目里我一般先把一阶补偿做好仿真跑完温漂看看曲线是哪一段翘得最明显再决定加曲率补偿还是分段补偿。如果目标是20ppm/℃以内先上一阶加trim大概率就够了只有要把温漂压到5ppm/℃以下才值得认真做曲率补偿。曲线形状和corner分布如果显示一致性不好多半是电阻层温漂差异带来的先换同材质电阻再谈补偿。3.4 修调策略与版图细节修调要有清晰的目标和流程。常见策略是常温修Vref绝对值高温/低温修温度系数。具体做法是先在常温25℃读取Vref如果偏离目标值就调整电阻分压比例把绝对值拉平然后在高温125℃和低温-40℃分别读取Vref算出两个点相对25℃的偏差再调节PTAT增益电阻让高温和低温的偏差尽量对称。这样跑一遍可以把trim bit数在7~8bit以内控制好不必要每个芯片都做两段标定。版图细节是另一个决定成败的点。电阻串要做成common centroid结构并用dummy电阻包一圈保证边界刻蚀速率一致。BJT对用交叉对称结构中间放虚拟发射极。运放输入对要靠近BJT放置避免热梯度差异转化为失调误差。关键信号线要用地线和电源线包住减少衬底串扰。在金属层选择上基准走线尽量用高层金属更低的对底噪声耦合更弱。如果你的芯片里还有数字模块建议在带隙周围加一圈Guard Ring把数字开关噪声挡在环外。这些版图手段看着不起眼但做得好不好直接决定量产良率和高低温测试通过率。3.5 关于仿真与建模的补充仿真不能只跑typ corner。带隙基准的精度受corner影响极度明显模拟环境里要把tt/ff/ss/fs/sf都跑一遍加上电阻和BJT的独立corner再叠加失调Monte Carlo。有个容易漏的地方是很多标准工艺PDK里BJT模型在低温段精度一般仿真出来的低温Vbe掉得可能比实测少导致低温补偿设计不足。有条件的话在-40℃温度点对照foundry实测数据做一次模型修正。另外运放的噪声也要跟带隙噪声一起看。带隙输出噪声谱密度通常在100nV/√Hz到1µV/√Hz量级主要噪声源是BJT的基极散粒噪声、运放输入对的热噪声和1/f噪声。如果做chopper1/f噪声会被抑制但斩波开关的沟道热噪声需要控制开关尺寸。在仿真里直接看输出噪声密度曲线再把积分带宽乘以实际后级滤波带宽就能估算出最终噪声贡献。4. 从仿真到流片常见问题与排查实录4.1 启动失败、振荡和校准点漂移带隙基准启动问题在仿真里反而不容易发现因为模拟器通常默认所有节点初始条件都合理但实际电路上电时环路可能停在零点附近的简并态输出为0V。所以设计里一定要加启动电路让它在检测到输出为零或接近零时注入一个额外电流把环路拖到正常工作点。排查时可以先看输出是否卡在某个非目标电平上比如Vref0.6V或等于电源电压多半是启动电路没有触发或触发阈值设得不对。另一个容易遇到的问题是运放振荡尤其加了chopper之后调制频率比较高运放相位裕度容易被开关电容负载压掉。处理办法是给chopper运放的输出端加一个Miller电容稳定或者把斩波频率降低。校准点漂移也是一个实际项目里的高频问题。晶圆测试时修调好的Vref封装之后重新测发现偏移了几个mV。这不是修调失效而是封装应力改变了BJT的Vbe和电阻值。解决方式是修调流程里加一道“封装后校准”先封装再第二次读值如果偏差超限就再写一次trim。很多车规级芯片就是这么干的多一次校准成本但换来的是量产一致性。4.2 实测问题速查表我在几个项目里把遇到的典型问题和排查方向整理成了表下面这些是反复出现的类型现象可能原因排查建议高低温柔漂曲线对称上翘曲率未补偿确认是否需要二阶补偿检查电阻温度系数匹配低温输出严重偏低BJT β太低、基极驱动不足检查BJT驱动电流考虑β-compensated结构电源电压变化时输出跟着变PSRR不足扫频率看PSRR曲线检查cascode和偏置输出有周期纹波斩波纹波泄漏检查斩波频率与后级滤波极点增大RC或降低斩波频率不同批次输出分布过宽Vbe工艺漂移、修调精度不足增加trim bit修正修调策略高温空载输出漂移漏电、封装离子沾污加强Guard Ring检查ESD环漏电高温下做老化验证小批量一致性差版图匹配差、机械应力不均重做common centroid加dummy检查封装应力每条都可以继续往下深挖但思路很明确先看温度曲线形状再判断是线性误差还是非线性误差先看电源扫描再判断是PSRR还是偏置点问题最后再上噪声和稳定性分析。不要一上来就怀疑电路拓扑很多时候问题出在偏置和版图上。4.3 个人经验总结带隙基准调试很像打靶火力覆盖得越多越难找到哪一枪打中的。真正高效的做法是每次只改一个变量快速定位问题。我习惯的流程是第一步跑全corner温漂看曲线整体形态第二步跑失调Monte Carlo看随机分布宽度第三步扫VDD看PSRR表现第四步才是动电路结构。从零开始做新项目的话建议先把一阶补偿做到极限电阻比例调试平直、运放失调做到最低、版图匹配合规。你会发现很多时候一阶做得够好就已经能满足80%的应用场景。曲率补偿和chopper是锦上添花的进阶选项但它们对电路稳定性和调试复杂度的影响是实实在在的新手项目里不如先用最朴素的结构把流程跑通。最后分享一个小技巧做bandgap仿真时除了看温漂曲线和PSRR曲线把BJT的Vbe、ΔVbe、以及运放输入对的Vos分别拉出来看能帮你快速定位是哪个环节在“拖后腿”。这个习惯帮我省了特别多查bug的时间强烈建议养成。