动态可重构基本理论.docx

上传人:b****3 文档编号:11088567 上传时间:2023-05-29 格式:DOCX 页数:17 大小:404.88KB
下载 相关 举报
动态可重构基本理论.docx_第1页
第1页 / 共17页
动态可重构基本理论.docx_第2页
第2页 / 共17页
动态可重构基本理论.docx_第3页
第3页 / 共17页
动态可重构基本理论.docx_第4页
第4页 / 共17页
动态可重构基本理论.docx_第5页
第5页 / 共17页
动态可重构基本理论.docx_第6页
第6页 / 共17页
动态可重构基本理论.docx_第7页
第7页 / 共17页
动态可重构基本理论.docx_第8页
第8页 / 共17页
动态可重构基本理论.docx_第9页
第9页 / 共17页
动态可重构基本理论.docx_第10页
第10页 / 共17页
动态可重构基本理论.docx_第11页
第11页 / 共17页
动态可重构基本理论.docx_第12页
第12页 / 共17页
动态可重构基本理论.docx_第13页
第13页 / 共17页
动态可重构基本理论.docx_第14页
第14页 / 共17页
动态可重构基本理论.docx_第15页
第15页 / 共17页
动态可重构基本理论.docx_第16页
第16页 / 共17页
动态可重构基本理论.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

动态可重构基本理论.docx

《动态可重构基本理论.docx》由会员分享,可在线阅读,更多相关《动态可重构基本理论.docx(17页珍藏版)》请在冰点文库上搜索。

动态可重构基本理论.docx

动态可重构基本理论

论文阅读理论方法总结

Yongfufeng

 

1.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标准的修改也一样,打开NCD文件找到I/O后,打开I/O构图进行I/O标准的修改。

以上三种修改都符合有效的重构流程。

除了这三种方式还有其他的修改方式,比如:

颠倒极性、振荡器的初始化和重新设置值、上拉、下拉外部管脚或者RAM写方式。

所有这些特性都能够在实际的slice、RAM逻辑块或IOB中修改。

但是,最好不要进行任何有可能影响布线或者产生内部连接冲突的修改行为。

图2.6计差异的设计流程

2.3基于模块与基于差异部分的可重构比较

基于模块的部分态可重构将设计分解成模块,对一个设计来说,每个模块都是完全独立的。

如模块之间需要交流通信,就需要一种特殊的总线宏,它允许信号穿过部分可重的边界。

总线宏为设计的内部通信提供了一个固定的总线。

每次实现部分可重时,总线宏就用来确定模块间的布线通道没有改变,保证正确的连接。

基于差异的部分可重构只是基于比较重构前后的电路差别,产生一个只包含重构前后设计差别的比特流。

差异比特流比整个电路的比特流小很多,所以能够迅速下载到电路中。

但是如果电路功能比较复杂则差异文件会非常庞大,所以基于差异的部分可重构只适用于功能简单的电路,对于功能复杂的电路需要使用基于模块的部分可重构。

 

三.动态重构FPGA电路设计流程

静态重构FPGA电路设计是一种自顶向下的设计流程,先进行行为级电路描述,然后转化为寄存器传输级的逻辑电路,然后结合FPGA器件厂家的工艺库,经过逻辑综合生成网表文件,然后进行布局、布线并通过相应软件产生FPGA的配置文件,最后将配置文件下载至FPGA中,即完成FPGA的整个电路设计,还要在各个不同层次进行仿真验证,以保证设计的正确性。

动态重构FPGA系统的设计流程与静态重构FPGA不同,在逻辑设计阶段针对同一个器件设计多个功能电路Fl,F2,⋯⋯,Fn,这些电路的配置文件都预先生成好,存储在存储器件中,称为重构件。

根据电路的调用顺序来定义重构状态图。

在系统运行过程中,根据重构状态图,结台系统的当前状态,将相应的重构件配置到FPGA中,实现某一时刻所需的硬件功能。

重构件可以是某个特定的算法电路,比如FIR,IIR,也可以仅仅是完成输入、输出间的某种特定连接,也可以实现其他电路功能。

3.1动态重构FPGA系统的设计流程

动态重构FPGA系统的设计流程由三个阶段组成:

1)设计阶段:

需要经过逻辑设计、器件综合、器件布局/布线等步骤,并在不同层次进行仿真验证,保证设计的J下确性,为了尽可能减小重构件的数据量,在逻辑设计和器件布局/布线过程中,要采用一些特殊的设计方法,并需要更为详尽的考虑和控制。

2)编译阶段:

动态重构FPGA系统预先生成多个重构件,构成一个重构件数据库,生成重构状态图,对各重构件的载入顺序进行定义,重构状态图中的节点代表目前系统FPGA所处的配件状态,节点间的有向边则代表重构件的下载操作。

3)运行阶段:

主要是对动态重构系统的重构操作进行管理与监控,根据系统的运行状态和重构状态图,进行重构件的调用和下载操作,实现FPGA器件功能的动态重构。

因为FPGA动态可重构在实现小型化、集成化和高可靠的同时,减少了风险,降低了成本,缩短了周期,提高了硬件的利用率,能在广泛的应用项目中发挥其优势,具有极强的竞争能力。

所以FPGA动态可重构技术已引起研究领域和应用领域的广泛关注和兴趣。

3.2基于模块的局部动态可重构设计流程概述

基于模块的部分可重构设计允许设计者独立综合每个模块,全部综合完毕后

有模块一起编译,这种并行方法即节省时间又允许每个模块独立终止运于模块的部分可重构设计还需要设计者确保模块分区正确,并且在最终编够一起正常工作。

这种模块设计最好用做可以分区成自我控制模块的大型分区后的模块数量越少越好。

图3.1基于模块的部分可重构流程

基于模块的部分可重构流程如图3.1所示,该设计流程主要包括两个阶段:

◆第一阶段:

模块设计入口(模块顶层设计)和模块设计综合。

◆第二阶段:

模块设计实现(初始预算、模块实现和最终编译)。

这两个阶段设计,可以产生整个电路功能和动态可重构部分的下载文件,该文件下载到实验板Virtex2中,并通过内部控制器对内部时合理控制,就可实现动态可重构,并且能够通过实验板观察相关结果。

3.2.1模块设计入口和综合

在这一阶段,要用硬件描述语言实现电路功能并综合,要同时做顶层设计和

设计。

◆顶层设计:

在进行模块设计执行阶段之前,设计者要首先完成顶层设计的设计入口和综合。

◆模块设计:

在激活模块执行阶段之前。

设计者要先完成该模块的设计入口和综合工作,各个模块的综合可以并行进行。

设计者使用HDL语言创建一个顶层设计文件并对其综合。

顶层设计包括所有全局逻辑,I/O和所有的模块。

这些模块被例示为“黑匣”结构,只有端口、指向、连接模块的信号和I/O端口。

这~步是在模块设计运行之前所必需的。

设计者要使用HDL语言创建每个独立的模块设计并练合这些设计,但是这一步不一定必须在模块设计运行之前。

可以在设计模块的同时进行初始是要开始激活模块运行之时,一定要将独立模块设计综合完毕。

可以使用文字输入工具进行Vedlog或者VHDL语吉的功能编写。

为了综合

计,可以使用Xilinx的工具或者Xilinx支持的第三方工具。

比如用Xilinx

nthesisTechnology(XST)进行综合,产生NGC格式的网表,或者使用Synplify

行综合,产生EDIF格式的网表。

模块设计入口和综合的流程如图4.2:

3.3基于FPGA动态可重构的优化算法

3.3.1遗传算法

遗传算法是由美国Michigan大学的J.Holland教授于1975年首先提出的。

他是基于进化论的原理发展起来的一种广为应用的、高效的随机搜索与优化的方法。

遗传算法是模拟生物进化现象(自然选择、交叉、变异)的一种概率搜索和最优化方法,用于解决不连续优化问题。

它是一类借鉴生物界的进化规律(适者生存、优胜劣汰遗传机SzJ)演化而来的随机化搜索方法,是模拟生物遗传现象的工程模型。

将遗传算法与可编程逻辑器件结合,用算法控制改变芯片结构,使其形成各式各样的逻辑电路,来实现遗传演化中的各类操作,是一个很有前途的领域。

随着FPGA芯片的发展,大群体规模的并行演化模式均可得以实现。

3.3.2蚁群算法算法

蚁群算法是由意大利学者Dorigo等人于20世纪90年代初期通过模拟自然界中蚂蚁集体寻径的行为而提出的一种基于种群的启发式仿生进化系统。

蚁群算法包含两个基本阶段:

适应阶段和协作阶段。

在适应阶段,各候选解根据积累的信息不断调整自身结构。

在协作阶段,候选解之间通过信息交流,以期望产生性能更好的解,这类似于学习自动机的学习机制。

蚁群算法最早成功应用于解决著名的旅行商问题,该算法采用了分布式正反馈并行计算机制,易于与其他方法结合,而且具有较强的鲁棒性。

蚁群算法创立十多年来,无论在算法理论还是在算法应用方面都取得了很多突破性研究进展。

作为一个前沿性的热点研究领域,蚁群算法已引起越来越多国内外研究者的关注,近五年内其研究人员和研究成果均成几何级数增长,其应用范围几乎涉及到各个优化领域,而且还出现了蚁群算法仿生硬件,这种新兴的仿生优化算法已经显示出强大的生命力和广阔的发展前景。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2