跟着可编程技能的不断发展,FPGA被广泛运用于电子规划的各个领域。新的规划思维和规划办法也被不断的提出和运用,如FPGA的动态部分重构技能。所谓动态重构是指关于时序改动的数字逻辑体系,其时序逻辑的产生,不是经过调用芯片内不同区域不同逻辑资源的组合来完结,而是经过对具有专门缓存逻辑资源的FPGA,进行部分和大局芯片逻辑的动态重构而快速完结。动态可重构FPGA器材在编程结构上应具有专门的特征,其内部逻辑块和内连线的改动可以经过读取不同的装备比特流文件来完结逻辑重建。动态部分重构是指重新装备FPGA的部分区域,重构过程中,FPGA其余部分的作业状况不受影响。此办法减小了重构规模和单元数目,然后大大缩短了FPGA的重构时刻。
运用FPGA动态部分重构功用使硬件规划愈加灵敏,可用于硬件的长途晋级、体系容错和演化硬件以及通讯渠道规划等。动态部分重构可以经过两种办法完结:依据模块化规划办法(Module-Based Partial ReconfiguraTIon)和依据不同的规划办法(Difference-Based ParTIal ReconfiguraTIon),本文以依据模块化规划为例阐明完结部分重构的办法。
1、 FPGA装备原理简介
本文针对Xilinx公司的FPGA进行研讨,支撑模块化动态部分重构的器材族有Virtex/-II/-E和Virtex-II Pro。
Xilinx公司FPGA是依据SRAM工艺的,包括装备逻辑块(CLBs),输入输出块(IOBs),块RAMs,时钟资源和编程布线等资源。CLBs是结构用户所需逻辑的功用单元,IOBs供给封装引腿与内部信号引线的接口。可编程互连资源供给布线通道衔接可装备元件的输入和输出到相应的网络。
存储在内部装备存储器单元中的数值决议了FPGA完结的逻辑功用和互接办法。Virtex FPGA的装备存储器是由装备列(ConfiguraTIon Columns)组成的,这些装备列以笔直阵列的办法摆放,如图1给出了Virtex-E XCV600E器材的装备列构成图。装备存储器可分为五种装备列:Center 列包括四个大局时钟的装备信息;两个IOB 列存储坐落器材左面和右边一切IOBs的装备信息;CLB列存储FPGA根本逻辑功用的装备信息;Block SelectRAM Content列存储内部块RAM的装备信息;Block SelectRAM Interconnect列存储内部块RAM间互联的装备信息[3]。
图1 Virtex-E XCV600E的装备列构成及地址
装备列依据分配给它的装备地址(Configuration Address)来寻址。每一个装备列在FPGA内都有仅有的主地址(Major Address)空间。
FPGA的逻辑功用经过装备比特流(Configuration Bitstream)来完结。关于动态部分重构功用来说,需重构的装备逻辑是经过下载不同的部分装备比特流来完结的。
2、依据模块化动态部分重构FPGA的规划办法
所谓的FPGA模块化规划便是将体系依照必定规矩区分红若干模块,然后对每个模块别离进行规划、归纳,并将完结成果束缚在预先设置好的区域内,最终将一切模块的完结成果有机的安排起来完结整个体系的规划[4]。其区分模块的根本准则为:子模块功用相对独立,模块内部联系尽量严密,模块间的衔接尽量简略。关于那些难以满意模块区分准则的具有强内部相关的规划,不合适选用此规划办法。
FPGA模块化规划的长处在于:团队式并行作业然后加快整个项目的开发进度;每个子模块都可以灵敏运用归纳和完结东西独立进行优化,然后到达更好的优化成果;调试、更改某个子模块时,不会影响其他模块的完结成果,确保了整个规划的稳定性与可靠性。
模块化规划办法运用Xilinx公司的ISE软件规划东西,常用HDL言语作为规划输入,顶层模块描绘规划的大局逻辑,包括规划的输入/输出、一切子模块的黑盒子(Black Box)声明以及子模块之间的衔接联系。所谓黑盒子声明是指在顶层模块中只是对子模块进行端口描绘与信号特点声明,并不包括任何实践逻辑和时序联系的描绘。子模块一般也运用HDL言语描绘,别离规划出各子模块的逻辑实体并归纳所规划的子模块。因为子模块的输入/输出并不是整个规划的外部接口,所以在归纳过程中应制止子模块刺进I/O端口,而仅在归纳顶层模块时才刺进I/O端口。最终将一切子模块的完结成果和顶层的完结成果有机地安排起立,完结整个规划的完结。图2是依据模块化规划办法的流程。
选用模块化规划办法完结FPGA的动态部分重构,首要进行模块区分,将规划的固定逻辑即运转过程中不需求更改的逻辑区分到固定模块,将需求更改的部分区分到可重构模块中。其次模块的放置方位和巨细也有束缚,有必要遵从必定的规矩[5]:可重构模块的高度和器材的高度一致,从图1中可以直观地以为模块有必要包括整个装备列;可重构模块的宽度最小是4个Slice(一个CLB包括两个完全相同的Slice),并且有必要为4个Slice的倍数;假如可重构模块坐落器材的最左面或是最右边的Slice列,则一切坐落器材边际的IOBs将作为可重构模块的资源;为了削减规划的复杂度,可重构模块的数量应该尽量少等。
图2 模块化规划流程
3 、FPGA动态部分重构的完结
在本规划实例中,FPGA完结的功用是对外围接口电路进行逻辑操控以及依据外围不同设备输入的数据挑选恰当的数据处理算法。据此将规划区分为固定模块和可重构模块,其间固定模块内完结对外接口的操控逻辑,可重构模块内完结数据处理算法。本例中只将FPGA的逻辑功用替换一次,即可重构模块只部分重构一次,将其在重构前后的不同逻辑功用别离计作reconfig_a和reconfig_b。体系会依据需求动态部分重构FPGA,为不同的数据源挑选合适的处理办法。本规划由Virtex-E XCV600E器材来完结。
依据模块所需资源的巨细和模块区分准则,在用户束缚文件(UCF)中将每个模块的方位进行束缚,如下所示:
INST “fix” AREA_GROUP = “AG_fix” ;(1)
AREA_GROUP “AG_fix” RANGE = CLB_R1C1:CLB_R48C36 ;(2)
INST “reconfig” AREA_GROUP = “AG_reconfig” ; (3)
AREA_GROUP “AG_reconfig” RANGE = CLB_R1C37:CLB_R48C72 ;(4)
其间(2)、(4)指定了两个模块的具体方位。
依照模块化规划流程,别离对固定模块fix和可重构模块reconfig_a和reconfig_b进行规划归纳,再将两个可重构模块别离和固定模块进行组合,完结全体规划。此过程中可重构模块和FPGA的整个规划别离生成装备比特流。
图3和图4是FPGA部分重构前后的整个规划的物理完结,图中左半部分为固定模块区域,右半部分为可重构模块区域。从两图中可知在部分重构前后可重构模块区域内布线产生改动,而固定模块区域内布线没有产生改动。
图3 fix和reconfig_a全体规划的物理完结成果
图4 fix和reconfig_b全体规划的物理完结成果
FPGA动态部分重构时首要须将整个装备文件下载到器材中,重构时体系依据运转的需求挑选合适的部分重构装备比特流。Virtex-E XCV600E装备比特流的巨细为495204个字节,而可重构模块reconfig_a和reconfig_b装备比特流的巨细别离为93324个字节和111868个字节,因而选用部分重构不只可以在运转不间断的情况下更新可重构模块区域内的逻辑功用,并且也能使重构装备时刻大大削减。
3、 定论
本文以Xilinx FPGA为研讨目标,介绍了选用模块化规划完结FPGA动态部分重构功用的办法。FPGA的动态部分重构功用使硬件规划愈加灵敏,可以将不同规划定位到芯片内同一逻辑资源部分,重构此部分逻辑资源,一起坚持其他部分电路功用正常,然后灵敏快速的改动体系规划,可以削减器材的花费,下降功耗、更有用的使用电路板空间,可以运用于体系实时容错、自适应硬件算法等。
本文作者立异点:依据FPGA动态可重构技能将规划从一个纯空间的数字逻辑体系转换为在时刻、空间混合构建的数字逻辑体系。这种技能是数字体系规划办法、规划思维的革新,使FPGA资源使用率成倍进步。目前我国在FPGA可重构技能方面展开的研讨很少。本论文论述了选用模块化规划完结FPGA动态部分重构的办法,可以使FPGA部分逻辑功用重新装备过程中,其余部分逻辑功用正常运转,即完结了FPGA逻辑功用的动态部分重构。
责任编辑:gt