当前位置: 首页 > java >正文

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.xdnf.cn/news/7782.html

相关文章:

  • Java 定时任务中Cron 表达式与固定频率调度的区别及使用场景
  • 唯创安全优化纸业车间安全环境:门口盲区预警报警器的应用与成效
  • STL中的Vector(顺序表)
  • RabbitMQ——消息确认
  • NLP学习路线图(三): 微积分(梯度、导数等)
  • 有没有其他影视app可以像群晖video station一样可以被Windows的本地网络驱动器找到
  • 【Vue3】数据的返回和响应式处理(ref reactive)
  • 自建srs实时视频服务器支持RTMP推流和拉流
  • Kotlin 极简小抄 P8(不可空类型、可空类型、注意事项、非空断言 !!)
  • 什么是endpoints?
  • php://filter的trick
  • Server-Driven UI:Kotlin 如何重塑动态化 Android 应用开发
  • 《算法笔记》12.1小节——字符串专题->字符串hash进阶 问题 A: 求最长公共子串(串)
  • 代码随想录打卡|Day45 图论(孤岛的总面积 、沉没孤岛、水流问题、建造最大岛屿)
  • ARM反汇编浅析
  • 【JAVA】比较器Comparator与自然排序(28)
  • Flannel后端为UDP模式下,分析数据包的发送方式(一)
  • 【react18】在styled-components中引入图片报错
  • 项目中Warmup耗时高该如何操作处理
  • 深度解析 Java 中介者模式:重构复杂交互场景的优雅方案
  • 详解 C# 中基于发布-订阅模式的 Messenger 消息传递机制:Messenger.Default.Send/Register
  • 服务器网络配置 netplan一个网口配置两个ip(双ip、辅助ip、别名IP别名)
  • Java详解LeetCode 热题 100(18):LeetCode 73. 矩阵置零(Set Matrix Zeroes)详解
  • 广州卓远VR受邀参加2025智能体育典型案例调研活动,并入驻国体华为运动健康联合实验室!
  • 深入解析异步编程:Java NIO、Python `async/await` 与 C# `async/await` 的对比
  • junit单元测试
  • Ajax研究
  • [Linux] Linux信号量深度解析与实践(代码示例)
  • VLA模型:自动驾驶与机器人行业的革命性跃迁,端到端智能如何重塑未来?
  • docker 启动一个python环境的项目