基于反熔丝FPGA、QSPI FLASH的高可靠程序存储、启动控制系统
1 涉及术语解释
1.1 三模冗余
三模冗余系统简称TMR(Triple Modular Redundancy),是最常用的一种容错设计技术.三个模块同时执行相同的操作,以多数相同的输出作为表决系统的正确输出,通常称为三取二.三个模块中只要不同时出现两个相同的错误,就能掩蔽掉故障模块的错误,保证系统正确的输出.由于三个模块是互相独立的,两个模块同时出现错误是极小概率事件,故可以大大提高系统的可信性。
1.2 Single-Event Upset,SEU
Single-Event Upset (SEU)是指单个空间高能带电粒子击中微电子器件灵敏部位后,由于电离作用产生额外电荷,使器件逻辑状态发生瞬态改变的现象。如果某个重要的程序,逻辑状况发生变化后,会对设备产生较大影响。由于三模冗余技术的简单性以及高可靠性,它是一个被广泛使用的针对于单粒子翻转(Single-Event Upset,SEU)现象的容错技术。
1.3 SRAM 、FLASH FPGA与反熔丝FPGA
从使用的角度进行说明,SRAM FPGA目前是市场主流,工艺简单,逻辑容量大,可重配置。每次断电后,程序消失,上电时需要重新从外部存储器进行加载。
反熔丝FPGA主要用于军工、航天等可靠性要求极高的场景,工艺复杂,逻辑容量小,可靠性极高,只能配置一次。
本文提到的三模冗余存储、烧录、加载控制系统,使用反熔丝FPGA作为主控完成。
1.4 QSPI FLASH
本文提到的处理器主系统使用QSPI接口 FLASH存储软件配置程序,进行写操作时必须先进行擦除,然后才能完成写入,且擦除的最小单位是一个扇区(sector),读出数据则没有大小限制。
本文的FLASH使用QSPI接口,该接口有4条数据线,1条使能线,1条时钟线,属于典型的高速串行同步通讯接口,速率较快。与之对应的有BPI接口,BPI接口属于并行数据接口,数据线与地址线分离,管脚数目庞大,正在逐渐被QSPI等串行接口取代。
2 三模冗余方案
某型号卫星观测相机使用了大容量的SRAM型FPGA作为主控器件,该FPGA程序需要存储在QSPI 接口的FLASH中,本文提到的处理器主系统即使用SRAM FPGA芯片。为了防止存储在QSPI接口FLASH中的bit数据发生SEU,引起SRAM FPGA的错误工作,同时进行在线更新,我们对FLASH内存储的数据、处理器主系统的程序加载进行三模冗余设计。

图 2‑1 三模冗余简化设计框图
l FLASH 0/1/2 :三片FLASH分别存储3份SRAM FPGA的软件配置项;
l UART :串口负责对反熔丝FPGA进行调试与状态监测、控制反熔丝FPGA对FLASH 0/1/2 进行程序烧录;
l Power :受反熔丝FPGA的控制,用于控制SRAM FPGA的上电、下电;
l 反熔丝FPGA:作为该系统的高可靠主控设备,负责执行UART收到的控制指令、执行FLASH的擦除、读写、执行SRAM FPGA的启动控制;
l 处理器主系统:是本发明要服务的设备。
系统上电后,反熔丝FPGA开始运行,代码内部的三个FLASH控制器首先通过读取FLASH器件的dummy值对FLASH的读写时序进行调节、校验,校验通过后再接收相同的读地址,并对应发出SPI读操作,FPGA读取三片FLASH存储单元中的数据,三份数据被数据比较模块两两异或,比较其内容的一致性,若存在数据错误,则用正确数据覆盖错误数据,并记录错误BIT信息,最后将统计到的错误数据输出。
在比较的过程中,如果检查到某片FLASH数据有错误,需要对其错误的扇区进行擦除,并写入正确的数据,那么这里就需要首先对正确的数据进行备份,反熔丝FPGA内部的SRAM资源十分有限,无法用作备份,因此使用FLASH 0 20MB地址处的64KB区域进行正确数据的备份。

图 2‑2 三模冗余校验过程
流程图提到的代码边界是指SRAM FPGA配置程序的边界,比如我们FLASH的大小实际是32MB,而SRAM FPGA的配置程序实际是6MB,那么对应的程序边界就是6MB,我们在进行三模冗余时,只需要对应的比较6MB的数据即可,可以大大的节约时间。
基于反熔丝FPGA、QSPI FLASH的高可靠程序存储、启动控制系统的更多相关文章
- S03_CH12_基于UDP的QSPI Flash bin文件网络烧写
		
S03_CH12_基于UDP的QSPI Flash bin文件网络烧写 12.1概述 为了满足不同的需求,本例程在"基于TCP的QSPI Flash bin文件网络烧写"上进行修改 ...
 - S03_CH11_基于TCP的QSPI Flash bin文件网络烧写
		
S03_CH11_基于TCP的QSPI Flash bin文件网络烧写 11.1概述 针对ZYNQ中使用QSPI BOOT的应用,将BOOT.bin文件烧写至QSPI Flash基本都是通过USB C ...
 - 【设计经验】3、ISE中烧录QSPI Flash以及配置mcs文件的加载速度与传输位宽
		
一.软件与硬件平台 软件平台: 操作系统:Windows 7 64-bit 开发套件:ISE14.7 硬件平台: FPGA型号:XC6SLX45-CSG324 QSPI Flash型号:W25Q128 ...
 - 【接口时序】5、QSPI Flash的原理与QSPI时序的Verilog实现
		
一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE 4.Matlab版本:Matlab2014b/ ...
 - 基于TMS320C6678、FPGA XC5VLX110T的6U CPCI 8路光纤信号处理卡
		
基于TMS320C6678.FPGA XC5VLX110T的6U CPCI 8路光纤信号处理卡 1.板卡概述 本板卡由我公司自主研发,基于CPCI架构,符合CPCI2.0标准,采用两片TI DSP T ...
 - 基于Raft深度优化,腾讯云金融级消息队列CMQ高可靠算法详解
		
背景介绍 分布式系统是指一组独立的计算机,通过网络协同工作的系统,客户端看来就如同单台机器在工作.随着互联网时代数据规模的爆发式增长,传统的单机系统在性能和可用性上已经无法胜任,分布式系统具有扩展性强 ...
 - 基于Xilinx Kintex-7 FPGA K7 XC7K325T PCIeX8 四路光纤卡
		
基于Xilinx Kintex-7 FPGA K7 XC7K325T PCIeX8 四路光纤卡 1. 板卡概述 板卡主芯片采用Xilinx公司的XC7K325T-2FFG900 FPGA,pin_ ...
 - ZYNQ FLASH+EMMC手动移植LINUX启动
		
前言 虽可使用Petalinux进行移植,简单方便,但为了更清楚明白的了解整个流程,还是尝试了一波手动移植. 参考资料 ZYNQ Linux 移植:包含petalinux移植和手动移植debian9 ...
 - Spark Streaming高吞吐、高可靠的一些优化
		
分享一些Spark Streaming在使用中关于高吞吐和高可靠的优化. 目录 1. 高吞吐的优化方式 1.1 更改序列化的方式 1.2 修改Receiver接受到的数据的存储级别 1.3 广播配置变 ...
 
随机推荐
- MongoDB_安装、配置、连接(五)
			
MongoDB 是跨平台的,既可以在 Linux系统下安装,也可以在Windows 系统.MacOS系统下安装,本节主要介绍如何在 Linux 系统下安装 MongoDB. windows安装:htt ...
 - linux 下安装minconda3
			
一.关于bashrc目录,此文件是隐藏的,如果要打开此文件需要用: vim /root/.bashrc 二.linux下关于防火墙的命令 1.查看防火墙状态 firewall-cmd --state ...
 - sqlserver - 判断字段是否是纯数字
			
PATINDEX('%[^0-9|.|-|+]%',w.waterMeterNo)=0 如 SELECT w.* FROM [dbo].[waterMeterInfo] w where isnull( ...
 - VC 2010 Express 学生版(中文版)
			
Microsoft Visual C++ 2010 Express 学生版 下载传送门(提取码:r7sm) 如何安装 拿到压缩文件后,解压到桌面(别怕,安装完后这个文件夹是可以删除的). 在 &quo ...
 - YBT 1633:【例 3】Sumdiv
			
http://ybt.ssoier.cn:8088/problem_show.php?pid=1633 A^B 快速幂求结果,所有约数和,可以通过组合来进行得到. 技巧,通过递归得到1~n次的和.su ...
 - C# 10分钟完成百度翻译(机器翻译)——入门篇
			
我们之前基于百度ai开发平台实现了人脸识别 [1].文字识别 [2].语音识别 [3] 与合成的入门和进阶,今天我们来实现百度翻译的实现. 随着"一带一路"政策的开展,各种项目迎接 ...
 - Jarvis OJ--PHPINFO
			
一道浙大的题目 题目地址:http://web.jarvisoj.com:32784 拿到这道题目, 是一道反序列化的题目,题目源码很简单,当创建OowoO()这个类的对象时,会自动调用__const ...
 - 【Java】泛型
			
文章目录 泛型 为什么要有泛型 在集合中使用泛型 如何自定义泛型结构 自定义泛型类.接口 泛型方法 泛型在继承方面的体现 通配符的使用 有限制条件的通配符的使用 泛型 为什么要有泛型 集合容器类在设计 ...
 - Json Schema 是什么?
			
本文地址:Json Schema 是什么? 简单说,Json Schema 其实就是一个标准的 Json 串,它以一个 Json 串来描述我们需要的数据规范,并且支持注释以及验证 Json 文档,即我 ...
 - 以太 ip tcp udp 三次握手的理解
			
以太帧: 1.前导码(7字节):使接收器建立比特同步. 2.起始定界符SFD(1字节):指示一帧的开始. 3.目的地址DA(6字节):指出要接收该帧的工作站. 4.源地址SA(6字节):指示发送该帧的 ...