低功耗嵌入式系统的设计考量:一般设计考量
最终设计的各种因素之间的权衡取舍。
同样,在为设计选择电容器时,应避免电解电容器,因为它们具有极高的漏电流。薄膜电容器和陶瓷电容器能以合理的成本提供超低的漏电流,可考虑用于低功耗系统设计。
d. 审慎使用I/O:
避免在系统中随机分配控制器I/O引脚。如果引脚随机分布在不同端口,则需要对每个端口单独处理,这样会增加控制它们所需的寄存器写入数。为解决这一问题,可以按最小端口数对输入引脚和输出引脚进行分组,从而实现以最小的寄存器写入数完成读取与写入。
在引脚用于驱动LED和其它类似负载的地方,应使用引脚的开漏驱动模式,这些负载的一端固定在VDD或接地上。这种驱动模式可降低通过I/O引脚的漏电流,因此可降低功耗。
e. 选择正确的外设:
在系统设计中应使用支持低功耗模式、在工作模式下支持低功耗的外设组件,以降低设计的总体功耗。
f. 审慎使用系统时钟:
定义系统时钟的行为有助于降低系统功耗。遵循通用系统时钟相关设计实践可帮助在几乎每个系统中实现低功耗。
● 在系统中使用低频率时钟降低动态功耗。
● 在执行计算密集型任务时提升系统时钟,可通过缩短完成任务的时间,降低平均功耗。
● 优先使用系统时钟,而非外部时钟。
● 在CPU等待通信传输完成时,应关闭CPU,只开启通信模块的时钟。在完成该任务后,它可获得一个中断信号,恢复代码执行。
g. 电流门控:
一般情况下,热敏电阻等无源传感器工作在分压器模式下,因此一直都在消耗系统电流。为降低这种情况下的功耗,我们可以在通过采样传感器网络获得相关数据之前为其提供电源,并在数据采样完成后切断电源。这在传感器需要定期读取的情况下才有用。
但当传感器必须保持工作状态才能检测环境中的异常现象时,CPU可在整个传感过程中保持低功耗模式。CPU一旦收到传感器的中断/数据信息,就会恢复工作模式。类似逻辑可用于读取开关状态,以判断它是处于开启还是关闭状态。
2. 固件考量:
a. 减少函数调用:
每次函数调用都将涉及多重冗余运算,比如堆栈上的添加与取出运算(用于重新加载程序的计数器和 寄存器)。这些运算的每一次工作都会耗用多个时钟周期,应尽量避免。对于简短函数而言,函数调用可采用能够布置内联代码的宏命令替换。这有助于减少CPU 加载,进而降低相同运算所需的功耗。然而,每种方法都有其自身的优缺点。宏命令需要更大的存储器,这对写入高密度固件来说是一个问题,因为它可能会增大系 统成本。
b. 为频繁重复的输入值使用查找表:
通常会有一部分输入值的使用频率大于其它输入值。通过创建与这些输入值对应的查找表,在遇到这些输入其中之一时,可缩短计算时间,进而可降低功耗。
这 种方法在当完成计算后需要查找值的应用中比较容易看到,比如电机应用中角度正弦与余弦的计算。在这类应用中,会有一系列频繁遇到的值(相比之下,其它值遇 到的频率较低)。正弦值或余弦值的计算需要较长的时间,因此对于该频繁重复的角度而言,其正弦及余弦的预计算值可存储在查找表中。每次遇到这些角度中的一 种时,处理器便可查找该表,用在此找到的值进行替代,不必计算。
c. 使用中断,无需轮询:
在 复杂的嵌入式系统中,CPU会花大部分时间来等待某项工作的完成,然后再进入下一个步骤。当前提供的大多数SoC都提供能在无需CPU干预的情况下完成大 多数任务的硬件模块。在需要CPU干预时,它们会以中断的方式发出信号,唤醒CPU。例如一般在采样数据完成后,ADC会发出中断信号。这样就无需轮询来 自ADC的数据。因此CPU可以进入低功耗模式,只在数据准备处理时唤醒。
d. 自适应时钟门控和电源门控
一 个典型的系统会使用微控制器的多个模块,但在任何给定时间点上,不会同时使用所有的模块。因此可以对这些模块的时钟进行门控,降低这些模块的动态功耗,从 而节省电源。此外,这也有助于降低峰值电流需求,这是钮扣电池供电设计的重要考虑因素。PSoC系列器件允许单独禁用未使用的模块。
这个部分我们讨论了创建低功耗嵌入式系统的常见设计考量。在第2部分中,我们不仅将讨论低功耗应用的实例、低功耗与系统性能的权衡取舍,而且还将提供使用上述技巧的低功耗系统设计实例。
- 单片机嵌入式系统在运程电网监测系统中的应用(05-13)
- 嵌入式测试为串行I/O提供真正的价值(05-26)
- 今天的绿色 POL DC/DC 转换器设计需要高效率和低 IQ(07-11)
- flash接口电路的实现(07-18)
- RS485串行总线可靠性的研究(03-24)
- 一种支持ISP的Flash在嵌入式设计中的应用(08-19)