一种FPGA断电状态精确恢复方法与流程

文档序号:14653582发布日期:2018-06-08 22:30阅读:748来源:国知局
一种FPGA断电状态精确恢复方法与流程

本发明属于断电状态恢复方法技术领域,涉及一种FPGA断电状态精确恢复方法。



背景技术:

现场可编程门阵列(Field Programmable Gate Array,FPGA)集成度高、运行速度快,已广泛应用于航天、医疗等诸多领域。但由于FPGA在掉电后配置信息丢失,无法保存掉电时工作状态,其在大规模、长时间数据处理的应用上存在制约。

以往的FPGA断电状态恢复方法多采用外扩非易失存储器的方式,FPGA周期性地将工作状态信息写入外扩存储器,在断电后恢复供电时根据写入存储器的最后数据恢复FPGA工作状态。这种方式虽然实现简单、且在一定程度上满足了特定的状态恢复需求,但受限于外扩非易失存储器的访问周期和读写寿命,系统设计存在断电状态恢复不精确、长时间工作可靠性差等缺点。



技术实现要素:

(一)发明目的

本发明的目的是:克服现有技术中的缺陷,提供一种FPGA断电状态精确恢复方法,提高FPGA断电状态恢复精确度,以及长时间工作可靠性。

(二)技术方案

为了解决上述技术问题,本发明提供一种FPGA断电状态精确恢复系统,其包括:储能及电压比较电路模块,设置在FPGA外部,用于判断FPGA的断电状态并为断电的FPGA短时间维持供电;掉电检测及状态处理模块,设置在FPGA内部,用于确定FPGA掉电判断结果的准确性,并将FPGA当前数据处理的阶段、子阶段和子阶段内关键状态数据进行整合缓存,在FPGA断电时将缓存数据写入外接的FPGA配置芯片,在FPGA上电时从FPGA配置芯片读取缓存数据,用于对FPGA进行状态恢复;原数据处理功能模块,用于将FPGA的关键状态数据进行整合,供掉电检测及状态处理模块读取。

其中,所述储能及电压比较电路模块包括储能电容、瞬态抑制电路模块、防回流二极管和电压比较电路模块,防回流二极管一端连接电源的正极,瞬态抑制电路模块连接防回流二极管和电源的负极,储能电容与瞬态抑制电路模块并联,电压比较电路模块连接电源正极、防回流二极管另一端和掉电检测及状态处理模块,储能电容的两端连接FPGA;储能电容用于在断电后的短时间内维持供电;瞬态抑制电路模块用于对供电电压进行瞬态抑制;防回流二极管用于避免在断电后储能电容维持供电时电流回流,从而延长断电后FPGA的工作时间;电压比较电路模块由精确分压电阻和电压比较器构成,精确分压电阻用于将比较器两输入端的电压限定在器件允许的范围,同时可根据防回流二极管的正向压差对比较器两输入端电压差进行调整,避免掉电误判。

其中,所述储能电容和FPGA之间还连接电压转换模块,用于将供给FPGA的电压转换为FPGA适用的电压值范围。

其中,所述原数据处理功能模块包括输入缓存模块、数据处理模块和输出缓存模块,输入缓存模块接收数据输入,由数据处理模块对数据进行处理并确定状态存储信息,处理后的数据由输出缓存模块进行数据输出;数据处理模块连接掉电检测及状态处理模块,用于传输状态存储信息。

其中,所述FPGA配置芯片在逻辑上分为两个区,分区一用于存储FPGA配置数据,分区二用于存储状态存储信息和状态有效标志,状态有效标志表明当前的状态存储信息是否有效。

其中,所述掉电检测及状态处理模块包括主控状态机、掉电检测、状态缓存、校验、状态处理和配置芯片读写共6个子模块,其中主控状态机子模块用于根据上电和断电状态协调各模块工作;掉电检测子模块用于滤除干扰信号,保证掉电检测结果的准确性;状态缓存子模块用于对当前数据处理的阶段、子阶段和子阶段内关键状态数据进行整合缓存,并将缓存数据发送给校验子模块,同时接收校验结果并将该结果加入到原缓存数据中;校验子模块既可以对整合缓存的阶段、子阶段数据和关键状态数据进行校验,生成校验数据,也可以对从配置芯片读回的状态存储信息进行校验,确认数据的正确性;状态处理子模块在FPGA上电时负责控制配置芯片读写子模块从配置芯片中读取状态有效标志和状态存储信息,并根据有效标志和状态存储信息的校验情况确定是否进行状态恢复,在FPGA断电时负责从状态缓存子模块中读取状态存储信息,并根据当前数据处理的阶段判断是否将该信息和状态有效标志写入配置芯片;配置芯片读写子模块用于实现对FPGA配置芯片分区二的数据读写;在掉电检测及状态处理模块添加完成后,利用开发工具生成FPGA配置数据,并通过下载线将数据烧写到配置芯片的分区一空间中。

本发明还提供一种FPGA断电状态精确恢复方法,其包括以下步骤:

步骤1、在FPGA外部添加储能及电压比较电路模块;

步骤2、为FPGA原数据处理功能划分状态,确定状态存储信息;

步骤3、将FPGA配置芯片分区;

步骤4、在FPGA内部添加掉电检测及状态处理模块;

步骤5、FPGA数据处理过程中断电,将当前状态存储信息写入配置芯片;

步骤6、FPGA恢复供电,从配置芯片中读取状态存储信息,恢复断电时状态。

其中,所述步骤2中,FPGA原数据处理功能是除断电状态恢复功能外,FPGA内部原有的数据处理功能;确定状态存储信息,是将FPGA原数据处理功能划分为若干阶段,然后将每个阶段划分为若干子阶段,确定每个子阶段需要记录的关键状态数据,将这些关键状态数据和阶段、子阶段数据进行整合校验,并将已加入校验数据的整合信息确定为状态存储信息。

其中,所述步骤5中,在FPGA断电时,电压比较电路模块输出反相,FPGA内部掉电检测子模块在滤除干扰后确认当前处于掉电状态,之后对当前缓存的状态存储信息进行判断;如果当前数据已经处理完成,则不进行配置芯片写操作,直接结束;如果当前数据未处理完成,则将带有校验数据的状态存储信息写入配置芯片的分区二空间,同时将配置芯片内的状态有效标志置为有效状态。

其中,所述步骤6中,在恢复供电时,FPGA首先从配置芯片中读取状态有效标志和状态存储信息,如果状态有效标志为无效状态,则无需进行状态恢复,FPGA原数据处理功能模块直接工作;如果状态有效标志为有效状态,则对状态存储信息进行校验,如果校验结果正确,则进行状态恢复,即使用状态存储信息对数据处理状态进行恢复,之后将状态有效标志置为无效状态;如果校验结果错误,则不进行状态恢复,但仍需要将状态有效标志置为无效状态;在将状态有效标志置为无效后,原数据处理功能模块工作,直至断电。

(三)有益效果

上述技术方案所提供的FPGA断电状态精确恢复方法,首先在FPGA外部添加储能及电压比较电路模块,然后为FPGA原数据处理功能划分状态,确定状态存储信息,之后将FPGA配置芯片分区,并在FPGA内部添加掉电检测及状态处理模块;当FPGA在数据处理过程中断电时,将当前状态存储信息写入配置芯片,在FPGA恢复供电时,从配置芯片中读取状态存储信息,恢复断电时状态。本方法利用储能和状态缓存来实现FPGA的断电状态恢复,与外扩非易失存储器的周期记录方式相比,可以获得更高的断电状态恢复精度,同时由于大幅减少了存储器访问次数,可有效延长芯片使用时间,增强了系统工作的可靠性。该方法在实施过程中只需简单改动供电并将电压比较器输出引入FPGA,无需对FPGA硬件连接进行大幅改动,具有较强的实用价值。

附图说明

图1是本发明一种FPGA断电状态精确恢复系统连接关系示意图。

图2是本发明一种FPGA断电状态精确恢复方法中掉电检测及状态处理模块运行流程图。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

为了提高FPGA断电状态恢复的精度和工作可靠性,本发明首先提供一种FPGA断电状态精确恢复系统,该系统包括:储能及电压比较电路模块,设置在FPGA外部,用于判断FPGA的断电状态并为断电的FPGA短时间维持供电;掉电检测及状态处理模块,设置在FPGA内部,用于确定FPGA掉电判断结果的准确性,并将FPGA当前数据处理的阶段、子阶段和子阶段内关键状态数据进行整合缓存,在FPGA断电时将缓存数据写入外接的FPGA配置芯片,在FPGA上电时从FPGA配置芯片读取缓存数据,用于对FPGA进行状态恢复;原数据处理功能模块,用于将FPGA的关键状态数据进行整合,供掉电检测及状态处理模块读取。

其中,储能及电压比较电路模块包括储能电容、瞬态抑制电路模块、防回流二极管和电压比较电路模块,防回流二极管一端连接电源的正极,瞬态抑制电路模块连接防回流二极管和电源的负极,储能电容与瞬态抑制电路模块并联,电压比较电路模块连接电源正极、防回流二极管另一端和掉电检测及状态处理模块,储能电容的两端连接FPGA;储能电容用于在断电后的短时间内维持供电;瞬态抑制电路模块用于对供电电压进行瞬态抑制;防回流二极管用于避免在断电后储能电容维持供电时电流回流,从而延长断电后FPGA的工作时间;电压比较电路模块由精确分压电阻和电压比较器构成,精确分压电阻用于将比较器两输入端的电压限定在器件允许的范围,同时可根据防回流二极管的正向压差对比较器两输入端电压差进行调整,避免掉电误判。

储能电容和FPGA之间还连接电压转换模块,用于将供给FPGA的电压转换为FPGA适用的电压值范围。

原数据处理功能模块包括输入缓存模块、数据处理模块和输出缓存模块,输入缓存模块接收数据输入,由数据处理模块对数据进行处理并确定状态存储信息,处理后的数据由输出缓存模块进行数据输出;数据处理模块连接掉电检测及状态处理模块,用于传输状态存储信息。

FPGA配置芯片在逻辑上分为两个区,分区一用于存储FPGA配置数据,分区二用于存储状态存储信息和状态有效标志,状态有效标志表明当前的状态存储信息是否有效。

掉电检测及状态处理模块包括主控状态机、掉电检测、状态缓存、校验、状态处理和配置芯片读写共6个子模块,其中主控状态机子模块用于根据上电和断电状态协调各模块工作;掉电检测子模块用于滤除干扰信号,保证掉电检测结果的准确性;状态缓存子模块用于对当前数据处理的阶段、子阶段和子阶段内关键状态数据进行整合缓存,并将缓存数据发送给校验子模块,同时接收校验结果并将该结果加入到原缓存数据中;校验子模块既可以对整合缓存的阶段、子阶段数据和关键状态数据进行校验,生成校验数据,也可以对从配置芯片读回的状态存储信息进行校验,确认数据的正确性;状态处理子模块在FPGA上电时负责控制配置芯片读写子模块从配置芯片中读取状态有效标志和状态存储信息,并根据有效标志和状态存储信息的校验情况确定是否进行状态恢复,在FPGA断电时负责从状态缓存子模块中读取状态存储信息,并根据当前数据处理的阶段判断是否将该信息和状态有效标志写入配置芯片;配置芯片读写子模块用于实现对FPGA配置芯片分区二的数据读写;在掉电检测及状态处理模块添加完成后,利用开发工具生成FPGA配置数据,并通过下载线将数据烧写到配置芯片的分区一空间中。

基于上述FPGA断电状态精确恢复系统,本发明还提供一种FPGA断电状态精确恢复方法,首先在FPGA外部添加储能及电压比较电路模块,然后为FPGA原数据处理功能划分状态,确定状态存储信息,之后将FPGA配置芯片分区,并在FPGA内部添加掉电检测及状态处理模块;当FPGA在数据处理过程中断电时,将当前状态存储信息写入配置芯片,在FPGA恢复供电时,从配置芯片中读取状态存储信息,恢复断电时状态。

本方法利用储能和状态缓存来实现FPGA的断电状态恢复,与外扩非易失存储器的周期记录方式相比,可以获得更高的断电状态恢复精度,同时由于大幅减少了存储器访问次数,可有效延长芯片使用时间,增强了系统工作的可靠性。

具体地,本发明方法包括以下步骤:

步骤1、在FPGA外部添加储能及电压比较电路模块;

储能及电压比较电路模块由储能电容、瞬态抑制电路模块、防回流二极管和电压比较电路模块构成;储能电容用于在断电后的短时间内维持供电;瞬态抑制电路模块用于对供电电压进行瞬态抑制;防回流二极管用于避免在断电后储能电容维持供电时电流回流,从而延长断电后FPGA的工作时间;电压比较电路模块由精确分压电阻和电压比较器构成,精确分压电阻用于将比较器两输入端的电压限定在器件允许的范围,同时可根据防回流二极管的正向压差对比较器两输入端电压差进行调整,避免掉电误判。

步骤2、为FPGA原数据处理功能划分状态,确定状态存储信息;

FPGA原数据处理功能是除断电状态恢复功能外,FPGA内部原有的数据处理功能;确定状态存储信息,是将FPGA原数据处理功能划分为若干阶段,然后将每个阶段划分为若干子阶段,确定每个子阶段需要记录的关键状态数据,将这些关键状态数据和阶段、子阶段数据进行整合校验,并将已加入校验数据的整合信息确定为状态存储信息。

步骤3、将FPGA配置芯片分区;

将FPGA的配置芯片在逻辑上分为两个区,分区一用于存储FPGA配置数据,分区二用于存储状态存储信息和状态有效标志,状态有效标志表明当前的状态存储信息是否有效。

步骤4、在FPGA内部添加掉电检测及状态处理模块;

掉电检测及状态处理模块由主控状态机、掉电检测、状态缓存、校验、状态处理和配置芯片读写共6个子模块构成,其中主控状态机子模块用于根据上电和断电状态协调各模块工作;掉电检测子模块用于滤除干扰信号,保证掉电检测结果的准确性;状态缓存子模块用于对当前数据处理的阶段、子阶段和子阶段内关键状态数据进行整合缓存,并将缓存数据发送给校验子模块,同时接收校验结果并将该结果加入到原缓存数据中;校验子模块既可以对整合缓存的阶段、子阶段数据和关键状态数据进行校验,生成校验数据,也可以对从配置芯片读回的状态存储信息进行校验,确认数据的正确性;状态处理子模块在FPGA上电时负责控制配置芯片读写子模块从配置芯片中读取状态有效标志和状态存储信息,并根据有效标志和状态存储信息的校验情况确定是否进行状态恢复,在FPGA断电时负责从状态缓存子模块中读取状态存储信息,并根据当前数据处理的阶段判断是否将该信息和状态有效标志写入配置芯片;配置芯片读写子模块用于实现对FPGA配置芯片分区二的数据读写;在掉电检测及状态处理模块添加完成后,利用开发工具生成FPGA配置数据,并通过下载线将数据烧写到配置芯片的分区一空间中。

步骤5、FPGA数据处理过程中断电,将当前状态存储信息写入配置芯片;

在FPGA断电时,电压比较电路模块输出反相,FPGA内部掉电检测子模块在滤除干扰后确认当前处于掉电状态,之后对当前缓存的状态存储信息进行判断;如果当前数据已经处理完成,则不进行配置芯片写操作,直接结束;如果当前数据未处理完成,则将带有校验数据的状态存储信息写入配置芯片的分区二空间,同时将配置芯片内的状态有效标志置为有效状态。

步骤6、FPGA恢复供电,从配置芯片中读取状态存储信息,恢复断电时状态;

在恢复供电时,FPGA首先从配置芯片中读取状态有效标志和状态存储信息,如果状态有效标志为无效状态,则无需进行状态恢复,FPGA原数据处理功能模块直接工作;如果状态有效标志为有效状态,则对状态存储信息进行校验,如果校验结果正确,则进行状态恢复,即使用状态存储信息对数据处理状态进行恢复,之后将状态有效标志置为无效状态;如果校验结果错误,则不进行状态恢复,但仍需要将状态有效标志置为无效状态;在将状态有效标志置为无效后,原数据处理功能模块工作,直至断电。

下面以一个具体的实例介绍本发明FPGA断电状态精确恢复方法的具体步骤如下:

本实例的FPGA和配置芯片分别选用Altera公司的EP3C55和同公司的EPCS128,使用Quartus II开发环境,使用ALTASMI_PARALLEL和RAM:2-PORT共2种IP核,其中ALTASMI_PARALLEL用于实现对配置芯片EPCS128的读写,RAM:2-PORT用于搭建状态缓存子模块。

本实例的应用环境为:FPGA所在板卡为输入28V供电,板卡内部将28V供电转换为+5V,并将+5V进一步转换为3.3V、2.5V和1.2V为FPGA供电。FPGA内部实现一复杂算法,由于迭代次数多、计算时间长,如果采用以往的外扩非易失存储器方式,FPGA需要在计算时多次向非易失存储器写入数据,必然影响存储器的使用寿命,且受限于外扩非易失存储器的访问周期,FPGA无法高速、不间断得进行数据写入,因此无法对断电状态进行精确记录。而使用本方法的缓存方式则可以实现断电状态精确记录功能,且由于该方法只在异常断电时对数据进行记录,因此可显著延长芯片使用时间,提高芯片寿命,其具体步骤如下:

步骤1、在FPGA外部添加储能及电压比较电路模块;

储能及电压比较电路模块由储能电容、瞬态抑制电路模块、防回流二极管和电压比较电路模块构成;本实例中储能电容采用2个2600uF电容,瞬态抑制电路模块采用瞬态电压抑制二极管5KP33A,防回流二极管采用HRS20100C,电压比较电路模块采用LM139D,精确分压电阻分别采用1%精度的47K、4.7K和51K、4.7K分压电阻。

步骤2、为FPGA原数据处理功能划分状态,确定状态存储信息;

将FPGA内实现算法的数据处理过程分为M个阶段,当前阶段用j表示,j=1,2,...,M;将每个阶段分为N个子阶段,当前子阶段用k表示,k=1,2,...,N;确定每个子阶段需要记录的关键状态数据a、b、c、d、e,将j、k、a、b、c、d、e整合后进行CRC校验,得到校验码f,将j、k、a、b、c、d、e、f确定为状态存储信息Z。

步骤3、将FPGA配置芯片分区;

将FPGA的配置芯片EPCS128在逻辑上分为两个区,分区一用于存储FPGA配置数据,分区二用于存储状态存储信息Z和状态有效标志V,V=1表明Z有效,V=0表明Z无效。

步骤4、在FPGA内部添加掉电检测及状态处理模块;

掉电检测及状态处理模块由主控状态机、掉电检测、状态缓存、校验、状态处理和配置芯片读写共6个子模块构成,其中状态缓存子模块由RAM:2-PORT IP核构建,配置芯片读写子模块由ALTASMI_PARALLELIP核构建,其余子模块使用逻辑构建,构建的校验子模块使用CRC校验方式完成数据校验;在掉电检测及状态处理模块添加完成后,利用Quartus II开发工具生成FPGA配置数据,并通过下载线将数据烧写到EPCS128的分区一空间中。

步骤5、FPGA数据处理过程中断电,将当前状态存储信息写入配置芯片;

在FPGA断电时,电压比较电路模块输出反相,FPGA内部掉电检测子模块在滤除干扰后确认当前处于掉电状态,之后对当前缓存的状态存储信息Z进行判断;如果Z中j=M、k=N且a,b,c,d,e数据表明当前数据已经处理完成,则不进行配置芯片写操作,直接结束,否则将状态存储信息Z写入配置芯片的分区二空间,同时将配置芯片内的状态有效标志V置为1。

步骤6、FPGA恢复供电,从配置芯片中读取状态存储信息,恢复断电时状态;

在恢复供电时,FPGA首先从配置芯片中读取状态有效标志V和状态存储信息Z,如果V=0,则无需进行状态恢复,FPGA原数据处理功能模块直接工作;如果V=1,则对状态存储信息Z进行校验,如果校验结果正确,则进行状态恢复,即使用j,k,a,b,c,d,e对数据处理状态进行恢复,之后将V置为0;如果校验结果错误,则不进行状态恢复,但仍需要将V置为0;在将V置为0后,原数据处理功能模块工作,直至断电。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

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