K7系列FPGA进行FLASH读写1——CCLK控制(STARTUPE2原语)

这篇具有很好参考价值的文章主要介绍了K7系列FPGA进行FLASH读写1——CCLK控制(STARTUPE2原语)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  最近的工作涉及对 FPGA 进行远程更新,也就是通过远程通信接口将 .bin 文件送到 FPGA,然后写入 FLASH,这样当 FPGA 重新上电后就可以执行更新后的程序了。因此第一步工作就是进行 FLASH 的读写控制。

  然而如果尝试配置 FLASH 管脚时,会发现 CCLK 管脚是不可配置的,这实际上是因为 CCLK_0 管脚在内部已经被占用,我们必须通过其他方式获取/设置它。笔者所用芯片为 K7 系列,根据 ug470 数据手册,我们可以使用 STARTUPE2 原语获取、设置该时钟,官方手册的介绍如下

startupe2,数字逻辑,fpga开发

startupe2,数字逻辑,fpga开发

startupe2,数字逻辑,fpga开发

原语调用格式如下

STARTUPE2 #(
	.PROG_USR		("FALSE"),
	.SIM_CCLK_FREQ	(0.0)
)
STARTUPE2_inst(
	.CFGCLK			(cfgclk),
	.CFGMCLK		(cfgmclk),
	.EOS			(eos),
	.PREQ			(),
	.CLK			(0),
	.GSR			(0),
	.GTS			(0),
	.KEYCLEARB		(1),
	.PACK			(1),
	.USRCCLKO		(usrcclk),
	.USRCCLKTS		(0),
	.USRDONEO		(1),
    .USRDONETS		(0)
);
  • CFGCLK,配置逻辑主时钟,仅在配置时有输出,在 master 模式下也一直存在(存疑;根据后面的测试,文档所说的 Persist Enabled 应当指的是 Master 模式下一直使能/连接,但除了配置的时候存在时钟,其他时候为无效的高电平;在配置了 USRCCLK 时,在 FPGA 配置结束后三个 clk 该时钟将切换到 USRCCLK)。Configuration mode 是根据 M[2:0] 管脚配置的,最常用的是 M[2:0]=001 对应的 Master SPI 配置模式,笔者开发板即本模式,Master 模式下 CCLK 由 FPGA 输出给 FLASH 的 SCK;

  • EOS,End Of Start,指示 FPGA 配置的结束;

  • CFGMCLK,配置内部振荡器时钟,是从内部的一个锁相环输出的 65MHz 时钟(不是很准,笔者输出到 GPIO 用示波器看过,那块板子的 ~68MHz);

  • USRDONEO,输出到FPGA 的 DONE_0 管脚。一般而言,在硬件设计中会在这个管脚挂一个 LED 灯,以指示 FPGA 完成配置开始运行;

  • USRDONETS,控制 DONE 管脚的三态门,1 将设置为高阻,0 将会把用户给入的 USRDONEO 输出到 DONE_0 管脚;

  • USRCCLKO,在配置完成后,驱动 CCLK_0 管脚的用户自定义时钟。在配置完成后,前三个时钟周期用于切换时钟源,且不会被输出,但如果使用了 EMCCLK 管脚,则 EMCCLK 信号会出现在 CCLK 管脚上,直到过渡到用户自定义时钟;

  • USRCCLKTS,控制 USRCCLKO 的三态门;

  • GTS,全局三态门使能,要用户自定义 CCLK/DONE 等,此管脚必须置低。

其他信号详见官方手册说明,默认启动设置下,配置期间的时序图如下

startupe2,数字逻辑,fpga开发

测试

不配置 USRCCLKO

STARTUPE2 STARTUPE2_inst (
	.CFGCLK			(cfgclk),
	.CFGMCLK		(cfgmclk),
	.EOS			(eos)
);

  做如上配置,将上述三信号输出到 GPIO 以及 ILA。测试发现 cfgclk 仅在上电一瞬有输出,之后为常高(Master SPI 模式);CFGMCLK 为 ~65MHz 时钟,输出到 GPIO 的信号极其微弱,但 ILA 可以正常捕获,因此此时钟可用于 FPGA 内部逻辑,但不可直接输出(其驱动 I/O 的能力太弱了);EOS 信号上电后一瞬即由低变高,指示配置完成,因此可用作 FPGA 启动的判断依据。

  由于没有配置 USRCCLK,CCLK 仅在初始配置有信号。上述写法仅为获取 FPGA 内部时钟,以及判断 FPGA 是否配置完成,不涉及对 FLASH 的控制。

配置 USRCCLKO

  要进行 FLASH 的读写,就要对 CCLK 进行配置,如下

STARTUPE2 #(
	.PROG_USR		("FALSE"),
	.SIM_CCLK_FREQ	(0.0)
)
STARTUPE2_inst(
    .CFGCLK			(cfgclk),
    .CFGMCLK		(cfgmclk),		//~65MHz,可用于 FPGA 内部逻辑,驱动 IO 的能力太弱了
    .EOS			(eos),			//指示 FPGA 配置完成
	.PREQ			(),
	.CLK			(0),
	.GSR			(0),
	.GTS			(0),
	.KEYCLEARB		(1),
	.PACK			(1),
    .USRCCLKO		(usrcclk),		//FLASH SCK
    .USRCCLKTS		(0),			//设为0以启用USRCCLK
    .USRDONEO		(usrdone),		//控制DONE_0管脚
    .USRDONETS		(0)				//设为0以启用usrdone,不想用就设为1
);

在该配置下,测试发现,cfgclk 将被配置为 usrcclk,这个也就是输出到 CCLK_0 的信号,ILA 捕获、GPIO 输出均正常;cfgmclk 仍为 ~65MHz 时钟,GPIO 输出极弱。

  如果只是要控制 CCLK_0,可以只配置如下

STARTUPE2 STARTUPE2_inst(
	.GTS			(0),
    .USRCCLKO		(usrcclk),
    .USRCCLKTS		(0)
);

通过控制 usrcclk 即可控制 CCLK_0 管脚了,从而获得对 FLASH 的控制权。

  关于如何对 FLASH 芯片进行读写控制,将持续更新…文章来源地址https://www.toymoban.com/news/detail-752670.html

到了这里,关于K7系列FPGA进行FLASH读写1——CCLK控制(STARTUPE2原语)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA模块——SPI协议(读写FLASH)

    芯片引脚图: 内部结构图: 存储区域总共分成了32块,每块64KB。每块又分成了16个部分,每个部分4KB。方便进行读取和局部操作。 电路设计 SPI的四种模式 这里使用这个模式: 主机和从机在时钟上升沿放入要输出的数据,在时钟下降沿读取要输入的数据。 8个时钟后交换一个

    2024年02月05日
    浏览(36)
  • 基于FPGA 外置qspi Flash的读写

    1.写在前面 FPGA内部不具有掉电存储程序的功能,所以都需要外置的flash存储器来存储程序,上电后从flash加载程序到FPGA中运行。外置的flash可以存储程序,也可以存储任何用户数据,可以更有效的利用flash的存储空间。 值得注意的是,用于存储程序的flash和fpga连接用的是fpga的

    2024年02月12日
    浏览(37)
  • FPGA怎么读写外部FLASH中的用户数据?(超详细)

    一、 软件平台与硬件平台 软件平台: 1、操作系统:Windows-8.1 2、开发套件:ISE14.7 3、仿真工具:ModelSim-10.4-SE 4、Matlab版本:Matlab2014b/Matlab2016a 硬件平台: 1、 FPGA型号:Xilinx公司的XC6SLX45-2CSG324 2、 Flash型号:WinBond公司的W25Q128BV   Quad SPI Flash存储器 提示:如果图片不清晰,请

    2024年02月07日
    浏览(34)
  • FPGA使用SPI控制FLASH

    通过控制FLASH芯片进一步熟悉SPI协议 Flash 存储器 : Flash 存储器是一种非易失性存储器,它具有 RAM 和 ROM 的一些特点。与 ROM 类似,Flash 存储器的内容在断电时不会丢失,但与 RAM 类似,它可以通过编程来修改存储的内容。Flash 存储器通常用于嵌入式系统中存储程序代码、配置

    2024年03月19日
    浏览(40)
  • 嵌入式开发--STM32G4系列片上FLASH的读写

    这个玩意吧,说起来很简单,就是几行代码的事,但楞是折腾了我大半天时间才搞定。原因后面说,先看代码吧: 读操作很简单,以32位方式读取的时候是这样的: 需要注意的是,当以32位方式读取时,地址需要是4的整数倍,即32位。 8位或16位方式类似操作即可 需要注意的

    2024年01月18日
    浏览(49)
  • FPGA纯verilog代码读写N25Q128A QSPI Flash 提供工程源码和技术支持

    N25Q128A的参数有很多,作为FPGA开发者,需要关注如下参数: 1、4KBytes为1个Sector(扇区); 2、16个Sector(扇区)是1个Block(块)64KBytes; 3、容量为16M=128Mbite字节,共有256个Block,4096个Sector; 这三个参数直接决定了你怎么组织数据的读写操作,比如你的数据量很小,则考虑写入1个Sector(扇

    2024年02月02日
    浏览(40)
  • FPGA解析串口指令控制spi flash完成连续写、读、擦除数据

    最近在收拾抽屉时找到一个某宝的spi flash模块,如下图所示,我就想用能不能串口来读写flash,大致过程就是,串口向fpga发送一条指令,fpga解析出指令控制flah,这个指令协议目前就是: 55 + AA + CMD + LEN_h + LEN_m + LEN_l + DATA CMD:01 写;02 读;03 擦除(片擦除); LEN_h/m/l:三个字

    2024年02月03日
    浏览(30)
  • [FPGA IP系列] FPGA常用存储资源大全(RAM、ROM、CAM、SRAM、DRAM、FLASH)

    本文主要介绍FPGA中常用的RAM、ROM、CAM、SRAM、DRAM、FLASH等资源。 RAM(Random Access Memory)是FPGA中最基本和常用的内部存储块,根据不同架构可以实现不同容量,最大可达几十Mb。 FPGA中的RAM主要包括: 分布式RAM:存在于逻辑块(LE)中的小容量RAM,通常为几百比特到几千比特。 块RAM:F

    2024年02月12日
    浏览(31)
  • 基于fpga的ddr3读写控制,纯verilog实现,能实现多通道图像数据读写控制

    基于fpga的ddr3读写控制,纯verilog实现,能实现多通道图像数据读写控制,模块接口清晰,可移植性高. 基于FPGA的DDR3读写控制是一项重要的技术,它为多通道图像数据的读写提供了高效的解决方案。本文将介绍一种纯Verilog实现的DDR3读写控制模块,旨在实现模块接口清晰、可移

    2024年04月12日
    浏览(48)
  • xilinx7系列FPGA上电flash模式选择,及CFGBVS管脚电平选择

    xilinx7系列FPGA上电flash模式选择,主要是控制mode管脚电平。详情见下图:  若FPGA配置flash为spi flash类型,mode【2:0】=001;FPGA配置flash为bpi flash类型,mode【2:0】=010。 FPGA上电读bpi flash时序如图: FPGA上电读spi flash x1模式时序如图: Configuration Banks Voltage Select ( CFGBVS ) 配置组电压

    2024年02月16日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包