1. 功耗基础概念:动态功耗与静态功耗

做嵌入式低功耗设计这么多年,我越来越觉得——功耗这件事,说白了就是「电都去哪儿了」。你想想看,一块电池就那么大,系统跑着跑着发热、掉电快,总得有个说法。

CMOS 电路里的功耗,归根结底就两大类:动态功耗和静态功耗。这两兄弟的脾气完全不同,咱们一个一个聊。

1.1 动态功耗:干活时候的消耗

动态功耗,就是电路在「干活」时消耗的能量。比如 CPU 在跑代码、外设在传数据,这时候电流在跳来跳去,功耗自然就上去了。

动态功耗又分两部分:

  • 开关功耗(Switching Power):信号从 0 变 1、从 1 变 0 时,给负载电容充放电消耗的能量。这是大头。
  • 短路功耗(Short-Circuit Power):信号翻转的瞬间,PMOS 和 NMOS 同时导通,形成短暂的电源到地通路。虽然时间短,但频率高了也不容忽视。

公式很简单,但很实用:

P_dynamic = α × C_load × V² × f

其中:

  • α:翻转因子(0~1),表示每个时钟周期信号翻转的概率
  • C_load:负载电容
  • V:供电电压
  • f:工作频率

关键结论:动态功耗与电压的平方成正比,与频率成正比。所以降电压比降频率更划算——电压降一半,功耗降到四分之一。

我在一个 IoT 传感器项目里遇到过这种情况:MCU 跑 48MHz 时功耗 12mA,降到 24MHz 只省了 3mA,但把电压从 3.3V 降到 1.8V,功耗直接砍了一半多。嗯,从那以后我调功耗总是先看电压。

1.2 静态功耗:躺着也在耗电

静态功耗,就是电路「啥也不干」的时候还在漏电。你想想看,手机待机一晚上掉 10% 的电,多半就是静态功耗在作怪。

静态功耗主要来自几个漏电路径:

漏电类型 来源 特点
亚阈值漏电 MOS 管关不彻底,沟道仍有微弱电流 温度每升 10°C,漏电翻倍
栅极漏电 栅氧化层太薄,电子直接隧穿 工艺越先进越严重
PN 结漏电 源/漏与衬底之间的反向偏置漏电 高温下明显

静态功耗的公式:

P_static = I_leak × V

I_leak 就是总漏电流。别看单个漏电很小,芯片里几亿个晶体管加起来,那数字就吓人了。

我曾经踩过一个坑:一款低功耗蓝牙芯片,常温待机 3μA,数据手册写得漂漂亮亮。结果产品发到北方冬天用没问题,夏天发到海南,待机电流飙到 15μA,电池撑不到一周。后来一查,就是亚阈值漏电随温度暴涨。从那以后,我所有低功耗项目都要做高温漏电测试。

1.3 CMOS 电路功耗来源全景

把上面说的画成一张图,就清楚了:

CMOS 电路功耗来源全景图 CMOS 总功耗 动态功耗 静态功耗 开关功耗 短路功耗 亚阈值漏电 栅极漏电 PN结漏电 核心公式 动态功耗:P_dynamic = α × C_load × V² × f 静态功耗:P_static = I_leak × V 总功耗 = 动态功耗 + 静态功耗

1.4 功耗与电压、频率的关系

这部分是调优的核心,我建议你把它刻在脑子里。

电压 vs 功耗

从公式 P_dynamic ∝ V² 就能看出来,电压是功耗的「放大器」。降 10% 电压,动态功耗降 19%;降 20% 电压,功耗降 36%。

但电压不能无限降——每个工艺节点都有最低工作电压(Vmin),低于这个值,电路逻辑就乱了。我在一个项目里试过把 1.8V 降到 1.6V,系统跑着跑着随机死机,查了三天才发现是时序不满足。

频率 vs 功耗

频率和功耗是线性关系。频率翻倍,动态功耗翻倍。但频率降太多,任务跑不完,反而要更长时间处于活跃状态,总能耗不一定省。

我的经验:调功耗时先看电压能不能降,再看频率能不能降。电压降到底了,再用动态频率调节(DVFS)按需跑。别一上来就降频,那是新手干的事。

电压与频率的耦合

电压和频率不是独立的。频率越高,需要的电压也越高——这叫「频率-电压拐点」。你想想看,电路跑得快,信号翻转时间短,电压不够的话信号建立不起来。

工作模式 电压 频率 典型场景
高性能 1.2V 400MHz 音视频处理
均衡 1.0V 200MHz 日常任务
低功耗 0.9V 50MHz 待机监听
休眠 0.7V(保持) 关闭 深度睡眠

这张表是我做 DVFS 调优时常用的配置。每个芯片的拐点不一样,得实测。我习惯用线性稳压器配合 PMIC 做动态调压,效率比固定电压高不少。

1.5 小结

功耗调优说白了就是跟电压、频率、漏电这三兄弟打交道。动态功耗靠降电压和频率来压,静态功耗靠关电源和选低漏电工艺来控。后面咱们讲休眠唤醒的时候,你会发现——休眠的本质,就是把动态功耗降到零,同时把静态功耗压到最低。

嗯,这一章先到这儿。记住公式,记住那张图,后面实战的时候你会反复用到它们。