可编程片上系统设计内容概述本章主要对片上可编程系统设计技术进行了简要的介绍:在片上可编程系统概述部分介绍了软核和硬核处理器,以及片上可编程系统的发展背景和片上可编程系统技术的特点;在片上可编程系统设计方法部分介绍了片上可编程系统设计流程、通用片上可编程系统优化技术和专用片上可编程系统优化技术;在片上可编程系统芯片部分介绍了Xilinx公司支持片上可编程系统设计的主要芯片的种类和性能。可编程片上系统设计基于现场可编程门阵列(FieldProgrammableGateArray,FPGA)的SOPC(System-on-a-chip),包含嵌入式的软核或硬核处理器、存储器和硬件加速器。SOPC的出现为设计者提供了设计高性能嵌入式系统和优化系统的条件。可编程片上系统设计-软核及硬核处理器SOPC嵌入式处理器分为软核和硬核处理器两类。Xilinx提供了将物理的处理其核集成到FPGA硅片上的硬核处理器产品。一个处理器使用专门的硅片实现称为硬核处理器,比如:1)Xilinx将PowerPC硬核集成到Virtex-IIPro到Virtex-5系列的FPGA芯片中。2)ARMCortex-A9硬核集成到Zynq系列的FPGA芯片中。软核处理器是通过使用FPGA的通用逻辑实现的。软核处理器通过HDL语言或网表进行描述的。软核处理器必须进行综合才能使用。可编程片上系统设计-软核及硬核处理器在基于软核和硬核处理器的SOPC系统中,本地存储器、处理器总线、内部外设、外设控制器和存储器控制器必须使用FPGA的通用逻辑实现。下面给出Xilinx公司的软核和硬核处理器的性能。可编程片上系统设计-可编程片上系统技术的发展由于持续的要求嵌入式系统具有更多的功能、更好的性能和灵活性,因此传统上的设计方法已经不适应这种要求。当设计人员试图通过高性能的嵌入式处理器得到更高的性能时,遇到了吞吐量和性能方面的限制,而这种限制源于系统和结构的瓶颈,以及存储器带宽的限制。现在解决问题的方法是“专用”,即对某个嵌入式系统的应用使用专门的解决方法。比如,数字信号处理器DSP用于解决某一类专门的数字信号处理。对于一些高容量的应用,设计人员可能还需要专门开发ASIC芯片。可编程片上系统设计-可编程片上系统技术的发展现在FPGA广泛地应用在各个领域中。因此,很多FPGA厂商将专用的嵌入式处理器Power、ARM等嵌入到了FPGA芯片中。这种集成了嵌入式处理器的FPGA芯片被定义成FPGA的平台。这种基于FPGA的嵌入式平台提供了一个灵活的解决方案。在这个解决方案中,一个单FPGA芯片上提供了大量不同的IP软核和硬核资源。这些固件和硬件可以在任何时间进行升级。这种可编程的结构特点,大大缩短了系统的开发时间,而同一平台能应用在很多领域,提高了平台的资源复用率。可编程片上系统设计-可编程片上系统技术的发展这种结构同时还使设计人员可以优化系统吞吐量和开发周期,提供前所未有的软件和硬件协同设计的灵活性,这种灵活性主要体现在设计人员能够权衡软件和硬件设计的实现方法。这种协同性不同于传统的嵌入式系统的协同设计,虽然以前也使用软件和硬件的协同设计,但是在实现级别上基本上还是使用大量的分离的设计流程。比如,硬件设计人员制定硬件设计规范,软件设计人员制定软件设计规范。这样就导致对问题截然不同的理解,而且对设计团队提出了很高的要求。可编程片上系统设计-可编程片上系统技术的发展更进一步的说,FPGA平台,即SOPC集成了传统的软核和硬核处理器、片上总线、大量不同的I/O设备和借口标准、定制的硬件加速处理器,以及混合的定制的总线或点对点的拓扑结构,以提高系统的性能。可编程片上系统设计-可编程片上系统技术的发展在SOPC的层次上,FPGA的应用领域已经大大扩宽了,它不再是传统意义上用于连接不同接口设备的“连接逻辑”。由于FPGA的容量和性能不断提高,因此它就逐步地变成嵌入式系统的中心。FPGA容量不断提高,已经将嵌入式处理器和大量I/O集成在FPGA芯片内。当FPGA发展到SOPC的阶段后,设计的复杂度也不断的提高,硬件和软件设计在FPGA平台上都显得十分重要。而且由于FPGA集成了片上总线和存储器,因此也需要系统设计和系统结构方面的经验。可编程片上系统设计-可编程片上系统技术的发展在SOPC阶段,设计已经从以硬件描述语言HDL为中心的硬件设计,转换到了以C语言进行功能描述为中心。所以就形成了以C语言描述SOPC的功能,而用HDL语言描述硬件的具体实现方法。这也是和传统的FPGA设计和嵌入式系统设计最大的区别,即软件和硬件的真正的协同设计。可编程片上系统设计-可编程片上系统技术特点作为新的嵌入式系统的设计平台,使用SOPC进行嵌入式系统设计具有以下几个方面的优点:1、定制基于FPGA的嵌入式系统的设计人员可以很灵活地选择所要连接的外设和控制器。因此,设计人员可以设计出一个独一无二的外设,这个外设可以直接和总线连接。对于一些非标准的外设,设计人员很容易的使用FPGA嵌入式平台实现。比如,设计人员很容易的在FPGA平台上设计出具有10个UART接口的嵌入式系统。因此,在FPGA系统中,向这样类似的配置是很容易实现的。可编程片上系统设计-可编程片上系统技术特点2、延缓过时一些公司,特别是为军方提供产品的那些公司,它们产品的供货周期常常比标准电子产品的周期要长。电子元器件的过时(停产)是一个非常严重的问题,会导致这些公司无法继续提供其产品。由于软核处理器的HDL源代码可以通过购买得到,因此基于FPGA的软核处理器是一个非常好的解决方案,它可以充分的满足产品长期供货的要求。可编程片上系统设计-可编程片上系统技术特点3、降低元件成本由于基于FPGA平台的嵌入式系统的功能多样性,以前需要用很多元件才能实现的系统,现在可以使用一个FPGA芯片实现。比如,辅助I/O芯片或协处理器与现有的处理器之间的连接。减少在设计中所使用的元件的数量,不但可以降低元件的成本,而且可以大大缩小电路板的尺寸。可编程片上系统设计-可编程片上系统技术特点4、硬件加速选择基于FPGA的SOPC的一个重要的原因就是,SOPC能在硬件和软件之间进行权衡,使嵌入式系统达到最大的效率和性能。比如,当算法是嵌入式系统软件性能的瓶颈时,一个使用FPGA定制的协处理器引擎能用来实现算法,这个协处理器通过专用的,低延迟的通道与嵌入式处理器连接。使用现代的硬件设计工具,很容易的将软件瓶颈转向硬件处理。可编程片上系统设计-可编程片上系统技术特点SOPC的出现给嵌入式系统设计带来了非常多的优点,但是由于采用基于FPGA的嵌入式平台,这个平台集成了软件和硬件的平台设计工具,因此设计比较复杂。FPGA的嵌入式的软件设计工具比标准的传统的嵌入式系统的软件设计要新,软件设计工具相对来说还不成熟。但是随着SOPC技术的进一步发展,这个问题将会解决。芯片的成本也是一个问题,采用专用的嵌入式平台比采用基于FPGA的嵌入式平台成本要低,但是随着制造工艺的不断更新和SOPC芯片的成本的降低,相信在不久的将来,SOPC成本甚至还会低于采用专用的嵌入式平台。可编程片上系统设计-可编程片上系统设计与优化技术SOPC设计技术不同于传统的嵌入式系统设计流程和设计方法,其设计是软件和硬件的协同设计,同时又是基于软件为中心的设计技术。下面首先介绍Xilinx的SOPC设计流程,然后介绍以软件为中心的SOPC设计技术。可编程片上系统设计与优化技术-可编程片上系统设计技术正如前面所说,基于SOPC的嵌入式系统的设计需要软件和硬件的协同设计。下面给出Xilinx公司使用嵌入式开发套件(EmbeddedDesignKit,EDK)进行嵌入式系统设计的流程。Xilinx公司的EDK工具包用于开发基于FPGA平台的嵌入式系统,从图可以看出该工具支持传统的硬件和嵌入式软件的设计流程。-可编程片上系统设计技术--可编程片上系统设计流程-可编程片上系统设计技术--可编程片上系统设计流程EDK支持硬核PowerPC和软核Microblaze处理器(未来增加对ARM处理器的支持)。并将设计的导入、创建和IP核定制进行了流水化的处理。由于EDK知道平台FPGA的硅片属性和选项,能自动的为其外设生成软件驱动、测试代码和创建板级支持包BSP(BoardSupportPackage)。这些BSP是常用的实时操作系统RTOS(Real-TimeOperatingSystem),比如VxWorks和嵌入式Linux提供的设备驱动。-可编程片上系统设计技术--可编程片上系统设计流程EDK的设计流程就是一个软件和硬件协同处理和设计的过程。软件流程完成C语言代码的编写、编译和链接的过程。硬件流程完成HDL设计输入、综合、仿真和实现的过程。XPS提供了一个Data2MEM工具,该工具能将C语言生成的ELF(ExecutableandLinkableFormat)文件代码插入到生成后的FPGA的比特流文件中,将其生成能够下载到FPGA中,并能启动的映像文件。通过这个过程设计人员能够使软件开发和调试进行实时处理,而不需要额外的时间开销。-可编程片上系统设计技术--可编程片上系统设计流程Xilinx的JTAG连接技术,完成FPGA的下载、FPGA的调试、C代码的下载和软件的调试。XPS集成了软件和硬件调试工具,使它们之间可以相互触发,这使得嵌入式系统内部变成“可见”,使嵌入式设计者能很快地找到和发现问题,而无需知道这个问题是软件还是硬件产生的。-可编程片上系统设计技术--基于软件的设计方法SOPC设计中,一个好的开发工具提供对目标平台合理的抽象,而这个抽象对设计人员来说是比较容易理解的。硬件抽象使得软件开发人员不需要从应用程序的开发转向真实的硬件实现,事实上对于软件人员来说这也是不可能的事情。但是软件开发人员在设计程序的时候开始将并发性和基于消息驱动的硬件概念融入到程序设计中。-可编程片上系统设计技术--基于软件的设计方法这个抽象允许软件设计人员创建、测试和调试应用程序,同时促进开发人员使用程序设计方法使得目标系统达到最大的性能。同时,好的开发工具还提供了将原始的高级描述转换成优化过的低级的目标系统可加载和执行的代码。-可编程片上系统设计技术--基于软件的设计方法为了达到这两个要求,为自动的基于FPGA平台的硬件生成工具主要目的是自动编译和优化问题,提出编程的抽象模型、编程的方法。这些工具目的就是建立面向软件的设计经验。-可编程片上系统设计技术--基于软件的设计方法面向软件的编程、仿真和调试工具提供了对FPGA平台的合理的抽象,允许系统设计人员在原型设计阶段,开始应用的开发、实验,而不需要专门的硬件知识,这一点对于原型设计阶段是非常重要的。如图1.2所示,通过使用软件到硬件的设计方法和工具,传统的软件和硬件设计流程能极大的得到改善。但是并不是说不需要硬件的技巧。事实上,一个完整的和优化过的系统中只使用软件知识是不可能实现的。通过软件和硬件设计技巧和使用现代设计工具就能很快地建立工作原型。-可编程片上系统设计技术--基于软件的设计方法-可编程片上系统设计技术--基于软件的设计方法面向软件的设计流程一个非常重要的特点就是在最合理的平台资源中使用软件来描述设计规范。如果最合适的平台资源是微处理器,那么事情就比较简单,只需要针对这个处理器进行交叉编译(交叉编译就是在一个平台上生成另一个平台上的可执行代码),但是如果是FPGA的话,传统的设计流程要求用HDL语言重新书写RTL级的描述,那是一件既耗时,又容易出现设计错误的事情。但是使用面向软件的设计流程,只需要对最初的设计语言进行简单的一些修改,而不需要关心目标系统的资源。-可编程片上系统设计与优化技术--通用的可编程片上系统优化技术基于SOPC的嵌入式系统设计中,一个非常重要的问题是优化问题。虽然表1.1给出的SOPC的性能指标很高,但是设计者往往发现很难达到表中的指标。这是由于设计人员没有很好的使用基于FPGA嵌入式处理器的性能扩展技术。FPGA的生产厂商会采用一切方法和手段使芯片的性能达到预