首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
数字电路
» 让微控制器性能发挥极限的方法
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
让微控制器性能发挥极限的方法
发短消息
加为好友
520503
当前离线
UID
872339
帖子
13270
精华
0
积分
6635
阅读权限
90
在线时间
361 小时
注册时间
2012-3-2
最后登录
2016-3-10
论坛元老
UID
872339
1
#
打印
字体大小:
t
T
520503
发表于 2014-1-18 14:44
|
只看该作者
让微控制器性能发挥极限的方法
控制器
,
极限
关键字:
功率管理
CPU
嵌入式
如今
微控制器
需要执行广大范围的任务,包括管理实时控制算法、解码高速通信协定,以及处理高频
传感器
发出的信号。轮询方法(如检查端口以确定新数据是否经已到达)会消耗过多的CPU周期,而且对可靠服务I/O与外设的最大响应时间也往往太长。对于大多数
嵌入式
应用而言,开发人员以中断来满足对外设管理的实时要求。但中断只能够确定实时事件何时发生,开发人员仍然必须在数据丢失之前让CPU直接参与读取I/O和外设。处理一个中断可能需要同时中断其它对延时敏感的任务,带来任务转换支出,并引发一系列棘手问题,诸如如何管理多个中断同时发生时的延时,所有这些都会降低系统可预测性和
处理器
的效率。
微控制器要想处理实时I/O和外设的高数据速率和频率,便必须拥有更高的处理效率。但这个效率不能通过提高时钟频率来获得(因为需要更大功耗),而是要通过微控制器架构的内部改进来实现。实际上,微控制器已经开始集成用来卸载特殊任务模块的协处理器、可加快无惩罚型(penalty-free)内存访问速度的多信道DMA控制器,以及能在内部子系统之间发送信号以卸载I/O和外设管理任务的集成式事件系统。
卸载CPU任务还有很多方法
集成式协处理器在
嵌入式
微控制器中已获得相当广泛的应用,其中比较常见的协处理器是加密和TCP/IP卸载引擎。协处理器可高效卸载整个任务,或帮助执行复杂算法中的密集计算部分。例如,一个加密引擎可以把CPU上的AES计算任务从每次运算数千个周期缩减为数百个周期,而一个TCP/IP卸载引擎可以极小的CPU运行支出来终止一个以太网连接。此外,卸载引擎还能简化这些任务的实现过程,使开发人员无需编写扩充代码,便可以通过使用简单的API来加入先进的功能。
DMA和事件系统技术对开发人员来说是比较陌生的,因此并不常使用。DMA控制器通过执行数据访问(如在后台执行外设寄存器到内部或外部SRAM的数据访问),从CPU卸载数据移动管理任务。例如,开发人员可以配置DMA控制器,把一个数据块预载入片上RAM中,这样在CPU需要它之前就可以快速访问,从而消除了等待状态和相关延时。另外,DMA控制器还能够承担通信外设管理的大部分工作(见表1)。
表1 DMA控制器能够承担通信外设管理的大部分工作
利用DMA控制器所节省的周期数可以十分可观:许多嵌入式开发人员都已发现自己无法以有限的微控制器资源来满足应用的需求,直到认识了DMA,才突然明白原来还有大量额外的周期可用,数目有时甚至多达整个系统的30%到50%左右。许多开发人员都是在遇到处理方面的困难时,才首次发现这种未开发的潜力,尽管实际上这种潜力从一开始就可以使用。
熟知事件系统(event system)的开发人员就更少了。事件系统与DMA制器协同工作,可进一步减少CPU周期的负担,并降低总体功耗。事件系统是一条总线,能够将从微控制器上的一个外设发出的内部信号连接到另一个外设。当有事件在外设上发生时,它就可以在一个双周期的延时内触发其它外设采取行动,整个过程无需CPU参与,就和人体在手碰到火时无需大脑命令就自然做出反射动作的把手抽出来一样。
更确切地说,事件系统利用一个连接了CPU、数据总线和DMA控制器的专用网络在整个微控制器上进行信号路由(见图1)。在正常情况下,外设必须中断CPU来激活某个行动,包括读取外设本身。而事件系统通过直接在外设之间发送相关事件,便可有效地使CPU摆脱这些中断所带来的负担。开发人员可以灵活配置外设来使用不同的事件通道,从而定义特定的事件路由,以满足应用的某些需求。
图1 一个事件系统
灵活的卸载
DMA和事件系统配合工作,就可让开发人员卸载整个任务,这与协处理器的作用很类似,但两者间的关键区别是协处理器不是可编程的。协处理器采用硬件来执行一个已详细定义的任务,有时甚至是可配置的;而DMA控制器配合事件系统的可编程性使其适用于从最简单的到极复杂的各类任务。在采用DMA和事件系统的情况下,DMA负责管理整个微处理器架构上的数据传输;至于事件系统则控制这些低延时、高精度传输发生的时间。换言之,事件系统负责确保由DMA管理的数值在正确的时间/频率下被采样或输出。
图2所示为事件系统与DMA共同工作的原理模块示意图。ADC连接一个传感器,并会采集信号样本。内部计数器被设置为与采样频率相匹配,用以提供规律且精确的时间间隔。事件系统可以直接激活ADC的采样,而无需中断CPU,使采样频率比利用微控制器的时钟更为精确。当ADC停止并完成转换时,ADC便会触发DMA通过事件系统存储这些转换值。
图2 DMA控制器配合事件系统
事件管理可扩展为包含多个事件、连接多个外设的更复杂的配置。例如一个输入信号(事件1)可触发ADC采样(事件2),并把数值存储到DMA中(事件3),直到DMA缓冲器溢满(事件4)。在这种配置中,CPU只有在缓冲器数据溢满需要处理时才会被中断。
DMA控制器和事件系统还支持多通道,使开发人员能够配置一个与主CPU并行工作的互连结构,因此,可采用一种固定性方式来对多个并行实时任务进行协调。
固定性和延时
固定性在限制延时和管理实时嵌入式系统的响应性方面扮演着关键的角色。系统的固定性越高,它的响应性也就越稳定。影响固定性的主要因素在于系统必须同时处理的中断的数目。一般而言,系统里中断的数量愈大,愈容易破坏系统的固定性。
假设一个系统只有一个中断,并在50个周期内完成。这样一个中断的延时相应地在50个周期左右。要注意的是,即使最简单的中断,微控制器也需要约50个周期的时间来保存有限寄存器数目的环境信息,而且还需访问外设、保存数据、存储环境信息及清除管线。
然而,在固定性和延时方面,开发人员遇到的大多数问题并非处理单个中断这么简单,而是当众多中断同时发生时,应如何在即时满足所有要求。例如,如果有一个在75个周期内完成而优先权更高的中断进入系统,前一个中断的延时就会受到影响,因为它将被优先权更高的任务中断。这时,优先权较低之任务的延时便会变为50到125个周期。
当更多的中断出现时,优先权较低之中断的延时随固定性的下降而增加。一个50周期的任务可能多次被中断,并最终需要数百乃至数千个周期来完成。这一点十分重要,因为并非所有的中断都具有高优先权,一切都是相对性的。
固定性直接影响到响应性、可靠性和精度。当开发人员确切知道延时是50或500个周期,便可以在处理时可将之考虑在内。不过,如果延时介于50到500个周期之间,即便是最优秀的开发人员,所能做的也不过是假设一个典型延时(如200个周期)数值,然后把所有的偏离视为误差。此外,最坏的延时情况有可能出现在濒临实时期限的极值,威胁到系统的可靠性。
通过DMA控制器和事件系统来减少同时发生的中断(即便是低频中断),可以大大提高系统的固定性并减小延时,而更高的固定性还有助于精度等其它重要因素的提升。
如何获得更高的精度
下面以一个
电源
管理任务在驱动电机等大负载时实现交流电源效率的最大化为例,来说明固定性如何影响精度。因为大部分可用能量都在电压处于峰值并与电流同相时供应,所以这时系统的电流消耗量应该最大。反之,电压越接近零(即过零点),可用电能就越少,而效率也越低。利用功率因数校正(PFC),通过接入和断开大电容,调节负载保持交流电流和电压同相,便可以提高功效。
比较器一般用于过零检测,当电压下降至设定阈值以下或上升至阈值以上时,比较器便会接通。相对于使用比较器触发中断并驱使CPU开关电容的情况,事件系统可以把比较器事件直接发送到定时器/计数器输出,无需CPU干预即可控制开关。
低优先权任务(如PFC)的中断延时可能需要数千个周期,而具体延时取决于有多少个优先权更高的中断同时发生。延时较大意味着电容会晚于最佳时刻开关,这会显着降低总体效率。相比之下,事件路由的延时最多两个周期。
当把上面的数字跟微控制器的时钟频率一同考虑时,便会发现如果微控制器的时钟频率为32MHz,一个双周期延时所引入的误差其实微不足道(2/32M);而数千个周期的延时则可能大大影响高频任务(它们本身也需要每隔数千周期才会被处理)的精度。值得注意的是,若中断是由优先权较高的任务发出的,该延时可能降至50个周期左右。不过,这样一来会导致根据精度要求而不是根据系统功能的重要性来分配优先权,而且这只是把缺乏固定性引起的误差转移给了其它任务而已。
更高的精度在产生信号时也起着关键的作用,这里所指的并非单纯的信号采样。以创建100kHz波形为例,利用中断,波形的精度将受相对于信号速率的可变延时的影响,并根据任务切换和已堆积的其它中断数量而变得稍慢或稍快。注意,当波形平均而言准确时,在许多情况下,影响只来自是两个连续样本之间的相对差异。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议