晶振这玩意儿,说起来简单,两个焊盘一放,走两根线,好像就完事了。但真到板子回来调不通、时钟不起振、频偏超标、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) + Cstray
9pF = (C1 * C2) / (C1 + C2) + 4pF
(C1 * C2) / (C1 + C2) = 5pF
如果C1 = C2 = C,那么:
C / 2 = 5pF
C = 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设计的朋友有所帮助。晶振电路看起来简单,但里面的门道不少,多花点时间在选型和布局上,后面调试的时候就能少走很多弯路。