ARTICLE DETAIL

资讯详情

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

无源晶振与有源晶振选型及PCB布局设计实战指南

无源晶振与有源晶振选型及PCB布局设计实战指南 1. 项目概述与核心需求解析1.1 为什么晶振选型是PCB设计中最容易被低估的环节干了十几年硬件我见过太多项目在原理图阶段一切顺利PCB打样回来却发现MCU根本跑不起来或者通信误码率居高不下最后查来查去问题就出在一颗小小的晶振上。晶振这东西单价可能就几毛钱到几块钱占BOM成本的比例微乎其微但它却是整个系统的心脏——时钟源不稳后面所有的数字逻辑、通信时序、ADC采样精度全都跟着遭殃。无源晶振和有源晶振的选型与布局表面上看是个“选个料、摆个位置”的简单活儿实际上里面涉及到的知识点非常密集从振荡器原理、负载电容计算、驱动电平评估到PCB上的走线阻抗控制、地平面处理、电源去耦策略每一个环节都有讲究。我写这篇东西就是想把这些年踩过的坑、验证过的方案、以及那些教科书上不会写的实操细节系统地梳理一遍。这篇文章适合谁看如果你正在做嵌入式硬件设计不管是刚入行的新手还是有一定经验的工程师只要你的板子上有时钟电路这里面的内容就值得你花时间读一读。我会尽量用大白话把原理讲清楚同时给出可以直接抄作业的计算公式和布局规则。1.2 无源晶振与有源晶振的本质区别先把这个最基本的问题说透。无源晶振英文叫Crystal本质上就是一个石英晶体谐振器它本身不产生振荡需要配合外部电路通常是芯片内部的反相放大器和外部的负载电容才能起振。有源晶振英文叫Oscillator内部集成了石英晶体和振荡电路只要给它供电它就直接输出一个方波时钟信号。这个本质区别决定了它们在应用上的分工。无源晶振便宜、体积小、功耗低但需要芯片内部有振荡器电路而且起振时间相对较长频率精度受负载电容和温度影响较大。有源晶振贵一些、体积大一些、功耗高一些但输出信号质量好、频率稳定度高、起振快而且不需要外部匹配电容直接接到芯片的时钟输入引脚就能用。我个人的经验是消费类电子产品、成本敏感的项目优先考虑无源晶振工业控制、通信设备、对时钟精度要求高的场景有源晶振更稳妥。当然具体选哪个还要看主控芯片的时钟输入架构——有些MCU只支持无源晶振有些则两者都支持。1.3 选型决策的核心维度选型不是拍脑袋决定的我一般会从以下几个维度来评估评估维度无源晶振有源晶振成本低几毛到一两块高几块到几十块体积小常见3225、2016封装大常见5032、7050封装功耗低微安级高毫安级频率精度±10ppm到±50ppm±1ppm到±20ppm起振时间毫秒级微秒级外部电路需要负载电容和反馈电阻只需电源去耦输出信号正弦波芯片内部整形方波CMOS/LVDS等温度稳定性一般好可带温补这张表是我在多个项目选型时总结出来的基本上覆盖了大部分决策场景。需要注意的是频率精度这一栏无源晶振的精度很大程度上取决于负载电容的匹配精度和PCB的寄生电容实际做出来可能比标称值差不少。有源晶振因为内部已经校准好了实际精度更接近标称值。2. 无源晶振的选型要点与负载电容计算2.1 负载电容的匹配计算无源晶振最核心的参数之一就是负载电容CL。晶振 datasheet 上标称的频率是在特定的负载电容条件下测得的常见的有 8pF、10pF、12pF、20pF 等。如果你板子上的实际负载电容和标称值不一致振荡频率就会偏移。负载电容的计算公式是这样的CL (C1 × C2) / (C1 C2) Cstray其中 C1 和 C2 是晶振两端到地的匹配电容Cstray 是PCB走线和芯片引脚的寄生电容通常在 2pF 到 5pF 之间。举个例子假设你选了一颗标称负载电容为 12pF 的晶振PCB寄生电容估算为 3pF那么你需要的外部匹配电容就是C1 C2 2 × (CL - Cstray) 2 × (12 - 3) 18pF所以两颗匹配电容都选 18pF。实际选料的时候18pF 是标准值直接选就行。如果算出来是 17.5pF 这种非标值可以选最接近的标准值频率偏差通常在可接受范围内。注意Cstray 的估算很关键走线越长、越细寄生电容越大。我一般会在 layout 完成后用阻抗分析仪实测一下或者用仿真工具提取寄生参数。如果实在没法实测按 3pF 估算比较稳妥。2.2 驱动电平与负性阻抗评估驱动电平Drive Level是另一个容易被忽略的参数。晶振 datasheet 上会标一个最大驱动电平通常是 100μW 到 500μW。如果实际驱动电平超过这个值晶振可能会因为过度振动而加速老化甚至损坏。驱动电平的测量需要专门的晶振测试仪一般小公司没有这个条件。我的经验是如果芯片内部振荡器的驱动能力可调优先选低驱动档位如果不可调就在晶振串联一个限流电阻通常 100Ω 到 1kΩ 之间具体值可以通过实测波形来调整。负性阻抗Negative Resistance是衡量振荡电路稳定性的指标。简单来说振荡电路要能起振并稳定工作负性阻抗的绝对值必须大于晶振等效串联电阻ESR的 3 到 5 倍。这个参数一般芯片手册会给出测试方法如果负性阻抗不够晶振可能起振困难或者容易停振。2.3 温度特性与频率偏差无源晶振的频率温度特性通常是抛物线型的在 25°C 附近最准偏离这个温度频率就会漂移。普通晶振的温度频差在 ±10ppm 到 ±30ppm 之间如果应用场景对频率精度要求高比如射频通信就需要选温补晶振TCXO但那就属于有源晶振的范畴了。我在实际项目中遇到过一个问题冬天在室外调试设备发现通信距离明显变短后来查出来是晶振在低温下频率偏移太大导致射频载波频率偏离了接收端的带宽。后来换成 ±10ppm 的工业级晶振就解决了。所以如果你的产品有宽温要求选型时一定要看温度频差这个参数。3. 有源晶振的选型要点与输出类型选择3.1 输出电平类型的选择有源晶振的输出电平类型主要有以下几种CMOS/TTL最常见输出摆幅接近电源电压适合大多数数字电路。LVDS低电压差分信号抗干扰能力强适合高速时钟传输。LVPECL低电压正发射极耦合逻辑速度快但功耗大。HCSL高速电流控制逻辑常用于PCIe等高速接口。选哪种输出类型取决于你的负载芯片要求。比如你给FPGA提供时钟FPGA的时钟输入引脚支持什么电平标准你就选对应的有源晶振。如果负载芯片只支持CMOS你选个LVDS输出的晶振那就得加电平转换电路增加成本和复杂度。我一般优先选CMOS输出因为通用性最强而且大多数MCU和数字芯片都支持。只有在高速SerDes或者射频采样场景下才会考虑LVDS或LVPECL。3.2 电源去耦与纹波抑制有源晶振内部有振荡电路对电源噪声非常敏感。如果电源纹波大晶振的输出频率就会抖动相位噪声变差。所以有源晶振的电源去耦一定要做好。我的标准做法是在晶振的电源引脚旁边放一颗 0.1μF 的陶瓷电容再并一颗 10μF 的钽电容或陶瓷电容。0.1μF 负责滤高频噪声10μF 负责滤低频纹波。两颗电容尽量靠近晶振的电源引脚走线越短越好。如果电源本身噪声就大比如从DC-DC开关电源直接供电建议在晶振前面加一级LDO或者RC滤波。我试过用一颗 10Ω 电阻串联一颗 10μF 电容做RC滤波效果很明显相位噪声改善了将近 10dB。3.3 使能引脚与待机功能很多有源晶振带有使能引脚OE可以通过外部信号控制晶振的输出开启或关闭。这个功能在低功耗场景下很有用——系统不需要时钟的时候把晶振关掉省电。使能引脚的电平逻辑要看 datasheet有的是高电平使能有的是低电平使能。如果不用这个功能使能引脚要接到正确的电平上不能悬空否则晶振可能不工作或者工作不稳定。我踩过一个坑有一次设计时把使能引脚悬空了结果板子回来发现晶振时好时坏查了半天才发现是使能引脚浮空导致状态不确定。后来老老实实按照 datasheet 的要求不用就接地或接电源问题就解决了。4. PCB布局与走线的核心技巧4.1 晶振在PCB上的摆放位置晶振的摆放位置核心原则是离负载芯片越近越好。无源晶振的走线长度最好控制在 10mm 以内有源晶振可以稍微放宽但也不要超过 20mm。走线越长寄生电容和寄生电感越大信号质量越差。另外晶振要远离干扰源。哪些是干扰源开关电源的电感、DC-DC芯片、高速差分线、继电器、电机驱动电路这些都是。我一般会在布局阶段就把晶振放在板子的一个相对安静的角落周围用接地铜皮包围起来。如果板子上有多个晶振比如一个给MCU一个给射频芯片它们之间要保持足够的距离至少 10mm 以上避免互相干扰。我见过一个设计两个晶振挨在一起结果射频芯片的时钟上出现了MCU时钟的谐波导致接收灵敏度下降。4.2 地平面处理与屏蔽晶振下面的地平面非常关键。我的做法是在晶振的正下方铺一块完整的地铜皮不要走任何其他信号线。这块地铜皮通过多个过孔连接到主地平面过孔数量至少 4 个分布在晶振的四个角附近。为什么要这么做因为完整的地平面可以提供良好的屏蔽效果减少外部干扰对晶振的影响同时也可以减少晶振对外辐射的噪声。过孔的作用是把晶振下方的地铜皮和主地平面低阻抗连接起来避免形成地环路。对于有源晶振我还会在晶振周围加一圈接地过孔墙把晶振围起来。这个做法在射频板子上特别常见效果很好。过孔间距一般是 λ/20对于几十MHz的时钟间距 2mm 到 3mm 就够了。4.3 走线阻抗与匹配无源晶振的走线要尽量短、尽量粗一般走 8mil 到 10mil 宽。走线太细的话寄生电感大会影响起振。走线也不要直角拐弯用 45 度或者圆弧过渡减少阻抗突变。有源晶振的输出走线如果是CMOS电平按普通数字信号处理就行但要注意阻抗匹配。如果走线长度超过信号上升时间的 1/6就要考虑加串联端接电阻通常 22Ω 到 33Ω放在靠近晶振输出端的位置。对于LVDS或LVPECL输出的有源晶振走线必须按差分线处理控制差分阻抗 100Ω 或 50Ω具体看 datasheet 要求。差分线要等长、等距尽量少打过孔。4.4 电源与地的去耦布局去耦电容的布局我总结了一个“三近原则”近引脚、近地、近电源。0.1μF 的电容要放在晶振电源引脚旁边距离不超过 2mm。10μF 的电容可以稍微远一点但也不要超过 5mm。电容的接地端要通过过孔直接连接到地平面过孔要尽量靠近电容的焊盘减少寄生电感。我见过一些设计电容放得挺近但接地过孔离得很远结果去耦效果大打折扣。提示如果板子空间紧张可以把 0.1μF 的电容放在PCB背面正对着晶振的电源引脚这样距离更短效果更好。但要注意背面不能有其他信号线穿过。5. 常见问题与排查技巧实录5.1 晶振不起振的排查思路晶振不起振是最常见的问题排查思路我一般按以下顺序来检查供电有源晶振先量电源引脚电压是否正常无源晶振检查芯片的振荡器电路是否使能。检查负载电容无源晶振的匹配电容是否焊对容值是否合适。检查焊接晶振引脚是否虚焊特别是小封装的晶振焊接温度过高可能导致内部晶体损坏。检查使能引脚有源晶振的使能引脚电平是否正确。检查负性阻抗如果以上都正常可能是振荡电路的负性阻抗不够尝试减小匹配电容或更换ESR更低的晶振。我遇到过最诡异的一次晶振不起振查了半天发现是PCB板厂的工艺问题——晶振焊盘下面的地铜皮和晶振引脚之间的阻焊层太薄导致引脚对地漏电。后来换了板厂就没事了。所以有时候问题不在设计而在制造。5.2 频率偏移过大的原因分析频率偏移大通常有以下几个原因负载电容不匹配这是最常见的重新计算并更换匹配电容。寄生电容过大走线太长或太细优化布局。温度影响如果是宽温场景换温度特性更好的晶振。电源噪声有源晶振的电源纹波大加强去耦。晶振本身质量问题换一家供应商试试。我一般会先用频率计实测一下实际频率和标称值对比算出偏差量。如果偏差在 ±100ppm 以内通常是负载电容的问题如果偏差超过 ±1000ppm那可能是晶振本身或者电路有严重问题。5.3 相位噪声与抖动问题相位噪声和抖动是高频时钟电路的关键指标。如果发现通信误码率高或者ADC采样精度差但频率本身没问题那就要怀疑相位噪声了。改善相位噪声的方法加强电源去耦特别是高频去耦。缩短晶振到负载的走线。使用屏蔽罩或者接地过孔墙。换用相位噪声指标更好的有源晶振。我做过一个射频采样项目ADC的时钟抖动要求非常严格最后选了一颗相位噪声 -160dBc/Hz 10kHz 的有源晶振配合良好的电源滤波和屏蔽才勉强满足要求。所以如果你的应用对时钟质量要求高选型时一定要看相位噪声指标不能只看频率精度。5.4 常见问题速查表问题现象可能原因排查方法解决方案完全不起振供电异常、使能错误、焊接不良量电压、查使能、补焊修复供电、改正使能、重新焊接起振困难负性阻抗不足、负载电容过大减小匹配电容、换低ESR晶振调整电容值、更换晶振频率偏移大负载电容不匹配、寄生电容大实测频率、计算偏差重新计算电容、优化布局输出抖动大电源噪声、走线太长示波器看电源纹波、测走线长度加强去耦、缩短走线时好时坏虚焊、使能浮空、温度漂移轻敲板子、查使能电平、加热测试补焊、固定使能电平、换温补晶振这张表是我这些年排查晶振问题的经验总结基本上覆盖了 90% 以上的常见故障。实际排查时建议按表格顺序逐项检查不要跳步否则容易漏掉简单问题。6. 实操案例STM32最小系统晶振电路设计6.1 需求分析与器件选型假设我们要设计一个 STM32F103 的最小系统外部晶振选 8MHz 无源晶振负载电容 20pF。STM32F103 的外部高速时钟HSE支持 4-16MHz 的无源晶振内部有振荡器电路所以不需要额外的有源晶振。选型时注意几点晶振的 ESR 要低最好小于 50Ω否则起振困难。负载电容选 20pF这是 STM32 官方推荐值。封装选 3225 或 2016根据板子空间决定。6.2 负载电容计算与选型根据公式CL (C1 × C2) / (C1 C2) CstraySTM32 的 HSE 引脚寄生电容大约 5pFPCB 走线寄生电容按 3pF 估算总 Cstray 8pF。目标 CL 20pF所以C1 C2 2 × (20 - 8) 24pF24pF 不是标准值选最接近的 22pF 或 27pF。我一般选 22pF因为实际寄生电容可能比估算值小选小一点更保险。6.3 PCB布局实操布局要点晶振放在 STM32 的 OSC_IN 和 OSC_OUT 引脚旁边距离不超过 10mm。两颗 22pF 电容放在晶振和芯片之间接地端通过过孔直接连到地平面。晶振下方铺完整地铜皮不要走其他信号线。晶振周围加一圈接地过孔间距 2mm。晶振的走线宽度 8mil尽量短不要有过孔。我实际画板时会把晶振区域单独划出来用 keepout 层禁止其他信号线进入。这样可以从 layout 阶段就避免干扰。6.4 调试与验证板子回来后的调试步骤先不焊晶振量 OSC_IN 和 OSC_OUT 的对地阻抗确认没有短路。焊上晶振和匹配电容上电。用示波器高阻探头10MΩ以上量 OSC_OUT 引脚应该能看到 8MHz 的正弦波峰峰值大约 1V 左右。如果不起振先检查焊接再检查匹配电容最后换晶振。起振后用频率计实测频率偏差应在 ±50ppm 以内。注意示波器探头的寄生电容会影响振荡频率测量时尽量用低电容探头或者用频谱仪通过感应方式测量。我一般用 10:1 的高阻探头影响小一些。7. 有源晶振在高速接口中的应用实例7.1 PCIe参考时钟设计PCIe 接口对参考时钟的要求非常严格通常要求 ±300ppm 以内的频率精度和极低的相位抖动。这种场景下无源晶振基本不考虑直接上有源晶振而且往往是差分输出的。以 PCIe 3.0 为例参考时钟频率 100MHz输出类型 HCSL差分阻抗 100Ω。布局时要注意差分线严格等长误差控制在 5mil 以内。差分线尽量少打过孔如果必须打两个过孔要对称放置。晶振的电源去耦要非常充分0.1μF 和 10μF 电容各两颗。晶振下方和周围要有完整的地平面和过孔墙。我做过一个 PCIe 4.0 的项目参考时钟抖动要求小于 1ps RMS最后选了一颗相位噪声极低的有源晶振配合严格的布局和电源滤波实测抖动 0.8ps勉强达标。所以高速接口的时钟设计真的是抠出来的。7.2 射频本振电路设计射频本振LO对相位噪声的要求比 PCIe 还高。我做过一个 2.4GHz 的射频收发项目本振用的是 40MHz 有源晶振经过 PLL 倍频到 2.4GHz。晶振的相位噪声直接决定了整个射频链路的性能。选型时重点关注相位噪声指标通常要求 -150dBc/Hz 10kHz 以上。布局时晶振要放在屏蔽罩内电源用 LDO 单独供电去耦电容用高频陶瓷电容接地过孔墙间距 1mm。实测下来相位噪声每改善 3dB通信距离就能增加 10% 左右。所以射频项目里时钟电路的投入是值得的。8. 晶振电路的仿真与验证方法8.1 使用SPICE模型进行起振仿真无源晶振的起振过程可以用 SPICE 仿真来验证。晶振的等效电路模型包括动态电感 Lm、动态电容 Cm、动态电阻 Rm、静态电容 C0。这些参数可以从 datasheet 上找到或者向供应商索取。仿真时把晶振模型和芯片的振荡器电路通常芯片厂商会提供 SPICE 模型连接起来跑瞬态分析看是否起振以及起振时间。如果不起振可以调整匹配电容或串联电阻重新仿真。我一般会在设计阶段做一次仿真确认起振没问题再投板。虽然仿真不能完全替代实测但可以排除明显的设计错误减少打样次数。8.2 实测相位噪声与抖动实测相位噪声需要频谱分析仪或者专门的相位噪声测试仪。如果没有这些设备可以用示波器测抖动但精度有限。我常用的方法是用高带宽示波器至少 1GHz采集时钟信号用抖动分析软件计算 RMS 抖动和峰峰值抖动。虽然不如专用仪器准但对于大多数应用来说够用了。如果实测抖动超标先查电源纹波再查走线长度最后考虑换晶振。我遇到过几次抖动超标最后都是电源去耦不够导致的加强去耦后就达标了。8.3 温度循环测试对于宽温应用晶振的温度特性必须实测验证。我一般会把板子放进温箱从 -40°C 到 85°C 循环测试每个温度点稳定 30 分钟后测频率和抖动。如果发现某个温度点频率偏移特别大说明晶振的温度特性不好需要换温补晶振或者调整匹配电容。我做过一个车载项目要求 -40°C 到 105°C普通晶振根本扛不住最后换了 TCXO 才通过测试。9. 选型与布局的经验总结9.1 无源晶振的适用场景与限制无源晶振适合以下场景成本敏感的量产产品。板子空间紧张需要小封装。低功耗应用比如电池供电的设备。对频率精度要求不高的场合比如普通MCU的时钟源。限制也很明显频率精度受负载电容和温度影响大。起振时间较长不适合需要快速启动的应用。需要芯片内部有振荡器电路不是所有芯片都支持。9.2 有源晶振的适用场景与优势有源晶振适合以下场景对时钟精度和稳定性要求高的应用比如通信、射频、高速接口。需要快速起振的场合。芯片没有内部振荡器电路或者内部振荡器性能不够好。需要差分输出或者特殊电平标准的场景。优势是信号质量好、频率稳定、起振快、使用简单。代价是成本高、功耗大、体积大。9.3 混合使用策略有些复杂系统会同时使用无源晶振和有源晶振。比如主控MCU用无源晶振做系统时钟射频芯片用有源晶振做本振。这种混合策略可以兼顾成本和性能。我的建议是系统时钟、低速外设时钟用无源晶振高速接口、射频、精密测量用有源晶振。这样可以在保证性能的前提下尽量控制成本。9.4 供应链与国产替代考虑这两年供应链波动大晶振的交期和价格都不稳定。我的经验是选型时尽量选通用频率和封装比如 8MHz、16MHz、25MHz 这些备货容易。另外国产晶振的质量这几年提升很快很多场合已经可以替代进口品牌成本还能降不少。但要注意国产晶振的 datasheet 参数可能没有进口品牌那么详细选型时要多留余量实测验证要充分。我一般会先小批量试产验证没问题再大批量采购。10. 写在最后的一些实操心得晶振电路的设计说难不难说简单也不简单。我这些年最大的体会是不要凭感觉要凭数据和计算。负载电容该算就算驱动电平该测就测相位噪声该仿就仿。很多问题在设计阶段就可以避免没必要等到板子回来再debug。另外PCB布局的重要性怎么强调都不为过。我见过太多原理图完全正确、但layout一塌糊涂的板子晶振问题层出不穷。记住几个原则靠近负载芯片、完整地平面、充分去耦、远离干扰源。把这几点做到位大部分晶振问题都不会出现。最后分享一个小技巧如果你不确定晶振电路设计是否OK可以在板子上预留匹配电容的焊盘用可调电容或者多个电容并联的方式方便调试时调整。等调试好了再换成固定电容。这个做法虽然增加一点成本但可以大大缩短调试周期很划算。
返回列表