CN106406936A - 一种fpga程序多版本管理装置及方法 - Google Patents

一种fpga程序多版本管理装置及方法 Download PDF

Info

Publication number
CN106406936A
CN106406936A CN201610772503.XA CN201610772503A CN106406936A CN 106406936 A CN106406936 A CN 106406936A CN 201610772503 A CN201610772503 A CN 201610772503A CN 106406936 A CN106406936 A CN 106406936A
Authority
CN
China
Prior art keywords
program
unit
fpga
cpu
upgraded
Prior art date
Application number
CN201610772503.XA
Other languages
English (en)
Inventor
梁宝明
赵晓宇
李海燕
江可扬
彭溪
Original Assignee
中国船舶重工集团公司第七〇二研究所
中国船舶重工集团公司第七一二研究所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 中国船舶重工集团公司第七〇二研究所, 中国船舶重工集团公司第七一二研究所 filed Critical 中国船舶重工集团公司第七〇二研究所
Priority to CN201610772503.XA priority Critical patent/CN106406936A/zh
Publication of CN106406936A publication Critical patent/CN106406936A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Abstract

本发明公开了一种FPGA程序多版本管理装置,包括依次相连的待升级程序单元、CPU单元、FPGA单元、配置存储单元以及拨码开关;所述的待升级程序单元用于向CPU单元传输升级程序;所述的CPU单元通过数据链路向FPGA单元发送升级指令,由升级模块和链路接口组成;所述的FPGA单元包括链路接口、升级模块和应用逻辑;所述的配置存储单元包括用来存储不同的FPGA程序版本的多个Sector块;所述的拨码开关为外部输入控制接口,主要用于进行配置程序的选择和远程升级功能的使能控制;还公开了其控制方法;本发明通过设置被保护的Sector0单元从而避免了远程升级程序被破坏的危险,通过多版本管理可以存储多个功能配置版本,丰富了模块的功能。

Description

一种FPGA程序多版本管理装置及方法
技术领域
[0001] 本发明属于电力电子技术领域,尤其涉及一种FPGA程序多版本管理装置,以及其管理方法,主要用于实现FPGA程序多个版本的管理功能。
背景技术
[0002] FPGA因其应用灵活、功能能够多次重配等特点,使其在设计的开发验证和延长产品寿命等方面都非常有优势。而且随着近年来FPGA价格的不断下降其应用也越来与广泛。
[0003] 很多应用中FPGA都是以协处理器的身份出现的,且一个系统中有时会包含多个FPGA芯片,此时若通过USB-Bluster来逐个烧写非常麻烦,尤其是当电路板安装在设备上或需对大批产品升级时,往往需要繁琐的拆装过程,工作量是非常巨大的。所以针对这种情况,需要更高效的程序更新以及版本管理方法来提高烧写效率。
[0004]目前虽然有采用N1S软核进行远程升级的技术方案,但其并没有解决当对同一系统中的多个FPGA芯片进行烧写的问题,并且当程序在升级过程中出现升级失败(如意外断电等)时,就会造成存储芯片中原始程序的损坏,即使再重新上电也无法支持远程烧写功能,只能重新通过USB-Bluster来烧写。
发明内容
[0005] 为了克服现有技术的缺点和不足,本发明的目的之一是提供了一种FPGA程序多版本管理装置。
[0006] 本发明解决其技术问题所采用的技术方案是:一种FPGA程序多版本管理装置,包括依次相连的待升级程序单元、CPU单元、FPGA单元、配置存储单元以及拨码开关;
所述的待升级程序单元用于向CPU单元传输升级程序;
所述的CPU单元通过数据链路向FPGA单元发送升级指令,由升级模块和链路接口组成;所述的升级模块用于与待升级程序单元通信,收到升级指令后将升级程序以数据的形式传输到相应的FPGA单元;所述的链路接口用于建立CPU单元与FPGA单元的通信链路;
所述的FPGA单元包括链路接口、升级模块和应用逻辑;所述的链路接口功能与CPU单元的链路接口相对应,所述的升级模块用于将CPU单元传来的升级程序写至配置存储单元的对应Sector块中;所述的升级模块上设置有API接口,可以根据CPU发来的数据判断是否是升级指令;所述的应用逻辑为配置程序对FPGA单元进行配置后生成的应用逻辑;
所述的配置存储单元包括用来存储不同的FPGA程序版本的多个Sector块;
所述的拨码开关为外部输入控制接口,主要用于进行配置程序的选择和远程升级功能的使能控制。
[0007] 所述的一种FPGA程序多版本管理装置,其待升级程序单元为上位机、FLASH芯片或CPU单元可访问的RAM单元。
[0008] 所述的一种FPGA程序多版本管理装置,其配置存储单元为EPCS或QSPI。
[0009] 本发明的目的之二是提供了一种FPGA程序多版本管理装置的管理方法。
[0010] 本发明解决其技术问题所采用的技术方案是:一种FPGA程序多版本管理装置的管理方法,涉及包括待升级程序单元、CPU单元、FPGA单元、配置存储单元以及拨码开关的管理装置,步骤为:
SOI:待升级程序单元与CPU单元约定好传输协议;
S02:要升级FPGA单元的程序时,CPU单元对FPGA单元发出升级指令,FPGA单元收到升级指令后对比升级指令ID地址与自身ID是否匹配,匹配时则开始准备升级工作,当其准备就绪后将给CPU单元一个ready信号并开始升级;
S03: CPU单元向FPGA单元传输升级程序,FPGA单元收到数据以后,若校验通过则写入相应的Sector中,不同的Sector对应不同的程序版本;
S04:当校验出错时FPGA程序会回到初始状态并重新加载Sector O中的程序,同时CPU单元标记升级错误供上层程序处理;
S05:当配置数据成功写入到配置存储单元以后,升级程序会根据上位控制字节设置内部状态字节,从而完成整个升级过程。
[0011] 所述的一种FPGA程序多版本管理方法,其FPGA单元在首次烧写时将包含链路接口、升级模块的初始程序烧写至Sector O中,便于系统上电后首先被加载。
[0012] 进一步,FPGA单元的升级模块首次烧写由USB-BI as ter烧写至SectorO,并将SectorO作为不允许升级程序对其进行升级的存储段。
[0013] 所述的一种FPGA程序多版本管理方法,步骤S02中程序单元根据读取的拨码开关状态加载相应的程序:当为远程模式时,支持远程升级;当为本地模式时,屏蔽远程升级。
[0014] 进一步,当拨码开关最高位为I时,程序单元将接受远程控制指令加载相应Sector中的程序。当拨码开关最高位为O时,程序单元直接将相应Sector中的程序加载到FPGA单元中进行配置。
[0015] 本发明的有益效果是:通过设置被保护的SectorO单元从而避免了远程升级程序被破坏的危险,通过多版本管理可以存储多个功能配置版本,丰富了模块的功能;所以说本发明提供的技术更加安全可靠,且具有实用性,与现有技术相比,本发明能够根据配置选择加载不同版本的程序,增加了系统的灵活性;解决了程序在升级过程中,因意外造成的升级失败而破坏原始程序,导致无法再进行远程升级的问题;增加拨码开关进行升级功能的控制,避免误升级,增强了系统的安全性;此外,本发明在不增加现有成本的基础上实现了FPGA程序的升级和版本管理,方便高效且应用灵活。
附图说明
[0016]图1是本发明装置的结构框图;
图2是本发明管理方法的工作流程示意图。
具体实施方式
[0017] 为了更加清楚的阐述本发明方案,下面结合附图和实例对发明内容进行进一步的说明。应当理解,此处所描述的具体是实施例仅用于解释本发明,保护范围并不局限于所述实例。
[0018] 参照图1所示,本发明公开了一种FPGA程序多版本管理装置,包括依次相连的待升级程序单元、CPU单元、FPGA单元、配置存储单元以及拨码开关。
[0019] 所述的待升级程序单元用于向CPU单元传输升级程序,待升级程序单元为上位机、FLASH芯片或CPU单元可访问的RAM单元,待升级程序单元需要与CPU单元约定好传输协议。
[0020] 所述的CPU单元由升级模块和链路接口两部分组成,通过与FPGA单元之间的数据链路向FPGA单元发送升级指令。
[0021] CPU单元内部的升级模块用于与待升级程序单元通信,其负责监测升级指令,收到升级指令后负责将升级程序以数据的形式传输到相应的FPGA单元,将指定地址中的配置程序传输到FPGA中,并控制传输过程和检测传输结果,直至传输结束。
[0022] 所述的链路接口用于建立CPU单元与FPGA单元的通信链路;包括协议约定、空间分配等,当有特殊需求是也可以建立独立的通信接口如SP1、RS232等,利用CPU与FPGA间原有的通信信道即可,不需另建链路,其可支持以太网、USB、SPI等协议传输。
[0023] 所述的FPGA单元包括链路接口、升级模块和应用逻辑等几个部分,所述的链路接口功能与CHJ单元的链路接口相对应,所述的升级模块用于将CPU单元传来的升级程序写至配置存储单元的对应Sector块中,升级模块负责将配置存储单元划分成不同的Sector块,并将不同版本的配置程序依据ID号存储到不同的Sector中,上电时根据配置加载不同块中的程序,FPGA单元根据ID来判断是否升级,ID匹配后,CPU单元向FPGA单元传输升级数据,FPGA单元根据指令将升级数据存储到对应的空间中,不同空间对应不同的程序版本,上电时可根据上位指令或本板拨码开关选择性加载,实现升级和版本管理。
[0024] 所述的升级模块上设置有API接口,API接口是由FPGA程序自身的限制而设计的,主要负责与CPU单元的升级过程向对接,API接口能够根据CPU单元发来的数据判断是否是升级指令,且根据ID判断是否是对本单元的升级,从而支持网络式升级。
[0025] 所述的升级模块还负责对配置存储单元进行Sector块的划分,即将配置存储单元划分成不同的Sector块,比如Sector CKSector KSector 2、Sector 3、Sector 4、Sector
5、Sector 6......,配置存储单元将不同版本的配置程序依据ID号存储到不同的Sector中,
上电时根据配置加载不同块中的程序,其中升级模块是由Sector O中的程序配置生成,FPGA单元中的升级模块首次烧写由USB-Blaster烧写至SectorO,并且此存储段不允许升级程序对其进行升级。
[0026] 配置存储单元为EPCS或QSPI,可根据需要自行选定,使用时应根据程序量选择合适的大小的芯片。
[0027] 上电时首先由SectorO配置生成升级模块,然后再根据配置调用其它配置Sector来生成应用逻辑。
[0028] 所述的应用逻辑为配置程序对FPGA单元进行配置后生成的应用逻辑;
所述的拨码开关为外部输入控制接口,主要用于进行配置程序的选择和远程升级功能的使能控制。
[0029] 本发明管理装置采用CPU+FPGA+配置芯片的系统结构方式,支持一主多从的网络升级方式;在本实例中待升级程序单元为运行于PC的升级软件和待升级程序,升级指令由升级软件发起,并负责将待升级程序传输至CPU单元;待升级程序是由QUARTUS II生成的FPGA程序,SectorO中的升级模块程序需首先通过USB-Bluster下载至配置存储单元中。
[0030] 本实例中的CPU单元为运行有嵌入式Linux系统的SoC-FPGA系统,CPU单元在收到待升级程序后,现将程序缓存至RAM中,然后向FPGA单元发起升级指令。
[0031] 本地模式时,程序将根据拨码开关的值直接将相应Sector中的程序加载到FPGA中进行配置。
[0032] 参照图2所示,本发明公开了一种FPGA程序多版本管理装置的管理方法,步骤为: SOl:待升级程序单元与CPU单元约定好传输协议。
[0033] S02:要升级FPGA单元的程序时,CPU单元对FPGA单元发出升级指令,FPGA单元收到升级指令后对比升级指令ID地址与自身ID是否匹配,匹配时则开始准备升级工作,当其准备就绪后将通过其与FPGA间的数据链路给CPU单元一个ready信号并开始升级。
[0034] 程序单元根据读取的拨码开关状态,对程序升级和加载进行硬件控制:当为远程模式时,系统支持远程升级;当为本地模式时,系统屏蔽远程升级;当拨码开关最高位为I时,程序单元将接受远程控制指令加载相应Sector中的程序;当拨码开关最高位为O时,程序单元直接将相应Sector中的程序加载到FPGA单元中进行配置,这样方便现场操作,也增强了安全性能。
[0035] S03:CPU单元向FPGA单元传输升级程序,CPU单元负责将升级程序以数据的形式传输到FPGA中,利用CPU与FPGA间原有的通信信道即可,不需另建链路,其可支持以太网、USB、SPI等协议传输。
[0036] FPGA单元在首次烧写时必须将包含链路接口、升级模块的初始程序烧写至SectorO中,用于实现远程升级支持,便于系统上电后首先被加载,系统上电后配置芯片首先加载Sector O中的程序来配置FPGA芯片,上电时可根据上位指令或本板拨码开关选择性加载,实现升级和版本管理。
[0037] FPGA单元收到数据以后,若校验通过则写入相应的Sector中,不同的Sector对应不同的程序版本。
[0038] S04:当校验出错时FPGA程序会回到初始状态并重新加载Sector O中的程序,同时CPU单元标记升级错误供上层程序处理。
[0039] S05:当配置数据成功写入到配置存储单元以后,升级程序会根据上位控制字节设置内部状态字节,从而完成整个升级过程。
[0040] 其中FPGA单元的升级模块首次烧写由USB-Blas ter烧写至SectorO,并将SectorO作为不允许升级程序对其进行升级的存储段。
[0041] 上电时首先由SectorO配置生成升级模块,然后再根据配置调用其它配置Sector来生成应用逻辑。升级模块还负责对配置存储单元进行Sector块的划分。
[0042]上述实施例仅例示性说明本发明的原理及其功效,以及部分运用的实施例,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

Claims (9)

1.一种FPGA程序多版本管理装置,其特征在于:包括依次相连的待升级程序单元、CPU单元、FPGA单元、配置存储单元以及拨码开关; 所述的待升级程序单元用于向CPU单元传输升级程序; 所述的CPU单元通过数据链路向FPGA单元发送升级指令,由升级模块和链路接口组成;所述的升级模块用于与待升级程序单元通信,收到升级指令后将升级程序以数据的形式传输到相应的FPGA单元;所述的链路接口用于建立CPU单元与FPGA单元的通信链路; 所述的FPGA单元包括链路接口、升级模块和应用逻辑;所述的链路接口功能与CPU单元的链路接口相对应,所述的升级模块用于将CPU单元传来的升级程序写至配置存储单元的对应Sector块中;所述的升级模块上设置有API接口,可以根据CPU发来的数据判断是否是升级指令;所述的应用逻辑为配置程序对FPGA单元进行配置后生成的应用逻辑; 所述的配置存储单元包括用来存储不同的FPGA程序版本的多个Sector块; 所述的拨码开关为外部输入控制接口,主要用于进行配置程序的选择和远程升级功能的使能控制。
2.根据权利要求1所述的一种FPGA程序多版本管理装置,其特征在于,所述的待升级程序单元为上位机、FLASH芯片或CPU单元可访问的RAM单元。
3.根据权利要求1所述的一种FPGA程序多版本管理装置,其特征在于,所述的配置存储单元为EPCS或QSPI。
4.一种FPGA程序多版本管理方法,涉及权利要求1中所述的包括待升级程序单元、CPU单元、FPGA单元、配置存储单元以及拨码开关的管理装置,其特征在于,步骤为: SOI:待升级程序单元与CPU单元约定好传输协议; S02:要升级FPGA单元的程序时,CPU单元对FPGA单元发出升级指令,FPGA单元收到升级指令后对比升级指令ID地址与自身ID是否匹配,匹配时则开始准备升级工作,当其准备就绪后将给CPU单元一个ready信号并开始升级; S03: CPU单元向FPGA单元传输升级程序,FPGA单元收到数据以后,若校验通过则写入相应的Sector中,不同的Sector对应不同的程序版本; S04:当校验出错时FPGA程序会回到初始状态并重新加载Sector O中的程序,同时CPU单元标记升级错误供上层程序处理; S05:当配置数据成功写入到配置存储单元以后,升级程序会根据上位控制字节设置内部状态字节,从而完成整个升级过程。
5.根据权利要求4所述的一种FPGA程序多版本管理方法,其特征在于,所述的FPGA单元在首次烧写时将包含链路接口、升级模块的初始程序烧写至Sector O中,便于系统上电后首先被加载。
6.根据权利要求4所述的一种FPGA程序多版本管理方法,其特征在于,所述的步骤S02中程序单元根据读取的拨码开关状态加载相应的程序:当为远程模式时,支持远程升级;当为本地模式时,屏蔽远程升级。
7.根据权利要求6所述的一种FPGA程序多版本管理方法,其特征在于,当拨码开关最高位为I时,程序单元将接受远程控制指令加载相应Sector中的程序。
8.根据权利要求6所述的一种FPGA程序多版本管理方法,其特征在于,当拨码开关最高位为O时,程序单元直接将相应Sector中的程序加载到FPGA单元中进行配置。
9.根据权利要求5所述的一种FPGA程序多版本管理装置,其特征在于,所述的FPGA单元的升级模块首次烧写由USB-Blaster烧写至SectorO,并将SectorO作为不允许升级程序对其进行升级的存储段。
CN201610772503.XA 2016-08-31 2016-08-31 一种fpga程序多版本管理装置及方法 CN106406936A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610772503.XA CN106406936A (zh) 2016-08-31 2016-08-31 一种fpga程序多版本管理装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610772503.XA CN106406936A (zh) 2016-08-31 2016-08-31 一种fpga程序多版本管理装置及方法

Publications (1)

Publication Number Publication Date
CN106406936A true CN106406936A (zh) 2017-02-15

Family

ID=58003340

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610772503.XA CN106406936A (zh) 2016-08-31 2016-08-31 一种fpga程序多版本管理装置及方法

Country Status (1)

Country Link
CN (1) CN106406936A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106919426A (zh) * 2017-03-03 2017-07-04 广东浪潮大数据研究有限公司 一种多路服务器fpga版本同步的方法
CN107766251A (zh) * 2017-11-08 2018-03-06 郑州云海信息技术有限公司 加载image的检测方法、系统、设备及可读存储介质
CN108572831A (zh) * 2017-12-26 2018-09-25 中车株洲电力机车研究所有限公司 一种软件在线更新升级系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1928824A (zh) * 2006-09-20 2007-03-14 华为技术有限公司 一种加载fpga目标程序的方法及系统
CN101420328A (zh) * 2008-12-03 2009-04-29 杭州华三通信技术有限公司 远程升级现场可编程门阵列的系统、接口卡及方法
CN102087606A (zh) * 2011-02-16 2011-06-08 电子科技大学 一种fpga配置文件更新装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1928824A (zh) * 2006-09-20 2007-03-14 华为技术有限公司 一种加载fpga目标程序的方法及系统
CN101420328A (zh) * 2008-12-03 2009-04-29 杭州华三通信技术有限公司 远程升级现场可编程门阵列的系统、接口卡及方法
CN102087606A (zh) * 2011-02-16 2011-06-08 电子科技大学 一种fpga配置文件更新装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘剑 等: "一种基于Nand Flash 多版本程序的FPGA 智能加载方法", 《雷达与对抗》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106919426A (zh) * 2017-03-03 2017-07-04 广东浪潮大数据研究有限公司 一种多路服务器fpga版本同步的方法
CN107766251A (zh) * 2017-11-08 2018-03-06 郑州云海信息技术有限公司 加载image的检测方法、系统、设备及可读存储介质
CN107766251B (zh) * 2017-11-08 2021-02-02 苏州浪潮智能科技有限公司 加载image的检测方法、系统、设备及可读存储介质
CN108572831A (zh) * 2017-12-26 2018-09-25 中车株洲电力机车研究所有限公司 一种软件在线更新升级系统及方法

Similar Documents

Publication Publication Date Title
CN107111588B (zh) 经由USB端口使用PCIe协议的数据传输
US9858084B2 (en) Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory
CN102609286B (zh) 一种基于处理器控制的fpga配置程序远程更新系统及其方法
CN1975670B (zh) 使用引导代码引导微处理器系统的方法和装置
US7793035B2 (en) Memory system and controller
CN102200923B (zh) 从mmc/sd设备引导主机设备的方法及相关设备
TWI482022B (zh) 傳輸資料的方法、在通信線路上進行通信的方法及通信系統
TWI506559B (zh) 可動態和選擇性停用核心以及重新設定之多核心微處理器及其方法
CN103559053B (zh) 一种板卡系统及通信接口卡fpga在线升级方法
US20170337069A1 (en) Concurrent testing of pci express devices on a server platform
US20120023318A1 (en) Providing platform independent memory logic
CN103748569B (zh) Usb设备的无驱动操作的系统和方法
WO2016003559A1 (en) Techniques to communicate with a controller for a non-volatile dual in-line memory module
US8386764B2 (en) BIOS architecture
CN100362470C (zh) 一种bios在线升级装置及方法
KR20120096858A (ko) 모바일 디바이스의 어플리케이션 프로세서의 원격 시동
US20120072628A1 (en) Remote multiplexing devices on a serial peripheral interface bus
CN103473141A (zh) 一种带外查看及修改bios设置选项的方法
EP0083422A2 (en) Cross checking among service processors in a multi-processor system
CN106648803A (zh) 一种dsp芯片在线升级方法
US7055148B2 (en) System and method for updating firmware
US5729683A (en) Programming memory devices through the parallel port of a computer system
US9367510B2 (en) Backplane controller for handling two SES sidebands using one SMBUS controller and handler controls blinking of LEDs of drives installed on backplane
US9563442B2 (en) Baseboard management controller and method of loading firmware
CN104461657B (zh) 一种主备嵌入式引导程序的启动方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170215