半夜两点,群里有工程师发了一张功耗测试曲线:板子休眠电流标称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的负温特性讲起
带隙基准的核心思想,说穿了就是用一路“随温度升高而降低”的电压,去抵消一路“随温度升高而升高”的电压,两者叠加出一个几乎不随温度变化的参考电压。前一路叫CTAT(Complementary To Absolute Temperature,负温系数),通常来自双极晶体管的基极-发射极电压VBE。
VBE的表达式是VT·ln(IC/IS),其中VT=kT/q,在室温300K下大约是25.85mV;IS是饱和电流,它和硅的本征载流子浓度、扩散系数等一系列物理量强相关,而这些量都强烈地随温度变化。把这些温度关系代进去做一次全微分,可以得到一个工程上常用的结论:在典型工艺和微安级集电极电流下,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怎么造:两个电流密度差对出正温电压
正温系数电压(PTAT,Proportional To Absolute Temperature)的构造方法,是用两个工作在相同温度下、但电流密度不同的BJT发射结,把两者的VBE相减。比如两个PNP管,面积比为1:N,通以相同电流,那么它们各自VBE的差就是ΔVBE=VT·ln(N)。这个差值不含IS,只保留VT和面积比,所以它是严格意义上的一次正温电压。
更通用的做法是让两个管子的电流密度比不等于1,比如一个管子通电流I,另一个通M·I但面积只放大K倍,那么ΔVBE=VT·ln(M·K)。这个自由度在实际电路里非常有用,因为你不一定方便把两个支路电流做完全一致,但可以通过电流镜比例和发射极尺寸比同时调整。
ΔVBE的温度系数也很好算:VT对温度求导是k/q,约0.087mV/K,再乘以ln(N)。N取8时,ln(8)≈2.08,温度系数约0.18mV/K;N取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取8,d(ΔVBE)/dT≈0.1815mV/K。解出来K≈8.98。此时室温下VBE大约0.58V到0.65V(取决于工艺和电流密度),ΔVBE=VT·ln8≈53.8mV,于是VREF≈0.6+9×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/I=50mV/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会产生一个差值ΔVGS=n·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μA,bandgap只分到1.2%。
12nA听起来不可思议,但拆解一下就清楚了:核心PTAT电流取5nA,CTAT支路取4nA,剩下3nA给偏置和启动电路。在这个预算下,任何传统用运放的结构都不现实,因为一个静态电流3nA的运放,其增益可能只有40dB,钳位精度根本不够。最终我们转向了亚阈值MOS-based结构,不用运放,用电流镜直接做电压相加。
5.2 核心架构与手算初值
结构上我们采用了两组NMOS差分对加PMOS电流镜的电流模式叠加方案。核心是两个NMOS管M1和M2,尺寸比设为1:16,工作在亚阈值区,同一支路电流由PMOS电流镜1:1镜像。这时M1与M2的VGS差就是ΔVGS=n·VT·ln(16)。取n=1.4,室温300K下VT≈25.85mV,ln16≈2.77,算出来ΔVGS≈100mV。
再看CTAT侧:NMOS的VGS本身就是负温系数,典型工艺下VTH的温度系数约-0.6mV/K,亚阈值项里还藏着一个和温度相关的μ·VT²项,综合起来我们仿真提取的dVGS/dT大约-0.7mV/K。配平系数K=0.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开始就已经定好了。