一种基于ARM的FPGA启动及在线升级方法与流程

文档序号:20915714发布日期:2020-05-29 13:29阅读:1162来源:国知局
一种基于ARM的FPGA启动及在线升级方法与流程

本发明属于fpga现场可编程门阵列应用技术领域,尤其涉及一种基于arm的fpga启动及在线升级方法。



背景技术:

fpga即现场可编程门阵列,是在pal、gal等可编程器件的基础上进一步发现的产物,它是一种新型可编程逻辑器件,硬件电路的功能实现可以通过用户进行编程和配置,在电路功能升级重配置时,仅需要修改升级fpga程序,达到产品功能更改及升级的方法。而不需要对硬件电路重新进行设计,提高了开发效率、减少了设计周期和研发成本。但是目前较多带有fpga系统的产品无法通过产品的维护端口实现启动及在线升级,影响了fpga使用的效率。

fpga在正常工作时,它的配置数据存储在配置芯片sram中,加电时须由配置芯片将fpga配置数据加载到fpga,多数情况下由fpga主动引导加载过程。

fpga配置数据的加载模式有5种:主串模式、从串模式、主并模式、从并模式和jtag模式。fpga从串模式下配置管脚包括:用于输入配置时钟控制信号的cclk、用于输入配置逻辑异步复位信号的prog_b、用于输出fpga初始化信号的init_b、用于输出fpga配置状态信号的done、用于输入fpga配置数据信号的din、用于输入fpga配置模式选择信号的m[0..2]。



技术实现要素:

本发明旨在针对带有fpga系统但无法通过产品的维护端口实现启动及在线升级的产品,提供一种基于arm的fpga启动及在线升级方法。

本发明所述基于arm的fpga启动方法,包括上位机、arm控制模块、flash存储模块、电源模块和fpga模块;所述arm控制模块是整个系统的核心模块,它读取flash存储模块中的数据,通过fpga配置管脚发送给fpga模块,实现fpga启动。所述flash存储模块主要完成fpga程序的写入与读取;所述电源模块为一路电路转换电路,主要完成将输入电压转换为arm、flash和fpga模块所需要的dc3.3v、dc1.5v电源;所述fpga模块主要完成接收arm控制模块的启动数据,实现fpga的启动过程。

所述fpga包括管脚cclk、prog_b、din、done和init_b;包括如下步骤:系统上电后,arm控制模块将prog_b输出为低电平,复位fpga内部逻辑并重新配置内存清除状态;

复位fpga后,将prog_b输出为高电平;

fpga开始清除配置内存,将init_b输出为低电平,arm控制模块将prog_b高电平保持300us后,fpga将init_b输出为高电平,并采样配置模式;

当arm控制模块采样到init_b为高电平后,开始向fpga模块发送配置时钟cclk和数据din;

在cclk的上升沿,传输数据到din,配置过程如发生错误,则fpga输出init_b为低电平;所有数据传输完成并经crc校验无误后,fpga输出done信号为高电平;

当arm控制模块采样到done为高电平后,结束fpga启动。

本发明所述基于arm的fpga在线升级方法,包括上位机、arm控制模块、flash存储模块、电源模块和fpga模块;在fpga模块启动正常工作后,arm控制模块接收上位机发送的fpga升级程序,通过flash存储模块写入存储器中,实现fpga的在线升级。所述上位机实现将开发软件编译好的fpga升级程序发送给arm控制模块;所述arm控制模块是整个系统的核心模块,它读取flash存储模块中的数据,通过fpga配置管脚发送给fpga模块,同时接收上位机fpga升级程序数据,写入到flash存储模块中;所述flash存储模块主要完成fpga程序的写入与读取;所述电源模块为一路电路转换电路,主要完成将输入电压转换为arm、flash和fpga模块所需要的dc3.3v、dc1.5v电源。

进一步,本发明所述基于arm的fpga在线升级方法,包括如下步骤:系统上电后,arm控制模块配置fpga启动过程完成后,进入fpga在线升级程序,循环等待上位机发送的fpga在线升级指令;

上位机运行后,加载fpga升级程序,并向arm控制模块发送fpga升级通讯指令;

arm控制模块在收到fpga升级通讯指令后,清除flash存储器所有存储数据,并回复升级准备完成数据指令;

然后,通过上位机发送开始更新指令,并向arm控制模块逐个发送每一帧通讯数据;arm控制模块在收到每一帧通讯数据并进行crc校验后,回复对应帧数据接收正确的指令,并将通讯数据按顺序写入flash存储器中;

当crc校验错误时,回复对应帧数据接收错误指令,上位机重新发送对应帧通讯数据;

当arm控制模块在接收完成最后一帧数据后,回复所有数据接收正确指令,上位机停止数据发送,实现的fpga在线升级。

本发明所述基于arm的fpga启动及在线升级方法,在fpga模块启动正常工作后,arm控制模块接收上位机发送的fpga升级程序,通过flash存储模块写入存储器中,实现fpga的在线升级,该方法实现带有fpga系统的产品启动及在线升级,本发明所述方法实现简单,方便,且大大提高了产品维护升级效率,降低了产品维护成本。

附图说明

图1为本发明实施例所述基于arm的fpga启动及在线升级系统结构示意框图;

图2为本发明实施例所述arm控制模块电路原理图;

图3为本发明实施例所述flash存储模块电路原理图;

图4为本发明实施例所述fpga模块部分电路原理图;

图5为本发明实施例所述arm控制模块配置fpga启动流程图;

图6为本发明实施例所述arm控制模块实现fpga在线升级流程图;

图7为本发明实施例所述arm控制模块内置嵌入式程序工作流程图。

具体实施方式

下面通过附图及实施例对本发明所述基于arm的fpga启动及在线升级方法进行详细说明。

本实施例所述基于arm的fpga启动及在线升级系统,如图1所示,主要包括上位机在线升级软件、arm控制模块、flash存储模块、电源模块和fpga模块。所述上位机通过内置软件实现fpga程序的在线升级功能,可实现将xilinxise开发软件编译好的fpga升级程序(.bin)通过在线升级接口分块发送给arm控制模块。所述arm控制模块是整个系统的核心模块,其原理如图2所示,它读取flash存储模块中的数据,通过fpga配置管脚发送给fpga模块,实现fpga启动,同时接收上位机fpga升级程序数据,写入到flash存储模块中。arm控制模块内置有嵌入式程序,如图7所示系统上电后,arm控制模块开始启动,首先完成时钟、pll、外围接口模块等的初始化;然后,按顺序读取flash数据,并通过fpga配置引脚将数据发送到fpga,完成fpga启动过程,fpga启动完成后,软件处于持续等待中,等待从在线升级接口接收上位机在线升级指令及数据,校验正确后,将数据按顺序写入flash,完成fpga的在线升级。arm控制模块使用arm架构的32位mcu微处理器。如图3所示,所述flash存储模块为一块spi接口的flash存储器,主要完成fpga程序的写入与读取。所述电源模块为一路电路转换电路,主要完成将输入电压转换为arm、flash和fpga等模块所需要的dc3.3v、dc1.5v电源;如图4所示,所述fpga模块为xilinx公司的fpga芯片电路,主要完成接收arm控制模块的启动数据,实现fpga的启动过程。

fpga配置数据的加载模式有5种:主串模式、从串模式、主并模式、从并模式和jtag模式。其中,jtag模式在开发调试阶段使用,其它四种模式在正常工作使用。为了实现fpga在线升级功能,fpga的配置数据加载模式选用从串模式,由arm控制模块控制配置时钟(cck)控制信号,并主导fpga的启动过程。在本实施例中采用从串配置模式;fpga从串模式下配置管脚说明如下:

fpga从串模式下的配置过程有四个主要阶段:

1、清除配置内存

fpga输出init_b和done信号为低电平,同时内存被清除。prog_b上输入高电平给fpga后,fpga复们配置逻辑同时保持fpga处理配置内存清除状态。当内存清除完毕后,fpga输出init_b信号为高电平。

2、初始化

在初始化阶段,fpga采集m[0..2]配置模式选择信号,确定起动配置模式,控制相应管脚状态,并开始配置过程。

3、载入配置数据

配置过程开始后,在cclk的上升沿时,fpga读取din信号数据,并在完成一个block后写入到内部数据寄存器(fdri)中,并执行crc冗余校验,重复上述过程,完成最后一位数据接收和处理。最后,执行crc冗余校验。

如果crc校验结果正确,设备启动阶段开始。如果crc不正确,fpga输出init_b信号为低电平,启动中止。

4、设备启动

在数据都配置完成后,fpga控制done信号为高电平。fpga启动完成,开始正常工作。

本实施例所述基于arm的fpga启动方法如图5所示,系统上电后,arm控制模块将prog_b输出为低电平,复位fpga内部逻辑并重新配置内存清除状态,充分复位fpga后(约100us),将prog_b输出为高电平。

fpga开始清除配置内存,将init_b输出为低电平,arm控制模块将prog_b高电平保持300us后,fpga将init_b输出为高电平,并采样配置模式m[0..2]。

当arm控制模块采样到init_b为高电平后,开始向fpga发送配置时钟cclk和数据din。在cclk的上升沿,传输数据到din,配置过程如发生错误,则fpga输出init_b为低电平。

所有数据传输完成并经crc校验无误后,fpga输出done信号为高电平。当arm控制模块采样到done为高电平后,结束fpga启动程序。

本实施例所述基于arm的fpga在线升级方法如图6所示,系统上电后,arm控制模块配置fpga启动过程完成后,进入fpga在线升级程序,循环等待上位机内置软件发送的fpga在线升级指令;

上位机内置软件运行后,加载fpga升级程序(.bin),确认文件大小、帧大小、帧个数后,通过在线升级接口向arm控制模块发送fpga升级通讯指令;arm控制模块在收到指令后,清除flash存储器所有存储数据,并通过在线升级接口回复升级准备完成指令;

然后,上位机通过在线升级接口向arm控制模块按帧大小逐个发送每一帧通讯数据;arm控制模块在收到每一帧数据并进行crc校验后,回复当前帧数据“接收正确”,并将数据按顺序写入flash存储器中;当crc校验错误时,回复当前帧数据“接收错误”,上位机内置软件重新发送当前帧数据;当arm控制模块在接收完成最后一帧数据后,回复所有数据“接收正确”,上位机内置软件停止数据发送,并提示fpga在线升级完成。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1