嵌入式系统的性能取决于其硬件和软件能力。一个写得好的软件可以利用硬件的所有能力来最大化后者的性能。同样,软件设计再合理,低效的硬件也可能影响系统性能。
几十年来,传统嵌入式系统的结构一直没有改变。图1显示了典型嵌入式系统的框图。微控制器和微处理器位于系统的核心。根据具体应用,系统设计人员可以根据需要删除接口和外设。如果控制器内部存储器不足,就需要使用闪存、SRAM、DRAM等外部存储器。一般来说,flash存储器用来存储控制器执行的代码,SRAM用来存储运行时的临时变量和重要的应用数据块。
图1:典型嵌入式系统的框图
无论是控制器还是外设,功耗和性能一直是选择系统组件的两个标准。如果性能是最重要的标准,设计人员倾向于选择最快的器件来弥补较高的功耗预算。同样,如果功耗是最重要的标准(例如,对于电池供电系统),设计人员倾向于选择功耗最低的器件。因此,嵌入式系统通常分为三类:
1.永远“开着”的系统:这种系统可以保证从不间断电源获得电能。这些系统是高性能系统,可以在最高工作频率下工作。
2.电池供电系统:车载电池是这种系统的唯一电源(如手机)。虽然性能是这类系统的重要标准,但更长的电池寿命才是最重要的。因此,这些系统使用功耗最低的组件。
3.电池供电系统:这种系统必须能够可靠地运行,即使在车载电源中断的情况下。为了避免在断电时丢失重要数据,系统设计人员将提供一个小电池(通常为240mAh纽扣电池),为SRAM保留和其他功能提供备用电源,并维持实时时钟(RTC)。
在正常操作期间,电池支持的系统在可用电力下工作。根据存储器映射,它可以从闪存中提取代码,然后将结果存储在SRAM中。即使断电,存储这些数据也变得很重要。为了解决这个问题,SRAM连接到一个备用的板载电池。在正常操作期间,板载电源负责向系统供电;在电源故障的情况下,监控芯片会将SRAM的电源切换到板载电池,并将SRAM置于待机模式。有关电池供电系统实现技术的详细信息,请参考“电池供电SRAM的设计建议”。
图2显示了电池供电系统中SRAM的典型功耗。正常工作时,监控芯片使用板载电源。当电源关闭时,SRAM由监控芯片切换到板载电池并被禁用。只要电池充满电,系统就可以一直处于这种模式。一旦板载电源恢复,监控芯片将逐渐使用板载电源为SRAM供电。一般来说,这类芯片需要1ms-10ms才能完成这个过渡。在此期间,系统不会受到影响,因为控制器完成上电复位程序需要相同的时间。
图2:电池供电系统的功耗模式
当这样的系统被部署到现场时,维护它们是不方便的。事实上,这些系统在两三年内都不需要维护。因此,电池寿命变得非常重要。系统设计人员倾向于选择待机模式下功耗最低的SRAM。如果你看看市面上卖的SRAM(见表1),你会发现设计师在选择SRAM的时候并没有太多的选择。对更长电池寿命的需求使得他们几乎不可能选择高速SRAM。配备240mAH纽扣电池的16Mb高速SRAM只能提供12小时的电池寿命,而低功率SRAM可以提供长达3年的电池寿命。
表1: SRAM 16mb SRAM产品组合
系统的所有性能都服从阿姆达尔定律。简而言之,阿姆达尔定律表明,系统的速度是其最慢组件的速度。在过去的几十年里,微控制器制造商已经推出了运行速度高于150MHz的控制器。其中许多控制器都内置了低功耗和/或深度睡眠模式,当系统需要电池供电时,它们可以实现更快的运行速度和更低的功耗。
但是,如果外围组件无法匹配其速度,更快的控制器也无法提高其性能。外部存储器接口是一个重要的高速链路,低性能的闪存或SRAM可能会成为瓶颈。闪存的初始访问时间为60-80ns。但随着Page、Burst、eXecuteInPlace(XIP)等各种模式的出现,闪存芯片的读取速度提高了3倍,使得控制器可以在20-30ns内(即一个150MHz控制器的2-3个时钟周期)从闪存中读取数据。然而,选择低功耗SRAM意味着控制器仍然需要45-70ns来访问SRAM(4-10个时钟周期)。
为了理解这种性能选择的效果,我们可以想象一个在1ms内执行一段代码的系统,其中微控制器在70%的时间内执行代码,在剩余的30%时间内将结果(关键变量)存储在SRAM中。使用更快的处理器应该可以确保这个执行时间大大缩短。凭借其改进的操作模式,闪存可以达到这一速度,并将代码执行时间缩短三分之二(从700 us到230us)。但是选择低功耗的SRAM,意味着SRAM的访问速度并没有提高。理想情况下,这个系统的执行时间应该缩短300%(从1ms到330us),但由于使用了低功耗SRAM,执行时间只缩短了200%(从1ms到550us)。
对速度的需求
你开得越快,油耗就越高。这个简单的原理也适用于嵌入式系统,SRAM是汽车,电池寿命是里程。在上述场景中,系统设计者要么选择高速SRAM(访问时间为10ns)来提高系统性能,但牺牲电池寿命,要么选择低功耗SRAM,但牺牲系统性能。
存储器制造商发现市场上需要同时具有高速和低功耗的SRAM。除了常见的操作模式(工作和待机)之外,这些SRAM还具有称为“深度睡眠”的低功耗模式。深度睡眠模式由输入信号控制,置位后可以将器件置于深度睡眠模式。例如,与低功耗SRAM的45-55ns访问速度相比,Cypress的PowerSnooze SRAM提供了10ns的访问速度。功耗方面,其深度睡眠电流在10-20uA范围,而一个16M的高速SRAM待机电流高达30-40mA。表2比较了三种SRAM的速度、电流消耗和其他关键参数。
表2:三种SRAM的比较
:batterylifiscalculatedconsidering 240 mahcoincontbattery和typicalstandbycurrentconsumption
电池寿命的计算考虑了240毫安时纽扣电池和典型的电流消耗。
* *:batterylifeforpowersnoozesraacalculatedbyconsideringtypicaldeep-sleep current consumption
* *:PowersnoozesRAM电池寿命的计算考虑了典型的深度睡眠电流消耗值。
系统设计人员可以通过一个GPIO控制进入深度睡眠模式,或者使用监控芯片自动控制模式切换。对于GPIO控制,软件可以通过分析SRAM访问来利用其深度睡眠模式。有关接口要求的更多详细信息,请参见“异步SRAM节能”。
电池支持的低功耗SRAM
电池后备存储器需要额外的电路源于这样一个事实,即当电源被切断时,控制器将失去其I/O驱动功能。这将导致信号线上出现中间逻辑电平,通过板上电容和泄漏逐渐放电至低电压。失去控制意味着即使SRAM开始由电池供电,芯片使能信号也将变为逻辑低状态,从而使能SRAM。为了避免这个问题,系统设计者使用监控芯片来监控板载电源并控制SRAM芯片的使能信号。
图3详细描述了SRAM、处理器接口和监控芯片。所有地址和数据线以及控制信号都由处理器驱动。SRAM的主低电平芯片使能信号由监控芯片驱动,监控芯片由来自控制器的芯片使能信号驱动。正常工作期间(即当板载电源可用时),监控芯片对控制器和SRAM完全透明。但当断电时,监控芯片会接管芯片使能信号对SRAM的控制,使其变为逻辑高状态,而忽略控制器的芯片使能信号。这种监控芯片将板载电源无缝切换到电池,并禁用SRAM,从而避免数据丢失。第二芯片使能信号为高电平有效信号,由控制器通过弱下拉直接驱动。这种弱下拉确保第二芯片使能信号在断电时被下拉到逻辑低状态,并禁用SRAM。
图3:电池供电的低功耗SRAM
对于断电时使用备用电池的应用,高速低功耗SRAM的低深度睡眠电流使其成为这些应用的理想选择。在正常工作期间,SRAM可以高速运行,但当电源关闭时,SRAM可以通过将深度睡眠信号置位为逻辑低状态来自动切换到深度睡眠模式。图4显示了如何在深度睡眠模式下使用SRAM,而不改变低功耗SRAM的现有设计。
断电时,监控器芯片禁用SRAM,deep sleep引脚上的下拉会自动将信号下拉至逻辑低电平状态,从而允许该器件进入深度睡眠模式。监控芯片确保当板载电源不可用时,SRAM始终被禁用。电源恢复后,监控芯片将保持SRAM禁用,直到上电复位超时。超时时间从1毫秒到100毫秒不等,取决于所选的监控芯片。超时周期允许控制器成功启动,之后它可以控制深度睡眠信号并将其变为逻辑高电平状态。这可以管理高速低功耗SRAM的深度睡眠退出时序,并使其可用于控制器访问。
图4:带高速低功耗SRAM的备用电池
高速、低功耗SRAM可以提供与传统低功耗SRAM相当的电池备份时间,同时可以通过提高SRAM的访问速度来满足系统设计者的性能提升要求。