浅谈让微控制器性能发挥极限的方法
平均而言准确时,在许多情况下,影响只来自是两个连续样本之间的相对差异。
高频信号处理
在大量嵌入式应用中,信号产生成为了一个越来越普遍的任务。信号用于产生声音、管理电压转换调节器、控制工业应用中的致动器,以及实现无数其它功能。
对于发生频率较高的事件而言,CPU负荷是一大考虑因素。以一个流量计多轴定位系统或一个拥有每秒采集200万个样本采样速度的快速精确测量能力的仪表系统为例,单是采集样本,每秒便消耗了数十到数亿个周期。而若采用一个事件系统和DMA控制器,所有这些周期都可从CPU卸载,而且这些样本还会被实际处理,而不是简单地缓存。即使只是一个仅需要50个周期来完成、需要任务切换支出的简单任务,也能够从CPU卸载一亿个周期。
对于频率较高的任务,事件系统和DMA控制器还能够实现以下事项:
精确的时间戳((time-stamping):为采样加上时间戳让开发人员能够使信号更好地与外部事件同步。在双周期延时的情况下,时间戳远比标注中断更精确,并可省去后者达数千个周期的延时。
过度采样:提高传感器分辨率的其中一个方法是过度采样。譬如,把计数器除以16,可以使采样样本数目增加到16倍,从而提高传感器的总体精度。由于CPU没有直接参与样本的采集和存储,故有可能出现过度采样,而无太多惩罚。
动态频率:某些应用只在某些时间或特定工作条件下才需要较高的感测精度。例如,水表在水流速度快速变化时,采样频率会较高;而在流量被切断或流速稳定时,又回复正常频率。
降低堆栈大小:减少并行中断数目的另一个好处是能够维持较小的堆栈。由于每一个中断都必须通过在堆栈中增加数十个寄存器来执行环境信息保存,因此消除了好几个环境保存层,显着减低所需堆栈的大小,这将让应用能够使用更少的RAM存储器。
抗扩展能力:鉴于不同微控制器支持的外设数目不同,同一应用的中断数目可能随产品价格而各有不同。即便使用同一个微控制器系列,支持更多功能的较高端系统会有更多的中断,降低了总体固定性。因此,把设计移植到集成度更高的微控制器,可能会影响信号延时乃至采样和输出的精度。
实现简易软件改变:由于事件处理减少了CPU干预,所以系统可在不会影响实时响应的情况下实现软件改变。即便需要更多的CPU时间来处理额外的功能,事件处理和响应时间也将完全相同。
自主控制
一个嵌入式微控制器可能要执行无数个任务来降低功耗、提高精度以及改善用户体验,而许多这类任务只不过是监控或是检测单个数值。例如电池监控器进行监测,直至电压降至某个数值以下。然后,系统就触发关断操作,在仍有足够电量时保存应用数据。
提升用户体验常常是许多消费类产品的主要卖点。例如,事件系统能够加快系统对唤醒按键或外设输入的响应速度,在两个周期内就可以做出反应。如果与采用中断的响应性比较,由于中断需要系统返回到工作模式,因此就降低了能效。
若利用中断,对于CPU处理能力而言,执行这类任务的成本太高,而且会增加延时,降低固定性。而采用事件系统和DMA控制器,开发人员就能够避免CPU执行这些功能。这不仅可减少系统必须管理的中断数量,而且还能简化任务的实现和管理。
例如,在一个在特殊工作条件下向用户发出警示信息的应用中,预先设置的声音文件可以存储在缓存中,再利用DMA通过适当的外设馈入到扬声器,而利用定时器,事件系统就可以确保44,056KHz的准确数据率。此外还有一个额外的好处,因为频率准确且稳定,声音保真度也得以提高。从性能角度来看,只要配置了DMA和事件系统。
说这些任务变得更“自由”可能显得有点夸张。不过,以这种方式执行这些任务,的确使其能够适用于更宽范围的应用。协处理器、DMA控制器和事件系统的结合能够释放控制器,让它只进行信号处理,而不必把大部分资源消耗在信号的周期密集型采集工作上。这样一来,就可以利用单个控制器管理多个高频任务。这也简化了系统设计,使用户能够以更低的成本在单个微控制器上执行更多任务,更容易实现多个信号之间的互连性,并提高能效。
对许多应用来说,能否支持多个任务可成为一项重要的产品差异化指标。例如,采用了DMA控制器和事件系统的电机控制应用,就能够使微控制器释放出足够的资源,使开发人员能够以在不增加系统材料成本的条件下实现PFC等先进功能。
除了通过卸载中断来提高微控制器的性能和能力之外,事件系统还能够把功耗最低降至1/7(具体数字取决于应用)。表2所示为一个需要每秒120万周期的应用的功率相关数据。在12MHz时,微控制器只有10%的时间在工作模式下,其余
- RS-485的节点和距离的理论极限(09-12)
- 让微控制器性能发挥极限的方法(01-17)
- TI 全新TMS320C66x 定点与浮点DSP内核成功挑战速度极限(08-18)
- 基于FPGA的DSP设计方法(08-26)
- 专家指导:Linux操作系统密码恢复方法(05-16)
- 基于多核DSP Bootload代码加载方法研究(01-16)