CN106201590B - 一种fpga配置文件加载方法和系统 - Google Patents
一种fpga配置文件加载方法和系统 Download PDFInfo
- Publication number
- CN106201590B CN106201590B CN201610498862.0A CN201610498862A CN106201590B CN 106201590 B CN106201590 B CN 106201590B CN 201610498862 A CN201610498862 A CN 201610498862A CN 106201590 B CN106201590 B CN 106201590B
- Authority
- CN
- China
- Prior art keywords
- memory
- configuration
- upgrade
- cpu
- configuration file
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
- 238000011068 loading method Methods 0.000 title claims abstract description 37
- 230000015654 memory Effects 0.000 claims abstract description 437
- 238000000034 method Methods 0.000 claims description 62
- 230000008569 process Effects 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 9
- 230000005856 abnormality Effects 0.000 claims description 6
- 238000012423 maintenance Methods 0.000 abstract description 10
- 230000006870 function Effects 0.000 description 12
- 238000013461 design Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提出一种FPGA配置文件加载方法和系统,所述方法包括:中央处理器CPU读取所连接的备份存储器中的升级配置文件;所述CPU控制所述CPU与配置存储器连接,并基于所述与配置存储器的连接将所述升级配置文件存储至所述配置存储器中,以完成对所述配置存储器中已有配置文件的升级;所述CPU控制所述FPGA与所述配置存储器连接;所述CPU控制所述FPGA基于与所述配置存储器的连接读取并加载配置存储器内的升级配置文件,以完成对所述FPGA的升级。本发明实施例提供的技术方案能够增强系统的易维护性,大大降低升级成本,并且由于支持配置文件备份,可靠性高。
Description
技术领域
本发明涉及FPGA在线升级领域,具体涉及一种FPGA配置文件加载方法和系统。
背景技术
FPGA(Field-Programmable Gate Array,现场可编程逻辑门阵列)由于其设计的灵活性和强大的性能,使其在现代通信设备应用中的优势更加突出,已经成为通信系统的核心部件之一,在系统中处于举足轻重的地位。
但FPGA不同于专用芯片,在使用时必须从外部加载包含有配置程序的配置文件,才能使其具备所需的功能。一般情况下,FPGA在设备的开发调试阶段,大多使用JTAG(JointTest Action Group;联合测试工作组)下载线或专用的配置文件下载接口向其连接的外部配置芯片(Flash芯片)烧写文件,重新上电后FPGA自动加载配置文件中的配置程序,随后开始运行实现相应功能。这种方法稳定可靠,但只能加载固定的配置文件,一旦产品出厂就不能通过设备的任何外部接口更新配置程序,除非有专业维护人员到现场拆解设备,通过板内接口给FPGA升级配置程序。此方法维护不便、投入大。特别是一些偏远及无人执守站点的设备,维护成本极高。因此这种传统的设计方案在很多情况下,不能满足实际需要。利用通信设备的各种外部接口升级FPGA配置程序,增强产品的易维护性,大大降低维护成本。
发明内容
本发明实施例提供一种FPGA配置文件加载方法和系统,实现高可靠性的FPGA升级。
为了实现上述发明目的,本发明采取的技术方案如下:
一种FPGA配置文件加载方法,应用于由中央处理器CPU、备份存储器、配置存储器以及FPGA组成的系统,包括:
中央处理器CPU读取所连接的备份存储器中的升级配置文件;
所述CPU控制所述CPU与配置存储器连接,并基于所述与配置存储器的连接将所述升级配置文件存储至所述配置存储器中,以完成对所述配置存储器中已有配置文件的升级;
所述CPU控制所述FPGA与所述配置存储器连接;
所述CPU控制所述FPGA基于与所述配置存储器的连接读取并加载配置存储器内的升级配置文件,以完成对所述FPGA的升级。
优选地,在CPU读取备份存储器中的升级配置文件之前,还包括:
所述CPU获取所述升级配置文件,并存储在所述备份存储器中,以完成对所述备份存储器中已有配置文件的升级。
优选地,将所述升级配置文件存储至所述备份存储器中之后还包括:
所述CPU记录所述备份存储器和配置存储器中已有配置文件的状态以及所述备份存储器和配置存储器的存储内容是否一致;其中,所述状态为升级态或正常态。
优选地,在升级过程中所在系统出现异常而重新启动后,所述CPU根据所记录的内容确定本次升级的起始升级对象,从与该起始升级对象对应的升级过程处开始执行直至所述FPGA加载完毕所述升级配置文件;其中,所述起始升级对象为所述备份存储器中的已有配置文件、配置存储器中的已有配置文件或者FPGA。
优选地,当所述备份存储器和所述配置存储器中已有配置文件的状态依次为升级态和正常态,且二者的存储内容不一致时,所述起始升级对象为所述备份存储器中的已有配置文件;
当所述备份存储器和所述配置存储器中已有配置文件的状态均为正常态,且二者的存储内容不一致时,所述起始升级对象为所述配置存储器中的已有配置文件;
当所述备份存储器和所述配置存储器中已有配置文件的状态依次为正常态和升级态,且二者的存储内容不一致时,所述起始升级对象为所述配置存储器中的已有配置文件;
当备份存储器和配置存储器的状态均为正常态,且二者的存储内容一致时,起始升级对象为FPGA。
优选地,所述CPU记录的内容被存储于所述备份存储器中;所述备份存储器为所述CPU下挂的用于存储所述CPU主程序的非易失性存储器。
优选地,在所述CPU获取升级配置文件,并存储在所述备份存储器中之后,还包括:
所述CPU校验所述备份存储器中的升级配置文件是否正确;如果是,则确定对所述备份存储器中已有配置文件的升级完毕。
优选地,在所述CPU将升级配置文件存储至所述配置存储器之后,还包括:
所述CPU校验所述配置存储器中的升级配置文件是否正确;如果是,则确定对所述配置存储器中已有配置文件的升级完毕;否则,重新将升级配置文件存储至所述配置存储器,如果重新存储次数大于设定次数,则报错对所述配置存储器中已有配置文件的升级失败。
本发明还提供一种FPGA配置文件加载系统,包括:中央处理器CPU、切换开关、备份存储器、配置存储器以及FPGA;所述CPU分别与所述备份存储器、所述FPGA以及所述切换开关连接;所述切换开关分别与所述配置存储器和所述FPGA连接;其中,
中央处理器CPU,设置为读取所连接的备份存储器中的升级配置文件;
所述CPU,还设置为控制所述切换开关使得所述CPU与配置存储器连接,并基于所述与配置存储器的连接将所述升级配置文件存储至所述配置存储器中,以完成对所述配置存储器中已有配置文件的升级;
所述CPU,还设置为控制所述切换开关使得所述FPGA与所述配置存储器连接;
所述CPU,还设置为控制所述FPGA基于与所述配置存储器的连接读取并加载配置存储器内的升级配置文件,以完成对所述FPGA的升级。
优选地,所述CPU,还设置为获取所述升级配置文件,并存储在所述备份存储器中,以完成对所述备份存储器中已有配置文件的升级。
优选地,所述CPU,还设置为记录所述备份存储器和配置存储器中已有配置文件的状态以及所述备份存储器和配置存储器的存储内容是否一致;其中,所述状态为升级态或正常态。
优选地,在升级过程中所在系统出现异常而重新启动后,所述CPU,还设置为根据所记录的内容确定本次升级的起始升级对象,从与该起始升级对象对应的升级过程处开始执行直至所述FPGA加载完毕所述升级配置文件;其中,所述起始升级对象为所述备份存储器中的已有配置文件、配置存储器中的已有配置文件或者FPGA。
优选地,当所述备份存储器和所述配置存储器中已有配置文件的状态依次为升级态和正常态,且二者的存储内容不一致时,所述起始升级对象为所述备份存储器中的已有配置文件;
当所述备份存储器和所述配置存储器中已有配置文件的状态均为正常态,且二者的存储内容不一致时,所述起始升级对象为所述配置存储器中的已有配置文件;
当所述备份存储器和所述配置存储器中已有配置文件的状态依次为正常态和升级态,且二者的存储内容不一致时,所述起始升级对象为所述配置存储器中的已有配置文件;
当备份存储器和配置存储器的状态均为正常态,且二者的存储内容一致时,起始升级对象为FPGA。
优选地,所述CPU记录的内容被存储于所述备份存储器中;所述备份存储器为所述CPU下挂的用于存储所述CPU主程序的非易失性存储器。
优选地,所述CPU,还设置为校验所述备份存储器中的升级配置文件是否正确;如果是,则确定对所述备份存储器中已有配置文件的升级完毕。
优选地,所述CPU,还设置为校验所述配置存储器中的升级配置文件是否正确;如果是,则确定对所述配置存储器中已有配置文件的升级完毕;否则,重新将升级配置文件存储至所述配置存储器,如果重新存储次数大于设定次数,则报错对所述配置存储器中已有配置文件的升级失败。
与现有技术相比,本发明实施例提供的技术方案,无需维护人员到现场拆解设备,只要利用设备中CPU下挂的备份存储器预先存储升级配置文件加以备份,在需要对FPGA进行升级时,将该备份文件写入至FPGA启动时所要加载的配置存储器中,即可实现对FPGA的升级,能够增强系统的易维护性,大大降低升级成本。并且,由于本发明实施例支持配置文件备份,可靠性高。
附图说明
图1为本发明实施例的FPGA配置文件加载方法的示意图;
图2为本发明实施例4的FPGA配置文件加载流程示意图;
图3为本发明实施例5的FPGA升级中断流程示意图;
图4为本发明实施例7使用不同配置文件的双FPGA配置文件加载示意图;
图5为本发明实施例8使用不同配置文件的双FPGA配置文件加载示意图;
图6为本发明实施例9使用不同配置文件的双FPGA配置文件加载示意图。
具体实施方式
为使本发明的发明目的、技术方案和有益效果更加清楚明了,下面结合附图对本发明的实施例进行说明,需要说明的是,在不冲突的情况下,本申请中的实施例和实施例中的特征可以相互任意组合。
本发明实施例提供一种FPGA配置文件加载方法,该方法可应用于由中央处理器CPU、备份存储器、配置存储器以及FPGA组成的系统。在该系统中,CPU分别与备份存储器、配置存储器和FPGA连接,FPGA和配置存储器连接。当然,在该系统中,CPU和FPGA可均通过同一个切换开关与配置存储器连接,CPU控制切换开关在不同的升级过程中配置存储器与CPU或FPGA连通进行配置文件的传输。具体的,所述FPGA配置文件加载方法具体包括如下步骤:
(1)对配置存储器中已有配置文件进行升级
该步骤(1)具体包括:CPU读取所连接的备份存储器中的升级配置文件,控制CPU与配置存储器连接,将升级配置文件存储至配置存储器,以完成对配置存储器中已有配置文件的升级;
(2)对FPGA进行升级
该步骤(2)具体包括:CPU控制FPGA与配置存储器连接,使FPGA读取并加载配置存储器内的升级配置文件,以完成对FPGA的升级。
其中,本发明实施例涉及的各存储器(包括备份存储器和配置存储器)存储的配置文件的内容均为用于对FPGA进行功能配置的配置程序。并且,各存储器均为在系统断电时不会丢失存储内容的非易失性存储器,例如为FLASH闪存。示例性的,将升级配置文件存储至各存储器,具体包括:擦除各存储器中已有配置文件,将升级配置文件写入各存储器。也即,在该示例中是以覆盖写入的方式将升级配置文件存储至对应的存储器中的。
具体而言,备份存储器为可以与CPU连接进行通信的非易失性存储设备,例如可以是U盘或磁盘等外部存储器件。优选的,备份存储器为CPU下挂的用于存储CPU主程序的非易失性存储器,这样在大批量生产系统时,可不必独立烧写初始配置文件至配置存储器,只要在烧写CPU主程序至备份存储器的同时将该初始配置文件视为升级配置文件一同烧写至备份存储器,之后在系统初次上电时应用本发明实施例提供的方法即可使得FPGA加载到该配置文件进而运行其相应功能,大大提高了生产效率。
示例性的,在系统首次启动时,备份存储器中存储的升级配置文件可为生产系统时所烧写的初始配置文件,配置存储器中已有配置文件为空(可视为0),通过运行本发明实施例所提供的上述方法可以将该初始配置文件写入至配置存储器,由FPGA从配置存储器中加载运行。之后,在接收到用户触发的升级指令后,CPU可通过系统的对外通信接口在线获取升级配置文件(该文件内容为对FPGA进行实现功能的升级配置程序),将该升级配置文件以覆盖写入的方式存储至备份存储器,进而将该升级配置文件覆盖写入至配置存储器,由FPGA在系统断电而又再次上电后不必等CPU启动完毕便可直接加载配置存储器中的升级配置文件进行运行。这样,使得FPGA的启动不依赖于CPU,FPGA加载速度快,上电时可以实现快速加载配置文件,FPGA未配置空闲时间极短,可立即可用。
与现有技术相比,本发明实施例提供的技术方案,无需维护人员到现场拆解设备,只要利用设备中CPU下挂的备份存储器预先存储升级配置文件加以备份,在需要对FPGA进行升级时,将该备份文件写入至FPGA启动时所要加载的配置存储器中,即可实现对FPGA的升级,能够增强系统的易维护性,大大降低升级成本。
在本发明实施例中,备份存储器中存储的升级配置文件可以是人工预先烧写进去的,也可以是由CPU存入至备份存储器中的。作为一种优选的实施方式,在CPU读取所连接的备份存储器中的升级配置文件之前,还包括:CPU获取升级配置文件,并存储在备份存储器中,以完成对备份存储器中已有配置文件的升级。具体的,CPU可以在线从其他设备下载或者从与系统连接的外部存储设备中读取获得升级配置文件。
基于上述优选实施方式,进一步的,本发明实施例提供的方法还包括:CPU实时记录对备份存储器和配置存储器中已有配置文件的状态以及备份存储器和配置存储器的存储内容是否一致;其中所述状态为升级态或正常态;
在升级过程中所在系统出现异常而重新启动后,CPU根据所记录的内容确定本次升级的起始升级对象,从与该起始升级对象对应的升级过程处开始执行直至FPGA加载完毕升级配置文件;其中,起始升级对象为所述备份存储器中的已有配置文件、配置存储器中的已有配置文件或者FPGA。其中,所述升级过程可指的是:对备份存储器中已有配置文件进行升级的过程、对配置文件存储器中已有配置文件进行升级的过程以及对FPGA进行升级的过程中的任一过程。
具体的,当备份存储器和配置存储器中已有配置文件的状态依次为升级态和正常态,且二者的存储内容不一致时,起始升级对象为备份存储器中的已有配置文件;当备份存储器和配置存储器中已有配置文件的状态均为正常态,且二者的存储内容不一致时,起始升级对象为配置存储器中的已有配置文件;当备份存储器和所述配置存储器中已有配置文件的状态依次为正常态和升级态,且二者的存储内容不一致时,起始升级对象为配置存储器中的已有配置文件;当备份存储器和配置存储器的状态均为正常态,且二者的存储内容一致时,起始升级对象为FPGA。在该示例中,如果正在对任一存储器中已有配置文件进行升级,则该存储器中已有配置文件的状态即为升级态;反之,则其状态即为正常态。
优选的,CPU实时记录的内容被存储于备份存储器中。
在上述所有技术方案的基础上,在CPU获取升级配置文件,并存储在备份存储器中之后,还包括:
CPU校验备份存储器中的升级配置文件是否正确;如果是,则确定对备份存储器中已有配置文件升级完毕;
在CPU将升级配置文件存储至配置存储器之后,还包括:
CPU校验配置存储器中的升级配置文件是否正确;如果是,则确定对配置存储器中已有配置文件升级完毕;否则,重新将升级配置文件存储至配置存储器,如果重新存储次数大于设定次数,则报错对配置存储器中已有配置文件的升级失败。
基于与本发明实施例提供的FPGA配置文件加载方法相同的发明构思,本发明实施例还提供了一种FPGA配置文件加载系统。该系统包括:中央处理器CPU、切换开关、备份存储器、配置存储器以及FPGA;所述CPU分别与所述备份存储器、所述FPGA以及所述切换开关连接;所述切换开关分别与所述配置存储器和所述FPGA连接;其中,
中央处理器CPU,设置为读取所连接的备份存储器中的升级配置文件;
所述CPU,还设置为控制切换开关使得所述CPU与配置存储器连接,并基于所述与配置存储器的连接将所述升级配置文件存储至所述配置存储器中,以完成对所述配置存储器中已有配置文件的升级;
所述CPU,还设置为控制所述切换开关使得所述FPGA与所述配置存储器连接;
所述CPU,还设置为控制所述FPGA基于与所述配置存储器的连接读取并加载配置存储器内的升级配置文件,以完成对所述FPGA的升级。
在升级过程中所在系统出现异常而重新启动后,所述CPU,还设置为根据所记录的内容确定本次升级的起始升级对象,从与该起始升级对象对应的升级过程处开始执行直至所述FPGA加载完毕所述升级配置文件;其中,所述起始升级对象为所述备份存储器中的已有配置文件、配置存储器中的已有配置文件或者FPGA。
当所述备份存储器和所述配置存储器中已有配置文件的状态依次为升级态和正常态,且二者的存储内容不一致时,所述起始升级对象为所述备份存储器中的已有配置文件;
当所述备份存储器和所述配置存储器中已有配置文件的状态均为正常态,且二者的存储内容不一致时,所述起始升级对象为所述配置存储器中的已有配置文件;
当所述备份存储器和所述配置存储器中已有配置文件的状态依次为正常态和升级态,且二者的存储内容不一致时,所述起始升级对象为所述配置存储器中的已有配置文件;
当备份存储器和配置存储器的状态均为正常态,且二者的存储内容一致时,起始升级对象为FPGA。
所述CPU,还设置为校验所述备份存储器中的升级配置文件是否正确;如果是,则确定对所述备份存储器中已有配置文件的升级完毕。
所述CPU,还设置为校验所述配置存储器中的升级配置文件是否正确;如果是,则确定对所述配置存储器中已有配置文件的升级完毕;否则,重新将升级配置文件存储至所述配置存储器,如果重新存储次数大于设定次数,则报错对所述配置存储器中已有配置文件的升级失败。
以下通过介绍多个实施例来详细阐述本发明实施例提供的技术方案。
实施例1
如图1所示,CPU即主控单元,用于控制系统整体启动、升级、正常运行。CPU通过以太或其它接口与外围设备连接,用于接收用户升级命令,接收输入的升级数据,向用户反馈升级结果;CPU外接备份存储器,备份存储器用于存储CPU主程序、FPGA升级配置文件(如果是初次启动时,为生产时烧写的初始配置文件),备份存储器接口及类型由CPU决定,可以是FLASH芯片(如NOR-FLASH、NAND-FLASH等),也可以是存储卡(如SD卡、CF卡等),或是其它形式的存储器;
CPU数据接口连接切换开关,一般为SPI接口;CPU向切换开关提供通道切换信号SW,控制由CPU或FPGA连接配置存储器;
切换开关起到SPI数据通道切换作用。
CPU连接切换开关;CPU向切换开关提供通道切换信号SW(Switch,通道切换信号),控制由CPU或FPGA连接配置存储器,此信号默认为高,即FPGA与配置存储器连接;CPU接收FPGA的DONE信号,此信号为高时指示FPGA加载完成;CPU向FPGA输出PROG/CONF信号,用于控制FPGA从配置存储器重新加载配置文件,此信号默认为高,即FPGA正常工作。
备份存储器:与CPU连接,用于存储CPU主程序、FPGA升级配置文件,本实施例中以FLASH芯片作为备份存储器。
FPGA:通过DONE、PROG/CONF信号与CPU通信,受CPU控制是否从配置存储器重新加载配置文件,并向CPU输出是否加载完成状态的反馈信息;通过配置加载接口与切换开关连接,用于上电或重新加载升级配置文件时输入配置存储器内的升级配置文件。本实施例中,以FPGA最常使用SPI-FLASH配置文件加载方式进行说明,对于使用并行通用FLASH加载方式(BPI接口,Byte Peripheral Interface)也适用于本发明实施例提供的方法,仅接口类型不同。
FPGA应处于使用SPI接口配置芯片的主动加载模式,对应Altera芯片为AS(ActiveSerial)方式;对应Xilinx芯片为Master SPI方式。
切换开关:通用逻辑器件或可编程逻辑器件均可,起到SPI数据通道切换作用,由CPU输出的SW信号控制。此信号为高时,FPGA连接SPI-FLASH;为低时CPU连接SPI-FLASH。
配置存储器:存储FPGA当前要加载的配置文件,与切换开关通过SPI接口连接。
实施例2
为保证系统在升级过程中的稳定可靠,确保备份存储器与配置存储器中配置文件的一致性。在备份存储器中设置了升级标志位,用于存储升级过程中备份存储器和配置存储器中已有配置文件的状态以及备份存储器和配置存储器的存储内容是否一致,防止升级过程中掉电导致的数据错误。其中,所述状态为升级态或正常态。
升级标志位是由CPU写入备份存储器的,在系统首次启动时,备份存储器中对应位置内容为空。正常运行时升级标志位描述如下表。
表1
实施例3
本实施例说明系统启动时的配置文件加载情况。
在生产过程中,使用生成的包含CPU主程序、初始配置文件在内的存储器合成文件,通过烧写器方式,提前烧写到备份存储器芯片中,然后焊接在板卡上。无需再对FPGA下挂的配置存储器烧写配置文件。
1.系统首次启动:①由于配置存储器为空,此时FPGA不加载配置文件,处于未配置状态;②CPU启动后,确认FPGA输出的DONE信号为低,即FPGA未载入配置;③CPU读取备份存储器中的升级标志位,此时该升级标志位为空,确认板卡为首次启动;④CPU控制SW输出为低,控制切换开关切换,使CPU连接配置存储器;⑤CPU写升级标志位:备份存储器:正常、配置存储器:升级、存储器内容异同:不同;⑥CPU将备份存储器中的初始配置文件覆盖写入配置存储器中;⑦配置存储器完成写入后,CPU校验配置存储器中数据,如正确则写升级标志位:备份存储器:正常、配置存储器:正常、存储器内容异同:相同;⑧CPU控制整板复位,重启后进入正常启动模式。
2.系统正常启动:①设备上电后,FPGA迅速加载配置存储器中的配置文件,FPGA正常运行;②CPU启动后,确认FPGA输出的DONE信号为高,即FPGA已载入配置文件;③CPU读取备份存储器中的升级标志位,此时升级标志位为:备份存储器:正常、配置存储器:正常、存储器差异:相同,确认板卡为正常启动;④系统正常运行,等待用户操作。
实施例4
本实施例说明配置文件加载功能实现流程,如图2所示。
1.设备上电、系统启动后,FPGA迅速加载配置存储器中的配置文件,FPGA正常运行;
2.CPU启动后,确认FPGA输出的DONE信号为高,即FPGA已载入配置文件;
3.CPU读取系统备份存储器中的升级标志位,此时升级标志位为:备份存储器:正常、配置存储器:正常、存储器差异:相同,确认FPGA加载正常,板卡为正常启动;
4.用户通过命令触发设备进入配置文件在线升级模式;
5.CPU写升级标志位:备份存储器:升级、配置存储器:正常、存储器差异:不同;
6.CPU接收升级配置文件,写入CPU下挂的备份存储器;
7.备份存储器完成写入后,CPU校验写入数据是否正确,若不正确,则向用户反馈备份存储器升级失败,升级流程结束;
8.若正确,写升级标志位:备份存储器:正常、配置存储器:正常、存储器差异:不同;
9.CPU控制SW输出为低,控制切换开关切换,使CPU连接配置存储器;
11.CPU写升级标志位:备份存储器:正常、配置存储器:升级、存储器差异:不同;
12.CPU将备份存储器中的升级配置文件覆盖写入配置存储器中;
13.配置存储器完成写入后,CPU校验配置存储器中数据是否正确,若不正确,重写配置存储器数据,如果重写次数大于3次,则报错配置存储器升级失败,升级流程结束;
14.若正确,写升级标志位:备份存储器:正常、配置存储器:正常、存储器差异:相同;
15.CPU控制SW输出为高,控制切换开关切换,使FPGA连接配置存储器;
16.CPU将PROG/CONF置低10ms,随后拉高,以指示FPGA开始加载配置存储器中的升级配置文件;
17.FPGA加载新的升级配置文件,系统进入延时等待状态(等待时间与FPGA容量有关,各系统自行定义);
18.CPU读取FPGA的DONE信号状态是否为高,若为低,则指示FPGA重新加载升级配置文件,如果重新加载次数大于3次,则报错FPGA加载文件失败,升级流程结束;
19.若为高,则确定FPGA正常加载升级配置文件,升级成功;
20.完成升级流程,系统进入正常运行模式。
实施例5
本实施例说明配置文件在线升级中断的情况,流程如图3所示。
由于部分设备运行环境较为恶劣,有可能在配置文件升级过程中出现设备掉电情况。本实施例针对此情况增加了升级标志位,用于区分掉电或其它因素引起升级中断时各存储器中配置文件的状态,以便确认设备再次上电启动时进入相应的操作程序,系统仍能保证设备运行正常。
根据在线升级流程所述,升级标志位共有4种状态(参见图3所示)。在线升级过程中,每进行下一步操作时,都会先对升级标志位写入相应状态。如果升级过程中出现设备掉电或其它因素引起升级中断,则升级标志位会保持在上一状态。
由于升级流程中断位置不同,当系统再次启动后,FPGA有可能正常加载未升级的配置文件,或无法加载配置文件。不论FPGA的DONE信号是否正常,CPU都会读取升级标志位,并根据升级标志位的不同内容,开始运行升级流程中此升级标志位对应的下一步操作,并逐一完成在线升级流程,最终确保备份存储器、配置存储器中的配置文件、FPGA当前加载的配置文件相一致,确保FPGA工作正常。
升级中断情况后,系统重启时,CPU操作在线升级功能实现流程如图3所示,当备份存储器升级过程中中断时,此时备份存储器的状态为升级,配置存储器的状态为正常,备份存储器和配置存储器存储的文件不同,此时,起始升级对象为所述备份存储器中的已有配置文件;之后,再依次执行对配置存储器中已有配置文件和FPGA的升级;
当备份存储器升级完成后中断时,此时备份存储器的状态为正常,配置存储器的状态为正常,备份存储器和配置存储器存储的文件不同,此时,起始升级对象为所述配置存储器中的已有配置文件;之后,再执行对FPGA的升级即可;
当配置存储器升级过程中中断时,此时备份存储器的状态为正常,配置存储器的状态为升级,备份存储器和配置存储器存储的文件不同,此时,所述起始升级对象为所述配置存储器中的已有配置文件;之后,再执行对FPGA的升级即可;
当正常启动时,此时备份存储器的状态为正常,配置存储器的状态为正常,备份存储器和配置存储器存储的文件相同,此时,起始升级对象为FPGA。
实施例6
一些具有复杂功能的系统在设计时,往往会包含多个FPGA芯片用于实现多个相同或不同的功能。相应的,多FPGA的系统可以分为多个FPGA使用相同的配置文件或使用不同的配置文件的情况。
对于使用相同配置文件的多个FPGA的情况,系统设计结构、配置文件加载和升级方法与单一FPGA的情况类似,只需要对单一的配置存储器进行配置文件升级操作即可,各个FPGA可以从该配置存储器中加载配置文件,此处不再赘述。
对于多个FPGA使用不同配置文件的情况,仍然可以使用本发明上述实施例针对单个FPGA提供的技术方案来实现多个FPGA的配置文件加载和升级功能。所不同的是,此情况下需要每个FPGA单独下挂一个配置存储器,其备份存储器可共用系统CPU下挂的同一片备份存储器,无需新增备份存储器芯片,在保证系统可靠性的同时可以降低系统设计物料成本。
实施例7
以包含两个使用不同配置文件的FPGA的系统为例进行说明,两个以上FPGA的系统设计与此类似,增加相应的器件和控制电路即可,此处不再赘述。
如图4所示,使用不同配置文件的双FPGA的系统可以直接在仅包含单个FPGA的系统上对第二个FPGA增加对应的控制信号、数据通道、切换开关实现。而第二个FPGA的升级配置文件仍然可以直接存储在备份存储器中,即两个FPGA共用备份存储器存储配置文件。
实施例8
在本实施例中,考虑到板卡上器件集成度高,PCB(Printed Circuit Board,印制电路板)面积紧张,所以与上述实施例七不同,本实施例使用CPLD(Complex ProgrammableLogic Device,复杂可编程逻辑器件)来代替多个切换开关实现相应的功能,以减小板上器件数量。因此采用图5的方案,使用CPLD芯片替代图4中对应不同FPGA的两个切换开关。
实施例9
与实施例8的不同之处在于,图6的设计方案,使用CPLD实现不同FPGA对应的控制信号、数据通道、切换开关,而CPU只需通过板内总线接口操作CPLD内部寄存器即可实现相应功能,这种设计集成度更高,设计更加简单。
上述实施例1-9所提供的技术方案,能够增强系统设备的易维护性,降低维护成本的同时,最大程度上消除了已有升级方案的不足,同时兼顾了系统可靠性、启动速度和升级速度,具体体现在:
1.FPGA的启动不依赖于CPU,FPGA加载速度快,上电立即可用,几乎不存在未配置状态;
2.大批量生产系统时只需烧写系统CPU下挂的备份存储器,无需独立烧写配置存储器,生产效率高;
3.系统CPU下挂的备份存储器并非升级过程中的数据缓存空间,而是作为升级配置程序的备份存储器件使用,易于使用,可靠性高;
4.在线升级时升级数据直接写入系统CPU下挂的备份存储器即可,无需等待向配置存储器写入数据,升级操作速度快。
5.有完整的升级中断保护机制,避免升级过程中出现异常对系统造成不可恢复的损坏,系统可靠性高。
虽然本发明所揭示的实施方式如上,但其内容只是为了便于理解本发明的技术方案而采用的实施方式,并非用于限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭示的核心技术方案的前提下,可以在实施的形式和细节上做任何修改与变化,但本发明所限定的保护范围,仍须以所附的权利要求书限定的范围为准。
Claims (14)
1.一种FPGA配置文件加载方法,其特征在于,应用于由中央处理器CPU、备份存储器、配置存储器以及FPGA组成的系统,包括:
中央处理器CPU读取所连接的备份存储器中的升级配置文件;
所述CPU控制所述CPU与配置存储器单独连接,并基于所述与配置存储器的连接将所述升级配置文件存储至所述配置存储器中,以完成对所述配置存储器中已有配置文件的升级;
所述CPU控制所述FPGA与所述配置存储器单独连接;
所述CPU控制所述FPGA基于与所述配置存储器的连接,使所述FPGA读取并加载配置存储器内的升级配置文件,以完成对所述FPGA的升级;
当所述备份存储器和所述配置存储器中已有配置文件的状态依次为升级态和正常态,且二者的存储内容不一致时,起始升级对象为所述备份存储器中的已有配置文件;
当所述备份存储器和所述配置存储器中已有配置文件的状态均为正常态,且二者的存储内容不一致时,起始升级对象为所述配置存储器中的已有配置文件;
当所述备份存储器和所述配置存储器中已有配置文件的状态依次为正常态和升级态,且二者的存储内容不一致时,起始升级对象为所述配置存储器中的已有配置文件;
当备份存储器和配置存储器的状态均为正常态,且二者的存储内容一致时,起始升级对象为FPGA。
2.如权利要求1所述的方法,其特征在于,在CPU读取备份存储器中的升级配置文件之前,还包括:
所述CPU获取所述升级配置文件,并存储在所述备份存储器中,以完成对所述备份存储器中已有配置文件的升级。
3.如权利要求2所述的方法,其特征在于,将所述升级配置文件存储至所述备份存储器中之后还包括:
所述CPU记录所述备份存储器和配置存储器中已有配置文件的状态以及所述备份存储器和配置存储器的存储内容是否一致;其中,所述状态为升级态或正常态。
4.如权利要求3所述的方法,其特征在于,在升级过程中所在系统出现异常而重新启动后,所述CPU根据所记录的内容确定本次升级的起始升级对象,从与该起始升级对象对应的升级过程处开始执行直至所述FPGA加载完毕所述升级配置文件;其中,所述起始升级对象为所述备份存储器中的已有配置文件、配置存储器中的已有配置文件或者FPGA。
5.根据权利要求1或4所述的方法,其特征在于,所述CPU记录的内容被存储于所述备份存储器中;所述备份存储器为所述CPU下挂的用于存储所述CPU主程序的非易失性存储器。
6.根据权利要求2所述的方法,其特征在于,在所述CPU获取升级配置文件,并存储在所述备份存储器中之后,还包括:
所述CPU校验所述备份存储器中的升级配置文件是否正确;如果是,则确定对所述备份存储器中已有配置文件的升级完毕。
7.根据权利要求2所述的方法,其特征在于,在所述CPU将升级配置文件存储至所述配置存储器之后,还包括:
所述CPU校验所述配置存储器中的升级配置文件是否正确;如果是,则确定对所述配置存储器中已有配置文件的升级完毕;否则,重新将升级配置文件存储至所述配置存储器,如果重新存储次数大于设定次数,则报错对所述配置存储器中已有配置文件的升级失败。
8.一种FPGA配置文件加载系统,其特征在于,包括:中央处理器CPU、切换开关、备份存储器、配置存储器以及FPGA;所述CPU分别与所述备份存储器、所述FPGA以及所述切换开关连接;所述切换开关分别与所述配置存储器和所述FPGA连接;其中,
中央处理器CPU,设置为读取所连接的备份存储器中的升级配置文件;
所述CPU,还设置为控制所述切换开关使得所述CPU与配置存储器单独连接,并基于所述与配置存储器的连接将所述升级配置文件存储至所述配置存储器中,以完成对所述配置存储器中已有配置文件的升级;
所述CPU,还设置为控制所述切换开关使得所述FPGA与所述配置存储器单独连接;
所述CPU,还设置为控制所述FPGA基于与所述配置存储器的连接,使所述FPGA读取并加载配置存储器内的升级配置文件,以完成对所述FPGA的升级;
当所述备份存储器和所述配置存储器中已有配置文件的状态依次为升级态和正常态,且二者的存储内容不一致时,起始升级对象为所述备份存储器中的已有配置文件;
当所述备份存储器和所述配置存储器中已有配置文件的状态均为正常态,且二者的存储内容不一致时,起始升级对象为所述配置存储器中的已有配置文件;
当所述备份存储器和所述配置存储器中已有配置文件的状态依次为正常态和升级态,且二者的存储内容不一致时,起始升级对象为所述配置存储器中的已有配置文件;
当备份存储器和配置存储器的状态均为正常态,且二者的存储内容一致时,起始升级对象为FPGA。
9.如权利要求8所述的系统,其特征在于,
所述CPU,还设置为获取所述升级配置文件,并存储在所述备份存储器中,以完成对所述备份存储器中已有配置文件的升级。
10.如权利要求9所述的系统,其特征在于,
所述CPU,还设置为记录所述备份存储器和配置存储器中已有配置文件的状态以及所述备份存储器和配置存储器的存储内容是否一致;其中,所述状态为升级态或正常态。
11.如权利要求10所述的系统,其特征在于,
在升级过程中所在系统出现异常而重新启动后,所述CPU,还设置为根据所记录的内容确定本次升级的起始升级对象,从与该起始升级对象对应的升级过程处开始执行直至所述FPGA加载完毕所述升级配置文件;其中,所述起始升级对象为所述备份存储器中的已有配置文件、配置存储器中的已有配置文件或者FPGA。
12.根据权利要求8或11所述的系统,其特征在于,所述CPU记录的内容被存储于所述备份存储器中;所述备份存储器为所述CPU下挂的用于存储所述CPU主程序的非易失性存储器。
13.根据权利要求9所述的系统,其特征在于,所述CPU,还设置为校验所述备份存储器中的升级配置文件是否正确;如果是,则确定对所述备份存储器中已有配置文件的升级完毕。
14.根据权利要求9所述的系统,其特征在于,所述CPU,还设置为校验所述配置存储器中的升级配置文件是否正确;如果是,则确定对所述配置存储器中已有配置文件的升级完毕;否则,重新将升级配置文件存储至所述配置存储器,如果重新存储次数大于设定次数,则报错对所述配置存储器中已有配置文件的升级失败。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610498862.0A CN106201590B (zh) | 2016-06-29 | 2016-06-29 | 一种fpga配置文件加载方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610498862.0A CN106201590B (zh) | 2016-06-29 | 2016-06-29 | 一种fpga配置文件加载方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106201590A CN106201590A (zh) | 2016-12-07 |
CN106201590B true CN106201590B (zh) | 2019-06-11 |
Family
ID=57462686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610498862.0A Active CN106201590B (zh) | 2016-06-29 | 2016-06-29 | 一种fpga配置文件加载方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106201590B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110083484B (zh) * | 2018-01-26 | 2024-03-08 | 阿里巴巴集团控股有限公司 | Fpga重加载方法、设备、存储介质及系统 |
CN108572835A (zh) * | 2018-04-26 | 2018-09-25 | 南京国电南自维美德自动化有限公司 | 一种fpga配置文件在线升级系统 |
CN110442365A (zh) * | 2019-07-26 | 2019-11-12 | 锐捷网络股份有限公司 | 可编程逻辑器件的升级方法及装置 |
CN110673871A (zh) * | 2019-10-08 | 2020-01-10 | 北京淳中科技股份有限公司 | 在线升级装置、控制方法、电子设备及计算机可读介质 |
CN112730478A (zh) * | 2020-12-24 | 2021-04-30 | 明峰医疗系统股份有限公司 | 一种ct探测器的配置升级方法及系统、ct扫描仪 |
CN112769613B (zh) * | 2021-01-04 | 2022-08-09 | 武汉光迅科技股份有限公司 | 一种fpga在线升级的系统及其在线升级方法 |
CN113312110A (zh) * | 2021-06-25 | 2021-08-27 | 北京东土军悦科技有限公司 | 一种逻辑门阵列fpga配置系统和方法 |
CN114238207A (zh) * | 2021-12-09 | 2022-03-25 | 讯牧信息科技(上海)有限公司 | 多片fpga的配置方法和多片fpga系统 |
CN114924808B (zh) * | 2022-05-12 | 2023-03-14 | 中国电子科技集团公司第二十九研究所 | 一种基于双份存储程序的sram型fpga在轨可靠加载方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360302A (zh) * | 2011-10-13 | 2012-02-22 | 福建星网锐捷网络有限公司 | 一种fpga配置文件在线升级方法及装置 |
CN102662686A (zh) * | 2012-03-09 | 2012-09-12 | 中国科学院微电子研究所 | Fpga的加载方法及其装置 |
CN103605542A (zh) * | 2013-11-18 | 2014-02-26 | 曙光信息产业(北京)有限公司 | Fpga配置文件的在线升级装置 |
CN105159731A (zh) * | 2015-10-12 | 2015-12-16 | 中国电子科技集团公司第五十四研究所 | 一种fpga配置文件远程升级的装置 |
-
2016
- 2016-06-29 CN CN201610498862.0A patent/CN106201590B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360302A (zh) * | 2011-10-13 | 2012-02-22 | 福建星网锐捷网络有限公司 | 一种fpga配置文件在线升级方法及装置 |
CN102662686A (zh) * | 2012-03-09 | 2012-09-12 | 中国科学院微电子研究所 | Fpga的加载方法及其装置 |
CN103605542A (zh) * | 2013-11-18 | 2014-02-26 | 曙光信息产业(北京)有限公司 | Fpga配置文件的在线升级装置 |
CN105159731A (zh) * | 2015-10-12 | 2015-12-16 | 中国电子科技集团公司第五十四研究所 | 一种fpga配置文件远程升级的装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106201590A (zh) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106201590B (zh) | 一种fpga配置文件加载方法和系统 | |
US7050859B1 (en) | Systems and methods to port controller state and context in an open operating system | |
CN107704285B (zh) | 现场可编程门阵列多版本配置芯片、系统和方法 | |
CN102629206B (zh) | 一种嵌入式系统软件升级方法及系统 | |
CN113377408B (zh) | 一种高可靠sram型fpga在线升级方法及系统 | |
CN103777972A (zh) | 基于现场可编程门阵列的系统、配置方法以及升级方法 | |
CN112000351B (zh) | Bmc固件的更新方法、更新装置、更新设备及存储介质 | |
CN103605542A (zh) | Fpga配置文件的在线升级装置 | |
CN101206579A (zh) | 避免基本输出入系统程序更新失败的计算机系统及其方法 | |
CN103530164A (zh) | 一种fpga配置文件远程更新的方法及装置 | |
CN113553081A (zh) | 一种基于zynq芯片的fpga加载方法 | |
CN105653330A (zh) | 一种基于SD卡的NorFlash烧写系统和方法 | |
US11579977B2 (en) | Data storage device restoring method | |
CN114090107A (zh) | 计算机和系统启动方法 | |
CN118394394B (zh) | 一种fpga配置项文件在线升级的方法 | |
CN112925569A (zh) | 一种固件数据处理方法、装置、设备及存储介质 | |
CN106970778B (zh) | 一种基于fpga的嵌入式设备的在线配置方法及系统 | |
JP2014153964A (ja) | マイクロプログラムを更新可能な電子機器 | |
CN112306782B (zh) | 面向调测试的操作系统内核引导与加载硬件及方法 | |
CN108572835A (zh) | 一种fpga配置文件在线升级系统 | |
CN105677429A (zh) | 程序烧写方法、处理器和电子电路 | |
CN117608916A (zh) | 一种基于nor flash的在轨记忆加载方法及系统 | |
CN217386347U (zh) | 看门狗系统 | |
JP2907808B1 (ja) | フラッシュメモリエミュレーション装置及びそれを用いたデバッグシステム | |
CN114895950A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100094 First to Fifth Floors of Building 11, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing Applicant after: Raisecom Technology Inc. Address before: 100085 No. 2 Building, No. 28 Shangdi Sixth Street, Haidian District, Beijing Applicant before: Raisecom Technology Inc. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |