首页 / 一种FPGA动态重构方法

一种FPGA动态重构方法失效专利 发明

技术领域

[0001] 本发明具体涉及一种FPGA动态重构方法,属于电子工程和计算机科学领域。

相关背景技术

[0002] FPGA的动态重构已经越来越多的应用到各个领域,FPGA的动态重构主要就是基于时分复用的思想在FPGA内部同一区域上分时实现不同的逻辑功能。目前常用的实现FPGA动态重构的方法主要分为以下三种(以Xilinx公司的Virtex-5系列FPGA芯片为例):
[0003] (1)基于Platform Flash PROM的重构方式
[0004] 此种重构方式虽然是最常用的方式,但是这里的Platform Flash PROM是Xilinx公司为配置FPGA而设计的专用Flash芯片,其普适性大大降低;同时,由于Xilinx公司对Platform Flash的限制,导致只能存储至多4种配置文件在其内部,这严重限制了大型系统的重构设计;此种方式中的Flash芯片需要连接到FPGA指定的管脚,这也限制了使用的灵活性;需要通过软件或者硬件跳线的方式选择相对应的配置方式,这就需要开发人员熟悉一款FPGA芯片的配置细节,增加了设计难度。但是不可否认,此种方式的实时性是最高的。
[0005] (2)基于BPI Flash PROM的重构方式
[0006] 此种重构方式所采用的BPI Flash种类受到限制;也只能存储至多4种配置文件在其内部;也需要通过软件或者硬件跳线的方式选择相对应的配置方式;Flash芯片也需要连接到FPGA指定的管脚。
[0007] (3)基于System ACE CF的重构方式
[0008] 此种配置方式是最方便的一种,屏蔽了很多底层细节,相关配置功能完全由Xilinx公司的System ACE芯片完成,这也就限制了开发人员的主动性,同时使得重构系统的设计完全受制于第三方芯片。此种方式的实时性是最低的。
[0009] 通过以上分析可以看出,目前实现FPGA动态重构的方法都存在很多不足,包括Flash芯片种类的限制、Flash内部可存储的配置文件个数的限制、Flash需要连接到FPGA固定管脚的限制以及受制于第三方控制芯片的限制。本发明在研究FPGA(XilinxVirtex-5系列)底层配置原理的基础上,提出一种FPGA动态重构方法,该方法可以有效解决上述FPGA动态重构时的不足。

具体实施方式

[0044] 下面结合附图对本发明做进一步详细的描述。
[0045] 系统结构框图如图1所示,本发明涉及一种FPGA动态重构方法,在本地重构时,通过自行设计的状态机将片外Flash中的数据读取并写入到FPGA内部的ICAP中,此过程中的ICAP同样需要状态机的控制;在远程重构中,利用自行编写的状态机完成网络流数据的接收、判断、转换并存入BRAM,待接收到一个配置文件的结束标志位时,将BRAM中的数据烧写进Flash,接着按照本地重构的方式进行重构。
[0046] FPGA重构状态机流程图如图2所示,其具体实施方式如下:
[0047] 步骤(1)当重构模式为本地重构时(此时Flash中的不同偏移地址处已经存储了不同的配置文件):
[0048] ①以4字节为一组读取Flash中的目标配置文件,同时将读取到的数据写入ICAP;
[0049] ②编写状态机控制ICAP端口信号的时序,首先使ICAP工作在X32模式。第一个时钟周期:设置ICAP的片选信号为高电平即逻辑‘1’、读写信号为高电平即逻辑‘1’、数据输入信号为十六进制数据0x00000000;
[0050] ③第二个时钟周期:设置ICAP的片选信号为高电平即逻辑‘1’、读写信号为低电平即逻辑‘0’、数据输入信号为①中读取到的4字节数据;
[0051] ④第三个时钟周期:设置ICAP的片选信号为低电平即逻辑‘0’、读写信号为低电平即逻辑‘0’、数据输入信号为①中读取到的4字节数据;
[0052] ⑤第四个时钟周期:设置ICAP的片选信号为高电平即逻辑‘1’、读写信号为高电平即逻辑‘1’、数据输入信号为十六进制数据0xaaaaaaaa;
[0053] ⑥步骤②-⑤完成了①中读取到的4字节数据的写入ICAP,接着继续以4字节为一组读取Flash数据,当读取到的数据不是十六进制0x000000b0时,重复步骤①-⑤;当读取到十六进制0x000000b0时,按照②-⑤将0x000000b0写入ICAP,同时继续以4字节为一组读取Flash数据,当紧接着读取到的数据为十六进制0x04000000时,按照②-⑤将0x04000000写入ICAP,此时就完成了目标配置文件在FPGA中的动态重构。
[0054] 步骤(2)当重构模式为远程重构时(此时首先需要在状态机的控制下将远程的配置文件写入片外Flash):
[0055] ①编写状态机读取网络传输过来的配置数据,并同时计数,当接收到的数据大小小于102字节时,忽略这些数据;当接收到的数据大小大于等于103字节时,将此时接收到的数据进行基于字节的大小端转换,即一个字节的最高位当作最低位、最低位当作最高位,然后将转换后的数据写入FPGA内部的BRAM(Block RAM)中;
[0056] ②直到接收到的数据为十六进制0x000000b0,并写入BRAM;
[0057] ③此时再次接收4字节的数据,当此时的数据为十六进制0x04000000时,将其写入BRAM;
[0058] ④然后在状态机控制下将BRAM中的数据烧写进片外Flash;
[0059] ⑤以4字节为一组读取Flash中的目标配置文件,同时将读取到的数据写入ICAP;
[0060] ⑥编写状态机控制ICAP端口信号的时序,首先使ICAP工作在X32模式。第一个时钟周期:设置ICAP的片选信号为高电平即逻辑‘1’、读写信号为高电平即逻辑‘1’、数据输入信号为十六进制数据0x00000000;
[0061] ⑦第二个时钟周期:设置ICAP的片选信号为高电平即逻辑‘1’、读写信号为低电平即逻辑‘0’、数据输入信号为⑤中读取到的4字节数据;
[0062] ⑧第三个时钟周期:设置ICAP的片选信号为低电平即逻辑‘0’、读写信号为低电平即逻辑‘0’、数据输入信号为⑤中读取到的4字节数据;
[0063] ⑨第四个时钟周期:设置ICAP的片选信号为高电平即逻辑‘1’、读写信号为高电平即逻辑‘1’、数据输入信号为十六进制数据0xaaaaaaaa;
[0064] ⑩步骤⑥-⑨完成了⑤中读取到的4字节数据的写入ICAP,接着继续以4字节为一组读取Flash数据,当读取到的数据不是十六进制0x000000b0时,重复步骤⑤-⑨;当读取到十六进制0x000000b0时,按照⑥-⑨将0x000000b0写入ICAP,同时继续以4字节为一组读取Flash数据,当紧接着读取到的数据为十六进制0x04000000时,按照⑥-⑨将0x04000000写入ICAP,此时就完成了目标配置文件在FPGA中的动态重构。
[0065] 综上所述,本发明设计的一种FPGA动态重构方法,能够使得存储在片外Flash中的配置文件的个数大大提高、片外Flash与FPGA的连接也不受固定管脚的约束、不需要第三方协议芯片的协助、Flash的类型也不受约束,能很大程度上提升FPGA动态重构设计的灵活性和易实现性。
[0066] 本发明说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
[0067] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页 第1页 第2页 第3页