创新集成技术整合MCU和FPGA
摘要: 一般来说,FPGA结构包括查找表(LUT)块、存储块、时钟和互连等常见元素。此外,还有与互连相关的接口。可以向这种混合架构添加硬逻辑,范围从高速串化-解串器(SERDES)到PCI或PCI Express接口不等。FPGA可以经过编程提供种类广泛的标准接口,如串行外设接口(SPI)、串口和并口。
将微处理器与FPGA整合在一起是融合可编程能力与高性能计算的一种固有方法。过去,这些器件的搭配通常是一块微控制器或微处理器芯片,加上另一块FPGA芯片。如今FPGA更多的是包含一个硬核或软核处理器或更多的处理器,从而使可编程控制更接近FPGA结构中的定制逻辑。
一般来说,FPGA结构包括查找表(LUT)块、存储块、时钟和互连等常见元素。此外,还有与互连相关的接口。可以向这种混合架构添加硬逻辑,范围从高速串化-解串器(SERDES)到PCI或PCI Express接口不等。FPGA可以经过编程提供种类广泛的标准接口,如串行外设接口(SPI)、串口和并口。
不同技术的FPGA编程接口有所不同。基于闪存的FPGA集成了保留系统配置的片上闪存存储器。基于RAM的FPGA则使用片外存储器,一般是串行闪存芯片。当系统启动时闪存内容将被加载进RAM。
通过这些接口可以将片外处理器连接到FPGA。虽然正常情况下对某个特定系统来说FPGA配置是固定的,但也可以通过片外处理器对FPGA进行动态再编程。诚然,如果有新的配置文件,并且最新FPGA产品支持部分重配置,那么整个系统的复位相对就比较容易(参考electronicdesign.com网站上发表的文章“Climb On Board Next-Generation FPGAs”)。
片外和片上
让片外处理器使用硬的或软的片上接口在理论上是可行的,但与处理器位于FPGA上的方案相比可能效率较低,因为FPGA和处理器都要求额外的接口。此外还有尺寸方面的问题。片外处理器解决方案需要至少比FPGA多一个芯片。更高性能的处理器通常需要从存储器到控制器等更多的支持芯片,因而进一步增加了解决方案的占用空间。
使用片上处理器可节省空间,还能减少接口限制和接口功耗要求,并在FPGA结构中的逻辑与处理器之间提供更紧密的交互。就后者而言,使用特殊的处理器指令可以调用一次操作,或者访问FPGA结构处理的运算或动作结果。
至于如何做到这一点以及交互水平的不同则与处理器是硬核还是软核有关。FPGA硬核逻辑具有效率方面的优势,而在FPGA结构中实现的软核逻辑具有较高的灵活性。硬核处理器的架构和效率一般与独立的处理器或微处理器相匹配。软核处理器必须用查找表来实现。采用标准处理器架构并用软核设计方式实现是可行的,但这样的设计必须强制适配FPGA。这也是专门为FPGA结构设计内核的原因之一。
赛灵思公司(Xilinx)的MicroBlaze和PicoBlaze(参考electronicdesign.com网站上发表的文章“使用软处理器提升性能水平(Soft Processors Raise Performance Levels)”)以及Altera公司的NIOS(参考electronicdesign.com网站上发表的文章“坚持使用NOIS II(electronicdesign.com)”)都是FPGA供应商提供的软核。一些软件供应商甚至将这些软核作为目标,例如为赛灵思MicroBlaze开发的LynuxWorks BlueCat Linux Micro Edition(参考electronicdesign.com网站上发表的文章“以FPGA软核为应用目标的RTOS(RTOS Targets FPGA Soft Cores)”)。像ARM的Cortex-M1等几款标准处理器架构也以FPGA为目标。
硬核处理器和FPGA
Intel公司的E600C(图1)在单个封装内集成了两个独立的元件:Intel Atom和Altera FPGA(参考electronicdesign.com网站上发表的文章“Configurable Platform Blends FPGA With Atom”)。这两个元件主要通过一对PCI Express SERDES进行内部连接。两个器件的I/O管脚都引到了外部,其中少量管脚内部连接在一起。
图1:Intel的E600C将一个Intel Atom处理器与一个Altera FPGA放置在一个多芯片封装中,通过PCI Express链路连接两者。
从开发人员的角度看,可以把E600C完全看作是两个芯片的单芯片版本。因此与带嵌入式硬核处理器的FPGA相比,E600C是一种不同类型的产品。
这并不是说Intel/Altera的方法没有用或不可行。相反,这是高端处理器/FPGA配对的典型应用案例,其中的Core i3/5/7将链接到一个或多个FPGA。
在这种情况下,PCI Express链路仍然是FPGA和处理器之间的主要连接方式。这些链路能够在这些器件间非常高效地传送数据。它们缺乏的是嵌入式解决方案所特有的指令级私密性。
另一种突破常规的平台是赛普拉斯半导体公司(Cypress)的PSoC。PSoC 3采用了8051内核,而PSoC 5采用的是Arm Cortex-M3。
PSoC模拟与数字现场可编程元件阵列(FPCA)在低级元件方面有别于FPGA结构,其功能更强,但在可配置性方面比FPGA查找表更加严格。采用FPCA设计的目的是使定制外设的创建更加容易,但外设种类是依据标准微控制器外设进行建模的,如串口和模数转换器(ADC)。
PSoC与带硬核或软核处理器的FPGA的区别是,PSoC的主要应用领域是微控制器外设。特别是FPGA结构所采用的逻辑在工作时完全独立于片上处理器。
虽然PSoC可以有一定程度的扩展,但其主要工作模式是围绕处理器内核展开的。设计工程师只需简单地选择或设计由应用程序操控的定制外设。
在某种意义上,带嵌入式内核的FPGA在设计方面与PSoC很相似。在这些内核上运行的程序也经常将FPGA逻辑视为定制外设,虽然这些逻辑比PSoC上的逻辑要显著复杂得多。
许多FPGA上使用的硬核也比PSoC产品上的硬核复杂。虽然赛灵思公司仍然在销售带硬核Power PC的FPGA(如Virtex 4等),但是带硬核的最新FPGA一般是采用ARM内核,其中ARM Cortex-M3和Cortex-A9是最流行的(参考electronicdesign.com网站上发表的文章“Xilinx Unifies FPGA Line”)。Cortex-A9是PowerPC内核的合适替代品,可提供高级内存管理和运算功能。
赛灵思Zynq-7000 EPP(图2)采用的是双核Cortex-A9(参考electronicdesign.com网站上发表的文章“FPGA Packs In Dual Cortex-A9 Micro”)。Virtex-4解决方案与Zynq-7000 EPP之间的主要区别在于Cortex-A9内核周边的硬逻辑。
图2:赛灵思的Zynq-7000 EPP将一个完整的双核Cortex-A9位控制器与外设放入其最新的FPGA中。
与Virtex 4 Power PC内核一样,Cortex-A9有一个连接FPGA结构的标准总线接口。与Zynq-7000 EPP的区别是,Cortex-A9有一套完整的辅助外设和内存控制器用于访问片外存储器。实际上,Zynq-7000 EPP是一种与FPGA结构紧密链接的双Cortex-A9微处理器。
这点很重要,原因有两个。首先,编程人员可以将处理平台看作是独立的自给自足的系统。事实上,微处理器可以被其自身使用。这并不违背芯片的目的,而且从软件角度看更加简化。其次,在软件方面允许置入比FPGA结构更加灵活的大量调试功能,而FPGA结构通常只配置一次(或者每次调试配置一次)。
在FPGA应用中增加诊断逻辑是可行和合理的,但这样做很容易将内部信息暴露给处理器上运行的应用程序。拥有片上处理器可以简化这一设计任务。赛灵思平台则将传统多内核处理器设计和FPGA巧妙地整合在一起。
高级微控制器总线架构(AMBA)高级可扩展接口(AXI)互连对基于ARM的设计来说是一种标准,不仅能使FPGA外设设计更加容易,而且与典型的FPGA应用逻辑设计相比,可使与处理器的连接几乎不费吹灰之力。
MicroSemi公司SoC产品部门(以前的Actel)的SmartFusion(图3)与赛灵思Zynq-7000非常相似,其中SmartFusion Cortex-M3内核四周是一组标准的硬件外设(参考electronicdesign.com网站上发表的文章“FPGA Combines Hard-Core Cortex-M3 And Analog Peripherals”)。处理器通过标准总线接口链接标准FPGA结构,因此非常容易访问基于FPGA的外设。
图3:MicroSemi的SmartFusion FPGA围绕一个Cortex-M3微控制器构建,并增加了一个智能模拟子系统。
SmartFusion和其它硬核FPGA之间的最大区别在于SmartFusion的模拟子系统。在某种意义上,这只是一种非常奇特的模拟外设,但这个子系统能够半独立地工作,而且能被FPGA逻辑访问,因此它支持非常复杂的设计。
带硬核处理器和外设的FPGA不可能遵循有过多SKU的微控制器路线。这对于FPGA结构来说实际上是违反其本性的。尽管如此,如上所述,硬核逻辑与FPGA实现相比具有显著的优势。
片外处理器与组合式解决方案相比的优势之一是电源管理。虽然FPGA上的硬核处理器与软核处理器相比具有功耗上的优势,但通常处理器、外设和FPGA是全部运行的,而片外解决方案在理论上可以给FPGA和大部分自己的元件断电。
这在许多应用中是非常有用的,特别是在电池供电或移动应用中。虽然未来的FPGA可以提供更加模块化的电源管理解决方案,但目前大多数设计必须满足整个FPGA结构的功耗要求以及硬核逻辑要求。
就像大多数微处理器和微控制器一样,设计工程师将利用系统中的大部分但不是全部的处理能力和外设。这就是软核处理器的优势所在,因为它们通常可以调整到一定程度,比如规定设计中使用的缓存容量。
软核处理器和FPGA
与硬核FPGA相比,采用软核处理器的FPGA具有许多优势,包括能够混合使用不同类型和任意数量的内核,设计仅受目标芯片提供的资源所限制。
首先,内核选择范围更大。每家主要的FPGA供应商都有自己的软核或针对其硬件定制的内核,因为所有FPGA并非采用相同的设计。但市场上有大量针对FPGA实现设计的标准软核,这些软核可以用于几乎任何FPGA。
ARM Cortex-M1和飞思卡尔(Freescale)V1 ColdFire可以用于一系列FPGA(参考electronicdesign.com网站上发表的文章“Cold, Dense, And Gratis MCU Core Targets FPGAs”)。当然,软核受限于FPGA的大小,因为FPGA上必须有足够的空间来容纳内核及所有支持逻辑。
其次,单个FPGA中可以集成任意数量的软核,数量大小仅受内核、所需外设以及应用程序占用空间所限制。通常这些内核被配置为非对称多处理(AMP)结构,并且内核针对特定任务进行了调整。
使用通用内核可使编程更加容易,但从硬件设计角度来看,使用不同内核同样方便。对称多处理(SMP)和非统一内存架构(NUMA)系统也是可行的,但事实上从硬件角度而言设计难度较大。
第三,设计工程师能够控制内核和FPGA结构其余部分之间的布置和连接,这会影响芯片布局和工作效率。例如,为便于数据从一个内核向另一个内核传送,流水线式ARM架构最好采用分布于通信与处理逻辑之间的内核来实现。硬核FPGA强制设计工程师一开始就使用现成的硬核及其接口布局。
第四,软核可以与硬核混合在一起。与任何多内核设计一样,这种方式是针对特定应用的,但它允许设计工程师充分利用硬核的优势,同时还能增加更多内核的功能。目前,硬核和软核甚至可以使用相同的指令集。操作系统和运行时库通常可以隐藏任何硬件的微小差异。
最后,软核可以通过配置改变它们的大小和性能。提供给设计工程师的选择能够显著改变这些因素。例如,存储器通常会使用FPGA中的大量空间,因此使用小缓存可以缩小内核的尺寸。增加缓存容量或寄存器数量则可以提高性能。
另外一个例子是可以采用的中断处理方法。一种是单个全局中断,另一种是基于优先级的专用寄存器交换方法。当然,专用寄存器交换方法明显要求更多的硬件资源和编程技巧。
选项的数量简直难以置信,但最终可以形成一个适合具体应用、并且支持合适FPGA大小的系统。
软核配置变化繁多,取决于FPGA设计工具和所选的内核。配置通常是菜单驱动的,允许设计工程师选择各种选项。默认的是标准配置,因为软件方面的考虑是关键。这是硬核和标准软核处理器为何有意义的原因之一。通常不需要频繁地调整软件工具链或基本的操作系统。
如果需要增加或修改软核的指令时,这个问题将变得更加重要,因为这时需要向编程人员提供支持。有许多方式(从简单的宏汇编到修改C/C++编译器等)都可以用于实现这一功能。
如果混合配置中只增加少量指令,或者它们的使用仅限于少量算法,通常可以采用最小修改或定制的汇编代码的方式。其优势是提高了性能和效率,因为软件可以与逻辑以及FPGA的其它部分更加直接地交互。缺点是变得更加复杂。
Synopsis ARC和Tensilica Xtensa是可供FPGA使用但以ASIC设计为目标的内核实例。这些内核的工具支持生成能够充分利用硬件设计人员增加的新指令的开发工具,比如编译器。
一般来说,软核与FPGA之间的交互是通过I/O端口、或面向内存映射I/O的存储器完成。异步反馈通常是通过设计人员实现的中断机制形成的。同样,直接内存访问(DMA)将在这些相同的约束机制内工作。
诸如ARM的AMBA AXI等标准总线接口能使硬件和软件设计更加容易。早期的软核工具缺少这种标准化,但最近的标准化工作允许通过菜单选择外设和定制的内核/FPGA外设。举例来说,设计工具不再只提供I/O端口,而且允许FIFO成为混合选项的一部分。
当给可选与软核处理器一起使用的混合配置增加新外设时,标准总线接口还能简化FPGA设计工程师的工作。这与在板级系统中处理总线接口以使电路板可用于不同系统以及与不同操作系统一起工作类似。设计工程师需要提供的仅是硬件和设备驱动程序。C代码的设备驱动程序可以提供高度的可移植性。
软外设设计人员能用相同的方式看待FPGA。简单设计的总线接口(如ARM AMBA AXI)和外设只要支持匹配总线就能用于任何软核或硬核。
在完成内核及其外设的挑选后,硬件设计人员的工作还没有完成,因为外设必须连接到I/O焊盘用于外部连接或连接到其它应用FPGA逻辑(如果器件是内部的)。幸运的是,一般通过简单地选择合适的信号名字并让FPGA设计工具完成布线即可满足要求。
适合软核使用的更好的FPGA
在提及软核处理器和性能时,软核处理器相对硬核处理器的LUT开销是必须解决的实现问题之一。另外一个问题是多端口存储器。典型的FPGA使用双端口内存,但先进的处理器设计经常采用很长且复杂的流水线作业,这种流水线能够受益于更多的内存端口。
Tabula公司的ABAX(图4)提供了一种独特的SpaceTime时基FPGA架构,支持更多的内存端口(参考electronicdesign.com网站上发表的文章“FPGAs Enter The Third Dimension”)。SpaceTime实现了多达16层的多层逻辑,这些逻辑可改变每个时钟状态。ABAX实际上用的是单端口内存,但数据可以在每个状态期间读取,因此实质上可以提供多达16端口的内存。
图4:Tabula的ABAX SpaceTime FPGA可在每个时钟周期改变其逻辑,从而允许用单端口内存提供多端口内存,这使得它能够更高效地实现软核处理器。
想像一下用这种功能实现的分支预测优化逻辑。ABAX设计中的这类特色功能可以帮助设计工程师实现更加高效的软核。
有趣的是,Tabula的Stylus工具建立在传统FPGA设计工具基础之上,能将设计映射到SpaceTime基础架构。Stylus以及由开发人员对设计作出的时序约束将真正决定一个设计所需的层数。
从许多方面看,逻辑时间分层的SpaceTime方法与先进处理器设计中的流水线非常相似。对ABAX的研究可以产生具有某些吸引力的有趣软核。
先进的FPGA集成
FPGA就像是黏土块,可以做成几乎任何东西。尽管如此,大多数设计工程师仍可以通过传统方法并使用静态的菜单选择外设集合将硬核或软核整合进设计中,而且这些外设可以通过连接I/O端口的定制FPGA逻辑得以增加。这方面做起来很容易,而且对大多数应用来说已经足够。
更优秀的工程师可能使用多个并且可能是不同的软核。其它一些高级的可能性包括许多FPGA和最新FPGA设计工具集可提供的动态部分重配置。这种方法更适合使用基于RAM的FPGA。
事实上,FPGA的区域配置在运行时是变化的。某个区域可能包括软核或其它逻辑,但改变通常是在处理器控制下完成的。片上处理器(硬的或软的)可以完成这个任务。
动态重配置是新的功能,而非任何硬核或软核处理器、菜单驱动设计流程的一部分。它也会给设计工程师增加过多的复杂性,但可能会让人想起一些较早前纳米编程的迷你计算机(如Burroughs B1700系列)的灵活性。这种迷你计算机可以通过改变配置运行用不同编程语言编写的应用程序。事实上,B1700可以运行用Algol和COBOL等语言编写的应用程序。
有件事需要明确,那就是在FPGA设计中整合处理器内核相对比较容易,而且灵活性方面带来的回报是巨大的。许多FPGA应用不需要片上处理器内核。在许多情况下,片上处理器内核反而会影响最佳的系统设计。
另一方面,基于微控制器或微处理器的设计可能受益于FPGA解决方案提供的灵活性和功耗,特别是单芯片解决方案。那么,您的下一个硬件项目想好用什么了吗?
PSoC:几乎就是FPGA
赛普拉斯半导体公司的PSoC有许多属性类似于硬核FPGA(参考electronicdesign.com网站上发表的文章“Field-Programmable I/O Augments 8- and 32-Bit Microcontrollers”)。PSoC 3产品线采用的是8051内核,PSoC 5产品线采用的是ARM Cortex-M3。
与一些硬核FPGA结合一样,PSoC也有一些专用外设。然而,大多数外设是使用硬处理器内核周边的可编程结构提供的。
最大的区别在于PSoC可编程硬件比FPGA的基于更通用LUT(查找表)的方法更加苛刻。PSoC的数字和模拟模块可以经过配置和连接形成更加复杂的器件。
赛普拉斯半导体把它称做现场可编程元件阵列或FPCA(见图5)。这些元件经过调整可高效地提供传统数字器件(如串口、定时器)和模拟器件(如模数转换器(ADC)和数模转换器(DAC))。
图5:赛普拉斯半导体的PSoC具有一个可访问模拟和数字元件FPCA的微控制器硬核,FPCA通过一个灵活的接口/驱动器结构与外部交互。
数字和模拟外设集合的优势是可以向设计工程师提供可定制能力。例如,用于串口的定时和同步功能可以比典型微控制器中的串口配置得更强大。元件可以连接在一起形成更大或更复杂的系统。这个功能比具有可定制事件系统的其它微控制器上的功能更加强大,因为元件的可配置性更高(参考electronicdesign.com网站上发表的文章“Offloading CPU Boosts Microcontroller Performance And Cuts Power”)。
PSoC缺少更高端FPGA的功能,但与低端至中端FPGA相比具有很强的竞争力。同样,它也能与Atmel、Microchip和TI等公司的微控制器竞争,这些微控制器通过各种可配置的事件系统将多个外设链接在一起。与PSoC一样,这些微控制器经常在主处理器睡眠时工作,因而能进一步降低功耗。
暂无评论