第3章:需求分析总览:需求分析在低功耗设计流程中的位置,从规格到实现的桥梁

说实话,很多工程师一上来就喜欢谈「低功耗技术」——什么时钟门控、电源域划分、DVFS……这些当然重要。但我做了十几年低功耗设计,踩过最大的坑,往往不是技术选型,而是需求没搞清楚。

你想想看,一个产品从概念到量产,中间要经过多少环节?需求分析就是那个「定调子」的阶段。调子定歪了,后面再怎么优化,也是事倍功半。

3.1 低功耗设计流程全景图

先给你一张全景图,看看需求分析到底站在哪个位置。

阶段 主要活动 输出物 低功耗关注点
1. 市场/产品定义 竞品分析、用户场景定义 产品需求文档(PRD) 电池容量、续航目标、使用模式
2. 系统需求分析 功能分解、性能指标、功耗预算 系统需求规格(SRS) 功耗预算表、工作模式定义
3. 架构设计 模块划分、接口定义、功耗策略 架构设计文档 电源域划分、时钟方案、电压域
4. 详细设计 RTL编码、电路设计、软件实现 设计文档、代码 门控实现、状态机优化
5. 验证与测试 功能验证、功耗仿真、实测 验证报告、测试报告 功耗仿真用例、实测对比
6. 量产与维护 良率分析、现场问题修复 量产报告、维护记录 功耗异常分析、OTA优化

看到了吧?需求分析处于第2阶段,它一头连着产品定义,一头牵着架构设计。说白了,它就是那个「翻译官」——把市场部的「续航要长」翻译成工程师能懂的「待机电流小于10μA」。

核心观点:需求分析不是「写文档」,而是「建模型」。这个模型要能回答三个问题:

  • 系统在什么场景下工作?
  • 每个场景的功耗上限是多少?
  • 功耗和性能之间怎么取舍?

3.2 为什么需求分析是低功耗的「命门」?

我遇到过不少团队,上来就拍脑袋定功耗指标。比如「待机电流小于50μA」,听起来挺严格。但实际做起来才发现——这个50μA到底是在什么条件下测的?室温?高温?有没有考虑电池老化?

嗯,这里要注意。需求分析不到位,后面就会出各种幺蛾子。

第一个坑:指标定义模糊。

我曾经接手过一个项目,客户说「功耗要低」。我问「多低?」他说「反正比竞品低就行」。这种需求,你根本没法做设计。后来我逼着他们签了份功耗预算表,每个模式、每个模块都写清楚。这才算把需求定下来。

第二个坑:场景遗漏。

你想想看,一个物联网设备,平时在睡觉,偶尔醒来发数据。但「偶尔」是多久一次?1分钟?1小时?1天?不同的频率,对功耗的要求天差地别。我见过一个团队,只考虑了「正常工作模式」的功耗,结果产品在「待机模式」下因为漏电太大,电池撑不过一周。

第三个坑:没有考虑边界条件。

低功耗设计最怕什么?最怕「极端情况」。比如温度升高时漏电会指数级增加,电池电压降低时效率会下降。这些在需求分析阶段如果不考虑,后面验证时才发现,那就得大改。

避坑指南:我曾经在一个可穿戴项目上,因为没定义「低温环境下的功耗要求」,结果产品在北方冬天户外使用时,电池续航直接腰斩。后来我们不得不在需求文档里加了一条:「-20°C环境下,待机电流不超过常温的1.5倍」。

3.3 需求分析的核心产出:功耗预算表

我个人习惯,在做需求分析时,一定会产出一张「功耗预算表」。这张表就是整个低功耗设计的「宪法」——所有后续设计都要以它为基准。

这张表长什么样?给你看个简化版:

工作模式 持续时间 平均电流 峰值电流 占比(时间) 备注
深度睡眠 23小时 5 μA 10 μA 95.8% RTC运行,SRAM保持
轻睡眠 30分钟 50 μA 100 μA 2.1% 传感器轮询
活跃模式 30分钟 5 mA 50 mA 2.1% 数据采集+处理
通信模式 1分钟 20 mA 100 mA 0.07% BLE发送
日均总功耗 24小时 ≈ 0.5 mAh - 100% 电池容量需≥15 mAh(30天)

这张表的价值在哪?它把模糊的「续航要长」变成了具体的数字。每个模式、每个模块的功耗上限都清清楚楚。架构师拿到这张表,就知道该用多大的电池、该划分几个电源域、该选什么工艺。

小技巧:做功耗预算时,我建议留出20%的余量。为什么?因为实际测试时,总会有一些「意外功耗」——比如漏电、启动浪涌、温度影响。留点余量,后面设计时心里不慌。

3.4 从需求到实现的桥梁:场景分解

有了功耗预算表,下一步就是「场景分解」。说白了,就是把用户的使用场景,拆解成系统的工作模式。

举个例子。一个智能门锁,用户的使用场景可能是这样的:

  1. 日常待机:门锁关着,没人靠近。系统进入深度睡眠,只保留指纹传感器和蓝牙的唤醒电路。
  2. 靠近唤醒:有人靠近门锁,红外传感器检测到人体,唤醒主控。主控启动指纹传感器,准备验证。
  3. 指纹验证:用户按下指纹,主控进行比对。比对成功,驱动电机开锁。
  4. 开锁完成:门打开,系统再次进入深度睡眠。

你看,一个简单的「开门」动作,被分解成了4个阶段。每个阶段的功耗需求都不一样。需求分析要做的,就是把这些场景「翻译」成系统状态机。

我习惯用一张状态图来描述:

状态机示例(伪代码):
State: DEEP_SLEEP
    - 功耗: 5 μA
    - 唤醒源: 红外传感器中断
    - 进入条件: 无活动超过30秒

State: WAKE_UP
    - 功耗: 500 μA (持续100ms)
    - 动作: 启动主控、初始化传感器
    - 进入条件: 红外传感器触发

State: AUTHENTICATE
    - 功耗: 5 mA (持续200ms)
    - 动作: 指纹采集、比对
    - 进入条件: 用户按下指纹

State: UNLOCK
    - 功耗: 50 mA (持续500ms)
    - 动作: 驱动电机
    - 进入条件: 指纹比对成功

有了这个状态机,硬件工程师就知道每个模块什么时候该开、什么时候该关。软件工程师也知道什么时候该进低功耗模式、什么时候该唤醒。这就是「从规格到实现的桥梁」。

3.5 需求分析中常见的「隐形陷阱」

做需求分析这么多年,我总结了几条「隐形陷阱」,你写需求时一定要小心:

  • 陷阱1:只关注「平均功耗」,忽略「峰值功耗」。峰值功耗虽然时间短,但会影响电源设计、电池内阻、甚至EMC。我见过一个产品,平均功耗只有1mA,但峰值电流达到500mA,结果电池电压瞬间跌落,系统复位了。
  • 陷阱2:忽略「启动功耗」。很多设备在启动瞬间会有浪涌电流,可能是正常工作电流的10倍。如果需求里没写,电源设计可能扛不住。
  • 陷阱3:把「理想情况」当「典型情况」。比如蓝牙通信,理想情况下1秒发一次数据。但实际场景中,可能有重传、有干扰、有信号弱的情况。这些都要在需求里考虑。

我曾经踩过的坑:有个项目,需求里写「待机功耗小于10μA」。我们设计时按10μA算的,结果量产后发现,有部分设备在高温高湿环境下待机功耗飙到了30μA。后来一查,是PCB漏电和芯片漏电叠加了。从那以后,我要求所有需求文档里必须加上「环境条件」这一栏——温度、湿度、电压范围,一个都不能少。

3.6 小结:需求分析到底要做什么?

说了这么多,总结一下。需求分析在低功耗设计流程中,就是那个「承上启下」的角色。它要做三件事:

  1. 把模糊的需求变成具体的数字——比如「续航长」变成「待机5μA,活跃5mA」。
  2. 把用户场景变成系统状态机——每个场景对应什么模式、什么功耗。
  3. 把边界条件写清楚——温度、电压、工艺偏差,一个都不能漏。

你想想看,如果这一步做扎实了,后面的架构设计、详细设计、验证测试,都会顺风顺水。反过来,如果这一步糊弄过去,后面就是无穷无尽的「改改改」。

我个人习惯,每次开始一个新项目,第一件事就是拉上产品经理、硬件工程师、软件工程师,一起过一遍功耗预算表。哪怕花上一周时间,也值得。因为——

「需求分析省下的时间,最终都会在验证阶段加倍还回来。」

嗯,这句话是我自己总结的,但每次想起来都觉得特别对。