基于FPGA的立方星可重构星载处理系统研究

2018-08-24 07:50
计算机测量与控制 2018年8期
关键词:低电平功耗重构

, ,

(西北工业大学 精确制导与控制研究所,西安 710072)

0 引言

立方星(CubeSat)的概念最早由加州理工大学San Luis Obispo教授和斯坦福大学Bob Twiggs教授共同提出并制定了立方星的相关标准[1]。该标准以一个边长为10 cm的正方体作为一个标准单元,称之为“1U”立方星。在此基础上,立方星以该标准单元进行扩展,可增大卫星的体积和功能。其理念是通过标准化设计,减少卫星的研发制造成本。

但立方星属于微纳卫星的范畴,相比于大卫星,其体积、功耗与成本均存在限制。如何在有限的体积、功耗与成本下,提高立方星星载处理系统的可靠性是国内外学者近期研究的热点[2-3]。与此同时,大容量可重构FPGA (Field Programmable Gate Array) 的出现,使得可重构计算机成为了可能。可重构星载计算机能够在立方星部分部件出现故障时,自主地改变自身的功能,使立方星能够按原定性能指标或比原性能指标略低 (但可接受) 的情况下安全地完成任务。这样就避免了固定硬件结构的立方星系统一旦发生硬件损伤,将导致任务失败的结局,从而提高了立方星的可靠性。

文献[4]介绍了2007年德国斯图加特大学小卫星计划的第一颗微小卫星——Flying Laptop,该卫星采用了基于FPGA的可重构计算技术来设计星载计算机。为了解决系统容错以及抗辐射问题,系统设计了4个相同且相互独立的节点。但考虑到功耗与体积等因素,该体系很难应用于立方星上。文献[5]给出了用于立方星上的低成本高可靠性星载计算机的方案,文献使用ATmega128作为星务处理器,而使用Spartan-6的FPGA作为载荷处理器。但该文仅仅只对使用FPGA的方案进行了讨论,并未对FPGA如何进行具体的在轨重构进行研究。文献[6]采用Xilinx的FPGA开发板利用模糊理论进行姿态控制算法研究,并进行了硬件在回路仿真,但该设计并未进行在轨试验。本文将综合考虑立方星的质量、功耗与体积等限制因素,使得立方星具有一定的重构能力,从而提高立方星星载处理系统的可靠性,并最终通过实际在轨测试,验证了设计的正确性和可行性。

本文首先针对立方星存在的质量、体积与功耗等限制因素,在充分吸收了国内外微小卫星星载计算的设计研制经验基础上,给出了基于FPGA的立方星可重构星载处理系统的基本架构。在此基础上,针对可重构星载处理系统中的一些关键技术进行了详细的设计。最后针对各关键技术逐一进行了测试与验证,并给出了实际在轨测试的结果。

1 系统结构及原理

为了使得立方星星载处理系统具有可重构性,同时满足立方星的设计标准,本文基于FPGA进行了立方星可重构星载处理系统的设计。该设计充分吸收了国内外立方星星载计算机的设计研制经验[7-9],并对星载计算机的可重构策略、在线重构、系统同步等功能进行设计。这样使得整个星载处理系统在具有在线重构功能的同时、也具有体积小、集成度高以及低功耗等特点,能够满足一般立方星的应用需要。

所设计的星载处理系统的硬件结构图如图1所示。由图中可以看出,该硬件结构由一片基于SRAM架构的FPGA与一片基于Flash架构的FPGA组成。其中,基于SRAM架构的FPGA中集成了两个软核处理器CPU1与CPU2,基于Flash架构的FPGA负责系统的表决控制功能。两个软核处理器分别拥有独立的F-RAM,但共享同一个Flash存储器。CPU1与CPU2同时从表决控制电路获取输入数据,经过运算后回送至表决控制电路。最终,由表决控制电路对结果进行同步和表决,并对外部输出的结果。下面对该系统中核心部件的硬件设计进行详述。

图1 星载处理平台总体结构

2 系统硬件设计

2.1 处理器设计

其核心处理模块采用Altera公司基于SRAM架构的Cyclone V系统。与前几代产品相比,该系列FPGA总功耗降低了40%,并具有高效的逻辑集成功能。正常工作情况下,在一块FPGA中设计双核处理系统,并为每一个处理器分别单独配置SD卡与F-RAM用于任务数据存储与数据内存,而两个处理器共用同一块Flash以减小功耗。

另外,采用基于Flash架构的ProASIC3芯片作为核心的表决控制系统。该芯片对于空间复杂环境下高能粒子的影响具有很好的免疫能力。在系统上电时无需额外配置芯片,增加了系统的安全性和稳定性,是真正的单芯片解决方案。上电即运行的特点,使得器件可以迅速执行重要的系统初始化任务。

ProASIC3作为与外界的接口,主要功能包括从外界总线获取数据、对FPGA的计算结果进行表决、将最终结果输出至外部数据总线、根据FPGA的工作情况对其进行重构、控制电源模块进行重新上电等。在Altera的FPGA中设计双核处理器,在正常工作时,双核CPU1与CPU2均处于工作状态,并各自产生对应的心跳信号。

2.2 电源设计

电源模块实现电压转换、过流保护以及输出使能等功能。为了降低功耗并防止FPGA配置芯片中的配置代码不被高能粒子打翻,ProASIC3通过使能引脚来控制Cyclone V系统的配置过程。当Cyclone V的配置过程结束后,ProASIC3拉低使能引脚,停止对配置芯片供电。当需要重新配置Cyclone V时,使能电源芯片,使其正常为配置芯片供电。

2.3 存储设计

存储单元由铁电存储器F-RAM、SD卡以及Flash存储器组成。Flash存储器主要存储运行于FPGA上的软件程序。F-RAM存储器用于存储程序运行过程中的程序和数据。SD卡用于存储立方星飞行过程中的任务数据。其中,每一个处理器分别单独使用各自的SD卡与F-RAM,而两个处理器共用同一块Flash以减小功耗。

3 软件实现

用于立方星的可重构星载处理系统,受到体积、功耗的限制,既不能过于复杂,又必须保证一定的可靠性。因此,可重构星载处理系统选择双模冗余的方案。对于双模冗余的硬件结构,经常采用的容错控制策略有热备份、冷备份、温备份以及互备援这几种形式,文献[10]对这几种备份形式的优缺点进行了分析。下面对该系统中所采用的关键技术进行详细设计。

3.1 可重构策略设计

为了减轻ProASIC3在表决切换等功能上的负担,选取温备份的容错控制策略,ProASIC3仅进行数据输入与输出管理。在Cyclone V FPGA中设计的双核主机CPU1与从机CPU2,具有相同的功能。若CPU1作为主机执行全部的星载处理程序,则从机CPU2同样也对输入的数据进行运算,但不输出。由于主机与从机具有同样的数据输入来源,则在正常情况下,两者的计算结果应该是相同的。若主机出现故障,则ProASIC3按照图 2所示的流程进行重构。

图2 星载处理平台可重构策略流程图

当ProASIC3处理器判断主机出现故障时,由于从机也在执行相同的任务,因此主机可以不与从机进行任何形式的通信,只需要ProASIC3选择输出从机的计算结果即可。这种方式减少了主机与从机额外的通信开销,保障了主机在出现故障时,能够在一个控制周期内实现故障机的切换。如果此后从机又出现故障,则ProASIC3控制Cyclone V FPGA进行在线重构。如果在线重构后系统仍不能正常运行,则ProASIC3控制电源模块进行断电重启,以避免单粒子闩锁所导致电路电流过大的问题。如果断电重启仍无法使系统正常运行,在多次出现此故障后,ProASIC3将控制电源模块断电,等待地面的控制指令。对于该流程中所涉及到的在线重构、数据同步等技术的具体实现方式阐述如下。

3.2 在线重构

在线重构技术主要解决由单粒子翻转等辐射效应引起的瞬态故障,当Cyclone V FPGA处理系统出现故障时,ProASIC3发送重构指令,开始在线重构过程。

在线重构是对FPGA所有内置的逻辑单元LE(Logic Element)进行重配置的过程,FPGA的通用配置电路如图3所示,重构过程可以通过拉低配置引脚nCONFIG实现。

图3 在线重构配置电路

在需要进行在线重构时,ProASIC3必须使得nCONFIG管脚处于低电平至少500 ns以上。nCONFIG拉低时,FPGA器件被复位,同时也拉低nSTATUS和CONF_DONE引脚,此时FPGA所有的I/O管脚均处于三态状态。当nCONFIG返回到逻辑高电平并且由FPGA器件释放nSTATUS时,重构开始运行。当nCONFIG返回到逻辑高电平并且由FPGA器件释放nSTATUS时,重构开始运行。如果在重构过程中出现错误,FPGA将使nSTATUS信号置为低电平,表明数据帧错误。同时CONF_DONE信号也会保持低电平。通过ProASIC3监控nSTATUS错误时的低电平,当三次重构后依然报错,表明重构无法修复此故障,则需要断电重启。

3.3 系统同步

虽然通过重构策略提高了系统的可靠性,但是系统将面临如何实现各个模块之间协调工作的问题。在多机重构系统中,同步是整个系统的核心。数据的匹配或者表决都必须基于同步信号,否则匹配或表决就没有意义。

本系统采用任务级同步的方法,任务级同步技术使各处理器执行相同的计算,计算完成时进行同步比较。本系统的同步主要由以ProASIC3为主芯片的处理系统作为管理器来进行。每一周期内的一次输入和输出过程可以定义为一个任务。在每次控制周期内,随着系统的运行,ProASIC3按照如图 4所示的流程图进行数据的同步。

图4 任务级同步的实现方法

在每一周期开始时,ProASIC3启动定时器,接收各敏感器数据并发送给Cyclone V FPGA用于计算,随后ProASIC3循环等待Cyclone V FPGA中的双核处理器返回计算结果。如果在定时器定时结束之前,Cyclone V FPGA中的两个处理器均能正常返回结果,则等待定时器计时结束后进入下一个控制周期。如果出现有处理器未返回计算结果的情况,则按照图 2所示的策略进行相应的操作,并对系统状态进行记录。

4 系统测试验证与分析

最终集成的星载处理系统实物如图5所示。图中,中间的芯片即为基于SRAM架构的Cyclone V FPGA,下部的芯片为基于Flash架构的ProASIC3 FPGA,左上部分的芯片为双核处理器共享的Flash存储器。基于该星载处理系统硬件平台,针对各关键技术进行了实验测试与验证分析。

图5 星载处理系统实物图

4.1 在线重构技术测试

为了单纯对在线重构技术进行验证,设计了ProASIC3周期性地对Cyclone V FPGA进行重构的测试用例。在Cyclone V FPGA内部设计了时钟锁相环PLL,执行对输入时钟进行分频,并将结果输出至FPGA的外部接口上。通过示波器采集到的ProASIC3周期性地对Cyclone V FPGA进行重构的过程如图6所示。

图6 在线重构技术测试结果

图中有四组曲线A、B、C、D,其中A曲线为nCONFIG重构控制信号;B曲线为Cyclone V FPGA中PLL的输出信号;C曲线为配置芯片向Cyclone V FPGA传输重构数据的DATA信号;D曲线是表示重构完成的CONFIG_DONE信号。从图中可以看出ProASIC3周期性地对Cyclone V FPGA进行重构。nCONFIG信号平时为高电平,一旦被ProASIC3设置为低电平,首先Cyclone V FPGA中正常的PLL任务停止输出,同时CONFIG_DONE变低,表示开始进行在线重构。这里为了便于展示,低电平持续了约100 ms,而实际使用时低电平只需要大于500 ns即可。当nCONFIG信号又回到高电平后,配置芯片通过DATA引脚向Cyclone V FPGA传输重构数据,当配置数据传输完成后,Cyclone V FPGA的PLL继续正常输出时钟信号,完成了一次在线重构。经过约100 ms的时间后,nCONFIG信号再次被ProASIC3置低,进行下一次的在线重构。经过测试,所设计的星载处理系统能够正确地进行在线重构。

4.2 同步技术测试

本平台采用任务级的同步方式,ProASIC在每一个控制周期给Cyclone V FPGA提供同步脉冲,用于其中运算模块的同步运算。图7显示了ProASIC每隔固定周期给双核发出的脉冲信号。

图7 同步脉冲信号

在同步脉冲的协调下,Cyclone V FPGA通过串口返回的计算结果也基本上是同步的,如图8所示。

图8 同步输出的结果

图中,上下两条曲线分别为CPU1与CPU2各自串口的输出曲线。从图中可以看出,两者的计算结果输出相位差小于50 μs。考虑到卫星上的控制周期在毫秒量级,因此这样的相位差是完全可以被ProASIC所接受的。这说明所设计的同步机制是可行有效的。

4.3 在轨实际测试

本文所设计的星载处理系统已经在世界首颗12 U立方星“翱翔之星”上得到了应用。该卫星于2016年6月25日发射,运行于距地面约300 km的轨道高度。在轨运行期间,该星载处理系统运行稳定。图9显示了“翱翔之星”星载处理系统FPGA的工作情况。

图9 “翱翔之星”星载处理系统工作情况

由图中可以看出,FPGA的状态始终为0,表明FPGA在可测控弧段上均为正常,这说明在低轨的空间辐射对于FPGA的干扰影响较小。图10显示了星载处理系统的温度变化情况。

图10 “翱翔之星”星载处理系统温度变化情况

由图10可以看出,星载处理系统的温度均处于-10~25 ℃之间,温度比较适中。在整个卫星的生命周期内,星载处理系统运行稳定良好,证明了本设计方案的正确性和可行性。

5 结论

本文在对国内外微纳卫星星载计算机设计特点进行分析的基础上,提出了一种基于FPGA的立方星可重构星载处理系统。该系统采用基于SRAM型的FPGA作为核心处理模块,利用较少功耗获得较高的运算速度;同时采用基于Flash型的FPGA作为外部表决接口模块,对基于SRAM型的FPGA进行表决和控制。当基于SRAM型FPGA出现问题时,基于Flash型的FPGA能够对前者进行重构修复,从而提高了整个系统的可靠性。最终在硬件上的测试与在轨实测数据表明,本文所设计的立方星可重构星载处理系统是可靠和有效的,这对于今后设计适合于立方星使用的可重构处理系统提供了一些有益的参考。

猜你喜欢
低电平功耗重构
基于任务映射的暗硅芯片功耗预算方法
“双减”能否重构教育生态?
长城叙事的重构
高盐肥胖心肌重构防治有新策略
一种实用的电脑接口判断方法
2017款凯迪拉克2.8L/3.0L/3.2L/3.6L车型低电平参考电压总线电路图
用四维的理念重构当代诗歌
数字电子技术的应用
浅谈物理电路与数字电路
揭开GPU功耗的面纱