1. 项目概述:为什么时钟架构是嵌入式系统的“心跳”
在任何一个复杂的嵌入式系统里,时钟信号就像是整个系统的“心跳”和“节拍器”。它决定了处理器执行指令的速度、内存存取数据的节奏、外设之间通信的同步性。一个设计不当的时钟系统,轻则导致串口通信乱码、音频播放卡顿、视频显示撕裂,重则引发系统死锁、数据丢失等致命错误。因此,深入理解并掌握系统的时钟架构,是每一个嵌入式开发者从“能用”走向“精通”的必经之路。
今天,我们就以德州仪器(TI)AM系列片上系统(SoC)中广泛使用的 PRCM(Power, Reset, and Clock Management)模块 为核心,深入拆解其内部的时钟架构设计。PRCM模块远不止是一个简单的时钟发生器,它是一个高度集成的电源、复位和时钟管理中枢。我们收到的资料片段,恰好聚焦于其最复杂的部分——由多个 低抖动锁相环(DPLLLJ) 构成的时钟生成与分配网络,特别是针对USB、DDR、视频和音频这些对时序要求极为苛刻的子系统。
这篇文章的目标,是让你不仅看懂那些复杂的时钟结构框图和数据手册表格,更能理解每个设计选择背后的“为什么”。我们会从最基础的PLL原理讲起,逐一剖析USB PLL如何精准产生48MHz时钟以满足USB协议,DDR PLL如何为双通道内存提供同步时钟,视频PLL如何支持从标清到4K的多种显示分辨率,以及音频PLL如何生成那些看似古怪却至关重要的音频主时钟频率。最后,我会分享在实际项目中配置这些时钟时踩过的“坑”和总结出的实战经验,让你在未来的设计中能少走弯路。
2. 核心原理:DPLLLJ与时钟树设计精要
在深入各个子模块之前,我们必须先打好两个基础:一是理解AM系列SoC使用的核心时钟生成单元—— DPLLLJ ;二是看懂TI是如何通过“时钟树”来管理和分配这些时钟的。
2.1 DPLLLJ:低抖动锁相环的运作奥秘
资料中反复出现的DPLLLJ,全称是“Digital Low-Jitter Phase-Locked Loop”,即数字低抖动锁相环。它与传统的模拟PLL或基础的DPLLS相比,最大的优势在于其极低的输出时钟抖动(Jitter),这对于高速串行接口(如USB、SATA、HDMI)和音频编解码至关重要,因为时钟抖动会直接转化为信号噪声和误码率。
它的核心结构如图2-19所示,我们可以将其工作流程拆解为几个关键环节:
-
参考时钟输入与分频(N分频) :外部输入的稳定时钟
CLKINP(通常来自20MHz的DEVOSC或20-30MHz的AUXOSC)首先经过一个可编程的N+1分频器,产生内部参考时钟REFCLK。即REFCLK = CLKINP / (N+1)。这一步的目的是将外部时钟频率降低到一个适合PLL内部鉴相器(PFD)工作的频率,同时,通过调整N值,可以改变PLL的环路带宽和锁定速度。 -
频率合成与抖动优化(M分频与Σ-Δ调制) :这是DPLLLJ的精华所在。锁相环的核心是一个数字控制振荡器(DCO)。通过一个可编程的乘法因子
M(包含整数部分和小数部分)对REFCLK进行倍频。DPLLLJ支持高达18位的小数分频(Fractional-N),这意味着你可以合成出频率分辨率极高的时钟。例如,要从20MHz参考时钟产生44.1kHz的整数倍音频时钟(如11.2896MHz),小数分频技术就必不可少。同时,集成的高阶Σ-Δ调制器能进一步将量化噪声推向高频,再通过PLL的低通滤波特性将其滤除,从而在输出端获得极低抖动的时钟信号。最终,DCO的输出频率为DCOCLK = CLKINP * [M / (N+1)]。 -
输出分频与驱动(M2分频) :DCO产生的频率可能很高,需要经过第二个可编程分频器
M2,才能得到最终输出的时钟CLKOUTLDO。即CLKOUTLDO = DCOCLK / M2 = CLKINP * [M / ((N+1) * M2)]。CLKOUTLDO这个命名也暗示了它是在芯片内部的LDO(低压差线性稳压器)电源域下驱动的,这有利于隔离噪声,保证时钟质量。 -
旁路模式与安全保障 :所有DPLLLJ上电复位后都处于旁路(Bypass)模式。此时,输出时钟
CLKOUT直接来源于输入时钟CLKINP或一个专用的低频旁路时钟CLKINPULOW,并经过一个独立的分频器N2。这确保了系统在PLL配置、锁定过程中,始终有一个虽然性能不高但可用的时钟,避免系统“卡死”。软件需要正确配置M、N、M2等参数,等待PLL锁定指示位生效后,才能将PLL切换出旁路模式,使用其合成的高性能时钟。
注意 :配置PLL时,必须严格遵守数据手册中每个PLL在不同工作电压(OPP)下的频率范围限制。超频使用可能导致PLL无法锁定,或即使锁定也会因抖动过大而导致系统不稳定。
2.2 时钟树:系统级的时钟分配网络
理解了时钟如何产生,接下来就要看它如何被送到各个角落。PRCM模块构建了一个复杂的“时钟树”。你可以把它想象成一座城市的供水系统:DPLLLJ是水厂(水源),产生不同“水压”(频率)的水;时钟树是管道网络;而各个外设模块(USB、DDR、Display等)就是千家万户。
这个网络的核心组件是 多路复用器(MUX) 和 分频器(DIV) 。
- 多路复用器(MUX) :就像一个多路开关。例如,UART3的功能时钟可以从SYSCLK8(192MHz)、SYSCLK10(48MHz)或SYSCLK6(L4低速时钟)中选择。这通过
MCBSP_UART_CLKSRC寄存器的对应位来控制。这种设计提供了巨大的灵活性,允许开发者根据功耗、性能需求为外设选择最合适的时钟源。 - 分频器(DIV) :用于对时钟进行降频。通常支持
/1到/8的可编程分频。例如,SYSCLK10时钟可以通过CM_SYSCLK10_CLKSEL.[CLKSEL]位域进行分频,为SPI、I2C提供不同速率的时钟。
时钟域 的概念也至关重要。SoC内部并非只有一个统一的时钟。例如:
- L4慢速时钟域 :通常用于系统控制模块、电源管理等对性能要求不高的部分。
- 外设功能时钟域 :如SYSCLK8、SYSCLK10,用于驱动UART、SPI、I2C等外设的核心逻辑。
- 接口时钟域 :如USB PHY的960MHz/48MHz时钟,DDR PHY的数百MHz时钟,这些时钟与物理层接口紧密相关,对抖动和时序要求极严。
PRCM模块的精妙之处在于,它通过精细的时钟门控(每个时钟分支都有独立的使能位)和灵活的源选择,使得开发者可以为每个模块、甚至在每种工作模式下,独立地优化其时钟配置,从而实现性能与功耗的最佳平衡。
3. USB PLL时钟结构:从960MHz到48MHz的精准转换
USB接口对时钟精度有着严格的要求。全速(Full-Speed)USB通信需要精确的48MHz时钟,误差必须在±0.25%以内。AM系列SoC的USB PLL(DPLL_USB)就是为此而生的专用时钟引擎。
3.1 时钟生成路径详解
根据图2-8和描述,USB PLL的时钟生成路径非常清晰:
- 核心频率合成 :DPLL_USB以20MHz的DEVOSC或其它参考时钟作为输入
CLKINP,通过其内部的倍频(M)和分频(N, M2)链,直接产生一个 960MHz 的高频时钟。这个960MHz时钟是USB 2.0 PHY物理层所需的核心时钟。


315


被折叠的 条评论
为什么被折叠?



