SRAM型FPGA空间应用的抗单粒子翻转

news/2024/11/25 17:37:41/

1   SRAM型FPGA内部结构

        目前,SRAM 型 FPGA 在星载电子产品中应用较多的是Xilinx公司的FPGA。

图1所示为Xilinx系列FPGA器件的内部结构。从图中可以看出,FPGA内部由3 部分组成,分别为:

1)用于实现用户逻辑的可编程阵列(Configurable Logic Block,CLB);

2)用于存储用户数据的左右两列存储器(Block RAM,BRAM);

3)输入/输出模块(I/O Block,IOB)。CLB 中包含有查找表 LUT、进位逻辑和触发器等元件。其中用户逻辑的配置信息存储在 CLB 的存储单元中,该信息如果发生错误,则直接影响到用户逻辑功能。该 FPGA 器件内部的配置存储单元、触发器、LUT、Block RAM、Half Latch都可能发生SEU错误,其中配置存储单元中发生的SEU百分占比最大。

图1 Virtex系列FPGA内部结构示意图

2  SRAM型FPGA的抗单粒子翻转设计方法

       2、1   FPGA内部逻辑的三模冗余设计(TMR

        硬件冗余设计技术是一种有效解决单粒子翻转问题的手段,可以将FPGA器件作为冗余的对象或者对FPGA内部逻辑实施三模冗余设计,设计原理如图2所示。若星载电子产品采用多片FPGA的冗余设计方法,则需要增加额外的FPGA仲裁电路,会增加印制板的面积,增大设备的体积、重量和功耗。若采用FPGA内部逻辑的三模冗余设计,即通过片内的多数表决器对 FPGA 输出信号进行表决输出,则可以有效减缓SEU的影响。

图2 三模冗余设计的原理框图

          虽然TMR能够提高FPGA可靠性,但是也会降低经过布局布线后的最大时钟速度,增加FPGA的资源使用量,增大芯片功耗。如果FPGA逻辑设计本身就很复杂,则TMR设计后所带来的资源和功耗往往是系统设计所无法容忍的。因此在具体设计时,可针对部分关键逻辑和电路进行TMR 加固设计。在具体实现中,TMR 可以使用Synplify工具进行设置,选择关键寄存器进行冗余设计

       2、2   FPGA重配置技术

        PGA重配置技术是一种对可编程FPGA的局部或者全部逻辑资源进行重配置的设计方法。该方法不需要额外的FPGA,只需要外部1路脉冲指令即可实现FPGA配置信息的重新加载,控制及实现简单。但是由于重配置过程中FPGA不能正常工作,会引起系统的功能中断。尤其对于使用大容量SRAM型FPGA的星载计算机来说,其配置时间需要持续几十甚至几百ms,系统是无法容忍的。

       2、3   FPGA自动刷新技术

         FPGA 自动刷新是指周期性地对配置信息进行刷新,无论是否发生单粒子翻转,均对FPGA配置区进行配置数据回写操作。刷新过程无须中断用户的功能。对于 Xilinx 系列的 FPGA,在线刷新CLB/IO/DSP/CLK 区域,虽然不会引起功能中断,但是需要额外的外部刷新控制电路的支持,实现刷新的控制时序。对于使用大容量 SRAM 型 FPGA的星载计算机来说,FPGA每次刷新的时间相对较长,使得实时性不高,若工作轨道的空间环境恶劣,则有可能无法及时纠正FPGA发生的单粒子翻转,从而对计算机的稳定运行造成一定的影响。

       2、4   FPGA回读和刷新技术

         对 FPGA 配置单元中的信息实时地进行回读和刷新也是一种有效的抗单粒子翻转的设计方法。

         回读是将FPGA配置存储器中的所有数据读出的过程,可以用来校验当前的配置信息,同时也可以读出 FPGA 寄存器的当前状态和基于 LUT 的RAM与块状RAM中的当前数据。刷新是指将正确的配置信息回写入FPGA相应的配置单元中。Xilinx系列的FPGA支持以帧(每帧大小为41×32 bit)为单位的回读与刷新操作。与自动刷新不同,回读和刷新是指在运行过程中通过对回读的 FPGA 配置数据进行比对或者以某种校验算法进行检错,检验配置数据的正确性,仅在发现错误时进行回写,即刷新操作,因此能够减少FPGA刷新的次数,更加高效和有针对性地对故障进行恢复。

         目前,Xilinx 系列 FPGA 配置访问接口包括JTAG、SelectMap 以及 ICAP 三种。其中,JTAG和SelectMap为外部访问接口,即外部设备通过这两种接口实现对目标FPGA的配置刷新和回读。JTAG接口是串行接口,速度较慢;SelectMap接口是并行接口,速度较快。SelectMap 接口提供了与 Virtex-4配置逻辑之间的一个8 bit/32 bit双向数据总线接口,既可以用于配置,也可以用于回读。ICAP接口为内部访问接口,通过该接口可以访问 FPGA 的配置存储器,实现对自身的故障诊断和检测。Virtex-4系列FPGA三种接口的最大数据带宽如表1所示。

表1 Virtex系列FPGA配置模式

1)JTAG接口

         通过 JTAG 接口可对 FPGA 内部的 CLB、BRAM以及IOB进行加载、回读和重配置,一般用于FPGA的在线调试和测试。

2)SelectMap接口

         SelectMap 接口有两种配置模式:主动模式仅支持8 bit数据位宽,被动模式下可选择8 bit位宽或32 bit位宽。SelectMap接口将FPGA的配置信息分为若干帧进行传输,每帧大小为 41word(即41×32 bit=1312 bit)。

3)ICAP接口

         ICAP接口能够利用FPGA中内嵌的控制器直接对配置数据进行重配置操作。

         经过分析,采用SelectMAP 接口和用户自定义的纠错检错方式实现FPGA的回读和动态刷新的优点是实现简单,较为可靠。为降低电路结构的复杂程度,可以无须存储rbb文件和msk文件,通过周期性地以帧为单位对FPGA进行回读、用户自定义的纠错检错和刷新操作,电路上仅需一片反熔丝FPGA 和配套 PROM 芯片(PROM 芯片个数根据FPGA 容量确定)。对于校验后检测到故障的配置帧,通过反熔丝FPGA控制SelectMAP接口对该帧进行数据刷新,及将回读校验后不满足用户自定义校验条件的配置数据从PROM配置信息中重新加载。

         SRAM 型 FPGA 的刷新控制电路可以使用外部的反熔丝FPGA或者ASIC来实现,若采用抗辐射等级高的元器件,则具有较高的可靠性。该方法能够对所有配置数据进行定期的回读和纠错检错,在刷新期间不影响FPGA和系统的正常工作;支持以帧为单位的回读、纠错检错和刷新操作,具有SEU的快速诊断和快速故障恢复能力,从而可以有效降低FPGA因受到SEU影响而发生故障的概率。

         在实际应用中,需要根据空间运行环境(预估SEU的发生概率和发生频率)、FPGA配置数据的容量等,合理选择和设置FPGA的配置时钟,在满足元器件频率降额的前提下,满足系统对于FPGA整片刷新的时间要求,使得 SEU 故障能够被及时纠正,不会引起故障的累积和扩散。

       2、5   FPGA局部动态可重构及恢复技术

         基于 FPGA 的局部动态可重构技术是指在一定的控制逻辑的驱动下,不仅能实现系统的高速动态重配置,而且还能实现系统的局部逻辑电路重配置。基于局部动态可重构的故障恢复技术是指从模块角度进行故障恢复。当 DMR/TMR 模块检测到故障后,SE_Controller读取相应故障模块的配置比特,在系统运行时进行故障恢复,速度较快,而且不影响系统运行。

       Xilinx FPGA有4种动态可重构设计流程,包括基于比特流的动态可重构设计流程、基于模块化的动态可重构设计流程、基于差异的动态可重构设计流程和基于EAPR(Early Access Partial Reconfiguration)方法的动态可重构设计流程。

       2、6   其他FPGA容错设计措施

         在FPGA设计中,还有其他的一些容错设计措施,举例如下:

1)状态机编码技术

对关键状态机的状态信息采用编码技术,防止状态机由于单粒子翻转导致的状态跑飞和锁死现象,以提高可靠性。

2)FPGA内部RAM模块的EDAC处理

对FPGA内部的Block RAM,采用EDAC技术对其进行“纠一检二”校验,以提高Block RAM的单粒子效应防护能力

3  工作流程

配置刷新控制用的FPGA以实现对目标FPGA的流程控制,具体步骤如下:

step1:配置刷新控制用的FPGA复位完成后,检测由上位机输出至目标 FPGA 的“配置有效标志信号”,若该信号为1,则表示配置有效,立即启动Virtex系列FPGA的SelectMAP接口方式配置,进入step2;若200 ms后,该信号仍为低电平(无效状态),则自主启动SelectMAP接口方式配置,进入step2;期间保持双向信号INIT为输出状态,且输出低电平,表示FPGA维持在等待配置状态;同时保持复位信号处于有效状态。

step2:实现对 SelectMAP 接口方式配置,配置期间保持复位信号有效,然后进入step3。

step3:等待FPGA输出Done信号(配置完成)上升沿,若发现上升沿,则表示配置完成,进入step4;若计数器已达到预定上限值还未采集到Done信号上升沿,则认为发生配置故障,进入step8。

step4:继续保持FPGA的复位有效20~30 ms,然后释放复位信号,进入step5。

step5:检测由上位机输出至目标FPGA的“重构有效标志信号”,若信号为1,则表示重构有效,立即启动 SelectMAP 接口方式重构操作,进入step6;否则判断“刷新有效标志信号”,若该信号为1,则代表刷新有效,立即启动SelectMAP接口方式回读、纠检错和刷新操作,进入step8;否则保持在step5中。

step6:进行 SelectMAP 接口有效性检测,若发生接口的单粒子功能中断(SEFI),则进入step12,否则进入step7。

step7:实现对SelectMAP接口方式重构操作,并同时保持重构模块的复位信号有效,期间不对主模块进行复位处理;重构完成后20~30 ms释放重构模块的复位信号,之后进入step5。

step8:进行 SelectMAP 接口有效性检测,若发生接口的单粒子功能中断,则进入 step8,否则进入step9。

step9:实现对SelectMAP接口方式配置数据回读操作,并同时进行CRC16检验码的计算;回读配置数据完成后,验证检验码,若发生纠检错的错误,则进入step10;未发生,则进入step11。

step10:实现对SelectMAP接口方式配置数据的刷新操作,完成后进入step11。

step11:判断是否到达配置数据地址的最后值,若到达则进入step5,否则配置数据地址加1 后,进入step9。

step12:建立故障标志,向上位机输出故障标志后,进入step13。

step13:等待上位机发出的重配置指令,若采集到“配置有效标志信号”输出上升沿,清除故障标志;且立即启动SelectMAP接口方式配置,进入step2;否则保持在step13中。

外部控制器实现的配置、回读、纠检错、刷新和局部可重构流程如图3所示。

3 FPGA工作流程图

                                    

首先反熔丝FPGA从并加载SRAM型FPGA,并且启动喂狗信号一直喂狗,并且反熔丝FPGA拉高RDWR_B信号,定时回读SRAM型FPGA的当前程序状态,SRAM型FPGA的回读校验采用按帧编码校验的方式。在回读过程中,对出错的帧进行记录和数传。当SRAM型FPGA的回读校验都完成以后,进行错误判决。首先如果检测出状态错误,并且收到看门狗复位信号SRAM型FPGA,重新加载。

  1. SelectMAP模式
    1. 加载时序

参考UG470---40页

 

    1. 回读时序

在ISE中bit流生成时勾选以下三个选项,将会生成rbd(回读)文件和msd(掩码)文件,

在ucf文件中添加如下约束,确保SELECTMAP32接口在配置完后仍然保持:
CONFIGCONFIG_MODE = S_SELECTMAP32 + READBACK;

回读过程中,将回读的32bit内容依次与存储在片外PROM中的rbd文件比较,注意其中msd文件中为1对应的rbd中的bit位不需要比较。如果比较结果除不需要比较的bit位以外其他都一致,则比较结果正确,否则判断发生故障。回读比较可以用来检测FPGA的配置区域逻辑是否发生单粒子翻转。


http://www.ppmy.cn/news/1192477.html

相关文章

基于SSM的在校学习网站设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

diffusers-Tasks

https://huggingface.co/docs/diffusers/using-diffusers/unconditional_image_generationhttps://huggingface.co/docs/diffusers/using-diffusers/unconditional_image_generation1.Unconditional image generation 无条件图像生成是一个相对简单的任务。模型仅生成图像&…

竞赛选题 深度学习实现行人重识别 - python opencv yolo Reid

文章目录 0 前言1 课题背景2 效果展示3 行人检测4 行人重识别5 其他工具6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习的行人重识别算法研究与实现 ** 该项目较为新颖,适合作为竞赛课题方向&#xff0c…

在Linux上通过NTLM认证连接到AD服务器(未完结)

这篇文章目前还没有实现具体的功能,只实现了明文登录,因为我缺少一些数据,比如通过密码生成hash,以及通过challenge生成response,我不知道怎么实现,因此这篇文章也是一个交流的文章,希望大佬看见…

Android 虚拟导航栏默认在底部(navigationBar)

Android 虚拟导航栏默认在底部(navigationBar) 最近有接到将设备的虚拟导航栏默认固定在底部的项目需求,具体修改参照如下: /frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.java int navigationBarP…

【Python语言速回顾】——爬虫基础知识

目录 一、爬虫概述 1、准备工作 2、爬虫类型 3、爬虫原理 二、爬虫三大库 1、Requests库 2、BeautifulSoup库 3、Lxml库 一、爬虫概述 爬虫又称网络机器人,可以代替人工从互联网中采集、整理数据。常见的网络爬虫主要有百度公司的Baiduspider、360公司的36…

水库大坝可视化智能远程监管方案,助力安全监测智能巡检

一、背景需求 水库大坝作为防洪度汛的重要设施,其安全问题直接关系到人民群众的生命财产安全。因此,必须加强对大坝水库的安全管理,对水库除险加固和运行管护要消除存量隐患,实现常态化管理,同时要配套完善重点小型水…

java--this关键字

1.this是什么 this就是一个变量,可以用在方法中,来拿到当前对象(这个this就相当于你的车钥匙,当你在把车停到了车库,然后你发现找不到你的车的时候,就会按一下车钥匙,让你的车叫一下,你就会晓得…