Xilinx FPGA在线升级——升级思路

news2024/9/28 1:24:22

一、绪论

网上很多文章都讲述了Xilinx FPGA在线升级即回退的优势,在这里仅简述一遍。优势在于可不拆机的情况下改变FPGA的功能,可进行产品迭代。回退的优势是避免升级过程中一些突发情况导致板卡成为废板。至少Golden里面包含了可进行升级的部分代码。

二、通信架构

在线升级架构

FPGA上电后,会从FLASH的0地址中根据模式进行读取配置数据,进而实现FPGA的加载启动。因此实现FPGA在线升级的本质就是FLASH的控制,为此有上图所示的通信架构。

PC为上位机,用来监控整个整机流程。FPGA内部的decode模块实现了对上位机的解码,并将控制命令传输到falsh_ctrl模块,falsh_ctrl模块则是实现了flash的所用控制功能。encode模块则是实现了升级状态的上传,用于上位机检测是否升级完成。

三、升级思路

1.整体思路

在线升级就是更改flash的内容,在对flash内容改写前需要对falsh进行擦除,因为falsh只能同1变成0,在擦除时是讲内存数据全部变成1。
然后就需要将升级数据从上位机写入到flash中,这部分是由你的通信方式决定,大部分时间会在这个阶段被浪费掉,因此通信速率决定了升级时间。我测试过使用UART进行升级,一个3M的升级文件大概需要仅半个小时。
为了验证数据正确被写入,还需要把写入的升级数据回读回来,与升级文件进行对比,只有回读的数据与写入的相同才认为升级成功。
综上,升级整体思路如下:

  1. 擦除flash
  2. 写入升级数据
  3. 回读升级数据,并与升级文件做对比

2. 传统的升级思路

该部分升级思路是按照整体升级思路进行升级。首先进行擦除,其次将升级数据写入到flash中,紧接着就是将升级数据在回读到上位机上,通过上位机与升级文件进行对比,从而判断升级是否成功。

3.改良版升级思路

该部分主要是为了降低升级的时间。传统的升级思路消耗的时间主要是在擦除过程、通信过程,还有就是文件对比过程。FPGA的速度肯定是比PC快的。把大部分时间用FPGA做可节省大量的时间。

  1. 从擦除过程中节省
    擦除分全擦除、block擦除等。可根据文件大小,只擦除指定的block块。

  2. 从通信速度上节省
    选择一个比较块的通信方式,如PCIE、GTX等。作者实测过使用UART升级一个3M多的文件大约需要半个小时。

  3. 校验方式进行改进
    传统的是将所有写入的数据再回读到上位机,并于升级文件做对比,这将消耗大量的通信时间以及对比时间。可在软件下发升级文件时先对升级文件做CRC校验(soft_crc),FPGA接收到升级文件后再对升级数据进行一次CRC校验(fpga_crc),在回读flash时再对flash数据进行CRC校验(flash_crc)。最后对比这三个数据是否相等,仅有三个同时相等才认为升级成功。并且通过这种方式还可以判断升级过程中是哪些原因导致的升级失败。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2088577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

错误提示:vcruntime140.dll丢失怎么办?有哪些办法可以将vcruntime140.dll修复

当你的应用程序突然崩溃或无法启动,并弹出一个含有“vcruntime140.dll缺失”错误提示的对话框时,这意味着你的系统中缺少一个关键的 DLL 文件。这种错误常见于安装了大量第三方软件和游戏的电脑上,尤其是在系统更新或软件卸载后。解决这一问题…

【node.js】基础之修改文件

node.js 基础(一) node.js是什么? 上面这句话的意思就是:Node.js 是一个开源的,跨平台的javascript运行环境。通俗的说就是一个应用程序或者说是一个软件,可以运行javascript。 Node.js的作用: 开发服务器应用。 将数…

移动端视频编辑SDK,智能识别,字幕自动生成

Vlog已成为人们分享生活、表达自我的重要方式,对于众多内容创作者而言,如何在视频中高效、精准地添加字幕,既提升观众体验,又节省宝贵时间,一直是一大挑战。美摄科技,作为视频编辑技术的先驱者,…

你知道吗?这些plm项目管理系统大厂项目经理都在用!

本文将盘点主流的plm项目管理系统,为企业选型提供参考 。 高效的plm项目管理系统是确保工程顺利进行、按时交付以及控制成本的关键,据美国建筑行业研究院的研究数据表明,实施高效项目管理的建筑企业,能够将项目成本降低 5%-10%。我…

【qt】qss使用

1.按钮设置颜色 ui->pushButton->setStyleSheet("QPushButton { color : red;}");也可以通过rgb来设置 ff表示红色拉满,gb为0当然是红色 这只是针对pushbutton对象的控件设置的,如果我想设置所有的按钮空间都是一个颜色 这是通过设置界…

关于OBI 在unity URP环境下使用的正确步骤

OBI在URP环境下使用的正确步骤 资料:OBI官方文档:Obi Physics for Unity - Big Picture 1、替换Shader 为 URP环境下: 2、渲染管线功能列表添加: ①.在Graphics配置中查找当前URP渲染管线 ②.添加Obi流体渲染功能项 ③、设URP环…

HMI触屏网关-VISION如何与Modbus RTU从机通信

上文:HMI触屏网关-VISION如何与Node-red数据双向通信-CSDN博客 1. 准备工作 1.1. 硬件接线 EG网关和Modbus RTU从机通信之前,必须保证接线正确。本次以温湿度传感器为例,该传感器采用的是485通信,具体接线为A接A,B接B 1.2. 串口…

LMDeploy 量化部署实践

一、环境配置见:https://github.com/InternLM/Tutorial/blob/camp3/docs/L2/LMDeploy/readme.md 验证LMDeploy启动InternLM2_5-7b-chat conda activate lmdeploy lmdeploy chat /root/models/internlm2_5-7b-chat二、量化显存计算 参数计算: LMDeploy …

解决vue中this.$set()不更新页面问题

问题汇总:解决vue中this.$set()不更新页面问题 this.$set()方法有一种情况,就是当你要设置的key已经存在于这个对象或数组中的时候,它只会更改data并不会为该key添加响应检测,所以解决这个问题的办法就是在设置值之前先把这个属性…

【Redis之一:下载安装Redis】

Redis下载与安装 一、下载 Redis 安装包1、 Windows 安装包下载 二、安装Redis1、 Windows 安装Redis 三、配置 Redis1、 Windows 中配置 Redis(1)配置访问密码(2)重启 Redis 服务 三、访问 Redis1、命令行访问 Redis(…

深度学习系列71:表格检测和识别

1. pdf处理 如果是可编辑的pdf格式,那么可以直接用pdfplumber进行处理: import pdfplumber import pandas as pdwith pdfplumber.open("中新科技:2015年年度报告摘要.PDF") as pdf:page pdf.pages[1] # 第一页的信息text pag…

深度学习项目实践——qq聊天机器人(transformer)(一)原理介绍

文章目录 首先第一步——QQ是如何实现实时聊天数据传输过程1. 用户发送消息的开始2. 数据封装与加密3. 建立连接:WebSocket协议的应用4. 消息的传输过程5. 接收者获取消息6. 双向通信与实时性保障7. 保持连接与断线重连 第二步——聊天机器人是如何来接管QQ账号的组…

什么牌子超声波清洗机好?家用超声波清洗机推荐

随着民众生活品质与幸福感的不断提升,诸如珠宝饰品、眼镜等精细物品成为了许多家庭中的常备之物。然而,这些小巧物件容易积累微尘并潜藏细菌,悄然威胁我们的健康安全。超声波清洗机应运而生,成为了解决这一隐患的理想方案&#xf…

快速了解Rust 的数据分析库Polars

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) 17.1.1 什么是Polars Polars是一个基于 Rust 的数据分析库,它的目标是提供一个高性能的数据分析工具,同时也…

自定义审批字段

一. 新增特性 1.路径:SPRO->物料管理->采购->采购订单->采购订单的下达过程->编辑特性 2.输入特征名Z_USRC2_PO点新建 二. 将特性分配给类 1.路径:SPRO->物料管理->采购->采购订单->采购订单的下达过程->编辑类 2.输入…

Windows上MSYS2的安装和使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、下载二、安装三、使用1.打开命令行2.搜索软件3.安装软件4.卸载软件5.更新环境6.其他四、MSYS2和Cygwin的差别总结前言 MSYS2这个工具我是越用越喜欢,很多东西放在Linux上如鱼得水但是放在…

ClkLog针对神策不支持全埋点的客户端实现用户访问基础统计分析

本文将介绍,ClkLog针对神策不支持全埋点的客户端实现用户访问基础统计分析 1。 客户遇到的问题 ClkLog的用户访问基础统计分析功能是基于神策SDK的全埋点来实现的。 我们遇到有些客户是使用C、C#等语言来开发的客户端,然而神策此类SDK(如C, C…

什么是代理IP_如何建立代理IP池?

什么是代理IP_如何建立代理IP池? 1. 概述1.1 什么是代理IP?1.2 代理IP的工作原理1.3 爬虫的应用场景1.3.1 搜索引擎,最大的爬虫1.3.2 数据采集,市场分析利器1.3.3 舆情监控,品牌营销手段1.3.4 价格监测,全网…

jetsonNano烧录Ubuntu20.04镜像使用ROS2

本来想要参考Jetson nano升级Ubuntu20.04来进行升级。 但是此过程也有大坑,我的目的是,除了升级Ubuntu20.04,在上面使用ROS2,我还希望我写的代码可以使用上Pytorch。 方式一(未成功) 按照上面的教程可以正…

Spring Bean加载耗时采集工具

功能介绍 Target:针对启动慢的 Spring 应用,找出 IOC 容器启动过程中,加载耗时较长的 Bean 对象进行治理。  实现原理 主要用到Spring本身提供的两个扩展接口:BeanPostProcessor ApplicationListener 这两个接口…