前面的铺垫如果你已经走完了,那么你手里现在应该有一个能跑出近似1.2V输出、温漂在30~60ppm/°C量级的一阶带隙基准。这时候你大概率会盯着仿真曲线发呆:室温附近还行,可一到低温或者高温端,输出电压就开始往下弯,整条曲线像个拱桥。这就是一阶补偿没压住的高阶温度项,也就是VBE中那个不能被“线性PTAT电压”抵消掉的部分。
这篇我们就干两件事:第一,把这个“拱桥”怎么掰平——高阶温度补偿;第二,把另一个绕不开的坑填掉——启动电路。前者解决精度,后者解决“上电死锁”,两个都是带隙基准能真正交给后端、送去流片的关键。
1. 先看透一阶带隙的温漂:它到底为什么弯
1.1 VBE的高阶温度项从哪来
模拟IC课程里通常把VBE的温度特性写成近似线性:大约-1.5到-2mV/°C。但那是为了推导方便做的简化。更完整的表达式长这样:
VBE(T) = VG0 - [VG0 - VBE(T0)] × (T/T0) - (η - α) × VT × ln(T/T0)
其中VG0是硅在0K温度下的外推能隙电压,大约1.205V;η是工艺相关的常数,通常在3到4之间;α是流过BJT的电流温度指数——如果是PTAT电流,α=1,如果是与温度无关的恒定电流,α=0。
关键就在最后一项:(η - α) × VT × ln(T/T0)。这一项并不是温度的线性函数,VT本身随T线性增长,乘上ln(T/T0),整体在远离T0时表现出明显的弯曲趋势。一阶补偿的核心——用ΔVBE = VT × ln(N)产生线性PTAT电压——只能抵消VBE中的线性项,对ln(T/T0)这种非线性无能为力。于是,输出曲线就在你面前弯成了拱形。
我记得第一次在仿真里看到这条曲线时,第一反应是“是不是电阻温度系数没设对”,折腾半天才发现,即使把电阻设成理想零温度系数,拱形依然存在。这就是高阶项的威力,藏得很深,但绕不过去。
1.2 一阶补偿后还剩多少残余曲率
拿典型的0.18μm工艺BJT来说,VBE在-40°C时大概有0.85V,到125°C只剩0.45V左右,平均温度系数在-1.8mV/°C上下。一阶补偿电阻比调好后,输出大约在室温处达到峰值,然后往两边掉。
量化一下:如果一阶bandgap在-40°C到125°C范围内,输出电压的峰峰值波动大约是5到15mV,除以1.2V的基准电压和165°C的温度范围,温度系数就是25到75ppm/°C。这个量级在一般民用场景能用,但你要做工业级、车规级或者高精度ADC的基准,就远远不够了。
而且拱形曲线的形状不是规则抛物线——低温端斜率通常比高温端更陡,因为ln(T/T0)在T远小于T0时的变化速率更快。这意味着你很难用单个二次项去完美补偿它,得用分段或者更高阶的方式去“追”。
2. 高阶温度补偿的四条技术路线
2.1 分段线性补偿(折线法)——最实用
思路非常简单:把温度范围切成几段,每一段叠加一个不同斜率的补偿电流或补偿电压。比如高温段(60到125°C)输出往下掉,我就往输出支路注入一个随温度线性增大的电流;低温段(-40到10°C)输出往下掉,再注入一个随温度升高而减小的电流。
它的核心优势是“可控性强”:转折点温度可以精确设定,每一段的补偿斜率可以独立调节,不会像其他方法那样牵一发动全身。对入门者来说,这是最容易被直觉理解、也最容易通过仿真调到位的方案。缺点是需要产生几个参与比较的电流,电路面积和静态功耗会有一定增加,但通常能接受。
2.2 利用ΔVBE的非线性项——理论最优,但工艺敏感
如果我们仔细观察ΔVBE = VT × ln(N),会发现当两个BJT的电流密度比N本身也随温度变化时,ΔVBE里就会产生高阶项。比如让两个BJT的偏置电流分别是PTAT和恒定电流,那么它们的VBE之差就不再是纯线性的PTAT电压,而是包含了ln(T/T0)成分。
这种“非线性ΔVBE”如果能做到和VBE的高阶项系数匹配,理论上可以一次补偿到位,不需要分段。难点在于:η的值在不同工艺角、不同BJT模型下会飘,一旦飘了,补偿效果就跟着飘。我在实际项目里很少把它作为唯一补偿手段,更多是配合分段补偿一起用,提供一部分基础曲率抵消。
2.3 亚阈值MOS管指数补偿——适合低功耗
工作在亚阈值区的MOS管,其漏电流与栅源电压呈指数关系。而BJT的VBE高阶项本质上也和温度呈某种指数关系。如果让亚阈值MOS管的栅源电压跟随某个带隙节点电压,它就能产生一条“弯曲方向”与残余曲率相反的指数电流曲线。
这个方案最大的卖点是功耗低,因为亚阈值电流做得很小,额外消耗可以控制在微安以下。但缺点是亚阈值区工艺偏差大、模型精度一般,设计出来之后散度问题比较棘手,通常也需要配合trimming电路使用。
2.4 电阻温度系数补偿——最隐蔽的帮手
多晶硅电阻、扩散电阻、高阻多晶硅电阻的温度系数各不相同,不仅一阶系数不同,二阶系数也不同。利用这一点,可以在带隙核心中采用不同TC电阻的“组合”,使得输出的等效电阻比例随温度变化,从而产生一个微小的“曲率修正”。
这个方法经常被人忽略,因为它不是独立的补偿支路,而是融化在主环路的设计里。对于0到1.5V电源的电流模基准来说尤其好用——因为你本来就要用电阻把电流转成电压,顺手就能做补偿。缺点是电阻的TC在生产批次间会有波动,最好配合trimming。
对比一下这四条路线的特点:
| 方案 | 电路复杂度 | 功耗代价 | 精度潜力 | 工艺敏感性 | 适合场景 |
|---|---|---|---|---|---|
| 分段线性 | 中 | 中 | 高 | 中 | 工程首选,最推荐入门 |
| 非线性ΔVBE | 低 | 低 | 中 | 高 | 理论向,需配合校准 |
| 亚阈值指数 | 中低 | 极低 | 中 | 高 | 低功耗场景 |
| 电阻TC组合 | 低 | 无 | 中低 | 中 | 作为辅助手段 |
我个人的结论是:如果只选一套方案来学,选分段线性补偿。它把“补偿”这件事做成了一系列可以量化的步骤,方便你在仿真器里一步步逼近最优解。
3. 分段式高阶补偿电路设计与参数标定
3.1 电路结构:电流比较与单向传递
要做分段线性补偿,得先有一个“温度转折点检测机制”。怎么检测温度?在带隙基准里,最现成的温度传感器就是I_PTAT。它随温度线性上升,拿它跟一个参考电流比,就能得到“温度是否越过某个阈值”的数字式判断。
具体实现我用的方法是:从主环路的PTAT支路复制一份I_PTAT_AUX,同时复制一份VBE支路的电流I_CTAT_AUX。用I_PTAT_AUX和I_CTAT_AUX做电流比较。因为I_PTAT随温度上升,I_CTAT随温度下降,所以必然存在一个温度点Tc,在这个点上两者相等;高于Tc时I_PTAT更大,低于Tc时I_CTAT更大。
比较结果通过一个“单向电流传递结构”来提取:
- 高温补偿:当I_PTAT_AUX > I_CTAT_AUX时,多余的电流ΔI_H = I_PTAT_AUX - I_CTAT_AUX通过一对电流镜复制到输出支路。这样在高温段,输出电流多了一个随温度增大的分量。
- 低温补偿:反过来,当I_CTAT_AUX > I_PTAT_AUX时,多余的电流ΔI_L = I_CTAT_AUX - I_PTAT_AUX被复制到输出支路。在低温段,输出电流多了一个随温度降低而增大的分量。
要强调的是,补偿电流必须注入到“输出电流求和支路”,不要注入到BJT的发射极节点。如果直接注入核心BJT节点,会改变BJT的偏置电流,进而改变ΔVBE和VBE的温度特性,反而破坏一阶补偿。电流模结构(Banba型带隙)在这里有天然优势——输出本身就是电流求和,加一路补偿电流非常自然。
3.2 转折点与补偿斜率怎么标定
这是整个高阶补偿设计里最需要耐心的一步,也是新手最容易卡住的地方。
标定分三步:
第一步,跑一次不加入补偿的完整一阶温度仿真,得到VREF(T)曲线。把曲线分成三段:低温段(-40到约15°C)、中间段(15到约60°C)、高温段(60到125°C)。分别记录低温段的平均斜率K_L(单位mV/°C)和高温段的平均斜率K_H。
第二步,计算所需补偿电流斜率。假设输出电阻是R_OUT,那么高温段需要补偿电流满足:
ΔI_comp_H × R_OUT = -K_H × (T - T_H0)
也就是补偿电流的温度斜率应该等于:
dI_comp_H / dT = -K_H / R_OUT
举个例子,如果高温段输出斜率为-0.04mV/°C,R_OUT是100kΩ,那补偿电流斜率需要+0.4nA/°C。这个数值不大,但可以精确算出来。
第三步,把补偿电路中的电流镜比例、比较电流比例、温度转折点参数代进去,设定初始值,跑一轮仿真,再微调。一般两到三轮迭代就能收敛。
转折点温度的选择也有讲究。我习惯让高温补偿转折点放在55到70°C之间,低温补偿转折点放在0到15°C之间。这样中间留出一段“纯一阶”区间,避免两个补偿支路在室温附近互相干扰。
3.3 仿真效果评估与过补偿风险
加完补偿之后,VREF(T)曲线会从“拱桥”变成“折线桥”。如果补偿斜率和残余曲率刚好匹配,整个温度范围内的峰峰值可以从十几毫伏压到两三毫伏以内。
但这里必须警惕“过补偿”。补偿过头时,曲线会变成W形——中间凸、两边翘,反而比不补偿还差。原因是分段补偿只有线性斜率,而真实曲率是非线性的,在一个区段内只能近似匹配。换句话说,折线法在原理上就不可能做到“完美”,只能逼近。
我的经验是:分段补偿设计时宁可欠补偿15%到20%,再靠trimming电阻微调。因为欠补偿的方向是确定的,调整单调;过补偿之后,你有时候分不清到底该调转折点还是调斜率,debug难度会上升一个量级。
> 提示:仿真时把温度步长设成5°C以内,尤其是在转折点附近。步长太大会让你误判转折点和补偿斜率的效果。
4. 启动电路:再稳的基准,上电锁死也白搭
4.1 简并点是怎么回事
带隙基准的核心环路存在不止一个静态工作点。一个是我们要的正常解:BJT导通,VEB约0.6到0.8V,电流镜有电流流过,输出VREF正常。另一个是“零电流”解:所有BJT和MOS管都截止,所有节点电压为0,环路方程同样成立。
为什么零电流也会成立?因为环路本身是自洽的——电流为零时,没有电压建立,运放输入差为零,运放输出端停在某个状态,而该状态又维持着电流为零。环路没有足够大的扰动来把这个状态推开,于是电路一上电就死锁在0电流。这就像家里的大门开了,但人站在原地不动——不是走不出去,是没人推他。
4.2 核心节点怎么选,启动管怎么设计
启动电路的思路本质就一句话:检测“电路是否已经离开零电流状态”,如果没离开,就注入一点电流打破平衡;一旦检测到正常工作,立即把这条“拐杖”撤掉。
在Banba结构中,最好的检测节点是运放输入端那个“正常时应为VEB”的节点。零电流时它是0V,正常工作时它大约0.6到0.8V,两个状态差异非常大,阈值判断很容易设计。
我常用的一个结构是这样的:一个NMOS检测管Mn_st,栅极接上述核心节点,源极通过一个小电阻接地,漏极接一个PMOS电流镜的栅极。当核心节点为0V时,Mn_st截止,PMOS电流镜的栅极被电阻上拉到地电位?不对,这里极性要想清楚——PMOS电流镜的栅极应该被拉到低电位导通,一旦Mn_st导通,PMOS栅极被拉高,电流镜关断。
具体极性可以这么理:电流镜管是PMOS,它的源极接电源。要让它在“电路未启动”时向核心注入电流,栅极电压应该处于低位,即Mn_st截止时PMOS栅极被下拉到地;当电路正常启动后,核心节点电压VEB升高,Mn_st导通,把PMOS栅极拉向电源,PMOS关闭。
4.3 参数选择与边界条件
启动管Mn_st的尺寸很关键。它的作用不是输出多大电流,而是提供足够的“干扰”让环路自己爬起来。启动电流选主偏置电流的5%到20%就够。太大,会在启动完成之后残留明显的静态电流,影响温度和功耗指标;太小,又可能在慢上电或弱工艺角下触发不了。
Mn_st的阈值电压匹配也要认真看。我要保证在任何工艺角、任何温度下,核心节点0V时它能可靠截止,VEB正常时它能可靠导通。这里的余量通常只有0.2到0.3V,所以一定要做全角验证。
启动注入点也要选好。我一般注入到主电流镜的栅极节点,而不是直接打BJT的基极或发射极。原因是电流镜栅极的阻抗高,一点点电荷就能把栅压拉开,效率最高,而且一但主电流镜开始有电流,环路的正反馈会自动接管,把整个电路拉到正常工作点。
5. 启动电路的仿真验证与鲁棒性检查
5.1 上电瞬态仿真:所有节点初始化为0
验证启动电路最直接的方法,是把带隙核心的所有节点初始电压设置为0,然后给电源一个阶跃,看电路能不能自己爬起来。这是最严格的启动条件,如果通过,说明设计在“最不利上电”情况下也能工作。
瞬态仿真时,我会把仿真停止时间设置到足够长,通常到几十微秒,确保不仅能看到启动,还能看到启动后的稳定过程。如果电路能爬到预设的基准电压附近,并且没有明显的回退或振荡,说明启动成功。
5.2 爬坡速度扫描与全工艺角覆盖
上电方式千差万别——系统上电可能是微秒级,慢的甚至到毫秒级、秒级。电源爬坡速度不同,启动电路的行为差异很大。快爬坡时,电路节点电压跟随电源,可能会让检测管误动作;慢爬坡时,节点电压被拉低的时间更长,启动管可能在半导通状态停留很久。
我的验证矩阵很简单:100ns、1μs、10μs、1ms、10ms五档爬坡时间,三个工艺角(tt/ff/ss),三个温度(-40°C、27°C、125°C),总共45个组合全部跑一遍。
跑完看一眼有没有任何组合上电后锁死在零电流或半导通状态。只要有一个组合失败,就要回头调启动管的阈值匹配和启动电流大小。
5.3 电源跌落恢复与短路恢复
除了正常上电,还要验证一种更现实的情况:系统运行中电源瞬时跌落,或者基准输出被外部短路,之后电源恢复。这种时候电路也必须能从异常状态恢复过来。
仿真方法不复杂:把电源在某个时刻拉低到0.5V以下几十微秒再拉回,看基准输出能否重新建立;或者给输出节点加一个脉冲电流模拟短路,撤掉之后看恢复情况。
我遇到的很多启动电路问题都是在这种“二次上电”场景暴露的,因为此时节点上残留的电荷状态和冷启动完全不同,检测管可能会误认为电路已启动而拒绝提供拐杖。
6. 常见问题速查:这些坑我基本都踩过
| 现象 | 可能原因 | 排查与对策 |
|---|---|---|
| 上电后输出一直为0V | 启动管阈值余量不足,或者启动注入电流太小 | 检查所有corner下检测节点的0V和VEB差值,增大启动电流到主偏置的10%以上 |
| 快爬坡能启动、慢爬坡锁死 | 慢速上电时启动管长期处于亚导通区,未能形成有效正反馈 | 减小检测管源级负反馈电阻,提高启动管在低栅压下的导通速度 |
| 加入补偿后曲线变成W形 | 补偿斜率大于残余曲率,补偿过头 | 减小补偿电流镜比例,或者增加输出电阻值降低补偿增益 |
| 高温段补偿效果变差 | BJT电流增益β在高温下退化,核心电流变化 | 检查主环路BJT偏置是否稳定,必要时用较大尺寸BJT或增加电流 |
| 启动完成后基准有小幅毛刺 | 启动管未完全关断,漏电干扰主环路 | 增大检测管源级负反馈电阻,或增加启动管关断电压余量 |
| 补偿效果随批次偏差极大 | 补偿电阻与主路电阻类型不匹配 | 统一补偿电阻与主环路电阻的材料和方块阻值,保持温度系数一致 |
6.1 关于补偿和启动的几个经验细节
写到这里,有几条经验必须单独拎出来说。
第一条,高阶补偿电路的电阻匹配要比一阶主路严格得多。补偿电流的精度直接取决于I_PTAT_AUX和I_CTAT_AUX的比值,而这两个电流来自各自支路的电阻。如果电阻布局距离远、类型不一致,温度系数差一点,补偿转折点就会漂移几十度,整个补偿效果直接消失。我一般把补偿电阻和主路电阻摆在一起,用同一类型电阻,四周加dummy。
第二条,启动电路的“完成判断”要留足迟滞,或者至少保证正常工作时检测管有明确的关断状态。如果启动管正常工作后还处于弱导通区,它的漏电流会随温度和电源电压变化,最终成为一个额外的、不受控的负载,导致基准输出的温度曲线在常温附近出现毛毛糙糙的波动。
第三条,BJT阵列在高阶补偿设计中的地位更高了。补偿电路往往要复制多份电流,而电流镜精度依赖BJT或者MOS管的匹配。版图上所有参与电流镜像的管子最好都采用共质心布局,BJT加dummy管,用金属屏蔽关键走线。我见过太多设计在post-layout仿真时才发现补偿效果和原理图仿真差了十万八千里,最后全部揪到版图匹配上。
6.2 从一阶到高阶的一点体会
高阶温度补偿和启动电路这两个主题,加起来其实是带隙基准设计里“从能用到好用”的分水岭。一阶电路能跑,不代表它能在系统的各个角落都可靠工作。启动电路决定了下限——电路能不能活着;高阶补偿决定了上限——电路活得好不好。
如果你正在做自己的第一个带隙基准,我的建议是先别急着把补偿做到极致。先把一阶电路在全部corner、温度、上电条件下跑稳,再坐下来研究补偿斜率怎么标定。这两个问题虽然听着都是“温度”,但调试起来完全是两套逻辑,混在一起排查问题会很痛苦。
6.3 一个后续可以做的方向
当分段线性补偿做完之后,你会发现新的瓶颈变成了运放失调和电流镜失配带来的随机电压偏差。这时候就该研究trimming方案了。很多成熟的bandgap设计都会留一串用于调整的保险丝或者可编程开关,在量产测试阶段把每一颗芯片的基准电压修调到目标范围。高阶补偿解决的是系统性、确定性的温度偏差,trimming解决的是随机性偏差,两者加起来才是完整的高精度方案。
如果后续有机会,我也可以把trimmming的设计方法整理出来,包括修调位的权重分配、修调电路对温度特性的影响,以及量产测试中的校准流程。那又是另一篇能写很长的文章了。