FPGA可重构技术就是通过上位机控制在FPGA运行过程中加载不同的Bitstream文件,FPGA芯片根据文件内的不同逻辑将内部的资源全部或部分进行重新配置以达到多种功能任务动态切换的目标,从而提高了使用FPGA进行开发的灵活度。
FPGA芯片本身就具有可以反复擦写的特性,允许FPGA开发者编写不同的代码进行重复编程,而FPGA可重构技术正是在这个特性之上,采用分时复用的模式让不同任务功能的Bitstream文件使用FPGA芯片内部的各种逻辑资源,使得同一个逻辑电路在不同时间段上加载不同的功能模块。从时间轴上看,系统的每一项任务功能在FPGA芯片上依次执行,系统的整体功能全部得以实现。从局部看,FPGA只执行了一项小任务,而从整体看,FPGA完成了整个系统任务。使用一块FPGA芯片完成了需要多块FPGA芯片的任务,由此可见FPGA内部资源的利用率得到很大提升。
FPGA上的可重构技术根据FPGA芯片内部的不同结构可以分为两种,分别是动态可重构和静态可重构。如果FPGA芯片是常规的SRAM结构,那么它只能做到静态可重构,重构过程必须首先发送中断指令停止正在运行的程序,之后再把全新的Bitstream文件加载到FPGA上。而如果FPGA芯片是特殊结构,那么它就可以进行动态可重构,重构过程可以在FPGA运行时期进行,动态可重构不但可以在系统运行时期随时改变模块参数,甚至可以在系统运行时期在FPGA内部的可重构区域动态重构电路逻辑。
FPGA的动态可重构又可以分为动态全局可重构和动态局部可重构。动态全局可重构是指上位机给FPGA芯片加载一个全新的配置文件,而这个配置文件包含了新的任务需求所要涉及的整片FPGA内所有资源,从而实现FPGA重新配置,上一个任务实现的所有逻辑电路将全部消除。在重构操作执行前,首先在外挂存储器中加载多个不同任务需求的配置文件,同时每个配置文件中都包含该任务所需要涉及的FPGA芯片全部逻辑资源。正是因为每一个配置文件都包含了整块FPGA芯片的所有资源,所以动态全局可重构只能从外挂存储器中选择将一个配置文件加载到FPGA芯片中。当这个配置文件对应的任务结束后,再选择另一个新的配置文件加载到FPGA芯片中,通过不同配置文件的分时加载实现系统功能任务的切换。
这种动态全局可重构的实现方式比较容易,只需要在配置文件中写入该功能任务所包含的FPGA全部资源,但是这种实现方式因为包含全部资源而导致文件较大,配置的时间也就相应变长。尤其是在两个功能任务对应的逻辑电路相差不大的配置文件先后进行重构时,本可以只改变相差部分的逻辑电路,却要对FPGA芯片内部的全部资源重新进行改变。
相比于动态全局可重构,动态局部可重构具有更大的灵活性。它只需要针对两个功能需求之间不同的部分逻辑功能生成配置文件,并加载到FPGA中指定的可重构区域进行重新配置,而在FPGA中指定的静态区域中的逻辑电路并不需要发生改变。假设一个系统要先后切换两个功能,而这两个功能需要使用4个配置文件。其中功能1需要使用配置文件1、配置文件2和配置文件3,功能2需要使用配置文件1和配置文件4。由于配置文件1在功能1和功能2中都需要,因此首先向FPGA的静态区域加载两个功能都需要的配置文件1,然后在可重构区域加载配置文件2和配置文件3。功能1运行结束后切换成功能2,由于配置文件1在功能2中仍然需要,因此在动态局部可重构中只需要将之前加载到FPGA可重构区域的配置文件2和配置文件3对应的逻辑电路消除,重新加载配置文件4生成对应的逻辑电路就可以完成功能2的运行。在两个功能切换的过程中配置文件1所在的静态区域并没有发生改变。
动态局部可重构因为只重构部分区域,所以配置文件中的重构内容也相应变小,重构时间也随之缩短。但是动态局部可重构的难点在于静态区域和可重构区域的大小划分是否可以满足系统功能要求、分别处在两个区域的模块之间如何进行通信以及如何在可重构区域进行合理的布局布线。因此使用动态局部可重构的实现过程相对复杂。
审核编辑 :李倩
全部0条评论
快来发表一下你的评论吧 !