跳转到主要内容

Zynq UltraScale+ MPSoC PS SYSMON 时钟

<strong>描述</strong>
Zynq UltraScale+ MPSoC TRM 包含一个详细介绍 PS 及 PL SYSMON 时钟的部分。

它说明 SYSMON 的数字参考时钟是 LPD_LSBUS_CLK:

“SYSMON 时钟由接口时钟驱动。接口时钟被划分为使用 CONFIG_REG2 [clock_divide] 位字段生成 ADC 时钟。

<li>PL SYSMON 时钟基于 LPD_LSBUS_CLK(APB 总线)或 PL_DCLK(实例化 SYSMONE4 原语时)。</li>
<li>PS SYSMON 时钟基于 LPD_LSBUS_CLK(APB 总线)”</li>

这是不正确的,将在 TRM 的未来版本中修复。

本答复记录详细描述了 PS 和 PL SYSMON 的时钟基础架构。

<strong>解决方案</strong>
该图是 PS 和未实例化的 PL SYSMON 的时钟结构。
<center><img src="http://xilinx.eetrend.com/files/2020-11/wen_zhang_/100058421-111388-01…; alt=""></center>

当未实例化数字时钟时,PSSYSMON_REF_CLK 会将其提供给 PSSYSMON 和 PL SYSMON。

该时钟是基于 PSSYSMON_REF_CTRL 寄存器中的设置生成的。
<center><img src="http://xilinx.eetrend.com/files/2020-11/wen_zhang_/100058421-111389-02…; alt=""></center>

这个寄存器包含选择输入锁相环时钟的位。

输入时钟可以来自 RPLL 或 IOPLL(它们都配备了除以 2 的输出),也可以来自 DPLL_CLK_TO_LPD,后者是 DPLL 的一个分割版本。

这个除数可在 DPLL_TO_LPD_CTRL 寄存器中看到。

IOPLL 设置可在 IOPLL_CTRL 寄存器中看到。

RPLL 设置可在 IOPLL_CTRL 寄存器中看到。这些都是 CRL_APB 寄存器组的一部分。

PSSYSMON_REF_CTRL 还可设置两个分隔符 DIVISOR0 和 DIVISOR1,其可生成 PSSYSMON_REF_CLK。

然后可将 PSSYSMON_REF_CLK 传递给 SYSMON 单元,再在 SYSMON 配置寄存器中对其进行进一步划分,以生成 ADC 时钟。

还可以检查从 Vivado 中的处理器配置向导设置的时钟。

在这个示例中,可以看到 IOPLL 已被选中。

其 VCO 为 3000Mhz,而且启用了 DIV2 设置。这意味着将 1500Mhz 传递给 PSSYSMON_REF_CTRL 模块。

请求 PSSYSMON_REF_CLK 为 50MHz。

在本例中,DIVISOR0 设置为 30,而 DIVISOR1 设置为 1。
<center><img src="http://xilinx.eetrend.com/files/2020-11/wen_zhang_/100058421-111390-03…; alt=""></center>