著录项信息
专利名称 | 一种FPGA配置文件升级方法及系统 |
申请号 | CN201410394336.0 | 申请日期 | 2014-08-12 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2014-11-26 | 公开/公告号 | CN104166566A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/445 | IPC分类号 | G;0;6;F;9;/;4;4;5查看分类表>
|
申请人 | 福建星网锐捷网络有限公司 | 申请人地址 | 福建省福州市仓山区金山大道618号桔园州工业园19#楼
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 锐捷网络股份有限公司 | 当前权利人 | 锐捷网络股份有限公司 |
发明人 | 陈鹏 |
代理机构 | 北京同达信恒知识产权代理有限公司 | 代理人 | 黄志华 |
摘要
本发明公开了一种FPGA配置文件的升级方法及系统,用以在不增加逻辑器件的前提下,实现FPGA配置文件的升级,降低FPGA配置文件升级的硬件成本。所述方法包括接收配置升级文件分片;确定当前加载配置文件的第一存储器;并控制第二配置单元中的第二状态保持器将第二电子开关切换至配置文件升级通路,将接收到的配置升级文件分片写入第二存储器中;将第二存储器的写地址增加一个分片的大小;判断是否接收到全部的配置升级文件分片;如果是,将第二电子开关切换至配置文件加载通路以及将第一电子电子开关的配置文件加载通路关闭;如果否,接收下一配置升级文件分片,并返回执行将接收到的配置升级文件写入第二存储器中的步骤。
1.一种FPGA配置文件升级方法,其特征在于,应用于现场可编程门阵列FPGA配置文件升级系统中,所述FPGA配置文件升级系统包括FPGA和两个配置单元,每一配置单元包括一状态保持器、一电子开关和一存储器;
所述方法,包括:
在进行配置文件升级时,所述FPGA接收配置升级文件分片;
所述FPGA根据第一配置单元中的第一状态保持器确定当前加载配置文件的第一存储器;并
控制第二配置单元中的第二状态保持器将第二电子开关切换至配置文件升级通路,通过所述配置文件升级通路将接收到的配置升级文件分片写入第二存储器中;
将所述第二存储器的写地址增加一个分片的大小;
判断是否接收到全部的配置升级文件分片;
如果是,所述FPGA控制所述第二状态保持器将第二电子开关切换至配置文件加载通路以及控制第一状态保持器将第一电子电子开关的配置文件加载通路关闭;
如果否,接收下一配置升级文件分片,并返回执行通过所述配置文件升级通路将接收到的配置升级文件分片写入第二存储器中的步骤。
2.如权利要求1所述的方法,其特征在于,在接收到配置升级文件分片之后,根据第一配置单元中的第一状态保持器确定当前加载配置文件的第一存储器之前,还包括:
所述FPGA将所述配置升级文件分片存储在自身的第一随机存储器RAM中;以及在通过所述配置文件升级通路将接收到的配置升级文件分片写入第二存储器中之后,将所述第二存储器的写地址增加一个分片的大小之前,还包括:
所述FPGA从所述第二存储器中回读写入的配置升级文件分片,并存储在自身的第二RAM中;
所述FPGA比较所述第一RAM和第二RAM存储的配置升级文件分片是否一致;
如果一致,则执行将所述第二存储器的写地址增加一个分片的大小的步骤;
如果不一致,则将所述第一RAM中存储的配置升级文件分片重新通过所述配置文件升级通路写入所述第二存储器中。
3.如权利要求1所述的方法,其特征在于,所述FPGA在控制所述第二状态保持器将第二电子开关切换至配置文件加载通路之后,还包括:
所述FPGA控制复位电路复位,重新加载配置文件。
4.如权利要求1所述的方法,其特征在于,所述存储器为闪存FLASH;以及所述FPGA在接收到第一片配置升级文件分片之后,在将第一片配置升级文件分片写入第二FLASH之前,还包括:
所述FPGA将所述第二FLASH进行全片擦除。
5.如权利要求1~4任一权利要求所述的方法,其特征在于,在进行配置文件升级时,所述FPGA接收配置升级文件分片,包括:
在进行配置文件升级时,所述FPGA通过本地接口从本地上位机中央处理单元CPU或者通过网络接口从远端设备接收配置升级文件分片。
6.一种FPGA配置文件升级系统,其特征在于,包括现场可编程门阵列FPGA和两个配置单元,每一配置单元包括一状态保持器、一电子开关和一存储器,其中:
所述FPGA,用于在进行配置文件升级时,接收配置升级文件分片;根据第一配置单元中的第一状态保持器确定当前加载配置文件的第一存储器,并控制第二配置单元中的第二状态保持器将第二电子开关切换至配置文件升级通路,通过所述配置文件升级通路将接收到的配置升级文件分片写入第二存储器中;将所述第二存储器的写地址增加一个分片的大小;判断是否接收到全部的配置升级文件分片;如果是,所述FPGA控制所述第二状态保持器将第二电子开关切换至配置文件加载通路以及控制第一状态保持器将第一电子开关的配置文件加载通路关闭;如果否,接收下一配置升级文件分片,并返回执行通过所述配置文件升级通路将接收到的配置升级文件分片写入第二存储器中的步骤;
所述状态保持器,用于在所述FPGA的控制下保持所述FPGA本次确定出的加载配置文件的存储器和电子开关开启的通路;
所述电子开关,用于在所述状态保持器的控制下进行配置文件加载通路和配置文件升级通路的切换。
7.如权利要求6所述的系统,其特征在于,
所述FPGA,还用于在接收到配置升级文件分片之后,根据第一配置单元中的第一状态保持器确定当前加载配置文件的第一存储器之前,将所述配置升级文件分片存储在自身的第一随机存储器RAM中;以及在通过所述配置文件升级通路将接收到的配置升级文件分片写入第二存储器中之后,将所述第二存储器的写地址增加一个分片的大小之前,从所述第二存储器中回读写入的配置升级文件分片,并存储在自身的第二RAM中;比较所述第一RAM和第二RAM存储的配置升级文件分片是否一致;如果一致,则执行将所述第二存储器的写地址增加一个分片的大小的步骤;如果不一致,则将所述第一RAM中存储的配置升级文件分片重新通过所述配置文件升级通路写入所述第二存储器中。
8.如权利要求6所述的系统,其特征在于,
所述FPGA,还用于在控制所述第二状态保持器将第二电子开关切换至配置文件加载通路之后,控制复位电路复位,并重新加载配置文件。
9.如权利要求6所述的系统,其特征在于,所述存储器为闪存FLASH;以及所述FPGA,还用于在接收到第一片配置升级文件分片之后,在将第一片配置升级文件分片写入第二FLASH之前,将所述第二FLASH进行全片擦除。
10.如权利要求6~9任一权利要求所述的系统,其特征在于,
所述FPGA,具体用于在进行配置文件升级时,通过本地接口从本地上位机中央处理单元CPU或者通过网络接口从远端设备接收配置升级文件分片。
一种FPGA配置文件升级方法及系统\n技术领域\n[0001] 本发明涉及电子电路设计技术领域,尤其涉及一种FPGA配置文件升级方法及系统。\n背景技术\n[0002] FPGA是一种集成度很高的新型高性能可编程芯片,其内部电路功能是可编程的(Programmable),可以通过硬件描述语言(Hardware Description Language,简称HDL)和专用设计工具,在其内部灵活地实现极其复杂的电路功能,适用于高速、高密度的高端数字逻辑电路设计。其允许设计人员使用硬件描述语言完成电路设计,通过对应综合工具的编译生成配置文件,当FPGA加载配置文件后,即可实现设计需要的逻辑功能。\n[0003] FPGA加载配置文件的方式如表1所示:\n[0004] 表1\n[0005]\n[0006] 其中,JTAG通常为调试模式下的加载方式,用于FPGA的在线调试。Master serial/SPI和Master SelectMAP/BPI为上电后FPGA主动从Flash器件中读取配置信息,此时FPGA的配置文件存储在Flash器件中。Slave serial/SPI和Slave SelectMAP/BPI为上电后,从第三方器件(CPLD(复杂可编程逻辑器件)、MCU(微处理器)等等)读取配置信息对FPGA进行配置,此时配置信息存储在第三方器件上或者第三方器件附带的存储器件中。其中Master SelectMAP/SPI和Master SelectMAP/BPI的区别在于配置总线的位宽不同。\n[0007] 由于产品需求变化或者功能问题,FPGA存在升级需求,因此在实际应用中对FPGA配置文件的更新升级变得十分重要。\n[0008] 现有的FPGA更新升级的方案主要包括以下两种:1)通过第三方器件直接升级FPGA,即通常所用的从串或者从并方式;2)使用CPU或者CPLD等第三方器件控制对FPGA加载的FLASH进行升级。上述两种FPGA升级方案中,无需独立的FLASH器件存储FPGA的升级文件,即使出现升级失败,直接由第三方器件重新升级即可。但是,上述两种方式均需要增加第三方器件进行FPGA升级,增加了硬件成本。\n发明内容\n[0009] 本发明实施例提供一种FPGA配置文件的升级方法及系统,用以在不增加逻辑器件的前提下,实现FPGA配置文件的升级,降低FPGA配置文件升级的硬件成本。\n[0010] 本发明实施例提供一种FPGA配置文件升级方法,应用于现场可编程门阵列FPGA配置文件升级系统中,所述FPGA配置文件升级系统包括FPGA和两个配置单元,每一配置单元包括一状态保持器、一电子开关和一存储器;\n[0011] 所述方法,包括:\n[0012] 所述FPGA在进行配置文件升级时,接收配置升级文件分片;\n[0013] 所述FPGA根据第一配置单元中的第一状态保持器确定当前加载配置文件的第一存储器;并\n[0014] 控制第二配置单元中的第二状态保持器将第二电子开关切换至配置文件升级通路,通过所述配置文件升级通路将接收到的配置升级文件分片写入第二存储器中;\n[0015] 将所述第二存储器的写地址增加一个分片的大小;\n[0016] 判断是否接收到全部的配置升级文件分片;\n[0017] 如果是,所述FPGA控制所述第二状态保持器将第二电子开关切换至配置文件加载通路以及控制第一状态保持器将第一电子电子开关的配置文件加载通路关闭;\n[0018] 如果否,接收下一配置升级文件分片,并返回执行通过所述配置文件升级通路将接收到的配置升级文件分片写入第二存储器中的步骤。\n[0019] 在接收到配置升级文件分片之后,根据第一配置单元中的第一状态保持器确定当前加载配置文件的第一存储器之前,还包括:\n[0020] 所述FPGA将所述配置升级文件分片存储在自身的第一随机存储器RAM中;以及[0021] 在通过所述配置文件升级通路将接收到的配置升级文件分片写入第二存储器中之后,将所述第二存储器的写地址增加一个分片的大小之前,还包括:\n[0022] 所述FPGA从所述第二存储器中回读写入的配置升级文件分片,并存储在自身的第二RAM中;\n[0023] 所述FPGA比较所述第一RAM和第二RAM存储的配置升级文件分片是否一致;\n[0024] 如果一致,则执行将所述第二存储器的写地址增加一个分片的大小的步骤;\n[0025] 如果不一致,则将所述第一RAM中存储的配置升级文件分片重新通过所述配置文件升级通路写入所述第二存储器中。\n[0026] 所述FPGA在控制所述第二状态保持器将第二电子开关切换至配置文件加载通路之后,还包括:\n[0027] 所述FPGA控制复位电路复位,重新加载配置文件。\n[0028] 所述存储器为闪存FLASH;以及\n[0029] 所述FPGA在接收到第一片配置升级文件分片之后,在将第一片配置升级文件分片写入第二FLASH之前,还包括:\n[0030] 所述FPGA将所述第二FLASH进行全片擦除。\n[0031] 在进行配置文件升级时,所述FPGA接收配置升级文件分片,包括:\n[0032] 在进行配置文件升级时,所述FPGA通过本地接口从本地上位机中央处理单元CPU或者通过网络接口从远端设备接收配置升级文件分片。\n[0033] 本发明实施例提供一种FPGA配置文件升级系统,包括现场可编程门阵列FPGA和两个配置单元,每一配置单元包括一状态保持器、一电子开关和一存储器,其中:\n[0034] 所述FPGA,用于在进行配置文件升级时,接收配置升级文件分片;根据第一配置单元中的第一状态保持器确定当前加载配置文件的第一存储器,并控制第二配置单元中的第二状态保持器将第二电子开关切换至配置文件升级通路,通过所述配置文件升级通路将接收到的配置升级文件分片写入第二存储器中;将所述第二存储器的写地址增加一个分片的大小;判断是否接收到全部的配置升级文件分片;如果是,所述FPGA控制所述第二状态保持器将第二电子开关切换至配置文件加载通路以及控制第一状态保持器将第一电子开关的配置文件加载通路关闭;如果否,接收下一配置升级文件分片,并返回执行通过所述配置文件升级通路将接收到的配置升级文件分片写入第二存储器中的步骤;\n[0035] 所述状态保持器,用于在所述FPGA的控制下保持所述FPGA本次确定出的加载配置文件的存储器和电子开关开启的通路;\n[0036] 所述电子开关,用于在所述状态保持器的控制下进行配置文件加载通路和配置文件升级通路的切换。\n[0037] 所述FPGA,还用于在接收到配置升级文件分片之后,根据第一配置单元中的第一状态保持器确定当前加载配置文件的第一存储器之前,将所述配置升级文件分片存储在自身的第一随机存储器RAM中;以及在通过所述配置文件升级通路将接收到的配置升级文件分片写入第二存储器中之后,将所述第二存储器的写地址增加一个分片的大小之前,从所述第二存储器中回读写入的配置升级文件分片,并存储在自身的第二RAM中;比较所述第一RAM和第二RAM存储的配置升级文件分片是否一致;如果一致,则执行将所述第二存储器的写地址增加一个分片的大小的步骤;如果不一致,则将所述第一RAM中存储的配置升级文件分片重新通过所述配置文件升级通路写入所述第二存储器中。\n[0038] 所述FPGA,还用于在控制所述第二状态保持器将第二电子开关切换至配置文件加载通路之后,控制复位电路复位,并重新加载配置文件。\n[0039] 所述存储器为闪存FLASH;以及所述FPGA,还用于在接收到第一片配置升级文件分片之后,在将第一片配置升级文件分片写入第二FLASH之前,将所述第二FLASH进行全片擦除。\n[0040] 所述FPGA,具体用于在进行配置文件升级时,通过本地接口从本地上位机中央处理单元CPU或者通过网络接口从远端设备接收配置升级文件分片。\n[0041] 本发明实施例提供的FPGA配置文件升级方法及系统,包括两个配置单元,每一配置单元均包括一状态保持器、一电子开关和一存储器,在需要进行配置文件升级时,接收到配置升级文件分片时,FPGA首先确定当前加载配置文件的存储器,并通过另一存储器所在的配置单元中的状态保持器控制电子开关切换至配置文件升级通路,将接收到的配置文件分片写入该存储器中,在接收完成所有的配置升级文件分片之后,FPGA控制该存储器所在的配置单元的状态保持器将对应的电子开关切换至配置文件加载通路,这样,当FPGA下次加载配置文件时,将从存储有升级后的配置文件的存储器加载,实现了FPGA配置文件的升级,上述过程中,无需增加第三方器件从而降低了FPGA配置文件升级的硬件成本;另一方面,由于本发明实施例提供的FPGA配置文件升级方法及系统中,FPGA当前加载配置文件的存储器和存储配置升级文件的存储器分离,从而,如果在配置文件升级过程中出现异常导致升级失败,在FPGA重新启动之后,由于配置文件升级未成功,将从原来的存储器加载配置文件,保证了FPGA加载配置文件的安全性。\n[0042] 本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。\n附图说明\n[0043] 此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:\n[0044] 图1为本发明实施例中,3384电子开关的结构示意图;\n[0045] 图2为本发明实施例中,FPGA配置文件升级系统的结构示意图;\n[0046] 图3为本发明实施例中,FPGA配置文件升级流程示意图;\n[0047] 图4为本发明实施例中,FPGA接收到配置升级文件分片之后的处理流程示意图;\n[0048] 图5为本发明实施例中,FPGA内部状态机设计示意图;\n[0049] 图6为本发明实施例中,FM1105在FPGA配置文件升级过程中的操作时序图;\n[0050] 图7为本发明实施例中,FM1105在FPGA配置文件升级过程中掉电异常时的操作时序图。\n具体实施方式\n[0051] 铁电存储器是一种特殊工艺的非易失性的存储器,其采用人工合成的铅锆钛(PZT)材料形成存储器结晶体。当一个电场被施加到铁晶体管时,中心原子顺着电场停在低能量状态I位置,反之,当电场反转被施加到同一铁晶体管时,中心原子顺着电场的方向在晶体里移动并停在另一低能量状态II位置。大量中心原子在晶体单胞中移动耦合形成铁电畴,铁电畴在电场作用下形成极化电荷。铁电畴在电场下反转所形成的极化电荷较高,铁电畴在电场下无反转所形成的极化电荷较低,这种铁电材料的二元稳定状态使得铁电可以作为存储器。基于FRAM(铁电存储器)的非易失性的状态保持器,其在掉电状态下能够保持逻辑状态值,上电后自动恢复所保持的逻辑状态值,同时,还可以无限次进行状态改变。\n[0052] 常用的基于FRAM非易失性的状态保持器器件为FM1105,其真值表如表2所示:\n[0053] 表2\n[0054]\n[0055] 其中,L表示低电平有效;H表示高点平有效,X表示任意值;↑表示时钟上升沿;Q0表示时钟上升沿之前的输出状态。\n[0056] 本发明实施例中,利用非易失性状态保持器下电后保持前值的特性,在不使用第三方控制器的条件下,实现FPGA的自我升级,降低了硬件成本,且确保FPGA启动时所加载的配置文件为最新的升级文件。\n[0057] 以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。\n[0058] 具体实施时,由于FPGA配置文件加载的过程为从存储器中读出数据的过程,而FPGA配置文件升级时,需要首先将FPGA配置升级文件写入存储器中,本发明实施中,通过电子开关实现从存储器读出数据和向存储器中写入数据的两条数据通路的选通。如图1所示,为电子开关的结构示意图,图1中以3384电子开关的结构为例进行说明。3384电子开关一共有8路数据通路,通过两组QE使能键进行控制,1QE_N有效时(即为低电平时),则对应的1A,\n1B侧数据通路连通,即1A1和1B1可认为物理上连通,1A2与1B2连通…1A4与1B4连通。而在\n1QE_N无效时,中间连通断开。同理2QE_N可控制2A1与2B1,2A2与2B2…等的通断情况。\n[0059] 基于此,本发明实施例中,FPGA的通用输入输出接口(GPIO)通过3384电子开关的\n1QE_N与存储器相连,Master SPI(主动串行配置)接口通过总线切换开关的2QE_N与存储器相连,并通过状态保持器向电子开关输入使能信号,控制1QE_N或者2QE_N有效,以在配置文件加载通路和配置文件升级通路之间进行切换,即当1QE_N有效且2QE_N无效时,配置文件升级通路开启,配置文件加载通路关闭;当1QE_N无效且2QE_N有效时,配置文件升级通路关闭,配置文件加载通路开启。当配置文件加载通路开启时,FPGA从存储器中读取FPGA配置文件完成FPGA的配置。当需要进行FPGA配置文件升级时,电子开关将Master SPI配置接口与存储器之间的配置文件加载通路断开,即使得2QE_N无效,同时,将GPIO与存储器之间的配置文件升级通路连通,即使得1QE_N有效,这样,便建立了与存储器之间的连接,可以向存储器中写入FPGA配置升级文件,在完成FPGA配置文件升级操作之后,控制电子开关切换回配置文件加载通路,即使得1QE_N无效,同时,使得2QN_E有效,这样,FPGA重启之后从存储器中重新加载升级后的FPGA配置文件,完成了FPGA配置文件的升级。\n[0060] 具体实施时,如果仅配置一个存储器,为了避免在升级过程中出现掉电等异常导致FPGA配置文件升级失败,而在配置文件升级过程中该存储器存储的原来的配置文件被破坏而导致FPGA重新启动后无法正常加载配置文件的问题,本发明实施例中,配置两个存储器,两个存储器相互独立,其中一个用于当前加载配置文件,在需要进行升级时,将配置升级文件写入另一存储器中,这样,即使升级过程中出现异常导致升级失败,FPGA启动时依然可以从之前的存储器中加载配置文件而正常启动。\n[0061] 具体的,如图2所示,为本发明实施例中,FPGA配置文件升级的系统结构示意图,包括FPGA 11和两个配置单元12,每一配置单元包括一状态保持器121、一电子开关122和一存储器123。具体实施时,存储器123可以但不限于为闪存(FLASH),包括串行FLASH(SPI FLASH)和并行FLASH(FLASH PROM)等。电子开关122可以但不限于为3384,状态保持器121可以但不限于为FM1105。为了便于说明,本发明实施例中以电子开关为3384、存储器为串行(SPI)FLASH以及状态保持器为FM1105为例进行说明。\n[0062] 图2中,远端设备主要负责管理FPGA的升级文件,在有新的FPGA升级文件时,将升级文件通过网络接口以报文的形式将升级文件传输给FPGA。上位机CPU主要负责管理FPGA的升级文件,在有新的FPGA升级文件时,将升级文件通过本地接口以报文的形式将升级文件传输给FPGA。具体实施,可以使用上述的任一方式管理FPGA的升级文件。FPGA主要用于对FLASH和FM1105的管理与操作,将从远端设备或者本地上位机CPU接收到的升级文件写入相应的FLASH中。\n[0063] 具体实施时,在每一配置单元12中,FPGA11通过通用输入输出接口(GPIO)与电子开关的1A1、1A2……,1A4连接,1B1、1B2,……1B4与存储器123连接,图2中,存储器123以闪存(FLASH)为例,其中,1A1用于接收GPIO输出的fpga_upgrade_clk(FPGA配置文件升级时钟信号)信号,1A2用于接收GPIO输出的fpga_upgrade_cs(FPGA主串升级接口片选信号),1A4用于接收GPIO输出的fpga_upgrade_din(FPGA主串升级接口数据输入信号),1A3向GPIO输出fpga_upgrade_mosi(FPGA主串升级接口数据输出信号)。1B1与FLASH的FLASH_OLK管脚连接,并向FLASH_OCLK输出flash_clk(FLASH芯片的时钟)信号,1B2与FLASH的FLASH_CS_N管脚连接,并向FLASH_CS_N输出flash_cs(FLASH芯片的片选)信号,1B3与FLASH的FLASH_MOSI(FLASH芯片的数据输出信号)管脚连接,并接收FLASH_MOSI输出的flash__mosi(FLASH芯片的数据输出信号)信号,1B4与FLASH的FLASH_DIN(FLASH芯片的数据输入信号)管脚连接,并向FLASH_DIN(FLASH芯片的数据输入信号)输出flash_din信号,另外,FPGA11通过Master SPI与电子开关的2A1、2A2……2A4连接,2B1、2B2……2B4与存储器123连接,具体的连接关系与1A1、1A2……1A4以及1B1、1B2……1B4类似,这里不再赘述。\n[0064] 在FPGA11与状态保持器121(图2中状态保持器以FM1105为例进行说明)之间,FPGA11通过FM1105的D0、Q0管脚与电子开关122的1QE QE_N连接,用于通过FM1105向1QE_N输出3384_1_ctr1信号(第一使能信号),以控制1QE_N有效或者无效;通过FM1105的D1、Q1管脚与电子开关122的2QE_N连接,用于通过FM1105向2QE输出3384_1_ctr2信号(第二使能信号),以控制2QE_N有效或者无效,1QE_N和2QE_N分别向FPGA返回3384_1_feedback_Q0信号和3384_1_feedback_Q1信号。另外,FPGA11还与FM1105的CLK管脚连接,用于向FM1105输入\n3384_1_clk(时钟)信号。\n[0065] 同时,FPGA还通过本地接口与上位机或者通过网络接口与远端设备连接,用于在需要进行配置文件升级时,从本地上位机或者远端设备处接收配置升级文件。在接收到全部的配置升级文件之后,FPGA控制复位电路复位,以重新加载升级后的配置文件。\n[0066] 为了描述方便,本发明实施例中以配置单元1和配置单元2进行区分,相应的,各配置单元中的状态保持器、电子开关和存储器分别以状态保持器1和状态保持器2、电子开关1和电子开关2以及存储器1和存储器2进行区分。\n[0067] 以下结合图2对本发明实施例的具体实施过程进行说明。如图3所示,为本发明实施例提供的FPGA配置文件升级流程示意图,包括以下步骤:\n[0068] S31、在进行配置文件升级时,FPGA接收配置升级文件分片。\n[0069] 具体实施时,在系统最初上电时,默认从FLSHA1加载配置文件。上电后,尚未升级时,FM1105输出为高阻态,通过外部上下拉电阻控制电子开关,选择电子开关1的配置文件加载通路,即使得电子开关1的2QE有效,1QE无效。\n[0070] 当需要进行FPGA配置文件升级时,远端计算机或者本地上位机CPU(中央处理单元)通过写FPGA的寄存器通知FPGA配置升级文件的大小,并将配置升级文件分割为多个小的配置升级文件分片(以一个报文分片大小为256B,即FLASH一个page的长度为例)。然后通过网络接口或者本地接口将配置升级文件分片以报文形式发送给FPGA。\n[0071] S32、FPGA根据第一配置单元中的第一状态保持器确定当前加载配置文件的第一存储器。\n[0072] 具体实施时,FPGA在接收到第一片配置升级文件分片之后,根据当前FM1105的输出值确定当前加载配置文件的存储器,以确定将接收到的配置文件升级分片写入那一个存储器中。本发明实施例中,如果当前加载配置文件使用的存储器1,那么接收到的配置升级文件写入存储器2中,反之亦然。为了便于描述,本发明实施例中,将当前加载配置文件的存储器称为第一存储器,相应的,将第一存储器所在配置单元的状态保持器和电子开关分别称为第一状态保持器和第一电子开关,将要写入FPGA配置文件的存储器称为第二存储器,相应的,将第二存储器所在配置单元的状态保持器和电子开关分别称为第二状态保持器和第二电子开关。\n[0073] S33、FPGA控制第二配置单元中的第二状态保持器将第二电子开关切换至配置文件升级通路。\n[0074] S34、通过配置文件升级通路将接收到的配置升级文件分片写入第二存储器中。\n[0075] 具体实施时,FPGA在步骤S32中确定出写入配置升级文件的第二存储器之后,FPGA通过第二状态保持器将第二电子开关切换至配置文件升级通路开启,配置文件加载通路关闭状态,FPGA向第二存储器中写入接收到的配置升级文件分片。需要说明的是,FPGA在向第二存储器写入第一片配置升级文件分片之前,需要将第二存储器进行全片擦除,以保证写入数据的准确性。\n[0076] S35、FPGA在写完当前接收到的配置文件升级分片之后,将第二存储器的写地址增加一个分片大小。\n[0077] 本例中,将第二存储器的写地址增加256B。\n[0078] S36、FPGA判断是否接收到全部的配置升级文件分片,如果是,执行步骤S37,否则,执行步骤S38。\n[0079] S37、FPGA控制第二状态保持器将第二电子开关切换至配置文件加载通路以及将第一电子电子开关的配置文件加载通路关闭,流程结束。\n[0080] S38、接收下一配置升级文件分片,并执行步骤S34。\n[0081] 具体实施时,在接收到全部的配置升级文件分片之后,并将第二状态保持器将第二电子开关切换至配置文件加载通路之后,FPGA输出控制信号,控制复位电路进行热复位,重新加载FPGA,从而完成FPGA配置文件的升级。\n[0082] 具体实施时,为了保证FPGA接收到的配置升级文件的准确性,本发明实施例中,FPGA在接收到配置升级文件分片之后,根据第一配置单元中的第一状态保持器确定当前加载配置文件的第一存储器之前,还可以将接收到的配置升级文件分片存储在自身片内的第一随机存储器(RAM1)中;在通过配置文件升级通路将接收到的配置升级文件分片写入第二存储器中之后,将第二存储器的写地址增加一个分片的大小之前,FPGA从第二存储器中回读写入的配置升级文件分片,并存储在自身的第二RAM中,比较第一RAM和第二RAM存储的配置升级文件分片是否一致;如果一致,则执行将第二存储器的写地址增加一个分片的大小的步骤;如果不一致,则将第一RAM中存储的配置升级文件分片重新通过所述配置文件升级通路写入所述第二存储器中。\n[0083] 如图4所示,为FPGA接收到配置升级文件分片之后的处理流程示意图,可以包括以下步骤:\n[0084] S41、远端设备或者本地上位机将配置升级文件分割为多个配置升级文件分片,并向FPGA发送第一片配置升级文件分片。\n[0085] S42、FPGA接收到第一片配置升级文件分片后存储在自身的RAM1中。\n[0086] S43、FPGA确定写入配置升级文件的第二FLASH。\n[0087] 具体实施时,FPGA确定当前加载配置文件的第一FLASH,并确定将配置升级文件写入另一FLASH即第二FLASH中。FPGA控制第二FM1105将第二3384切换至配置文件升级通路,通过配置文件升级通路将接收到的配置升级文件分片写入第二FLASH中。\n[0088] S44、FPGA向第二FLASH发送全片擦除指令。\n[0089] S45、FPGA读取FLASH状态寄存器判断全片擦除是否完成,如果是,执行步骤S47,如果否,执行步骤S46。\n[0090] S46、等待预设时长,返回执行步骤S45。\n[0091] 具体实施时,FPGA可以每隔10ms读取一次FLASH状态寄存器。\n[0092] S47、向第二FLASH的0地址写入接收到的第一片配置升级文件分片。\n[0093] S48、读取第二FLASH状态位判断写入操作是否完成,如果是,执行步骤S410,否则执行步骤S49。\n[0094] S49、等待预设时长,返回执行步骤S48。\n[0095] 具体实施时,FPGA可以每隔10ms读取一次FLASH状态位。\n[0096] S410、从第二FLSH中回读写入的配置升级文件分片,并存储在自身的RAM2中。\n[0097] S411、比较RAM1和RAM2中存储的数据是否一致,如果一致,执行步骤S413,否则,执行步骤S412。\n[0098] S412、将第一RAM中存储的配置升级文件分片重新写入第二FLASH的0地址中,并执行步骤S48。\n[0099] S413、将第二FLASH写地址增加一个分片的大小。\n[0100] 需要说明的是,具体实施时,如果RAM1和RAM2中的数据一致,则说明向FLASH中写入的数据准确,可以接收下一配置升级文件分片,在接收到下一配置升级文件分片时,直接覆盖RAM1中的已有数据即可,同样,在向FLASH中写入接收到的新的配置升级文件分片之后,在回读FLASH中的新的配置升级文件分片并写入RAM2中时,也是直接覆盖RAM2中已有数据即可。如果RAM1与RAM2中的数据不一致,则通知远端设备不接收新的配置升级文件分片。\n[0101] S414、判断是否已经向第二FLASH中写入全部的配置升级文件分片,如果是,则执行步骤S415,否则执行步骤S417。\n[0102] S415、FPGA控制第二FM1105将第二3384切换至配置文件加载通路开启,以及控制第一FM1105将第一3384切换至配置文件加载通路关闭。\n[0103] S416、FPGA控制复位电路进行复位,流程结束。\n[0104] S417、通知远端设备或者本地上位机接收下一配置升级文件分片。\n[0105] 具体实施时,远端设备或者本地上位机在以报文的形式向FPGA发送配置升级文件分片时,可以再报文中增加校验和,以确保数据传输的正确性。在发出一个报文分片之后,必须等到FPGA应答当前的分片写完成之后才能发送下一报文分片,否则一直等待,如果超时则重发。\n[0106] S418、FPGA将接收到的配置升级文件分片写入第一RAM中。\n[0107] S419、FPGA向第二FLASH的当前地址写入当前接收到的配置升级文件分片。\n[0108] S420、FPGA读取FLASH状态为判断写入是否完成,如果是,执行步骤S422,否则,执行步骤S421。\n[0109] S421、FPGA等待预设时长后执行步骤S420。\n[0110] S422、从FLASH回读写入的配置升级文件分片并存储在自身的第二RAM中。\n[0111] S423、比较第一RAM和第二RAM中存储的数据是否相同,如果相同,执行步骤S413,否则执行步骤S424。\n[0112] S424、向FLASH的当前地址重新写入第一RAM中的数据,并执行步骤S420。\n[0113] 如图5所示,为本发明实施例中,FPGA内部状态机设计示意图:\n[0114] 1、在上电后FPGA状态机从IDLE开始,收到第一个配置升级文件分片后,将配置升级文件分片存在RAM 1中,进入BULK Erase(全片擦除BE)状态。\n[0115] 2、在BULK Erase状态下,FPGA通过SPI接口向FLASH芯片发出BE命令,擦除SPI FLASH的全部内容。在发送完BE命令后,状态机跳转至BE_RDSR(片擦除后读取FLASH状态寄存器)状态。\n[0116] 3、在BE_RDSR状态下,FPGA通过SPI接口向FLASH芯片发出RDSR命令,查询SPI FLASH的状态位,如果读回的状态寄存器位表示擦除尚未完成,那么就跳转至BE_RDSR_Wait(片擦除后读取FLASH状态寄存器延迟)状态。\n[0117] 4、在BE_RDSR_Wait状态下,等待10ms跳转至BE_RDSR状态。\n[0118] 5、在BE_RDSR状态下,如果读回的状态位表示擦除已经完成则进入PP状态。\n[0119] 6、在PP(FLASH页写入)状态下,FPGA向FLASH写入PP指令以及升级分片的数据,写入地址为当前分片地址,如果是第一个分片地址为0.写完数据后,跳转至PP_RDSR(FLASH页写后读取FLASH状态寄存器)状态。\n[0120] 7、在PP_RDSR状态下,FPGA通过SPI接口向FLASH芯片发出RDSR命令,查询SPI FLASH的状态位,如果读回的状态寄存器位表示擦除尚未完成,那么就跳转至PP_RDSR_Wait(FLASH页写后读取FLASH状态寄存器延迟)状态。\n[0121] 8、在PP_RDSR_Wait状态下,等待10ms跳转至PP_RDSR状态。\n[0122] 9、在PP_RDSR状态下,FPGA通过SPI接口向FLASH芯片发出RDSR命令,查询SPI FLASH的状态位,如果读回的状态寄存器位表示擦除完成,则跳转至READ(FLASH页回读)状态。\n[0123] 10、在READ状态下,FPGA向FLASH发出READ命令,回读刚才写入的数据。存在内部RAM 2中。读完成后跳转至Data_check(回读数据校验)状态。\n[0124] 11、在Data_check状态下,比较RAM1和RAM2的数据,如果两个RAM的数据不一致,则跳转至PP状态,将RAM1中的数据重新写入FLASH。\n[0125] 12、在Data_check状态下,RAM1和RAM2数据如果一致,则认为当前分片操作完成,跳转中PKT_done(分片升级完成)状态。\n[0126] 13、在Pkt_done状态下,判断是否已经完成全部分片的操作,在未完成全部分片操作并且收到新的分片后,将新的分片数据存入RAM1跳转至PP状态,继续写Flash。\n[0127] 14、在Pkt_done状态下,判断是否已经完成全部分片的操作,在完成全部分片操作后,跳转至UPT_Done(FLASH升级完成)状态。\n[0128] 15、在UPT_DONE状态下,FPGA根据当前FM1105输出值,将当前的启动加载FLASH切换到最新升级的FLASH上,并且告知系统复位电路,将芯片复位重新加载,从而完成升级。\n[0129] 如图6所示,为本发明实施例中,FM1105器件在FPGA配置文件升级过程中的操作时序示意图:系统最初上电时,FM1105默认从FLASH1加载,FM1105_1控制3384电子开关1的配置文件升级通路关闭,而配置文件加载通路开启状态,即使得3384电子开关1的2QE有效,\n1QE无效。当接收到配置升级文件分片之后,FPGA进入配置文件升级启动时间点,控制FM1105_2将3384电子开关2切换到配置文件升级通路开启,配置文件加载通路关闭状态,即使得3384电子开关2的1QE有效,2QE无效。FLASH1的3384电子开关1不用操作。在接收到全部的配置文件升级分片之后,控制FM1105_2将3384电子开关2切换到配置文件升级通路关闭,而配置文件加载通路开启状态,即使得3384电子开关2的1QE无效,2QE有效。同时控制FM1105_1将3384电子开关1的配置文件加载通路和配置文件升级通路全部关闭,之后控制复位电路复位,复位后,FPGA将从FLASH2加载配置文件对FPGA进行配置。\n[0130] 如图7所示,为本发明实施例中,FM1105在配置文件升级过程中掉电异常时的操作时序图,初始正常上电后,默认从FLASH1加载FPGA配置文件。当FPGA接收到配置升级文件后,FPGA进入升级启动时间点,控制FM1105_2将3384电子开关2切换到配置文件升级通路开启,配置文件加载通路关闭。FLASH1的3384电子开关1不用操作。在FPGA配置文件升级过程中突然掉电,FLASH2的内容未写完即被终止。当重新上电后,仍然从FLASH1开始启动并加载配置文件,可以重新开始向FLASH2中写入配置升级文件。\n[0131] 本发明实施例利用非易失性状态保持器的特性,将升级程序是现在FPGA芯片内部,在单板上实现了单芯片的自我升级,降低了FPGA配置文件升级的硬件成本。另一方面,本发明实施例中,采用双FLASH配置文件升级的方法,解决了在FPGA配置文件升级过程中出现掉电或者其他异常,同时单FLASH的配置文件也在升级过程中被破坏导致的FPGA重启后无法加载配置文件的问题,提高了FPGA配置文件升级的安全性。\n[0132] 同时,本发明实施例提供的FPGA配置文件升级方法中,FPGA接收配置升级文件的方法灵活,既可以使用远程设备通过网络接口接收配置升级文件,也可以通过本地上位机提供的本地接口接收,同时,由FPGA确保接收到的配置升级文件的正确性。\n[0133] 另外,本发明实施例提供的FPGA配置文件升级方法,还适用于需要从FLASH中加载程序的CPU、DSP(数字信号处理)等器件中。\n[0134] 基于同一发明构思,本发明实施例中还提供了一种FPGA配置文件升级系统,由于该系统解决问题的原理与FPGA配置文件升级方法相似,因此该系统的实施可以参见方法的实施,重复之处不再赘述。\n[0135] 本发明实施例提供的FPGA配置文件升级系统,包括现场可编程门阵列FPGA和两个配置单元,每一配置单元包括一状态保持器、一电子开关和一存储器,其中:\n[0136] 所述FPGA,用于在进行配置文件升级时,接收配置升级文件分片;根据第一配置单元中的第一状态保持器确定当前加载配置文件的第一存储器,并控制第二配置单元中的第二状态保持器将第二电子开关切换至配置文件升级通路,通过所述配置文件升级通路将接收到的配置升级文件分片写入第二存储器中;将所述第二存储器的写地址增加一个分片的大小;判断是否接收到全部的配置升级文件分片;如果是,所述FPGA控制所述第二状态保持器将第二电子开关切换至配置文件加载通路以及将第一电子开关的配置文件加载通路关闭;如果否,接收下一配置升级文件分片,并返回执行通过所述配置文件升级通路将接收到的配置升级文件分片写入第二存储器中的步骤;\n[0137] 所述状态保持器,用于在所述FPGA的控制下保持所述FPGA本次确定出的加载配置文件的存储器和电子开关开启的通路;\n[0138] 所述电子开关,用于在所述状态保持器的控制下进行配置文件加载通路和配置文件升级通路的切换。\n[0139] 具体实施时,FPGA,还可以用于在接收到配置升级文件分片之后,根据第一配置单元中的第一状态保持器确定当前加载配置文件的第一存储器之前,将所述配置升级文件分片存储在自身的第一随机存储器RAM中;以及在通过所述配置文件升级通路将接收到的配置升级文件分片写入第二存储器中之后,将所述第二存储器的写地址增加一个分片的大小之前,从所述第二存储器中回读写入的配置升级文件分片,并存储在自身的第二RAM中;比较所述第一RAM和第二RAM存储的配置升级文件分片是否一致;如果一致,则执行将所述第二存储器的写地址增加一个分片的大小的步骤;如果不一致,则将所述第一RAM中存储的配置升级文件分片重新通过所述配置文件升级通路写入所述第二存储器中。\n[0140] 具体实施时,FPGA还可以用于在控制所述第二状态保持器将第二电子开关切换至配置文件加载通路之后,控制复位电路复位,并重新加载配置文件。\n[0141] 具体实施时,所述存储器可以但不限于为FLASH(闪存),所述FPGA,还可以用于在接收到第一片配置升级文件分片之后,在将第一片配置升级文件分片写入第二FLASH之前,将所述第二FLASH进行全片擦除。\n[0142] 具体实施时,所述FPGA,可以用于在进行配置文件升级时,通过本地接口从本地上位机中央处理单元CPU或者通过网络接口从远端设备接收配置升级文件分片。\n[0143] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。\n[0144] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。\n[0145] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。\n[0146] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。\n[0147] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。\n[0148] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
法律信息
- 2020-08-18
专利权人的姓名或者名称、地址的变更
专利权人由福建星网锐捷网络有限公司变更为锐捷网络股份有限公司
地址由350002 福建省福州市仓山区金山大道618号桔园州工业园19#楼变更为350002 福建省福州市仓山区金山大道618号桔园州工业园19#楼
- 2017-11-03
- 2014-12-24
实质审查的生效
IPC(主分类): G06F 9/445
专利申请号: 201410394336.0
申请日: 2014.08.12
- 2014-11-26
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2011-05-04
|
2009-10-19
| | |
2
| | 暂无 |
2008-12-12
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |