低功耗Bandgap设计:从休眠电流到纳安级实现的关键技术

低功耗Bandgap设计:从休眠电流到纳安级实现的关键技术 半夜两点群里有工程师发了一张功耗测试曲线板子休眠电流标称0.7μA实测却是4μA出头。外围器件拆到只剩最小系统电流纹丝不动。最后有人问了一句“你把bandgap切成快速唤醒模式了吗”对方一愣切完之后电流直接掉到1.1μA。这个场面我见过太多次。低功耗设计一谈到“省电”大家第一反应是关外设、降主频、用低功耗蓝牙协议栈但很少有人会第一时间想到芯片内部的bandgap——那个几乎在所有低功耗芯片里“赖着不走”的模拟模块恰恰是休眠电流里最难抠掉的一块硬骨头。这篇文章我想把低功耗bandgap结构这件事从头到尾捋一遍。从它为什么关不掉到正负温度系数怎么配平再到传统拓扑降电流后为什么会“翻车”最后给出一套纳安级bandgap的实际设计思路和流片后最容易踩的坑。内容适合三类人正在做模拟IP的电路设计工程师、低功耗SoC/MCU的系统架构师以及拿着数据手册跟休眠电流较劲的嵌入式开发者。放心往下看不用你已经是bandgap专家。1. 为什么低功耗芯片的电流预算里bandgap总是“赖着不走”1.1 休眠电流分解表bandgap藏在哪一格一颗典型的低功耗MCU或者BLE SoC深度睡眠模式下的电流通常可以分成几块RTC振荡器、SRAM保持、IO漏电、LDO或DC-DC的静态电流以及常开电源域里的模拟参考模块。如果你拿厂家手册里的电流分解图细看bandgap这一项标记常常是“included in system bias”之类含糊其辞的描述。它不像射频前端那样有个明显的发射电流峰值也不像Flash那样有明确的读操作功耗它就像家里一直插着电的路由器单看功率不大但365天从不关机。我看到的实际项目中一颗工作电流只有几mA的BLE芯片休眠时bandgap如果一直开启通常要吃掉0.5μA到2μA的电流。在动辄追求1μA以下休眠电流的IoT产品里这个占比可能直接超过30%。换句话说你把RF、MCU、传感器都优化得再漂亮bandgap不处理整板功耗就永远下不了台阶。1.2 “常开域”约束想关不能关的尴尬有些模块在休眠时可以彻底断电比如Flash、RF前端、大功率LDO它们不工作就不耗电。但bandgap不一样它承担的是“随时准备被唤醒”的职责。芯片要从深度睡眠里醒来第一个动作往往是给内部模拟域重新建立电源和参考电压ADC要采样比较器要翻转电压检测器要判断当前电池电压是否支撑系统启动。如果bandgap没有提前建立好稳定输出芯片要么唤醒时间变长要么在参考电压建立的过程中做出错误判断轻则吐出一个乱码重则整个系统复位失败。所以多数低功耗芯片的电源管理单元会把bandgap放在“常开域”里和RTC、电源监测电路共用一路始终供电的电源轨。这个域在休眠时不关断bandgap就跟着一直耗电。想做超低功耗就得把这个“一直耗电”的绝对值压下去这就是低功耗bandgap结构存在的根本原因。它解决的问题不是“性能极致”而是“在性能不掉太多的前提下把静态功耗压到nA级”。1.3 低功耗bandgap的五个评价维度评估一颗低功耗bandgap我习惯列五条线待机功耗、温度系数、启动时间、输出噪声、电源抑制比。这五个维度互相牵制你把功耗压到极致噪声必然变大你把启动时间压缩功耗又会反弹。实际项目里很少存在“全都要”的方案更多时候是在这五边形里根据芯片定位做取舍。比如一颗电池供电的传感芯片每10分钟唤醒一次做一次ADC采样bandgap的启动时间要求就很宽松几十微秒甚至一两百微秒都能接受但待机功耗必须压到极低反过来一颗用在工业现场的设备虽然一直插着电但对唤醒时间和输出噪声要求极高bandgap就必须工作在偏置电流比较大的区间。理解了这个权衡再看后面的技术方案你就知道为什么同样叫bandgap电路结构可以差出十万八千里。2. 温度不飘的根本机制正、负温系数的配平是怎么回事2.1 CTAT来自哪从VBE的负温特性讲起带隙基准的核心思想说穿了就是用一路“随温度升高而降低”的电压去抵消一路“随温度升高而升高”的电压两者叠加出一个几乎不随温度变化的参考电压。前一路叫CTATComplementary To Absolute Temperature负温系数通常来自双极晶体管的基极-发射极电压VBE。VBE的表达式是VT·ln(IC/IS)其中VTkT/q在室温300K下大约是25.85mVIS是饱和电流它和硅的本征载流子浓度、扩散系数等一系列物理量强相关而这些量都强烈地随温度变化。把这些温度关系代进去做一次全微分可以得到一个工程上常用的结论在典型工艺和微安级集电极电流下dVBE/dT大约在-1.5mV/K到-2mV/K之间常用估算值取-1.6mV/K到-1.7mV/K。这就是bandgap里“负温系数电压”的核心来源。很多教科书喜欢直接把“VBE温度系数约-2mV/K”抛出来但做低功耗设计时你得留意一件事当偏置电流降到nA级以后VBE的绝对值会下降它的温度系数也会偏离这个经典值因为此时IS的贡献占比变了。更关键的是nA级偏置下MOSFET或者BJT可能工作在弱反型边缘经典双极模型不再那么准确。这个细节我会在第三部分展开这里先记住结论CTAT电压基本由BJT的VBE提供也有一部分是用MOSFET的VGS替代的后者通常是低功耗bandgap的主流选择。2.2 PTAT怎么造两个电流密度差对出正温电压正温系数电压PTATProportional To Absolute Temperature的构造方法是用两个工作在相同温度下、但电流密度不同的BJT发射结把两者的VBE相减。比如两个PNP管面积比为1:N通以相同电流那么它们各自VBE的差就是ΔVBEVT·ln(N)。这个差值不含IS只保留VT和面积比所以它是严格意义上的一次正温电压。更通用的做法是让两个管子的电流密度比不等于1比如一个管子通电流I另一个通M·I但面积只放大K倍那么ΔVBEVT·ln(M·K)。这个自由度在实际电路里非常有用因为你不一定方便把两个支路电流做完全一致但可以通过电流镜比例和发射极尺寸比同时调整。ΔVBE的温度系数也很好算VT对温度求导是k/q约0.087mV/K再乘以ln(N)。N取8时ln(8)≈2.08温度系数约0.18mV/KN取64时ln(64)≈4.16温度系数约0.36mV/K。可见单个ΔVBE的正温系数远不足以抵消VBE的-1.6mV/K必须用电阻网络或电流镜把ΔVBE放大若干倍再做加法。这个“放大多少倍”就是bandgap设计里最核心的配平计算。2.3 一阶补偿的完整计算为什么要配出1.2V而不是0.7V把CTAT和放大后的PTAT加在一起就得到经典的带隙基准表达式VREF VBE K·ΔVBE。我们的目标是让VREF对温度的导数为零也就是dVBE/dT K·d(ΔVBE)/dT 0。代入典型值dVBE/dT取-1.63mV/KΔVBE的N取8d(ΔVBE)/dT≈0.1815mV/K。解出来K≈8.98。此时室温下VBE大约0.58V到0.65V取决于工艺和电流密度ΔVBEVT·ln8≈53.8mV于是VREF≈0.69×0.0538≈1.08V。进一步推导会发现在这个配平条件下VREF恰好约等于硅的带隙电压1.2eV折算出来的电压量级这也是“bandgap”这个名字的由来。这个计算告诉我们两件事第一一阶补偿的参考电压天然落在1.1V到1.2V附近第二如果工艺节点降到深亚微米核心供电电压只有0.9V甚至0.7V这个电压就没法直接被低压电路使用。低功耗bandgap里大量出现的“电流模式”和“亚阈值MOS”结构很大程度上就是为了在0.6V到0.8V的低压下依然能输出一个可用的参考同时把功耗压低。这不是改变物理原理而是改变实现方式。3. 传统拓扑进nA级之后是怎么“翻车”的3.1 运放静态功耗失调省电和省精度两头打架传统CMOS bandgap最经典的结构是两个BJT产生ΔVBE一个运算放大器钳位两个支路的电压再用电阻把ΔVBE转成电流或者直接分压叠加。这个结构本身非常成熟良率和温漂都能做得很好但它的硬伤在于——运放要工作就必须有偏置电流。一个普通的五管OTA静态电流几十微安做了低功耗优化可以压到几百纳安但是想再往下运放的增益、带宽、摆率就全崩了。更麻烦的是失调电压。bandgap输出精度对运放失调的敏感程度跟ΔVBE的量级直接相关。ΔVBE本身只有几十毫伏一个10mV的失调在传统微安级设计里还能通过版图匹配和chopping吸收掉可当偏置电流降到nA级器件的面积为了省功耗不得不缩小失配反而增大。失调一旦和环境温度、老化叠加温漂曲线就会出现严重的批次离散。我在几个项目里都见过这种情况仿真时温漂漂亮得像一条直线硅片回来后良率却因为失调分布吃掉了好几个点。3.2 电阻面积爆炸计算一下硅片成本低功耗bandgap的第二大阻碍是电阻。传统带隙里PTAT电压ΔVBE要通过电阻转换成电流或者直接串在支路上分压。你那支路的偏置电流已经压到10nA可ΔVBE还是那50mV左右那配套的电阻就变成了RΔVBE/I50mV/10nA也就是5MΩ。而实际配平系数K摆在那里较大那个电阻往往要几十兆欧。几十兆欧的多晶硅电阻在硅片上意味着什么我做过一个粗略计算普通工艺下高阻多晶硅方块电阻大约1kΩ/□左右一颗50MΩ的电阻就需要五万个方块串联。假设方块尺寸是1μm×1μm这个电阻光长就占了5cm的等效长度在版图里必须来回折叠占用面积轻松超过0.05mm²。放一颗低功耗芯片总共才几个平方毫米一个bandgap吃掉这么大面积项目评审会根本过不了。这就是为什么低功耗bandgap不能简单粗暴地把传统结构的电流一路往下砍。3.3 漏电失控高温测试里最难看的那条曲线第三道坎在高温。芯片标称工作温度上限若是125°C那么在这一温度下PN结的反向漏电、MOSFET的亚阈值漏电、以及阱/衬底之间的寄生二极管漏电都不可忽视。这些漏电通常在几十皮安到几纳安之间。听起来不大但你的bandgap主偏置电流只有10nA甚至5nA漏电直接和主偏置处于同一数量级温度曲线就会在高温端翘起来。我见过最典型的现象是温漂曲线在-40°C到85°C范围内非常平结果超过100°C后输出电压突然抬头斜率甚至变成正的。第一次遇到时还以为是测量问题后来用探针台逐点测各个节点的电流才发现是某个大电阻两端的寄生二极管在125°C下贡献了几百皮安的泄漏电流改变了电阻分压比。这个教训让我后来在低功耗bandgap的设计里永远把高温漏电当成一级指标来评审而不是到最后才补。4. 把bandgap压到纳安级的三个技术方向4.1 方向一亚阈值MOS的“MOS-only”带隙传统bandgap依赖BJT和运放功耗下不去的核心原因是BJT的VBE需要较大电流才能建立运放也需要静态功耗。于是业界把目光转向MOSFET的亚阈值区。所谓亚阈值区是指VGS低于VTH但MOS管并没有完全关断漏电流与VGS呈指数关系。亚阈值区里两个不同尺寸的MOSFET在相同漏电流下VGS会产生一个差值ΔVGSn·VT·ln(m)其中n是亚阈值斜率因子通常在1.2到1.6之间m是两个管子宽长比之比。这个ΔVGS和BJT版ΔVBE一样是PTAT正温电压而且不需要BJT器件纯MOS工艺就能做。另一路CTAT则直接用MOSFET的VGS本身因为VGS随温度升高有下降趋势做一阶抵消后就可以在不用运放、不用BJT、也不用大电阻的情况下实现带隙基准。这种“MOS-only”带隙的典型功耗可以压到几nA甚至更低特别适合纯数字工艺衍生的低功耗SoC。代价是精度和噪声都不如传统的BJT版本需要chop或者trim才能达到商用产品要求。4.2 方向二电流复用与动态偏置不是所有结构都非要完全抛弃BJT。工业界有不少混合方案核心思路是“电流复用”让同一条支路同时产生PTAT和CTAT成分或者把原本需要几路电流的地方合并成一路进行多次利用。比如有一类结构用一个电流既给BJT提供偏置又通过电流镜复制后叠加到输出端用两个电流镜比例同时控制PTAT和CTAT的加权从而把总静态电流从“几路相加”变成“一路为主”。另一种思路是动态偏置dynamic biasing在某些特定状态如上电、唤醒、ADC采样保持期间让bandgap暂时工作在较高电流快速稳定之后再把偏置电流切回nA级的“保持状态”。这种思路和数字电路里的DVFS有点像它放弃的是恒定的低噪声换来的是平均功耗大幅下降。对于间歇性工作的传感芯片这是性价比很高的路线。4.3 方向三开关电容与间歇式工作更激进的做法是让bandgap根本不要连续工作而是像脉冲一样间歇运行每隔几毫秒醒来一次把参考电压建立到电容上然后迅速断电用电容上的电荷维持输出。这一类的经典结构就是开关电容带隙基准。芯片需要参考电压时先等几个时钟周期的“充电时间”从电容上取用精度足够、但会缓慢衰减的电压。这种方案的功耗下限非常恐怖静态功耗可以逼近漏电极限。但代价是参考电压不是恒定的而是带纹波和漂移且输出阻抗高带载能力很弱。它更适合在“采样保持型”传感器接口里使用比如电化学传感器每秒钟采样一次采样瞬间的参考精度达标就行。做系统级低功耗时这类bandgap其实是和ADC的工作模式深度耦合的不能把它当成一个独立的模拟IP来看。5. 一个12nA级低功耗bandgap的指标分解与设计初值5.1 设计指标与功耗预算我曾经参与过一颗主打纽扣电池供电的传感SoC其中bandgap的指标定得相当“苛刻”全温度范围-40°C到125°C温漂要求低于40ppm/°C待机电流预算只有12nA启动时间允许200μs输出参考电压0.65V。这颗芯片用一节3V纽扣电池供电系统休眠时LDO关断只有常开电源域里的bandgap、RTC和唤醒定时器还在工作。整机休眠电流预算1μAbandgap只分到1.2%。12nA听起来不可思议但拆解一下就清楚了核心PTAT电流取5nACTAT支路取4nA剩下3nA给偏置和启动电路。在这个预算下任何传统用运放的结构都不现实因为一个静态电流3nA的运放其增益可能只有40dB钳位精度根本不够。最终我们转向了亚阈值MOS-based结构不用运放用电流镜直接做电压相加。5.2 核心架构与手算初值结构上我们采用了两组NMOS差分对加PMOS电流镜的电流模式叠加方案。核心是两个NMOS管M1和M2尺寸比设为1:16工作在亚阈值区同一支路电流由PMOS电流镜1:1镜像。这时M1与M2的VGS差就是ΔVGSn·VT·ln(16)。取n1.4室温300K下VT≈25.85mVln16≈2.77算出来ΔVGS≈100mV。再看CTAT侧NMOS的VGS本身就是负温系数典型工艺下VTH的温度系数约-0.6mV/K亚阈值项里还藏着一个和温度相关的μ·VT²项综合起来我们仿真提取的dVGS/dT大约-0.7mV/K。配平系数K0.7/0.334≈2.1也就是说把PTAT的ΔVGS放大2.1倍再叠加上VGS就能得到一阶零温漂。这个放大不需要大电阻而是通过电流镜把PTAT电流复制到一个比例电阻或长沟道MOS上实现的电阻值比传统方案小一两个数量级。5.3 从初值到仿真的迭代一些实测数据手算初值只能让你把架构定下来真正的设计在仿真里迭代。我们第一版仿真结果室温VREF大约0.68V温度曲线呈上凸抛物线顶部在60°C附近高低端分别偏了十几毫伏。这是典型的二阶曲率效应一阶补偿配平了斜率但无法消除VGS和VT里随温度非线性变化的高阶项。后来我们在CTAT支路上引入了一个“曲率补偿管”利用它工作在亚阈值区时VGS的非线性项产生一个与温度平方相关的电流注入输出节点。订正之后温漂从110ppm/°C压到了35ppm/°C代价是总电流增加了1.8nA仍在预算内。流片后量产测试统计下来12nA标称值对应整体功耗14nA左右温漂分布在28~42ppm/°C达到了项目要求。这组数据给我的经验是低功耗bandgap的手算只能提供一个“不蠢”的起点真正的收敛要靠在仿真和硅片上反复磨。6. 这几个“暗坑”最容易在流片后炸出来6.1 启动失效一个把整板卡死在45mV的真实案例有一种很隐蔽的失效模式发生在nA级bandgap上电的一瞬间。这类电路里常有简并点上电后所有晶体管都处于零电流状态电路也能“稳定”住但这个稳定点不是你想要的工作点输出参考电压被卡在几十毫伏上不来。传统微安级bandgap因为偏置电流大简并点通常能被内部的微弱漏电自然打破但nA级电路里漏电太弱上电后可能一直锁死在“假死”状态。我在一个项目里踩过这个坑芯片回来系统上电后MCU的电压检测器始终不产生复位信号整板卡死。示波器测bandgap输出稳定在45mV。后来我们仿真复现发现是启动管尺寸取得太小其提供的启动注入电流和环境漏电相当无法把电路推出简并点。整改方案是把启动管宽长比加大八倍同时加一个RC延时的kick信号确保主环路建立后再断开启动管。改版后问题消失。这个案例让我养成了一个习惯所有nA级bandgap必须做“全局简并点扫描”用仿真找出所有可能的稳定点逐一确认不会锁死再谈其他指标。6.2 高温漏电温度曲线在90°C突然“抬头”第二个高频坑就是我在3.3节提到的漏电问题。在一个极低功耗项目的高温测试环节我们测量bandgap输出从25°C到125°C扫了一遍结果曲线在90°C以后明显往上翘温度系数直接超标一倍。最初怀疑是BJT的寄生欧姆电阻但扫描多个样品发现翘曲幅度和版图位置强相关这才想到是版图上顶层走线跨过了大电阻区域高温下衬底漏电通过寄生路径注入了敏感节点。处理办法不外乎三招第一在高阻区下方加保护和隔离环第二把敏感电阻改成多个小电阻串联并拉开间距避免某个单点漏电形成主导路径第三在漏电最严重的节点并联一个Dummy器件让漏电尽量走已知路径而不是随机进敏感节点。改一版版图后高温段的翘曲直接消失。这里有个工程心得低功耗bandgap的版图往往比电路设计更决定成败尤其在nA级电流下几条金属连线的电场耦合都可能改变工作点。6.3 噪声与时钟拍频低功耗SoC里最隐蔽的干扰nA级偏置的bandgap输出噪声天生就大。热噪声功率和电流成反比电流从1μA降到10nA等效输入噪声电压密度可以翻几倍到十几倍。在低功耗蓝牙SoC里bandgap的噪声会直接串到射频收发机的偏置和电源域影响接收灵敏度。如果你用的是开关电容型低功耗bandgap问题更复杂采样时钟的电荷注入和时钟馈通会在带外产生杂散如果采样频率和数字系统的32.768kHz低频时钟产生拍频中频接收链路里就能看到明显的干扰锅底。处理拍频问题我踩过的经验是bandgap的采样时钟绝对不要直接从数字系统时钟分频而是单独用一个环形振荡器或者非整数分频器驱动让它和低频时钟保持固定的相位差。再不济也要在bandgap输出加一级RC低通滤波把采样频率以上的电荷注入毛刺滤掉。一个RC引入的面积和功耗通常远小于你在系统级做抑制的成本。7. 系统应用视角低功耗bandgap怎么配合休眠与唤醒7.1 两类芯片厂商的路线常开bandgap vs 按需建立如果你在做系统级低功耗设计拿到一颗具体MCU或SoC时建议翻一下数据手册里的电源管理章节看厂家的bandgap策略是“常开”还是“按需建立”。常开型策略下芯片深度睡眠时bandgap依然稳稳定住参考电压唤醒时间最短但休眠电流里固定含一笔bandgap功耗按需建立策略下休眠时bandgap完全关断或降到最低偏置唤醒后需要几百微秒重新建立参考然后才开始跑代码。这两种路线的分界点就在你的唤醒频率和唤醒后动作。如果每秒钟唤醒一次按需建立方案每次唤醒都要付200μs的建立时间这笔时间里的额外功耗可能远超省下的休眠功耗如果每10分钟唤醒一次常开型就太浪费按需建立显然划算。做选型时把这两笔账算清楚你对“低功耗”的理解就不再停留在数据手册的某个数字上。7.2 测量低功耗系统时注意bandgap稳定期毛刺我见过不少工程师在一块低功耗板子上做电流波形测量抓出来的电流曲线在唤醒瞬间有一个很大的尖峰然后才回落到正常的唤醒工作电流。这个尖峰有时候就是因为bandgap在稳定过程中内部参考电压出现一个“过冲”导致LDO的输出被拉一下MCU核心电压跟着抖了一下外设接口出现了错误的电平切换。如果这个毛刺落在ADC采样窗口里采样值会直接异常。做低功耗系统时建议在bandgap稳定期内屏蔽ADC触发、比较器输出和复位监测等参考电压进入“settled”范围再使能这些功能。很多MCU芯片内部已经做了这种时序管理但如果你用的是分立方案或者老芯片就要靠外部硬件或固件保证这个静默窗口。这个细节常常是低功耗产品“偶发异常”的根源排查起来非常隐蔽。7.3 选择内部带隙基准还是外部基准最后一个应用层面的决策内部bandgap和外部基准芯片怎么选。低功耗bandgap再优化10nA级别的参考电流对高精度ADC而言还是不够看的因为其输出阻抗高、噪声大驱动不了ADC的采样电容阵列。如果你需要16位以上的ADC精度或者需要在宽温范围内保持每摄氏度几个ppm级别的稳定性老老实实外接一颗基准芯片或低温漂LDO做参考比在SoC内部硬磨要省事得多。反过来如果系统对精度要求只有0.5%到1%测量窗口又很短内部bandgap配合采样保持电容完全够用。很多NB-IoT模组、智能仪表方案就是这么做的把参考采样安排在传感器激励的间隙用软件时间片躲开bandgap噪声大的阶段。这类系统级优化比单纯堆硬件性能更能拉开产品功耗和成本差距。做低功耗bandgap这几年我最大的体会是这个模块真正难的从来不是电路推导而是你能不能把“12nA”这种抽象数字还原成一个个具体的物理约束——哪条支路漏了1nA哪个电阻占了0.01mm²哪个节点在125°C下和衬底之间多了0.3V压差。所有的省电技巧本质上都是在跟这些细节讨价还价。如果你正卡在低功耗设计的某个难关上不妨先把你手头芯片的bandgap工作模式、启动时序、稳定时间这三样弄清楚可能比你在代码里反复优化功耗模式收益更大。毕竟一颗芯片的功耗下限往往从它的bandgap开始就已经定好了。