本发明属于计算机领域,特别涉及一种适用商业卫星的fpga多备份程序加载方法及装置。
背景技术:
未来10年全球将发射7000颗小卫星,卫星按照其应用分为通信卫星、遥感卫星、导航卫星,遥感卫星主要分布在低轨(400-1000km)。目前大多数卫星的测控、数传、导航数据处理单元等采用fpga+cpu的灵活架构。然而宇宙中存在各种辐射射线,使得高性能fpga系统受太空射线影响而产生单粒子效应的概率大大提高,并且器件的集成度越高,单粒子效应的影响就越显著,这严重影响和制约着航天电子仪器设备的正常工作。
常规航天级fpga可靠性措施采用控制器fpga,采用selectmap加载方式,所用控制器一般为acltel公司反熔丝或者flash结构fpga或者专用fpga加载控制芯片(如上海复旦微电子公司抗辐射回读刷新芯片jfmrs01rh)。这种系统过于庞大,且价格昂贵,成本在2万人民币以上,同时需要额外功耗1w以上,不适合商业航天的应用。
技术实现要素:
本发明针对现有技术中存在的技术问题,提供一种适用商业卫星的fpga多备份程序加载方法及装置,采用多个存储单元,使用arm处理器来选择存储单元,在部分存储单元异常时,仍能保证fpga正常加载,不影响任务执行,同时在fpga程序运行异常时,可以通过使用cpu监控办法,控制fpga重新加载,具有成本低、功耗小的优点。
本发明采用的技术方案是:一种适用商业卫星的fpga多备份程序加载方法,包括以下步骤:
步骤1:arm处理器控制fpga单元加电,同时向选择单元发送片选使能信号,向fpga单元发送加载控制信号;
步骤2:fpga单元向选择单元发送片选信号;选择单元向对应的存储单元发送片选信号;
步骤3:fpga单元读取该存储单元的信息,进行加载:若加载成功,向arm处理器发送加载完成指示信号;若加载未成功,等待一段时间;
步骤4:arm处理器开始监控fpga单元状态;若一段时间内,arm处理器未收到fpga单元发送的遥测信息,arm处理器控制fpga单元断电,并重复步骤1,选择另一个存储单元用于fpga单元加载。
优选的,每次步骤1中,arm处理器发出的片选使能信号不同。
本发明采用的技术方案还是:一种适用商业卫星的fpga多备份程序加载装置,包括选择单元和存储单元,
所述存储单元与fpga单元连接,所述存储单元用于存储fpga单元的配置代码;所述存储单元的数量不止一个;
所述选择单元分别与存储单元、fpga单元和arm处理器连接,所述选择单元用于根据arm处理器和fpga单元的信号,选择一个存储单元用于fpga单元的加载。
优选的,所述选择单元包括若干通道,每个通道均与fpga单元、arm处理器和存储单元连接。
优选的,所述通道的结构均相同,每个通道对应一个存储单元。
优选的,所述通道为缓冲门。
优选的,所述存储单元的数量为2-4个。
优选的,所述存储单元均采用串行flash存储芯片,所述选择单元采用四总线缓冲门。
优选的,串行flash存储芯片的型号为n25q128,2脚、3脚、5脚、7脚、6脚接fpga单元;四总线缓冲门的型号为sn74alvc125pw,每个通道的管脚oe接arm处理器,输出y端口接串行flash存储芯片的1脚,输入a端口接fpga单元。
与现有技术相比,本发明所具有的有益效果是:
1.本发明在电路上只需要增加一个总线复用芯片、2个或更多的存储芯片(存储备份程序),即可实现程序多备份加载功能。无需复杂的fpga加载专用控制芯片,所需额外功耗很小,适用于商业航天领域。
2.本发明配置控制arm只需3个普通io口,适用单片机实现,例如stm32系列。
3.本发明通过arm实现系统fpga监控功能,若fpga工作异常可自动切换选择其它fpga存储器,并重新加载fpga程序。本发明采用多个代码存储器,每个存储器存储代码可以一样也可以不一样。
4.本发明的fpga配置采用masterspi模式,无需采用复杂的selectmap加载方式,总线宽度支持x1,x2,x4。适用于xilinx公司7系列fpga,如xc7a200t/xc7k325t等。
5.本发明所用arm为工业级产品,但具备长期飞行经历,且通过看门狗电路防止单粒子翻转导致的程序跑飞。
附图说明
图1为本发明实施例的加载装置的结构框图;
图2为本发明实施例的加载方法的流程图;
图3为本发明实施例的加载装置的电路图;
图4为本发明实施例的加载过程的流程图。
图中,1-选择单元,2-存储单元,3-fpga单元,4-arm处理器。
具体实施方式
为使本领域技术人员更好的理解本发明的技术方案,下面结合附图和具体实施例对本发明作详细说明。
本发明的实施例提供了一种适用商业卫星的fpga多备份程序加载装置,如图1所示,其包括选择单元1和存储单元2。所述存储单元2与fpga单元3连接,所述存储单元2用于存储fpga单元3的配置代码;所述存储单元2的数量为三个;所述选择单元1分别与存储单元2、fpga单元3和arm处理器4连接,所述选择单元1用于根据arm处理器4和fpga单元3的信号,选择一个存储单元2用于fpga单元3的加载。所述选择单元1包括三通道,每个通道均与fpga单元3、arm处理器4和存储单元2连接。所述通道的结构均相同,每个通道对应一个存储单元2。
本发明的实施例提供了还一种适用商业卫星的fpga多备份程序加载方法,如图2所示,包括以下步骤:
步骤1:arm处理器4向选择单元1的三个通道分别发送片选使能信号1-3,片选使能信号1-3中只有一个有效,同时向fpga单元3发送加载控制信号prom;
步骤2:fpga单元3向选择单元1的三个通道发送片选信号;选择单元1的三个通道向对应的存储单元2发送片选信号;
步骤3:fpga单元3读取该存储单元2的信息,进行加载:若加载成功,fpga单元3向arm处理器4发送加载完成指示信号done;若加载未成功,等待一段时间;
步骤4:arm处理器4开始监控fpga单元3状态,arm处理器4持续接收fpga单元3发送的遥测信息;若一段时间内,arm处理器4未收到fpga单元3发送的遥测信息,arm处理器4控制fpga单元3断电,并重复步骤1,arm处理器4发出与前次不同的片选使能信号,选择另一个存储单元2用于fpga单元3加载。
以fpga单元3采用xilinx公司fpga芯片xc7a200t-2fbg484为例介绍电路设计,电路结构如图3所示。其中fpga芯片的配置管脚m0,m1,m2配置状态为100,即选择masterspi模式。
fpga配置代码的存储单元2为三个,选用三片相同的串行flash存储芯片(图中u2,u3,u4),型号为n25q128,厂家为镁光。
3个串行flash存储芯片的电源vcc(8脚),时钟输入(6脚),数据线d0-d4(2脚、3脚、5脚、7脚)均连接在一块,并与fpga芯片相连。3个串行flash存储芯片片选输入端分别接总线复用芯片选用sn74alvc125pw的输出端口y。
选择单元1采用四总线缓冲门sn74alvc125pw,其具有一个空闲的通道,其余三个通道功能为:当使能管脚oe为低时,输出y端口与输入a端口一样。若使能管脚oe为高,输出y端口为高阻状态。
四总线缓冲门sn74alvc125pw的使能管脚由arm芯片控制。默认端口1有效,即en_qspi1为低。同一时刻en_qspi1、en_qspi2、en_qspi3只有一个为低,另2个为高。en_qspi为低,对应的串行flash存储芯片被选作为fpga加载存储flash。3个flash的片选(qspi_cs_b1-qspi_cs_b3)分别接其3个通道的y端口,3个a端口均接fpga输出的qspi_cs_b信号。qspi_cs_b1-qspi_cs_b3和qspi_cs_b均接4.7k上拉电阻。
本实施例的额外成本低,总造价不足20元,额外功率消耗不足0.1w,额外面积约7mm*6mm,特别适用于商业航天卫星。
本实施例所采用的fpga多备份程序加载方法,如图4所示,包括以下步骤:
步骤1:arm处理器4上电后初始化;向选择单元1发送片选使能信号:en_qspi1、en_qspi2、en_qspi3,状态为011,选择flash存储芯片u2为fpga单元3的加载flash;同时向fpga单元3发送加载控制信号:program_b低脉冲信号;
步骤2:fpga单元3向选择单元1发送片选信号:qspi_cs_b;选择单元1向flash存储芯片u2发送片选信号:qspi_cs_b1;
步骤3:fpga单元3读取该flash存储芯片u2的信息,进行加载:arm处理器4等待fpga单元3加载完成done信号拉高,若拉高说明fpga单元3加载正常,arm处理器4程序运行进入main函数,并开始监控fpga单元3状态。如果fpga单元3加载完成done信号20s一直不拉高,说明fpg单元a加载失败,arm处理器4程序运行也进入main函数,并开始监控fpga状态;
步骤4:正确情况下(fpga单元3正常加载)fpga单元3每1s均会通过串口给arm处理器4发送遥测信息,如果连续60sarm处理器4未收到fpga单元3的遥测信息,则将fpga单元3电源断电。同时arm处理器4通过选择en_qspi1、en_qspi2、en_qspi3状态为101,选择flash存储芯片u3为fpga单元3的加载flash。给fpga单元3一个program_b低脉冲信号,fpga单元3重新加载,同时arm处理器4进入监控状态。若fpga单元3仍然加载失败,arm处理器4通过选择en_qspi1、en_qspi2、en_qspi3状态为110,重新选择选择flash存储芯片u4重新加载fpga。如此循环。
多备份程序烧录方法:
1.对于烧录相同代码步骤:
a.使用isedesignsuite14.7软件将所需verilog/vhdl代码生成bit文件。
b.使用impact将bit文件转化为mcs文件。
c.使用arm处理器4选择flash存储芯片u2,并使用impact将mcs烧入flash存储芯片u2中。
d.使用arm处理器4选择flash存储芯片u3,并使用impact将mcs烧入flash存储芯片u3中。
e.使用arm处理器4选择flash存储芯片u4,并使用impact将mcs烧入flash存储芯片u4中。
f.烧录工作完成。
2.对于烧录不同代码步骤:
a.使用isedesignsuite14.7软件将所需verilog/vhdl代码1生成bit文件1。
b.使用impact将bit文件转化为mcs1文件。
c.使用isedesignsuite14.7软件将所需verilog/vhdl代码2生成bit文件2。
d.使用impact将bit文件转化为mcs2文件。
e.使用isedesignsuite14.7软件将所需verilog/vhdl代码3生成bit文件3。
f.使用impact将bit文件转化为mcs3文件。
g.其中代码1,代码2,代码3,可以是3个种不同代码,或者只有2种不同代码。
h.使用arm处理器4选择flash存储芯片u2,并使用impact将mcs1烧入flash存储芯片u2中。
i.使用arm处理器4选择flash存储芯片u3,并使用impact将mcs2烧入flash存储芯片u3中。
j.使用arm处理器4选择flash存储芯片u4,并使用impact将mcs3烧入flash存储芯片u4中。
k.烧录工作完成。
以上通过实施例对本发明进行了详细说明,但所述内容仅为本发明的示例性实施例,不能被认为用于限定本发明的实施范围。本发明的保护范围由权利要求书限定。凡利用本发明所述的技术方案,或本领域的技术人员在本发明技术方案的启发下,在本发明的实质和保护范围内,设计出类似的技术方案而达到上述技术效果的,或者对申请范围所作的均等变化与改进等,均应仍归属于本发明的专利涵盖保护范围之内。