2、低功耗设计基础:功耗的构成
做低功耗设计,首先得搞清楚一件事——功耗到底从哪来的?
我刚开始做嵌入式那会儿,总觉得功耗就是个“电压乘电流”的事。后来被现实狠狠教育了一回:一块电池,明明算好了能用三个月,结果两周就趴窝了。拆开一测,静态电流比预期大了整整一个数量级。嗯,从那以后我才真正开始研究功耗的构成。
说白了,芯片的功耗就三部分:动态功耗、静态功耗、短路功耗。咱们一个一个说。
2.1 动态功耗
动态功耗,也叫开关功耗。芯片在工作时,门电路不停地翻转——从0变1,再从1变0。每一次翻转,都要给负载电容充放电。这个充放电的过程,就是动态功耗的来源。
公式很简单:
P_dynamic = α × C_load × V² × f
其中:
- α —— 翻转因子(0到1之间,表示平均每个时钟周期翻转的概率)
- C_load —— 负载电容
- V —— 工作电压
- f —— 工作频率
你注意看,电压是平方项。这意味着什么?电压降一半,动态功耗降到四分之一。我在项目中遇到过一块POS机主控,原本跑3.3V,后来降到1.8V,功耗直接砍掉70%。代价是什么?频率得降,不然时序跑不过。
核心结论:降低电压是降动态功耗最狠的手段,没有之一。
2.2 静态功耗
静态功耗,也叫漏电流功耗。芯片不干活的时候,电流还在漏。你想想看,晶体管关断了,理论上应该没电流。但现实不是这样的——亚阈值漏电、栅极漏电、衬底漏电,各种漏。
公式:
P_static = I_leak × V
I_leak 就是漏电流。这个值跟工艺强相关。90nm以上的工艺,静态功耗基本可以忽略。但到了28nm、14nm,静态功耗能占到总功耗的30%甚至更多。
我记得有一次做一款手持POS机,待机时功耗怎么也降不下去。查了半天,发现是某个外设的IO口没配置成高阻态,漏电流大了几十微安。你想想看,几十微安在待机状态下,那就是几天的续航差距。
避坑指南:我曾经因为漏电流吃过一次大亏。一块电池供电的POS机,待机功耗标称10μA,实际测出来50μA。最后发现是MCU的GPIO悬空了,漏电。所以,不用的引脚一定要处理——要么拉高,要么拉低,要么设成输入带上拉。
2.3 短路功耗
短路功耗,也叫穿通功耗。门电路翻转的瞬间,PMOS和NMOS会同时导通一小段时间。这时候,电源到地之间就形成了一条短路路径,电流直接穿过去。
公式:
P_short = I_short × V × t_sc × f
其中:
- I_short —— 短路电流峰值
- t_sc —— 同时导通的时间
- f —— 翻转频率
短路功耗在总功耗里占比不大,一般不到10%。但在高频设计中,它就不能忽视了。我见过一个案例,某款芯片频率跑到200MHz以上,短路功耗直接翻倍,因为翻转时间太短,PMOS和NMOS同时导通的时间占比变大了。
小技巧:降低短路功耗,最直接的办法是优化信号上升/下降时间。太慢的边沿会延长同时导通时间。所以,别为了省电把驱动能力设得太弱——过犹不及。
2.4 总功耗公式
把三部分加起来:
P_total = P_dynamic + P_static + P_short
= α × C_load × V² × f + I_leak × V + I_short × V × t_sc × f
这个公式,你最好记在心里。每次做低功耗设计的时候,拿出来对照一下,看看自己到底在哪个环节上能省电。
| 功耗类型 | 主要影响因素 | 占比趋势 | 降功耗手段 |
|---|---|---|---|
| 动态功耗 | 电压、频率、负载电容 | 高频时占比大 | 降电压、降频率、减少翻转 |
| 静态功耗 | 工艺、温度、漏电流 | 先进工艺占比大 | 电源关断、低功耗模式 |
| 短路功耗 | 边沿时间、频率 | 占比小但不可忽略 | 优化驱动强度、控制边沿 |
2.5 低功耗设计的核心思想
讲完了功耗构成,咱们聊聊核心思想。说白了就四个字:按需供电。
你想想看,POS机大部分时间在干嘛?待机。只有刷卡、打印小票的时候才全速跑。那为什么要在待机时给全系统供电?没必要嘛。
核心思想可以拆成三条:
- 能不跑就不跑 —— 关掉不需要的模块。比如待机时关掉显示屏、关掉打印机驱动、关掉无线模块。
- 能慢跑就慢跑 —— 降低频率和电压。比如后台轮询任务,跑1MHz就够了,没必要跑100MHz。
- 能省就省 —— 选低功耗器件、优化电路设计、减少不必要的翻转。
我个人的设计习惯:拿到一个项目,先画功耗预算表。每个模块的峰值功耗、平均功耗、待机功耗,全列出来。然后看哪个模块是“电老虎”,重点优化。这个习惯帮我避了不少坑。
举个例子。我之前做的一款POS机,打印头驱动电路功耗占了40%。后来发现,打印头预热时间太长,每次打印前都要预热3秒。优化方案是什么?提前预热。用户按下“打印”按钮之前,系统检测到用户正在操作,提前把打印头预热好。这样用户感觉不到延迟,功耗还降了15%。
嗯,这就是低功耗设计的精髓——不是一味地省,而是聪明地省。
总结一下:功耗三兄弟——动态、静态、短路。降功耗的核心是按需供电。记住这个,后面的章节就好理解了。