转载:https://blog.csdn.net/jiuzhangzi/article/details/79471365

有的项目需要远程更新固件,更新完成后断电、重启即可。那远程更新是如何实现的呢?用的最多的应该是以太网或者自定义的局域网为主,当然还可以使用pcie、串口之类的,像xilinx还有golden image,以防止远程更新失败启动不起来,它主要是flash存有两个启动文件,正常情况下启动默认的,当默认的被损坏,就从备用的启动。本文章主要讲解的是STARTUPE2原语,这和远程更新有什么关系呢?请接着向下看。
我们知道,fpga掉电丢失,一般使用外部flash存储代码,flash有spi、bpi、qspi等接口,外部存储器的时钟管脚一般与fpga的CCLK_0连接,当使用远程更新时,首先fpga内部有控制flash的驱动(即逻辑控制flash时序),当然flash时钟也需要控制了,但这时时钟管脚已经连接到CCLK_0,那该如何操作啊,你直接约束分配管脚试试,是通不过的,这时STARTUPE2就派上用场了,那该如何使用啊,如下(verilog):

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_inst
(.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(0), // 1-bit input: User start-up clock input.GSR(0), // 1-bit input: Global Set/Reset input (GSR cannot be used for the port name).GTS(0), // 1-bit input: Global 3-state input (GTS cannot be used for the port name).KEYCLEARB(1), // 1-bit input: Clear AES Decrypter Key input from Battery-Backed RAM (BBRAM).PACK(1), // 1-bit input: PROGRAM acknowledge input.USRCCLKO(flash_clk), // 1-bit input: User CCLK input.USRCCLKTS(0), // 1-bit input: User CCLK 3-state enable input.USRDONEO(1), // 1-bit input: User DONE pin output control.USRDONETS(1) // 1-bit input: User DONE 3-state enable outpu
);

其中flash_clk就是你时序控制的flash时钟信号,连接到这就行了,其它的不需要改动,也无需约束此管脚(因为此管脚不需要在顶层作为输出信号了)。当然你也可以例化qspi ip看里面是如何使用的。
顺便说一下,对于数据信号,一般是inout类型,对于单bit可以如下使用:

assign data = data_en ? data_reg : 1'bz;

多bit可以如下使用:

//data_en=1:data_in--valid;0:data_out--valid
generategenvar  j;for (j = 0; j <= 3; j = j + 1)begin : bidir_IOIOBUF IOBUF_i (.IO   (flash_data[j]),.I    (data_out[j]),.O    (data_in[j]),.T    (data_en)                );end
endgenerate

data_en、data_in、data_out是时序控制的信号,flash_data为顶层的inout类型信号(直接接芯片引脚)。

STARTUPE2原语相关推荐

  1. 固件远程更新之STARTUPE2原语(fpga控制flash)

    转至: https://blog.csdn.net/jiuzhangzi/article/details/79471365 有的项目需要远程更新固件,更新完成后断电.重启即可.那远程更新是如何实现的呢 ...

  2. FPGA 控制 FLASH 之 Startup 原语使用相关链接

    固件远程更新之STARTUPE2原语(fpga控制flash) 上个格式不方便看,看这个转载的: https://blog.csdn.net/Reborn_Lee/article/details/89 ...

  3. SPI flash远程加载FPGA 应用

    有的项目需要远程更新固件,更新完成后断电.重启即可.那远程更新是如何实现的呢?用的最多的应该是以太网或者自定义的局域网为主,当然还可以使用pcie.串口之类的,像xilinx还有golden imag ...

  4. FPGA内部振荡器使用

    之前一直看CSDN上其他大佬写博客,一直有这种想法,以前觉得CSDN上编辑格式太复杂没时间,现临近毕业,希望多写多交流,以下是项目中遇到的一个问题,在实验室同学的讨论下,有了以下内容 FPGA有一个内 ...

  5. FPGA+DSP的高速AD采集处理开发详解

    一.案例说明 Kintex-7 FPGA使用SRIO IP核作为Initiator,通过AD9613模块采集AD数据.AD9613采样率为250MSPS,双通道12bit,12bit按照16bit发送 ...

  6. Microblaze Bootloader

    一般而言,Xilinx Microblaze会被用来在系统中做一些控制类和简单接口的辅助性工作,比如运行IIC.SPI.UART之类的低速接口驱动,对FPGA逻辑功能模块初始化配置及做些辅助计算等等. ...

  7. 达芬奇pro核心板QSPI Flash读数据实验

    Flash型号及互联结构 核心板Flash型号为N25Q128,其与FPGA的互联结构见达芬奇pro核心板原理图V3.9. 其中,QSPI_CS和QSPI_DQ0~3分别为Flash的片选和数据线,连 ...

  8. 进程的同步、互斥以及PV原语

    在处理进程间的同步与互斥问题时,我们离不开信号量和PV原语,使用这两个工具的目的在于打造一段不可分割不可中断的程序.应当注意的是,信号量和PV原语是解决进程间同步与互斥问题的一种机制,但并不是唯一的机 ...

  9. Java 并发编程中使用 ReentrantLock 替代 synchronized 关键字原语

    标签: Java 5 引入的 Concurrent 并发库软件包中,提供了 ReentrantLock 可重入同步锁,用来替代 synchronized 关键字原语,并可提供更好的性能,以及更强大的功 ...

最新文章

  1. IDEA创建子项目 parent标签报错
  2. [PWA] Show Notifications when a Service Worker is Installed or Updated
  3. 监听Activity的生命周期的方式。
  4. 解决vscode在apt update时哈希冲突问题
  5. JSBinding+SharpKit / 更新的原理
  6. 扩展 lua require 的行为
  7. CodeForces - 1303E Erase Subsequences(dp)
  8. javame_JavaME:Google静态地图API
  9. 一行Python代码制作动态二维码
  10. Pandas库DataFrame的简单应用2
  11. linux arm fpu初始化,ARM处理器的浮点运算单元(FPU)
  12. Django 配置App特定类的富文本编辑器
  13. 微博API授权登录(仅二维码登录)
  14. native数据类型 react_React-Native 之 数据持久化
  15. 计算机话筒技术指标,麦克风
  16. 车辆ECU需要更新软件
  17. 推荐!32个好用的百度网盘搜索引擎
  18. Android应用去广告方法盘点
  19. 为什么用线程池?解释下线程池参数? -- Java面试
  20. 翻译图片中文字的网站

热门文章

  1. Struts2中的配置文件--struts.properties文件
  2. php 输出函数结果,PHP向浏览器输出内容的4个函数总结
  3. SET NOCOUNT ON 作用
  4. 表单向导 css实现 步骤指引器
  5. PHP编译为静态库,Linux下将Tinyxml编译为静态库
  6. 服务器挖chia用什么系统,Chia是什么?Chia挖矿服務器配置
  7. html怎么把图片放到数组,HTML5中的图像数组
  8. mysql 事务id_[转]MySQL 5.6 全局事务 ID(GTID)实现原理(一)
  9. IDEA 配置 Docker
  10. 微型小乐器 : MicroSynth 小巧而优美