第四章 时钟系统原理图分析:主时钟晶振电路、PLL时钟分配、RTC时钟电路
时钟系统,说白了就是开发板的「心跳」。没有它,整个系统就是一具空壳。我做了这么多年硬件,见过太多因为时钟设计翻车的案例——有的板子跑不起来,有的跑起来但噪声大得吓人,还有的RTC时间越走越偏。嗯,今天咱们就把联发科开发板的时钟系统掰开揉碎了讲清楚。
4.1 主时钟晶振电路
主时钟晶振,通常是一个26MHz的晶体振荡器。为什么是26MHz?因为联发科的基带和射频部分需要这个频率来做频率合成。我个人习惯,拿到原理图第一件事就是看晶振的负载电容选对了没有。
关键点:晶振电路的核心是晶体 + 两个负载电容 + 一个反馈电阻。联发科平台通常要求负载电容在8pF到12pF之间,具体看芯片手册。
来看一个典型的电路结构:
// 主时钟晶振电路示意(26MHz)
// XTAL_IN 和 XTAL_OUT 连接到 SoC
+----[C1]----GND
|
XTAL_IN--+----[26MHz]----+--XTAL_OUT
| Crystal |
+----[C2]----GND
// 反馈电阻 Rf 通常为 1MΩ,并联在晶体两端
// C1 = C2 = 10pF(典型值,需根据PCB寄生电容调整)
这里有个坑,我踩过。有一次项目赶进度,我直接抄了参考设计的电容值,结果板子回来发现频率偏了200ppm。后来查了半天,发现是PCB走线的寄生电容没算进去。你想想看,本来设计10pF,结果走线自己就带了2pF,实际等效电容变成了12pF,频率当然会偏。
我的经验:计算负载电容时,一定要把PCB走线电容算进去。一般微带线每厘米约1pF,过孔约0.5pF。公式很简单:C_load = (C1*C2)/(C1+C2) + C_stray。如果C1=C2=10pF,C_stray=2pF,那实际负载电容就是7pF,而不是10pF。
4.2 PLL时钟分配
主时钟进来之后,会送到SoC内部的PLL(锁相环)模块。联发科的PLL架构很有意思,它通常包含多个PLL,分别给CPU、GPU、DDR、总线等不同模块提供时钟。
我一般把PLL时钟分配分成三层来看:
- 第一层:源时钟——就是那个26MHz晶振,所有PLL的参考源
- 第二层:PLL输出——每个PLL产生一个高频时钟,比如CPU PLL输出2.0GHz
- 第三层:分频器——每个模块内部还有分频器,把PLL输出降到实际需要的频率
举个例子,联发科MTK6765平台的时钟分配表大致如下:
| 时钟域 | 源PLL | 典型频率 | 用途 |
|---|---|---|---|
| ARMCPU | PLL1 | 2.0GHz | Cortex-A53 核心 |
| GPU | PLL2 | 650MHz | Mali-G52 |
| DDR | PLL3 | 1600MHz | LPDDR4 |
| 总线 | PLL4 | 400MHz | AXI/AHB 总线 |
| 外设 | PLL5 | 48MHz | USB、SDIO |
为什么要分这么多PLL?说白了,不同模块对时钟的要求不一样。CPU需要高频低抖动,DDR需要精确的频率匹配,外设则更关注功耗。如果所有模块共用一个PLL,那设计就太僵化了。
注意:PLL的供电必须干净!我见过有人把PLL的AVDD和数字VDD混在一起,结果时钟抖动大得离谱,DDR跑不到标称频率。建议PLL供电单独走一个LDO,或者至少加一个π型滤波器。
4.3 RTC时钟电路
RTC时钟,也就是实时时钟。它负责在系统休眠或断电时保持时间。联发科平台通常使用32.768kHz的晶振,为什么是这个频率?因为2^15 = 32768,用15位计数器就能精确产生1秒的脉冲。
RTC电路看起来简单,其实最容易出问题。我曾经在一个项目中,RTC时间每天慢5分钟。查到最后,发现是晶振的负载电容选错了,导致频率偏差太大。
// RTC晶振电路示意(32.768kHz)
// RTC_XI 和 RTC_XO 连接到 SoC 的 RTC 模块
+----[C1]----GND
|
RTC_XI--+----[32.768kHz]----+--RTC_XO
| Crystal |
+----[C2]----GND
// C1 = C2 = 12.5pF(典型值)
// 注意:RTC晶振对电容非常敏感,偏差1pF可能就导致每天几秒的误差
RTC电路有几个设计要点,我总结一下:
- 晶振选型:一定要选32.768kHz的贴片晶振,精度至少±20ppm。我建议用±10ppm的,贵不了几毛钱,但可靠性好很多。
- 负载电容:这个最容易被忽略。晶振的规格书会给出推荐负载电容,比如12.5pF。但PCB走线、芯片引脚都会贡献电容,所以实际焊接的电容值要适当减小。
- 走线隔离:RTC走线要远离高频信号,尤其是DDR和射频部分。我见过有人把RTC走线贴着DDR走,结果时钟被干扰得乱七八糟。
- 备用电池:联发科平台通常支持RTC备用电池,一般是纽扣电池CR2032。注意电池的放电电流,RTC模块在休眠时电流只有几微安,一颗电池能用好几年。
避坑指南:我曾经遇到一个案例,RTC在低温下(-20°C)完全失效。后来发现是晶振的温漂太大,低温下频率偏移超过了RTC模块的容忍范围。解决方案很简单——换用温补晶振(TCXO),虽然贵一点,但全温范围内精度能保持在±5ppm以内。
4.4 时钟系统的整体验证思路
拿到原理图后,我一般按这个顺序检查时钟系统:
- 看晶振电路:检查负载电容值、反馈电阻、晶振型号是否与芯片手册一致
- 看PLL供电:确认每个PLL的AVDD都有独立的滤波电容,通常是一个10uF+0.1uF的组合
- 看时钟输出:联发科SoC通常会有CLK_OUT测试点,方便用示波器测量实际频率
- 看RTC电路:检查备用电池的充电电路、防倒灌二极管、负载电容
- 看时钟树:确认每个模块的时钟源选择是否正确,有没有时钟门控
嗯,时钟系统就讲到这里。说白了,时钟设计就是「源头要稳、分配要清、供电要净」。你只要记住这三点,大部分时钟问题都能提前规避。下一章咱们开始分析电源系统,那可是另一个容易翻车的地方。