当为你的下一个设计方案选择正确的核心处理器件时,你应该考虑哪些因素呢?本文将对MPU和MCU做些对比分析,并以此对器件的选择给出一些指导性建议和意见。
每当在为新设计选择正确合理的器件时,我们可能会有些茫然不知所措。这是需要做正确的平衡处理的事,包括价格,性能,功耗等方面的影响。当然,你可以为新设计着手考虑一些直接的技术方案,但是如果核心器件,无论是微控制器还是微处理器成为一系列新产品的基础平台,那么我们可能需要花长时间来做决定,到底是选MCU还是MPU。
首先,我们来看看MCU和MPU的主要差别。一个典型的MCU通常使用片内flash存储器来存储和执行程序代码。以这种方式存储程序意味着MCU有非常快的启动时间,上电能够快速执行代码,片内存储还有个优势是可以加密程序。使用片内存储方式唯一不足就是总存储空间受MCU本身所限。目前市场上绝大多数flash型MCU最大空间为2M字节,从各种应用上看,这证明了是一个限制因素。而MPU没有存储空间的限制,MPU使用外部存储器提供程序和数据空间。程序一般放在非易失性存储器如NAND或者串行Flash内,启动时,程序载入到外部DRAM中,然后开始执行。这意味着MPU没有MCU启动运行来的快,但MPU可扩展的外部DRAM和NVM容量能达到数百Mbytes,甚至上Gbytes。另一个不同是供电,一般MCU仅仅需要单电压供电,而MPU需要几路不同的电压分别给IO,内核,DDR等供电,开发者往往需要在电路板上设计附加的电源转换芯片。
从应用前景来看,设计规范的某些方面可能要求以特殊方式选择器件。例如,外设接口通道数需求超过了MCU能提供的怎么办?再比如,规格书规定了用户接口的容量,而MCU由于没有足够大的片内存储器或者达不到需要的性能,无法满足需求怎么办?当着手第一次设计,必须要知道的是有很大的可能性产品会有许多变更情况。如果那样的话,基于平台设计方法将是首选的设计方法,这将保证更充足的功耗和接口富余,以适应以后的功能升级。
选择难以决断的一个特征是任何所提供的设计都能满足所需要的处理性能。处理能力通常用DhrystoneMIPS(DMIPS)来量化,它是测量处理器运算能力最常见指标之一。例如,一颗基于ARMCortex-M4内核的AtmelSAM4系列MCU处理率为150DMIPS,而一颗ARMCortex-A5处理器MPU,如SAMA5D3能达到850DMIPS。一种估算DMIPS需求的方式是观察可能导致性能恶化的局部应用。运行一个完整的操作系统,如Linux,Android或者WindowsCE,对你的应用来说可能要求至少300-400DMIPS。对许多应用来说,能够满足RTOS并且有50DMIPS的足够宽裕即可。使用RTOS还有其他好处,只需要很少的存储空间,一般内核仅仅需要几KB到几十KB的容量。然而,为了运行完整的操作系统,需要一个内存管理单元(MMU),依次指定处理器内核的使用执行,这就要求更快的处理运算能力。对于运行大量数字运算的应用,额外的DMIPS需要保留给OS以及其他的通信和控制任务。所以,越是基于海量运算的应用,越应该考虑使用MPU来控制。
无论是针对消费电子还是工业自动化为目标的应用设计,用户界面(UI)都需要认真考虑。作为消费者,我们已经熟悉并乐于使用多彩色直观的用户图形界面。尽管操作员的操作环境多少会受限,但工业应用中已经越来越多使用这种需要操作员交互的方式。对于用户界面(UI),有许多要素。第一,处理运算额外的需求,如UI库Qt,普遍放在Linux顶部,需要额外的80-100DMIPS开销。第二,是和UI的复杂度相关,越是丰富多彩,富于变化的多媒体图像显示,就需要越快的处理能力和越多的内存,并且随着解析度的增加,这种需求成比例的增加,这也是为什么以UI为中心的设计更适合用MPU的原因。相反,低解析度的静态图像UI可以使用MCU寻址。另一个关键点是,MPU通常集成一个嵌入式TFTLCD控制器,这是很有用的。很少有MCU芯片有这个功能,所以需要添加额外的TFTLCD控制器和驱动元器件。即使一些MCU嵌入了TFTLCD控制器来抢占市场,但仍需要足够大的SRAM来驱动显示。例如,QVGA320x240分辨率16bit色彩的屏幕需要150K字节的SRAM。对于SRAM来说这是相当大的容量,所以可能需要额外多的内存和器件。更加复杂先进的图形用户界面,特别是屏幕超过了4.3英寸,会明确规定使用MPU。所以,如果说在彩色TFT屏幕上运行用户图形界面是把MPU当做核心,那么分段点状矩阵LCD屏和其他带有串行接口的显示屏就以MCU为核心。
从连接性角度说,大多数MCU和MPU可以利用一切通用外设接口。但诸如USB2.0,以太网等高速通信外设接口通常只有MPU会配备,因为MPU更具有处理大量数据的能力。数据通信中是否有足够的通道和带宽是个关键问题。根据所用的通信协议,在使用第三方工具时应当检查代码空间的压缩问题。当应用需要高速连通性时候,特别是使用基于OS的堆栈,要求基于MPU来设计系统。
另一个决定使用MCU还是MPU的关键方面是根据应用系统的实时/确定性的行为。由于MCU处理器内核嵌入了flash,软件要么是RTOS要么是C,这决定了MCU在大多数即时性应用中将起一个至关重要的角色。
最后一点需要考虑的是功耗。虽然MPU有低功耗模式,但不会像典型MCU那样低。考虑到附加的硬件部分,MPU在使用低功耗模式时有更多的附加因素,这可能使系统变的更复杂。同样,MCU实际功耗大大低于MPU,低功耗模式中,SRAM和寄存器需要保持,这是要考虑的因素。显而易见,操作系统即时的从休眠模式中恢复运行和RAM直接相关。做出选择基于MCU还是MPU的决定牵涉到性能,容量,预算成本。一般而言,MCU趋向于低成本低功耗解决方案,MPU趋向于功能充足,高性能的场合。MCU趋向于在远程控制,消费电子,智能仪器仪表等低功耗应用上,这些应用强调电池的使用寿命,极少使用用户图形交互界面,MCU也使用在需要即时行为功能的场合。MPU则是基于操作系统的工业和消费应用的理想选择,这些应用通常有大量的计算,高速的互联性,或者强大用户图形交互界面。
选择一家可以提供高兼容性MCU和MPU产品的厂商,你能很容易移植,使软件代码的重复使用率最大,获得最好的投资回报。