FPGA multiboot 方案

FPGA multiboot 方案

  • 初版方案

初版方案不需要软件参与,只是为了验证flash启动。当前已完成。

使用jtag 通过vivaod harwaremanager去将fpga bit流文件加载到demo板flash中。

具体操作:

  1. 约束添加for golden bitstream

# 设置电源参考,1.8v为GND,3.3v为VCC

roperty CFGBVS GND [current_design]

set_property CONFIG_VOLTAGE 1.8 [current_design]

# 设置spi模式,x1,x2,x4

set_property CONFIG_MODE SPIx4 [current_design]

## Compress the bitstream to fit on 128M QSPI

#设置bit压缩

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

#设置fpga cclk时钟频率最大66MHz

set_property BITSTREAM.CONFIG.CONFIGRATE 66 [current_design]

#BITSTREAM PROPERTIES REQUIRED FOR GOLDEN IMAGE:

# 设置spi位宽,和上面的语句要对应

set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]

set_property BITSTREAM.CONFIG.CONFIGFALLBACK ENABLE [current_design]

# 设置下一次bit加载的地址,当前flash为256Mb,取中间值

set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 0x01000000 [current_design]

 #This allows the Golden image to load upon power up rather than jumping to the multiboot #image in a multiboot setup.

set_property BITSTREAM.CONFIG.NEXT_CONFIG_REBOOT ENABLE [current_design]

# spi使用32bit address,默认24bit

set_property BITSTREAM.CONFIG.SPI_32BIT_ADDR YES [current_design]

# 设置spi配置超时时间

set_property BITSTREAM.CONFIG.TIMER_CFG 32'h0040000 [current_design]

#(If the SPI flash is equal to or greater than 256 Mb, uncomment the constraint below):

#set_property BITSTREAM.CONFIG.SPI_32BIT_ADDR YES [current_design]

  1. for update bitstream

# 设置电源参考,1.8v为GND,3.3v为VCC

set_property CFGBVS GND [current_design]

set_property CONFIG_VOLTAGE 1.8 [current_design]

# 设置spi模式,x1,x2,x4

set_property CONFIG_MODE SPIx4 [current_design]

## Compress the bitstream to fit on 128M QSPI

#Compress the bitstream

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

#BITSTREAM PROPERTIES REQUIRED FOR GOLDEN IMAGE:

set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]

set_property BITSTREAM.CONFIG.CONFIGFALLBACK ENABLE [current_design]

set_property BITSTREAM.CONFIG.SPI_32BIT_ADDR YES [current_design]

  1. 之后开始编译

生成bit文件;(注此处不需要额外的IO约束,每款FPGA spi pin脚通过jtag会自动识别)

  1. 生成mcs文件用于flash烧录

命令:

write_cfgmem -format mcs -interface SPIX4 -size 32 -loadbit "up 0 D:/multi_boot/bit_files/multi_boot_golden.bit up 0x1000000 D:/multi_boot/bit_files/multi_boot_update.bit" D:/multi_boot/bit_files/golden.mcs

上述命令中包含两个bit文件,以及最后生成得一个mcs文件,低0~0x1000_0000存放golden,高空间存放update bit。

  1. 使用hardware manager烧录mcs文件到flash中

这里选择正确得flash型号以及刚才生成得mcs文件导入,即可。

依据硬件所给的flash型号。

下一步点击ok,之后

把给定的mcs文件加入之后,烧录完成,fpga done信号拉高。

  1. 烧录完成后可以看到fpga program成功

Update bit被加载。

  1. 触发program_b(低有效)

或者将fpga 板卡断电之后。Done信号拉高,表示flash加载成功。

  1. 更改mcs文件高位地址内容

从新加载mcs文件之后发现加载得是golden bit内容。Multiboot出错回退验证成功。

  1. 关于vivado配置看门狗时间

查询ug470,ug570关于FPGA Configuration,有关于看门狗值计算方法,其中ug470在p149,ug570在p174分别有关于看门狗计数器的计算工作时钟的计算方法:

The Watchdog uses a divided version of a dedicated internal clock, CFGMCLK, which has a

nominal frequency of 65 MHz. The clock is predivided by 256, so that the Watchdog clock period is about 4,000 ns. Given the Watchdog counter is 30 bits wide, the maximum possible Watchdog value is about 4,230 seconds. The time value can be set via bitstream options.

看门狗时钟是一个250KHz,周期4000ns。该处设置为0x4_0000; 最大加载时间:1s左右。

  • 升级

使用上章方法,验证了multiboot方案可行。但是没有办法实现在线加载方式。

2.1 硬件

2.1.1 工程搭建

基本框图:

Host通过UART/pcie 等接口将待更新固件写入到flash中。之后内部MCU来控制flash文件的加载,在线更新fpga boot。

Block design

xadm--> spi IP.

Axi-quad-spi 详解

IP配置框图,当前配置模式为quad。当前不涉及xip启动。不使能performance mode,该mode下会将axi_lite变为axi_full。IP core内部框图。外部只支持一个slave,flash 设备厂商Micron。

IP核集成了IOBUF语句,将spi相关i,o,t均集成到IOBUF上。支持master,slave模式,我们例话为master模式。ext_spi_clk接100Mhz时钟在quad/dual模式下输出得sck为ext_spi_clk/2.配置中ratial固定,不可配。且在该模式下fifo深度固定为16.

支持startupe2 原语(后文解释)

Mode pin设置

M pin为fpga mode选择相关pin。

Mode pin在fpga中为固定位置,需要硬件同事直接配置,当前demo板为拨码开关。

M[2:0] == 3d’b001;

上图为program_b触发最小时间,必须大于250ns。低有效。

Startupe2 原语调用

因为需要用户手动操作flash。

外部存储器的时钟管脚一般与fpga的CCLK_0连接,当使用远程更新时,首先fpga内部有控制flash的驱动(即逻辑控制flash时序),当然flash时钟也需要控制了,但这时时钟管脚已经连接到CCLK_0,那该如何操作啊,你直接约束分配管脚试试,是通不过的

先进行startupe2 原语调用。必须使能startupe2原语(k7325t)

在内部使能了starupe2原语之后必须新增端口的IO约束。

为什么必须添加额外的timing约束:

1. startupe2 原语自带IO delay。作用到外部cclk pin。

2. ext_spi_clk 在dual/quad 模式下cclk输出的ratio比固定为2;

\

3. 外部sck驱动flash的data并不是按照上升沿驱动的。

4. 实际使用中从最后一级ff到sck pin上会有延迟

具体约束依据flash型号,fpga型号不同稍有区别。不在细述。(详见工程timing.xdc文件)

IO约束

添加顶层IO约束,SPI_IO*, PCIE_REF_CLK_P, CLK_IN,CLK_RST等。本例中使用到的IO均为特殊IO,需和硬件同事协商。不需要定义spi_cclk。

2.2 example示例

注:调用axi-quad-spi example示例时不能使能startupe2原语。

寄存器描述

复位

寄存器中的值根据不同的flash厂商,以及不同的用法会有些许区别。可查看flash手册。

擦除

2.3 硬件调试

Pcie link-up;

注:

  1. 调试时单bit文件推荐使用bin格式加载到flash中。
  2. 由于pcie link-up有时间要求,实际在host复位释放之后fpga应该在10ms内link-up;这样才会被建联。
  3. 单bit文件时不推荐加载multiboot相关的xdc约束;会导致上电复位之后找不到updaate

bit file位置。导致program卡死。识别不到pcie设备。flash加载不能带multiboot相关的xdc约束,当前我只有一个golden bit没有update bit。golden中带了multiboot相关的约束,host加载fpga子卡时不能识别到fpga pcie设备。

  1. 使用jtag调试加载完bin文件之后重启时应该把jtag盒子拔开。

对于u系或u+推荐使用Tandem configuration配置。这样可以先对pcie固件进行加载。

Mcs文件说明

关于mcs文件在multiboot中关键字的说明。

2.4 软件调试

软件参考

 Flash 型号参考手册:MT25QU256ABA1EW7.PDF

 参考文档 xapp586-spi-flash.pdf

 https://blog.csdn.net/2301_80127702/article/details/144824482

 参考文档 pg153-axi-quad-spi.pfg

 参考手册 xapp1280-us-post-cnfg-flash-startupe3.pdf

 Ug475_7series_pkg_pinout.pdf

 「教学」AXI Quad SPI 时序分析 - 杰哥的{运维,编程,调板子}小笔记

 https://adaptivesupport.amd.com/s/article/65171?language=en_US

 https://zhuanlan.zhihu.com/p/586346774

 参考文档 pg153-axi-quad-spi.pfg,ch2,register

 https://fpga.eetrend.com/content/2024/100584207.html

 https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/575209708/Axi-Quad+SPI

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot的启动原理?

大家好,我是锋哥。今天分享关于【SpringBoot的启动原理?】面试题。希望对大家有帮助; SpringBoot的启动原理? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring Boot的启动原理主要是通过 SpringApplication 类来…

aws训练快速入门教程

AWS 相关核心概念 简洁地介绍一下AWS训练云服务的核心关联概念: AWS核心服务层: 基础设施层: EC2(计算), S3(存储), RDS(数据库)等人工智能层: SageMaker(训练平台), AI服务等 机器学习服务分级: 高层: 预构建AI服务(开箱即用)中层: SageMaker(主要训练平台)底层: 框架和基…

(一)飞行器的姿态欧拉角, 欧拉旋转, 完全数学推导(基于坐标基的变换矩阵).(偏航角,俯仰角,横滚角)

(这篇写的全是基矢变换矩阵)不是坐标变换矩阵,坐标变换矩阵的话转置一下,之后会有推导. 是通过M转置变换到P撇点.

工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管…

在 Windows 系统下,将 FFmpeg 编译为 .so 文件

1. 准备环境 确保你的 Windows 系统已安装以下工具: Android Studio NDK(Native Development Kit) MSYS2(用于提供类 Unix 环境) FFmpeg 源码 Git Bash(可选,推荐使用) 安装 …

蓝桥杯备考---》分类讨论之Fixed Points

这道题的意思啊,就是说我们在数组里输入n个数,我们尽可能让下标和数组的值相同,我们只能交换一次,最多能有多少个值和下标一样 这里我们需要分类讨论,如果每个下标的值都符合要求,我们就不交换了 如果不是…

什么是数学建模?数学建模是将实际问题转化为数学问题

数学建模是将实际问题转化为数学问题,并通过数学工具进行分析、求解和验证的过程。 一、数学建模的基本流程 问题分析 • 明确目标:确定需要解决的核心问题。 • 简化现实:识别关键变量、忽略次要因素。 • 定义输入和输出:明确模…

Microchip AN1477中关于LLC数字补偿器的疑问

最近在学习Microchip的AN1477关于LLC的功率级传递函数推导及数字补偿器设计,对其中的2P2Z数字补偿器的系数有一些困惑。我在MATLAB中运行了源程序提供的VMC_LLC.m文件,发现有些地方和AN1477中的结果不一致。现在把相关有疑问的地方列举出来,也…

【软考-架构】8.4、信息化战略规划-CRO-SCM-应用集成-电子商务

✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 信息化战略体系💯考试真题第一题第二题 信息系统战略规划💯考试真题第一题第二题 ✨客户关系管理CRM供应链管理SCM💯考试真题第一题第二…

Excel处理控件Spire.XLS系列教程:C# 在 Excel 中添加或删除单元格边框

单元格边框是指在单元格或单元格区域周围添加的线条。它们可用于不同的目的,如分隔工作表中的部分、吸引读者注意重要的单元格或使工作表看起来更美观。本文将介绍如何使用 Spire.XLS for .NET 在 C# 中添加或删除 Excel 单元格边框。 安装 Spire.XLS for .NET E-…

【工具分享】vscode+deepseek的接入与使用

目录 第一章 前言 第二章 获取Deepseek APIKEY 2.1 登录与充值 2.2 创建API key 第三章 vscode接入deepseek并使用 3.1 vscode接入deepseek 3.2 vscode使用deepseek 第一章 前言 deepseek刚出来时有一段时间余额无法充值,导致小编没法给大家发完整的流程&…

Android之悬浮窗实现

文章目录 前言一、效果图二、实现步骤1.AndroidManifest权限以及service注册2.service代码3.activity实现 总结 前言 经常接触音视频以及直播的同学应该知道,悬浮窗是必备需求,今天就记录一下自己悬浮窗的视线过程,流程就是点击缩小按钮回到…

25.单例模式实现线程池

一、线程池的概念 1.1 线程池的介绍 线程池是一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅…

基于springboot的免税商品优选购物商城(020)

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势,免税商品优选购物商城当然也不能排除在外,随着购物商城的不断成熟,它彻底改变了过去传统的免税商品优选购物商城方式&…

RIP路由欺骗攻击与防御实验详解

一、基础网络配置 1. 路由器R1配置 interface GigabitEthernet0/0/0ip address 192.1.2.254 255.255.255.0 ! interface GigabitEthernet0/0/1ip address 192.1.3.254 255.255.255.0 ! router rip 1version 2network 192.1.2.0network 192.1.3.0 2. 路由器R2配置 interface…

整理和总结微信小程序的高频知识点

前言 近期萌生了一些想法,感觉可以做一个小程序作为产出。 但小程序做得比较少,因此边做边复习。整理和总结了一些高频知识点和大家一起分享。 一、模板和组件 1.1模板(Template) 优势 简单灵活:模板定义和使用都较…

如何检查CMS建站系统的插件是否安全?

检查好CMS建站系统的插件安全是确保网站安全的重要环节,对于常见的安全检查,大家可以利用以下几种有效的方法和工具,来帮你评估插件的安全性。 1. 检查插件来源和开发者信誉 选择可信来源:仅从官方插件库或可信的第三方开发者处…

RAG优化:利用python实现上下文感知(扩展)增强检索效果

检索增强生成(RAG)通过从外部知识源检索相关信息来增强AI的响应能力。传统的检索方法通常返回孤立的文本片段,这可能导致回答不完整。 为了解决这个问题,我们引入了基于上下文的检索方法,确保检索到的信息包含相邻的文本片段,以提高回答的连贯性。 通过结合重叠分块、上…

在 macOS Sequoia 15.2 中启用「三指拖动」并实现快速复制的完整指南 ✨

在 macOS Sequoia 15.2 中启用「三指拖动」并实现快速复制的完整指南 🍎✨ 适用系统:macOS Sequoia 版本15.2 及以上 一、功能简介 🌟 通过「三指拖动」手势,你可以轻松完成以下操作: • 移动文件/文本:直…

LeetCode 2614.对角线上的质数:遍历(质数判断)

【LetMeFly】2614.对角线上的质数:遍历(质数判断) 力扣题目链接:https://leetcode.cn/problems/prime-in-diagonal/ 给你一个下标从 0 开始的二维整数数组 nums 。 返回位于 nums 至少一条 对角线 上的最大 质数 。如果任一对角线上均不存在质数&…