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

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.mfbz.cn/a/113734.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】MVCC机制(undo log,read view)

文章目录 前言一. 预备知识二. 模拟MVCC三. Read View四. RC与RR的本质区别结束语 前言 MVCC(多版本并发控制)是一种用来解决读-写冲突的无锁并发控制 MVCC为事务分配单向增长的事务ID,为每个修改保存一个版本,版本与事物ID相关联…

74X138元件怎么找——错误解决方法

1.在做74X138的时候根据课本,无法在现有的库中找到74X138,搜索了老师发的库中,都是集成库打不开,那我该怎么办? 根据这个课本P343,(即机械工业出版社,刘超,包建荣,俞优姝…

CTF-Reverse---VM虚拟机逆向[HGAME 2023 week4]vm题目复现【详解】

文章目录 前言0x1[HGAME 2023 week4]vm提取汇编指令mov指令push指令&pop指令运算操作cmp指令jmp指令je 和 jne exp 前言 没有前言。终于搞定第二题了。费劲是真的费。 题目在nssctf上有。 这一题写完才看到有提示,是关于构建结构体的,下次试试。 0x…

1360. 日期之间隔几天

1360. 日期之间隔几天 Java代码: 【DateFormat】DateFormat用于实现日期的格式化 import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; // 好像已过时class Solution {public int daysBet…

vue3+ts 提取公共方法

因为好多页面都会使用到这个效验规则,封装一个校检规则,方便维护 封装前 封装后

【机器学习】四、计算学习理论

1 基础知识 计算学习理论(computational learning theory):关于通过“计算”来进行“学习”的理论,即关于机器学习的理论基础,其目的是分析学习任务的困难本质,为学习算法体统理论保证,并根据结…

frp-内网穿透部署-ubuntu22服务器-windows server-详细教程

文章目录 1.下载frp2.Ubuntu修改root用户3.配置服务器3.1.配置frps.ini文件3.2.设置服务文件3.3.设置开机自启和服务操作3.4.后台验证3.5.服务器重启 4.配置本地window4.1.frpc配置4.2.添加开机计划启动4.3.控制台启动隐藏窗口 5.centos防火墙和端口5.1.开放端口5.2.查看端口 6…

【电路笔记】-相量图和相量代数

相量图和相量代数 文章目录 相量图和相量代数1、概述2、相量图3、相量代数3.1 加减3.2 差异化与整合 4、总结 1、概述 交流电信号可以用三种不同的方法来表示,以便表征和实现代数运算。 前面的文章中已经介绍了两种方法,本文稍后将介绍一种新的图形方法…

Pytorch 注意力机制解析与代码实现

目录 什么是注意力机制1、SENet的实现2、CBAM的实现3、ECA的实现4、CA的实现 什么是注意力机制 注意力机制是深度学习常用的一个小技巧,它有多种多样的实现形式,尽管实现方式多样,但是每一种注意力机制的实现的核心都是类似的,就…

【计算机网络】(谢希仁第八版)第一章课后习题答案

1.计算机网络可以向用户提供哪些服务? 答:例如音频,视频,游戏等,但本质是提供连通性和共享这两个功能。 连通性:计算机网络使上网用户之间可以交换信息,好像这些用户的计算机都可以彼此直接连…

036-第三代软件开发-系统时间设置

第三代软件开发-系统时间设置 文章目录 第三代软件开发-系统时间设置项目介绍系统时间设置演示效果QML 实现小伙伴自创 TumblerQt 家 Tumbler C 端实现 总结一下 关键字: Qt、 Qml、 Time、 时间、 系统 项目介绍 欢迎来到我们的 QML & C 项目!…

【VPX630】青翼 基于KU115 FPGA+C6678 DSP的6U VPX通用超宽带实时信号处理平台

板卡概述 VPX630是一款基于6U VPX总线架构的高速信号处理平台,该平台采用一片Xilinx的Kintex UltraScale系列FPGA(XCKU115)作为主处理器,完成复杂的数据采集、回放以及实时信号处理算法。采用一片带有ARM内核的高性能嵌入式处理器…

Nginx负载均衡 以及Linux前后端项目部署

一、Nginx简介 Nginx是一款高性能的开源Web服务器和反向代理服务器。它由俄罗斯的程序设计师Igor Sysoev创建,旨在解决传统Web服务器的性能限制问题。 Nginx采用事件驱动的架构和异步非阻塞的处理方式,使其能够处理大量并发连接,并具备良好…

【分享】winterm ssh登录报错Unkown error

非软文哈,实测Winterm非常好用,唯一的障碍是 某些特定服务器ssh登录报错Unkown error 后经github issue得知,关闭会话设置-ssh选项卡中的 尝试键盘交互认证的勾即可。 https://github.com/kingToolbox/WindTerm/issues/1922

二叉树题目:在二叉树中增加一行

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:在二叉树中增加一行 出处:623. 在二叉树中增加一行 难度 5 级 题目描述 要求 给定一个二叉树的根结…

Vue 数据绑定 和 数据渲染

目录 一、Vue快速入门 1.简介 : 2.MVVM : 3.准备工作 : 二、数据绑定 1.实例 : 2.验证 : 三、数据渲染 1.单向渲染 : 2.双向渲染 : 一、Vue快速入门 1.简介 : (1) Vue[/vju/],是Vue.js的简称,是一个前端框架,常用于构建前端用户…

C++二分查找算法的应用:俄罗斯套娃信封问题

本文涉及的基础知识点 二分查找 题目 给你一个二维整数数组 envelopes ,其中 envelopes[i] [wi, hi] ,表示第 i 个信封的宽度和高度。 当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗…

assert断言与const修饰指针的妙用(模拟实现strcpy函数)

assert断言 目录 assert断言的妙用: 头文件: 使用方法: const修饰指针的妙用 主要用法 const在*左边 const在*右边 断言和const修饰指针的应用 模拟实现C语言strcpy函数 1、若字符串str1,str2有空指针怎么办? 2.str2改变…

【Unity实战】最全面的库存系统(一)

文章目录 先来看看最终效果前言定义物品定义人物背包物品插槽数据拾取物品物品堆叠绘制UI移动拖拽物品选中物品跟随鼠标移动背包物品交换物品拆分物品物品堆叠完结先来看看最终效果 前言 它又来了,库存系统我前面其实一句做过很多次了,但是这次的与以往的不太一样,这个将是…

微信小程序:两层循环的练习,两层循环显示循环图片大图(大图显示、多层循环)

效果 代码分析 外层循环 外层循环的框架 <view wx:for"{{info}}" wx:key"index"></view> wx:for"{{info}}"&#xff1a;这里wx:for指令用于指定要遍历的数据源&#xff0c;即info数组。当遍历开始时&#xff0c;会依次将数组中的每…
最新文章