一种基于MicroBlaze软核的FPGA在线升级的系统及方法与流程

文档序号:13421343阅读:1171来源:国知局
一种基于MicroBlaze软核的FPGA在线升级的系统及方法与流程

本发明涉及电子技术领域,更具体地讲,涉及一种基于microblaze软核的fpga在线升级的系统及方法。



背景技术:

在板卡设计中经常会用到fpga(fieldprogrammablegatearray,现场可编程门阵列)芯片来实现接口协议或者接口控制,由于fpga通常开发复杂度高,经常会涉及到版本的升级,在现有技术中,fpga器件的升级方式大多是将经过编译后的配置程序,采用jtag(jointtestactiongroup,联合测试工作组)接口下载并烧录至fpga专用的配置芯片prom(programmableread-onlymemory,可编程只读存储器)中。

现有的升级方式有以下缺点:

1、jtag烧写器的烧写速度比较慢,对于早期小规模的逻辑程序来说该缺点还不明显,但对于现在常用的fpga器件比如xilinx的a7系列,逻辑程序一般在20mb以上,用jtag烧写大概需要20分钟;

2、jtag烧写器的传输距离不超过1米,因此板卡中jtag接口一般都预留在板卡上,由于板卡一般都安装在机箱中,每次升级fpga都需要拆卸机箱;

3、jtag需要烧写专用的mcs文件,mcs文件由bit文件转换而来,一般都比原bit文件大3倍左右;

4、使用jtag烧写器烧写过程中出现烧写错误或者板卡掉电则会导致fpga无法启动,需要重新用jtag进行烧写。



技术实现要素:

针对现有技术存在的问题,本发明提出一种基于microblaze软核的fpga在线升级的系统及方法,以实现对fpga的灵活升级。

microblaze嵌入式软核是基于xilinx公司fpga的微处理器ip核,和其它外设ip核一起,可以完成可编程系统芯片(sopc)的设计,具有运行速度快、占用资源少、可配置性强等优点。microblaze处理器采用risc架构和哈佛结构的32位指令和数据总线,可以全速执行存储在片上存储器和外部存储器中的程序,并访问其的数据。microblaze可以实现对fpga外接的flash存储设备进行读写访问,并且可以通过localbus总线和挂接的微处理器进行通信,这样微处理器就可以将升级文件发送给microblaze,microblaze把升级文件写入到flash中。

基于此,本发明的技术方案为:

所述一种基于microblaze软核的fpga在线升级的系统,包括集成在设备端的fpga,其特征在于:还包括集成在设备端的微处理器以及远端计算机;远端计算机与微处理器通过以太网连接;所述fpga上运行microblaze软核,microblaze软核通过localbus总线和微处理器连接通信,microblaze软核通过qspi总线外接flash设备作为存储器。

进一步的优选方案,所述一种基于microblaze软核的fpga在线升级的系统,其特征在于:所述远端计算机能够将升级文件通过以太网发送给微处理器,并提供错误重传机制;所述微处理器能够向microblaze软核发送升级指令和升级数据,并反馈升级信息;所述fpga能够运行microblaze软核,所述microblaze软核能够接收微处理器发送来的升级指令和升级数据,并将升级数据写入至所述flash设备。

进一步的优选方案,所述一种基于microblaze软核的fpga在线升级的系统,其特征在于:所述flash设备中的空间分为开关区、golden区和update区;其中:开关区存储开关字和跳转字,开关字为开则跳转至跳转字指定的区域运行,为关则从golden区域启动;所述golden区用于存储能使fpga正常启动的稳定版本fpga配置文件;所述update区用于存储升级版本的fpga配置文件。

进一步的优选方案,所述一种基于microblaze软核的fpga在线升级的系统,其特征在于:开关区、golden区和update区在flash地址从低到高。

进一步的优选方案,所述一种基于microblaze软核的fpga在线升级的系统,其特征在于:microblaze软核能够例化双口ramip核,双口ram一端由microblaze软核访问,另一端通过localbus总线挂载在微处理器上由微处理器访问;微处理器以生产者角色向双口ram放入升级数据,microblaze软核以消费者角色从双口ram取出升级数据。

所述一种基于microblaze软核的fpga在线升级方法,其特征在于:包括以下步骤:

步骤1:远端计算机通过以太网将flash中的跳转指令发送给微处理器,微处理器通过localbus总线发送给fpga中的microblaze软核,microblaze软核根据跳转指令将开关字和跳转字通过qspi总线存储到flash中的开关区;

步骤2:远端计算机通过以太网将升级数据和校验值发送至微处理器,微处理器收到数据后确认数据的正确性,若数据传输有误,则远端计算机进行数据重传;

步骤3:微处理器将升级数据和校验值分片后通过localbus发送至运行于fpga上的microblaze软核,microblaze软核校验接收到的分片数据,若数据有误则微处理器进行数据重传;

步骤4:microblaze软核将分片数据写入到flash中,在所有数据写入flash后,对全部写入数据进行校验。

进一步的优选方案,所述一种基于microblaze软核的fpga在线升级方法,其特征在于:步骤3中,microblaze软核例化双口ramip核实现微处理器和microblaze软核之间交换数据;双口ram一端由microblaze软核访问,另一端通过localbus总线挂载在微处理器上由微处理器访问;微处理器以生产者角色向双口ram放入升级数据,microblaze软核以消费者角色从双口ram取出升级数据。

进一步的优选方案,所述一种基于microblaze软核的fpga在线升级方法,其特征在于:步骤3和步骤4中,microblaze软核上运行fpga升级程序,时刻侦听微处理器是否有升级指令,若收到升级指令,则关闭开关字,擦除flash中的update区,然后接收微处理器发送过来的升级数据,并校验数据的正确性,将准确数据写到flash中,最后打开开关字。

有益效果

本发明通过远程计算机、微处理器和microblaze软核实现fpga在线升级,具有结构简单,升级时间短,安全可靠的优点。远端计算机将升级数据通过以太网发送至微处理器,微处理器将数据分片后通过localbus发送至运行于fpga上的microblaze软核,软核校验接收到的数据后写入到flash,flash中的文件分为三个区存储,开关区、golden区和update区,fpga上电后根据开关区的内容决定从golden区还是update区进行启动,确保升级过程中,不论执行到哪一步出错,再次上电后由于有golden区的存在,fpga都可以正常启动起来。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明的系统示意图;

图2为flash中三个区的分布示意图;

图3为fpga的启动流程示意图;

图4为微处理器和microblaze软核之间分片数据交换的示意图;

图5为microblaze运行的升级程序处理流程图;

图6为微处理器运行的升级控制程序处理流程图。

具体实施方式

下面详细描述本发明的实施例,所述实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

本发明的主要目的是要提出一种基于microblaze软核的fpga在线升级的系统及方法,以实现对fpga的灵活升级。

microblaze嵌入式软核是基于xilinx公司fpga的微处理器ip核,和其它外设ip核一起,可以完成可编程系统芯片(sopc)的设计,具有运行速度快、占用资源少、可配置性强等优点。microblaze处理器采用risc架构和哈佛结构的32位指令和数据总线,可以全速执行存储在片上存储器和外部存储器中的程序,并访问其的数据。microblaze可以实现对fpga外接的flash存储设备进行读写访问,并且可以通过localbus总线和挂接的微处理器进行通信,这样微处理器就可以将升级文件发送给microblaze,microblaze把升级文件写入到flash中。

基于此,本发明提出的基于microblaze软核的fpga在线升级的系统,包括集成在设备端的fpga、集成在设备端的微处理器以及远端计算机;远端计算机与微处理器通过以太网连接;所述fpga上运行microblaze软核,microblaze软核通过localbus总线和微处理器连接通信,microblaze软核通过qspi总线外接flash设备作为存储器。

所述远端计算机主要负责升级文件的管理,这里升级文件为bit文件,远端计算机将升级文件通过以太网发送给微处理器,并提供错误重传机制。所述微处理器是在线升级的控制中心,向microblaze软核发送升级指令和升级数据,并反馈升级信息;所述fpga运行microblaze软核,所述microblaze软核接收微处理器发送来的升级指令和升级数据,并将升级数据写入至所述flash设备。

所述flash设备中的空间地址从低到高依次分为开关区、golden区和update区;其中:开关区存储开关字和跳转字,开关字决定fpga从哪个区域启动,开关字为开则跳转至跳转字指定的区域运行,一般跳转字指定为update区域,为关则从golden区域启动;所述golden区用于存储能使fpga正常启动的稳定版本fpga配置文件,若升级失败仍可保证fpga正常启动;所述update区用于存储升级版本的fpga配置文件。三个区在flash中的分布如图2所示,fpga的启动流程如图3所示。

microblaze软核例化双口ramip核,双口ram一端由microblaze软核访问,另一端通过localbus总线挂载在微处理器上由微处理器访问;dpram定义为数据缓冲区,微处理器以生产者角色向缓冲区放入分片数据,microblaze软核以消费者角色从缓冲区中取出分片数据,微处理器和microblaze软核之间分片数据的交换如图4所示。

本实施例中,远端计算机采用联想扬天m6800k台式机,其上存有需要升级的fpga配置文件和升级程序,运行ftp服务器,根据微处理器升级控制程序的请求将文件通过ftp协议发送给微处理器。微处理器采用飞思卡尔的powerpc架构微处理器p2020,其上运行windriver公司的vxworks6.9操作系统;fpga采用xilinx公司的xaartix-7系列fpga芯片,具体型号为xa7a75t,使用与之配套的vivado2015.4开发环境。

整个基于microblaze软核的fpga在线升级方法,包括以下步骤:

步骤1:远端计算机通过以太网将flash中的跳转指令发送给微处理器,微处理器通过localbus总线发送给fpga中的microblaze软核,microblaze软核根据跳转指令将开关字和跳转字通过qspi总线存储到flash中的开关区;

步骤2:远端计算机通过以太网将升级数据和crc32校验值发送至微处理器,微处理器收到数据后确认数据的正确性,若数据传输有误,则远端计算机进行数据重传;

步骤3:微处理器将升级数据和crc32校验值分片后通过localbus发送至运行于fpga上的microblaze软核,microblaze软核校验接收到的分片数据,若数据有误则微处理器进行数据重传;

步骤3中,microblaze软核例化双口ramip核实现微处理器和microblaze软核之间交换数据;双口ram一端由microblaze软核访问,另一端通过localbus总线挂载在微处理器上由微处理器访问;微处理器以生产者角色向双口ram放入升级数据,microblaze软核以消费者角色从双口ram取出升级数据。

步骤4:microblaze软核将分片数据写入到flash中,在所有数据写入flash后,对全部写入数据进行校验。

步骤3和步骤4中,microblaze软核上运行fpga升级程序,时刻侦听微处理器是否有升级指令,若收到升级指令,则关闭开关字,擦除flash中的update区,然后接收微处理器发送过来的升级数据,并校验数据的正确性,将准确数据写到flash中,最后打开开关字。这样升级过程中,不论执行到哪一步出错,再次上电,由于有golden区的存在,fpga都可以正常启动起来。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

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