用于实现FPGA程序动态升级及自加载的装置及方法.pdf

上传人:a2 文档编号:1285769 上传时间:2018-04-12 格式:PDF 页数:10 大小:519.34KB
返回 下载 相关 举报
摘要
申请专利号:

CN201610862379.6

申请日:

2016.09.29

公开号:

CN106502723A

公开日:

2017.03.15

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 9/445申请日:20160929|||公开

IPC分类号:

G06F9/445

主分类号:

G06F9/445

申请人:

四川九洲电器集团有限责任公司

发明人:

张洪波

地址:

621000 四川省绵阳市科创园区九华路6号

优先权:

专利代理机构:

北京聿宏知识产权代理有限公司 11372

代理人:

吴大建

PDF下载: PDF下载
内容摘要

本发明公开了一种用于实现FPGA程序动态升级及自加载的装置及方法,该装置包括:FLASH,设置于FPGA外部,其中,在FLASH内部设置有可自动加载到FGPA中运行的引导程序,在监测到FPGA程序升级指令时,引导程序自动接收用户升级程序数据,完成FLASH程序烧写并把升级成功的用户程序自动加载入FPGA中运行。本发明不但可以实现常规的程序动态升级功能,而且保证了程序启动时间不受任何影响,可以达到自加载启动的速度完全仅由FPGA器件所决定。

权利要求书

1.一种用于实现FPGA程序动态升级及自加载的装置,包括:
FLASH,设置于FPGA外部,
其中,在所述FLASH内部设置有可自动加载到FGPA中运行的引导程序,在监测到FPGA程
序升级指令时,所述引导程序自动接收用户升级程序数据,完成FLASH程序烧写并把升级成
功的用户程序自动加载入FPGA中运行。
2.根据权利要求1所述的装置,其特征在于,所述引导程序包括:
串口监测子程序,用于监测FPGA通信串口,以实现FPGA与外部设备的数据交互;
程序烧写子程序,用于将通过通信串口接收到的用户程序烧写入FLASH;
复位子程序,用于在FLASH烧写完成后使FPGA自动复位;
跳转子程序,用于在FPGA自动复位后自动加载FLASH中的用户程序。
3.根据权利要求1或2所述的装置,其特征在于,所述引导程序存储在FLASH中零开始的
空间,用户程序通过所述引导程序升级到FLASH任意地址空间。
4.根据权利要求1所述的装置,其特征在于,所述FLASH与FPGA通过SPI通信接口连接。
5.根据权利要求2所述的装置,其特征在于,待程序升级的FPGA的一输出端口与自身复
位端口连接,以使得FLASH烧写完成后通过所述输出端口向所述自身复位端口发出自复位
信号。
6.根据权利要求1所述的装置,其特征在于,所述引导程序由硬件语言编写,在产品开
发阶段烧写入FLASH中。
7.一种用于实现FPGA程序动态升级及自加载的方法,包括:
存储于FLASH中的引导程序自动加载到FPGA中并启动,以侦测是否有升级指令;
如侦测到有升级指令,FPGA通过引导程序接收升级指令,并根据升级指令在FLASH中擦
除及烧写用户程序;
在FLASH烧写完成用户程序后,所述引导程序将升级成功的用户程序自动加载入FPGA
中运行。
8.根据权利要求7所述的方法,其特征在于,在FLASH烧写完成用户程序后还包括FPGA
通过引导程序发出自复位信号,FPGA基于自复位信号进行复位后将升级成功的用户程序自
动加载入FPGA中。
9.根据权利要求8所述的方法,其特征在于,根据升级指令在FLASH中烧写用户程序之
后还包括校验步骤,用以判断用户程序烧写是否成功。
10.根据权利要求7所述的方法,其特征在于,存储于FLASH中的引导程序自动加载到
FPGA中并启动后,在预定时间内未检测到升级指令则跳转至已存储的用户程序入口。

说明书

用于实现FPGA程序动态升级及自加载的装置及方法

技术领域

本发明涉及程序加载技术领域,具体地说,尤其涉及一种用于实现FPGA程序动态
升级及自加载的装置及方法。

背景技术

通信系统大都由多个分机组成,每个分机内部都有各自的信号处理模块,都对应
着相应的程序。随着通信系统向集成化、综合化的方向发展,对FPGA的使用有更高的要求,
不但要求FPGA程序能进行远程动态升级,还必须在规定时间内完成快速加载运行。

普通的FPGA静态升级法是通过JTAG口把FPGA程序烧写到官方制定的适配FLASH
中。此种方法缺点是要使用JTAG口,连线多,不利于产品后期的动态维护和升级,通常在开
发阶段使用,比如烧一些十分高可靠性的成熟程序等。该方法的优点是FPGA程序加载速度
快,上电后FPGA会进行自加载运行,不需要外部干预。

常规的标准C开发系统,都有成熟的动态升级和加载方法。FPGA程序由于用硬件语
言编写,现在普遍方法还是通过第三方目标器件来协助完成,比如利用常见的处理器DSP或
CPLD等逻辑器件模拟标准SPI时序或BPI进行程序升级和加载。升级的时候是通过DSP等器
件接收用户程序,然后烧写到指定的FLASH中;加载的时候通过DSP等器件模拟SPI或者BPI
时序把FLASH中的数据加载到FPGA中去。

采用处理器进行协助的方法,可以满足FPGA程序动态升级的要求,但会耗费多余
的硬件资源。同时,综合化通信系统通常要求分机设备在几秒中内完成程序加载,如果用第
三方器件模拟时序把程序加载到FPGA内存中去,近百兆的数据花费几十秒钟,采用自加载
只需要1~2秒,所以该方法无法满足快速加载的需求。因为DSP或者其它处理芯片,都是通
过软件模拟时序的方式把存储于外部FLASH或者DDR等器件的程序搬移到FPGA中,在加载时
间和可靠性上,无法与通过FPGA芯片自身完成加载的方法相比。

发明内容

为解决以上问题,本发明提供了一种用于实现FPGA程序动态升级及自加载的装置
及方法,用以实现FPGA程序动态升级及自加载。

根据本发明的一个方面,提供了一种用于实现FPGA程序动态升级及自加载的装
置,包括:

FLASH,设置于FPGA外部,

其中,在所述FLASH内部设置有可自动加载到FGPA中运行的引导程序,在监测到
FPGA程序升级指令时,所述引导程序自动接收用户升级程序数据,完成FLASH程序烧写并把
升级成功的用户程序自动加载入FPGA中运行。

根据本发明的一个实施例,所述引导程序包括:

串口监测子程序,用于监测FPGA通信串口,以实现FPGA与外部设备的数据交互;

程序烧写子程序,用于将通过通信串口接收到的用户程序烧写入FLASH;

复位子程序,用于在FLASH烧写完成后使FPGA自动复位;

跳转子程序,用于在FPGA自动复位后自动加载FLASH中的用户程序。

根据本发明的一个实施例,所述引导程序存储在FLASH中零开始的空间,用户程序
通过所述引导程序升级到FLASH任意地址空间。

根据本发明的一个实施例,所述FLASH与FPGA通过SPI通信接口连接。

根据本发明的一个实施例,待程序升级的FPGA的一输出端口与自身复位端口连
接,以使得FLASH烧写完成后通过所述输出端口向所述自身复位端口发出自复位信号。

根据本发明的一个实施例,所述引导程序由硬件语言编写,在产品开发阶段烧写
入FLASH中。

根据本发明的另一个方面,还提供了一种用于实现FPGA程序动态升级及自加载的
方法,包括:

存储于FLASH中的引导程序自动加载到FPGA中并启动,以侦测是否有升级指令;

如侦测到有升级指令,FPGA通过引导程序接收升级指令,并根据升级指令在FLASH
中擦除及烧写用户程序;

在FLASH烧写完成用户程序后,所述引导程序将升级成功的用户程序自动加载入
FPGA中运行。

根据本发明的一个实施例,在FLASH烧写完成用户程序后还包括FGPA通过引导程
序发出自复位信号,FPGA基于自复位信号进行复位后将升级成功的用户程序自动加载入
FPGA中。

根据本发明的一个实施例,根据升级指令在FLASH中烧写用户程序之后还包括校
验步骤,用以判断用户程序烧写是否成功。

根据本发明的一个实施例,存储于FLASH中的引导程序自动加载到FPGA中并启动
后,在预定时间内未检测到升级指令则跳转至已存储的用户程序入口。

本发明的有益效果:

本发明不但可以实现常规的程序动态升级功能,而且保证了程序启动时间不受任
何影响,可以达到自加载启动的速度完全仅由FPGA器件所决定。本发明法在实际应用中,不
会带来任何额外的硬件开销,使用灵活,扩展性强,便于综合化、小型化通信系统中的多分
机模块使用,适合需要快速展开工作的系统设备。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变
得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利
要求书以及附图中所特别指出的结构来实现和获得。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要的
附图做简单的介绍:

图1是根据本发明的一个实施例的总体框架结构图;

图2是根据本发明的一个实施例的FPGA引导程序架构图;

图3是根据本发明的一个实施例的图1所示装置的操作流程示意图;

图4是根据本发明的一个实施例的方法流程图;

图5是根据本发明的一个实施例的FPGA引导程序升级用户程序的算法流程图;以

图6是根据本发明的一个实施例的FPGA引导程序自加载用户程序的算法流程图。

具体实施方式

以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用
技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明
的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,
所形成的技术方案均在本发明的保护范围之内。

本发明结合静态和动态升级方法的优点,提出了一种可以通过FPGA完成动态升级
及自加载程序的装置及方法,不但可以实现程序动态升级还可以提高加载速度。系统硬件
结构简单、使用灵活,适合于综合系统中需要实现动态升级及快速启动的分机设备。

如图1所示为根据本发明的一个实施例的系统总体框架图,以下参考图1来对本发
明进行详细说明。

该用于实现FPGA程序动态升级的装置包括闪存FLASH,其设置于FPGA外部。FLASH
是存储芯片的一种,通过特定的程序可以修改里面的数据,不仅具备电子可擦除可编程的
性能,还可以快速读取数,使数据不会因为断电而丢失。其中,在FLASH内部设置有可自动加
载到FGPA中运行的引导程序,在监测到FPGA程序升级指令时,引导程序自动接收用户升级
程序数据,完成FLASH程序烧写并把升级成功的用户程序自动加载入FPGA中运行。

如图1所示,该装置仅由待升级的FPGA和FLASH组成,FPGA的IO口线和FLASH数据关
键直接相连,中间没有任何辅助器件,不会带来任何额外的硬件开销,便于综合化、小型化
通信系统中的多分机模块使用。FPAG可以采用Xilinx或Altera厂家生产的芯片。

通过引导程序将用户程序写入FLASH中,FPGA从FLASH中加载用户程序,使得FPGA
程序加载速度快,并且不需使用连线较多的JTAG接口,方便FPGA后期程序动态维护和升级。

在本发明的一个实施例中,该引导程序包括串口监测子程序、程序烧写子程序、复
位子程序和跳转子程序四个子程序,如图2所示。其中,串口监测子程序用于监测FPGA通信
串口,以实现FPGA与外部设备的数据交互;程序烧写子程序用于将通过通信串口接收到的
用户程序烧写入FLASH;复位子程序用于在FLASH烧写完成后使FPGA自动复位;跳转子程序
用于在FPGA自动复位后自动加载FLASH中的用户程序。通过以上引导程序的四个子程序可
以实现FPGA程序动态升级。

在本发明的一个实施例中,FLASH与FPGA通过SPI通信接口连接。FLASH具有标准
SPI接口,FPGA和FLASH之间通过标准的四线SPI接口相连。在FPGA和FLASH芯片上都有专门
的四线定义,一对一连接起来形成标准SPI接口,按此种方式连接FPGA和FLASH芯片,FPGA程
序在复位FPGA后自动完成程序加载,加载速度是最快的。如图1所示,FPGA和FLASH之间通过
标准的四线SPI接口相连,SPI的4线串口分别是CSB(片选)、SCK(时钟)、S01(数据输入)和
S02(数据输出)。

在本发明的一个实施例中,引导程序存储在FLASH中零开始的空间,用户程序通过
引导程序升级到FLASH任意地址空间。该引导程序使用硬件编程语言完成,在产品开发阶段
通过JTAG口烧写到FLASH零地址开始的空间去,用户程序可在产品交付后通过引导程序升
级到FLASH任意地址。由于引导程序是在零地址开始的空间,而用户程序在FLASH其它空间,
所以在升级过程中,出现任何意外情况,比如擦写FLASH出现异常断电,都不会对引导程序
有任何破坏,此时只需要重新复位FPGA还可以继续升级或引导用户程序。

如图1所示,JTAG口由FPGA的四个管脚引出,包含TDO(数据输出),TDI(数据输入),
TMS(模式选择),TCK(时钟),通过这四个信号可以在底层完成对FPGA的仿真、调试和烧写,
这是开发FPGA必配的接口。另外,FPGA通过RS232异步升级串口接收升级数据,该串口由
FPGA上的两个普通IO脚引出RX(接收数据)和TX(发送数据),可以实现和PC机间的数据收
发,底层串口程序需要通过编程FPGA实现。

在本发明的一个实施例中,待程序升级的FPGA的一输出端口与自身复位端口连
接,以使得FLASH烧写完成后通过输出端口向自身复位端口发出自复位信号。具体的,如图1
所示,FPGA的一个普通IO脚和FPGA自身的复位管脚PROGRAM_B相连,带升级成功后,普通IO
脚输出一个低脉冲,导致FPGA复位,从而完成自加载,其效果等同于上电复位。

本发明与传统的利用DSP等处理器配合升级方式相比,由于没有任何一个多余器
件,利用该方法不但可以实现常规的程序动态升级功能,而且保证了程序启动时间不受任
何影响,可以达到自加载启动的速度完全仅由FPGA器件所决定。该方法在实际应用中,不会
带来任何额外的硬件开销,便于综合化、小型化通信系统中的多分机模块使用,优异的加载
速度更是适合需要快速展开工作的系统设备,使用灵活,扩展性强。

如图3所示为采用图1所示装置的操作流程示意图。当需要动态升级程序时,首先
在PC机上打开升级软件,通过RS232异步串口发送升级命令,此命令是按周期发送的,以便
下位机FPGA能准时侦测到此命令。然后重新上电FPGA,此时FPGA就可以及时捕获到升级命
令。当FPGA收到此命令后,会回传约定联机命令给PC机,PC机软件会显示正确的联机提示。
接着,可以在PC机上选择需要升级的用户程序,并发送给FPGA。FPGA启动烧写过程,包括擦
除、校验等步骤,如果成功会及时发送相应命令给PC机,最后进行自复位,把FPGA程序加载
到FPGA自身内存中去,FPGA就处于正常工作状态。

根据本发明的另一个方面,还提供了一种用于实现FPGA程序动态升级及自加载的
方法,如图4所示为根据本发明的一个实施例的方法流程图,如图5所示为对应图4的一个算
法实现流程图,以下参考图4和图5来对本方法进行详细说明。

首先,存储于FLASH中的引导程序自动加载到FGPA中并启动,以侦测是否有升级指
令。当FPGA需要升级程序时,首先通过外部触发或重新加电来复位FPGA,存储于FLASH中的
引导程序会自动加载到FPGA中运行并开启,此时运行在FPGA内部的是引导程序,它会侦测
升级命令,如果PC机串口软件向FPGA发送了升级指令,那么它会自动接收PC机发来升级数

接下来,如侦测到有升级指令,FPGA通过引导程序接收升级指令,并根据升级指令
在FLASH中擦除及烧写用户程序。具体的,如果有升级指令,那么向PC机发出联机指令,接收
PC机的控制。PC机会发出擦除FLASH某地址开始空间的指令,引导程序会执行擦除操作,并
把结果报给PC机,正确无误后,PC机会发送用户程序数据。引导程序接收用户程序数据,并
进行烧写。

如果在预定时间内,引导程序没有侦测到升级命令,那么会启动跳转指令直接进
入已存储的用户程序,如图6所示。

通常情况下,为保证程序烧写成功,在FLASH中烧写用户程序之后还包括校验步
骤。通常采用CRC回对校验,如果CRC不成功,需要进行多次重复烧写。

最后,在FLASH烧写完成用户程序后,引导程序将升级成功的用户程序自动加载入
FPGA中运行。通常,如果FLASH烧写成功则向PC机发送成功命令,同时启动自复位命令,完成
自复位操作,从而把写入到FLASH中的用户程序调入到FPGA内存中运行。此外,用户程序升
级过程中,PC机和引导程序之间需要进行多次的通信数据交互,此过程有通信异常处理机
制,如果出现通信问题,则由专门故障提示模块进行处理。

虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采
用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本
发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,
但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

用于实现FPGA程序动态升级及自加载的装置及方法.pdf_第1页
第1页 / 共10页
用于实现FPGA程序动态升级及自加载的装置及方法.pdf_第2页
第2页 / 共10页
用于实现FPGA程序动态升级及自加载的装置及方法.pdf_第3页
第3页 / 共10页
点击查看更多>>
资源描述

《用于实现FPGA程序动态升级及自加载的装置及方法.pdf》由会员分享,可在线阅读,更多相关《用于实现FPGA程序动态升级及自加载的装置及方法.pdf(10页珍藏版)》请在专利查询网上搜索。

本发明公开了一种用于实现FPGA程序动态升级及自加载的装置及方法,该装置包括:FLASH,设置于FPGA外部,其中,在FLASH内部设置有可自动加载到FGPA中运行的引导程序,在监测到FPGA程序升级指令时,引导程序自动接收用户升级程序数据,完成FLASH程序烧写并把升级成功的用户程序自动加载入FPGA中运行。本发明不但可以实现常规的程序动态升级功能,而且保证了程序启动时间不受任何影响,可以达到自。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1