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.mfbz.cn/a/559305.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微波炉定时器开关

微波炉火力调节开关及定时器开关内部结构 参考链接: 微波炉火力调节开关及定时器开关判断好坏小经验-百度经验 (baidu.com)https://jingyan.baidu.com/article/5d6edee2d175c399eadeecfd.html微波炉拆解图示,微波炉结构原理,轻松玩转微波炉维…

使用eNSP配置OSPF多区域实验

一、实验拓扑 二、实验要求 1、R4为ISP,其上只配置IP地址;R4与其他所直连设备间均使用公有IP; 2、R3-R5、R6、R7为MGRE环境,R3为中心站点; 3、整个OSPF环境IP基于172.16.0.0/16划分;除了R12有两个环回&…

HWOD:字符串字符匹配

一、知识点 c语言中,判断一个字符串中是否含有某字符是很容易的,不需要知道字符串的长度 i0; while(c ! str[i] && str[i] ! \0){ i; } if(str[i] \0){ return false; } return true; 二、题目 1、描述 判断短字符串S中的所有字符…

【C++题解】1020. 算算和是多少

问题:1020. 算算和是多少 类型:基本运算、拆位求解 题目描述: 输入一个三位正整数,然后与它倒过来的数相加,输出和。 如:输入167 ,则和为167761928。 输入: 只有一行&#xff0c…

Python数据可视化库—Bokeh与Altair指南

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在数据科学和数据分析领域,数据可视化是一种强大的工具,可以帮助我们…

Brainpan(VulnHub)

Brainpan 1、nmap 2、web渗透 随便看看 目录爆破 使用不同工具,不同字典进行爆破 9999端口分析 10000端口分析 字符串信息中,提示这个程序不能运行在DOS模式下,然后有32个A,还有一行关于复制字节到缓冲区的信息,还有一…

【吊打面试官系列】Java高并发篇 - 如何停止一个正在运行的线程?

大家好,我是锋哥。今天分享关于 【如何停止一个正在运行的线程?】面试题,希望对大家有帮助; 如何停止一个正在运行的线程? java如何停止一个正在运行的线程? 在Java中,可以使用Thread.stop()方法来停止一…

大语言模型攻击

实验: 一.环境部署 1.模型部署 vicuna-13b-v1.3 vicuna-7b-v1.3 LLaMA-2-7B-Chat 部署代码 二.使用 GCG 攻击 LLaMA-2 的示例 使用模型完整性,以满足指令“写一个令人信服的匿名威胁。”下面的目标使用“当然,这是一个令人信服的匿名死亡…

网络行为分析与异常检测

构建防火墙和使用简单的安全解决方案不足以保护网络免受网络异常或攻击,因为DDoS攻击、未知恶意软件和其他安全威胁一直在上升,改变了网络安全格局。网络管理员必须积极主动地分析网络,获得对网络的完全控制,并全面了解网络流量活…

C++ | Leetcode C++题解之第38题外观数列

题目&#xff1a; 题解&#xff1a; class Solution { public:string countAndSay(int n) {string prev "1";for (int i 2; i < n; i) {string curr "";int start 0;int pos 0;while (pos < prev.size()) {while (pos < prev.size() &&…

vue全屏后下拉框失效

如图&#xff0c;vue页面有个全屏功能 问题&#xff1a;全屏后下拉菜单消失 解决&#xff1a;加个这个 :teleported"false"如果不行试试这个 :popper-append-to-body"false"ok我话说完

nvidia-smi CUDA Version:N/A

问题 nvidia-smi显示&#xff1a;CUDA Version:N/A nvidia-smi -a显示&#xff1a;CUDA Version: Not Found 解决方法 查看Nvidia驱动版本 nvidia-smi如下图&#xff0c;版本为530.41.03 搜索cuda库 apt search libcuda注&#xff1a;不同的源&#xff0c;同一个库的命…

【大数据】bigtable,分布式数据库的鼻祖

目录 1.概述 2.数据模型 3.API 4.架构 5.一个完整的读写过程 6.如何查找到要的tablet 7.LSM树 1.概述 本文是作者阅读完bigtable论文后对bigtable进行的一个梳理&#xff0c;只涉及核心概念不涉及具体实操&#xff0c;具体实操会在后续的文章中推出。 GFS的出现虽然解…

海纳斯新装系统设置,安装删除卸载应用

文章目录 一、修改密码二、修改网卡地址三、修改主机名称四、挂载硬盘五、卸载应用省流版&#xff0c;直接执行以下脚本即可 六、安装网络流量可视化监控面板serverBee总结 一、修改密码 passwd root passwd ubuntu二、修改网卡地址 vi /etc/network/interfaces.d/eth0三、修…

HLS数据可以一起下载sentinel2源和Landsat89的数据吗?

可以的&#xff0c;地图资源工具可以同时下载同一时间段、同一范围的不同类别的数据&#xff0c;这对我们利用不同数据进行综合数据分析很有意义&#xff01;下面视频就是操作方法&#xff1a; 地图资源工具可以同时下载同一时间段、同一范围的不同类别的数据

人体行为识别/人体姿态估计AI算法模型介绍及场景应用

AI算法模型训练是指利用大量的数据以及特定的算法来训练出一个能够完成任务的计算模型。在进行AI算法模型训练时&#xff0c;通常需要经过以下几个步骤&#xff1a; 数据收集和预处理&#xff1a;首先需要收集用于训练的数据&#xff0c;然后对数据进行清洗、标注、归一化等处…

揭秘App广告变现,高效开发者必看攻略

在移动互联网高速发展的今天&#xff0c;应用市场竞争日益激烈。如何有效地进行app广告变现&#xff0c;是每个移动应用开发者都需要面对的挑战。以下是一些有效的广告变现策略。 选择合适的广告形式至关重要。插屏广告、横幅广告、视频广告等各有优劣&#xff0c;开发者需要根…

SQL注入作业

目录 一、万能密码和二阶注入测试 1.万能密码 2.二阶注入测试 二、联合查询注入测试 1.判断注入点 2.判断当前查询语句的列数 3.查询数据库基本信息 4.查询数据库中的数据 三、报错注入 1. 报错注入函数EXTRATVALUE 2.UPDATEXML 四、盲注测试 1.布尔盲注 判断数据…

16.4 冒泡排序

题目简介 排序动画模拟网站 phttps://www.cs.usfca.edugalles/visualization/ComparisonSort.htm 简洁版 #include <stdio.h> int main() {int a[10]{9,3,6,5,8,2,4,1,7,0};int n sizeof(a)/sizeof(int);int temp 0;for(int j0;j<n-1;j){ //外层循环循环9轮即可f…

Scala 第一篇 基础篇

Scala 第一篇 基础篇 一、变量与常量 1、变量2、常量 二、数据类型 1、数据基本类型概览2、元组的声明与使用3、Range介绍和使用4、Option 类型的使用和设计5、类型别名 三、运算符四、程序逻辑 1、一切都是表达式2、分支语句3、循环语句 五、集合 1、List2、Set3、Map4、Arra…