Xilinx 7Series\UltraScale 在线升级FLASH STARTUPE2和STARTUPE3使用

一、FPGA 在线升级

FPGA 在线升级FLASH时,一般是通过逻辑生成SPI接口操作FLASH,当然也可以通过其他SOC经FPGA操作FLASH,那么FPGA就要实现在启动后对FLASH的控制。

对于7Series FPGA,只有CCLK是专用引脚,SPI接口均为普通IO可直接通过约束解决,CCLK产生需通过STARTUPE2产生。

对于UltraScale 及UltraScale+系列,所有FLASH配置引脚(包含CCLK和SPI)均为专用引脚,在bit运行时需通过STARTUPE3产生。

二、STARTUPE2

  参考Xilinx ug470,STARTUPE2接口框图如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对SPI设置为X1,STARTUPE2例程如下:

   STARTUPE2 #(.PROG_USR("FALSE"),             // Activate program event security feature. Requires encrypted bitstreams..SIM_CCLK_FREQ(0.0)             // Set the Configuration Clock Frequency(ns) for simulation.)STARTUPE2_spi (.CFGCLK(),                        // 1-bit output: Configuration main clock output.CFGMCLK(     ),                  // 1-bit output: Configuration internal oscillator clock output.EOS(),                           // 1-bit output: Active high output signal indicating the End Of Startup..PREQ(),                          // 1-bit output: PROGRAM request to fabric output.CLK(1'b0),                       // 1-bit input: User start-up clock input.GSR(1'b0),                       // 1-bit input: Global Set/Reset input (GSR cannot be used for the port name).GTS(1'b0),                       // 1-bit input: Global 3-state input (GTS cannot be used for the port name).KEYCLEARB(1'b1),                 // 1-bit input: Clear AES Decrypter Key input from Battery-Backed RAM (BBRAM).PACK(1'b1),                      // 1-bit input: PROGRAM acknowledge input.USRCCLKO(i_SPI1_CLK),            // 1-bit input: User CCLK input.USRCCLKTS(1'b0),                 // 1-bit input: User CCLK 3-state enable input.USRDONEO(1'b1),                  // 1-bit input: User DONE pin output control.USRDONETS(1'b1)                  // 1-bit input: User DONE 3-state enable output);assign o_QSPI_flash_MOSI = i_SPI1_MOSI;
assign o_QSPI_flash_CSB  = i_SPI1_CSB;
assing o_SPI1_MISO       = i_QSPI_flash_MISO;

其中:
(1)o_QSPI_flash_MOSI、o_QSPI_flash_CSB、i_QSPI_flash_MISO、o_QSPI_flash_SCLK为连接到FLASH的信号,i_SPI1_MOSI、i_SPI1_CSB、o_SPI1_MISO、i_SPI1_CLK为FPGA内部产生或其他SOC产生的配置FLASH SPI信号,FPGA通过STARTUPE2 和逻辑完成这些信号和FLASH的连接;

(2)STARTUPE2 中USRCCLKO为输入,USRCCLKTS为三态控制信号,当USRCCLKTS=0,时USRCCLKO输出到CCLK,用于配置FLASH,因CCLK为专用管脚,故代码中不需要CCLK的描述;

(3)USRDONETS的控制与USRCCLKTS类似,USRDONETS=0,USRDONEO直接输出到FPGA的配置DONE引脚

(4)CFGCLK为输出的配置时钟,FPGA可用该时钟产生SPI逻辑,也可用其他时钟信号

三、STARTUPE3

  参考Xilinx ug570,STARTUPE3接口框图如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对SPI设置为X1,STARTUPE3例程如下:

wire [3:0] QSPI_in_null;STARTUPE3 #(.PROG_USR("FALSE"),  // Activate program event security feature. Requires encrypted bitstreams..SIM_CCLK_FREQ(0.0)  // Set the Configuration Clock Frequency (ns) for simulation.)STARTUPE3_inst (.CFGCLK(),                                                   // 1-bit output: Configuration main clock output..CFGMCLK(),                                                  // 1-bit output: Configuration internal oscillator clock output..DI({QSPI_in_null[3:2],i_QSPI_flash_MISO,QSPI_in_null[0]}),  // 4-bit output: Allow receiving on the D input pin..EOS (),                                                     // 1-bit output: Active-High output signal indicating the End Of Startup..PREQ(),                                                     // 1-bit output: PROGRAM request to fabric output..DO({3'b111,o_QSPI_flash_MOSI}),                             // 4-bit input: Allows control of the D pin output..DTS(4'b0010),                                               // 4-bit input: Allows tristate of the D pin..FCSBO(o_QSPI_flash_CSB),                                    // 1-bit input: Controls the FCS_B pin for flash access..FCSBTS(1'b0),                                               // 1-bit input: Tristate the FCS_B pin..GSR(1'b0),                                                  // 1-bit input: Global Set/Reset input (GSR cannot be used for the port)..GTS(1'b0),                                                  // 1-bit input: Global 3-state input (GTS cannot be used for the port name)..KEYCLEARB(1'b1    ),                                        // 1-bit input: Clear AES Decrypter Key input from Battery-Backed RAM (BBRAM)..PACK(1'b1),                                                 // 1-bit input: PROGRAM acknowledge input..USRCCLKO(o_QSPI_flash_SCLK),                                // 1-bit input: User CCLK input..USRCCLKTS(1'b0),                                            // 1-bit input: User CCLK 3-state enable input..USRDONEO(1'b1),                                             // 1-bit input: User DONE pin output control..USRDONETS(1'b1)                                             // 1-bit input: User DONE 3-state enable output.);

其中:
(1)o_QSPI_flash_MOSI、o_QSPI_flash_CSB、i_QSPI_flash_MISO、o_QSPI_flash_SCLK为FPGA内部产生或其他SOC产生的配置FLASH SPI信号,FPGA通过STARTUPE3 和逻辑完成这些信号和FLASH的连接,应CCLK和SPI均为专用管脚,故代码中不需要CCLK的描述;

(2)STARTUPE3 中USRCCLKO为输入,USRCCLKTS为三态控制信号,当USRCCLKTS=0,时USRCCLKO输出到CCLK,用于配置FLASH

(3)DO为FPGA输出到FLASH的QSPI 数据信号,例程采用了SPIx1,仅D0 MOSI有效,D3 D2设置为1,falsh WP_B和HOLD_B信号无效;

(4)DI为FLASH输入到FPGA的QSPI 数据信号,例程采用了SPIx1,仅D1 MISO有效;

(5)DTS为数据信号方向,例程采用了SPIx1,所以D0为MOSI,D1为MISO,其他为WP和HOLD信号,所以DTS设置为4’b0010

(4)FCSBO为FPGA输出到FLASH的FCSBO信号,FCSBTS=0表示由FPGA逻辑输出o_QSPI_flash_CSB到FLASH的CSB

(5)DTS为数据信号方向,例程采用了SPIx1,所以D0为MOSI,D1为MISO,其他为WP和HOLD信号,所以DTS设置为4’b0010

(6)USRDONETS的控制与USRCCLKTS类似,USRDONETS=0,USRDONEO直接输出到FPGA的配置DONE引脚

(7)CFGCLK为输出的配置时钟,FPGA可用该时钟产生SPI逻辑,也可用其他时钟信号

STARTUPE3有许多三态控制,如下图所示,当三态控制信号为0时,信号按下图中反向传输,为1是反向。
在这里插入图片描述

参考文件

ug570-ultrascale-configuration
ug470-ultrascale-configuration

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

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

相关文章

Azure 应用服务中的异常处理、日志记录和通知:综合指南

简介 Azure 应用服务是基于云的应用程序,使开发人员能够在云上构建、部署和管理应用程序。与任何应用程序一样,制定适当的异常处理、日志记录和通知实践至关重要,以确保应用程序平稳运行,并快速识别和解决任何问题。在本篇博文中&…

Java 应用如何实现 HTTPS:加密数据传输的实用指南

Java 应用如何实现 HTTPS:加密数据传输的实用指南 在当今的互联网环境中,数据安全至关重要,HTTPS 作为加密的数据传输协议,为 Java 应用提供了安全通信的保障。本文将深入探讨 Java 应用如何实现 HTTPS,通过详细代码实…

域名与DNS详解

域名与DNS详解 一、核心概念 域名(Domain Name) 定义:人类可读的网络地址标识(如 www.google.com)作用:替代复杂IP地址(类似"手机通讯录"功能) DNS(Domain …

c++20引入的三路比较操作符<=>

目录 一、简介 二、三向比较的返回类型 2.1 std::strong_ordering 2.2 std::weak_ordering 2.3 std::partial_ordering 三、对基础类型的支持 四、自动生成的比较运算符函数 4.1 std::rel_ops的作用 4.2 使用<> 五、兼容他旧代码 一、简介 c20引入了三路比较操…

计算机网络相关面试题

一、HTTP1.1和HTTP2的区别 HTTP/1&#xff08;主要指 HTTP/1.1&#xff09;和 HTTP/2 是 Web 协议发展中的两个重要版本&#xff0c;二者在性能、协议机制和功能特性上有显著差异。以下从多个维度对比分析&#xff0c;并结合具体案例说明&#xff1a; 一、连接与请求处理方式 1…

图论算法精解(Java 实现):从基础到高频面试题

一、图的基础表示方法 1.1 邻接矩阵&#xff08;Adjacency Matrix&#xff09; 邻接矩阵是表示图的一种直观方式&#xff0c;它使用一个二维数组来存储节点之间的连接关系。对于一个有 n 个节点的图&#xff0c;邻接矩阵是一个 nn 的矩阵&#xff0c;其中 matrix [i][j] 表示…

江科大TIM定时器hal库实现

定时器相关hal库函数 hal库的定时器函数相比于标准库&#xff0c;多了很多的中断回调函数&#xff0c;同时对于定时器的初始化也改成使用句柄一次性顺带连带DMA等功能一起初始化了 typedef struct {uint32_t Prescaler; /*定时器的预分频值*/uint32_t CounterMode; …

CentOS 10:启动telnet服务

参考&#xff0c; 鳥哥私房菜 - 第七章、網路安全與主機基本防護&#xff1a;限制埠口, 網路升級與 SELinux 7.3.3 埠口与服务的启动/关闭及开机时状态设定 我们知道系统的 Telnet 服务通常是以 super daemon 来控管的&#xff0c;请您启动您系统的 telnet 试看看。 1 要启动 …

Taro 安全区域

目录 一、问题描述 二、问题解决 1、顶部刘海区 2、底部小黑条 一、问题描述 安全区域主要是为了避免刘海屏或底部栏遮挡&#xff0c;而造成的不良显示效果。 本次将针对以下两点进行考量&#xff1a; 1、顶部刘海屏区 2、苹果X底部小黑条 二、问题解决 通过Taro.getS…

【Java微服务组件】分布式协调P1-数据共享中心简单设计与实现

欢迎来到啾啾的博客&#x1f431;。 记录学习点滴。分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604;。 目录 引言设计一个共享数据中心选择数据模型键值对设计 数据可靠性设计持久化快照 &#xff08…

在SpringBoot项目中,使用单元测试@Test

1.引入依赖 <!--单元测试Test的依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>3.2.1</version> </dependency> 2.在src/test/java目录…

在Java中,将Object对象转换为具体实体类对象

在Java中&#xff0c;将Object对象转换为具体实体类对象可以通过以下几种方法实现&#xff1a; 1‌.使用instanceof关键字进行类型检查和转换‌&#xff1a; 首先&#xff0c;使用instanceof关键字检查Object对象是否为目标实体类的类型。 如果是&#xff0c;则进行强制类型…

JAVA学习-练习试用Java实现“音频文件的读取与写入 :使用Java音频库处理音频数据”

问题&#xff1a; java语言编辑&#xff0c;实现音频文件的读取与写入 &#xff1a;使用Java音频库处理音频数据。 解答思路&#xff1a; 在Java中处理音频文件通常需要使用第三方库&#xff0c;例如javax.sound.sampled包&#xff0c;它提供了处理音频文件的基本功能。以下是一…

Flink架构概览,Flink DataStream API 的使用,FlinkCDC的使用

一、Flink与其他组件的协同 Flink 是一个分布式、高性能、始终可用、准确一次&#xff08;Exactly-Once&#xff09;语义的流处理引擎&#xff0c;广泛应用于大数据实时处理场景中。它与 Hadoop 生态系统中的组件可以深度集成&#xff0c;形成完整的大数据处理链路。下面我们从…

linux 查看java的安装路径

一、验证Java安装状态 java -version正常安装会显示版本信息&#xff1a; openjdk version "1.8.0_65" OpenJDK Runtime Environment (build 1.8.0_65-b17) OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)二、检查环境变量配置 若已配置JAVA_HOME&#…

2025-5-21 个人笔记篇matlab小笔记和clang基础使用(简单记录)

个人笔记篇 再不记录就找不到了&#xff0c;之前学的一点基础&#xff0c;看看就行,请不要提问,因为很久了>_<(至少我看来是这样的) matlab小笔记 % 开绘制(新建) figure % 设置绘制标题 title(标题); % 设置绘制的X轴Lable xlabel(x); % 设置绘制的y轴Lable ylabel(cos…

前端JavaScript-嵌套事件

点击 如果在多层嵌套中&#xff0c;对每层都设置事件监视器&#xff0c;试试看 <!DOCTYPE html> <html lang"cn"> <body><div id"container"><button>点我&#xff01;</button></div><pre id"output…

网感驱动下开源AI大模型AI智能名片S2B2C商城小程序源码的实践路径研究

摘要&#xff1a;在数字化浪潮中&#xff0c;网感已成为内容创作者与商业运营者必备的核心能力。本文以开源AI大模型、AI智能名片及S2B2C商城小程序源码为技术载体&#xff0c;通过解析网感培养与用户需求洞察的内在关联&#xff0c;提出"数据驱动-场景适配-价值重构"…

AG-UI:重构AI代理与前端交互的下一代协议标准

目录 技术演进背景与核心价值协议架构与技术原理深度解析核心功能与标准化事件体系典型应用场景与实战案例开发者生态与集成指南行业影响与未来展望1. 技术演进背景与核心价值 1.1 AI交互的三大痛点 当前AI应用生态面临三大核心挑战: 交互碎片化:LangGraph、CrewAI等框架各…

游戏引擎学习第301天:使用精灵边界进行排序

回顾并为今天的内容做准备 昨天&#xff0c;我们解决了一些关于排序的问题&#xff0c;这对我们清理长期存在的Z轴排序问题很有帮助。这个问题我们一直想在开始常规游戏代码之前解决。虽然不确定是否完全解决了问题&#xff0c;但我们提出了一个看起来合理的排序标准。 有两点…