一种FPGA程序升级方法

摘要: 本发明涉及fpga系统升级领域,尤其涉及一种fpga程序升级方法。背景技术:1、fpga(field-programmablegatearray)的全称为现场可...
一种FPGA程序升级方法

本发明涉及fpga系统升级领域,尤其涉及一种fpga程序升级方法。

背景技术:

1、fpga(field-programmable gate array)的全称为现场可编译逻辑门阵列,它是一种用硬件描述语言编程来改变内部结构的芯片,因此具有强大的灵活性,在图像处理、卫星通信、智能驾驶、网络通信等领域得到广泛的应用。fpga上电后自动从flash芯片中加载程序,fpga自动读取flash芯片上从0x00地址开始存储的程序数据并运行,对fpga进行程序升级本质就是更新flash芯片上从0x00地址开始存储的程序数据。

2、常用的fpga程序升级方法是利用jtag接口和软件将程序数据写入到flash芯片中,fpga再从flash芯片中加载新的程序数据并运行。此方法最为简单,但是对于产品的现场升级维护却不是非常友好,不仅需要拆卸产品还需要现场升级人员熟悉软件和烧录器的使用,否则无法完成升级任务。此方法一般是用于研发和生产。

3、对于altera fpga的串口远程升级,需要将quartus ii生成的.sof文件和nios ii生成的.elf文件合并生成一个新的rpd文件,利用上位机软件传输到flash芯片中,该方法需要数据合成的rpd文件的内容结构,按要求写入flash芯片中,开发难度较大。为了避免花费时间分析rpd文件内容,降低开发难度本发明提出一种fpga程序升级方法。

技术实现思路

1、为了克服jtag接口升级带来的不便和降低串口升级开发难度,本发明提供了一种fpga程序升级方法。

2、本发明是采用以下方法实现的:一种fpga程序升级方法包括以下步骤:

3、s1:jtag烧写过程,使用nios ii的flash programmer工具,将elf文件和sof文件合并后通过jtag接口烧写到未装到产品上的fpga主板的flash中;

4、s2:数据转存,即读flash过程,通过安装有升级软件的上位机从该fpga板flash存储芯片的0x00地址中读取已经写入的新版程序,并将这些升级数据存储到一个bin文件中;

5、s3:串口传输,利用安装有升级软件的上位机,通过串口将此bin文件传输给另一块待升级的fpga目标板上的sdram中存储;

6、s4:目标板升级,目标板校验升级数据无误后将升级数据从sdram中搬移到自身的flash存储芯片中,等待写入完毕后断电重启系统即可完成fpga子系统的程序升级。

7、进一步地,步骤s2中,所述的数据转存包括了控制指令解析模块、握手模块、读flash芯片模块、数据编码模块和数据发送模块;

8、所述的控制指令解析模块用于接收上位机通过串口发送的控制指令,并从控制指令中解析读取flash芯片的初始地址addr和读取flash芯片中升级数据量大小filesize;

9、所述的握手模块用于fpga与上位机进行通信前的握手,确保升级数据能正确传输;

10、所述的读flash芯片模块用于从初始地址addr中读取升级数据,读取升级数据量总大小为filesize,同时将升级数据传输给数据编码模块进行编码;

11、所述的数据编码模块用于对读取的flash数据进行编码,编码后的升级数据传输给数据发送模块;

12、所述的数据发送模块用于通过串口与上位机进行通信,发送编码后的升级数据到上位机中。

13、进一步地,步骤s3中,所述串口传输中包括控制指令解析模块、握手模块、数据接收模块、数据解码模块、读写sdram模块;

14、所述的控制指令模块用于解析上位机发送的控制指令,使fpga进入接收升级数据模式;

15、所述的握手模块用于fpga与上位机进行通信前的握手,确保升级数据能正确传输;

16、所述的数据接收模块用于接收上位机传送过来的升级数据;

17、所述的数据解码模块用于按照协议解析升级数据并校验升级数据是否正确,升级数据校验正确就传递给写sdram模块,升级数据校验错误等待接收到正确升级数据为止同时开始计时,计时超过设定值则退出升级模式;

18、所述读写sdram模块用于sdram中开辟一片空间并将升级数据写入sdram进行储存,等待全部升级数据通过串口传输完毕再从sdram中将升级数据读出并传输给写flash模块。

19、进一步地,步骤s4中,所述写flash模块用于擦除flash存储空间,接收读写sdram模块中传递过来的升级数据并写入flash芯片中,写入flash芯片的初始地址为0x00。

20、本发明的有益效果在于:1、本发明通过结合jtag接口升级与串口升级两种方式来降低fpga远程升级的开发难度,通过对flash芯片的硬读写的方式规避了需要将quartusii生成的.sof文件和nios ii生成的.elf文件文件合并步骤。

21、2、通过jtag接口将代码烧写到一块未组装在产品上的fpga板,使得新的程序在flash保存,再通过串口从0x00地址读flash升级数据并保存为bin文件,利用串口将bin文件写入到待升级的fpga目标板flash芯片中,系统断电重启fpga就会自动从flash芯片的0x00地址加载新的程序执行,不需要拆机就能实现待升级的fpga目标板的程序升级。另外,只需要改变flash的读写地址即可修改存储在flash内的系统数据,实现用户数据的复制与备份,功能扩展灵活。

1.一种fpga程序升级方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种fpga程序升级方法,其特征在于:步骤s2中:包括了控制指令解析模块、握手模块、读flash芯片模块、数据编码模块和数据发送模块;

3.根据权利要求1所述的一种fpga程序升级方法,其特征在于:步骤s3中包括控制指令解析模块、握手模块、数据接收模块、数据解码模块、读写sdram模块;

4.根据权利要求1所述的一种fpga程序升级方法,其特征在于:步骤s4中包括写flash模块;