基于反熔丝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 广播配置变 ...
随机推荐
- python安装第三方库的步骤
windows下举例:1.下载openpyxl,http://pypi.doubanio.com/simple/openpyxl/2.将下载后的文件解压放到Python文件夹下的Lib文件夹下3.cm ...
- 新建koa2项目
1.npm install -g koa-generator 2.koa2 项目名称,如果需要ejs引擎koa2 -e 项目名称 3.cd 项目名称 4.npm install 5.npm insta ...
- Centos 6.8安装配置KVM
一.开启cpu虚拟化 首先开启CPU虚拟化支持,通过BIOS设置.之后输入 [root@hostname ~]#egrep '(vmx|svm)' /prov/cpuinfo 如果有输出内容,代表cp ...
- VsCode安装与配置
一.安装 二.配置 开启emmet完整的语法 文件-首选项-设置:Emmet: Trigger Expansion On Tab 三.常用插件 必装: Chinese (Simplified) Lan ...
- openlayers素材网站
1.教程网站 http://weilin.me/ol3-primer/ch05/05-03.html 2.特效气象图 https://earth.nullschool.net/zh-cn/#curre ...
- 蓝桥杯ALGO-1003
问题描述 JiaoShou在爱琳大陆的旅行完毕,即将回家,为了纪念这次旅行,他决定带回一些礼物给好朋友. 在走出了怪物森林以后,JiaoShou看到了排成一排的N个石子. 这些石子很漂亮,JiaoSh ...
- [MAUI] 在.NET MAUI中结合Vue实现混合开发
在MAUI微软的官方方案是使用Blazor开发,但是当前市场大多数的Web项目使用Vue,React等技术构建,如果我们没法绕过已经积累的技术,用Blazor重写整个项目并不现实. Vue是当前流 ...
- 《剑指offer》面试题12. 矩阵中的路径
问题描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么该 ...
- IDEA设置Maven
1,在idea中设置maven,让idea和maven结合使用 idea中内置了maven,一般不使用内置,因为用内置修改maven的设置不方便 使用自己安装的maven,需要覆盖idea中默认的设置 ...
- python函数关键字实参传参
#!/usr/bin/python #coding=utf-8 #好好学习,天天向上 def describe_pet(type,name): print(f"i have a {type} ...