基于重构的fpga多余度实现方法

文档序号:9598018阅读:776来源:国知局
基于重构的fpga多余度实现方法
【技术领域】
[0001]本发明属于FPGA多余度实现领域,涉及一种基于重构的FPGA多余度实现方法。
【背景技术】
[0002]余度技术是提高系统工作可靠性的一种重要手段,由于FPGA具有良好的可定制性,可满足多样化的余度切换需求,因此在多余度系统中得到了广泛应用。传统的基于FPGA的多余度系统采用非重构的单FPGA或多FPGA两种实现方式,其中单FPGA实现方式是将多路采用相同或类似协议传输的数据同时送入FPGA中,FPGA对各路数据进行正确性判断并据此进行系统控制和数据选择。多FPGA实现方式则是采用2个或更多的FPGA芯片构成硬件冗余,当某个FPGA工作异常时自动切换到另一个FPGA,从而保证系统的正常工作。
[0003]以上两种实现方式达到了提高系统可靠性的目的,在一定程度上满足了系统的余度设计需求,但存在以下问题:单FPGA实现方式要求输入的数据采用相同或类似的传输协议,如果传输协议不同,则FPGA需要针对每种协议建立不同的硬件处理逻辑,从而需要更大规模的FPGA和配置芯片,增加硬件成本;多FPGA实现方式不仅增加了硬件成本,还由于FPGA间控制和判断逻辑的引入而在一定程度上增加了系统的故障率。

【发明内容】

[0004](—)发明目的
[0005]本发明的目的是:为避免FPGA多余度实现中硬件成本的增加,增加系统设计的灵活性,提供一种基于重构的FPGA多余度实现方法。
[0006]( 二)技术方案
[0007]为了解决上述技术问题,本发明提供一种
[0008](三)有益效果
[0009]上述技术方案所提供的基于重构的FPGA的多余度实现方法,采用重构方式实现单FPGA的多余度,与非重构方式相比,避免了 FPGA硬件成本的增加,降低了对输入数据的传输协议要求,增加了系统设计的灵活性,使用户可建立更为可靠的多余度系统。
【附图说明】
[0010]图1是本发明基于重构的FPGA的多余度实现方法中余度切换模块示意图。
[0011]图2是本发明基于重构的FPGA的多余度实现方法中余度模块示意图。
[0012]图3是本发明基于重构的FPGA的多余度实现方法中余度切换模块和余度模块运行流程图。
【具体实施方式】
[0013]为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的【具体实施方式】作进一步详细描述。
[0014]为了解决现有技术中存在的技术问题,本发明提供的基于重构的FPGA多余度实现方法,包括以下步骤:
[0015]步骤1)生成各余度模块FPGA配置数据,统计配置数据长度,确定超时参数;
[0016]具体地,各余度模块是用户在每个余度中要实现的具体功能,通过在原用户期望功能的基础上添加看门狗子模块实现;看门狗子模块是FPGA开发环境提供的带有看门狗功能的IP核,带有看门狗复位信号,如果某余度模块在一定时间内没有将看门狗复位信号置为有效,则看门狗复位超时,表明该余度所实现的功能出现故障,需要进行余度切换;用户利用FPGA开发环境生成各余度模块FPGA配置数据,统计配置数据长度,并根据每个余度的具体功能和应用环境确定超时参数。
[0017]步骤2)根据步骤1)的统计数据建立余度切换表;
[0018]具体地,余度切换表包括总余度数目N和每个余度的调度优先级、调度起始地址和超时参数;调度优先级指该余度在所有余度模块中被调度的优先顺序,调度起始地址指该余度模块对应的FPGA配置数据在配置芯片中存储的起始地址,超时参数指该余度模块在多长时间内没有复位看门狗则表明该余度功能已经出现故障,需要调用其他余度模块;调度起始地址的确定应以优先级和配置数据长度为依据,高优先级余度的调度起始地址应小于低优先级余度的调度起始地址,且相邻两个余度调度起始地址的差值应大于两个余度中高优先级余度的配置数据长度;余度切换表中最高优先级余度的调度起始地址不应为0,且该地址应大于步骤3)中余度切换模块FPGA配置数据的长度,具体可根据步骤3)中FPGA配置数据生成后进行调整。
[0019]步骤3)根据余度切换表组建余度切换模块,生成余度切换模块FPGA配置数据;
[0020]具体地,余度切换模块是进行余度调度的主控模块,该模块由重构和看门狗控制、余度数据存储器和余度调度三个子模块构成,其中重构和看门狗控制子模块是FPGA编程环境提供的带有重构和看门狗功能的IP核,余度数据存储器用于存储余度切换表中所有余度的调度优先级、调度起始地址和超时参数数据,并为每个余度均提供了 1比特的读写空间用于记录该余度当前的有效状态,余度调度子模块根据余度故障情况改变余度数据存储器中的余度有效状态,并根据余度调度优先级和改变后的各余度有效状态进行余度选择,根据被选余度参数对重构和看门狗控制子模块进行配置,使能FPGA重构;利用FPGA环境生成的余度切换模块FPGA配置数据长度应小于余度切换表中最高优先级余度的调度起始地址,否则应调整步骤2中建立的余度切换表并根据该表改变步骤3余度数据存储器中已存储的相关数据。
[0021 ] 步骤4)配置数据整合烧写;
[0022]具体地,利用FPGA开发环境提供的FPGA配置文件转换工具将步骤1)中生成的各余度模块FPGA配置数据和步骤3)中生成的余度切换模块FPGA配置数据进行整合,整合为一个FPGA配置芯片烧写文件并写入FPGA配置芯片;在数据整合时,应指定余度切换模块配置数据在配置芯片中的起始地址为0,各余度模块配置数据在配置芯片中存储的起始地址与步骤2)中最终确定的各余度调度起始地址一致。
[0023]步骤5)余度切换模块配置看门狗,调度余度模块;
[0024]具体地,在FPGA上电时默认从配置芯片中的地址0读取配置数据,即FPGA被配置为余度切换模块的功能,如果余度调度模块所调度的余度在余度切换表指定的时间内没有对看门狗进行复位操作,FPGA也会自动重构,将FPGA配置为余度切换模块的功能;在余度切换模块运行时,余度调度子模块首先通过重构和看门狗控制子模块读取上次重构的配置数据起始地址,如果该地址不为0,则在余度数据存储器中将该地址对应的余度置为无效,表明该余度功能已经发生故障,在下次FPGA上电前将不再被调度;如果该地址为0,表明当前状态是在FPGA上电后第一次进行余度调度,无需进行余度置无效的操作。在以上步骤完成后,余度调度子模块从余度数据存储器中读取余度数据,选择具有最高优先级的有效余度,然后记录该余度的调度起始地址和超时参数,将调度起始地址写入重构和看门狗控制子模块,并根据超时参数指定看门狗的超时定时器阈值、使能看门狗,最后通过重构和看门狗控制子模块使能重构。
[0025]步骤6)使用指定的余度模块配置数据配置FPGA并运行;
[0026]具体地,在步骤5)使能重构后,FPGA自动从指定的调度起始地址读取配置芯片中存储的配置数据,进行自身重构,之后FPGA被配置为指定余度模块的功能,并重构完成自动复位运行;在正常状态下,该余度模块会在调度切换表指定的时间内复位看门狗,FPGA不会重构;当故障发生时,该余度模块没有在规定的时间内完成数据收发和处理,将导致看门狗复位超时,FPGA会从配置芯片的地址0读取配置数据,自动重构。
[0027]步骤7)重复步骤5)到步骤),直至所有余度失效;
[0028]具体地,在步骤5)中,余度切换模块进行余度调度,将FPGA配置为指定余度的功能;在步骤6)中,指定余度功能发生故障时,FPGA将再次重构为余度切换模块的功能,回到步骤5);系统运行状态将重复步骤5)和步骤6),直至所有余度均发生故障,即没有有效的余度可供调度。
[0029]基于上述实现方法的技术方案,下面提供一个具体的实例对本发明方案做进一步详细的描述
[0030]首先本实例中芯片型号和开发环境及使用的IP核进行介绍:FPGA芯片选用Altera公司的EP3C55,FPGA配置芯片选用Altera公司的EPCS128,开发环境选择QuartusII 10.Ιο共使用两种IP核,一种是ALTREMOTEJJPDATE,该IP核提供重构和看门狗功能;另一种是RAM: 1-P0RT,是单口存储器,用于存储余度切换表中所有余度的调度优先级、调度起始地址和超时参数等数据。
[0031]下面对本实例的应用环境进行介绍:本实例应用于采用A、B、C三种协议传输的三余度系统,FPGA接收来自A协议通道、B协议通道或C协议通道的数据,解析出原始数据并处理后将结果输出。三个通道不同时工作,首先使用A协议通道进行数据接收,当该通道发生故障时自动切换到B协议通道,当B协议通道发生故障再切换到C协议通道。即A协议通道的优先级高于B协议通道,B协议通道的优先级高于C协议通道。由于三个通道的数据处理方式存在差异,在采用传统的非重构单FPGA余度实现方式时,资源占用超过了 FPGA提供的总资源,无法满足设计需求。而通过本发明方法则可以满足设计需求,参照图1?图3,实例步骤如下:
[0032]步骤1)生成各余度模块FPGA配置数据,统计配置数据长度,确定超时参数;本实例中共使用三个余度模块,A余度模块、B余度模块和C余度模块。根据具体应用环境,确定的超时参数为:A余度为Tl,B余度为T2,C余度为T3。根据超时参数,为三个模块添加带有看门狗功能的IP核ALTREMOTEJJPDATE,并分别添加看门狗复位功能,复位周期小于各自的超时参数。之后在Quartus II 10.1环境下对三个模块进行编译,得到三个模块的配置数据长度:A余度为Ll,B余度为L2,C余度为L3。
[0033]步骤2)根据步骤1)的统计数据建立余度切换表:总余度数目为3,A余度调度优先级为1,调度起始地址M1,超时参数Tl ;B余度调度优先级为2,调度起始地址M2,超时参数T2 ;C余度模块调度优先级为3,调度起始地址M3,超时参数T3。确保M3>M2>M1,且M2-
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1