掌桥专利:专业的专利平台
掌桥专利
首页

一种FPGA远程更新装置及方法

文献发布时间:2023-06-19 11:22:42


一种FPGA远程更新装置及方法

技术领域

本发明涉及数据处理技术领域,具体涉及一种FPGA远程更新装置及方法。

背景技术

近年来,随着大数据、人工智能、5G、物联网等技术越来越热,FPGA得到越来越广泛的应用。可重编程性是FPGA的本质特性。一般FPGA使用SRAM单元保存配置数据,掉电后数据消失,所以配置数据需保存在外部非易失存储器中,每次上电后加载到SRAM单元中。常用的配置方案有:主动配置方案、被动配置方案和JTAG配置方案等。其中JTAG配置方案是本地的,适用于开发和出厂加载。当配置方案支持远程系统更新时,才能最大程度发挥其“现场可编程”特性。

CN201710034806.6公开了一种支持更新单一映像的FPGA远程更新装置,如图1所示,FPGA模块包括嵌入式处理器远程更新系统,远程更新系统包含通讯模块和远程更新模块。通讯模块接收上位机的命令和程序数据,并发送至远程更新模块,嵌入式处理器远程更新系统对接收命令进行解析,并将程序数据转换成适合配置FLASH的数据流和时钟流,进行配置FLASH数据的读写以及擦除。

CN201811245075.0公开了一种基于DSP+FPGA架构的程序远程更新系统及方法,如图2所示,包括:DSP、应用FPGA、管理FPGA和外置FLASH。管理FPGA用于在线配置应用FPGA和烧写应用FPGA的外置FLASH;DSP接收应用FPGA的更新数据并通过管理FPGA更新应用FPGA。

CN201310530155.1公开了一种使用CPU控制多路模拟开关实现FPGA远程更新的方法和装置,如图3所示,通过CPU控制多路模拟开关控制存储器的主控对象连接,实现CPU更新存储器数据的功能。

上述三个现有均使用了单配置模式,仅有一个配置数据存储区,如果配置过程中出现意外,原配置数据破坏,系统将无法正常启动。

除此外,现有技术CN201811245075.0需要使用DSP、应用FPGA和管理FPGA,CN201310530155.1需要使用CPU和多路模拟开关控制,结构都较为复杂而且成本较高。

发明内容

针对现有技术的不足,本发明旨在提供一种FPGA远程更新装置及方法。

为了实现上述目的,本发明采用如下技术方案:

一种FPGA远程更新装置,包含FPGA模块,所述FPGA模块内部设有通讯控制器、远程系统更新控制器、双配置控制器和NVM控制器;所述远程系统更新控制器分别通讯连接于通讯控制器、双配置控制器和所述NVM控制器;所述双配置控制器和NVM控制器均与用户NVM、第一配置NVM和第二配置NVM连接,所述用户NVM用于保存用户数据,所述第一配置NVM和第二配置NVM分别用于保存第一固件映像数据和第二固件映像数据;所述FPGA模块和所述通讯控制器通讯连接,所述通讯控制器和接口电路通讯连接,通讯控制器通过接口电路和上位机通讯连接;

所述远程系统更新控制器用于实现远程更新中的上电加载流程控制和远程更新流程控制,设置有关键字Image_load;所述双配置控制器用于在远程系统更新控制器的控制下完成远程更新中的上电加载流程;所述NVM控制器用于在远程系统更新控制器的控制下完成远程更新中的远程更新流程,并负责对用户NVM、第一配置NVM和第二配置NVM的控制和读写访问;所述用户NVM设置有关键字Image_set。

进一步地,所述接口电路为以太网、串口、USB、PCIe接口中的任一种。

本发明还提供一种利用FPGA远程更新装置的方法,具体过程如下:

S1、上电加载:

S101、上电后,FPGA模块采样CONFIG_SEL管脚电平或读取配置起始地址,确定固件映像数据;

S102、FPGA模块加载相应固件映像数据:远程系统更新控制器通过查询双配置控制器确定Image_load的值;

S103、远程系统更新控制器通过NVM控制器读取用户NVM内的Image_set;

S104、远程系统更新控制器比较Image_load与Image_set是否相等;如果Image_load与Image_set相等,上电加载流程结束;如果Image_load与Image_set不等,远程系统更新控制器通过双配置控制器设置CONFIG_SEL寄存器位值或配置起始地址为用户NVM保存的Image_set的值,并触发重配置,转入S102;

S2、远程更新:

S201、上位机向FPGA模块发出远程更新请求;

S202、远程系统更新控制器通过通讯控制器接收到该远程更新请求后,根据当前Image_load确定要擦除的是第一配置NVM还是第二配置NVM并通过NVM控制器完成擦除;

S203、远程系统更新控制器请求一帧固件映像数据,然后通过NVM控制器逐字写入完成擦除的第一配置NVM或第二配置NVM;

S204、该帧固件映像数据写完,远程系统更新控制器向上位机发送回码;

S205、如果还有固件映像数据没有写完,返回步骤S203请求下一帧固件影像数据并通过NVM控制器写入,直至全部固件映像数据写完后跳转至步骤S206;

S206、上位机向远程系统更新控制器发出读回命令,收到命令后,远程系统更新控制器控制NVM控制器开始读回一帧固件映像数据,分帧读回,直至全部帧都被读回;

S207、上位机比较全部写入数据与读出数据是否相等;如果不等,返回步骤S201重新开始,否则跳转至步骤S208;

S208、上位机向远程系统更新控制器发出更新成功通知,远程系统更新控制器通过NVM控制器修改Image_set并写入用户NVM;

S209、远程系统更新控制器通过双配置控制器设置寄存器触发重配置。

本发明的有益效果在于:

1、本发明采用双配置远程更新模式,更加安全可靠,即使现场更新过程中发生意外,仍可保证系统正常启动。

2、可通过修改关键字Image_set的值在新、旧固件版本间任意切换,从而也可实现版本回滚功能。

3、本发明在进行完现场更新后无需人为干预,无需进行管脚设置,固件可自动加载到最新版本。

4、本发明在进行远程更新时,上位机软件无需了解底层硬件细节,固件可自动选择需要更新的扇区。

5、本发明使用纯硬件逻辑实现,无需硬核或软核处理器,消耗资源小,容易与应用功能进行分割,易于移植。

附图说明

图1为第一种现有技术的系统结构示意图;

图2为第二种现有技术的系统结构示意图;

图3为第三种现有技术的系统结构示意图;

图4为本发明实施例1的装置结构示意图;

图5为本发明实施例2的上电加载流程示意图;

图6为本发明实施例2的远程更新流程示意图;

图7为本发明实施例3的装置结构示意图;

图8为本发明实施例4的装置结构示意图。

具体实施方式

以下将结合附图对本发明作进一步的描述,需要说明的是,本实施例以本技术方案为前提,给出了详细的实施方式和具体的操作过程,但本发明的保护范围并不限于本实施例。

实施例1

本实施例提供一种FPGA远程更新装置,如图4所示,包含FPGA模块1,所述FPGA模块1内部设有通讯控制器101、远程系统更新控制器102、双配置控制器103和NVM控制器104;所述远程系统更新控制器102分别通讯连接于通讯控制器101、双配置控制器103和所述NVM控制器104;所述双配置控制器103和NVM控制器104均与用户NVM401、第一配置NVM402和第二配置NVM403连接。

所述FPGA模块1通过所述通讯控制器101与上位机3通讯连接。FPGA模块1通过通讯控制器101实现与上位机3之间的命令和数据通讯。

更具体地,所述通讯控制器101和接口电路2通讯连接,通讯控制器101通过接口电路2和上位机3通讯连接。所述接口电路2可以是以太网、串口、USB、PCIe等接口中的任一种。

需要说明的是,所述远程系统更新控制器102用于实现远程更新中的上电加载流程控制和远程更新流程控制,设置有关键字Image_load。所述双配置控制器103用于协助远程系统更新控制器102完成远程更新中的上电加载流程。所述NVM控制器104用于协助远程系统更新控制器102完成远程更新中的远程更新流程,并负责对用户NVM401、第一配置NVM402和第二配置NVM403的控制和读写访问。

所述用户NVM401用于保存用户数据,可以设置在所述FPGA模块1内部或者外部。所述用户NVM401设置有关键字Image_set。所述第一配置NVM402和第二配置NVM403分别用于保存第一固件映像数据和第二固件映像数据,可以设置在所述FPGA模块1内部或者外部。

实施例2

本实施例提供一种利用实施例1所述FPGA远程更新装置的方法,如图5所示,具体过程如下:

S1、上电加载:

S101、上电后,FPGA模块1采样CONFIG_SEL管脚电平或读取配置起始地址,确定固件映像数据;

S102、FPGA模块1加载相应固件映像数据:远程系统更新控制器102通过查询双配置控制器103确定Image_load的值;

S103、远程系统更新控制器102通过NVM控制器104读取用户NVM401内的Image_set;

S104、远程系统更新控制器102比较Image_load与Image_set是否相等;如果Image_load与Image_set相等,上电加载流程结束;如果Image_load与Image_set不等,远程系统更新控制器102通过双配置控制器103设置CONFIG_SEL寄存器位值或配置起始地址为用户NVM401保存的Image_set的值,并触发重配置,转入S102。

上电加载流程结束。

S2、如图6所示,远程更新:

S201、上位机3向FPGA模块1发出远程更新请求;

S202、远程系统更新控制器102通过通讯控制器101接收到该远程更新请求后,根据当前Image_load确定要擦除的是第一配置NVM402还是第二配置NVM403并通过NVM控制器104完成擦除;

S203、远程系统更新控制器102请求一帧固件映像数据,然后通过NVM控制器104逐字写入完成擦除的第一配置NVM402或第二配置NVM403;

S204、该帧固件映像数据写完,远程系统更新控制器102向上位机3发送回码;

S205、如果还有固件映像数据没有写完,返回步骤S203请求下一帧固件影像数据并通过NVM控制器104写入,直至全部固件映像数据写完后跳转至步骤S206;

S206、上位机3向远程系统更新控制器102发出读回命令,收到命令后,远程系统更新控制器102控制NVM控制器104开始读回一帧固件映像数据,分帧读回,直至全部帧都被读回;

S207、上位机3比较全部写入数据与读出数据是否相等;如果不等,返回步骤S201重新开始,否则跳转至步骤S208;

S208、上位机3向远程系统更新控制器102发出更新成功通知,远程系统更新控制器102通过NVM控制器104修改Image_set并写入用户NVM;

S209、远程系统更新控制器102通过双配置控制器103设置寄存器触发重配置。

远程更新流程结束。

实施例3

本实施例是对实施例1、2的应用实例。

本实施例的FPGA远程更新装置中,如图7所示,FPGA模块1为Intel MAX10系列芯片10M16DAF256,接口电路2为以太网10/100/1000PHY,上位机3为具有RJ45网口的台式机或者笔记本,通讯控制101采用三速以太网IP核和纯硬件逻辑的UDP/IP协议及应用,远程系统更新控制器102为硬件逻辑,双配置控制器103和NVM控制器104为硬件逻辑,用户NVM401和第一配置NVM402和第二配置NVM403均采用10M16DAF256内置闪存。

利用本实施例的FPGA远程更新装置的方法的具体过程如下:

S1、上电加载:

S101、在系统上电时,FPGA模块1 10M16DAF256会采样CONFIG_SEL管脚电平确定固件映像数据;

S102、FPGA模块1加载相应固件映像数据:远程系统更新控制器102通过查询双配置控制器103确定Image_load的值。

S103、固件映像数据加载成功后,远程系统更新控制器102将通过NVM控制器104首先读取用户NVM401保存的加载映像设定值Image_set;

S104、远程系统更新控制器102比较Image_load与Image_set是否相等;如果Image_load与Image_set相等,上电加载流程结束;如果Image_load与Image_set不等,远程系统更新控制器102通过双配置控制器103设置CONFIG_SEL寄存器位值或配置起始地址为用户NVM401保存的Image_set的值,并触发重配置,转入S102。

S2、远程更新:

S201、上位机3需要远程更新时,通过RJ45网口对FPGA模块1发出远程更新请求;

S202、通讯控制器101收到该远程更新请求后,远程系统更新控制器102根据当前Image_load确定擦除第一配置NVM402还是第二配置NVM403并通过NVM控制器104完成擦除,规则为最旧数据替换,如Image_load=0,擦除第二配置NVM403,如Image_load=1,擦除第一配置NVM402。这里每帧固件更新数据大小为1KB。

S203、远程系统更新控制器102请求一帧固件映像数据,然后通过NVM控制器104逐字写入完成擦除的第一配置NVM402或第二配置NVM403;

S204、该帧固件映像数据全部写完后,远程系统更新控制器102将向上位机3发送回码,反馈写操作成功还是失败,上位机3根据远程系统更新控制器102的反馈决定重发帧还是发送新一帧数据。

S205、如果还有固件影像数据没有写完,则返回步骤S203请求下一帧数据并通过NVM控制器104写入,直至全部固件数据已写完,跳转至步骤206;

S206、上位机3向远程系统更新控制器102发出读回命令,收到命令后,远程系统更新控制器102控制NVM控制器104开始读回一帧固件映像数据,分帧读回,直至全部帧都被读回;本实施例中每帧读回256B。

S207、上位机3将对全部写入数据和全部读出数据进行比较,如果写入数据与读回数据不是全部相等,将返回步骤S201重新开始;如果写入数据与读回数据全部相等,则校验成功并跳转至步骤S208。

S208、上位机3向远程系统更新控制器102发送更新成功通知,远程系统更新控制器102将通过NVM控制器104修改Image_set,并写入用户NVM;

S209、远程系统更新控制器102通过双配置控制器103设置寄存器触发重配置。

远程更新流程结束。

实施例4

本实施例是对实施例1、实施例2的另一应用实例。

本实施例的FPGA远程更新装置如图8所示,FPGA模块1为Intel Cyclone IV系列芯片EP4CGX15,接口电路2为电平转换MAX3232,上位机3为具有串口的台式机或者笔记本,通讯控制101为串口控制器,采用硬件逻辑。远程系统更新控制器102为硬件逻辑,双配置控制器103和NVM控制器104为硬件逻辑,用户NVM401为24LC00,第一配置NVM402和第二配置NVM403为EPCQ64两个相连扇区。

利用本实施例的FPGA远程更新装置的具体过程如下:

S1、上电加载:

S101、在系统上电时,FPGA模块1EP4CGX15将读取配置起始地址,确定固件映像数据;

S102、FPGA模块1加载相应固件映像数据:远程系统更新控制器102通过查询双配置控制器103确定Image_load;

S103、固件映像数据加载成功后,远程系统更新控制器102将通过NVM控制器104首先读取用户NVM401保存的加载映像设定值Image_set;

S104、远程系统更新控制器102比较Image_load与Image_set是否相等;如果Image_load与Image_set相等,上电加载流程结束;如果Image_load与Image_set不等,远程系统更新控制器102通过双配置控制器103设置CONFIG_SEL寄存器位值或配置起始地址为用户NVM401保存的Image_set的值,并触发重配置,转入S102。

S2、远程更新:

S201、上位机3在远程更新时,通过串口对FPGA模块1发出远程更新请求;

S202、串口控制器101收到该远程更新请求后,远程系统更新控制器102根据当前Image_load确定要擦除的是第一配置NVM402还是第二配置NVM403并通过NVM控制器104完成擦除,规则为最旧数据替换,如Image_load=0,擦除第二配置NVM403,如Image_load=1,擦除第一配置NVM402。这里每帧固件更新数据大小为1KB。

S203、远程系统更新控制器102请求一帧固件映像数据,然后通过NVM控制器104逐字写入完成擦除的第一配置NVM402或第二配置NVM403;

S204、该帧固件映像数据全部写完后,远程系统更新控制器104将向上位机3发送回码,反馈写操作成功还是失败,上位机3根据远程系统更新控制器104的反馈结果决定重发帧还是发送新一帧数据。

S205、如果还有固件映像数据没有写完,则返回至步骤S203请求下一帧固件映像数据并通过NVM控制器104写入,直至全部固件映像数据已写完;

S206、上位机3向远程系统更新控制器102发出读回命令,收到命令后,远程系统更新控制器102控制NVM控制器104开始读回一帧固件映像数据,分帧读回,这里每帧读回256B,直至全部帧都被读回;

S207、上位机3将对全部写入数据和全部读出数据进行比较,如果写入数据与读回数据不是全部相等,将返回步骤S201重新开始;如果写入数据与读回数据全部相等,则校验成功并跳转至步骤S208。

S208、在校验成功后,上位机3将发送更新成功通知至远程系统更新控制器102,远程系统更新控制器102将通过NVM控制器104修改Image_set,并写入用户NVM;

S209、远程系统更新控制器102通过双配置控制器103设置寄存器触发重配置。

对于本领域的技术人员来说,可以根据以上的技术方案和构思,给出各种相应的改变和变形,而所有的这些改变和变形,都应该包括在本发明权利要求的保护范围之内。

相关技术
  • 一种FPGA远程更新装置及方法
  • 一种FPGA远程更新装置及方法
技术分类

06120112901643