首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

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

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 添加的方法。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 进行相应的命名,命名时要符合所使用版本软件的要求。例如,若对端口进行如下命名I < 3 > ,L T < 3 > 等,而端口在进行物理设计规则检查(Design Rule Check ,DRC) 时会出错,根据所提示的出错信息将命名改为I(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 位的数据通信时,可以通过多个总线宏的拼接实现。这种拼接只是简单地将多个宏拼接为一个文件,而不是将多个宏拼接为一个宏,所以在使用约束语句,约束总线宏的位置时,仍然必须单独约束每个宏,而不是直接约束一个文件[7 ,8 ] 。例如该实验中模块M1 与模块M3 之间的数据通信是8 位, 则需要
2 (8/ 4) 个总线宏来实现模块M1 与M3 间的通信,M2与M3 之间也一样[9 ]:
按照FPGA 动态可重构软件设计流程[ 4 ,10 ] 生成局部动态可重构. bit 文件;通过J TA G电缆下载到可重构硬件平台—XCV800 验证板进行调试验证;通过逻辑分析仪观察结果,如图6 所示。

A ,B 的和Q1 作为总线宏BM1 的数据输入L I1 ;C ,D 的差Q2 作为总线宏BM2 的数据输入RI2 ;BM1和BM2 的方向控制端L T1 ,RT2 为高(255) ,RT1 ,L T2为低(0) ;数据输入端RI1 ,L I2 悬空,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 的总线宏研究是有意义的。
作者:赵秋桂,段青亚
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表