CN104570846B - Fpga重配置控制方法 - Google Patents
Fpga重配置控制方法 Download PDFInfo
- Publication number
- CN104570846B CN104570846B CN201410749271.7A CN201410749271A CN104570846B CN 104570846 B CN104570846 B CN 104570846B CN 201410749271 A CN201410749271 A CN 201410749271A CN 104570846 B CN104570846 B CN 104570846B
- Authority
- CN
- China
- Prior art keywords
- configuration
- fpga
- state machine
- state
- controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Logic Circuits (AREA)
- Stored Programmes (AREA)
Abstract
本发明是FPGA重配置控制器,包括配置控制电路和与配置控制电路连接的配置存储器;配置控制电路包括处理器控制接口、主状态机、配置存储器读写控制接口以及配置数据传输单元;处理器控制接口、配置存储器读写控制接口以及配置数据传输单元分别与主状态机连接;处理器控制接口包括局部总线接口、寄存器及中断模块;主状态机在控制器处于工作状态时收到寄存器及中断模块的软件重配置命令或者外部的硬件重配置命令信号后,开始重配置工作。本控制器既可用于对整片FPGA的全局重配置,也可用于对FPGA局部逻辑资源的重配置,且对FPGA不同的配置接口均可灵活支持。可以无需处理器干预自动完成重配置过程,具有很好的自动化特性。
Description
技术领域
本发明属于嵌入式计算系统领域,尤其涉及FPGA重配置控制方法。
背景技术
嵌入式计算系统是一种以应用为中心,以计算机处理技术为基础的计算系统,其对于功能、可靠性、成本、体积、功耗等方面都有着严格要求。随着近年来嵌入式计算技术的迅猛发展,一方面,系统被要求具备更高速的处理能力、数据传输能力和更灵活的互联拓扑结构,可以涵盖从前端传感器信号采集到后端计算的全任务阶段处理过程;另一方面,系统还需要降低成本、体积与功耗,即需要更高效率地发挥硬件资源的计算性能。
可重构嵌入式计算系统是嵌入式计算领域未来的发展趋势,其核心思想是在系统运行期间对硬件资源进行实时重构。通过这种方式,一方面可以针对任务阶段的不同和系统各功能在不同阶段所需的不同处理能力进行硬件资源的重构与调整,从而提高了系统应用的灵活性,;另一方面通过对计算资源的时分复用,提高了对硬件计算资源的利用效率,降低了成本、体积与功耗。
计算系统的可重构思想早在20世纪60年代就由美国加利福尼亚大学的GeraldEstrin教授提出,但直至90年代FPGA的出现才使其由理论研究走向实际应用。FPGA的在线编程是实现嵌入式计算系统硬件资源运行时实时重构的主要技术手段,通过对FPGA芯片的逻辑资源进行实时重配置,可以实时改变硬件电路的结构与功能。FPGA的在线重配置分为全局重配置和局部重配置两种形式,前者是对FPGA芯片的所有逻辑资源进行重新配置,通常的SRAM工艺型FPGA均支持该种配置,后者是在不中断FPGA芯片内部其他逻辑资源正常工作的情况下,对局部的逻辑资源进行重配置,目前市场上支持局部重配置的FPGA芯片主要是Xilinx公司的Virtex系列芯片。
通过文献资料检索可以查到当前国内一些关于可重构嵌入式计算系统和FPGA动态重配置的综述性文章,可重构计算系统主要是一些高校在从事理论方面的研究,但FPGA动态重配置技术已经有了一定的工业应用。从资料中可知,FPGA动态重配置技术的应用大多是针对具体项目的实现,目前尚缺乏通用化、平台化的FPGA重配置数据及重配置过程的管理和控制手段。
发明内容
为了解决背景技术中所存在的技术问题,本发明提出一种功能齐备的通用型FPGA重配置控制器,利用该控制器可以对重配置数据文件进行管理,并在收到重配置命令时选择命令指定的重配置数据文件来通过FPGA配置接口对FPGA发起全局或局部的重配置。该控制器可以使FPGA重配置的过程对于使用者更加透明,使用该控制器的设计人员只需专注于功能设计本身而无需对FPGA的重配置过程细节进行太多额外的了解与考虑。
本发明的技术解决方案是:FPGA重配置控制器,其特征在于:所述控制器包括配置控制电路和与配置控制电路连接的配置存储器;所述配置控制电路包括处理器控制接口、主状态机、配置存储器读写控制接口以及配置数据传输单元;所述处理器控制接口、配置存储器读写控制接口以及配置数据传输单元分别与主状态机连接;所述处理器控制接口包括局部总线接口、寄存器及中断模块;所述主状态机在控制器处于工作状态时收到寄存器及中断模块的软件重配置命令或者外部的硬件重配置命令信号后,开始重配置工作。
上述配置数据传输单元包括DMA控制器、缓冲FIFO和配置接口控制器;DMA控制器在收到主状态机的启动配置数据传输命令时,根据其提供的配置文件基址和长度,从配置存储器中读取配置数据并将之写入缓冲FIFO;配置接口控制器在缓冲FIFO中有数据时从中读取配置数据,并发送到外部被配置FPGA的配置接口中。
上述配置存储器内部数据组织结构包括配置文件和配置管理信息;所述配置管理信息包括配置命令ID-文件ID索引表和配置文件信息表;控制器处于维护状态时,配置存储器中的配置文件及相应的配置管理信息由外部处理器写入或修改;控制器处于工作状态时,主状态机在收到重配置命令后根据重配置命令ID来从配置存储器中获取相应的配置管理信息及配置文件数据。
FPGA重配置控制方法,其特征在于:所述FPGA重配置控制方法包括硬件触发重配置方法和软件设置重配置方法;所述硬件触发重配置方法包括以下步骤:
1)若想让控制器对外部的硬件重配置命令信号进行响应,需首先使能控制器的硬件重配置功能。处理器可通过“局部总线”对“寄存器及中断模块”中的重配置使能寄存器进行读写,来使能硬件重配置功能;
2)当控制器处于工作状态,硬件重配置功能使能并且“主状态机”处于【空闲】状态时,若“主状态机”收到外部传来的硬件重配置命令信号,则“主状态机”进入【启动】状态,开始重配置工作;
3)在【启动】状态,“主状态机”解析出外部硬件重配置命令信号中包含的重配置命令ID,然后进入【获取配置文件基址、长度和相关信号】状态;
4)在【获取配置文件基址、长度和相关信号】状态,“主状态机”通过“存储器读写控制端口”对配置存储器进行访问,根据重配置命令ID在配置命令ID-文件ID索引表中查询出对应的配置文件ID,进而在配置文件信息表中查询出对应配置文件的存储基址、文件长度和相关信息。根据配置文件的相关信息,可判断出此次重配置的配置范围属于全局重配置还是局部重配置。然后“主状态机”进入【发起FPGA配置启动信号】状态;
5)在【发起FPGA配置启动信号】状态,“主状态机”需向被配置FPGA发出配置启动控制信号,来通知被配置FPGA进行配置启动准备工作。然后“主状态机”进入【监控FPGA配置启动完成信号】状态;
6)在【监控FPGA配置启动完成信号】状态,“主状态机”监控被配置FPGA的用于标识配置启动完成状态的信号,来判断被配置FPGA的配置启动准备工作是成功完成还是失败。若配置启动成功完成,则“主状态机”进入【启动配置数据传输】状态,并转入步骤7);若配置启动失败,则“主状态机”进入【判断是否进行重试配置】状态,并转入步骤13);
7)在【启动配置数据传输】状态,“主状态机”向“DMA控制器”发出启动配置数据传输的命令信号,并给出配置数据文件的基址和长度。随后“主状态机”转入【监控配置结果】状态;
8)“DMA控制器”在收到“主状态机”发出的启动配置数据传输的命令时,根据其提供的配置文件基址和长度,从配置存储器中读取配置数据并将之写入“缓冲FIFO”;
9)“配置接口控制器”在“缓冲FIFO”中有数据时从中读取配置数据,并发送到外部被配置FPGA的配置接口中。在配置数据发送完毕后,“配置接口控制器”监控外部被配置FPGA的用于表示配置完成状态的信号,并把配置结果反馈给“主状态机”;
10)“主状态机”在【监控配置结果】状态监控“配置接口控制器”反馈的配置结果。若配置成功,则“主状态机”进入【发送被配置FPGA复位信号】状态,并转入步骤11);若配置失败,则“主状态机”进入【判断是否进行重试配置】状态,并转入步骤13);
11)在【发送被配置FPGA复位信号】状态,“主状态机”向被配置FPGA的重配置过的逻辑发送复位信号,然后回到【空闲】状态;
12)被配置FPGA在收到复位信号后,对重配置后的逻辑进行复位,待重配置后的逻辑就绪后,向被配置FPGA向配置控制电路的“寄存器及中断模块”发送逻辑状态就绪信号。处理器可通过中断或者查询的方式从“寄存器及中断模块”获知被配置FPGA的重配置后的逻辑已就绪(详见后文“处理器监控控制器工作状态过程”)。完成整个重配置过程;
13)如果在上述步骤6)发生配置启动失败或者在步骤10)发生配置失败,则“主状态机”进入【判断是否进行重试配置】状态。如果还未超过允许的最大重试配置次数,则“主状态机”进入【发起FPGA配置启动信号】状态重新进行配置过程,并转入步骤5);如果已经超过了允许的最大重试配置次数,则不再进行重试配置,“主状态机”进入【配置错误】状态,并转入步骤14);
14)在【配置错误】状态,记录配置错误信息后,“主状态机”回到【空闲】状态。
上述软件设置重配置方法包括以下步骤:
1)若想让控制器对处理器发来的软件重配置命令信号进行响应,需首先使能控制器的软件重配置功能。处理器可通过“局部总线”对“寄存器及中断模块”中的重配置使能寄存器进行读写,来使能软件重配置功能。然后处理器再通过“局部总线”对“寄存器及中断模块”中的软件重配置命令寄存器进行读写,来发出软件重配置命令;
2)当控制器处于工作状态,软件重配置功能使能并且“主状态机”处于【空闲】状态时,若“主状态机”收到“寄存器及中断模块”传来的软件重配置命令,则“主状态机”进入【启动】状态,开始重配置工作;
3)之后步骤与所述硬件触发重配置方法的步骤3)到步骤14)相同。
本发明的优点是:
1)本控制器的透明性很好。本控制器使得FPGA重配置的过程对于使用者而言是透明的,使用该控制器的设计人员只需专注于功能设计本身而无需对FPGA的重配置过程细节进行太多额外的了解与考虑,从而可以提高工作效率。
2)本控制器的兼容性很好。它对于FPGA不同的配置范围和配置接口均可灵活支持:
2.1)本控制器既可以用于针对整片FPGA全部逻辑资源的全局重配置应用,也可以用于针对FPGA局部逻辑资源的局部重配置应用。
2.2)本控制器的配置控制电路中的“配置接口控制器”的独立性和可更换性使得本控制器可以适用于各种FPGA配置接口,例如对于Xilinx FPGA既可使用Slave SelectMAP配置接口,也可使用Slave Serial配置接口等,仅需要针对不同应用对“配置接口控制器”做相应的更换即可。
3)本控制器针对配置文件建立了灵活有效的管理系统。用户可以根据自己的应用需要,在配置存储器中管理多个配置文件,并灵活地建立配置命令ID与配置文件ID之间的索引关系,从而建立起具体应用需求与重配置文件之间的对应关系。在很多重配置应用场合均需要这样的配置文件管理特性。
4)本控制器具有很好的自动化特性。在收到重配置命令后,配置控制电路可以在无需处理器干预的情况下,自动从配置存储器中获取配置文件的相应信息并自动向待配置的FPGA发送配置数据,在整个过程中自行监控配置结果,并在配置发生错误时进行重试。控制器的自动化特性使其在工作时无需外部处理器的干预,从而释放了计算资源,提高了整个系统的工作效率。
附图说明
图1为本发明的控制器硬件结构框图;
图2为本发明的控制器的配置控制电路的主状态机图;
图3为本发明的控制器的配置存储器的数据组织结构图。
具体实施方式
本控制器由配置控制电路与配置存储器两部分构成,配置控制电路使用FPGA或者CPLD作为实现平台,配置存储器采用非易失存储器芯片。控制器的硬件组成如附图1所示。控制器前端为局部总线接口,外部处理器通过局部总线对控制器进行控制。控制器后端为重配置过程的控制信号,与被重配置的FPGA相连。
配置控制电路是本控制器的核心部分,其作用分为两部分:1、在接收到软件或硬件的重配置命令后,从配置存储器中获取相应的配置管理信息和配置数据,对外部FPGA进行重配置工作;2、对配置存储器进行访问管理。
配置控制电路由四部分组成,分别为:a.处理器控制接口部分;b.主状态机部分;c.配置存储器读写控制部分;d.配置数据传输部分。其中处理器控制接口部分由附图1中配置控制电路左上角的局部总线接口和“寄存器及中断模块”构成,外部处理器可以通过该部分电路对控制器进行控制,包括设置当前控制器的工作/维护状态,对配置存储器进行读写,发送软件重配置命令,读取控制器当前的配置状态等。主状态机部分即为附图1中配置控制电路右上角的“主状态机”,该状态机在控制器处于工作状态时收到“寄存器及中断模块”的软件重配置命令或者外部的硬件重配置命令信号后,开始重配置工作,包括配置启动工作、配置文件信息获取、发起配置数据传输、监控配置结果,以及在配置完成后对被配置FPGA发送复位信号等。“主状态机”的状态变迁图见附图2,有关该状态机的详细工作流程在后文中会进一步仔细介绍。配置存储器读写控制部分为附图1中配置控制电路左侧的“存储器读写控制接口”,该部分电路负责管理对于配置存储器的访问,包括外部处理器在控制器处于维护状态时对配置存储器内容的读写、“主状态机”在收到重配置命令后对配置管理信息的读取,配置数据传输阶段时“DMA控制器”对配置数据的读取。
配置数据传输部分为附图1中配置控制电路下方的“DMA控制器”、“缓冲FIFO”和“配置接口控制器”。“DMA控制器”在收到“主状态机”的启动配置数据传输命令时,根据其提供的配置文件基址和长度,从配置存储器中读取配置数据并将之写入“缓冲FIFO”。“配置接口控制器”在“缓冲FIFO”中有数据时从中读取配置数据,并发送到外部被配置FPGA的配置接口中。在配置数据发送完毕后,“配置接口控制器”监控外部被配置FPGA的用于表示配置完成状态的信号,并把配置结果反馈给“主状态机”。
配置存储器在本控制器中负责存储配置文件和相应的配置管理信息。其内部的数据组织结构如附图3所示。配置管理信息由两个表构成,分别为配置命令ID-文件ID索引表和配置文件信息表。通过配置命令ID-文件ID索引表可以根据配置命令ID查询出对应的配置文件ID,进而在配置文件信息表中可查询出对应配置文件的存储基址、文件长度和相关信息。存储基址和文件长度指向该配置文件在配置存储器中的存储位置。在控制器处于维护状态时,配置存储器中的配置文件及相应的配置管理信息可由外部处理器写入或修改。在控制器处于工作状态时,配置控制电路的“主状态机”可在收到重配置命令后根据重配置命令ID来从配置存储器中获取相应的配置管理信息(即该重配置命令ID对应的配置文件的存储基址、文件长度和相关信息),配置控制电路的“DMA控制器”可在配置数据传输启动后根据配置文件的存储基址和长度从配置存储器中获取对应的配置数据。为在控制器断电后不丢失相关数据,配置存储器采用非易失存储芯片来实现。
上述的配置控制电路和配置存储器共同构成了本控制器发明的硬件电路。
本发明各功能的工作流程是:
使用本控制器可以对多个重配置数据文件进行管理,也可以在收到重配置命令时选择命令指定的重配置数据文件对外部FPGA发起全局或局部的重配置。配置数据文件的管理包括配置数据文件及其相关信息的写入和修改,配置文件与配置命令ID的对应关系设置。重配置包括硬件触发的重配置,软件设置的重配置。另外,处理器还可以对控制器的工作状态进行监控。这些功能的具体流程如下:
一.配置数据文件及其相关信息的写入和修改过程:
1.处理器通过“局部总线”对“寄存器及中断模块”中的工作状态寄存器进行读写,写入将控制器设置为维护状态的命令(控制器默认情况下为工作状态)。
2.若控制器当前处于空闲时期,则控制器直接进入维护状态;若控制器当前正在进行重配置,则等待此次重配置完成后,控制器进入维护状态(维护状态不再对重配置命令进行响应)。
3.处理器通过“局部总线”对“寄存器及中断模块”中的工作状态寄存器循环进行读操作,直至获知控制器进入维护状态。
4.处理器通过“局部总线”对“存储器读写控制接口”进行读写操作,将配置数据文件写入配置存储器或者修改配置存储器中已有的配置数据文件。
5.假设被写入或修改的配置数据文件的序号(ID)为N,则处理器需通过“局部总线”对“存储器读写控制接口”进行读写操作,将该文件的存储基址、文件长度和相关信息写入配置存储器中的配置文件信息表序号(ID)N所对应的特定区域。此处的文件信息包含配置文件的配置范围(全局配置/局部配置),功能信息,版本信息等等。
6.若需要为该配置数据文件指定对应的配置命令ID,则处理器需通过“局部总线”对“存储器读写控制接口”进行读写操作,将该配置数据文件ID与配置命令ID的对应关系写入配置存储器中的配置命令ID-文件ID索引表中。注,一个配置文件ID可以关联到多个配置命令ID,但是一个配置命令ID只能对应一个配置文件ID。
7.以上工作完毕后,处理器通过“局部总线”对“寄存器及中断模块”中的工作状态寄存器进行读写,将控制器设置为工作状态。
二.配置文件与配置命令ID的对应关系设置过程:
1.采用上述“配置数据文件及其相关信息的写入和修改过程”的1到3阶段,将控制器设置为维护状态。
2.处理器通过“局部总线”对“存储器读写控制接口”进行读写操作,将所需设置的配置数据文件ID与配置命令ID的对应关系写入到配置存储器中的配置命令ID-文件ID索引表中。注,一个配置文件ID可以关联到多个配置命令ID,但是一个配置命令ID只能对应一个配置文件ID。
3.处理器通过“局部总线”对“寄存器及中断模块”中的工作状态寄存器进行读写,将控制器设置为工作状态。
三.硬件触发重配置过程:
1.若想让控制器对外部的硬件重配置命令信号进行响应,需首先使能控制器的硬件重配置功能。处理器可通过“局部总线”对“寄存器及中断模块”中的重配置使能寄存器进行读写,来使能硬件重配置功能。(注,通常硬件重配置功能和软件重配置功能不会同时进行使能,以免发生冲突。)
2.当控制器处于工作状态,硬件重配置功能使能并且“主状态机”处于【空闲】状态时,若“主状态机”收到外部传来的硬件重配置命令信号,则“主状态机”进入【启动】状态,开始重配置工作。
3.在【启动】状态,“主状态机”解析出外部硬件重配置命令信号中包含的重配置命令ID,然后进入【获取配置文件基址、长度和相关信号】状态。
4.在【获取配置文件基址、长度和相关信号】状态,“主状态机”通过“存储器读写控制端口”对配置存储器进行访问,根据重配置命令ID在配置命令ID-文件ID索引表中查询出对应的配置文件ID,进而在配置文件信息表中查询出对应配置文件的存储基址、文件长度和相关信息。根据配置文件的相关信息,可判断出此次重配置的配置范围属于全局重配置还是局部重配置。然后“主状态机”进入【发起FPGA配置启动信号】状态。
5.在【发起FPGA配置启动信号】状态,“主状态机”需向被配置FPGA发出配置启动控制信号,来通知被配置FPGA进行配置启动准备工作。然后“主状态机”进入【监控FPGA配置启动完成信号】状态。
6.在【监控FPGA配置启动完成信号】状态,“主状态机”监控被配置FPGA的用于标识配置启动完成状态的信号,来判断被配置FPGA的配置启动准备工作是成功完成还是失败。若配置启动成功完成,则“主状态机”进入【启动配置数据传输】状态,并转入阶段7;若配置启动失败,则“主状态机”进入【判断是否进行重试配置】状态,并转入阶段13。
7.在【启动配置数据传输】状态,“主状态机”向“DMA控制器”发出启动配置数据传输的命令信号,并给出配置数据文件的基址和长度。随后“主状态机”转入【监控配置结果】状态。
8.“DMA控制器”在收到“主状态机”发出的启动配置数据传输的命令时,根据其提供的配置文件基址和长度,从配置存储器中读取配置数据并将之写入“缓冲FIFO”。
9.“配置接口控制器”在“缓冲FIFO”中有数据时从中读取配置数据,并发送到外部被配置FPGA的配置接口中。在配置数据发送完毕后,“配置接口控制器”监控外部被配置FPGA的用于表示配置完成状态的信号,并把配置结果反馈给“主状态机”。
10.“主状态机”在【监控配置结果】状态监控“配置接口控制器”反馈的配置结果。若配置成功,则“主状态机”进入【发送被配置FPGA复位信号】状态,并转入阶段11;若配置失败,则“主状态机”进入【判断是否进行重试配置】状态,并转入阶段13。
11.在【发送被配置FPGA复位信号】状态,“主状态机”向被配置FPGA的重配置过的逻辑发送复位信号,然后回到【空闲】状态。
12.被配置FPGA在收到复位信号后,对重配置后的逻辑进行复位,待重配置后的逻辑就绪后,向被配置FPGA向配置控制电路的“寄存器及中断模块”发送逻辑状态就绪信号。处理器可通过中断或者查询的方式从“寄存器及中断模块”获知被配置FPGA的重配置后的逻辑已就绪(详见后文“处理器监控控制器工作状态过程”)。完成整个重配置过程。
13.如果在上述阶段6发生配置启动失败或者在阶段10发生配置失败,则“主状态机”进入【判断是否进行重试配置】状态。如果还未超过允许的最大重试配置次数,则“主状态机”进入【发起FPGA配置启动信号】状态重新进行配置过程,并转入阶段5;如果已经超过了允许的最大重试配置次数,则不再进行重试配置,“主状态机”进入【配置错误】状态,并转入阶段14。
14.在【配置错误】状态,记录配置错误信息后,“主状态机”回到【空闲】状态。
四.软件设置重配置过程:
1.若想让控制器对处理器发来的软件重配置命令信号进行响应,需首先使能控制器的软件重配置功能。处理器可通过“局部总线”对“寄存器及中断模块”中的重配置使能寄存器进行读写,来使能软件重配置功能(注,通常硬件重配置功能和软件重配置功能不会同时进行使能,以免发生冲突。)。然后处理器再通过“局部总线”对“寄存器及中断模块”中的软件重配置命令寄存器进行读写,来发出软件重配置命令。
2.当控制器处于工作状态,软件重配置功能使能并且“主状态机”处于【空闲】状态时,若“主状态机”收到“寄存器及中断模块”传来的软件重配置命令,则“主状态机”进入【启动】状态,开始重配置工作。
3.其余过程与上述“硬件触发重配置过程”的3到14阶段一致。
五.处理器监控控制器工作状态过程
1.当控制器发生某些事件时,例如接收到外部硬件重配置命令信号,配置过程失败后重试、配置错误、配置过程成功等等,“主状态机”可将事件与相应信息告知“寄存器及中断模块”(见附图1中的“当前配置状态”信号)。
2.“寄存器及中断模块”在获知事件与相关信息后,可将其存储在相应的寄存器中,并对其中某些事件以中断的形式告知处理器。
3.处理器可以在收到中断后做出响应,根据中断信息通过“局部总线”读取“寄存器及中断模块”中的相应寄存器来获知控制器的当前状态。处理器也可以主动读取这些寄存器来主动查询控制器的当前状态。
下面对本发明做进一步详细说明。分别介绍各个硬件组成模块各自的实现方式。
1.主状态机
“主状态机”的内部状态变迁及输入输出信号详见附图2。“主状态机”在控制器处于工作状态时收到“寄存器及中断模块”的软件重配置命令或者外部的硬件重配置命令信号后,开始重配置工作,包括配置启动工作、配置文件信息获取、发起配置数据传输、监控配置结果,以及在配置完成后对被配置FPGA发送复位信号等等工作。它的工作方式已在本控制器工作流程部分的“硬件触发重配置过程”和“软件设置重配置过程”中进行了详细阐述,在此不再赘述。
2.寄存器及中断模块
“寄存器及中断模块”用于与外部处理器之间进行交互,由两部分功能组成:一部分是控制寄存器和状态寄存器,用于外部处理器对控制器进行控制和状态查询;另一部分是中断功能电路,用于控制器向外部处理器告知需其处理或知悉的中断事件。
2.1控制寄存器和状态寄存器
控制寄存器用于外部处理器对本控制器进行控制,例如设置控制器为维护状态或者工作状态,设置控制器为硬件重配置使能或者软件重配置使能(详见工作流程部分的“硬件触发重配置过程”和“软件设置重配置过程”)等等。
状态寄存器用于外部处理器查询本控制器的各种状态,例如控制器当前是处于空闲状态还是正在进行重配置,重配置过程是否曾出现错误及错误的相关信息等等。另外,被配置FPGA的重配置后逻辑状态是否就绪也可以通过状态寄存器进行查询。
2.2中断功能电路
中断功能电路用于本控制器向外部处理器告知需其处理或知悉的中断事件,例如当控制器接收到外部硬件重配置命令信号开始重配置、配置成功、配置错误等事件发生时,“主状态机”可将事件与相应信息告知中断功能电路,中断功能电路将这些事件和信息存储在相应的寄存器中,并以中断信号的形式告知处理器。另外,各种中断事件均可通过中断使能寄存器进行中断使能或中断禁止。
3.存储器读写控制接口
“存储器读写控制接口”负责管理配置控制电路对于配置存储器的访问。对于配置存储器的访问有三种情况,分别是:a.控制器处于维护状态时,外部处理器通过局部总线对于配置存储器内容的读写;b.控制器处于工作状态时,“主状态机”在收到重配置命令后对配置管理信息的读取(即根据配置命令ID获取配置文件的基址、长度、相关信息等);c.控制器处于工作状态时,“DMA控制器”在配置数据传输阶段对配置数据的读取。其中第一种情况为维护状态时外部处理器对配置文件的写入和管理,后两种情况为工作状态时重配置的不同阶段对配置文件和相关管理信息的读取,这些访问都由“存储器读写控制接口”进行控制和管理。
4.DMA控制器
“DMA控制器”负责在收到“主状态机”的启动配置数据传输命令时,根据其提供的配置文件基址和长度,从配置存储器中读取配置数据并将之写入“缓冲FIFO”。这种数据的自动搬运无需外部处理器参与读写,降低了处理器的负担。“DMA控制器”在进行配置文件数据传输的同时,还需自行为数据增加文件头和文件尾信息,来让数据传输后端的“配置接口控制器”可以识别出配置文件的始末。
5.缓冲FIFO
“缓冲FIFO”在为配置数据传输做缓冲的同时,还可以起到时钟域隔离的作用。“配置接口控制器”的参考时钟频率往往需要受到FPGA的具体配置接口的约束,而这不应该影响到配置控制电路的其他部分的参考时钟频率。“缓冲FIFO”对写端口和读端口采用不同时钟可以很好的解决这个问题,起到了对“配置接口控制器”的参考时钟域的隔离作用,使其时钟频率可以单独进行设置。
6.配置接口控制器
“配置接口控制器”负责对于待配置FPGA的直接配置工作,主要有两部分功能:1.在“缓冲FIFO”中有数据时从中读取配置数据,并发送到外部被配置FPGA的配置接口中;2.在配置数据发送完毕之后,监控被配置FPGA的配置结果,并将结果反馈回“主状态机”。
“配置接口控制器”需遵循待配置FPGA的配置接口的接口规范和相应时序要求,这就决定了针对不同的FPGA配置接口,需设计相对应的专属“配置接口控制器”。“配置接口控制器”有很好的独立性和可更换性,这使得本控制器可以适用于各种FPGA配置接口,例如对于Xilinx FPGA既可使用Slave SelectMAP配置接口,也可使用Slave Serial配置接口等,仅需要针对不同应用对“配置接口控制器”做相应的更换即可。
7.配置存储器
“配置存储器”负责存储配置文件和相应的配置管理信息,其内部的数据组织结构如附图3所示,它其中所存储的信息及这些信息的维护方式和工作方式在前文中均已有详细描述。
“配置存储器”采用非易失存储器芯片进行实现,但当具体应用对于重配置过程的时间有着严格要求,非易失存储芯片的访问速度成为重配置速率的瓶颈时,也可以采用高速RAM芯片与非易失存储芯片配合的方式来实现“配置存储器”。高速RAM芯片作为非易失存储芯片的缓存区,在控制器上电后首先将非易失存储芯片中存放的配置文件及其管理信息转存入高速RAM芯片,重配置工作时直接从高速RAM芯片读取信息,从而提高访问速度,缩短重配置过程所需的时间。
8.被配置FPGA的相关信号
如附图1所示,被配置FPGA与本控制器相连的信号有配置启动控制信号、配置数据传输信号、配置完成状态信号、复位信号及逻辑状态就绪信号。
配置启动控制信号用于告知被配置FPGA需进行配置启动工作以及监控其配置启动是否完成,例如对于Xilinx Virtex5FPGA进行全局重配置时,需要首先向其发送FPGA芯片复位信号PROGRAM_B和配置模式信号M[2:0],然后监控其初始化完成信号INIT_B来获知配置启动工作是否完成。
配置数据传输信号用于向被配置FPGA发送配置数据,这部分信号与具体采用的FPGA配置接口有关。以Xilinx Virtex5FPGA为例,若采用Slave SelectMAP配置接口,则使用CCLK(配置时钟)、D[31:0](配置数据)、CS_B(片选信号)、RDWR_B(读写信号)这些SelectMAP接口信号进行配置数据传输;若采用Slave Serial配置接口,则使用CCLK(配置时钟)、D_IN(串行配置数据)这些Serial接口信号进行配置数据传输。
配置完成状态信号用于监控本次配置过程是否成功完成,是否发生校验错误等等,例如对于Xilinx Virtex5FPGA的全局重配置过程,DONE信号用于表示配置完成,INIT_B信号用于表示是否发生CRC校验错误。
复位信号用于在重配置结束之后将被配置FPGA重配置过的逻辑进行复位,使其进入一个可控的初始状态。
逻辑状态就绪信号用于告知控制器重配置后的逻辑已复位并且准备就绪,处理器可以从“寄存器及中断模块”读取该信号的状态来获知逻辑是否就绪从而决定是否使这部分逻辑加入到系统工作中。
Claims (2)
1.FPGA重配置控制方法,其特征在于:所述FPGA重配置控制方法包括硬件触发重配置方法和软件设置重配置方法;所述硬件触发重配置方法包括以下步骤:
1)若想让控制器对外部的硬件重配置命令信号进行响应,需首先使能控制器的硬件重配置功能;处理器可通过“局部总线”对“寄存器及中断模块”中的重配置使能寄存器进行读写,来使能硬件重配置功能;
2)当控制器处于工作状态,硬件重配置功能使能并且“主状态机”处于【空闲】状态时,若“主状态机”收到外部传来的硬件重配置命令信号,则“主状态机”进入【启动】状态,开始重配置工作;
3)在【启动】状态,“主状态机”解析出外部硬件重配置命令信号中包含的重配置命令ID,然后进入【获取配置文件基址、长度和相关信号】状态;
4)在【获取配置文件基址、长度和相关信号】状态,“主状态机”通过“存储器读写控制端口”对配置存储器进行访问,根据重配置命令ID在配置命令ID-文件ID索引表中查询出对应的配置文件ID,进而在配置文件信息表中查询出对应配置文件的存储基址、文件长度和相关信息;根据配置文件的相关信息,可判断出此次重配置的配置范围属于全局重配置还是局部重配置;然后“主状态机”进入【发起FPGA配置启动信号】状态;
5)在【发起FPGA配置启动信号】状态,“主状态机”需向被配置FPGA发出配置启动控制信号,来通知被配置FPGA进行配置启动准备工作;然后“主状态机”进入【监控FPGA配置启动完成信号】状态;
6)在【监控FPGA配置启动完成信号】状态,“主状态机”监控被配置FPGA的用于标识配置启动完成状态的信号,来判断被配置FPGA的配置启动准备工作是成功完成还是失败;若配置启动成功完成,则“主状态机”进入【启动配置数据传输】状态,并转入步骤7);若配置启动失败,则“主状态机”进入【判断是否进行重试配置】状态,并转入步骤13);
7)在【启动配置数据传输】状态,“主状态机”向“DMA控制器”发出启动配置数据传输的命令信号,并给出配置数据文件的基址和长度;随后“主状态机”转入【监控配置结果】状态;
8)“DMA控制器”在收到“主状态机”发出的启动配置数据传输的命令时,根据其提供的配置文件基址和长度,从配置存储器中读取配置数据并将之写入“缓冲FIFO”;
9)“配置接口控制器”在“缓冲FIFO”中有数据时从中读取配置数据,并发送到外部被配置FPGA的配置接口中;在配置数据发送完毕后,“配置接口控制器”监控外部被配置FPGA的用于表示配置完成状态的信号,并把配置结果反馈给“主状态机”;
10)“主状态机”在【监控配置结果】状态监控“配置接口控制器”反馈的配置结果;若配置成功,则“主状态机”进入【发送被配置FPGA复位信号】状态,并转入步骤11);若配置失败,则“主状态机”进入【判断是否进行重试配置】状态,并转入步骤13);
11)在【发送被配置FPGA复位信号】状态,“主状态机”向被配置FPGA的重配置过的逻辑发送复位信号,然后回到【空闲】状态;
12)被配置FPGA在收到复位信号后,对重配置后的逻辑进行复位,待重配置后的逻辑就绪后,向被配置FPGA向配置控制电路的“寄存器及中断模块”发送逻辑状态就绪信号;处理器可通过中断或者查询的方式从“寄存器及中断模块”获知被配置FPGA的重配置后的逻辑已就绪(详见后文“处理器监控控制器工作状态过程”);完成整个重配置过程;
13)如果在上述步骤6)发生配置启动失败或者在步骤10)发生配置失败,则“主状态机”进入【判断是否进行重试配置】状态;如果还未超过允许的最大重试配置次数,则“主状态机”进入【发起FPGA配置启动信号】状态重新进行配置过程,并转入步骤5);如果已经超过了允许的最大重试配置次数,则不再进行重试配置,“主状态机”进入【配置错误】状态,并转入步骤14);
14)在【配置错误】状态,记录配置错误信息后,“主状态机”回到【空闲】状态。
2.根据权利要求1所述的FPGA重配置控制方法,其特征在于:所述软件设置重配置方法包括以下步骤:
1)若想让控制器对处理器发来的软件重配置命令信号进行响应,需首先使能控制器的软件重配置功能;处理器可通过“局部总线”对“寄存器及中断模块”中的重配置使能寄存器进行读写,来使能软件重配置功能;然后处理器再通过“局部总线”对“寄存器及中断模块”中的软件重配置命令寄存器进行读写,来发出软件重配置命令;
2)当控制器处于工作状态,软件重配置功能使能并且“主状态机”处于【空闲】状态时,若“主状态机”收到“寄存器及中断模块”传来的软件重配置命令,则“主状态机”进入【启动】状态,开始重配置工作;
3)之后步骤与所述硬件触发重配置方法的步骤3)到步骤14)相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410749271.7A CN104570846B (zh) | 2014-12-04 | 2014-12-04 | Fpga重配置控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410749271.7A CN104570846B (zh) | 2014-12-04 | 2014-12-04 | Fpga重配置控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104570846A CN104570846A (zh) | 2015-04-29 |
CN104570846B true CN104570846B (zh) | 2017-10-24 |
Family
ID=53087199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410749271.7A Active CN104570846B (zh) | 2014-12-04 | 2014-12-04 | Fpga重配置控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104570846B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106021145B (zh) * | 2016-05-25 | 2019-06-14 | 芯启源(上海)半导体科技有限公司 | 应用处理器、应用处理装置及命令执行方法 |
CN106569481B (zh) * | 2016-11-03 | 2019-03-26 | 航天科工防御技术研究试验中心 | 一种fpga重构装置和方法 |
CN106844284A (zh) * | 2016-11-24 | 2017-06-13 | 天津津航计算技术研究所 | 用于雷达信号处理的可重构系统 |
CN107807902B (zh) * | 2017-10-25 | 2021-05-14 | 电子科技大学 | 一种抗单粒子效应的fpga动态重构控制器 |
CN108021413B (zh) * | 2017-12-28 | 2021-08-27 | 浙江大华技术股份有限公司 | 一种fpga在线升级方法及设备 |
CN110929856B (zh) * | 2018-09-20 | 2023-08-18 | 合肥君正科技有限公司 | 一种npu与主cpu的数据交互方法和装置 |
CN109344115A (zh) * | 2018-10-22 | 2019-02-15 | 西安微电子技术研究所 | 一种通用化的fpga配置系统及方法与重配置系统及方法 |
CN109491959B (zh) * | 2018-10-27 | 2023-03-21 | 北京控制与电子技术研究所 | 一种可编程逻辑器件配置器 |
CN109460383A (zh) * | 2018-12-29 | 2019-03-12 | 中科院计算技术研究所南京移动通信与计算创新研究院 | 静态可重构数字下变频装置、系统及其方法 |
CN109782661B (zh) * | 2019-01-04 | 2020-10-16 | 中国科学院声学研究所东海研究站 | 基于fpga实现可重配置和多输出的实时处理系统及方法 |
CN110196388A (zh) * | 2019-06-20 | 2019-09-03 | 天津市滨海新区信息技术创新中心 | 集成芯片及其测试方法 |
CN110320992B (zh) * | 2019-06-28 | 2020-12-04 | 兆讯恒达科技股份有限公司 | 一种配置管理功耗的方法 |
CN111198837B (zh) * | 2019-12-25 | 2022-07-26 | 深圳市紫光同创电子有限公司 | 基于fpga的sdio接口系统、控制器桥接方法 |
CN111552562B (zh) * | 2020-04-13 | 2022-10-28 | 中国电子科技集团公司电子科学研究院 | 面向异构服务器的重构配置方法及装置 |
CN111625075A (zh) * | 2020-05-20 | 2020-09-04 | 天津芯海创科技有限公司 | 一种软件可配置的复位装置和方法 |
CN112711550B (zh) * | 2021-01-07 | 2023-12-29 | 无锡沐创集成电路设计有限公司 | Dma自动配置模块和片上系统soc |
CN112835648B (zh) * | 2021-02-25 | 2022-03-25 | 中国科学院西安光学精密机械研究所 | 一种基于fpga的芯片内部寄存器高可靠配置方法 |
CN114281412A (zh) * | 2021-12-24 | 2022-04-05 | 中电信数智科技有限公司 | 一种消息处理方法、装置、电子设备及存储介质 |
CN116187241B (zh) * | 2023-05-04 | 2023-08-11 | 中科亿海微电子科技(苏州)有限公司 | 一种fpga配置电路架构、配置方法、存储介质和电子设备 |
CN116302851B (zh) * | 2023-05-24 | 2023-08-22 | 北京中科网威信息技术有限公司 | Fpga逻辑异常监测与恢复方法、装置、设备及介质 |
CN116723227A (zh) * | 2023-06-14 | 2023-09-08 | 山东华翼微电子技术股份有限公司 | 基于5g通信的多fpga配置文件远程更新方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103677916A (zh) * | 2013-12-10 | 2014-03-26 | 中国航空工业集团公司第六三一研究所 | 一种基于fpga的在线重配置系统及方法 |
CN103995639A (zh) * | 2013-02-20 | 2014-08-20 | 富士施乐株式会社 | 浏览装置、浏览系统、信息处理设备以及浏览方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3489608B2 (ja) * | 1997-06-20 | 2004-01-26 | 富士ゼロックス株式会社 | プログラマブル論理回路システムおよびプログラマブル論理回路装置の再構成方法 |
-
2014
- 2014-12-04 CN CN201410749271.7A patent/CN104570846B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103995639A (zh) * | 2013-02-20 | 2014-08-20 | 富士施乐株式会社 | 浏览装置、浏览系统、信息处理设备以及浏览方法 |
CN103677916A (zh) * | 2013-12-10 | 2014-03-26 | 中国航空工业集团公司第六三一研究所 | 一种基于fpga的在线重配置系统及方法 |
Non-Patent Citations (3)
Title |
---|
FPGA重配置技术;邹晨等;《航空计算技术》;20121130;第42卷(第6期);第114-117页 * |
在SRAM型FPGA中局部重构与配置刷新的兼容方案;杜新军等;《遥测遥感》;20110331;第32卷(第2期);第50第3节、图3 * |
基于FPGA的动态可重配置方法研究;邹晨等;《航空计算技术》;20120531;第42卷(第3期);第125-129页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104570846A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104570846B (zh) | Fpga重配置控制方法 | |
WO2017041567A1 (zh) | 基于软核处理器的fpga多镜像升级加载方法及装置 | |
CN104615488B (zh) | 异构多核可重构计算平台上任务调度的方法和装置 | |
CN106201350B (zh) | 存储数据的方法、存储器和计算机系统 | |
CN107431720B (zh) | 镜像部署方法和装置 | |
CN105243033B (zh) | 数据处理方法及电子设备 | |
CN111274183A (zh) | 多路高速协议接口动态可重构系统及实现方法 | |
CN105959135B (zh) | 一种ptn设备基于通用业务模型的单盘配置系统及方法 | |
CN101133404B (zh) | 用于与存储器装置通信的系统和方法 | |
CN105359120B (zh) | 使用双phy来支持多个pcie链路宽度的存储器和控制器 | |
CN106557442B (zh) | 一种芯片系统 | |
CN106909425A (zh) | 一种dsp和fpga系统在线升级方法 | |
CN104572384B (zh) | 一种芯片多fpga验证方法 | |
CN103777972A (zh) | 基于现场可编程门阵列的系统、配置方法以及升级方法 | |
CN104216796B (zh) | 一种数据备份、恢复方法及电子设备 | |
JP2003500716A (ja) | エミュレーションシステム上における複数の回路設計の同時エミュレーションのための方法及び装置 | |
CN106775946A (zh) | 一种虚拟机快速创建方法 | |
CN101122783A (zh) | 单片机存储系统 | |
CN105739930B (zh) | 一种存储架构及其初始化方法和数据存储方法及管理装置 | |
CN107704285A (zh) | 现场可编程门阵列多版本配置芯片、系统和方法 | |
CN103809502B (zh) | 控制器及记录介质 | |
CN105389190B (zh) | 一种操作系统启动的方法、装置及系统 | |
CN109491959A (zh) | 一种可编程逻辑器件配置器 | |
CN105446762B (zh) | 电池管理系统的程序更新方法和程序更新系统 | |
CN100383721C (zh) | 一种异构双系统总线的对象存储控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |