论文阅读理论方法总结Yongfufeng一.FPGA动态可重构基础理论严格来讲,系统重构的概念可分为静念系统重构和动态系统重构。静态系统重构是指目标系统的逻辑功能静态重载,即FPGA芯片功能在外部逻辑的控制下,通过存贮于存贮器中不同的目标系统数据重新下载,而实现芯片逻辑功能的改变。也就是指系统中PLD逻辑的静态重载,在系统空闲期间通过各种方式进行在线编程,而不是在其他部分动态运行时重载。1.1动态可重构概念及原理动态重构系统概念的提出早于FPGA动态可重构技术的提出。动态重构系统指对于时序变化的数字逻辑系统,其时序逻辑的发生,不是通过调用芯片内不同区域、不同逻辑资源来组合而成的,而可通过对具有专门缓存逻辑资源的FPGA,进行局部的和全局的芯片逻辑的动态重构而快速实现。也就是指在系统实时运行当中对FPGA的逻辑功能实时地进行动态配置,能够只对其内部需要修改的逻辑单元进行重新配置,没有被修改的逻辑单元将不受影响,正常工作。一般由传统处理器执行主程序,特定的任务赋给以FPGA为基础的协处理器以加速它们的执行。事实上,在大部分处理时间内,只有相对较小的一部分用来计算内部任务,而硬件可以显著加速执行的时间。在重构的过程中,根据需要,任务可以交换进入协处理器进行处理。所谓FPGA动态可重构技术,是指基于静态存储器(SRAM)编程和专门结FPGA,在一定的控制逻辑的驱动下,不仅能实现系统重新配置电路功能,还能对芯片逻辑功能实现系统的高速动态变换。大多数FPGA都是基于SRAM查找表结构,它们一般只适用于静态重构,向SRAM一次下载全部配置数据而设定FPGA的逻辑功能。根据FPGA的、配置方式等不同,全部重构时间为几毫秒到几秒不等。过去大家普遍进行重构研究的FPGA主要有,Xilinx的XC6200系列、以及Atmel的AT6000等。它们也是基于SRAM结构,但是SRAM的各单元能够单独访问配置,分重构。它们的功能互不影响,因而具有部分重构的特征。这样做的优点显但也会付出增大硬件电路规模和功耗的代价。要最终实现电子系统的完全实构,应采用结构上具有动态部分重构功能的FPGA器件,如现在Xilinx的Virtex—II系列。从动态可重构的特征可以引出一种新的设计思想:1,以小规模硬件逻辑资源来实现大规模系统时序功能,将传统设计的空间分布的硬件逻辑,分为器件外部特征不变,而内部逻时间上交替变换,并共同在时问空间上构成系统整体逻辑功能。FPGA动态可重构技术主要特征是将整体按功能或按时序分解为不同的组合,并根据实际需要,分时对芯片进行动态重构,以较少的硬件资源,去实现较大的时序系统整体功能。图1给出了一种典型的FPGA动态可重构原理示意图。从图1中可以看出,在外部逻辑的控制下,可以实时动态地对芯片逻辑实现全部重构或局部重构,通过控制布局、布线的资源,来实现系统的动态重构。图1.1典型的FPGA动态可重构原理图要使FPGA有效地实现实时系统动态重构,FPGA结构上必须满足以下要求:1,不仅具有可重新编程能力,同时可动态进行系统资源地重新配置,而不会破坏器件中全局或局部逻辑操作能力。2,FPGA内部配置信息对称,即在任何时刻、任何通用的基本逻辑功能可以配置于器件地任何一个位置,运行用简单模型组合去实现设计中的复杂功能。1.2FPGA配置架构FPGA的配置文件通过数据总线传输到FPGA的数据缓冲区,下载处理器处理缓冲区中每一帧配置数据,并把其下载到FPGA的配置RAM中,也就是逻辑配置层。逻辑配置层的中RAM的取值决定了FPGA的功能。也就是说,在常见的FPGA中,其配置电路的结构原理图如图1.2FPGA配置电路结构图从上图中反映的配置过程我们不难发现,制约FPGA配置速度的因素有两个;一个是配置数据的下载速度;一个是FPGA内部的数据处理速度。FPGA的配置速度是动态可重构系统中一个非常重要的指标,快速高效的下电路设计是可重构系统的一个关键问题。一般说来,加快重配置过程方法有三种:第一、优化FPGA配置电路总线,使配置文件能够以更快的速度下载到FPGA配置单元当中;第二、减小配置文件,在配置速度不变的情况下这也是一个十分有效的办法;第三、优化FPGA的重配置流程,简化FPGA的配置步骤,减少不必要的时间开销。二.动态部分可重构的两种模式XilinxVirtex系列一个最重要的特性就是动态可重构。当器件的同一个区域要载入不同的设计功能并且又不需要重新配置整个电路,也不影响其他电路的行时就需要部分动态可重构。这样既可以降低电路能量消耗又可以提高板子利率、加快下载速度。Virtex器件的有效部分动态可重构可以使用Selectmap模式或者Boundaryscan(JTAG)模式下载。不需要重新配置器件也不需要下载完整的配置,新的据只需下载到器件的可重构部分。对于目前的FPGA器件来说,数据是以栅(column)为基础下载,最小的可下载单元是一帧(frame)的配置比特流,它据目标器件的不同而有不同的大小。FPGA的动态可重构有两种不同的方式:基于模块(Module-based)的部分可重构。基于差异(Difference-based)的部分动态可重构。2.1基于模块的部分可重构部分可重构定义了一些特殊的区域,这些区域可以在器件的其他部分还在运行的情况下进行重构,这些特殊区域称作可重构区域。基于模块的部分可重构就是将电路功能划分成一个个的模块,这些模块包括可重构模块(可以实现重构的特殊区域)和固定模块(功能不变不能实现重构的区域)。可重构模块具有以下的一些特性:1.重构模块的高度是整个器件的高度。2.重构模块的宽度最小可以是四个slice最大可以到整个器件的宽度,但必须以四的整数倍的slice增加。3.重构模块放置的水平坐标必须是四的整数倍的slice的边界,例如:左边边界可以放置在x--0,4,8,⋯⋯4.模块宽度范围内包括的所有逻辑资源都被看作是可重构模块的一部分,包括slice、TBUF、RAM块、乘法器、lOB和布线资源。5.时钟逻辑和可重构模块是相互分离的,时钟和比特流是相互独立的。6.可重构模块上部和下部的IOB是可重构模块资源的一部分。7.如果一个可重构模块贯穿了整个板子的左部和右部,那么每一边的IOB都是可重构模块资源的一部分。8.为了降低设计难度,要尽量减少可重构模块的个数(理想状况下,如果可能的话,最好只有一个可重构模块),所以说slice的数目能被四整除是可重构模块区域的唯一约束。9.可重构模块的边界不能改变。任何一个可重构模块的位置、所占据的区域都是固定的。10.可重构模块和其他模块之间的通信(包括可重构模块和普通固定模块之间、可重构模块和可重构模块之间)都是通过使用特殊的总线宏,如图2.1。图2.1线宏用作模块内部通信11.为了保证重构的时候实现合适的操作,需要外在的握手逻辑。在可重构过程之前和之后,要保存可重构模块内的存储元素的状态。如图2.2所示,是一个具有两个部分可重构模块的设计,各模块间都是通过总线宏来进行通信的。图2.2具有两个可重构模块的设计布局图图2.3可重构模块的设计流程图图5.3基于模块化的配置文件生成流程基于模块化的配置文件生成流程与模块化设计方法紧密联系,并要求系统是按照模块化设计方法开发的。在模块化设计方法中,系统首先被划分为一些具有特定功能、相互之间比较独立的模块,并且模块之间的接口和互连关系已经被预先定义好。随后,各个模块被不同的开发人员并行地设计并实现。最后,各个模块按照最初定义的互连关系被组装起来,形成一个完整的系统。当需要动态改变某个模块的功能时,开发人员仍然需要按照模块化设计方法的流程得到该模块的布局布线文件,但是不需要进行模块的组装工作。取而代之的是:直接根据布局布线文件得到该模块所对应的硬件区域的配置数据文件。2.1.1总线宏的通讯为了促进可重构模块之间的通信,需要保证穿过可重构模块边界的布线资源是完全固定而且必须是静态的,这就需要一种特殊的总线宏。总线宏的主要作用足保证穿过可重构模块边界的布线资源固定,使可晕构模块边界的布线资源不被改变。目前使用如图2.3就是所需的这种总线宏:其中,左边的A是一个模块,右边的B是另一个模块,A或者B是可重构模块,或者AB全是可重构模块。A和B中间的总线宏,就是支持AB之间通信的特殊总线宏。它保证AB间布线资源的不变性。也就是说当一个模块进行重构时模块内部信号用到的布线资源不能改变。如图2.3,总线宏是两个模块问的一个固定的布线桥。它是一个事先已经布线好的用来确定精确布线轨道的宏,并且在编辑改变的时候保持不变。对于每个不同的设计应用来说,它是一个绝对固定不变的总线宏。目前使用的总线宏由八个三态缓冲器(TBUF)组成,能够实现4个比特宽度的数据通路。其如图2.4。图2.4总线宏图2.5总线宏的物理执行总线宏允许信息双向传递,一个比特的信息使用一个三态缓冲器的长线。Virtex器件的每一行支持一个总线宏的四个比特。总线宏的位置精确的跨骑在模块A和模块B之间,其中四栅三态缓冲器在A内,另外四栅三态缓冲器在B内。由三态缓冲器长线输出所组成的固定桥确保两个模块问固定的通信。总线宏的信息通讯是双向的,既可以从左到右也可以从右到左。但是对于这个设计来说,一旦信息通信方向确定以后就不能再改变。2.1.2总线宏的基本设计方式总线宏的基本设计方式为:1)在设计初期将可重构硬件资源规划好,重构模块和固定模块划分好.2)在模块功能划分好后,将总线宏的位置锁定在固定模块和重构模块的边界.3)总线宏的设计工具是使用FPGA底层编辑器FPGAEditor。FPGAEditor是一个手工布局布线设计工具,需要设计者具有一定设计经验才能完成设计,单是FPGAEditor的使用灵活性也更高。通过FPGAEditor可以编辑或者查看可配置逻辑功能块(CLB),I/O功能块等一些FPGA内部的基本单元。使用总线宏约束重构模块和固定模块之间的布线资源使其不被改变。总线宏的设计需要消耗额外的硬件资源,造成一些资源浪费;另外总线宏固定了重构模块和固定模块之间的布线,即固定模块之间的通信,模块之间不再可以进行任意通信,这在一定程度市内过降低了部分重构系统在实现上的灵活性。但是在当前技术条件下,基于模块的部分重构设计使用总线宏的通讯机制是目前最佳的解决方案。2.2基于差异的部分可重构基于差异的部分可重构只是比较重构前后的电路差别,产生一个只包含重构前后设计差别的比特流。可以使用两种方法来改变设计、产生重构酊后的差别。分别是前端改变(HDL描述)和后端改变(NCD文件)。对于前端改变来说,设计必须重新综合,创建一个新的布局布线好的NCD文件。而对于后端设计来说只需要改变NCD文件,不必重新综合,可以通过FPGAEditor工具来修改。使用BitGen就可以生成电路可重构部分内开关状态差别的可下载差异文件。可重构前后开关配置的改变非常迅速比重新配置整个电路要快很多,就像差异比特流比整个电路的比特流小很多一样。差异比特流很小,所以能够迅速而简单的下载到电路中。如果设计中可重构的逻辑块很大、功能很复杂,则需要使用基于模块的部分可重构。然而,有很多电路只需要修改比较少的内容,或许只需要修改一个LUT内容、BRAM的内容或者一个I/O口等,这种类型的修改可以轻松的通过XilinxFPGAEditor修改布局布线后的NCD文件来实现。一旦修改完成后,利用BitGen来产生重构前后差异的下载文件,即可实现部分重构。然而,要完成以上操作要很好的理解如何使用FPGAEditor来修改逻辑以及BitGen相关选项的选择。在FFGAEditor中可以进行三种方式的修改:改变I/O标准改变BRAM内容改变LUT设计。其中可以选择的最小逻辑元素是slice。使用FPGAEditor修改设计时,首先要打开NCD文件,看到逻辑块后找到可选择的最小逻辑元素slice,打开片slice的结构图窗口。要修改BRAM的内容时,首先打开NCD文件找到BRAM后,打开BRAM的结构图可进行BRAM修改。同样对I/O标准的修改也