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

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

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

原语调用格式如下

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 等,此管脚必须置低。

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

在这里插入图片描述

测试

不配置 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 芯片进行读写控制,将持续更新…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/182129.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySql】MySql表的增删查改

目录 1.新增 1.1单行数据 全列插入 2.2 多行数据 指定列插入 2.查询 2.1 全列查询 2.2 指定列查询 2.3查询字段为表达式 2.4 别名 2.5 去重:DISTINCT 2.6 排序:ORDER BY 2.7 条件查询:WHERE 2.8 分页查询:LIMIT 3.修…

Nginx篇---第二篇

系列文章目录 文章目录 系列文章目录一、请列举Nginx和Apache 之间的不同点二、在Nginx中,如何使用未定义的服务器名称来阻止处理请求?三、请解释Nginx服务器上的Master和Worker进程分别是什么?一、请列举Nginx和Apache 之间的不同点 二、在Nginx中,如何使用未定义的服务器…

vue开发环境搭建部署(mac版)

前言 目前后端工作越来越少了,年底了,为了先过验收。项目负责人、产品、需求制定的方案就是先做假页面,所以前端的活多点。 其实现在不喜欢搞前端,原因很多,但是感觉现在似乎流行的码林绝学又是九九归一的瓶颈期…

Prometheus接入AlterManager配置企业微信告警(基于K8S环境部署)

文章目录 一、创建企业微信机器人二、配置AlterManager告警发送至企业微信三、Prometheus接入AlterManager配置四、部署PrometheusAlterManager(放到一个Pod中)五、测试告警 注意:请基于 PrometheusGrafana监控K8S集群(基于K8S环境部署)文章之上做本次实验。 一、创…

RLHF的替代算法之DPO原理解析:从Zephyr的DPO到Claude的RAILF

前言 本文的成就是一个点顺着一个点而来的,成文过程颇有意思 首先,如上文所说,我司正在做三大LLM项目,其中一个是论文审稿GPT第二版,在模型选型的时候,关注到了Mistral 7B(其背后的公司Mistral AI号称欧洲…

HTML5的语义元素

HTML5语义元素&#xff1a; HTML5提供新的语义元素来明确一个web页面的不同部分&#xff1a;<head>、<nav>、<section>、<article>、<aside>、<figcation>、<figure>、<footer>。 1&#xff09;、<section>元素&#x…

【数智化人物展】觉非科技CEO李东旻:数据闭环,智能驾驶数智时代发展的新引擎...

李东旻 本文由觉非科技CEO李东旻投递并参与《2023中国企业数智化转型升级先锋人物》榜单/奖项评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 数智化的主要作用是帮助决策。它的核心是大数据&#xff0c;以大数据为基础&#xff0c;匹配合适的AI技术&#xff0c;促使数…

Java连接Redis并操作Redis中的常见数据类型

目录 一. Java连接Redis 1. 导入依赖 2. 建立连接 二. Java操作Redis的常见数据类型存储 1. Redis字符串(String) 2. Redis哈希(Hash) 3. Redis列表&#xff08;List&#xff09; 4. Redis集合&#xff08;Set&#xff09; 一. Java连接Redis 1. 导入依赖 pom依赖…

Java版本电子招标采购系统源码:—实现多寻源比价,风险预警

营造全面规范安全的电子招投标环境&#xff0c;促进招投标市场健康可持续发展 传统采购模式面临的挑战 一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标…

使用Scrapy的调试工具和日志系统定位并解决爬虫问题

目录 摘要 一、Scrapy简介 二、Scrapy的调试工具 1、Shell调试工具 2、断点调试 三、Scrapy的日志系统 四、实例解析 1、启用详细日志 2、断点调试 3、分析日志 4、解决问题 五、代码示例 总结 摘要 本文详细介绍了如何使用Scrapy的调试工具和日志系统来定位并解…

QML 仪表盘小示例

本次项目已发布在CSDN->GitCode,下载方便,安全,可在我主页进行下载即可,后面的项目和素材都会发布这个平台。 个人主页:https://gitcode.com/user/m0_45463480怎么下载:在项目中点击克隆,windows:zip linux:tar.gz tar # .pro TEMPLATE = appTARGET = dialcontrol​#…

Figma 怎么切图?新手入门教程详解

Figma 是一个基于浏览器的协作的UI设计工具&#xff0c;其以轻量、便捷、跨平台使用、协同便捷的特点&#xff0c;迅速吸引了广大UI/UX 设计师们的喜欢。但是设计师经常遇到反复切图、交付开发等问题&#xff0c;所以借此机会分享一篇关于 Figma 切图的必要知识点和交付经验。 …

【广州华锐互动】VR综合布线虚拟实验教学系统

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐渗透到各个领域&#xff0c;为人们的生活和工作带来了前所未有的便利。在建筑行业中&#xff0c;VR技术的应用也日益广泛&#xff0c;尤其是在综合布线方面。 广州华锐互动开发的VR综合布线虚拟实…

数据资产与自助BI的一体化实践

01 数据资产中的数据治理 随着数据资源被提高到数据资产的高度&#xff0c;数据治理成为确保有效管理和利用数据资产的一组流程和技术&#xff0c;而数据资产目录是包含企业数据资产的全息描述信息的存储库&#xff0c;并充当有效管理数据资产的&#xff08;逻辑上的&#xff…

LeetCode | 206. 反转链表

LeetCode | 206. 反转链表 OJ链接 这里有两个思路 我们先来看第一个思路&#xff1a; 创建一个新的链表&#xff0c;然后将原链表头插头插需要保存下一个的地址&#xff0c;再头插 代码如下&#xff1a; struct ListNode* reverseList(struct ListNode* head) {struct ListN…

Java自学第2课:Java语言基础知识要点

1 Java主类结构 任务&#xff1a;创建新项目名为item&#xff0c;包名为number&#xff0c;类名为first。 1.1 包声明 不指定包时&#xff0c;默认就是工程名&#xff0c;指定后&#xff0c;类文件可以分类了&#xff0c;是这意思吧。包就大概等于一个文件夹。而且在类文件中…

多人游戏小程序源码系统 带完整的搭建教程

现如今&#xff0c;人们对于娱乐和社交的需求也在不断提高。多人游戏作为一种能够满足人们社交需求的游戏类型&#xff0c;越来越受到用户的欢迎。同时&#xff0c;小程序作为一种轻量级的应用程序&#xff0c;在微信等平台上得到了广泛的应用和推广。因此&#xff0c;开发多人…

电商API接口文档|1688API接口的接入获取获得1688商品详情it按关键字搜索商品 按图搜索1688商品(拍立淘)

API接口文档 前面讲到的关于接口的请求方式、类型、原理、安全机制等&#xff0c;产品经理能够简单了解一些就可以满足日常工作中的需要。接口文档是产品经理日常工作中经常会使用到的&#xff0c;特别是做开放平台或B端的产品经理&#xff0c;需要经常的看和写接口文档。 那如…

【rust/esp32】初识slint ui框架并在st7789 lcd上显示

文章目录 说在前面关于slint关于no-std关于dma准备工作相关依赖代码结果参考 说在前面 esp32版本&#xff1a;s3运行环境&#xff1a;no-std开发环境&#xff1a;wsl2LCD模块&#xff1a;ST7789V2 240*280 LCDSlint版本&#xff1a;master分支github地址&#xff1a;这里 关于s…

计算机视觉基础——基于yolov5-face算法的车牌检测

文章目录 车牌检测算法检测实现1.环境布置2.数据处理2.1 CCPD数据集介绍2.1.1 ccpd2019及20202.1.2 文件名字解析 2.2数据集处理2.2.1 CCPD数据处理2.2.2 CRPD数据集处理 2.3 检测算法2.3.1 数据配置car_plate.yaml2.3.2 模型配置2.3.3 train.py2.3.4 训练结果 2.4 部署2.4.1 p…