当前位置:首页 > > ZYNQ
		


1PL 时钟简介

PL 具有自己的时钟管理生成和分配功能,还从 PS 中的时钟发生器接收四个时钟信号,如下图所示。

PL 时钟生成

PS 产生的四个时钟彼此完全异步,与其他 PL 时钟没有关系。

这四个时钟来自 PS 中单独选择的 PLL。每个 PL 时钟都是独立的输出信号,可产生适合 PL 使用的时钟波形。

2时钟油门

四个 PL 时钟中的每一个都包含用于启动和停止时钟以及协助 PL 设计调试和协同仿真的逻辑。时钟节流行为由软件和来自 PL 的触发输入信号控制。

时钟节流功能包括:

  • 软件控制下的启动/停止时钟

  • 为预编程的脉冲数运行时钟

  • 运行时钟并使用 PL 逻辑来暂停时钟脉冲

每个时钟节流阀都有一个 16 位计数器,该计数器针对要生成的时钟脉冲数进行编程。

对于连续时钟输出,向计数器写入 0,这是默认值,当前计数可由软件读取,PL 逻辑可以使用来自 PL 的FCLKCLKTRIGxN输入信号暂停计数和时钟脉冲,软件可以通过写入PL时钟控制寄存器来重新启动计时。

PL 时钟油门输入信号如下:

信号名称 I/O 描述
FCLKCLKTRIGxN I PL 时钟触发信号是来自 PL 逻辑的输入,用于在对编程的时钟脉冲数进行计数时暂停(暂停)PL 时钟。暂停模式由FCLKCLKTRIGxN信号的上升沿(逻辑 0 到逻辑 1)进入, 该信号可以与 FCLK 和所有其他信号异步置位,当时钟连续运行时,该引脚没有影响,[LAST_CNT] = 0。

3时钟油门编程

示例:停止/开始时钟

此示例说明了使用写入节流计数寄存器slcr.FPGAx_THR_CNT [LAST_CNT]中的最后一个计数字段来停止和启动 PL 时钟 (FCLKCLKx) 的简单方法,该示例假设slcr.FPGAx_THR_CTRL寄存器保持其默认状态0x0000_0000。

  1. 停止时钟

将0x0000_0001写入slcr.FPGAx_THR_CTRL,立即停止时钟。

[LAST_CNT] = 1
 [ReservedReserved] = 0
  1. 开始时钟

将 0x0000_0000 写入slcr.FPGAx_THR_CTRL以恢复连续时钟。

[LAST_CNT] = 0
 [Reserved] = 0

示例:运行 592 个脉冲的 PL 时钟并停止

在本例中,将有 592 个时钟脉冲和停止,slcr.FPGAx_THR_CTRL [CPU_START]位是正沿触发以启动时钟。

  1. 启动启动时钟位

将 0x0000_0004 写入控制寄存器slcr.FPGAx_THR_CTRL。

[CPU_START] = 0
[CNT_RST] = 0
[Reserved] = 0x001
  1. 编程计数为 592

将 0x0000_0250 写入计数寄存器slcr.FPGAx_THR_CNT。

[LAST_CNT] = 0x0250
[Reserved] = 0
  1. 置位起始时钟位

将 0x0000_0005 写入控制寄存器slcr.FPGAx_THR_CTRL。

[CPU_START] = 1
[CNT_RST] = 0
 [Reserved] = 0x001

示例:编程 592 脉冲并与 PL 触发器输入交互

在这个例子中,将有 592 个时钟脉冲被时钟触发信号暂停(FCLKCLKTRIGxN) 并由软件重新启动,slcr.FPGAx_THR_CTRL [CPU_START]位为正边沿触发以启动时钟。

  1. 启动起始时钟位

  2. 编程计数为 592

  3. 置位起始时钟位

  4. PL 逻辑暂停时钟(HALT 状态):逻辑置位 FCLKCLKTRIGxN 输入以停止时钟时钟。

  5. 启动起始时钟位

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
关闭