FPGA配置电路的启动系统及其方法与流程

文档序号:17859718发布日期:2019-06-11 22:47阅读:568来源:国知局
FPGA配置电路的启动系统及其方法与流程

本申请涉及集成电路技术领域,特别涉及fpga配置电路的启动技术。



背景技术:

spinorflash由于其协议简单、可靠性高、io数量少的优点,在fpga系统中被广泛使用。随着其容量的不断变大,其在fpga系统中不仅作为fpga配置码流的存储器而且用户也越来越多地将用户信息存放在其中,在fpga工作时进行读写。但在由fpga和flash芯片组成的系统中,往往会存在有时可以正常启动,但有时却无法正常启动的问题。



技术实现要素:

本申请的目的在于提供一种fpga配置电路的启动系统及其方法,解决了由fpga和flash芯片组成的系统无法正常启动的问题。

本申请公开了一种fpga配置电路的启动系统,包括:

输入端分别与存储第一地址、第二地址和第三地址的存储器耦合的三输入选择器,用于从该第一地址、第二地址和第三地址中选择一个作为下载地址输出;

地址和模式产生模块,用于根据该三输入选择器选择输出的该下载地址产生下载地址及其下载模式参数;

闪存读取控制逻辑模块,用于根据该地址和模式产生模块输出的下载地址及其下载模式参数,从闪存下载数据;

校验模块,用于对该闪存读取控制逻辑模块下载的数据进行校验,判断是否下载失败;

地址获取模块,用于在该校验模块判定第三地址及其下载模式参数下载成功时,将该第三地址存储到该存储器中;

下载失败计数模块,用于根据该校验模块的输出结果对下载失败次数进行计数,并根据该计数的结果控制该三输入选择器输出对应的下载地址。

在一个优选例中,还包括与该下载失败计数模块耦合的电压控制模块,用于在该fpga首次从第一地址从闪存下载配置码流下载失败后,调节该闪存的供电电压,通过该下载失败计数模块根据最新的计数结果控制该三输入选择器再次输出第一地址。

在一个优选例中,还包括与该校验模块耦合的重置模块,用于在该校验模块判定第三地址及其下载模式参数下载失败时,重置该fpga内部的控制器参数,通过该下载失败计数模块根据最新的计数结果控制该三输入选择器跳转输出第一地址。

在一个优选例中,该重置模块还用于:在该fpga从该第三地址以与其对应的下载模式,从闪存下载备份的配置码流失败时,重置该fpga内部的控制器参数,通过该下载失败计数模块根据最新的计数结果控制该三输入选择器跳转输出第一地址。

在一个优选例中,该下载模式参数包括与下载速度相关的参数x1、x2、x4,该参数x1、x2、x4对应的下载速度依次增大。

在一个优选例中,该地址和模式产生模块根据该三输入选择器输出的第一地址产生的下载模式包括参数x1;

该地址和模式产生模块根据该三输入选择器输出的第三地址产生的下载模式包括参数x2或x4。

在一个优选例中,该校验模块是crc校验模块。

本申请还公开了一种fpga配置电路的启动方法包括:

afpga从约定的第一地址从闪存下载配置码流,如果下载失败,该fpga再次从该第一地址从闪存下载配置码流;

b如果再次下载失败,该fpga跳转到约定的第二地址下载第三地址及其下载模式参数;

c如果该第三地址及其下载模式参数下载成功,该fpga从该第三地址以与其对应的下载模式从闪存下载备份的配置码流;

d如果配置码流下载成功,则该fpga进入工作模式。

在一个优选例中,该步骤c还包括:如果该第三地址及其下载模式参数下载失败,则重置该fpga内部的控制器参数,跳转到该步骤a。

在一个优选例中,该步骤c之后,还包括:如果该fpga从该第三地址以与其对应的下载模式参数,从闪存下载备份的配置码流失败,则重置该fpga内部的控制器参数,跳转到该步骤a。

本申请实施方式中,在flash下载配置码流失败时,通过判断失败的位置来决定是否重新从原始位置下载还是跳转到flash的其他位置开始下载,从而解决了由fpga和flash芯片组成的系统无法正常启动的问题。本申请实施方式中,至少包括以下优点:

首先,因为不同的flash芯片生产厂家所生产的flash芯片上电时间各有差异,特定厂家的fpga芯片的上电时间是固定,这就造成了在fpga选型固定时,必须选择上电时间小于fpga上电时间的flash芯片才能在系统中正常工作,否则fpga将不能正常执行从flash中下载码流的工作;或者,在系统供电短、时间不稳定的情况下,可能会造成系统中flash输出数据错误,如果fpga只下载一次,系统将会挂死当。本申请实施方式中,能够在flash首次下载时,自动判断是否要重新下载,用户将不用考虑同系统下的flash上电时间和fpga上电时间不满足的正常启动的条件,节省了用户的芯片选型成本;而且,除上述的flash和fpga的上电速度不一致,可能造成首次下载失败的问题,在板级设计时供给flash的电压不够也可能会造成首次下载失败的问题,所以,本申请实施方式中,进一步地提供了一种电压补偿设计,即在发生第一次下载失败后,通过控制模块调节flash的供电电压后再进行重复的第二次下载。

而且,随着市场上flash的容量越来越大,其价格越来越便宜,用户在使用时将越来越多的用户数据存储到flash上,这就造成系统在读写flash时如果发生地址错误,可能会损坏fpga的配置文件,造成系统无法再重新启动;或者,用户越来越重视flash中存储的fpga配置码流的远程更新功能,以增加系统的复用能力。例如,用户在fpga正常工作时更新flash中存储的配置码流,如果这一过程中发生数据写入错误,则将造成系统复位后无法启动。针对这些问题,本申请实施方式中,在上述连续两次重复下载flash中的配置码流数据都失败的情况下,进一步提供了系统备份启动的功能。例如,用户需要远程更新时,发生更新错误时,通过选择备选码流下载,保证系统能正常启动,增强系统的安全性和可靠性。

进一步地,如果上述备份启动功能也执行失败,系统将一直重复下载流程,直到成功,用来克服系统电源短时间不稳定带来的风险,提供系统的容错能力,使系统更加稳定和安全。

本申请的说明书中记载了大量的技术特征,分布在各个技术方案中,如果要罗列出本申请所有可能的技术特征的组合(即技术方案)的话,会使得说明书过于冗长。为了避免这个问题,本申请上述发明内容中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各种新的技术方案(这些技术方案均因视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征a+b+c,在另一个例子中公开了特征a+b+d+e,而特征c和d是起到相同作用的等同技术手段,技术上只要择一使用即可,不可能同时采用,特征e技术上可以与特征c相组合,则,a+b+c+d的方案因技术不可行而应当不被视为已经记载,而a+b+c+e的方案应当视为已经被记载。

附图说明

图1是根据本申请第一实施方式的fpga配置电路的启动系统结构示意图

图2是根据本申请第二实施方式的fpga配置电路的启动方法流程示意图

图3是根据本申请第二实施方式的一个具体实施例流程示意图

图4是根据图3的具体实施例中的从地址h00000000开始从闪存下载数据的一个接口时序图

图5是根据本申请第一实施方式的一个具体实施例结构示意图

具体实施方式

在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

部分概念的说明:

fpga:field-programmablegatearray,现场可编程门阵列。

crc:cyclicredundancycheck,循环冗余校验。

spi:serialperipheralinterface,串行外设接口。

norflash:一种非易失闪存。

flash:闪存。

下面概要说明本申请的部分创新点:

本申请的发明人经过分析发现,造成由fpga和flash芯片组成的系统无法正常启动的根据问题包括:系统中的flash的上电速度慢于fpga而造成的flash数据输出错误;板级设计时供给flash的电压不够造成flash的无法启动;以及配置码流本身存在数据错误。

本申请实施方式中,基于上述问题,首先,fpga首次根据预先约定的第一地址从闪存下载配置数据时,如果下载失败,通过系统的控制模块调节flash的供电电压,避免了由于板级设计时供给flash的电压不够造成或者上电顺序错误造成的系统无法正常启动;而且在调节flash的供电电压后,提供了再次根据第一地址从闪存下载配置数据的过程,该再次下载提供了足够的时间延迟以避免因电源上电顺序错误造成的系统无法正常启动的问题。

如果第二次下载仍失败,则可以判定该第一地址对应的配置码流本身可能有数据错误。进一步地,该闪存读取控制逻辑模块根据该预先约定的第二地址从闪存中直接下载第三地址信息,这样可以提高备份码流数据存储的灵活性;如果第三地址信息下载失败,则重置fpga内部的控制器参数又重新跳转到上述“根据预先约定的第一地址从闪存下载配置数据”的步骤,并重复上述工作过程,否则将该第三地址进行存储,并后续根据该第三地址产生第三地址及其下载模式参数,通过闪存读取控制逻辑模块从该第三地址以与其对应的下载模式从闪存下载备份配置数据。

进一步地,如果从该第三地址下载备份配置数据失败,通过重置模块重置fpga内部的控制器参数,又重新跳转到“根据预先约定的第一地址从闪存下载配置数据”的步骤,并重复上述工作过程,提供系统的容错能力。

进一步地,系统将一直重复下载流程,直到成功,用来克服系统电源短时间不稳定带来的风险,使系统更加稳定和安全。

以上,在系统的各种使用场景下,大大提高了系统安全性和可靠性。

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。

本申请的第一实施方式涉及一种fpga配置电路的启动系统,其结构如图1所示,该fpga配置电路的启动系统包括输入端分别与存储第一地址、第二地址和第三地址的存储器耦合的三输入选择器、地址和模式产生模块、闪存读取控制逻辑模块、校验模块、地址获取模块和下载失败计数模块;

其中,该三输入选择器用于从该第一地址、第二地址和第三地址中选择一个作为下载地址输出;该地址和模式产生模块用于根据该三输入选择器选择输出的该下载地址产生下载地址及其下载模式参数;闪存读取控制逻辑模块,用于根据该地址和模式产生模块输出的下载地址及其下载模式参数,从闪存下载数据;校验模块用于对该闪存读取控制逻辑模块下载的数据进行校验,判断是否下载失败;该地址获取模块用于在该校验模块判定第三地址及其下载模式参数下载成功时,将该第三地址存储到该存储器中;该下载失败计数模块,用于根据该校验模块的输出结果对下载失败次数进行计数,并根据该计数的结果控制该三输入选择器输出对应的下载地址。

该系统的具体工作过程包括:

开始,该三输入选择器首次选择第一地址输出到该地址和模式产生模块,该地址和模式产生模块根据该第一地址产生输出第一地址和对应的下载模式参数,该闪存读取控制逻辑模块根据该第一地址和与其对应的下载模式参数从闪存下载配置码流,通过校验模块对所述闪存读取控制逻辑模块下载的数据进行第一次校验,判断是否下载失败,如果判定下载没有失败(下载成功),则fpga进入工作模式;

之后,如果判定下载失败,该校验模块输出下载失败信号到该下载失败计数模块,该下载失败计数模块对下载失败次数进行计数,并根据该计数的结果控制该三输入选择器再次输出第一地址到地址和模式产生模块,该地址和模式产生模块产生输出第一地址和与其对应的下载模式参数,该闪存读取控制逻辑根据该第一地址和与其对应的下载模式参数从闪存下载配置码流,通过校验模块对所述闪存读取控制逻辑模块下载的数据进行第二次校验,判断是否下载失败,如果判定没有下载失败(下载成功),则fpga进入工作模式;

之后,如果判定下载失败,该校验模块输出下载失败信号到该下载失败计数模块,该下载失败计数模块对下载失败次数进行计数,并根据该计数的结果控制该三输入选择器输出第二地址到该地址和模式产生模块,该地址和模式产生模块产生输出第二地址和与其对应的下载模式参数,该闪存读取控制逻辑模块根据该第二地址和与其对应的下载模式参数从闪存下载第三地址信息,通过校验模块对所述闪存读取控制逻辑模块下载的数据信息进行第三次校验,判断是否下载失败;

之后,如果判定没有下载失败(下载成功),将下载的第三地址信息存储到该地址获取模块中,该地址获取模块将该第三地址信息存储到该存储器中,通过该下载失败计数模块对下载失败次数进行计数,并根据该计数的结果控制该三输入选择器输出该第三地址信息到地址和模式产生模块,该地址和模式产生模块产生输出第三地址和与其对应的下载模式参数,该闪存读取控制逻辑根据该第三地址和与其对应的下载模式参数从闪存下载备份的配置码流,通过校验模块对所述闪存读取控制逻辑模块下载的数据进行第四次校验,判断是否下载失败,如果判定下载成功,则fpga进入工作模式。

在一个实施例中,该系统还包括:与该下载失败计数模块耦合的电压控制模块;该电压控制模块用于在该闪存读取控制逻辑根据该第一地址和与其对应的下载模式参数从闪存下载配置码流下载失败时,调节该闪存的供电电压,通过该下载失败计数模块根据最新的计数的结果控制该三输入选择器再次输出第一地址。

在一个实施例中,该系统还包括:与该校验模块耦合的重置模块;该重置模块用于在该校验模块判定第三地址及其下载模式参数下载失败时,重置该fpga内部的控制器参数,通过该下载失败计数模块根据最新的计数结果控制该三输入选择器跳转输出第一地址,并重复上述“该系统的具体工作过程”。可选地,该重置模块还用于:在该闪存读取控制逻辑根据该第三地址和对应的下载模式从闪存下载备份的配置码流下载失败时,重置该fpga内部的控制器参数,通过该下载失败计数模块根据最新的计数结果控制该三输入选择器跳转输出第一地址,并重复上述“该系统的具体工作过程”。

本说明书涉及的下载模式参数包含的参数种类是多种多样的,在一个实施例中,该下载模式参数可以包含与下载速度相关的参数。例如该与下载速度相关的参数包括x1、x2、x4,则预先设置该地址和模式产生模块产生的与第一地址对应的下载模式参数包括:表示下载速度最慢的x1,以保证下载不会出错;并预先设置该地址和模式产生模块产生的与第三地址对应的下载模式参数包括:表示下载速度更快(与x1相比)的x2或x4,如此可以提高备份码流数据下载的成功率。

在一个实施例中,本说明书涉及的校验模块可以是crc校验模块。

本申请的第二实施方式涉及一种fpga配置电路的启动方法,其流程如图2所示,该方法包括以下步骤:

开始执行步骤201,fpga从约定的第一地址从闪存下载配置码流。

之后进入步骤202,判断:是否下载失败。如果下载失败,则之后进入步骤205,该fpga再次从该第一地址从闪存下载配置码流。否则进入步骤204,该fpga进入工作模式。

在一个实施例中,该步骤205之前还包括步骤203,步骤203具体为:通过该fpga的电压控制模块调节闪存的供电电压。

在步骤205之后进入步骤206,判断:是否下载失败。如果再次下载失败,则进入步骤207,该fpga跳转到约定的第二地址下载第三地址及其下载模式参数。否则进入步骤204,该fpga进入工作模式。

在步骤207之后进入步骤208,判断:是否下载成功。如果该第三地址及其下载模式参数下载成功,则进入步骤209,该fpga从该第三地址以与其对应的下载模式从闪存下载备份的配置码流。

在一个实施例中,如果该第三地址及其下载模式参数下载失败,则进入步骤210,重置该fpga内部的控制器参数,跳转到该步骤201重复以上各步骤。

在一个实施例中,该步骤209之后还进入步骤211,判断:是否下载失败。如果该fpga从该第三地址以与其对应的下载模式参数从闪存下载备份的配置码流下载失败,则之后进入步骤210,重置该fpga内部的控制器参数,跳转到该步骤201重复以上各步骤。否则进入步骤204,该fpga进入工作模式。

本说明书涉及的下载模式参数包含的参数种类是多种多样的,在一个实施例中,该下载模式参数可以包含与下载速度相关的参数。例如,该与下载速度相关的参数包括x1、x2、x4,则预先设置该地址和模式产生模块产生的与第一地址对应的下载模式参数包括:表示下载速度最慢的x1,以保证下载不会出错;并预先设置该地址和模式产生模块产生的与第三地址对应的下载模式参数包括:表示下载速度更快(与x1相比)的x2或x4;如此可以提高备份码流数据下载的成功率。

在一个实施例中,本说明书涉及的“是否下载成功”和“是否下载失败”的判断功能可以通过执行crc校验实现。

第一实施方式是与本实施方式相对应的系统实施方式,第一实施方式中的技术细节可以应用于本实施方式,本实施方式中的技术细节也可以应用于第一实施方式。

为了能够更好地理解本申请的技术方案,下面结合一个具体的例子来进行说明,该例子中罗列的细节主要是为了便于理解,不作为对本申请保护范围的限制。

第一个例子是根据本申请第二实施方式的一个具体实施例,步骤如下:

第一步:当第一次上电时,fpga尝试从h00000000地址启动下载,通过配置码流crc计算判断是否有错误发生(即是是否下载失败),如果判定有错误发生则执行第二步,此时产生错误原因可能有两种:由于flash的上电速度慢于fpga而造成的flash数据输出错误;和,flash中的配置码流本身有数据错误。flash和fpga的上电速度不一致,可能是造成第一次下载失败的主要原因,除此之外,在板级设计时供给flash的电压不够也可能是一个原因,此时也有一种电压补偿设计,即在发生第一次错误后,通过控制模块调节flash的供电电压后再执行第二步;

第二步:在发现第一次错误后,fpga第二次重新尝试从h00000000地址启动下载,并再次通过计算crc判断是否有错误发生,如果第一次失败是由于上电顺序造成,第二次下载因为有足够的时间延迟可以保证电源上电顺序而不出现下载错误,那么,如果第二次还是发生错误,则意味着配置码流本身可能有数据错误,则执行第三步;

第三步:连续两次失败,则跳转到地址t重新读取下载参数:包括下载地址g和下载模式参数。地址t是预先约定的地址,只存储备份码流的下载地址g和下载模式参数,这样可以提高备份码流数据存储的灵活性。

第四步:下载完备份码流的下载地址g和下载模式参数后,fpga重新启动从地址g以该下载模式开始下载

第五步:如果从g地址下载再次失败,将重置fpga内部的控制器参数又重新跳回地址h00000000重复上面的各步骤,以提供系统的容错能力。

图3是根据本申请第二实施方式的一个具体实施例流程示意图,

图4是图3所示实施例中从地址h00000000开始从闪存下载数据的一个接口时序图。

图5是根据本申请第一实施方式的一个具体实施例结构示意图,且图5的方法实施例是与图3相对应的系统结构示意图。

需要说明的是,在本专利的申请文件中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本专利的申请文件中,如果提到根据某要素执行某行为,则是指至少根据该要素执行该行为的意思,其中包括了两种情况:仅根据该要素执行该行为、和根据该要素和其它要素执行该行为。多个、多次、多种等表达包括2个、2次、2种以及2个以上、2次以上、2种以上。

在本申请提及的所有文献都被认为是整体性地包括在本申请的公开内容中,以便在必要时可以作为修改的依据。此外应理解,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。

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