FPGA动态局部可重构中基于TBUF总线宏设计

2010-05-13 08:46赵秋桂,段青亚
现代电子技术 2009年12期

赵秋桂,段青亚

摘 要:FPGA动态局部可重构技术通常将系统划分为固定模块和可重构模块,可重构模块与其他模块之间的通信都是通过使用特殊的总线宏实现的。总线宏的正确设计是实现FPGA动态局部可重构技术的关键。在研究了FPGA动态局部可重构技术中基于三态缓冲器(Tri-state Buffer,TBUF)总线宏结构的基础上,采用Xilinx ISE FPGA Editor可视化的方法实现总线宏的设计,并借助可重构硬件平台——XCV800验证板,通过设计动态可重构实验,论证总线宏设计的正确性。

关键词:FPGA动态局部可重构;总线宏;三态缓冲器;FPGA编辑器

中图分类号:TP368.1文献标识码:B

文章编号:1004-373X(2009)12-022-03

Design of Bus Macro-based TBUF for FPGA Dynamic Reconfiguration

ZHAO Qiugui,DUAN Qingya

(Xi′an Microelectronics Technology Institution,Xi′an,710054,China)

Abstract:FPGA dynamic partial reconfiguration always divides a system into static modules and reconfigurable modules.The communication between reconfigurable modules and the other modules should be implemented with the special bus macro.The bus macro correctly designed is the key to the implementation of FPGA dynamic partial reconfiguration.This paper researches structure of the bus macro which is based on TBUF for FPGA dynamic partial reconfiguration,implements its design with the method of Xilinx ISE FPGA Editor,and verifies the validity of the design through the experiment of dynamic reconfiguration,with the help of reconfigurable hardware platform of XCV800.

Keywords:FPGA dynamic partial reconfiguration;bus macro;tri-state buffer;FPGA editor

0 引 言

FPGA动态局部可重构技术是指允许可重构的器件或系统的一部分进行重新配置,配置过程中其余部分的工作不受影响。动态局部可重构缩短了重构的时间,减少了系统重构的开销,提高了系统的运行效率。局部动态可重构技术中通常将系统划分为固定模块和可重构模块。可重构模块与其他模块之间的通信(包括可重构模块和固定模块之间、可重构模块和可重构模块之间)都是由总线宏实现的[1]。

动态可重构技术在FPGA中的实现是Xilinx公司首先提出的,并且提供了相应的开发工具和开发流程。他们从Virtex系列器件开始支持动态可重构技术,同时他们提供了现成的总线宏文件给动态可重构系统开发者使用,但是它们提供的总线宏设计与软件版本的兼容性很差。Xilinx提供的总线宏可能因为软件版本的问题会无法正常使用,所以用户需要借助正在使用的版本软件设计总线宏,以实现FPGA动态局部可重构设计。

在研究总线宏的结构基础上,采用FPGA Editor可视化的方法设计基于TBUF的总线宏,并通过FPGA动态可重构实验验证了该方法的正确性。

1 基于TBUF的总线宏结构

在不同系列的Xilinx FPGA器件中,使用不同的总线宏来实现动态局部可重构技术。在Virtex,Virtex-E,Virtex-Ⅱ Pro X,Spartan-Ⅱ,Spartan-ⅡE和Spartan-3系列器件中所使用的总线宏都是基于TBUF的,可重构模块的位置固定不变;在Virtex4,Virtex5更高性能的器件中,所使用的总线宏是基于Slice的,可重构模块的位置是可变的;而Virtex-Ⅱ,Virtex-Ⅱ Pro所使用的总线宏既可以基于TBUF,也可以基于Slice[2,3]。

目前,使用最多的总线宏[4],其物理实现是使用8个三态缓冲器(TBUF),实现4位的双向通信。每个TBUF占用1位,每位使用1根TBUF长线,从FPGA 的最左侧到最右侧,如图1所示。TBUF的T端是三态使能端口;I端是数据输入端口;O是数据输出端口。相应地,总线宏的T端(LT和RT)是方向控制端口,控制总线宏从左或从右输出;I端(LI和RI)是数据输入端口;O端(LO和RO)是数据输出端口。

总线宏的信息通信是双向的,既可以从左到右,也可以从右到左。但是对于一个设计来说,一旦信息通信方向确定以后就不能再改变。总线宏的位置精确地跨骑在模块A和模块B之间(A或B是可重构模块,或AB全是可重构模块),其中四栅三态缓冲器在模块A内,另外四栅在B内。对于Virtex-Ⅱ等系列器件,因内部结构不同,故两栅跨骑在模块A内,另外两栅跨骑在模块B内。

图1 基于TBUF的总线宏的物理执行

2 基于TBUF的总线宏设计

这里在深入研究Xilinx公司所提供的总线宏的基础上,结合宏的设计技术[5,6],完善了总线宏的设计。

(1) TBUF的内部路由。图2给出内部路由后的TBUF电路结构图。TMUX的T端决定总线宏的控制端LT和RT高电平有效,而T_B端决定低电平有效。无论控制信号是高电平有效,还是低电平有效,在使用总线宏进行通信时,LT和RT的值必须是相反的,或者是同时无效的。例如,当控制信号高有效时,即T端为1时,TBUF打开。如果总线宏是从左向右传递数据,则必须将LT设为1,RT为0,反之亦然;如果总线宏不需要传递数据,那么两个控制信号应同时为0,此时总线宏输出为高阻态。

图2 路由后的TBUF内部电路结构

(2) TBUF添加的方法。Virtex,Virtex-E,Spartan-Ⅱ,Spartan-ⅡE的内部结构类似,与TBUF添加的方法是相同的。在相应的位置选择一个可编程逻辑块(Configurable Logic Block,CLB)中的一个TBUF作为总线宏的一个TBUF(1个CLB包含2个TBUF),依次选择同一行相连下一个CLB中的一个TBUF,直至选够8个TBUF为止;对于Spartan-3,Virtex-Ⅱ,Virtex-Ⅱ Pro和Virtex-Ⅱ Pro X系列器件;每一个CLB中的2个TBUF都作为总线宏的TBUF被选用,在同一行中依次选择相连的4个CLB中的8个TBUF作为总线宏的TBUF,如图3所示。

(3) TBUF外部端口的命名规则。根据图1的总线宏结构,对各个TBUF的外部端口T,I和O进行相应的命名,命名时要符合所使用版本软件的要求。例如,若对端口进行如下命名:LI<3>,LT<3>等,而端口在进行物理设计规则检查(Design Rule Check,DRC)时会出错,根据所提示的出错信息将命名改为:LI(3),LT(3)等,即能顺利通过DRC,完成端口的命名。

图3 不同类型器件TBUF的添加

(4) 总线宏输出端口的定义。总线宏输出端口的定义只能通过手工路由(Manual Route)方法,把相应TBUF的输出端口通过端口连线和TBUF长线连接起来。

(5) 参考TBUF的设置。设计中通过约束参考TBUF的位置来决定整个总线宏的位置,若用户没有设置参考TBUF,则FPGA Editor工具会将用户添加的第一个TBUF默认为参考TBUF。

至此,整个总线宏的设计完成,如图4所示。

3 总线宏的验证

为了验证上述总线宏设计方法的正确与否,这里设计了一个功能简单的FPGA动态局部可重构实验。电路重构前实现的功能为:(A+B)*(C-D),重构后实现的功能为:(A+B)(C-D)。根据电路功能将电路划分为3个模块。其中,加法(A+B)、减法(C-D)为固定模块M1,M2;乘法/移位(*/)为可重构模块M3。M1与M3,M2与M3之间分别用总线宏BM1和BM2实现通信,如图5所示。

图4 不同器件中总线宏设计

图5 FPGA资源划分

该实验采用的软件开发平台:Xilinx ISE6.2i;硬件开发平台:可重构硬件平台——XCV800验证板。

每一个总线宏只能传递4位的信号。当可重构模块间需要多于4位的数据通信时,可以通过多个总线宏的拼接实现。这种拼接只是简单地将多个宏拼接为一个文件,而不是将多个宏拼接为一个宏,所以在使用约束语句,约束总线宏的位置时,仍然必须单独约束每个宏,而不是直接约束一个文件[7,8]。例如该实验中模块M1与模块M3之间的数据通信是8位,则需要2(8/4)个总线宏来实现模块M1与M3间的通信,M2与M3之间也一样[9]:

INST BM1/bus1 LOC=TBUF_R1C9.0;

INST BM1/bus2 LOC=TBUF_R5C9.0;

INST BM2/bus1 LOC=TBUF_R1C65.0;

INST BM2/bus2 LOC=TBUF_R5C65.0;

按照FPGA动态可重构软件设计流程[4,10]生成局部动态可重构.bit文件;通过JTAG电缆下载到可重构硬件平台——XCV800验证板进行调试验证;通过逻辑分析仪观察结果,如图6所示。

A,B的和Q1作为总线宏BM1的数据输入LI1;C,D的差Q2作为总线宏BM2的数据输入RI2;BM1和BM2的方向控制端LT1,RT2为高(255),RT1,LT2为低(0);数据输入端RI1,LI2悬空,R01,L02分别为总线宏的输出;Q3为可重构模块M3的输出。由实验结果可知,总线宏的设计是正确的。

图6 实验结果

4 结 语

目前,Xilinx公司提倡使用最新的EAPR(Early Access Partial Reconfiguration)方法实现FPGA动态局部可重构技术。该方法中用于可重构模块与其他模块之间通信的总线宏是基于Slice的,但这个方法只适用于Virtex-Ⅱ,Virtex-Ⅱ Pro,Virtex-IV和Virtex-V等器件,对于Virtex,SpartanⅡ,Spartan Ⅲ等器件,只能使用基于TBUF的总线宏实现动态可重构技术,因此该文对基于TBUF的总线宏研究是有意义的。

参考文献

[1]周盛雨,孙辉先,陈晓敏,等.基于FPGA的动态可重构系统实现[J].电子器件,2007,30(2):646-650.

[2]Xilinx Inc.Early Access Partial Reconfiguration User Guide For ISE 8.1.01i.UG208[EB/OL].http://www.xilinx.com/support,2006.

[3]赵远宁,吴强,邹祎.基于Virtex-ⅡPro 系列FPGA的动态部分可重构系统设计与实现[EB/OL].http://www.paper.edu.cn,2008.

[4]Xilinx Inc.Two Flows for Partial Reconfiguration:Module-based or Difference-based.XAPP290[EB/OL].http://www.xilinx.com/support,2008.

[5]王诚,薛小刚,钟信潮.FPGA/CPLD设计工具Xilinx ISE使用详解[M].北京:人民邮电出版社,2005.

[6]乔守明,祝洪珍,王伟.动态重构中总线宏的结构与实现[J].电脑知识与技术,2007(13):145-147.

[7]许骏,晏渭川,彭澄廉.基于模块的动态可重构系统设计[J].计算机工程与设计,2008,29(6):1 367-1 369,1 383.

[8]Xilinx Inc.Xilinx Constraints Guide 8.1i[EB/OL].http://toolbox.xilinx.com,2007.

[9]尚丽娜.FPGA动态可重构研究[D].杭州:浙江大学,2006.

[10]黄俊,朱明程.局部动态重构在SoPC中的应用[J].深圳大学学报:理工版,2006,23(4):351-355.

作者简介 赵秋桂 女,1983年出生,广西合浦人,在读硕士研究生。研究方向为IC设计。

段青亚 女,1970年出生,陕西大荔人,高级工程师,在读博士研究生。研究方向为计算机体系结构技术。