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

2024-08-30 15:20
文章标签 fpga 在线 升级 思路 xilinx

本文主要是介绍Xilinx FPGA在线升级——升级思路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、绪论

网上很多文章都讲述了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)。最后对比这三个数据是否相等,仅有三个同时相等才认为升级成功。并且通过这种方式还可以判断升级过程中是哪些原因导致的升级失败。

这篇关于Xilinx FPGA在线升级——升级思路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1121194

相关文章

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

MySQL使用binlog2sql工具实现在线恢复数据功能

《MySQL使用binlog2sql工具实现在线恢复数据功能》binlog2sql是大众点评开源的一款用于解析MySQLbinlog的工具,根据不同选项,可以得到原始SQL、回滚SQL等,下面我们就来... 目录背景目标步骤准备工作恢复数据结果验证结论背景生产数据库执行 SQL 脚本,一般会经过正规的审批

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

JAVA利用顺序表实现“杨辉三角”的思路及代码示例

《JAVA利用顺序表实现“杨辉三角”的思路及代码示例》杨辉三角形是中国古代数学的杰出研究成果之一,是我国北宋数学家贾宪于1050年首先发现并使用的,:本文主要介绍JAVA利用顺序表实现杨辉三角的思... 目录一:“杨辉三角”题目链接二:题解代码:三:题解思路:总结一:“杨辉三角”题目链接题目链接:点击这里

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O