CPU时钟被用于大多数内部时钟。
图25-3展示了CPU时钟域中的时钟生成网络。
一、CPU时钟分频器限制
为了提高送往CPU和DDR的高速时钟质量,要求它们通过slcr.ARM_CLK_CTRL [DIVISOR]位字段被偶数整除。对于slcr.ARM_CLK_CTRL [DIVISOR],软件必须将其编程为等于或大于2的值。
这里,slcr 指的是 System Level Control Register(系统级控制寄存器),而 ARM_CLK_CTRL是控制Arm Cortex-A9 CPU的时钟。
二、时钟的应用
在正常使用中,大多数系统时钟都是从输入时钟PS_CLK派生出来的,它会通过PLL,并最终进行分频,以便在PS内部使用。CPU时钟域控制Arm处理器以及许多CPU外设。
CPU时钟域由四个独立的时钟组成:CPU_6x4x、CPU_3x2x、CPU_2x和CPU_1x。这四个时钟的名称是根据它们的频率来命名的,这些频率与两种比例之一相关:6:3:2:1或4:2:2:1(简称6:2:1和4:2:1)。工作时钟比例由CLK_621_TRUE [0]位值确定。在6:2:1模式下,CPU_6x4x时钟的频率是CPU_1x时钟的6倍。
所有CPU时钟彼此之间都是同步的;而DDR时钟则彼此独立,且与CPU时钟独立。I/O外设时钟(如CAN参考时钟和SDIO参考时钟)都是通过类似的方法生成的,从PS_CLK引脚开始,通过PLL,然后分频器,最后到达外设目标。每个外设时钟都完全与其他时钟异步。
三、停止CPU时钟
每个CPU时钟都可以单独通过slcr.A9_CPU_RST_CTRL.A9_CLKSTOP{0,1}来停止。
这里,slcr 指的是 System Level Control Register(系统级控制寄存器),而 A9_CPU_RST_CTRL 是控制Arm Cortex-A9 CPU复位和时钟停止的寄存器。A9_CLKSTOP{0,1} 则是该寄存器中的字段,用于控制特定的CPU核心(如Core 0和Core 1)的时钟停止功能。
通过将这些字段设置为适当的值,可以停止或启动特定CPU的时钟。例如在不需要某些CPU时可以将其置于低功耗状态。
但是,需要注意的是,在停止CPU时钟之前,必须确保该IP 核上的所有活动都已正确完成或保存,以避免数据丢失或系统不稳定。重新启动已停止的CPU时钟时,也需要确保系统能够正确地恢复IP 核的执行状态。
四、PS外设AMBA时钟
PS中的每个外设都有自己独立门控的CPU时钟,用于其AMBA总线与控制和状态寄存器之间的连接,有时也用于控制器逻辑本身。当保证外设不会被寻址时,可以禁用这个时钟。这种门控是通过无抖动时钟门控实现的,如表25-2所示。
AMBA(Advanced Microcontroller Bus Architecture)是ARM公司提出的一种先进的微控制器总线架构,它定义了处理器与外设之间的通信接口。
五、系统性能
PS中不同时钟域的时钟频率有助于决定整个系统的性能。在许多情况下,最高频率的CPU时钟会导致最高的性能。然而,一些用户会发现CPU并不是系统中的关键性能瓶颈,而互联的带宽才是限制因素。在这种情况下,将比率从6:2:1切换到4:2:1模式可能会很有用。
根据设备速度等级,CPU时钟的频率在6:2:1模式下可能受到cpu_6x的限制,而在4:2:1模式下可能受到cpu_2x时钟的限制。因此,对于那些可能牺牲一些CPU性能以换取互联性能的应用程序,建议查阅相应的数据手册,以确定最佳频率。
六、时钟发生器设计
每个时钟生成电路都包含几个不同的组件。下面描述一个通用模板,用于解释以下所有I/O外设时钟所使用的组件。最基本的类型包括:
• 2选1多路复用器,用于选择时钟源
• 可编程分频器
• 无毛刺时钟激活门
图25-4描述了时钟生成器的基本特征。
1、PLL(相位锁定环)
PLL使用反馈分频器来创建一个输出时钟,该时钟等于输入参考时钟乘以SLCR提供的PLL_FDIV值。
2、Glitch-Free Clock Multiplexers(无毛刺时钟多路复用器)
当需要在两个时钟源之间进行动态选择时,无毛刺多路复用器(GFM)会在新选定的时钟的低相位开始时,在时钟的低相位上改变时钟选择。GFM只有在两个输入时钟都活跃时才能正常工作。如果任一时钟不活跃时进行切换,切换操作将失败。
3、Glitch-Free Divider(无毛刺分频器)
无毛刺分频器接收一个输入时钟作为输入,并根据分频器值进行分频。当分频器值改变时,输出会平滑地过渡到新的时钟频率,而不会产生任何毛刺。
4、Glitch-Free Clock Gate(无毛刺时钟门控)
当需要动态门控来启用和禁用时钟源时,会使用无毛刺时钟门控。该门控确保时钟在其低相位上干净地终止并重新启用。
5、Clock Select Multiplexers(时钟源多路复用器)
时钟源多路复用器用于在选择本地时钟发生器生成的时钟和外部时钟源之间进行选择。时钟源多路复用器并不是无毛刺的。
在时钟发生器设计中,这些组件协同工作,以生成并分配正确的时钟信号给系统中的各个部分。2选1多路复用器允许从多个可能的时钟源中选择一个,这对于在不同操作模式或工作负载下灵活调整时钟信号非常有用。可编程分频器则用于调整时钟信号的频率,以满足不同组件或外设的需求。无毛刺时钟激活门确保在切换时钟源或调整频率时,输出的时钟信号是平滑且无毛刺的。
设计时钟发生器时,需要仔细考虑各个组件的配置和参数设置,以确保生成的时钟信号满足系统的时序和性能要求。同时,还需要考虑功耗和散热等因素,以确保设计的可行性和可靠性。