ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

硬件工程师必看:晶振选型与PCB布局避坑指南

硬件工程师必看:晶振选型与PCB布局避坑指南 晶振这玩意儿说起来简单两个焊盘一放走两根线好像就完事了。但真到板子回来调不通、时钟不起振、频偏超标、EMC辐射超标的时候你才会发现当初选型和布局上偷的懒后面都要加倍还回来。我做了十多年硬件从消费电子到工业控制都碰过晶振相关的问题踩过的坑不算少——有源晶振买错封装导致整批板子报废的无源晶振负载电容算错导致批量频偏的晶振离芯片太远导致起振困难的还有晶振底下铺了地结果温漂一塌糊涂的。这些问题在原理图上根本看不出来只有板子跑起来才会暴露。这篇内容主要面向做PCB设计的硬件工程师、Layout工程师以及刚入行不久、对时钟电路还不太有把握的朋友。我会把无源晶振和有源晶振的选型逻辑、关键参数计算、布局布线技巧、常见问题排查这几个维度拆开来讲尽量把每个选择背后的“为什么”说清楚。你看完之后至少能做到拿到一个时钟需求知道该选哪种晶振画板子的时候知道晶振该怎么摆、线该怎么走、地该怎么处理出了问题知道从哪几个方向去查。1. 先搞清楚你到底需要哪种晶振1.1 无源晶振和有源晶振的本质区别很多人把无源晶振叫“晶体”有源晶振叫“晶振”这个叫法其实不太准确但在实际工作中大家都这么用也就约定俗成了。严格来说无源晶振的学名是石英晶体谐振器英文叫Crystal Resonator有源晶振的学名是晶体振荡器英文叫Crystal Oscillator。两者的核心区别在于无源晶振本身不产生振荡它只是一个谐振元件需要配合芯片内部的振荡电路才能工作有源晶振内部集成了振荡电路只要给它供电它就直接输出时钟信号。打个比方无源晶振就像一把音叉你敲它它才响而且响的频率取决于音叉本身的物理特性加上你怎么敲有源晶振就像一个电子琴你按下开关它自己就发出标准音高的声音不需要你额外提供激励。这个本质区别决定了它们在电路设计中的角色完全不同。无源晶振是“被动”的它的振荡频率不仅取决于晶体本身的谐振频率还取决于外部负载电容的匹配。有源晶振是“主动”的它的输出频率在出厂时就已经校准好了你只需要给它干净的电源和良好的地平面它就能给你一个稳定的时钟。从成本上看无源晶振通常比有源晶振便宜不少尤其是一些低频的、普通精度的无源晶振几毛钱就能拿到。有源晶振因为内部集成了振荡芯片价格通常是无源晶振的几倍甚至十几倍。但从设计复杂度上看无源晶振需要你计算负载电容、考虑起振裕度、注意布局走线有源晶振则简单得多基本上就是供电加输出对布局的要求相对宽松一些。1.2 什么场景该选无源晶振无源晶振最适合那些对成本敏感、对时钟精度要求不是特别苛刻、而且芯片内部已经集成了振荡电路的应用。比如大多数MCU、蓝牙芯片、USB控制器、CAN控制器这些芯片内部都有皮尔斯振荡器电路你只需要在外面接一个无源晶振和两个负载电容就能给芯片提供时钟。我做过一个消费类的蓝牙音箱项目用的是一颗国产蓝牙SoC芯片手册上明确写了支持无源晶振推荐频率是24MHz负载电容是9pF。这种情况下选无源晶振就是最合理的方案——成本低电路简单而且芯片厂商已经帮你把振荡电路设计好了你只需要按照手册推荐的值去配负载电容就行。另一个典型的场景是RTC时钟。很多产品需要一个32.768kHz的低频时钟来计时这个时钟通常由无源晶振提供。32.768kHz这个频率很特殊它是2的15次方经过15级二分频之后正好得到1Hz的信号非常适合做秒计时。RTC晶振通常对精度要求较高但对起振速度要求不高所以无源晶振是首选。还有一种情况是芯片内部没有振荡电路但你又不想用有源晶振。这种情况比较少见但确实存在。比如某些老式的处理器或者ASIC它们可能需要一个外部时钟输入但内部并没有集成振荡器。这时候你就需要用一个有源晶振来提供时钟或者用一个无源晶振配合一个反相器来搭建振荡电路。后者比较麻烦一般不建议新手尝试。1.3 什么场景必须上有源晶振有源晶振的用武之地主要在以下几个场景。第一是对时钟精度要求极高的场合比如通信设备、网络设备、精密测量仪器。这些设备对时钟的抖动、相位噪声、频率稳定度都有严格要求无源晶振配合普通MCU内部振荡电路很难达到这个水平。有源晶振内部用的是经过优化的振荡电路加上温度补偿或者恒温控制可以做到非常高的精度。第二是需要多个时钟域或者需要时钟信号长距离传输的场合。有源晶振的输出驱动能力比无源晶振强得多可以直接驱动多个负载也可以经过缓冲器分配到多个芯片。无源晶振的振荡信号幅度通常比较小而且很容易受到负载效应的影响不适合长距离传输或者驱动多个负载。第三是芯片内部没有振荡电路或者芯片厂商明确要求使用有源晶振的场合。比如一些FPGA、高速ADC/DAC、PCIe控制器它们对时钟的抖动要求非常严格通常会要求使用有源晶振。我做过一个PCIe 4.0的项目参考时钟要求100MHz抖动要求小于100fs这种指标只有专用的有源晶振才能满足。第四是对起振时间有严格要求的场合。无源晶振的起振时间通常在毫秒级别有些甚至要几十毫秒才能稳定振荡。有源晶振的起振时间通常在微秒级别上电之后很快就能输出稳定的时钟。对于一些需要快速启动的设备比如汽车电子中的某些模块有源晶振是更好的选择。1.4 选型决策的五个关键维度在实际选型的时候我通常会从以下五个维度来评估维度无源晶振有源晶振成本低通常几毛到几块钱高通常几块到几十块精度中等取决于负载电容匹配和温度特性高出厂校准可选温补或恒温设计复杂度较高需要计算负载电容和起振裕度较低主要关注电源和输出匹配起振时间毫秒级微秒级驱动能力弱不适合长距离传输强可驱动多个负载功耗较低较高封装尺寸可以做到很小相对较大这五个维度里面成本和精度往往是决定性的。如果你的产品对成本极度敏感而且芯片内部有振荡电路那无源晶振几乎是唯一选择。如果你的产品对时钟精度要求很高或者芯片明确要求有源晶振那就不要犹豫直接上有源晶振。还有一个容易被忽略的维度是供货和生命周期。有些有源晶振的型号生命周期很短可能你产品还没量产晶振就停产了。所以在选型的时候尽量选那些大厂的主流型号或者至少要有替代方案。无源晶振相对来说供货更稳定一些因为它的通用性更强。2. 无源晶振的负载电容计算与匹配2.1 负载电容为什么这么重要无源晶振的负载电容是决定振荡频率的关键参数。晶体厂商在出厂时会按照一个特定的负载电容来校准晶体的谐振频率这个负载电容通常标注在晶体手册上常见的有8pF、9pF、12pF、20pF等。如果你实际电路中的负载电容和晶体手册上标注的不一致振荡频率就会偏离标称值。这个偏离有多大呢我举个例子。一个标称24MHz、负载电容9pF的晶体如果你实际电路的负载电容是12pF频率偏差大概在几十ppm到上百ppm之间。对于UART通信来说几十ppm的偏差可能还能容忍但对于USB通信来说超过500ppm就可能出现枚举失败对于射频通信来说几十ppm的偏差就可能导致频偏超标。负载电容的计算公式是这样的CL (C1 * C2) / (C1 C2) Cstray其中CL是晶体手册上标注的负载电容C1和C2是晶体两端到地的匹配电容Cstray是PCB走线和芯片引脚的寄生电容通常在3pF到5pF之间。这个公式看起来简单但实际计算的时候有几个坑。第一个坑是Cstray的估算。很多新手会忽略Cstray直接把C1和C2设成晶体手册上的负载电容值结果实际负载电容偏大频率偏低。Cstray的大小取决于PCB走线长度、走线宽度、层叠结构、芯片引脚电容等多个因素很难精确计算通常的经验值是3pF到5pF。如果走线比较短、芯片引脚电容比较小可以取3pF如果走线比较长、芯片引脚电容比较大可以取5pF。第二个坑是C1和C2的对称性。理论上C1和C2应该相等这样晶体两端的负载才是对称的。但实际上由于芯片内部振荡电路的输入输出电容可能不完全相等C1和C2可能需要微调。不过对于大多数应用来说C1和C2取相同值就足够了。第三个坑是电容的温度特性和精度。匹配电容通常用NP0/C0G材质的陶瓷电容这种电容的温度系数很小精度可以做到1%或2%。不要用X7R或Y5V材质的电容它们的温度系数和电压系数都很大会导致振荡频率随温度和电压变化。2.2 负载电容的计算实例假设你选了一颗24MHz的无源晶振手册上标注的负载电容是9pF你估算PCB的Cstray是4pF。那么你需要匹配的电容值是多少根据公式CL (C1 * C2) / (C1 C2) Cstray9pF (C1 * C2) / (C1 C2) 4pF(C1 * C2) / (C1 C2) 5pF如果C1 C2 C那么C / 2 5pFC 10pF所以你需要选两颗10pF的NP0电容。但实际选型的时候10pF不一定是最合适的。因为Cstray的估算可能有误差芯片内部的振荡电路也可能有一些额外的电容。所以通常的做法是先按照计算值选电容然后在PCB上预留两个并联的焊盘一个焊计算值的电容另一个焊一个稍小一点的电容比如8pF。板子回来之后用频率计测量实际振荡频率如果偏高了就加大电容如果偏低了就减小电容。我通常会在第一版板子上把C1和C2设计成两个电容并联的形式比如一个10pF和一个5pF并联这样可以通过只焊其中一个或者两个都焊来调整负载电容。等频率调准之后再在第二版板子上把不需要的焊盘去掉。2.3 起振裕度怎么评估负载电容匹配好了不代表晶振就一定能起振。起振裕度是另一个关键指标它衡量的是振荡电路在 worst case 条件下能否可靠起振。起振裕度不足的表现是板子上电之后晶振不起振或者起振时间很长或者在某些温度条件下不起振。起振裕度的影响因素主要有三个晶体的等效串联电阻、芯片内部振荡电路的跨导、以及负载电容的大小。晶体的ESR越小起振越容易芯片的跨导越大起振越容易负载电容越小起振越容易。评估起振裕度通常需要用到芯片手册上给出的振荡电路跨导参数和晶体手册上给出的ESR参数。芯片厂商通常会给出一个“最大允许ESR”的曲线或者表格你只需要确认你选的晶体的ESR小于这个值就行。如果芯片手册没有给出这个信息那就只能通过实测来验证。实测的方法是这样的在晶振电路上串联一个可变电阻从0欧姆开始慢慢增大直到晶振停止振荡。这个临界电阻值就是起振裕度的粗略估计。一般来说临界电阻值至少应该是晶体ESR的5倍以上起振才比较可靠。如果临界电阻值只有晶体ESR的2到3倍那起振裕度就偏低了需要换ESR更小的晶体或者减小负载电容。我踩过一个坑在一个低功耗项目里为了省电选了一颗ESR比较大的32.768kHz晶体结果在低温条件下批量出现不起振的问题。后来换了一颗ESR更小的晶体问题就解决了。所以对于低功耗应用晶体的ESR一定要重点关注。2.4 匹配电容的布局要点匹配电容的布局对振荡电路的性能影响很大。基本原则是匹配电容要尽量靠近晶振和芯片的振荡引脚走线要短而粗减少寄生电感和寄生电容。具体来说晶振应该尽量靠近芯片的振荡引脚放置走线长度最好控制在10mm以内。匹配电容应该放在晶振和芯片之间或者紧挨着晶振放置。电容的接地端应该就近打过孔连接到地平面过孔不要共用每个电容的接地端至少有一个独立的过孔。晶振下方的区域应该避免走其他信号线尤其是高频信号线和电源线。如果可能的话晶振下方应该铺地但要注意的是铺地会增加晶振的寄生电容可能会影响振荡频率。所以如果对频率精度要求很高晶振下方可以不铺地或者铺地之后重新调整匹配电容。还有一个细节是晶振的焊盘设计。晶振的焊盘应该比晶体引脚稍大一些但不要太大否则会增加寄生电容。焊盘之间的间距应该按照晶体的封装尺寸来设计不要为了兼容多种封装而把焊盘设计得太大。3. 有源晶振的选型与电源处理3.1 有源晶振的关键参数解读有源晶振的选型参数比无源晶振多得多因为它的内部集成了振荡电路所以涉及到很多振荡器特有的参数。以下是我在实际选型中最关注的几个参数输出频率这个最直观你需要什么频率就选什么频率。但要注意的是有源晶振的输出频率通常是固定的不像无源晶振那样可以通过调整负载电容来微调。所以选型的时候要确认频率精度是否满足要求。输出逻辑有源晶振的输出逻辑有很多种常见的有CMOS、LVDS、LVPECL、HCSL等。CMOS输出最简单适合大多数数字电路LVDS和LVPECL适合高速差分时钟HCSL主要用于PCIe参考时钟。选型的时候要确认芯片需要的时钟逻辑类型不要选错了。频率稳定度这个参数衡量的是晶振在不同温度、电压、负载条件下的频率偏差。普通有源晶振的频率稳定度通常在±20ppm到±50ppm之间温补晶振可以做到±0.5ppm到±2.5ppm恒温晶振可以做到±0.01ppm到±0.1ppm。选型的时候要根据系统对时钟精度的要求来选。相位抖动这个参数衡量的是时钟信号的相位噪声对于高速串行通信、射频通信等应用非常重要。相位抖动的单位通常是fs飞秒或者ps皮秒数值越小越好。PCIe 4.0对参考时钟的抖动要求是小于100fs这个指标只有专用的有源晶振才能满足。电源电压有源晶振的电源电压常见的有1.8V、2.5V、3.3V、5V等。选型的时候要确认系统的电源电压不要选错了。另外要注意的是有源晶振的电源电压范围通常比较窄比如3.3V的晶振可能只支持3.135V到3.465V所以电源的纹波要控制好。工作温度范围有源晶振的工作温度范围常见的有商业级0°C到70°C、工业级-40°C到85°C、汽车级-40°C到125°C。选型的时候要根据产品的使用环境来选不要为了省钱选商业级的晶振用在工业环境里。封装尺寸有源晶振的封装尺寸有很多种常见的有7050、5032、3225、2520等。封装越小价格越贵而且可选频率范围也越窄。选型的时候要在尺寸和成本之间做权衡。3.2 有源晶振的电源滤波设计有源晶振对电源噪声非常敏感因为电源噪声会直接调制到输出时钟上导致相位噪声恶化。所以有源晶振的电源滤波设计非常重要。我通常会在有源晶振的电源引脚旁边放一个0.1uF的陶瓷电容和一个10uF的钽电容或者陶瓷电容。0.1uF的电容负责滤除高频噪声10uF的电容负责滤除低频噪声。这两个电容要尽量靠近晶振的电源引脚放置走线要短而粗。如果对相位噪声要求很高还可以在电源路径上串联一个铁氧体磁珠或者一个小的电感组成一个LC滤波器。但要注意的是铁氧体磁珠的直流电阻会导致电源电压下降所以要确认晶振的电源电压范围是否允许。还有一个细节是电源的走线。有源晶振的电源走线应该尽量宽减少走线电感。如果可能的话可以用一个独立的电源平面给晶振供电或者在晶振下方铺一个局部的电源铜皮。但要注意的是电源铜皮不要和地平面形成太大的寄生电容否则可能会影响晶振的稳定性。我做过一个射频项目有源晶振的电源滤波没做好导致输出时钟的相位噪声超标整个射频链路的EVM都变差了。后来在晶振电源引脚旁边加了一个10uF的钽电容和一个0.1uF的陶瓷电容问题就解决了。所以有源晶振的电源滤波再怎么强调都不为过。3.3 输出匹配与走线要求有源晶振的输出匹配取决于输出逻辑类型。对于CMOS输出通常只需要在输出端串联一个33欧姆或者50欧姆的电阻用来匹配走线阻抗和减少反射。这个电阻要尽量靠近晶振的输出引脚放置。对于LVDS和LVPECL输出需要按照差分走线的要求来设计差分阻抗通常控制在100欧姆。差分对的两根线要等长、等距、紧耦合尽量减少差分 skew。LVPECL输出还需要外部的偏置电路通常是用两个电阻分压来提供偏置电压。对于HCSL输出通常需要串联一个33欧姆的电阻到地用来提供直流偏置。HCSL输出的走线阻抗通常控制在50欧姆。有源晶振的输出走线要尽量短尤其是高频时钟。如果走线太长会导致信号衰减和相位噪声恶化。如果确实需要长距离传输可以考虑在中间加一个时钟缓冲器或者用差分输出来提高抗干扰能力。还有一个容易被忽略的点是输出走线的参考平面。时钟走线应该有一个完整的地平面作为参考不要跨分割。如果时钟走线跨了分割会导致阻抗不连续和EMC辐射增加。我见过一个案例时钟走线跨了电源分割结果EMC辐射超标了十几个dB后来把走线改到地平面完整的地方问题就解决了。3.4 有源晶振的布局禁忌有源晶振的布局有几个禁忌我一个个来说。第一个禁忌是把有源晶振放在板子边缘或者靠近接口的地方。有源晶振是一个噪声源它的输出时钟会辐射电磁波如果放在板子边缘辐射会更容易耦合到外部。而且接口附近通常有ESD保护器件和滤波器件这些器件的寄生电容可能会影响晶振的输出信号。第二个禁忌是把有源晶振放在发热量大的器件旁边。有源晶振的频率稳定度受温度影响很大如果旁边有一个发热量大的器件比如电源芯片或者功率放大器晶振的温度会升高频率会漂移。我通常会把有源晶振放在板子的角落远离热源而且下方铺地来帮助散热。第三个禁忌是把有源晶振放在高振动环境里。有源晶振内部有石英晶体石英晶体对振动很敏感强烈的振动会导致频率漂移甚至晶体破裂。如果产品会经历强烈的振动比如汽车电子或者工业设备要选择抗振动能力强的晶振或者在布局上做减振设计。第四个禁忌是把有源晶振的电源和数字电源混在一起。有源晶振的电源应该是干净的最好用一个独立的LDO来供电或者在电源路径上做好滤波。如果和数字电源混在一起数字电路的开关噪声会耦合到晶振电源上导致相位噪声恶化。4. 晶振布局布线的通用技巧4.1 晶振在PCB上的最佳位置晶振在PCB上的位置选择核心原则是靠近芯片、远离干扰源、便于散热。靠近芯片这个原则对于无源晶振来说尤其重要。无源晶振的振荡信号幅度小很容易受到寄生参数的影响走线越长寄生电感和寄生电容越大起振越困难频率偏差也越大。我通常要求无源晶振的走线长度不超过10mm最好控制在5mm以内。如果芯片的振荡引脚在芯片的一侧晶振就放在那一侧不要绕到芯片的另一侧去。对于有源晶振来说靠近芯片的要求稍微宽松一些因为它的输出驱动能力强走线长一点也能驱动。但为了减少相位噪声和EMC辐射还是尽量靠近芯片放置。如果芯片有多个时钟输入引脚要优先靠近对时钟要求最严格的那个引脚。远离干扰源这个原则对于所有晶振都适用。干扰源包括开关电源、功率放大器、高速数字电路、射频电路等。晶振应该尽量远离这些干扰源至少保持10mm以上的距离。如果实在避不开可以在晶振和干扰源之间加一个接地屏蔽罩或者在晶振下方铺地来隔离。便于散热这个原则主要针对有源晶振。有源晶振内部有振荡电路会消耗一定的功率产生热量。如果散热不好晶振的温度会升高频率会漂移。所以有源晶振应该放在通风良好的位置下方铺地来帮助散热。如果可能的话可以在晶振下方打一些散热过孔把热量传导到其他层。4.2 晶振走线的关键规则晶振走线有几个关键规则我一条条来说。第一条规则是走线要短。这个前面已经说过了无源晶振的走线最好控制在5mm以内有源晶振的走线也尽量短。走线短的好处是减少寄生电感和寄生电容减少信号衰减和相位噪声恶化。第二条规则是走线要粗。晶振走线的宽度建议在8mil到12mil之间不要用细线。粗线的好处是减少走线电感和电阻提高信号质量。如果走线太细走线电感会增加可能会导致起振困难或者相位噪声恶化。第三条规则是走线要直。晶振走线尽量不要拐弯尤其不要拐直角。直角走线会导致阻抗不连续产生信号反射。如果必须拐弯用45度角或者圆弧拐弯。第四条规则是走线要远离其他信号线。晶振走线不要和其他信号线平行走线尤其不要和高速信号线或者射频信号线平行走线。如果必须平行走线要保持足够的间距至少3倍线宽以上。如果实在避不开可以在两条线之间加一条地线来隔离。第五条规则是走线要有完整的参考平面。晶振走线应该有一个完整的地平面作为参考不要跨分割。如果晶振走线跨了分割会导致阻抗不连续和EMC辐射增加。第六条规则是差分时钟走线要等长。如果是有源晶振的差分输出两根差分线要等长、等距、紧耦合。等长是为了减少差分 skew等距和紧耦合是为了保证差分阻抗的稳定性。差分 skew 通常要求控制在5mil以内对于高速时钟要求更严格。4.3 晶振下方的地平面处理晶振下方的地平面处理是一个有争议的话题。有些人说晶振下方要铺地有些人说不要铺地。我的经验是要看情况。对于无源晶振晶振下方铺地会增加寄生电容可能会影响振荡频率。所以如果对频率精度要求很高晶振下方可以不铺地或者铺地之后重新调整匹配电容。如果对频率精度要求不高晶振下方铺地可以帮助隔离干扰提高抗干扰能力。对于有源晶振晶振下方铺地通常是有好处的因为铺地可以帮助散热和隔离干扰。但要注意的是铺地不要和有源晶振的电源引脚或者输出引脚形成太大的寄生电容否则可能会影响晶振的稳定性。还有一个细节是晶振下方的地平面不要被其他信号线分割。如果晶振下方的地平面被分割了会导致地平面不完整影响晶振的性能。所以晶振下方的区域应该保持地平面的完整性不要走其他信号线。我通常的做法是在晶振下方铺一个局部的地铜皮这个铜皮通过多个过孔连接到主地平面。铜皮的大小比晶振的封装稍大一些不要太大否则会增加寄生电容。铜皮和晶振的焊盘之间要保持足够的间距避免短路。4.4 晶振与其他器件的间距要求晶振和其他器件之间的间距要求主要取决于其他器件的类型。晶振和开关电源之间的间距建议至少15mm以上。开关电源是一个强干扰源它的开关频率和諧波会耦合到晶振上导致相位噪声恶化。如果实在避不开可以在开关电源和晶振之间加一个接地屏蔽罩。晶振和功率放大器之间的间距建议至少20mm以上。功率放大器是一个强辐射源它的输出信号会辐射电磁波耦合到晶振上。如果实在避不开可以在功率放大器和晶振之间加一个接地屏蔽罩。晶振和高速数字电路之间的间距建议至少10mm以上。高速数字电路的时钟信号和数据信号会辐射电磁波耦合到晶振上。如果实在避不开可以在高速数字电路和晶振之间加一条地线来隔离。晶振和射频电路之间的间距建议至少20mm以上。射频电路的信号频率很高很容易耦合到晶振上。如果实在避不开可以在射频电路和晶振之间加一个接地屏蔽罩。晶振和发热量大的器件之间的间距建议至少10mm以上。发热量大的器件会导致晶振的温度升高频率漂移。如果实在避不开可以在晶振和发热器件之间加一个隔热槽或者散热片。5. 常见问题与排查技巧实录5.1 晶振不起振的排查思路晶振不起振是最常见的问题之一排查思路可以按照以下步骤来。第一步确认电源。有源晶振要确认电源电压是否正常电源纹波是否在允许范围内。无源晶振要确认芯片的振荡电路是否已经使能有些芯片的振荡电路默认是关闭的需要在寄存器里使能。第二步确认负载电容。无源晶振的负载电容是否匹配可以用频率计测量实际振荡频率如果频率偏差很大可能是负载电容不匹配。如果完全不起振可能是负载电容太大或者太小。第三步确认起振裕度。如果负载电容匹配了但还是不起振可能是起振裕度不足。可以尝试换一颗ESR更小的晶体或者减小负载电容。第四步确认布局走线。晶振走线是否太长是否靠近干扰源是否有完整的参考平面。如果走线太长或者靠近干扰源可以尝试重新布局。第五步确认焊接。晶振是否焊接良好焊盘是否有虚焊或者短路。可以用万用表测量晶振两端的电阻正常应该是开路。第六步确认晶体本身。换一颗新的晶体试试排除晶体本身损坏的可能。我踩过一个坑一个32.768kHz的RTC晶振不起振排查了半天最后发现是芯片的振荡电路没有使能。芯片手册上写的是默认使能但实际上需要写一个寄存器才能使能。所以芯片手册一定要仔细看不要想当然。5.2 频率偏差过大的原因分析频率偏差过大是另一个常见问题原因可能有以下几个。第一个原因是负载电容不匹配。这是最常见的原因尤其是无源晶振。负载电容偏大频率偏低负载电容偏小频率偏高。解决方法是用频率计测量实际频率然后调整匹配电容。第二个原因是温度影响。晶振的频率会随温度变化尤其是无源晶振。如果产品的工作温度范围很宽频率偏差可能会超出预期。解决方法是选择温度特性更好的晶振或者使用温补晶振。第三个原因是电源电压影响。有源晶振的频率会随电源电压变化虽然影响比温度小但在高精度应用中也需要考虑。解决方法是使用稳定的电源或者选择电源抑制比更好的晶振。第四个原因是负载效应。如果晶振的输出驱动能力不足或者负载电容太大会导致频率偏差。解决方法是减小负载电容或者使用缓冲器来驱动负载。第五个原因是老化。晶振的频率会随时间缓慢变化这就是老化。老化率通常用ppm/年来表示普通晶振的老化率在±3ppm/年到±5ppm/年之间。如果对长期稳定性要求很高要选择老化率更小的晶振。5.3 晶振相关EMC问题的处理晶振相关的EMC问题主要有两种辐射发射超标和传导发射超标。辐射发射超标通常是因为晶振的输出时钟走线太长或者走线没有完整的参考平面导致时钟信号辐射电磁波。解决方法是缩短时钟走线确保走线有完整的参考平面必要时可以在时钟走线上串联一个电阻来减少高频谐波。传导发射超标通常是因为晶振的电源滤波不好导致电源噪声传导到电源线上。解决方法是在晶振的电源引脚旁边加滤波电容必要时可以加一个LC滤波器或者铁氧体磁珠。还有一个EMC问题是晶振的谐波干扰。晶振的输出时钟是一个方波方波包含丰富的谐波成分这些谐波可能会干扰其他电路。解决方法是在时钟走线上串联一个电阻或者磁珠或者使用展频时钟来分散谐波能量。我做过一个项目EMC辐射超标了6dB排查了半天最后发现是晶振的输出时钟走线太长而且没有完整的参考平面。后来把时钟走线缩短并且在走线下方铺了完整的地平面问题就解决了。所以晶振的布局走线对EMC的影响非常大一定要重视。5.4 晶振选型与布局的常见问题速查表问题现象可能原因排查方法解决方法晶振不起振电源异常测量电源电压和纹波修复电源加滤波电容晶振不起振负载电容不匹配测量实际振荡频率调整匹配电容晶振不起振起振裕度不足串联可变电阻测临界值换ESR更小的晶体晶振不起振布局走线太长检查走线长度重新布局缩短走线频率偏差大负载电容不匹配测量实际频率调整匹配电容频率偏差大温度影响在不同温度下测量频率换温度特性更好的晶振频率偏差大电源电压影响在不同电压下测量频率使用稳定电源相位噪声差电源滤波不好测量电源纹波加滤波电容或LC滤波器相位噪声差走线太长检查走线长度缩短走线EMC辐射超标走线太长检查走线长度缩短走线加串联电阻EMC辐射超标参考平面不完整检查参考平面确保参考平面完整EMC辐射超标电源滤波不好测量电源纹波加滤波电容或LC滤波器5.5 几个容易忽略的实操细节第一个细节是晶振的焊接温度。晶振内部的石英晶体对温度很敏感过高的焊接温度会导致晶体性能退化甚至损坏。所以焊接晶振的时候要控制好温度不要超过晶体手册上标注的最高焊接温度。通常无铅焊接的峰值温度在260°C左右持续时间不要超过10秒。第二个细节是晶振的清洗。有些晶振的封装不是密封的清洗液可能会渗入晶振内部导致性能退化。所以清洗PCB的时候要注意如果晶振不是密封封装要避免超声波清洗或者浸泡清洗。第三个细节是晶振的存储。晶振应该存储在干燥、常温、无腐蚀性气体的环境中。如果存储环境湿度太大晶振的引脚可能会氧化导致焊接不良。如果存储时间太长晶振的频率可能会发生轻微变化使用前最好测量一下。第四个细节是晶振的替换。不同厂商的晶振即使参数相同实际性能也可能有差异。所以替换晶振的时候最好重新验证一下振荡频率和起振裕度不要直接替换。第五个细节是晶振的测试。晶振的测试不要用普通的示波器探头直接去碰晶振引脚因为探头的寄生电容会影响振荡频率甚至导致晶振停振。正确的测试方法是用一个高阻抗的场效应管探头或者用一个缓冲器隔离之后再测量。6. 从实际项目出发的选型与布局复盘6.1 一个蓝牙音箱项目的晶振选型过程这个项目用的是一颗国产蓝牙SoC芯片手册上推荐使用24MHz的无源晶振负载电容9pF。我选了一颗24MHz、9pF、ESR小于60欧姆、精度±10ppm的晶体匹配电容选了10pF的NP0电容。PCB布局的时候我把晶振放在芯片的振荡引脚旁边走线长度控制在5mm以内。匹配电容紧挨着晶振放置接地端各自打过孔连接到地平面。晶振下方铺了局部地铜皮铜皮比晶振封装稍大一些。板子回来之后测量实际振荡频率发现偏差在15ppm左右在可接受范围内。起振时间测量了一下大概在2ms左右满足蓝牙芯片的要求。批量生产的时候没有出现不起振或者频率偏差超标的问题。这个项目的经验是无源晶振的选型ESR和负载电容是两个最关键的参数。ESR要尽量小负载电容要匹配好。布局的时候晶振要尽量靠近芯片匹配电容要尽量靠近晶振走线要短而粗。6.2 一个工业控制项目的晶振选型过程这个项目用的是一颗工业级的MCU工作温度范围是-40°C到85°C。芯片手册上推荐使用8MHz的无源晶振负载电容12pF。我选了一颗8MHz、12pF、ESR小于80欧姆、精度±20ppm、工作温度范围-40°C到85°C的晶体匹配电容选了15pF的NP0电容。PCB布局的时候我把晶振放在芯片的振荡引脚旁边走线长度控制在8mm以内。匹配电容紧挨着晶振放置接地端各自打过孔连接到地平面。晶振下方没有铺地因为担心铺地会增加寄生电容影响频率精度。板子回来之后在常温下测量实际振荡频率偏差在10ppm左右。然后在高温箱里测试在85°C下测量频率偏差在-30ppm左右在-40°C下测量频率偏差在20ppm左右。总偏差在±50ppm以内满足工业级应用的要求。这个项目的经验是工业级应用的晶振工作温度范围是一个关键参数。要选择工作温度范围覆盖产品使用环境的晶振而且要注意频率随温度的变化。如果对频率精度要求很高可以考虑使用温补晶振。6.3 一个PCIe 4.0项目的晶振选型过程这个项目用的是一颗FPGA需要100MHz的参考时钟抖动要求小于100fs。这种指标只有专用的有源晶振才能满足。我选了一颗100MHz、LVDS输出、抖动小于80fs、工作温度范围-40°C到85°C的有源晶振。PCB布局的时候我把晶振放在FPGA的参考时钟输入引脚旁边走线长度控制在15mm以内。差分走线按照100欧姆差分阻抗设计等长控制在5mil以内。晶振的电源引脚旁边放了0.1uF和10uF的滤波电容电源走线尽量宽。板子回来之后用相位噪声分析仪测量了输出时钟的抖动实测在75fs左右满足PCIe 4.0的要求。系统联调的时候PCIe链路训练一次通过没有出现链路不稳定的问题。这个项目的经验是高速串行通信的参考时钟抖动是一个关键参数。要选择抖动满足要求的晶振而且要注意差分走线的设计。电源滤波也非常重要电源噪声会直接调制到输出时钟上导致抖动恶化。6.4 一个RTC时钟项目的晶振选型过程这个项目需要一个32.768kHz的RTC时钟精度要求是±20ppm工作温度范围是-20°C到60°C。我选了一颗32.768kHz、负载电容12.5pF、ESR小于50k欧姆、精度±20ppm的晶体匹配电容选了15pF的NP0电容。PCB布局的时候我把晶振放在芯片的RTC引脚旁边走线长度控制在5mm以内。匹配电容紧挨着晶振放置接地端各自打过孔连接到地平面。晶振下方铺了局部地铜皮用来隔离干扰。板子回来之后测量实际振荡频率偏差在5ppm左右。然后在不同温度下测试在-20°C下偏差在-15ppm左右在60°C下偏差在10ppm左右。总偏差在±20ppm以内满足RTC的要求。这个项目的经验是RTC晶振的频率很低ESR很大起振裕度是一个关键问题。要选择ESR尽量小的晶体而且要注意布局走线减少寄生电容。另外RTC晶振对干扰很敏感要远离干扰源下方铺地来隔离。6.5 几个项目复盘后的共性经验复盘这几个项目我发现有几个共性经验值得分享。第一晶振的选型一定要从系统需求出发不要盲目追求高精度或者低成本。系统需要什么精度的时钟就选什么精度的晶振。过高的精度意味着更高的成本过低的精度可能导致系统不稳定。第二晶振的布局一定要重视不要觉得晶振电路简单就随便摆。晶振是时钟的源头时钟的质量直接影响整个系统的性能。布局的时候要靠近芯片、远离干扰源、保证参考平面完整。第三晶振的匹配电容一定要计算不要凭感觉选。负载电容的计算虽然简单但很容易出错。计算的时候要考虑Cstray要选择NP0材质的电容要预留调整的焊盘。第四晶振的电源滤波一定要做好尤其是有源晶振。电源噪声会直接调制到输出时钟上导致相位噪声恶化。滤波电容要靠近晶振的电源引脚放置必要时可以加LC滤波器。第五晶振的测试一定要用正确的方法不要用普通的示波器探头直接去碰晶振引脚。探头的寄生电容会影响振荡频率甚至导致晶振停振。要用高阻抗的场效应管探头或者用缓冲器隔离之后再测量。第六晶振的替换一定要重新验证不要直接替换。不同厂商的晶振即使参数相同实际性能也可能有差异。替换之后要重新测量振荡频率和起振裕度确保满足要求。这些经验都是我在实际项目中踩过坑之后总结出来的希望能对做PCB设计的朋友有所帮助。晶振电路看起来简单但里面的门道不少多花点时间在选型和布局上后面调试的时候就能少走很多弯路。
返回列表