传统数字系统设计中,中小容量FPGA主要用于数字系统的接口、控制、胶合逻辑和复杂数字信号处理或数据处理算法的协处理,而主控制器一般采用单片机或嵌入式处理器完成。FPGA和主控制器分离的设计使得电路规模较大、设计复杂,而系统的功耗较高、保密性也较差。
随着FPGA工艺技术从0.13um发展到90nm到65nm,FPGA的容量愈来愈大,一款低端FPGA就可能具有比几年前最高端FPGA更大的容量和资源。这样,容量的增加和性能的提升允许在FPGA中实现硬核或软核处理器来替代FPGA外部的处理器,从而实现更高的系统集成度。
各主流FPGA厂商都在FPGA产品中提供了嵌入式硬核或软核处理器的支持选项,如何选择处理器则需要从系统角度进行仔细考量。通过对业界主流FPGA中的嵌入式处理器进行比较,本文针对如何选择与FPGA应用相匹配的嵌入式处理器提出了参考建议。
主要的FPGA嵌入式处理器
目前占据主要市场份额的FPGA厂商有Xilinx、Altera、Actel、Lattice等公司,这些FPGA厂商的嵌入处理器模式主要有厂商专用软核处理器、通用软处理器如ARM7/9系列、PowerPC通用硬核处理器。嵌入处理器模式的不同主要取决于产品的应用定位。表1概括了主要的嵌入式处理器及其特点。
是否需要在FPGA中嵌入处理器?
FPGA的适合用于时序逻辑、接口控制、规则数据处理,但对于非规则控制和复杂的数据处理算法却没有32位的嵌入处理器灵活方便,因此在设计具有复杂算法和控制逻辑的系统时,往往需要结合使用嵌入式处理器和FPGA。对于是否需要将处理器嵌入到FPGA中,则需要进行多方面考虑。
表1:主要的嵌入式处理器及其特性
如果对系统集成度的要求较高,则将处理器嵌入FPGA能最大限度地提高系统集成度,降低系统设计复杂度,加快上市时间。例如,Xilinx的Virtex-5 FXT FPGA具有PowerPC硬核处理器,配合高性能DSP片、嵌入千兆以太网模块,可以轻松实现网络视频媒体流所需要的数据和协议处理。如图是Virtex-5 FPGA中嵌入的PowerPC440处理器。
Virtex-5 FPGA中嵌入的PowerPC440处理器
对处理器的性能需求也是一个重要考虑因素。如果处理器的性能要求不高,比如仅要求几个到一两百个DMIPS,采用不多的FPGA资源就可以,则采用嵌入软核处理器是合适的选择。但如果需要的数据、协议处理能力超过300DMIPS,且难以由多个处理器分担,则采用1,100MIPS的高性能PowerPC嵌入硬核处理器较合适。
如果对IP和FPGA的安全性要求比较高,需要保密,则在闪存型FPGA中嵌入处理器是合适的。传统的嵌入式处理器,例如ARM和MIPS,其处理器IP在基于软核的设计流程中很难得到保护,所以ARM或MIPS内核一直无法以软IP的形式提供给FPGA厂商,但是不同于主流的基于SRAM的FPGA,Actel基于闪存技术的FPGA可以保证商用IP在器件中安全运行。
如果需要针对需求变化提供较大的灵活性,则在FPGA中嵌入处理器较为合适。正如Xilinx嵌入开发工具产品营销主管Jay Gould所说的,FPGA与芯片处理器的结合的优点是无须重做一块新PCB或采用新的处理器就能够对软、硬件进行调试,对变更进行测试。
软核处理器还是硬核处理器?
在FPGA中集成硬核还是软核取决于对性能、可重构性的平衡考虑。例如,Altera副总裁李彬表示:“如果在可编程器件中融合硬核则整个系统的可重构性会受到限制。软核的优势在于其灵活性,用户可以根据应用的需要灵活配置系统,裁剪系统,在Nios中还可以添加用户自定义的指令,虽然性能上不一定超过ARM,但用户可以配置上多个NIOS核,所以性能肯定会提升并超过ARM硬核。”
表2:嵌入PowerPC处理器在Virtex-4、Virtex-5 FPGA中的网络吞吐性能
但是,对于高性能的网络协议处理应用,软核处理器难以满足需求,而采用多个软核处理器则将增加系统设计、调试及协调的复杂性,只有高性能的硬核处理器才能满足需求。例如,Xilinx公司Virtex-5 FXT提供多达两个业界标准的PowerPC 440处理器模块,配合与PowerPC440模块紧密耦合的集成5x2纵横开关式交换处理器互连架构,每个处理器在550MHz时钟频率下可提供高达1,100DMIPS的性能。利用PowerPC 440嵌入式处理器模块,设计人员可快速方便地实现高级可扩展嵌入式处理应用。表1是嵌入硬核处理器实现的TCP吞吐性能。如果采用Jumbo帧格式时,还可以获得更高的性能。
通用处理器还是专用处理器?
在性能均等的情况下,采用嵌入FPGA厂商的专用处理器还是通用的ARM、PowerPC处理器,主要取决于对工具包的支持情况和对可移植性的需求。
为有效实现与FPGA逻辑的整合,专用处理器一般需要厂商自己提供的编译、仿真、调试工具。如果集成ARM、PowerPC等通用处理器则可以更多地采用GCC、GDB等通用开发工具。通用处理器也具有更广泛的开发社区支持,具有更丰富、更成熟的资源。
从可移植性的角度,通用处理器也要优于专用软核处理器。以前采用ARM、PowerPC等外置通用处理器的系统设计可以轻松地移植到FPGA内部的嵌入处理器。当采用FPGA的系统设计达到一定量后需转化为ASIC时,通用嵌入处理器也更容易转化,因为大的晶元代工厂一般都有ARM7/9、PowerPC的工艺库。
选择策略
总的说来,FPGA中嵌入的处理器应当与FPGA及其所面向的市场、应用需求相匹配。FPGA中嵌入处理器的一般选择策略可以简单概括为:在中低性能FPGA中采用MicroBlaze、NiosII、Cortex M1等32位嵌入软核处理器,在高性能平台FPGA中采用PowerPC高性能硬核处理器。例如,采用CycloneIII FPGA中的NiosII或Spartan3 FPGA中的MicroBlaze软核处理器实现中低复杂度系统控制和低速协议处理,采用Vitex-5 FXT平台FPGA中的PowerPC440实现大批量的数据处理和复杂的高速网络协议处理。
反过来,在中低性能FPGA采用高性能的ARM硬核处理器,在高性能平台FPGA中采用软核处理器,都会出现对应用需求满足的失衡,或者不能满足应用对性能的需求,或者不能满足用户对成本控制的需求。Altera副总裁兼亚太区行政董事李彬的说法也证明了这一点:“采用Nios软核的客户目前已经超过2万个,而采用带ARM硬核的Excalibur的客户只有为数不多的几个。”Xilinx在65nm的Virtex-5平台FPGA中嵌入高性能的PowerPC440处理器,则表现出了对平台FPGA的应用特点和高端客户需求的深刻理解与把握。
本文小结
FPGA中的处理资源的快速增长促进了设计方法学的变化,现在可以从新的系统设计观点角度重新考虑嵌入式系统中FPGA与嵌入式处理器的相互关系,可以更好地满足复杂系统对性能、电路设计、功耗、保密性方面的苛刻要求。应当将FPGA看作数字系统集成的合适平台,统一考虑接口、胶合逻辑、协处理和系统控制,统一考虑硬件逻辑处理和软件逻辑,统一考虑FPGA中的硬件开发和软件开发,并根据系统需要做出合理的平衡。