新闻中心

EEPW首页 > EDA/PCB > 设计应用 > FPGA动态局部可重构中基于TBUF总线宏设计

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

作者:时间:2009-08-03来源:网络收藏

引 言
局部技术是指允许的器件或系统的一部分进行重新配置,配置过程中其余部分的工作不受影响。局部缩短了重构的时间,减少了系统重构的开销,提高了系统的运行效率。局部可重构技术中通常将系统划分为固定模块和可重构模块。可重构模块与其他模块之间的通信(包括可重构模块和固定模块之间、可重构模块和可重构模块之间)都是由总线宏实现的。
动态可重构技术在中的实现是Xilinx公司首先提出的,并且提供了相应的开发工具和开发流程。他们从Virtex系列器件开始支持动态可重构技术,同时他们提供了现成的总线宏文件给动态可重构系统开发者使用,但是它们提供的总线宏设计与软件版本的兼容性很差。Xilinx提供的总线宏可能因为软件版本的问题会无法正常使用,所以用户需要借助正在使用的版本软件设计总线宏,以实现动态局部可重构设计。
在研究总线宏的结构基础上,采用FPGA Editor可视化的方法设计基于的总线宏,并通过FP-GA动态可重构实验验证了该方法的正确性。

本文引用地址:http://www.eepw.com.cn/article/191977.htm


1 基于的总线宏结构
在不同系列的Xilinx FPGA器件中,使用不同的总线宏来实现动态局部可重构技术。在Virtex,Virtex-E,Virtex-ⅡPro X,Spartan-Ⅱ,Spartan-ⅡE和Spartan-3系列器件中所使用的总线宏都是基于的,可重构模块的位置固定不变;在Virtex4,Virtex5更高性能的器件中,所使用的总线宏是基于Slice的,可重构模块的位置是可变的;而Virtex-Ⅱ,Virtex-ⅡPro所使用的总线宏既可以基于TBUF,也可以基于Slice。
目前,使用最多的总线宏,其物理实现是使用6个三态缓冲器(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内。

2 基于TBUF的总线宏设计
这里在深入研究Xilinx公司所提供的总线宏的基础上,结合宏的设计技术,完善了总线宏的设计。
(1)TBUF的内部路由。图2给出内部路由后的TBUF电路结构图。TMUX的T端决定总线宏的控制端LT和RT高电平有效,而T_B端决定低电平有效。

无论控制信号是高电平有效,还是低电平有效,在使用总线宏进行通信时,LT和RT的值必须是相反的,或者是同时无效的。例如,当控制信号高有效时,即T端为1时,TBUF打开。如果总线宏是从左向右传递数据,则必须将LT设为1,RT为0,反之亦然;如果总线宏不需要传递数据,那么两个控制信号应同时为0,此时总线宏输出为高阻态。
(2)TBUF添加的方法。Virtex,Virtex-E,Spar-tan-Ⅱ,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进行相应的命名,命名时要符合所使用版本软件的要求。例如,若对端口进行如下命名:LI3>,LT3>等,而端口在进行物理设计规则检查(Design Rule Check,DRC)时会出错,根据所提示的出错信息将命名改为:LI(3),LT(3)等,即能顺利通过DRC,完成端口的命名。
(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所示。
该实验采用的软件开发平台:Xilinx ISE6.2i;硬件开发平台:可重构硬件平台――XCV800验证板。
每一个总线宏只能传递4位的信号。当可重构模块间需要多于4位的数据通信时,可以通过多个总线宏的拼接实现。这种拼接只是简单地将多个宏拼接为一个文件,而不是将多个宏拼接为一个宏,所以在使用约束语句,约束总线宏的位置时,仍然必须单独约束每个宏,而不是直接约束一个文件。例如该实验中模块M1与模块M3之间的数据通信是8位,则需要2(8/4)个总线宏来实现模块M1与M3间的通信,M2与M3之间也一样:


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

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


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



关键词: FPGA TBUF 动态 可重构

评论


相关推荐

技术专区

关闭