基于ARM的CPU在MCU领域无处不在,通常有几个可从同一个MCU供应商处获得。每个ARM CPU都针对一类特定的处理要求进行了优化,从低端功耗约束应用到高功耗性能优化的双核应用。目前,MCU设备中最流行的ARM CPU似乎是Cortex CPU。您如何确定哪种ARM Cortex CPU适合您的应用?让我们通过查看示例实现来探索一些更受欢迎的基于Cortex的MCU之间的主要区别,这些示例实现将帮助您确定哪一个适合您的下一个设计。
许多选项
找到许多不同的东西并不罕见单个MCU系列中的ARM Cortex CPU。 Cortex CPU及其可选扩展可满足各种应用需求,但都具有向后兼容的指令集,如图1所示。从Cortex-M0/M0 +/M1系列开始,指令集针对通用目的数据处理和IO任务。 Cortex-M3 CPU增加了高级数据处理和位域操作指令,可加速更复杂的控制和通用计算任务。 Cortex-M4 CPU增加了数字信号处理(DSP)指令,并提供单指令多数据(SIMD)操作,其中相同的数据处理指令可以同时对多个数据源进行操作。这些专业功能可以极大地加速复杂的数据处理任务,如音频和视频应用程序中的任务。当性能和精度都是目标算法的重要元素时,Cortex-M4 CPU还可以添加浮点单元(FPU)。例如,模拟传感和电机控制通常使用浮点来实现精度,但快速控制环闭合需要高性能。
图1:ARM Cortex MCU指令集兼容性。 (由ARM和STMicroelectronics提供)
这种常规和向后兼容指令集的一个关键优势是MCU制造商可以创建针对特定应用进行优化的设备,同时如果算法增长,则通过向上兼容性“覆盖所有赌注”目标系统生命周期中的复杂性。例如,您需要多少次添加更复杂的功能才能满足开发过程中的新要求? Cortex指令集架构(ISA)的向上兼容性使这很容易。在某些情况下,也可以简化目标架构,因为向下兼容性可以降低成本,如果可接受的性能较低。
STMicroelectronics在其STM32 MCU系列中使用了多个ARM Cortex CPU。图2显示了各种Cortex CPU以及与每个MCU系列相关的关键硬件功能。请注意,Cortex-M0 CPU用于入门级STM32F030/50/051器件,而带有DSP和FPU的Cortex-M4用于高性能STM32F4xx(例如STM32F401RCT6)和STM32F3xx器件。中档设备使用Cortex-M3 CPU,其中不需要更复杂的DSP和FPU指令以获得最高性能。 (如果需要,这些指令可以用多个指令实现,大多数编译器提供了一种相当透明的方法,用于在硬件实现和多周期“软”实现之间切换。)
图2:STM32F MCU系列Cortex CPU和关键硬件功能。 (由STMicroelectronics提供)
其他供应商也支持多种ARM Cortex MCU,通常具有广泛的性能和成本范围。例如,Silicon Labs拥有使用ARM Cortex-M CPU的EFM32系列MCU(例如,EFM32ZG222F32-QFP48)。低端低功耗GZ系列使用Cortex-M0 + CPU,而中端TG,G,LG和GG系列使用Cortex-M3 CPU。高端WG系列使用Cortex-M4 CPU,具有DSP和FPU增强功能。有10种不同的软件包选项可以通过一些前期规划从一种CPU类型迁移到另一种CPU类型,从而更容易适应不断变化的需求或使用相同的基础设计提供不同的产品。
Cortex-A架构
Cortex-M架构是一个非常受欢迎的MCU制造商,但Cortex-A架构也出现在供应商的设备中,通常在MPU中,其中大型外部存储器用于指令和数据。 Cortex-A CPU针对超高性能应用进行了优化,通常需要视频播放和高级安全性等功能。例如,基于Atmel Cortex-A5的SAMA5D4 MPU(图3)使用Cortex-A5 CPU,具有2 x 32 kb 1级高速缓存和128 kb 2级高速缓存,以加快处理性能。片上DDR2/LPDDR/LPDDR2控制器访问外部存储器中的指令和数据,因此可以使用非常大的程序和数据集。例如,视频处理算法可能需要非常大的数据集以及非常大的程序。硬件子系统为安全性,连接性,控制和用户界面提供了重要功能,以简化复杂人机界面和相关控制系统的创建。
图3:Atmel SAMA5D4 MPU框图。 (由Atmel提供)
SAMA5D4还支持两个重要的Cortex扩展功能 - Trust Zone和NEON。 Trust Zone支持安全的代码执行。通常,处理器需要执行一些与安全相关的功能(例如安全PIN输入或密码保护)以及一些正常的程序功能(例如图形显示或菜单选择例程)。 Trust区域硬件扩展允许程序员保护与安全相关的功能免受正常访问和潜在的安全攻击。甚至调试功能也可以仅限于正常程序,以进一步保护安全例程免受窥探和类似攻击。
NEON扩展为基于SIMD的算法提供了显着的处理性能改进。 NEON扩展的共同目标是多媒体,信号处理2D/3D图形,视频编码/解码和声音合成。 NEON有自己独立的流水线和寄存器文件,可以支持32位寄存器上的有符号/无符号8位,16位,32位,64位和单精度浮点运算,这些寄存器被视为64位或128位宽取决于指示。与非SIMD实现相比,NEON通常可以提供显着的性能提升;复杂视频编解码器的性能提升60-150%是典型的例子。
多核CPU解决方案
ARM Cortex CPU也出现在多核MCU实现中。这些设备有时具有两种不同的性能CPU,一种是针对目标应用功能“繁重”的高性能,另一种是用于管理通信端口,用户界面和类似低级控制功能的性能较低的CPU。其他多核设备具有相同类型的CPU,只需复制,以便于分区和分配不太专业的处理功能,以实现处理和功率效率的正确平衡。例如,如果不需要满足性能要求(可能在“慢”数据期间),则可以将一个CPU置于低功耗等待状态,然后在需要额外处理时打开。
Texas Instruments在图4所示的Concerto MCU系列中(作为示例见F28M35H52C1RFPT)在其流行的C28x CPU中增加了一个ARM Cortex-M3处理器,为单个器件中的控制和连接提供了一个简单的解决方案。 C28x CPU已针对实时控制进行了优化,可充分利用其15年以上的DSP应用经验。 ARM Cortex-M3 CPU针对通信应用进行了优化,它可以利用广泛的ARM生态系统来实现通信驱动程序(以太网,USB,CAN,SPI等)以及强大的调度和O/S支持。
图4:德州仪器(TI)的双CPU核心Concerto™MCU系列。 (由Texas Instruments提供)
将您的应用程序与正确的ARM Cortex CPU相匹配
您可以在几乎所有MCU制造商的各种MCU系列中找到ARM Cortex CPU。为了使正确的Cortex CPU与您的应用程序相匹配,您应该首先确定哪种指令集最适合您的应用程序。特别是,要查看是否需要高级数据处理功能,如浮点或DSP。您是否需要更高级的功能,如NEON或Trust Zone?也许您的应用程序更加面向控制,低功耗是关键要求?如果是这样,更简单的M0架构可能是合适的。中档设计可以利用Cortex-M3 CPU并根据连接要求和其他关键外设选择设备 - 您通常在MCU制造商的中档设备中拥有最多的选择。
如果您的要求在在设计阶段,您可能希望能够迁移到功能更丰富的设备或功能更多的设备。在这种情况下,选择支持在设备之间轻松迁移的MCU系列可能很重要。您还可以使用大型ARM Cortex生态系统来利用经过验证的驱动程序,RTOS,特定于功能的库和开发工具链。无论您选择哪种ARM Cortex CPU,您都可以确保有一个强大的生态系统可用于简化您的设计。