购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 时钟子系统

通过对3个PLL进行编程,可以由PS时钟子系统产生时钟。这些PLL中的每个时钟都与CPU、DDR和外设系统相关。

3.1.1 时钟子系统的架构

时钟子系统包含的主要模块如图3.1所示。可以看出,在通常操作模式下,由PS_CLK驱动PLL;在PLL旁路模式下,PS_CLK直接为各种时钟生成器产生时钟,此时并不通过PLL。

上电复位后,对PLL旁路模式引脚进行采样,在PLL旁路模式和用于3个PLL的PLL使能模式之间进行选择。很明显,采用PLL旁路模式运行系统比采用普通模式运行系统要慢。但是,PLL旁路模式可以用于低功耗应用和调试。在处理完启动过程后,当执行用户代码时,由软件分别控制PLL旁路模式和每个PLL的输出频率。

1.3个PLL

(1)单个外部参考时钟,用于3个PLL的输入。

①ARM PLL:通常用于CPU和互联的时钟源。

②DDR PLL:通常用于DDR DRAM控制器和AXI_HP接口的时钟源。

③I/O PLL:通常用于I/O外设的时钟源。

(2)单个PLL旁路控制,对输出频率进行编程。

(3)用于VCO的共享带隙参考电压电路。

图3.1 时钟子系统包含的主要模块

2.时钟分支

Zynq-7000 SoC内的时钟分支如下。

(1)6位可编程分频器。

(2)支持大多数时钟电路的动态切换。

(3)用于PL的4个时钟生成器。

3.复位

时钟子系统是PS的一部分。复位系统时也复位时钟子系统,所有用于控制时钟模块的寄存器的值都恢复到其复位时的默认值。

从系统观点呈现出来的系统时钟域如图3.2所示。从图3.2中可以看出,中央互联有两个主时钟域:DDR_2x和CPU_2x。图3.2中存在5个子互联,其中4个在CPU_2x时钟域,另一个在DDR_2x时钟域。

(1)CPU(通过L2高速缓存)和DDR控制器之间的直接通路在DDR_3x时钟域,以保证最高的吞吐量。

(2)CPU和OCM之间的直接通路在CPU_6x4x时钟域。

(3)SCU ACP和PL之间的直接通路在CPU_6x4x时钟域(通过在PL的PS一侧的异步AXI桥实现穿越PL时钟域和CPU时钟域)。

思考与练习3.1:请根据图3.2分析Zynq-7000 SoC的时钟域,以及不同时钟域的特点。

图3.2 从系统观点呈现出来系统时钟域

3.1.2 CPU时钟域

生成CPU时钟和作用域的详细结构如图3.3所示。一个CPU时钟频率的例子如表3.1所示。

图3.3 生成CPU时钟和作用域的详细结构

表3.1 CPU时钟频率的例子

从表3.1中可以看出,CPU时钟域主要由4个独立的时钟构成:CPU_6x4x、CPU_3x2x、CPU_2x和CPU_1x。

注:这4个时钟的名字是根据时钟频率命名的,它们之间的关系为6:3:2:1或4:2:2:1。

所有的CPU时钟互相同步;而DDR时钟则互相独立,并且独立于CPU时钟。I/O外设时钟,如CAN参考时钟和SDIO参考时钟都通过类似的方法产生,即来自PS_CLK引脚,通过PLL和分频器,最终到达目的外设。每个外设时钟和其他时钟都是完全异步的。

注:PS的每个外设都有一个独立的门控,用于控制CPU时钟,这是一个无毛刺的门电路。

3.1.3 时钟编程实例

在6:2:1模式下,Zynq-7000 SoC时钟频率设置的两个例子如表3.2所示。例子1的时钟频率为33.333MHz,例子2的时钟频率为50MHz。

表3.2 用于6:2:1模式的时钟频率设置的两个例子

续表

注:“~”表示没有第二级分频器。

由表3.2可知,PLL的输出频率由输入时钟PS_CLK的频率与PLL反馈分频器值( M 值)相乘得到。例如,用于ARM PLL的时钟频率为33.333MHz×40≈1333MHz。对于一些外设时钟,如CAN和以太网等,有两级分频器。

3.1.4 时钟子系统内的生成电路结构

本节介绍时钟子系统内的生成电路结构,包括基本时钟分支设计、DDR时钟域、I/O外设时钟、GPIO和I2C时钟,以及PL时钟和跟踪端口时钟。

1.基本时钟分支设计

每个时钟生成电路都包含一些不同的单元,如图3.4所示。

(1)用于选择时钟源的2:1多路选择器。

(2)可编程分频器。

(3)无毛刺时钟门。

图3.4 时钟生成电路

2.DDR时钟域

在Zynq-7000 SoC内,有两个单独的DDR时钟域:DDR_2x和DDR_3x,如图3.5所示。

(1)DDR_2x驱动AXI_HP端口和由AXI_HP到DDR互联模块的AXI_HP互联路径。

(2)DDR_3x驱动DDR端口、控制器和DRAM接口。

这些时钟之间是异步关系,它们之间有很宽的频率比值范围。

图3.5 DDR时钟生成

3.I/O外设时钟

I/O外设时钟包括USB时钟、以太网时钟、SDIO时钟、SMC时钟、SPI时钟、四-SPI时钟、UART时钟、CAN时钟。

1)USB时钟

USB时钟来自一个USB MIO引脚。USB时钟通过一个时钟门,用于USB控制器的时钟接口一侧,如图3.6所示。

图3.6 USB时钟

2)以太网时钟

以太网时钟生成网络如图3.7所示。

(1)以太网接收时钟。

从图3.7中可以看到,有两个以太网接收时钟,即ENET[0]_RX_CLK和ENET[1]_RX_CLK。

①在通常的功能模式下,通过MIO引脚,以太网时钟可以来自外部以太网物理芯片,也可来自扩展的MIO(EMIO)。

②对于MAC内部环路模式,这些时钟来自内部的以太网参考时钟。这些时钟通过时钟门进行控制,用于功耗控制。

因为源时钟可能并没有出现,所以源选择和环路选择多路复用开关不是无毛刺的。因此,在改变选择之前,应使用时钟门进行控制。为了支持环路模式,提供分别由ENET[0]_REF_CLK和ENET[1]_REF_CLK生成的ENET[0]_RX_CLK与ENET[1]_RX_CLK。

(2)以太网发送时钟。

模块要求产生两个以太网时钟,即ENET[0]_REF_TX_CLK和ENET[1]_REF_TX_CLK。这些时钟用于以太网MAC发送一侧,并且作为RGMII接口的同步输出时钟。当选择MAC内部环路模式时,它们也用来提供一个连接到以太网接收路径的稳定参考时钟。

图3.7 以太网时钟生成网络

此外,这些时钟还可以来自EMIO。在这种情况下,禁止相关的RGMII接口。通过MII或GMII接口,MAC连接到Zynq-7000 SoC内的PL部分,MAC与MII和GMII无关。通常,在MII模式下,TX_CLK是输入;在GMII模式下,TX_CLK是输出。

当MAC工作在MII或GMII模式下时,MAC的参考时钟由PL通过eth*_emio_tx_clk提供。EMIO源多路复用开关是有毛刺的,这是因为此时并不能依赖所出现的EMIO源时钟。因此,预知时钟源的选择是静态的,或者在改到EMIO时钟源之前,对所生成的时钟进行门控。

3)SDIO/SMC/SPI/四-SPI/UART时钟

SDIO模块、SMC模块、SPI模块、四-SPI模块和UART模块的时钟编程模型相同,如图3.8所示。每个I/O外设控制器共享PLL源和分频器的值,并且可以单独使能/禁止这些外设时钟。

图3.8 SDIO/SMC/SPI/四-SPI/UART时钟

4)CAN时钟

两个控制器局域网络(CAN)参考时钟分别为CAN0_REF_CLK和CAN1_REF_CLK,如图3.9所示。所有时钟共享相同的PLL源和分频器。每个时钟均有独立的源选择,即MIO引脚或时钟生成器,以及单独的时钟门控。这些时钟用于CAN外设的I/O接口一侧。

图3.9 CAN时钟生成网络

4.GPIO和I2C时钟

通过互联,由APB接口时钟给GPIO和I2C模块提供时钟。

5.PL时钟

Zynq-7000 SoC内的PL有它自己的时钟管理模块,如图3.10所示。此外,它还接收来自PS一侧时钟生成器提供的4个时钟信号。

注:所产生的4个时钟之间是完全异步的,没有任何关系。4个时钟来自PS内所选择的PLL。每个PL时钟都有独立的输出信号,用于为PL产生合适的时钟波形。

图3.10 PL时钟管理模块

6.跟踪端口时钟

跟踪端口时钟用于驱动Zynq-7000 SoC调试内部的顶层跟踪端口和跟踪缓冲区,如图3.11所示。这个生成的时钟频率必须是所期望跟踪端口时钟频率的2倍。

图3.11 跟踪端口时钟

此外,一方面,必须使TRACE_CLK的频率足够高,这样跟踪端口就能跟上正在跟踪数量的数据;另一方面,TRACE_CLK要足够慢,用于满足输出缓冲区的动态特性。为了满足灵活性要求,从一个分频的内部PLL输出产生TRACE_CLK用于MIO。 y8MvR+58GDG7Z/wKsI/gt+3SYO9d7En7py6xJvjYxsoAx44wqqE4AT5YiK0u7CRt

点击中间区域
呼出菜单
上一章
目录
下一章
×