尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

硬件时钟学习DAY2——晶振技术全解析:从原理到选型指南

硬件时钟学习DAY2——晶振技术全解析:从原理到选型指南 硬件时钟学习DAY2——晶振技术全解析从原理到选型指南做硬件这些年时钟系统一直是我觉得最“基础又深奥”的部分。说基础是因为几乎每块板子都离不开晶振说深奥是因为晶振选型或者电路设计一旦有问题板子可能永远“有气无力”程序烧不进去、UART乱码、以太网训不下链、摄像头出雪花最后查来查去源头竟然是一个不起眼的小晶振。今天这篇是时钟学习系列的第二篇专门聊晶振。我不会堆一堆厂商Datasheet上的公式就完事而是从“晶振为什么能振”“参数怎么看”“电路怎么搭”“板子出了问题怎么查”四个角度把原理和选型串起来讲。适合刚接触嵌入式的学生、转行做硬件的新人以及那些已经画过几版板子但还没系统梳理过时钟体系的工程师。1. 时钟从哪儿来晶振在硬件系统中的角色定位1.1 时钟对硬件系统意味着什么你可以把时钟信号想象成一支乐队的指挥每个芯片、每条总线、每个外设都在等这个指挥挥下那一拍然后才执行对应的动作。CPU取指、DMA搬运、UART按波特率采样、以太网PHY的PLL锁定、HDMI的TMDS时钟恢复全都要有一个明确的节拍来源。指挥节奏不稳乐队就会乱时钟信号有抖动或频偏系统就会出各种奇奇怪怪的问题。不同芯片对时钟源的需求还不一样。MCU一般只需要一个低频或中频参考时钟比如STM32用8MHz的HSE经内部PLL倍频后得到72MHz或168MHz的主频SoC跑Linux往往需要多个频率的时钟比如24MHz给USB PHY、25MHz给以太网PHY、32.768kHz给RTC视频采集芯片对像素时钟和MIPI时钟的要求更严格像NVP6324这类模拟高清视频解码芯片它的时钟幅度和抖动直接决定输出的画面是否稳定。可以说晶振是系统时序设计的“地基”地基没打好后续的跨时钟域处理、时钟树约束配置就算再小心也很难把问题彻底抹掉。1.2 无源晶体与有源晶振怎么区分我们日常说的“晶振”其实经常把两种东西混在一起一种叫晶体也叫无源晶振英文是Crystal或XTAL另一种叫振荡器也叫有源晶振英文是Oscillator或XO。二者差别很大选错的话电路工作方式完全不一样。无源晶振本质是一个石英晶体谐振器它自己不具备产生振荡信号的能力必须配合芯片内部的振荡电路反相器加反馈电阻才能工作。我们画STM32最小系统时给OSC_IN和OSC_OUT接的那两个引脚就是无源晶振接口。这种方案的优点是成本低、封装小缺点是需要自己注意匹配电容和振荡电路的驱动能力。有源晶振则把振荡电路集成在了四脚封装内部你只要给它供电它就直接输出一个完整的时钟信号通常是方波或削顶正弦波。它的优点是信号质量好、输出电平稳定、不需要额外设计振荡匹配电路缺点是贵、功耗大、引脚多。在FPGA、SoC、高速SerDes这些对时钟质量要求较高的场合基本都用有源晶振。2. 晶振工作原理解析石英晶体为什么会“准时”2.1 压电效应与谐振的物理基础晶振的核心是一小片石英晶体。石英有一种压电效应你给它施加机械压力它两端会产生电压反过来你给它加上电压它会沿特定方向发生机械形变。这个特性让石英晶体可以成为一个天然的“机械谐振器”。当我们在晶体两端施加一个交变电压晶体就会按自己的机械谐振频率振动起来同时振动又反过来在电极上感应出交变电压。在谐振频率附近晶体的等效阻抗会急剧变化从纯电容性变成电阻性再变成电容性形成极窄的高Q值谐振峰。石英晶体的Q值通常在几万到几十万之间而普通的LC谐振回路的Q值顶多几百。Q值越高频率选择性越强对外围电路扰动就越不敏感这也是为什么晶振能把频率稳定在几十个ppm甚至更小偏差的关键原因。2.2 等效电路模型C0、C1、L1、R1用大白话怎么理解电气工程师分析晶振时不会去解石英晶体的力学方程而是把晶体等效成一个RLC网络。这个模型是晶振一切参数的基础值得花点时间搞明白。晶振等效电路由一条动态串联支路和一个静态电容并联组成。动态串联支路里有一个动态电容C1典型值飞法级别几fF到几十fF、一个动态电感L1典型值几十mH到几百mH、还有一个等效串联电阻R1也就是ESR典型值几欧姆到几十欧姆并联在两端的是静态电容C0主要是电极和引线间的寄生电容典型值1~7pF。动态支路决定晶振的谐振特性C0则会影响频率的牵入范围以及振荡条件。为什么C1会小到飞法因为它对应的是石英晶体的弹性形变机械刚度极大电学等效过来自然非常小。C1越小L1就得越大才能凑出谐振频率这也正是石英晶振Q值极高的物理来源。理解这个模型的意义在于晶振选型时看的负载电容CL、频率牵引量、起振时间全都可以从这个模型推导出来而不是靠盲猜。2.3 串联谐振与并联谐振负载电容为什么能微调频率晶振在实际使用中存在两个重要频率点。一个是串联谐振频率fs此时动态支路LC谐振阻抗最小且纯阻性另一个是并联谐振频率fa此时整个等效电路发生并联谐振阻抗极大。两频率之间的差值很小通常只有几百到几千ppm具体取决于C1和C0的比值。工程上用的晶振标称频率多半落在这两个谐振点之间。通过改变外部负载电容CL可以微调晶振的实际振荡频率这就是我们常说的“拉频”能力。频率牵引量满足一个近似公式Δf / f ≈ C1 / (2 × (C0 CL))举个例子某颗8MHz晶振C118fFC05pF如果负载电容CL选10pF那么频率偏移相对标称值大约是18e-15 / (2 × (5e-12 10e-12))算出来约600ppm。这颗晶体如果标称负载是20pF你按CL10pF设计频率就会偏接近300ppm左右换算成8MHz就是2.4kHz的偏差。对UART这种本身抗频偏能力较强的外设也许问题不大但对需要高精度定时的场景就是灾难。所以负载电容不是一个随便填的值而是决定系统频率准确度的关键参数。3. 晶振核心参数深度解读从频偏到抖动一次讲清3.1 频偏、温漂、老化三个影响“准”字的参数晶振Datasheet首页通常有一个频率稳定度的指标写成±10ppm、±20ppm或者±50ppm。ppm是parts per million百万分之一。10ppm意味着每1MHz会产生10Hz的频率偏差折算到一天时间就是约0.864秒的漂移。32.768kHz的RTC晶振一般是±20ppm对应一天误差在1秒多这个量级对普通电子钟够用对需要高精度授时的系统就不行了。频偏主要由三部分构成。第一是初始频偏也就是晶振出厂时的频率误差由生产过程中的切角精度决定第二是温漂石英晶体的谐振频率会随温度变化尤其32.768kHz音叉晶振在宽温范围下容易跑偏所以很多RTC产品在-40℃和85℃两个极端温度下误差明显大于常温第三是老化晶振使用一段时间后频率会缓慢漂移高品质有源晶振能做到一年老化1ppm以内普通晶振老化量可能是它的五到十倍。工程中区分这三个概念很重要。如果一块板子刚上电时时钟就偏很多多半是初始频偏或负载电容没配对如果刚上电精度正常、工作一段时间后越来越偏就要考虑温漂或者激励功率过大导致的发热漂移如果设备用了两年之后时钟慢慢不准了那就是老化在起作用。3.2 相位噪声与抖动高速系统更关心的时钟质量指标比频偏更隐蔽的参数是抖动和相位噪声。频偏说明“平均频率准不准”抖动则说明“每一拍之间到底稳不稳”。晶振输出信号的每个上升沿并不会精确落在理想时间点上而会随机地前后晃动这个晃动就叫抖动。通常用RMS值表示单位是皮秒ps。抖动又分成随机抖动和确定性抖动。随机抖动来源于热噪声和散粒噪声呈高斯分布确定性抖动来源于电源干扰、串扰、以及信号反射表现为有界的峰值抖动。衡量晶振导致的抖动时Datasheet里常给一个最大RMS相位抖动指标比如在12kHz到20MHz积分带宽内不超过1ps。高速SerDes、以太网、USB、PCIe这些接口对参考时钟抖动都有严格要求抖动超标会导致接收端误码率上升。相位噪声和抖动本质上是同一个物理现象在频域和时域上的两种表现。相位噪声看的是偏离载波不同频段处的噪声功率密度单位dBc/Hz。离载波越近的相位噪声对应越长时间的漂移离载波越远的噪声对应越短时间的抖动。做射频的本振选型时更爱看相位噪声指标而做数字系统时钟时更关注RMS抖动值。3.3 激励功率与ESR不起振和频率不稳的隐形元凶晶振有一个很容易被忽视的参数叫激励功率或者叫激励电平。它指的是晶振在工作时实际消耗的功率典型允许值是100μW。如果振荡电路驱动过强晶体振动幅度过大会出现频率偏移、老化加速甚至机械损坏如果驱动太弱又会起振困难或者环境温度一变就停振。激励功率和ESR直接相关简化公式是P ESR × I²其中I是流过晶体的有效电流。ESR是晶振在串联谐振点的等效电阻它决定了振荡电路要克服多少损耗才能起振。低ESR的晶振更容易起振但价格也更高。无源晶振选型时要确保振荡电路的负性阻抗至少有ESR的三到五倍余量否则板子很容易出现时好时坏、低温不振荡的问题。如果你的板子在量产中出现部分晶振不起振、或者只在特定温度区间停振大概率就是激励余量不够导致的批次差异问题。这种情况下换一颗ESR更低的晶振往往比改电路更直接有效。4. 晶振电路设计实操匹配电容、布局布线一网打尽4.1 负载电容怎么选计算公式与实例演示无源晶振在实际电路中一定要接负载电容这个电容和晶振自身的负载电容规格要匹配。常见匹配电路是两个电容分别从晶振两端接到GND这个CL的等效关系是串连关系CL (C1 × C2) / (C1 C2) Cstray其中Cstray是PCB走线、焊盘、芯片引脚带来的寄生电容通常估算为2~5pF。举个实际的例子某MCU参考设计用8MHz晶振规格要求CL20pF。如果PCB寄生电容估算为3pF那么外接电容需要满足(C1 × C2) / (C1 C2) 17pF。取C1C2的话每个电容大概34pF常见标称值选33pF。注意这里的C1、C2和晶振等效模型里的C1不是同一个东西名字容易搞混实际画图时心里要清楚。选电容时还要注意精度匹配电容尽量用1%精度的NP0/C0G材质电容X5R/X7R的电容随温度变化明显会让晶振频率跟着温度跑来跑去。4.2 有源晶振供电和输出注意事项有源晶振看起来接线简单VCC、GND、OUT三根线就完事但实际设计有几个细节不能马虎。电源引脚不能直接接系统电源最好经过一个几十欧的小电阻或者磁珠隔离再放一个0.1μF退耦电容紧靠电源脚。有源晶振内部是一个振荡器加一个输出驱动级电源上的纹波会直接调制到输出时钟相位上导致相位噪声恶化。输出端一般不需要额外串联匹配电阻但如果晶振到负载芯片之间的走线比较长超过约半英寸建议在源端串联一个33Ω左右的电阻来抑制反射。这种处理常用于时钟信号频率超过25MHz的有源晶振输出。还有一个容易踩的坑有源晶振输出电平有TTL、HCMOS、LVPECL、LVDS之分后两者是差分信号不能直接接到MCU的普通GPIO引脚上需要匹配端接或者电平转换。4.3 布局布线硬件工程师踩过的坑晶振在PCB布局布线上的要求比绝大多数人想象中严格。以下几点是我在项目里吃过亏之后总结出来的第一匹配电容要靠近晶振的引脚放置而不是靠近MCU的引脚。电容到晶振之间的走线越短越好这条回路承载的是高频振荡电流走线长了就相当于给晶振串了额外电感。第二晶振到MCU的走线也要短最好先经过匹配电容再到MCU不要绕圈、不要打过孔尽量走内层或完整的参考平面。第三晶振下方不要铺大块铜皮。很多人听说“晶振下方铺地可以抗干扰”其实对无源晶振来说正下方大面积铺地会增加寄生电容C0造成频率偏移。正确做法是在晶振下方走一层地隔离但要在晶振本体支撑区域做开窗尽量避免正下方的铜箔过于靠近晶振。第四晶振要远离DC-DC电感、功率MOS管这些强干扰源它们的高速开关动作会通过空间耦合到晶振导致输出时钟上的毛刺和抖动剧增。如果是MCU的LSE引脚接32.768kHz晶振走线更要注意。这个频率虽然低但LSE振荡电路本身功耗极小、驱动能力弱对走线寄生电容极其敏感。有的MCU内部可以通过软件配置LSE的驱动强度和负载电容比如STM32的LSE部分型号支持内部调谐电容这会给产品调测带来一定灵活性但不能完全替代外部合理布线。5. 晶振选型完整流程从应用场景反推参数5.1 按应用场景拆解MCU、以太网、视频芯片怎么选选晶振不能只看频率一个参数正确思路是从系统需求反推。下面按几个常见场景展开MCU主时钟场景STM32、GD32等典型是8MHz或者25MHz关注点是负载电容是否与MCU内部振荡器匹配以及ESR是否足够低。STM32F103用8MHz晶振加18~20pF匹配电容是比较经典的组合GD32系列也类似但要留意部分国产MCU对晶振驱动能力有特殊标定最好按原厂参考设计来。另外MCU如果要做USB功能外部晶振精度必须在±0.25%以内常见做法用8MHz或12MHz晶体USB的PLL才能锁定正确。以太网PHY场景参考时钟一般是25MHz有的方案用50MHz。PHY内部PLL对参考时钟抖动的窗口非常敏感如果不满足PHY Datasheet里的抖动要求百兆/千兆协商就会失败。这类场合推荐用有源晶振或者至少用高质量石英晶体配合PHY内部振荡器。PHY出来的TX_CLK信号是系统其他逻辑的时钟基准如果源端抖动大后面所有逻辑的时序都会受影响后端时序收敛会非常痛苦。视频采集与显示场景比如NVP6324、xs9922b这类模拟高清解码芯片需要的时钟频率和格式往往写在手册的时钟树章节。视频时钟的特点是频率高、对抖动和幅度有硬性要求MIPI时钟尤其是差分信号幅度、共模电压和上升沿质量都会直接影响链路信号完整性。这类系统里晶振的相位噪声价值就体现出来了一颗低相噪有源晶振比在PCB上放十颗电容去弥补抖动有用得多。5.2 有源晶振进阶TCXO、VCXO、OCXO到底怎么回事普通有源晶振XO的频率精度一般是±20ppm到±50ppm温度变化时频率也会跟着漂。如果系统对时间精度要求更高就要考虑温补晶振TCXO它内部有一套温度补偿网络能在宽温度范围内把频率稳定度做到±0.5ppm甚至更高GPS模块和无线通信设备里非常常见。VCXO是压控晶振可以通过外部电压微调输出频率一般用在PLL锁相环里做频率牵引。OCXO是恒温晶振内部有恒温槽把晶体维持在恒定温度精度可以达到ppb级别但体积大、功耗高、价格贵只有基站、仪器仪表等高端场合才用得上。MEMS振荡器是近些年冒出的新类型用硅微机械谐振结构替代石英晶体抗振动性能好、体积小但相位噪声性能总体还不及优质石英晶振。消费电子里大量使用工业级和车规级需要克制一点像我这种习惯稳妥方案的工程师除非原厂参考设计明确推荐否则首选还是石英方案。5.3 选型六步法从需求到定型的最小路径我一般按固定的顺序来选晶振。第一步确定频率和负载电容频率看芯片手册负载电容看无源晶振场景还是外壳电容可调场景。第二步确定精度等级消费级±20ppm工业级和车规级看温度范围和允许误差。第三步确定封装尺寸贴片晶振常见3225、2520、2016封装越小价格越贵高频晶振尽量用大一点封装以减小寄生电容。第四步确认ESR和激励功率特别是MCU无源晶振场景ESR不要超过手册标称值太多。第五步看工作温度范围和产品等级车规AEC-Q200、工业级、商业级相差很多价格也差不少。第六步选供应商先看原厂推荐列表优先选有现货的、有长期合作关系的品牌。这里插一句我自己在项目里吃过国产晶振和进口晶振的频差差异的亏。不是说国产不好而是同一标称规格的不同品牌晶体实际初始频偏分布可能差别很大。量产前一定要做不同批次的频率实测不能只看Datasheet上写的“典型值”。6. 时钟调测与问题排查常见故障定位与解决6.1 示波器实测晶振波形的正确姿势用示波器测无源晶振输出时经常遇到一个尴尬情况表笔一搭上去原来是好的系统突然复位或者通信中断了。这不是你的电路坏了而是示波器探头引入了额外的负载电容。常见10x无源探头输入电容大约10~15pF直接跨接在晶体两端等效负载电容增加好几pF频率偏移几百ppm甚至停振都很正常。正确测法是使用低电容的有源探头或者用一支高阻抗缓冲放大器去接晶振引脚实在只有无源探头时可以把放大倍数调到10x以减小输入电容同时把探头的接地弹簧减到最短避免长地线的环路电感影响波形。测有源晶振的输出要轻松很多直接测输出引脚就行注意看波形上升沿是否干净方波有没有过冲和振铃峰峰值是否达到芯片要求的VIH/VIL电平。6.2 负性阻抗测量与起振余量判断晶振不起振或者低温停振最常见的原因是振荡电路的负性阻抗不够。负性阻抗是振荡器主动电路反馈提供的“负阻”效应用来抵消晶振的ESR损耗只有负阻绝对值大于ESR振荡才能持续。工程师可以用一个简单实验估算负阻在晶振的一个引脚和振荡电路之间串联一个可调电阻从小阻值开始逐渐增加直到晶振停止振荡。记录停止振荡时的临界电阻Rcrit那么振荡电路提供的负性阻抗约为Rcrit减去晶振ESR严格说用RcritESR不能精确相等但这个近似工程上够用。如果Rcrit远远大于ESR说明起振余量充足如果Rcrit只是略大于ESR那这块板子会是个雷温度一变或者元件批次一变就可能停振。我们做的一个摄像头产品低温-20℃偶发不开机排查了半天最后就是用这个方法确定某颗晶振方案的振荡余量只有标称ESR的一点几倍远远低于三倍的设计准则。换了一颗更低ESR的晶振并调整驱动电阻后问题彻底消失。6.3 常见问题速查表不起振、频偏、波形异常逐一击破我把晶振相关的高频故障整理成一张速查表项目里遇到对得上号的问题优先从这几项排查故障现象可能原因处理对策晶振不起振负载电容严重失配ESR过高负性阻抗不足供电异常核对CL计算换低ESR晶体检查反馈电阻和驱动电路示波器排除探头干扰频率偏差大负载电容选错匹配电容用错材质温漂超过预期初始频偏批次差异用NP0/C0G电容按CL公式重算改用更高精度等级晶体加TCXO补偿偶发停振负性阻抗余量不足虚焊/冷焊晶体激励功率过小测负性阻抗设计余量做到ESR的3~5倍检查焊点适当增大振荡驱动能力波形峰峰值偏低输出负载过重供电电压偏低走线过长导致衰减检查负载是否超过器件扇出能力提高供电加缓冲器时钟抖动大电源纹波耦合PCB布线离干扰源太近晶振质量差加LC滤波或磁珠重新布局晶振走线换低相位噪声晶振MIPI时钟眼图不合格参考时钟抖动大差分走线阻抗不连续端接不匹配用低抖动有源晶振差分线做100Ω阻抗控制检查端接电阻EMI测试超标晶振谐波辐射输出驱动过强匹配电容位置不当在输出串电阻降振铃检查晶振下方铺铜开窗必要时展频晶振还有一个很不起眼但特别常见的坑晶振位置离连接器太近多次插拔设备之后晶振出现频率偏移原因是连接器处机械应力通过PCB传递到了晶振本体导致石英片的应力状态改变。这类问题换再好的晶振也难根治只能从结构设计上解决比如在晶振周围打应力释放槽或者让晶振远离受力区域。这种问题花了我两周才查到写出来供各位少走弯路。时钟系统是整个硬件设计中最能体现“毫厘之差失之千里”的部分。晶振这个小小的器件从物理原理到电路设计再到量产测试每一环都藏着大量细节。做硬件没有捷径把晶振、时钟树、PLL这些基本功打扎实了后面做高速数字设计、做跨时钟域处理时才能真的从容。
返回列表