Zynq7000系列中PL时钟使用

可编程逻辑(PL)具有自己的时钟管理生成和分配功能,并从处理器系统(PS)中的时钟发生器接收四个时钟信号(如图25-10所示)。
在这里插入图片描述
在嵌入式系统中,PL时钟的管理和分配对于确保逻辑电路的正确运行至关重要。PL时钟系统通常包括时钟源的选择、分频、相位调整和缓冲等功能,以满足不同逻辑模块的时序需求。
PL接收来自PS的时钟信号,这些信号可能经过分频或相位调整,以适应PL内部电路的工作频率和时序要求。同时,PL内部的时钟管理单元可以根据需要生成和调整时钟信号,以确保逻辑电路的稳定运行。

一、Clock Throttle(时钟调节)

四个可编程逻辑(PL)时钟中的每一个都包含用于启动和停止时钟的逻辑,以及有助于PL设计调试和协同仿真的逻辑。时钟调节行为由软件和来自PL的触发输入信号控制。时钟调节功能包括:
• 在软件控制下启动/停止时钟
• 为预编程的脉冲数运行时钟
• 运行时钟并使用PL逻辑暂停时钟脉冲
每个时钟调节都有一个16位计数器,用于编程要生成的时钟脉冲数。对于连续的时钟输出,将0写入计数器,这是默认值。当前计数可以由软件读取。计数和时钟脉冲可以由PL逻辑使用来自PL的FCLKCLKTRIGxN输入信号来暂停。软件可以通过写入PL时钟控制寄存器来重新启动时钟。
FCLKCLKTRIGxN:PL时钟触发信号,是来自PL逻辑的一个输入,用于在计数预编程的时钟脉冲数时暂停(暂停)PL时钟。当FCLKCLKTRIGxN信号的上升边沿(从逻辑0变为逻辑1)出现时,进入暂停模式。这个信号可以异步地相对于FCLK和其他所有信号进行assert。当时钟连续运行时(即[LAST_CNT] = 0),这个引脚没有影响。
当PL时钟处于连续运行状态(即没有设置计数限制)时,PL时钟触发信号将不起作用。这确保了在没有明确需求暂停时钟的情况下,PL时钟能够稳定地运行。

二、时钟控制器状态机

时钟控制器状态机如Figure 25-11所示。
在这里插入图片描述

三、时钟调节编程

示例1:停止/启动时钟
本示例展示了使用写入调节计数寄存器中的最后计数字段(slcr.FPGAx_THR_CNT [LAST_CNT])来停止和启动PL时钟(FCLKCLKx)的简单方法。本示例假设slcr.FPGAx_THR_CTRL寄存器保持在其默认状态0x0000_0000。
1.停止时钟
将0x0000_0001写入slcr.FPGAx_THR_CNT以立即停止时钟。
[LAST_CNT] = 1
[保留位] = 0
2.启动时钟
将0x0000_0000写入slcr.FPGAx_THR_CNT以恢复连续时钟。
[LAST_CNT] = 0
[保留位] = 0
通过写入不同的值到slcr.FPGAx_THR_CNT寄存器的LAST_CNT字段,可以控制时钟的启动和停止。当LAST_CNT字段设置为1时,时钟会立即停止;当设置为0时,时钟会恢复连续运行。

示例2:运行PL时钟592个脉冲并停止
在本示例中,PL时钟将运行592个脉冲然后停止。slcr.FPGAx_THR_CTRL寄存器中的[CPU_START]位是上升边沿触发的,用于启动时钟。
1.准备启动时钟位
向控制寄存器slcr.FPGAx_THR_CTRL写入0x0000_0004。
[CPU_START] = 0
[CNT_RST] = 0
[保留位] = 0x001
2.编程计数为592
向计数寄存器slcr.FPGAx_THR_CNT写入0x0000_0250。
[LAST_CNT] = 0x0250
[保留位] = 0
3.assert启动时钟位
向控制寄存器slcr.FPGAx_THR_CTRL写入0x0000_0005。
[CPU_START] = 1
[CNT_RST] = 0
[保留位] = 0x001
通过执行以上步骤,PL时钟将在[CPU_START]位变为1时开始运行,并在达到592个脉冲后自动停止。

示例3:编程592个脉冲并与PL触发输入交互
在本示例中,PL时钟将运行592个脉冲,这些脉冲会被时钟触发信号(FCLKCLKTRIGxN)暂停,并且可以通过软件重新启动。slcr.FPGAx_THR_CTRL寄存器中的[CPU_START]位是上升边沿触发的,用于启动时钟。
1.准备启动时钟位
向控制寄存器slcr.FPGAx_THR_CTRL写入0x0000_0004。
[CPU_START] = 0
[CNT_RST] = 0
[保留位] = 0x001
2.编程计数为592
向计数寄存器slcr.FPGAx_THR_CNT写入0x0000_0250。
[LAST_CNT] = 0x0250
[保留位] = 0
3.assert启动时钟位
向控制寄存器slcr.FPGAx_THR_CTRL写入0x0000_0005。
[CPU_START] = 1
[CNT_RST] = 0
[保留位] = 0x001
4.PL逻辑暂停时钟(暂停状态)
逻辑assert FCLKCLKTRIGxN输入以停止时钟。
5.重新准备启动时钟位
向控制寄存器slcr.FPGAx_THR_CTRL写入0x0000_0004。
[CPU_START] = 0
[CNT_RST] = 0
[保留位] = 0x001
6.再次assert启动时钟位
向控制寄存器slcr.FPGAx_THR_CTRL写入0x0000_0005。
[CPU_START] = 1
[CNT_RST] = 0
[保留位] = 0x001
通过这一系列步骤,不仅可以编程PL时钟运行特定的脉冲数,还可以通过PL逻辑与外部信号交互来动态地控制时钟的运行状态。当PL逻辑检测到FCLKCLKTRIGxN信号时,它会暂停时钟的运行。之后,可以通过软件再次触发启动时钟位来恢复时钟的运行。

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

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

相关文章

QT跨平台读写Excel

QT跨平台读写Excel 背景Excel工具CMakeLists.txt工程目录 背景 开发框架QT,makefile构建工具CMake,编译器MinGW Excel工具 考虑跨平台则不能使用针对微软COM组件的QAxObject来读写Excel,因此使用开源QtXlsx。 这里是将QXlsx当做源码嵌入使…

使用FastDDS编译IDL文件

1.安装FastDDS环境 Ubuntu22.04 1.1安装依赖的软件 sudo apt-get update //基础工具安装 sudo apt install cmake g python3-pip wget git //Asio 是一个用于网络和低级 I/O 编程的跨平台C库,它提供了一致的 异步模型。 TinyXML2是一个简单,小巧&…

Redis进阶——GEO地理坐标附近商户案例

目录 GEO数据结构的基本用法GEO概述GEO命令的使用GEO数据结构练习 导入店铺数据到GEO业务场景实现代码如下 实现附近商户功能 GEO数据结构的基本用法 GEO概述 GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储…

过氧化氢滴定方法可用的PFA器皿有哪些?

滴定液:KMnO4标准溶液 试液:H2O2商品液(3%),H2SO4 (3.0mol/L ) 指示剂:酚酞指示剂 仪器:分析天平,PFA酸式滴定管50mL,PFA 移液管10mL/25mL、PFA 容量瓶250mL、PFA锥形瓶250mL 1、KMnO4标准溶液浓度的标定(见实验:高锰酸钾标准溶液的配制与…

nodejs工具脚本json转excel

json转excel 主要使用 sheetjs 库 vim convertJsonToExcel.js 封装转换方法 import fs from fs; import XLSX from xlsx;/*** 扁平化嵌套json对象* param {Object} jsonObj* param {String} prefix* returns*/ export function flattenKeys(jsonObj, prefix ) {const resul…

java-springmvc 01

MVC就是和Tomcat有关。 01.MVC启动的第一步,启动Tomcat 02.Tomcat会解析web-inf的web.xml文件

战姬物语部署

一.准备环境 #关闭seliunx和防火墙 setenforce 0 systemctl stop firewalld systemctl disable firewalld #配置源,并安装常用工 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/epel.repo …

Spring Task 定时任务(含结合cron 表达式)

目录 一、Spring Task的介绍 二、使用方法 2.1 配置类启用定时任务支持: 2.2 同步定时任务 ​编辑2.3 fixedRate 可以看出不能满足我们的日常需求 那如何让其开启异步呢(开启多个线程工作) 三、Spring Task 结合cron表达式 3.1 corn 表…

【动态规划】dp 路径问题(不同路径、路径最小和、地下城游戏...)

文章目录 1. 前言 - 理解动态规划算法1.5 关于dp路径问题2. 例题2.1_不同路径Warning. 关于状态表示 3. 算法题3.1_不同路径II3.2_珠宝的最高价值3.3_下降路径最小和3.4_最小路径和3.5_地下城游戏关于状态表示的两种选法: 1. 前言 - 理解动态规划算法 关于 动态规划…

超越GPT-4V,苹果多模态大模型上新,神经形态计算加速MLLM(一)

4月8日,苹果发布了其最新的多模态大语言模型(MLLM )——Ferret-UI,能够更有效地理解和与屏幕信息进行交互,在所有基本UI任务上都超过了GPT-4V! 苹果开发的多模态模型Ferret-UI增强了对屏幕的理解和交互&am…

做生意能只用电子名片吗?

做生意,收到纸质名片是不可避免的,电子名片不可能完全能代替纸质名片,如果想方便管理纸质名片的话,将名片拍照转为Excel是一种不错的方案,它可以让我们方便地通过表格筛选或搜索需要的信息,极大地提高了信息…

cdh cm界面HDFS爆红:不良 : 该 DataNode 当前有 1 个卷故障。 临界阈值:任意。(Linux磁盘修复)

一、表现 1.cm界面 报错卷故障 检查该节点,发现存储大小和其他节点不一致,少了一块物理磁盘 2.查看该磁盘 目录无法访问 dmesg检查发现错误 dmesg | grep error二、解决办法 移除挂载 umount /data10 #可以移除挂载盘,或者移除挂载目…

【C语言】深入解析选择排序算法

一、算法原理二、算法性能分析三、C语言实现示例四、总结 一、算法原理 选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理是不断地选择剩余元素中的最小(或最大)元素,放到已排序的序列的末尾&#xff…

RCE漏洞及其绕过——[SWPUCTF 2021 新生赛]easyrce、caidao、babyrce

目录 什么是Shell 1、Shell简介 2、印刷约定 一、什么是RCE 漏洞产生条件: 漏洞检测: 1.远程命令执行 system()函数: passthru()函数: exec()函数: 无回显 shell_exec()函数: 2.远程代码执行 e…

【React】Ant Design自定义主题风格及主题切换

Ant Design 的自定义主题,对于刚入手的时候感觉真是一脸蒙圈,那今天给它梳理倒腾下; 1、自定义主题要点 整体样式变化,主要两个部分: 1.1、Design Token https://ant.design/docs/react/customize-theme-cn#theme 官…

2024信友队智灵班春季 Test1 总结

4月模考 死亡回放 模考时间线 1:30 比赛开始,读 T1 宇宙爆炸 的题1:50 自己手模了几组样例,得出了一个错误结论,打出了第一版错误代码,然后上交( Wrong Answer 20 \color{red}\text{Wrong\ Answer\ 20} Wrong Answer …

每日一题(PTAL2-008):最长对称子串--分类讨论+遍历

最长对称子串的长度有可能是奇数也有可能是偶数&#xff0c;因此在遍历时要同时考虑这两种情况。 #include<bits/stdc.h> using namespace std;int main() {string s;getline(cin,s);int n s.size();int res 0; // 初始化为0&#xff0c;因为空字符串也是对称的for (i…

VMware最新下载安装

1、打开浏览器 搜索VMware官网&#xff0c;点进去。如图&#xff1a; 这里有两种下载方法&#xff0c;便洁就是我这种&#xff0c;还有一种就是注册账号之后下载就完全没有必要了&#xff0c;而且基本注册不了&#xff0c;不太好注册。 2、选择"产品"第二个选项 …

leetcode热题100.杨辉三角(动态规划入门)

Problem: 118. 杨辉三角 文章目录 题目思路复杂度Code 题目 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,…

Go语言并发控制

channel // cancelFn 数据通道关闭通知退出 func cancelFn(dataChan chan int) {for {select {case val, ok : <-dataChan:// 关闭data通道时&#xff0c;通知退出// 一个可选是判断data指定值时退出if !ok {fmt.Printf("Channel closed &#xff01;&#xff01;&…