基于反熔丝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 广播配置变 ...
随机推荐
- linux 下安装minconda3
一.关于bashrc目录,此文件是隐藏的,如果要打开此文件需要用: vim /root/.bashrc 二.linux下关于防火墙的命令 1.查看防火墙状态 firewall-cmd --state ...
- Linux上天之路(七)之Vim编辑器
vim 是 "vimsual interface IMproved"的简称,它可以执行输出.删除.查找.替换.块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他 ...
- 获取js代码运行的时间
console.time('yue') //代码部分 console.timeEnd('yue')
- Spring系列1:Spring基本概念
本文内容 什么是Spring? 为什么学Spring? 本系列包含哪些技术? 本系列适合哪些人? 什么是Spring? 基本概念 Spring 框架为现代基于 Java 的企业应用程序提供了一个全面的 ...
- 《设计模式面试小炒》策略和工厂模式替代业务场景中复杂的ifelse
<设计模式面试小炒>策略和工厂模式替代业务场景中复杂的ifelse 我是肥哥,一名不专业的面试官! 我是囧囧,一名积极找工作的小菜鸟! 囧囧表示:小白面试最怕的就是面试官问的知识点太笼统, ...
- 字节一面:事务还没提交的时候,redolog 能不能被持久化到磁盘呢?
又是被自己菜醒的一天,总结面经看到这题目听都没听过,打开百度就像吃饭一样自然 老规矩,背诵版在文末.点击阅读原文可以直达我收录整理的各大厂面试真题 首先,咱需要明白的是,啥是持久化? 听起来高大上,换 ...
- Android学习笔记3
(5)练习做一个实现两个数相乘的APP ①.java代码: //MainActivity.java package com.example.hello; import android.content. ...
- 神坑!为什么prometheus的pushgateway不能对上报的counter进行累加?
部署了一个prometheus的pushgateway,然后两次对其发送counter类型的数据: #第一次发送 curl -X POST -d '# TYPE my_first_metric_ahf ...
- 元编程 (meta-programming)
元编程 (meta-programming) 术语 meta:英语前缀词根,来源于希腊文.中国大陆一般翻译成"元". 在逻辑学中,可以理解为:关于X的更高层次,同时,这个更高层次的 ...
- jsp加载css失效的解决方法
问题: 有时候大家修改了css文件里的样式,但是刷新浏览器,利用工具看样式的时候,发现样式根本没加载或者说没更新, 其实这出现的问题就是缓存的问题 解决: 如何避免发生这种事,其实很简单,只需要每次请 ...