技术领域
[0001] 本发明属于微电子技术领域,具体涉及一种动态可重构硬件所需的总线宏结构,尤其涉及一种用于纵向CLB结构的FPGA内的总线宏电路结构。
相关背景技术
[0002] 基 于FPGA(Field Programmable Gate Array)的 动 态可 重 构 硬 件 平 台(DynamicallyReconfigurable Hardware Platform)[1,2]是利用FPGA的可配置特性,结合一定的电路结构,通过动态重配置FPGA芯片内部的部分功能,从而达到分时利用FPGA内部资源,动态修改FPGA功能的目的。FPGA的动态可重构硬件平台在提高FPGA芯片的利用率,提高系统的适应能力和稳定性,减少系统冗余和功耗等方面有较好的表现。
[0003] 基于FPGA的动态可重构平台的实现有以下方面的考虑,分别是硬件载体——FPGA芯片;重构实现方式——控制接口;可重构电路系统结构——基于模块或者是基于差别,及其电路构造方法等;重构的算法及应用——反馈及控制依据。本发明关注基于模块的可重构硬件系统。基于模块的可重构硬件系统中,一个关键的技术是要将可重构的电路模块从物理上与不参与重构的固定逻辑模块分割,并且要使重构后的模块与固定逻辑模块间保持与重构前模块完全相同的接口位置。一种可行的方案是通过固定的总线结构完成可重构系统中模块间的接口互连。
[0004] FPGA芯片设计公司Xilinx提供了完整的软硬件开发平台用于实现动态可重构系统,在针对基于模块的可重构电路系统结构方面,Xilinx提供了针对不同系列芯片的总线宏。其中,对于基于横向CLB的FPGA系列芯片,如Virtex-II系列芯片,其提供了由CLB和互连构造的总线宏(Bus Macro)[2,4],用于分割内部模块,而对于基于纵向CLB的FPGA系列芯片,如Viertex及SPARTAN-IIE系列芯片,则只提供了由TBUF构造的总线宏[2,3]。由CLB构造的总线宏更具有灵活性并且更节省资源,所以有必要构造用于基于纵向CLB的FPGA的总线宏。
[0005] 参考文献:
[0006] [1]Application Note XAPP290(V1.0):Virtex,Virtex-E,Virtex-II,Virtex-IIPro Families
[0007] [2]Xilinx Inc.PlanAhead User Guide
[0008] [3]Xilinx,Inc.,Spartan/Spartan-II/Spartan-3FPGA Family Complete DataSheet
[0009] [4]Xilinx,Inc.,Virtex/Virtex-II/Virtex-4/Virtex-5 FPGA Family CompleteData Sheet.
[0010] [5]Guanghua Pan,Jinmei Lai,Liguang Chen,“Design and implementation ofsequential function of CLB in FPGA”,Electronic Journal,2008.(08).发明内容
[0011] 本发明的目的在于针对使用了纵向CLB单元及互连的FPGA,提出一种利用CLB资源构造的总线宏,用于分割动态可重构系统中的不同模块。
[0012] 纵向CLB在FPGA中的物理及逻辑结构如图1所示[5],CLB的输入多路选择器(IMUX)与输出多路选择器(OMUX)分别位于SLICE的下方和上方,信号走向为纵向。大致上,信号通过GRM(General Routing MUX)向上进入IMUX(Input MUX),再向上进入SLICE,再向上通过OMUX(Output MUX)输出。根据动态可重构硬件系统的要求,各模块要如图2所示,从物理上分割为纵向条状而已,边界信号传输方向为横向。可见,为了使信号横向传输,必然要利用横向的互连线,并且这种互连线网要出现在左右两列CLB中。基于CLB的总线宏通过例化相邻的两列CLB作为过渡逻辑,并约束这两列CLB之间的互连使之在与任何电路相连时都固定,就能将此两列CLB作为左右两模块的边界,从而实现电路系统物理上被纵向切割。
[0013] 本发明利用两列相邻的CLB作为总线宏将电路纵向分割,其中作为总线宏的CLB单元配置如图3-1~图3-4所示,共有四种宏单元,用于将电路纵向或者横向切割。图3-1所示为信号传输方向为从左往右时使用的总线宏单元,记为A单元。图3-2所示为信号传输方向为从右往左时使用的总线宏单元,记为B单元。图3-3所示为信号传输方向为从上往下时使用的总线宏单元,记为C单元。图3-4所示为信号传输方向为从下往上时使用的总线宏单元,,记为D单元。其中水平走向的两种宏能作为同一列总线宏使用,用于将电路纵向切割;垂直走向的两种宏能作为同一行总线宏使用,用于将电路水平切割。每个总线宏单元包含输入边界SLICE和输出边界SLICE两个SLICE,从输入边界SLICE的输出到输出边界SLICE的输入使用的互连资源是固定的。
[0014] 总线宏单元的逻辑功能是直连线,使用的逻辑资源包括LUT(Look Up Table,查找表)和从输入边界SLICE的输出到输出边界SLICE的输入使用的固定互连资源。LUT被配置成直连的逻辑。总线宏对LUT使用的原则是:输入边界SLICE的输出到输出边界SLICE互连线的使用:尽量不使用GRM的资源,Pin对Pin间使用最少级数的互连资源。所以,在图3-1~图3-4中所示的四个宏单元里,固定使用的互连资源为:A单元和B单元中,输入边界SLICE的LUT输出通过OMUX直接进入输出边界SLICE下的IMUX最邻近的端口。D单元中,利用快速进位链实现从下往上的互连。C单元中,因为纵向CLB结构对由下往下的信号传输不利,只能通过GRM来完成互连。图3-1至图3-4中斜线标注部分为总线宏要使用的固定逻辑,其余部分逻辑资源都是开放的,系统其他部分可以使用。
[0015] 本发明提出的这种总线宏结构精确地将FPGA内的可重构硬件电路从物理上纵向或横向分割为固定逻辑和动态可重构逻辑,从而使动可重构逻辑在被外部电路重构时不影响固定逻辑部分。
[0016] 由于合理地使用了纵向CLB结构的FPGA中的资源,本发明提出的总线宏结构不仅易于实现,而且能使信号通过合理的互连达到减少延时的目的。基于本发明提出来的总结宏单元组成的条状总线,可将FPGA内电路系统纵向或者横向分割,然后通过生成多个可重构模块的部分位流,完成动态可重构系统所需要的硬件资源,配合外部控制,实现动态可重构硬件平台。
具体实施方式
[0024] 本发明提出的总线宏结构在动态可重构的应用中体现价值,要配合整体流程发挥作用。
[0025] 利用本发明提出的总线宏结构实现动态可重构硬件的具体步骤如图4所示,具体描述如下:
[0026] (1)电路模块划分。将电路划分模块,顶层模块就由以下模块构成:固定模块,第一可重构模块,第二可重构模块,第一总线宏,第二总线宏等,其中可重构模块的所有端口都应该通过总线宏与其他模块相连,并且所有端口信号都应该是单向的。
[0027] (2)模块位置约束。将所有的模块及总线宏约束至合理的区域,一般推荐各模块均约束成纵向的条状,通过纵向的总线宏完成水平走向的逻辑互连。如有需要,也可以用横向的总线宏实现竖直走向的互连。
[0028] (3)生成整体位流。
[0029] (4)修改可重构模块,生成多个整体位流并提取部分位流或直接生成可重构部分位流。部分位流应包括可重构逻辑电路及总线宏的一半,如图2所示。
[0030] 通过外部控制逻辑,按需要将部分位流用于动态重构FPGA内的电路,使之分时完成不同任务。