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

C++本科毕业设计-ROS机械臂上位机源码(下载即用),个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源
平差在测绘工程中具有极其重要的地位,其主要作用是处理测量数据中的误差,从而提升测量结果的精度。在“平差课程设计报告”中,学生田忠星以水准网为例,开展了间接平差的实践研究。间接平差的基本原理是通过构建观测方程,将观测值(如高程差)表示为待求参数(即未知点的高程)的函数,进而求解这些参数,以实现对测量误差的消除或减小。 在水准网间接平差程序设计方面,核心思路如下:首先,确定独立参数的数量,即未知点的高程数量;其次,将每个观测值(高程差)用选定的参数表示;接着,依据误差方程的系数矩阵自由项构建法方程,法方程的数量与参数数量一致;然后,解法方程以求得参数(高程)的平差值;最后,利用误差方程计算观测值(高差)的平差值,并评估其精度。 程序运行流程主要包括以下步骤:首先,用户输入水准网的已知点数、未知点数以及观测值信息,如点号、高程高差观测值等;接着,初步估算未知点的高程,基于已知点的高程观测值进行近似计算;然后,根据观测值构建误差方程,包括系数矩阵、权矩阵常数项;通过通用平差过程,解决由系数矩阵、权矩阵常数项组成的线性系统,得到参数的平差值;最后,显示中间计算结果最终平差结果,并支持数据保存功能。 程序界面采用菜单驱动方式,设有“文件”“计算”两个主要菜单,支持数据的打开、保存退出操作,同时具备近似高程计算、误差方程列立平差计算等功能。界面中还包含文本框控件,用于显示输入、计算输出信息,以及通用对话框用于文件操作。 在程序源代码中,定义了公共变量(如strFileName用于存储文件名)其他变量,用于存储观测值、系数矩阵、权矩阵等信息。程序通过循环、条件判断等逻辑结构实现数据处理计算。 这份“平差课程设计报告”全面记录了水准网间接平差的全过程,从理论阐述到实践操作,再到程序设计,完整展示了测量平差的基本原理应用技术,对学习理解测量误差处理具有重要的参考价值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值