一种基于动态部分重构的FPGA自修复控制器
1.FPGA动态部分重构技术
动态部分重构技术指在FPGA运行时,通过加载部分位流文件来修改FPGA可重构区域中的逻辑设计,修改过程中其余逻辑功能不受影响整个系统也能够持续运行。
下图为FPGA动态部分重构的基本原理图。通过下载A1.bit、A2.bit、A3.bit 或A4.bit 中任一位流文件,可以修改可重构区域A 中的逻辑功能。FPGA设计中的逻辑可分为静态逻辑和可重构逻辑,图中密集方格区域中的逻辑为静态逻辑,区域A中的逻辑为可重构逻辑。当系统加载部分位流文件时静态逻辑保持运行状态,而可重构逻辑由部分位流文件的配置信息代替。
FPGA动态部分重构技术可以通过有限的硬件资源实现FPGA内部逻辑的动态实时多路复用。
2.基干动态部分重构的FPGA自修复控制器设计
介绍一款基于AXI总线协议设计了FPGA自修复控制器,如下图所示。当接收到功能模块发出的故障自检测信号后,根据所需配置位流的大小和地址信息,通过DMA控制器生成对应的总线读控制信号送入处理器系统。经过处理器系统的接口协议转换后,DMA控制器读取外部配置存储器中指定地址和长度的配置位流并传输到内部的异步FIFO中,再经过配置接口控制器将配置信息传输到内部配置接口,完成对FPGA动态部分重构。
顶层电路如下图所示,其中FCi_Repair表示系统中功能模块FCi的故障自检测信号。
下表为自修复控制器与ICAP接口之间的通信信号,主要用于自修复控制器对ICAP接口的配置控制将配置信息写入ICAP接口并返回重构过程信号。
下表为自修复控制器与外部存储器通信的AXI总线读控制信号。
3.电路验证方案
上图为自修复控制器的电路验证实验方案图,将自修复控制器与ICAP接口、接口转换模块和外部配置存储器相连接手动触发系统功能模块FC3的故障自检测控制信号,通过用FPGA的内嵌逻辑分析仪ILA观察自修复控制器的位流配置过程。其中,自修复控制器工作时钟频率和ICAP接口时钟频率为100MHz采用DDR3芯片作为外部配置存储器进行实验。
4.电路结果
如图所示在ILA监测窗口的第500个监测点处捕获到功能模块FC3的故障自检测信号,290ns后,自修复控制器开始工作,地址控制有效信号arvalid被拉高有效,同时读控制信号arlen、arsize和地址信号araddr准备传输。10ns后arvalid 和 arready(低有效)同时被拉低,存储器等待接收地址/控制信号,rready拉高有效自修复控制器允许接收存储器配置数据。40ns后,自修复控制器拉高地址控制有效信号arvalid,开始向存储器发送配置位流的地址信号。在第550个监测点时存储器向自修复控制器发送读通道的有效信号rvalid,配置位流开始读入,经过自修复控制器内部32位的异步FIFO向ICAP接口传输。当cap_req信号拉高后,配置信息开始从异步FIFO传输到ICAP接口功能模块开始重构。图中可以看出从自修复信号触发到数据配置到ICAP接口,一共经历了59个时钟周期。
如上图所示在第717个监测点时,自修复控制器和存储器完成一次握手,开始向存储器传输地址信号,持续900ns后读信号的最后一次传输标记rlast被拉高,存储器向自修复控制器输送地址段对应的数据流,直到第973个监测点时,一个地址段的数据传输完成,开始传输下一地址段数据。由arlen和arsize可以看出每个地址段传输一共读了两次数据,每次读了255个字节的数据,历时256个时钟周期共2560ns,可以计算出100M工作频率下,重构速度约为200bit/ms。
上图所示在第492个监测点时ready和rvalid信号同时拉低,自修复控制器不再发送地址和读控制信号,也不再向ICAP接口传输配置信息。80ns后自修复控制器拉低cap_reqg 信号重构自修复完成。
5.性能分析
5.1可靠性
评价系统可靠性的定量测度称为可靠度,可靠度指系统在t时刻正常工作的条件下,在时间区间[t0,t]内能正常工作的概率常用 R(t)表示。若一个模块的失效率为常数λ,则它的可靠度为
R(t)=e-λt
对于一个可维修的系统,它的平均寿命可以用系统的平均无故障间隔时间TMTBF(mean time between failures,MTBF)来表示[即可靠度R(t)的均值表达式如下:
对于一个不可维修的系统,它的平均寿命可以用系统的平均无故障运行时间MTTF(mean time to failures,MTTF)来表示,MTTF和MTBF表达式完全相同,只是针对不同类型系统的可靠性表达方式。
采用本文自修复控制器的系统与故障自检测电路的设计方式相关,当系统采用时间余自检测电路时,该自修复控制器可靠性与回读刷新及定时刷新相同,设刷新可修复率为μ,则配置刷新的可靠性可以表示为
可以计算出三模余的可靠性为
以失效率λ=1x10-6/h刷新可修复率为μ∈[0,1]为例绘制如下图所示的可靠性MTTF/MTBF对比分析图。由图可知,配置刷新法的可靠性MTBF都随μ增大而快速提升且始终高于三模冗余。
5.2硬件资源消耗
以32位流水线乘法器功能为例分别对三模冗余、回读刷新、定时刷新和采用自修复控制器的配置刷新进行硬件资源消耗对比。如下表所示,采用自修复控制器的配置刷新资源消耗是定时刷新法的2.94倍,较三模冗余法减少了12.76%,较回读刷新法减少了34.79%。
5.3时间消耗分析
设系统的工作时钟周期为Tclk,重构时钟周期为Treclk部分配置位流的大小为Nbit(字节)则本文应用系统的故障修复时间为5Tclk+58Treclk+(Nbit/200)μs,物理实验中取Tclk =50MHz,Treclk =100MHz。基于zynq7020系SOC芯片其中最小重构单元即一帧位流的大小为Nbit =37381个字节,全局位流大小为151484个字节,可以计算出一次故障修复时间约为190.84μs。下表为一次故障的修复时间对比分析表,可见在配置刷新中,基于动态部分重构的配置刷新最快只需要191μs,实验中较回读刷新法减少了92.17%,较定时刷新法减少了84.07%。
相关文章:
一种基于动态部分重构的FPGA自修复控制器
1.FPGA动态部分重构技术 动态部分重构技术指在FPGA运行时,通过加载部分位流文件来修改FPGA可重构区域中的逻辑设计,修改过程中其余逻辑功能不受影响整个系统也能够持续运行。 下图为FPGA动态部分重构的基本原理图。通过下载A1.bit、A2.bit、A3.bit 或A4.…...
MarkItDown的使用(将Word、Excel、PDF等转换为Markdown格式)
MarkItDown的使用(将Word、Excel、PDF等转换为Markdown格式) 本文目录: 零、时光宝盒🌻 一、简介 二、安装 三、使用方法 3.1、使用命令行形式 3.2、用 Python 调用 四、总结 五、参考资料 零、时光宝盒🌻 &a…...
【Vim Masterclass 笔记01】Section 1:Course Overview + Section 2:Vim Quickstart
文章目录 Section 1:Course Introduction 课程概述S01L01 Course Overview 课程简介课程概要 S01L02 Course Download 课程资源下载S01L03 What Vim Is and Why You Should Learn It 何为 Vim?学来干啥?1 何为 Vim2 为何学 Vim Section 2&…...
BLE core 内容整理解释
本文内容比较杂散,只是做记录使用,后续会整理的有条理些 link layer 基本介绍 **Link Layer Control(链路层控制)**是蓝牙低功耗(BLE)协议栈的核心部分,负责实现设备间可靠、安全、低功耗的数…...
import org.springframework.data.jpa.repository.JpaRepository<T, ID>;
org.springframework.data.jpa.repository.JpaRepository<T, ID> 接口中的 ID 类型参数。 理解 JpaRepository<T, ID> 中的 T 和 ID: T (Type): T 代表的是你想要操作的 实体类 的类型。例如,如果你有一个名为 User 的实体类,那…...
抽象工厂设计模式的理解和实践
在软件开发中,设计模式是前人通过大量实践总结出的、可复用的、解决特定问题的设计方案。它们为我们提供了一种标准化的解决方案,使得代码更加简洁、灵活和易于维护。在众多设计模式中,抽象工厂模式(Abstract Factory Pattern&…...
RuntimeError: CUDA error: initialization
RuntimeError: CUDA error: initialization cuda初始化出问题了,这是因为在python多线程跑gpu代码程序时先对cuda进行操作,然后在跑gpu代码时就没有cuda可用了。 在main的主程序代码加一行代码就可以了,用来获取cuda,在代码中只能…...
可信数据空间建设及应用参考指南(V1.0)
为贯彻国家数据局《可信数据空间发展行动计划(2024-2028 年)》,促进可信数据空间持续、快速和健康发展,相关行业专家组织编写《可信数据空间建设及应用参考指南(V1.0)》(以下简称《参考指南》&a…...
目标检测文献阅读-YOLO:统一的实时目标检测(12.23-12.29)
目录 摘要 Abstract 1 引言 2 统一的检测 3 网络设计 4 训练 5 YOLOv5训练猫狗识别模型 5.1 项目代码整体结构介绍 5.2 数据集和预训练权重的准备 5.3 训练猫狗识别模型 5.3.1 修改数据配置文件 5.3.2 修改模型配置文件 5.3.3 训练模型 5.3.4 启用tensorbord查看…...
埃斯顿机器人程序案例多个点位使用变量
多个点位使用变量取放...
JVM实战—4.JVM垃圾回收器的原理和调优
大纲 1.JVM的新生代垃圾回收器ParNew如何工作 2.JVM老年代垃圾回收器CMS是如何工作的 3.线上部署系统时如何设置垃圾回收相关参数 4.新生代垃圾回收参数如何优化 5.老年代的垃圾回收参数如何优化 6.问题汇总 1.JVM的新生代垃圾回收器ParNew如何工作 (1)JVM的核心运行原理…...
【项目日记(8)】第三层:页缓存的具体实现(下)
目录 前言1. 地址空间上的内存使用情况2. 页缓存合并内存的代码实现3. 总结以及对代码的拓展 前言 请先看完上一篇文章页缓存的具体实现(上) 1. 地址空间上的内存使用情况 在地址空间中,一共是4GB大小的空间,地址从0000 0000到FFFF FFFF。 第0页的起始地址是0 第…...
算法题(19):多数元素
审题: 数组不为空且一定存在众数。需要返回众数的数值 思路: 方法一:哈希映射 先用哈希映射去存储对应数据出现的次数,然后遍历找到众数并输出 当然也可以在第一次映射的过程中就维护一个出现次数最多的数据,这样子就可…...
==、equals、hashcode
和equals区别 用于基本数据类型,比较的是值,用于引用类型,比较的是对象的内存地址。java中只有值传递,因此对于引用类型,实际比较的引用的内存地址的值。equals不能用来判断基本数据类型,只能判断引用数据…...
《优势谈判》——阅读笔记
投入 思想准备:一个谈判是要双赢的,至少需要让对手这么认为;进行一场谈判,需要看到对面是否真的愿意和你谈判 谈判技巧 永远不要接受首次报份;如果对方临时变更了要求,则可以通过立刻要求对方做补偿等方…...
mybatis-plus 用法总结
MyBatis-Plus(简称 MP)是 MyBatis 的增强工具,旨在简化开发者的 CRUD 操作。它在 MyBatis 的基础上提供了更多的功能和便利性,如代码生成器、分页插件、性能分析插件等,使开发者能够更高效地进行数据库操作。MyBatis-P…...
华为开源自研AI框架昇思MindSpore应用案例:ICNet用于实时的语义分割
ICNet用于实时的语义分割 ICNet 被广泛应用于实时的语义分割领域。它在处理图像数据时,能够以较高的效率进行语义分割操作,为相关领域的研究和实际应用提供了有力的支持。ICNet 的实时性使其在众多场景中都具有很大的优势,例如在视频处理、自…...
CAN201 Introduction to Networking(计算机网络)Pt.2 传输层
文章目录 3. Transport Layer(传输层)3.1 Multiplexing and demultiplexing(多路复用和多路分解)3.2 Connectionless transport:UDP3.3 Principles of reliable data transfer3.4 Pipelined communication3.5 TCP: con…...
HashMap
一、什么是 基于哈希表的数据结构允许以O(1)的时间复杂度进行元素的插入,查询和删除 二、底层结构 1.数据结构 在1.8以后,数组链表红黑树 数组:HashMap底层是一个数组,每个数组元素存放一个链表或红黑树(在JDK 1.…...
JavaScript甘特图 dhtmlx-gantt
背景 需求是在后台中,需要用甘特图去展示管理任务相关视图,并且不用依赖vue,兼容JavaScript原生开发。最终使用dhtmlx-gantt,一个半开源的库,基础功能免费,更多功能付费。 甘特图需求如图: 调…...
基于无线传感器网络的无线光照强度采集系统(附详细使用教程+完整代码+原理图+完整课设报告)
🎊项目专栏:【Zigbee课程设计系列文章】(附详细使用教程完整代码原理图完整课设报告) 前言 👑由于无线传感器网络(也即是Zigbee)作为🌐物联网工程的一门必修专业课,具有…...
单元测试中创建多个线程测试 ThreadLocal
单元测试中创建多个线程测试 ThreadLocal 在单元测试中,可以通过以下方式创建多个线程来测试 ThreadLocal 的行为。 目标 验证 ThreadLocal 在多线程环境下是否能正确隔离每个线程的数据。 实现步骤 定义需要测试的类 包含 ThreadLocal 对象的类,提供…...
【 Sonarqube】可视化Java项目单元测试覆盖率统计框架搭建
一、项目背景: 一个小公司的朋友反应他们那边Java项目单元测试有,但还没有可视化统计覆盖率数据,没法统计就不能直观的看到单测的覆盖率,Java的覆盖率统计框架还是比较成熟,部署起来也不是很难,下面我们逐…...
安装CentOS(新手教程超详细)
安装CentOS 1. 安装虚拟机 1.1下载虚拟机软件 VMware(VMware by Broadcom - Cloud Computing for the Enterprise) 我们使用的是VMware Workstation VirtualBox(Downloads – Oracle VirtualBox) 如果使用的是Windows系统,下载带for Windows hosts的版本 1.2…...
一起来看--红黑树
【欢迎关注编码小哥,学习更多实用的编程方法和技巧】 红黑树是一种自平衡的二叉搜索树,广泛应用于计算机科学中,尤其是在实现关联数组和集合时。它的设计旨在确保在最坏情况下,基本动态集合操作(如插入、删除和查找&am…...
【Hackthebox 中英 Write-Up】通过 POST 请求绕过前端限制:基于 Cookie 的认证与数据提取实操指南
Bypassing Frontend Restrictions with POST Requests: A Practical Guide to Cookie-Based Authentication and Data Extraction 通过 POST 请求绕过前端限制 Objective | 目标 The purpose of this exercise is to understand how POST requests work and how to authentica…...
comctl32.dll没有被指定在window运行怎么解决?
一、文件丢失问题:comctl32.dll没有被指定在Windows上运行怎么解决? comctl32.dll是Windows操作系统中的一个重要组件,它负责提供用户界面元素,如按钮、对话框和列表视图等。当系统提示“comctl32.dll没有被指定在Windows上运行”…...
EC-Final 2024游记
长篇流水账预警 Day -? 某天上乒乓课时看到懋神群里了我们队问有时间打ec吗,才知道我们最终还是进ec了,也成为了我们学校唯一一支没有金牌的ec队伍,然而此时整个队伍板子都扔了,一个多月没做过题,我脑子就…...
我的Opencv
1.安装Opencv pip install opencv-python 2.读取图像 3.写图像 4. 显示图像 5.waitKey() 6.读视频并播放视频 7.写视频 8. 获取摄像头视频 9.色彩转换 # BGR to GRAY imgGRAY cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # BGR to RGB imgRGB cv2.cvtColor(img, cv2.COLOR_…...
Pandas-缺失数据处理
文章目录 一. 简介1. 缺失数据简介2. NaN简介① 查看NaN,NAN,nan② 两个NaN也不相等③ isnull/isna方法④ notnull/notna 二. 加载缺失值1. 来源2. 加载数据,不包含默认缺失值3.加载数据,手动指定缺失值 三.处理缺失值1. 加载数据…...
windows编译llama.cpp GPU版本
Build 指南 https://github.com/ggerganov/llama.cpp/blob/master/docs/build.md 一、Prerequire 具体步骤(以及遇到的坑): 如果你要使用CUDA,请确保已安装。 1.安装 最新的 cmake, git, anaconda, pip 配置pyt…...
绝美的数据处理图-三坐标轴-散点图-堆叠图-数据可视化图
clc clear close all %% 读取数据 load(MyColor.mat) %读取颜色包for iloop 1:25 %提取工作表数据data0(iloop) {readtable(data.xlsx,sheet,iloop)}; end%% 解析数据 countzeros(23,14); for iloop 1:25index(iloop) { cell2mat(table2array(data0{1,iloop}(1,1)))};data(i…...
计算机网络500题2024-2025学年度第一学期复习题库(选择、判断、填空)
一、单选题 1、( )是实现两个同种网络互连的设备 A. 网桥 B. 网关 C. 集线器 D. 路由器 2、10M以太网有三种接口标准,其中10BASE-T采用( ) A. 双绞线 B. 粗同轴电缆 C. 细同轴电缆 D. 光纤 3、HDLC是哪…...
python学opencv|读取图像(二十二)使用cv2.polylines()绘制多边形
【1】引言 前序学习进程中,已经掌握了使用pythonopencv绘制线段、矩形和圆形的基本操作,相关链接包括且不限于: python学opencv|读取图像(十八)使用cv2.line创造线段-CSDN博客 python学opencv|读取图像(…...
skywalking配置项indexReplicasNumber不生效问题
indexReplicasNumber: 的配置原来是 indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}, 修改为 indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:1} 但从es查询索引显示的副本数还是0,删除es中的数据,重启sk…...
2024年终回顾
前言 很久没有更新博客,因为工作内容主要是内场开发,后来有点和互联网脱轨,断断续续上来看一下。这个总结应该也很简单,涉及以下的几个内容进行逐一说明 一、就业问题 这个问题可能很尖锐,从大环境来说,去…...
【深度学习】卷积网络代码实战ResNet
ResNet (Residual Network) 是由微软研究院的何凯明等人在2015年提出的一种深度卷积神经网络结构。ResNet的设计目标是解决深层网络训练中的梯度消失和梯度爆炸问题,进一步提高网络的表现。下面是一个ResNet模型实现,使用PyTorch框架来展示如何实现基本的…...
算法基础一:冒泡排序
一、冒泡排序 1、定义 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。 …...
第 29 章 - ES 源码篇 - 网络 IO 模型及其实现概述
前言 本文介绍了 ES 使用的网络模型,并介绍 transport,http 接收、响应请求的代码入口。 网络 IO 模型 Node 在初始化的时候,会创建网络模块。网络模块会加载 Netty4Plugin plugin。 而后由 Netty4Plugin 创建对应的 transports࿰…...
工作流引擎之Flowable
一、概述 Flowable是一个使用Java编写的轻量级业务流程引擎,专为处理复杂业务流程而设计。作为业务流程管理(BPM)领域的重要工具,Flowable不仅支持BPMN 2.0标准的流程定义,还提供了丰富的API接口和可视化工具…...
学习threejs,THREE.CircleGeometry 二维平面圆形几何体
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.CircleGeometry 圆形…...
网络编程UDP—socket实现(C++)
网络编程UDP—socket实现 前言UDP客户端和服务端UDP使用场景UDP socket C代码示例服务端接收数据示例(bindrecvfrom 阻塞式接收信息):bind 绑定-监听 函数为什么一般都是监听所有网络接口呢?为什么需要用inet_addr进行转换&#x…...
个人用途虚拟机VM 17安装Ubuntu 16.04.5 图解
1.安装环境软件准备工作 1)下载 免费版VMware Pro 17 https://softwareupdate.vmware.com/cds/vmw-desktop/ws/17.6.1/24319023/windows/core/VMware-workstation-17.6.1-24319023.exe.tar 2)Ubuntu 16.04.5 LTS 64位 64-bit PC (AMD64) desktop imag…...
音视频入门基础:MPEG2-TS专题(23)——通过FFprobe显示TS流每个packet的信息
音视频入门基础:MPEG2-TS专题系列文章: 音视频入门基础:MPEG2-TS专题(1)——MPEG2-TS官方文档下载 音视频入门基础:MPEG2-TS专题(2)——使用FFmpeg命令生成ts文件 音视频入门基础…...
安卓project级别build.gradle和主module的build.gradle
以穿山甲为例讲解 如下图 gradle和gradle插件对应关系 Android Gradle 插件 8.7 版本说明 | Android Studio | Android Developers gradle对应在项目里的配置为 gradle插件对应的位置为...
【Qt】多元素控件:QListWidget、QTableWidget、QTreeWidget
目录 QListWidget 核心属性: 核心方法: 核心信号: 例子: QListWidgetItem QTableWidget 核心方法: 核心信号 QTableWidgetItem 例子: QTreeWidget 核心方法: 核心信号:…...
服务器nfs文件共享
1. 配置 NFS 服务器(NFS Server) 在 Ubuntu/Debian 上: sudo apt update sudo apt install nfs-kernel-server在 CentOS/RHEL 上: sudo yum install nfs-utils1.2 创建共享目录 选择一个要共享的目录,并确保该目录的权限正确设置。例如,假设我们要共享 /srv/nfs 目录…...
【hackmyvm】soul靶机wp
tags: HMVrbash绕过图片隐写PHP配置解析 1. 基本信息^toc 文章目录 1. 基本信息^toc2. 信息收集3. 图片解密3.1. 爆破用户名3.2. 绕过rbash3.3. 提权检测 4. 获取webshell4.1. 修改php配置 5. www-data提权gabriel6. gabriel提取到Peter7. Peter提权root 靶机链接 https://ha…...
安装winserver2008R2虚拟机步骤
一、服务器系统介绍 1.1什么是服务器? 服务器英文名称为“Server”,指的是网络环境下为客户机(Client)提供某种服务的专用计算机,服务器安装有网络操作系统(如Windows 2000 Server、Linux、Unix等)和各种服务器应用系统软件(如Web服务、电子…...
跟着 8.6k Star 的开源数据库,搞 RAG!
过去 9 年里,HelloGitHub 月刊累计收录了 3000 多个开源项目。然而,随着项目数量的增加,不少用户反馈:“搜索功能不好用,找不到想要的项目!” 这让我意识到,仅仅收录项目是不够的,还…...