Cortex-M1:面向FPGA的解决方案
扫描二维码
随时随地手机看文章
FPGA" title="FPGA">FPGA" title="FPGA">FPGA作为灵活且具成本效益的平台,越来越多地用于实现高性能嵌入系统的快速设计。这两种趋势相结合,正在推动市场对使用可编程逻辑实现32位处理器的需求。
市场所需的是针对FPGA优化且符合业界标准的32位处理器构架体系。直到最近,大多数处理器知识产权(IP)一直是针对ASIC使用而开发。因此,在FPGA的粗颗粒构架上实现时,处理器往往较大且速度较慢。虽然,市场上也有一些可在FPGA上实现的专用软IP处理器核,但它们在开发工具、技术支持资源及设计人员经验方面都存在局限。
为了应对这一市场需求,Actel和ARM公司推出了专为在FPGA上实现而设计的32位ARM处理器核Cortex-M1,可在Actel非易失性ProASIC3 FPGA和Fusion可编程系统芯片(PSC)上使用。用户无需与Actel签约,也无需授权费用和权益金,从而将ARM体系扩展到小批量应用领域。对于那些扩大至超大产量规模的设计,32位Cortex-M1处理器核可执行业界标准的Thumb指令集,并向上兼容Cortex-M3处理
器,因而可轻易转向ASIC设计。由于符合业界标准,Cortex-M1处理器核也能重复利用现有的开发工具、代码和知识,有助于节省成本、降低开发风险及加快产品面市。
在FPGA上实现业界标准构架
专有构架所面临的困难是如何提高其在目标应用中的效率,以及如何解决支持工具受限的问题。而且,经验丰富的设计人员都知道,需要花费时间学习,并积累经验,才能掌控新产品的特性。不幸的是,这些困难与日益缩短的开发周期及越来越大的设计风险形成直接的冲突。由于这些原因,设计人员总是趋向于重复使用他们所熟悉,或之前使用过的产品。
当然,较之于专有构架,业界标准的架构给用户带来的优势多得多。ARM和Actel基于Cortex构架,合作开发针对FPGA而优化的处理器核。这种定制化的设计使该处理器核的性能和效率提高,逻辑单元占用量减小。
Cortex-M1特点
Cortex-M1处理器核基于ARM的3级Cortex-M3流水线技术,具有高可配置性,在速度和内存占用上取得了很好的平衡,非常适合嵌入式应用。在最小配置情况下,仅比Actel的Core8051核(标准16位控制器)大一点,不超过5%。Cortex-M1在Actel ProASIC3和Fusion中的工作频率超过70MHz。该处理器运行新的Thumb-2指令集的一个子集,支持紧耦合内存(TCM),并采用精细的低后滞中断控制器,因而可提高嵌入式系统的性能和能力。
改进的代码密度能提高性能和能效
Thumb-2技术基于成功的Thumb技术。Thumb是针对ARM微处理器设计的高代码密度指令集,能够提高用于低成本、高性能系统的ARM微处理器核的能力。
就优化代码性能而言,Thumb-2技术较之于现有的高密度代码,内存占用减少了31%,从而降低了系统成本,同时性能提升高达38%,因而能够延长产品的电池寿命或丰富产品的功能。
Cortex-M1基于Cortex-M3流水线技术,并执行ARMv6-M指令集,亦即Thumb-2(ARMv7)指令集的一个全子集。Thumb-2指令集也用于Cortex系列的其它处理器核。Cortex系列向上兼容针对其传统处理器核(ARM7、ARM9和ARM11)编写的Thumb代码,现有的Thumb代码可直接在包括Cortex-M1的Cortex系列处理器上运行。
较之于以前的ARM指令集体系,Thumb-2的优势之一是16位和32位指令都以相同的模式执行。在过去的ARM体系中,Thumb指令主要用于子程序中,这些子程序带有用于实现中断服务的32位ARM指令。这种方式常常在中断请求接收时和中断服务启动时之间造成较长的延迟。在Thumb-2体系中,ARM将16位和32位运作模式合并,因此处理中断时就不必从16位模式切换到32位模式。Thumb-2能够自由混合16位和32位指令,可大大地简化编程任务,无需设定代码的顺序构造,即可实现代码最小化和处理能力最大化。此外,Thumb-2指令的性能更高,这是因为设计人员能优化地混合指令,无需将它们按16位和32位分组。
内存存取速度更快性能更高
Cortex-M1具有来自AMBA外设总线接口的单独内存接口。这类似于高性能的ARM9体系,但不同于ARM7,后者采用的是组合的内存和外设总线。Cortex-M1的这个单独内存实际上是两个接口,即为访问指令紧耦合内存(ITCM)和数据紧耦合内存(DTCM)(见图1)提供了单独的通道。因此,处理器性能大大提升,因为处理器能在每个时钟周期内从ITCM提取一条指令,且决不会因数据内存访问操作或读写 AMBA上的外设而停顿。ITCM和DTCM的大小都可由用户定制,容量可从0kB增加到1MB。
高效的中断操作缩短后滞
Cortex-M1具有可配置的嵌套向量中断控制器(NVIC),有利于实现低后滞中断处理和异常处理,同时还简化了编程(见图1)。NVIC支持中断优先级重新定义,并与处理器核紧密耦合,因而能减少中断后滞,从而高效地处理随后到达的中断。Cortex-M1中的NVIC还允许用户单独决定中断优先级,并支持4个中断优先级别。例如,可设置关键事件首先处理,并可中断一个正在执行的优先级较低的中断服务,即设计人员可在自己的应用内部构造事件处理流程。
简化的编程模型使代码编写更方便
Cortex-M1执行Thumb-2指令集的一个子集,有两种工作模式。对于正常处理,Cortex-M1进入线程模式(通过复位进入或异常处理后返回);出现异常后则进入中断处理模式。该处理器适用于那些不再需要其它工作模式的嵌入式系统。由于编程模型仅限于针对少量的工作模式,处理器的逻辑单元占用量显著减小,因而降低了成本。
这种处理器所采用的构架使设计人员能通过处理器核最大限度地控制数据和处
理流程,只要权衡得当,保持处理器尽可能小。这样就可简化编程,尤其是在多个工程师参与开发软件和硬件的情况下。为简化编程,使线程模式和中断处理模式间的过渡尽可能平滑,该处理器采用了两个堆栈。复位后,所有代码都使用主堆栈。异常中断处理程序可改变线程模式所使用的堆栈,即在线程模式退出时,通过改变它所使用的EXC_RETURN值将堆栈从主堆栈变为处理堆栈。而所有异常处理程序继续使用主堆栈。堆栈指针(R13)是一个分组寄存器,负责实现主堆栈和处理堆栈间的切换。
熟悉ARM7和ARM9的人会注意到,Cortex-M1寄存器文件作用类似于维护Thumb指令兼容性。不过,Cortex-M1寄存器要简单些,用较少的FPGA系统门就可实现。为进一步简化编程,该处理器还定义了一个内存映像,而处理器核能访问该内存映像的所有区域,包括所有数据类型的数据区域。
具有M1功能的FPGA
采用FPGA就可在几个小时内实现设计,并在应用中运行起来,而采用ASIC就需要好几个月,而且还会有庞大的非经常性工程费用。
ARM和Actel在开发Cortex-M1时就使处理器具有很高的可配置性,允许用户针对应用的特定需求量身定制处理器。紧耦合内存的大小、多路复用器的大小和速度、外部中断的个数、为实现向下兼容所采用的字节排序方式,以及是否纳入调试电路和OS扩展集等,均可由用户选择。这样,设计人员在编译时就可控制,从而选出最能满足应用要求的最小处理器配置。不仅如此,由于Cortex-M1是在FPGA器件上实现,设计人员能快速配置处理器核,将配置好的处理器核编写入具M1功能的Flash器件中,并在最终应用中进行验证。如果需要修改,可在几分钟内完成修改并重新编程写入器件中。这样,工程师就可在几个小时内多次修改和测试其设计,从而找出产品的最优实现方案。
在具M1功能的Actel FPGA上,可无缝使用Cortex-M1处理器核。具有60万个系统门的M1AFS600 Fusion PSC集成了一个12位ADC、40个模拟输出、8Mbit Flash内存,以及FPGA架构。Cortex-M1核仅用4300个逻辑单元就能实现,还不到M1AFS600 Fusion PSC中FPGA容量的30%。
M1A3P1000有144kbit SRAM和300个数字I/O,Cortex-M1处理器核仅用4300个tile就能实现。
Cortex-M1开发工具
为支持在Actel FPGA中实现的ARM处理器,需要工具开发和调试在该处理器上运行的程序,也需要工具开发和调试编写在FPGA中的逻辑电路。采用ARM处理器的一个主要优点是这种处理器拥有庞大的工具和设计支持生态系统,以及大量现成的嵌入式软件程序(见图2)。这个生态系统包含了Actel的IP核开发平台CoreConsole IDP、Libero IDE开发环境、SoftConsole程序开发环境,以及完备的板级开发和调试环境。ARM也将在其RealView开发套件和RealView微控制器开发套件(MDK)中为Cortex-M1提供支持。
除了ARM和Actel的开发工具外,Aldec、CriticalBlue、CodeSourcery、IAR、ImpulseC和Mentor Graphic等第三方厂商的开发工具也会为Cortex-M1提供支持。
结论
随着嵌入式应用转向可编程逻辑技术,由ASIC向FPGA的转变正在推动人们使用在FPGA中实现的32位处理器。Cortex-M1处理器采用了均衡的三级流水线技术,精细的中断控制器和紧耦合内存, 能最大限度地提升嵌入式系统的性能,并同时减小处理器的大小和实现成本。由于该方案基于符合业界标准的构架体系,因此用户能够充分利用大量现成的代码、广泛的知识和技术支持以及庞大的开发工具系统。