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信号时,它会暂停时钟的运行。之后,可以通过软件再次触发启动时钟位来恢复时钟的运行。

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
xilinx zynq7000参考手册是一本提供给用户的完整指南,涵盖了xilinx zynq7000系列器件的所有重要特性和功能。该手册的目的是帮助用户了解和使用zynq7000系列器件,以便能够根据特定的设计需求正确配置和编程。 参考手册首先介绍了zynq7000系列器件的总体架构,包括处理系统(PS)和可编程逻辑(PL)部分的功能和组件。这些组件包括处理器核心、存储器、外设接口和相互连接的总线系统。用户可以通过阅读手册了解这些组件的工作原理和互连方式,并理解它们如何协同工作以实现高性能的系统设计。 手册还详细描述了zynq7000系列器件的特定功能和特性,如时钟和重置控制、外设接口协议、断和异常处理、低功耗设计等。这些内容可以帮助用户深入了解zynq7000系列器件的功能和性能限制,在设计过程避免常见的错误和问题。 此外,手册还提供了丰富的编程和配置指南,包括使用软件开发工具(SDK)进行C/C++编程、使用硬件描述语言(HDL)进行可编程逻辑设计、使用Vivado开发环境进行系统集成等等。使用这些指南,用户可以了解如何使用各种工具和技术来开发和调试zynq7000系列器件的应用程序和系统设计。 总之,xilinx zynq7000参考手册是一本非常重要的资源,为用户提供了详尽全面的信息和指导,帮助他们成功设计和开发基于zynq7000系列器件的应用和系统。无论是初学者还是有经验的设计师,都可以从这本手册获益并加深对zynq7000系列器件的理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值