利用事件系统和DMA来实现超快响应时间和极低功耗
随着嵌入式系统与外围环境的响应越来越多,嵌入式系统是"控制、监视或者辅助装置、机器和设备运行的装置"(devices used to control, monitor, or assist the operatiON of equipment, machinery or plants)。从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。微控制器(Microcontroller Unit,即MCU)可从不同方面进行分类:根据数据总线宽度可分为8位、16位和32位机;根据存储器结构可分为Harvard结构和Von Neumann结构;根据内嵌程序存储器的类别可分为OTP、掩膜、EPROM/EEPROM和闪存Flash;根据指令结构又可分为CISC(Complex Instruction Set Computer)和RISC(Reduced Instruction Set Computer)微控制器。
一般来说,CPU负责处理中断和移动数据。在某些应用中,CPU的大多数时间都花费在这些活动上。要应对这些额外的计算负荷,就必须提高CPU时钟速率,因而相应地增加了功耗。在极端情况下,还必须把设计从8/16位器件转换成32位器件才能应付。
在多数情况下,一个外设上的信号除了要让另一个外设知道它有事要做外,两个外设间的联络却需要大量中断处理时间。CPU便会随之中断,并关断马达驱动电路的PWM输出。这个过程需要耗费数十个时钟周期,并需要另外的20~100个时钟周期来恢复关联。微控制器并没真正被用于任何需要其处理能力的事情,只是从模拟比较器向PWM输出传递了一个消息而已。
如果这些外设能够无需中断CPU而直接相互通信,每秒钟就可轻易节省数百万个时钟周期。8位微控制器不再适用于8位应用的一个原因,就是应用涉及的数据处理和中断处理太多,CPU的MIPS大都耗费在这些活动上。而外设和内存之间的传输数据更进一步地增加了MCU的负担。一个350kps的数据传输就要耗费22~25个CPU MIPS。
解决这个问题的一个方法是采用一个带8通道事件系统和直接内存访问(DMA)的低功耗8/16位单周期RISC MCU,让事件系统和DMA来为CPU分担这些工作。DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,他允许不同速度的硬件装置来沟通,而不需要依于 CPU 的大量 中断 负载。否则,CPU 需要从 来源 把每一片段的资料复制到 暂存器,然后把他们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。 DMA 传输重要地将一个内存区从一个装置复制到另外一个。当 CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器 来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。DMA 传输对于高效能 嵌入式系统 算法和网络是很重要的。
在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。
事件系统通过CPU数据总线和DMA控制器之外的一个专用网络传递外设信号。有了事件系统,当一个外设出现了状态变化,就会自动触发其它外设上的相应动作。在前述马达案例中,微控制器中的模拟比较器、定时器/计数器,I/O引脚或ADC可以在过流状况的两个时钟周期内,直接关断马达驱动电路的PWM输出,不需占用任何中断,也不耗费任何CPU时钟资源,就可以为马达提供更好的保护。
图1,带有事件系统总线的XMEGA微控制器:带有事件系统和DMA的MCU通过CPU数据总线和DMA之外的一个专用网络传递外设信号。这样做的好处是外设间信号通信变成可预见和无延迟,并减少了CPU周期时间和释放了中断资源。
图1,带有事件系统总线的XMEGA微控制器。
可以触发事件系统的外设事件包括:定时器/计数器比较匹配或溢出,模拟比较器触发,引脚状态变化,ADC完成或比较,以及实时计数器溢出。在其它外设中被触发的事件包括:ADC或 DAC转换,输入捕获以记录通信时间戳或ADC测量时间戳,外部频率或脉宽测量,产生定时器/计数器时钟信号,开始一个DMA交易,或改变一个引脚输出。
采用事件系统能够消除多个和/或频繁的中断触发造成的瓶颈,而且无需软件开销,关键任务可独立于CPU完成,而且也能大大降低功耗。一个没有事件系统的传统8位MCU要耗费16 MIPS才能完成响应马达过流信号关断PWM的动作。在16 MHz,1 MIPS/MHz,以及0.6 m
- flash接口电路的实现(07-18)
- RS485串行总线可靠性的研究(03-24)
- 掉电保护在嵌入式系统中的设计应用(01-05)
- 基于SEP0611的电源管理驱动设计方案(04-10)
- 基于FLASH介质嵌入式存储方案的设计与实现(04-20)
- 嵌入式应用的高度整合的USB微控制器解决方案(03-05)