文献标识码: A
文章编号: 0258-7998(2013)12-0031-03
局部动态自重构系统是一种新型的可重构计算系统。实现自重构系统的可编程器件必须具有局部动态可重构能力。局部动态可重构是指系统在运行过程中可以对部分资源进行重新配置,而其余资源仍保持正常运行,分时复用可重构硬件上的资源实现不同的逻辑功能。目前,Xilinx公司Virtex系列和Spartan系列的FPGA芯片支持局部动态可重构技术[1]。自重构系统以可重构逻辑器件内嵌的微处理器实现对动态重构的控制和调配[2]。自重构系统具有从器件内部访问配置数据的接口。Xilinx Virtex-Ⅱ以后的FPGA提供了ICAP,其主要作用就是按照特定时序将配置数据重新配置到重构区域中[3]。
Xilinx公司于2006年提出EAPR动态可重构设计方法[4]。这种方法的本质是对基于模块的动态可重构设计方法的改进,支持高端Virtex-4以上的Virtex系列芯片,任意矩形的局部重构区域使有限的资源得到充分利用;静态模块的全局信号直接穿过可重构区域,静态模块与重构模块使用基于Slice的总线宏进行通信,使得系统时序性能好,总线密度大。本文结合现有的基于FPGA的嵌入式系统开发流程和基于EAPR的动态可重构设计方法研究自重构系统的架构及开发流程,设计一个局部动态自重构系统,该系统有2个可重构区域,每个可重构区域有2个可重构模块。
1 局部动态自重构系统架构
本文提出的局部动态自重构系统架构如图1所示。PowerPC405处理器控制重构过程,两个重构区域分别通过通用I/O设备(GPIO)和OPB_DCR_Socket模块使能总线宏。System ACE 和ICAP配合完成系统重构,并将重构过程中的一些提示信息通过UART串口在超级终端上显示。系统的各个主要组成部分说明如下。
(1)可编程逻辑门阵列FPGA
ML403的主芯片XC4VFX12-FF668-10C属于Virtex-4 FX系列。Virtex-4 FX系列器件针对嵌入式处理和高速串行连接,采用90 nm工艺,密度高达20万逻辑单元[5];将8位ICAP扩展到32位,时钟频率可达100 MHz,而且支持二维区域的局部动态可重构。在重构设计过程中,将FPGA划分为可重构区域和固定区域,固定区域在系统运行过程中保持不变,通过处理器控制重构区域的重新配置实现新的逻辑功能。本文划分为固定区域和2个可重构区域(PRR_Math和PRR_LED),每个区域有2个重构模块,分别实现加法和乘法、LED灯向左和向右流水点亮的重构。
(2)基于Slice的总线宏
FPGA划分的多个区域之间通过基于Slice的总线宏进行通信。总线宏是事先布好线的用来精确布线轨道的宏,其位置固定,重构时保持不变,包括基于三态缓冲器TBUF(Tri- state Buffer)的总线宏和基于Slice的总线宏。基于TBUF的总线宏结构简单,可控制信号的传输方向,但不能控制信号的通断。而在重构过程中,来自重构区域的不稳定信号可能会影响其他模块的正常运行,所以需要在重构过程关闭总线宏,这就要求总线宏有个使能控制端口。Virtex-4以后的芯片使用基于Slice的总线宏解决了这个问题,它利用FPGA内部用作静态路由的预留连线作为模块之间的通信通路,在设计时,重构模块不能使用这些资源。
(3)PowerPC硬核处理器
Virtex-4集成了一个32位的PowerPC405硬核处理器。PowerPC405经过综合、布局布线后集成到FPGA内部的固定位置,不占用FPGA内部的任何逻辑资源和存储单元,运行速度可达到芯片标称值,且不影响其周边逻辑的布局布线[3]。PowerPC采用精简指令哈佛结构,支持5级标量流水线,具有独立的指令和数据缓存、32个32位通用寄存器、内存管理单元和片内存储器接口,是本文系统的核心部件之一,用于对重构过程进行控制。
(4)总线技术
PowerPC处理器支持IBM CoreConnect总线技术。本文使用的3种总线,包括处理器本地总线PLB(Process Local Bus)、片上外设总线OPB(On-chip Peripheral Bus)和设备控制寄存器DCR(Device Control Register)总线。PLB总线连接高速外设,本文中用于连接PowerPC处理器与Block RAM控制器;OPB总线用于处理器与其他低速外设之间的互连;DCR总线连接控制总线宏的寄存器。
(5)SystemACE CF
System ACE是Xilinx公司为解决多片大规模FPGA的应用而提出的一套解决方案。外部存储器CF卡用来保存FPGA的配置文件,可直接插拔,具有非易失性。采用SystemACE CF配置方案实现动态重构具有升级速度快、配置数据安全性好等优点。重构时,首先将生成的全局初始.bit配置文件转换成.ace文件,然后将.ace文件和部分配置文件存储在CF卡中;开发板上电后,System ACE控制器通过JTAG端口读取CF卡的.ace全局配置文件,对FPGA进行初始配置,PowerPC微处理器通过内部访问配置端口 ICAP读取重构模块的比特流文件实现重构。
(6)ICAP
ICAP是Xilinx公司在Virtex-Ⅱ之后的FPGA中提供的一个内部配置访问端口,HWICAP IP核将ICAP、BRAM及相关的控制器封装在内部,挂载到OPB总线上。ICAP可以读写FPGA的配置数据帧。ICAP控制器负责ICAP的读写状态及ICAP与BRAM之间的数据传输。BRAM用来保存从CF中读取的重构模块的比特流配置文件或者从配置存储器中读回的配置数据。采用ICAP方案实现自重构过程是基于“读-修改-写”机制的[6]。重构时,首先通过ICAP端口将需要修改的数据帧从配置存储器读到BRAM中;然后处理器修改这些数据帧;最后再通过ICAP将其写回到配置存储器中。处理器利用ICAP直接控制FPGA的重构过程,重构速度快,系统效率高。
2 系统开发流程
本文设计的自重构系统有2个可重构区域。可重构区域PRR_Math以IP核的形式实现加法和乘法的重构,重构过程通过OPB-DCR Socket模块使能总线宏;可重构区域PRR_LED实现开发板上的4个LED灯向左和向右流水点亮的重构。这2个模块通过ISE生成网表,完成布局布线,以GPIO作为总线宏的使能端口。静态模块实现对LED灯的控制,当按下暂定键时,LED暂停流水点亮;当按下开始键时,LED开始流水点亮。系统上电后,首先System ACE控制器通过JTAG端口读取存储在CF卡中的.ace文件对FPGA进行初始全局配置,初始的全局配置实现乘法和向右流水点亮LED。开发板通过串口UART与PC通信,并通过超级终端进行显示和调试。重构时,在超级终端键入命令,处理器接受命令后,通过ICAP读取相应的重构模块对FPGA重新配置,通过在超级终端上测试和观察开发板LED的变化验证重构是否实现。本文采用基于EAPR的局部动态重构设计方法进行系统设计,开发流程如图2所示。
(1)设计输入和综合
系统包括静态模块、可重构模块和顶层模块。静态模块是除了重构模块以外的所有模块,包括处理器模块。静态模块实现对LED灯的控制,处理器模块控制重构过程。2个重构区域分别有2个重构模块,同一重构区域的可重构模块具有相同的端口定义和实体名,要放在不同目录下分别进行综合。静态模块和所有的重构模块在综合时都不添加I/O端口。顶层模块只进行各个模块的例化,即只定义模块的端口信号,而不进行具体的行为描述,包括处理器模块、静态模块、重构模块、总线宏、时钟及一些信号声明等。顶层模块在综合时要添加I/O端口。完成这一步骤将产生所有模块的.ngc网表文件。
(2)软硬件设计
在XPS中搭建系统硬件平台,添加所需IP核,硬件平台如图3所示。在SDK上进行软件编程和调试,生成executable.elf可执行文件。
(3)添加约束
利用PlanAhead添加约束,如区域约束、时序约束和引脚、时钟、总线宏的位置约束等。添加各约束之后运行DCR检查是否满足设计要求。
(4)实现模块
静态模块和重构模块的实现包括转换、映射和布局布线3个步骤。重构模块必须在静态模块成功实现之后才可进行。
(5)合并
运行PR Assemble将各个模块合并,产生各重构模块的.bit文件、各区域的空位流文件和一个包含静态模块及动态模块的全配置文件static_full.bit。生成的static_full.bit文件只含有硬件信息,需要将此文件和system_stub.bmm、executable.elf文件合并成包含软硬件完整信息的download.bit文件。
(6)转换文件
系统上电后,通过读取CF卡中的.ace文件对FPGA芯片进行初始配置,将上一步生成的download.bit转换为CF可执行的.ace文件。
(7)设计验证
将生成的system.ace、重构配置文件和空位流文件下载到CF卡的根目录下,连接开发板与PC进行设计验证和调试。
3 实验结果
在Xilinx XC4VFX12FF668-10 ML403开发板上进行验证,开发板的配置模式设计为JTAG方式,配置资源选择开关打向System ACE端,串口线连接开发板与PC,打开超级终端,超级终端设置波特率为115 200 b/s,8 bit数据位,无奇偶校验,这里的设置和创建硬件平台系统的设置要保持一致。系统上电后,读取system.ace文件完成初始配置后,开发板上的DONE指示灯变为绿色,说明配置成功完成,这时激活的乘法模块和右移模块开始工作。观察到4个LED灯向右流水点亮,当按下暂停键时,LED停止流水点亮;当按下开始键时,LED开始向右流水点亮。超级终端显示提示信息,输入O后系统提示要输入两个操作数,完成乘法运算。结果显示如图4所示。
根据提示命令,输入a或A命令实现加法运算,输入l或L命令实现向左流水点亮LED灯;输入o或O命令,系统接收两个操作数后执行加法运算,并将运算结果显示在超级终端上。观察开发板的4个LED灯变成向左流水点亮,按下暂停键,LED停止流水点亮;按下开始键,LED开始向左流水点亮。超级终端显示如图5所示。
当系统不需要执行重构模块的功能时,可根据提示输入空白配置文件的相应命令使系统处于待机模式。当需要时再输入相应命令进行配置。这样可减少系统的功耗。
重构时间是重构系统的一个关键指标。理论上,重构时间等于配置文件大小与配置速率的比值。实际上,还需要考虑总线的传输速率和HWICAP的配置速率。本文只从理论上分析重构时间,而重构时间和配置文件大小成正比,生成的配置文件大小如表1所示。从表中可以看出,重构模块的配置文件比全局配置文件大幅度减小,采用局部动态配置时,只需下载重构模块的配置模块,重构时间也将大幅度缩短。另外,本文系统通过ICAP配置,ICAP数据位宽为32 bit,时钟频率为100 MHz,配置速率很高,所以在重构时间上具有一定的优势。
本文采用EAPR方法,利用ML403开发板集成的PowerPC405微处理器设计验证系统的自重构功能。在系统运行过程中,可以替换或停止某一不需要或出错的功能模块来保证系统不间断地运行。系统采用软硬件协同设计,使设计流程并行化,开发周期短,硬件分时复用,资源利用率高。基于EAPR的局部动态自重构技术已经成为业界的研究热点,随着技术不断成熟,将逐步应用到实际产品中。
参考文献
[1] SEDCOLE P,BLODGET B,BECKER T,et al.Modular dynamic reconfiguration in Virtex FPGAs[C].Computers and Digital Techniques,IEE Proceedings,2006,153(3):157-164.
[2] 孙道让,刘蕴红.FPGA远程动态重构技术的研究[J].电子技术应用,2012,38(3):37-40.
[3] 徐问波,田耕.Xilinx FPGA开发实用教程(第2版)[M]. 北京:清华大学出版社,2012.
[4] Xilinx Inc.UG208:Early access partial reconfiguration user guide[EB/OL].(2006-03-16)[2013-08-03].http://www.xilinx.com.
[5] Xilinx Inc.DS112:Virtex-4 family overview(V3.1)[EB/OL].(2010-8-30)[2013-08-03].http://www.xilinx.com/support/documentation/data_sheets/ds112.pdf.
[6] Xilinx Inc.Virtex-4 configuration guide,UG071(V1.1) [EB/OL].[2004-09-10][2013-08-03].http://www.xilinx.com.