转载: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. 织梦 新建 php arclist,织梦arclist按照自定义字段来调用相关文章
  2. js------搜索敏感词正则表达式Math方法
  3. 分不清的InputStream和OutputStream
  4. C 指针常量 和常量指针 指向常量的指针常量的使用
  5. 15. Scala并发编程模型Akka
  6. shiro、cas、pac4j 实现单点登陆
  7. php属于复合型人才,【PHP】我国薪水上涨最快的行业
  8. 2020年研究生入学考试991考试大纲
  9. C# 输入选择文件夹
  10. U-boot主循环main_loop分析
  11. 苹果在中国的审核规律探索一
  12. LINUX下信号量的使用
  13. laravel判断是手机移动端访问还是PC端访问
  14. 机械制图之工程图线型
  15. 计算机科学与工程学院金巍,附件1湖北省思想政教育先进高校名单-附件1-.doc
  16. 分布式搜索引擎es原理
  17. 计算机画图调整画笔粗细,【2人回答】画图里画笔怎么加粗-3D溜溜网
  18. 机器学习(周志华)-支持向量机课后习题:
  19. 2006年IT技术盘点及IT黑镜头
  20. 什么品牌的护眼台灯比较好?推荐四款品质好的护眼台灯

热门文章

  1. #164 (Div. 2)
  2. DNS浅析-Bind软件的使用及搭建一个简单的DNS缓存服务器
  3. 把jquery的this写入选择器里(伪写入)哈哈~
  4. python如何实例化类_Python如何根据类名实例化类
  5. 背景se_SE新作《先驱者》首个内容预告 定于2020年圣诞发售
  6. gtk linux 升级_需要在Ubuntu上更新GTK(10.04)
  7. 基于matlab_simulink的捷联惯性导航系统仿真,基于MATLAB/Simulink的捷联惯性导航系统仿真...
  8. linux下汇编程序gas,Linux 汇编语言(GNU GAS汇编)开发指南
  9. java抛出数组格式异常,Java中异常
  10. SpringCloud服务注册启动的时候报错(com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException)