ARTICLE DETAIL

资讯详情

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

RK3588 PCIe 3.0同源时钟Buffer电路设计要点与实战

RK3588 PCIe 3.0同源时钟Buffer电路设计要点与实战 各位做 RK3588 平台硬件或者底层驱动的朋友应该都有过这样的经历板卡画完系统启动后lspci就是看不到设备或者 PCIe 链路反复 Training 失败。排查到最后大概率会把目光集中到 PCIe 参考时钟上。RK3588 的 PCIe 3.0 控制器对参考时钟的要求并不低而“同源时钟 Clock Buffer”的电路设计恰恰是很多原理图里最容易忽略细节、也最容易踩坑的一环。这篇文章围绕 RK3588 PCIe 3.0 同源时钟 Buffer 电路图绘制展开从概念原理到器件选型再到具体连接关系和 PCB 布局建议整理成一套可落地的设计笔记。无论你是正在画 RK3588 核心板/底板还是单纯想搞明白 PCIe Reference Clock 应该怎么接这篇文章都能提供参考。先说明一点本文不涉及具体开发板的完整原理图也不替代 RK3588 Datasheet 或 TRM。实际绘制时请以官方参考设计和选型芯片的 datasheet 为准。1. 背景为什么 RK3588 PCIe 3.0 需要同源时钟 buffer1.1 PCIe 3.0 参考时钟与同源时钟概念PCIe 作为高速串行总线其物理层需要一路 100MHz 的差分参考时钟Reference Clock简称 Refclk用来作为 SerDes 收发数据的时钟基准。PCIe 3.0 的单通道速率已经达到 8GT/s对参考时钟的频率精度、相位噪声和抖动提出了非常高的要求。在板级设计中PCIe 系统的时钟架构主要有三种时钟架构英文缩写特点适用场景共同时钟Common RefclkRC 和 EP 共享同一 100MHz 时钟源同源同相时序最容易收敛板级集成多设备最常用独立时钟带扩频SRIS各设备使用独立时钟均开启扩频需要链路两端都支持 SRIS服务器、可插拔模块独立时钟无扩频SRNS各设备使用独立时钟不使用扩频两端约定好独立时钟模式所谓“同源时钟”就是 Common Refclk 架构。RK3588 作为 Root Complex它和下游 PCIe 设备比如 NVMe SSD、PCIe 网卡、PCIe Switch都使用同一个 100MHz 参考时钟源。这样做的好处是链路建立时收发双方的参考时钟偏差小不需要额外的 SSC 补偿机制工程技术上最容易实现。1.2 RK3588 PCIe 3.0 时钟路径中 buffer 的作用RK3588 集成多路 PCIe 控制器其中包含 PCIe 3.0 控制器可用于接 NVMe SSD、PCIe 转 SATA、千兆/万兆网卡等高速外设。对于板级设计来说RK3588 PCIe 3.0 PHY 需要一个 100MHz 差分参考时钟。那么为什么不能在 RK3588 旁边直接放一个 100MHz 有源晶振完事原因很现实有源晶振输出通常是单端或单一差分扇出能力有限无法同时稳定驱动 RK3588 和多个 PCIe 设备。PCIe 设备往往分布在板卡的不同位置参考时钟走线会有分支直接并联会导致反射、振铃和相位偏移。从时钟源到各接收端的时钟偏斜Skew需要尽量小才能满足 Common Refclk 架构下的建立保持时间要求。Clock Buffer时钟缓冲器就是为了解决这些问题而存在的。它把一路 100MHz 差分时钟输入扇出成多路同频同相的差分时钟输出每一路都有独立的驱动能力并具备良好的抖动性能。简单来说同源时钟 Buffer 是 RK3588 PCIe 3.0 系统的“分线器”是让多个 PCIe 设备共享一个稳定时钟源的关键器件。2. 环境准备与器件选型2.1 硬件调试与画图工具绘制 RK3588 PCIe 3.0 同源时钟 Buffer 电路通常需要以下几类工具环境原理图设计工具OrCAD Capture、Altium Designer、KiCad 均可本文重点讲连接关系EDA 工具只是载体。仿真工具可选HyperLynx、SiSoft、ADS 等用于差分时钟的信号完整性预分析。硬件调试工具示波器带宽建议 1GHz 以上、差分探头、有源探头用于测量 100MHz 参考时钟波形。逻辑分析/系统调试RK3588 Linux SDK、串口终端用于查看 PCIe 枚举结果与链路状态。版本方面不需要刻意追求最新重点是熟悉自己使用的 EDA 工具如何创建符号、放置器件和连接网络。2.2 时钟 buffer 芯片选型要点选择同源时钟 Buffer 时不能只看“能不能分频扇出”要重点确认以下参数输入/输出路数建议 1 进 2 出、1 进 4 出按需选择预留扇出余量。输出类型必须支持差分时钟输出通常是 HCSL 或 LVDS/LVPECLPCIe 参考时钟常见为 HCSL。频率支持必须支持 100MHz 或更宽范围。抖动性能PCIe 3.0 对参考时钟抖动要求非常严格建议选择明确标注支持 PCIe Gen1/Gen2/Gen3 的型号。供电电压常见有 3.3V 或 2.5V需要与 RK3588 周边电源方案匹配。使能逻辑OE/EN 引脚电平、内部上拉/下拉情况避免上电后输出处于高阻态。市面上支持 PCIe 3.0 参考时钟扇出的 Clock Buffer 有不少例如常见的 PCIe 时钟Buffer系列比如 Renesas/IDT 9DB 系列、TI CDC 系列、Diodes 的 PI6C 系列等。具体型号需要根据你的 PCIe 设备数量、抖动余量和采购渠道决定。这里不写死具体料号因为不同渠道的供货和封装差异很大最终要以官方数据手册为准。2.3 时钟接入 RK3588 前需要确认的硬件信息在开始画原理图之前强烈建议先做一次信息确认避免画完再返工确认 RK3588 具体型号封装与 PCIe 3.0 PHY 参考时钟引脚位置不同封装/不同 PCB 设计引脚命名可能不同。确认官方参考设计中该引脚是直接接外部时钟源还是经 Clock Buffer 扇出。确认 PCIe 3.0 设备是否需要独立的参考时钟网络比如有两个 PCIe 3.0 插槽分别接不同设备那么 Buffer 至少需要两路输出。确认 RK3588 周边时钟源是否与其它模块共用例如有些方案会和 PCIe 2.0/3.0、USB3.0 等共用一颗时钟发生器这时要分析各路负载对参考时钟的影响。信息确认完成后再进入原理图绘制阶段。3. 同源时钟 buffer 电路设计核心要点3.1 参考时钟的输入、扇出与拓扑结构同源时钟 Buffer 电路的本质就是保证“从源端到 RK3588”和“从源端到 PCIe Endpoint”的时钟时序关系一致。常用拓扑结构如下----------------- ------------------ | | | | | 100MHz 时钟源 | | Clock Buffer | | (OCXO/TCXO/ | 差分输入 | 1:2 / 1:4 | | 有源晶振) |----------| Channel 0/1 | | | | | ----------------- ------------------ | ------------------------------ | | v v ------------------------ ------------------------ | RK3588 PCIe 3.0 | | PCIe Endpoint | | PHY REFCLKP/N | | (NVMe/PCIe Switch) | ------------------------ ------------------------从上图可以看出Clock Buffer 输入接时钟源输出分别接到 RK3588 的 PCIe 3.0 PHY 参考时钟引脚和下游 PCIe 设备。这样就实现了 Common RefclkRK3588 和 PCIe 设备看到的是同一个来源的时钟。在实际项目中如果 RK3588 的 PCIe Root Port 默认需要外部输入参考时钟那么 Buffer 输出端通常直接连到 RK3588 的 PCIe 3.0 PHY REFCLK 引脚如果开发板方案使用 RK3588 内部时钟作为 PCIe 时钟源则不需要额外的 Buffer。具体以 RK3588 参考设计原理图为准。3.2 电源滤波与去耦Clock Buffer 虽然只是“分时钟”但它的电源质量直接决定输出时钟的抖动性能。在电路图绘制时电源部分不能偷懒。建议在 Clock Buffer 的每个电源引脚旁放置以下去耦电容0.1uF 陶瓷电容靠近电源引脚滤除高频噪声。1uF 或 10uF 钽电容/陶瓷电容用于滤除中低频纹波。必要时可以在 Buffer 的供电网络上加一个磁珠把 Clock Buffer 电源与其它数字电源隔离开避免 PCIe 高速信号工作时产生的电源噪声耦合进参考时钟。去耦电容的放置原则是电容尽量靠近 Clock Buffer 电源引脚走线要先经过电容再到引脚而不是从电源平面直接拉线到引脚。3.3 差分端接与 AC 耦合100MHz 参考时钟在 PCB 上是差分信号差分阻抗一般设计为 100Ω。是否需要在 Buffer 输入/输出端加端接电阻取决于所选 Clock Buffer 的输入输出结构。如果 Clock Buffer 输入是差分对且内部没有集成端接那么需要在靠近输入引脚处跨接一颗 100Ω 差分终端电阻用于吸收反射。如果 Clock Buffer 输出是 HCSL 结构通常每一路输出正负端分别在接收端有 50Ω 到地或者按照 datasheet 要求做端接具体以数据手册为准。AC 耦合电容PCIe 参考时钟在某些架构下需要 AC 耦合耦合电容通常取 0.1uF放置在发送端一侧。是否需要加要看 RK3588 PCIe PHY 的参考时钟输入要求以及 Clock Buffer 的输出电平。这里分享一个经验在设计阶段建议预留 AC 耦合电容位置即使最初方案采用直流耦合也保留 0 欧或电容位方便后续调试。3.4 使能控制与上电时序Clock Buffer 除了电源和时钟通路还有一个容易被忽略的引脚输出使能OE/EN。这个引脚常见有两种接法直接通过 10k 电阻上拉到电源使 Buffer 上电后立即输出。接到 PMIC GPIO、CPLD/FPGA 或 SoC GPIO用于控制 PCIe 参考时钟的输出时序。从 PCIe 规范角度参考时钟必须在 PERST# 释放之前稳定输出。如果使能脚不受控只要 Buffer 供电稳定通常也能满足时序。但在多设备复杂系统里推荐使用可控使能确保时钟输出比 PCIe 复位晚不了太多。具体电阻值、使能电平逻辑请查看 Clock Buffer 数据手册。4. 电路图绘制实战RK3588 PCIe 3.0 同源时钟 buffer4.1 绘制前的准备确认参考设计资料在动手画原理图之前先打开 RK3588 官方设计文档或开发板原理图找到 PCIe 3.0 部分确认以下内容RK3588 PCIe 3.0 PHY 参考时钟引脚名称。官方参考设计使用的时钟源是外部晶振还是时钟发生器。官方参考设计中是否有 Clock Buffer如果有使用的是哪一款周边电路怎么接。以 RK3588 常见的开发板为例PCIe 3.0 参考时钟引脚通常命名为PCIE30_REFCLKN/PCIE30_REFCLKP或类似形式具体名称请对照数据手册。本文中的引脚名称为示例实际绘制以你的原理图库和官方资料为准。4.2 原理图中的连接关系下面给出一个通用的 Clock Buffer 同源时钟电路连接关系清单。假设使用的是 1 进 2 出 Clock Buffer输入接 100MHz 差分时钟源输出 0 接 RK3588输出 1 接 PCIe 设备。网络名起点引脚终点引脚说明CLK_IN_P时钟源 P 输出ClockBuffer.IN_P100MHz 差分输入正CLK_IN_N时钟源 N 输出ClockBuffer.IN_N100MHz 差分输入负REFCLK_MAIN_PClockBuffer.OUT0_PRK3588 PCIE30_REFCLKP输出到 RK3588REFCLK_MAIN_NClockBuffer.OUT0_NRK3588 PCIE30_REFCLKN输出到 RK3588REFCLK_EP_PClockBuffer.OUT1_PPCIe 设备 REFCLKP输出到 EndpointREFCLK_EP_NClockBuffer.OUT1_NPCIe 设备 REFCLKN输出到 EndpointBUF_VCC3.3V 电源ClockBuffer.VCCBuffer 供电BUF_OE3.3V 或 GPIOClockBuffer.OE输出使能控制BUF_GNDGNDClockBuffer.GND接地4.3 时钟 buffer 输入部分电路时钟源到 Clock Buffer 输入端的电路重点是保证时钟源输出信号能够完整到达 Buffer。通常100MHz 差分时钟源会有正负两个输出引脚经过 100Ω 差分阻抗走线接到 Clock Buffer 的 IN_P 和 IN_N。如果 Clock Buffer 的输入端需要端接在靠近芯片引脚位置放置一颗 100Ω 差分终端电阻CLK_IN_P --------- IN_P | 100Ω | CLK_IN_N --------- IN_N有些 Buffer 输入内部已有端接此时不需要外部 100Ω 电阻画出该电阻反而会影响直流工作点。这一点要严格按数据手册设计。如果时钟源本身是单端输出建议不要直接进 Buffer 差分输入。可以改用支持单端转差分的时钟发生器或者选择有单端输入支持型号的 Buffer避免电平不匹配。4.4 时钟 buffer 输出到 RK3588 与 PCIe 设备输出部分的连接相对直接但要注意以下细节每一路输出都是差分对分别对应OUTx_P和OUTx_N。如果采用 AC 耦合方案在 Buffer 输出引脚到接收端之间串联 0.1uF 电容两个信号线上都要放置。输出到 RK3588 的走线和输出到 PCIe 设备的走线在 Buffer 输出端会形成分支。从 Buffer 引脚出来的那一小段走线尽量使两条分支长度接近减小 Skew。输出通路示意--0.1uF-- REFCLK_MAIN_P --- RK3588 OUT0_P ----------- --0.1uF-- REFCLK_MAIN_N --- RK3588这里需要强调PCIe 参考时钟走线并不是越长越好也不是越短越好关键是保持差分阻抗连续、分支等长、避免过孔跨分割。4.5 去耦电容与辅助电路在原理图中每个电源引脚旁都要添加去耦电容可参考以下表格电容容值数量用途C10.1uF1高频去耦C21uF1中频去耦C310uF1电源输入储能另外建议在原理图上加入测试点预留CLK_IN_TP/CLK_OUT_TP差分测试点方便调试时用示波器测量。如果芯片有 GND 裸露焊盘要正确连接到地平面不要悬空。4.6 检查清单电路图绘制完成后花几分钟对照检查[ ] Clock Buffer 电源引脚是否都有去耦电容极性电容方向是否正确。[ ] 差分输入输出是否有反接P/N 是否一一对应。[ ] 使能引脚是否被正确拉高/拉低悬空很危险。[ ] 端接电阻和 AC 耦合电容是否与 datasheet 一致。[ ] 网络命名是否规范例如PCIE30_REFCLK_P/N不要随意命名方便驱动调试时对应。[ ] 是否预留了调试测试点。5. 常见问题与排查思路同源时钟 Buffer 电路的问题往往不是通电瞬间就暴露而是在 PCIe 设备枚举阶段才显现。以下整理几个高频问题和排查思路。问题现象常见原因解决思路RK3588 系统起来后lspci看不到设备PCIe 链路 Training 失败检查参考时钟是否存在测量 Buffer 输出频率和幅度PCIe 设备时好时坏链路不稳定参考时钟抖动过大 / 电源纹波大检查 Buffer 供电去耦优化 PCB 走线Buffer 输出引脚没有波形Buffer 未使能或供电异常测量 OE 引脚电压确认供电和使能时序lspci能看到设备但读写报错差分走线阻抗不连续或 Skew 过大检查布线阻抗确认同源时钟走线等长参考时钟波形幅度偏低端接电阻设计不合理对照 datasheet 检查输入输出端接5.1 PCIe 链路训练失败链路训练失败是 RK3588 PCIe 调试中最常见的问题。排查顺序建议测量 Clock Buffer 输入时钟是否存在频率是否为 100MHz。测量 Clock Buffer 输出到 RK3588 的时钟是否存在幅度是否正常。检查 RK3588 PCIe 控制器是否已经正确复位PERST# 信号是否拉高。用 RK3588 串口查看内核启动日志搜索pcie关键字确认控制器是否 probe 成功。如果日志提示link training failed优先怀疑时钟质量其次检查差分布线。5.2 参考时钟无输出或波形异常如果 Buffer 输出完全没有波形先测输入输入没有波形检查时钟源供电、输出使能确认晶振/时钟发生器是否起振。输入有波形输出没有检查 Buffer 供电和 OE 引脚。输出频率不对可能是配置引脚错误或买到不兼容的型号。5.3 时钟抖动过大导致误码抖动过大往往和电源和 PCB 布线有关检查 Clock Buffer 电源去耦电容是否足够容值是否偏小。检查时钟走线周围是否有高频数字信号交叉必要时加大包地或拉大间距。如果 Buffer 输出负载过重比如一串多需要考虑增加 Buffer 路数而不是一路硬扛。5.4 RK3588 系统找不到 PCIe 设备在 RK3588 Linux 系统里首先确认设备树中 PCIe 节点使能status okay并检查复位 GPIO、电源 GPIO 是否配置正确。硬件侧可以尝试测量 PCIe 设备供电和参考时钟是否同时存在。如果只有参考时钟没有供电设备自然无法枚举。6. PCB 布局与布线建议6.1 100Ω 差分走线PCIe 3.0 参考时钟信号必须走差分差分阻抗控制在 100Ω±10% 范围内。以下是具体建议线宽/线距以叠层计算为准一般 100Ω 差分阻抗可以通过 4mil/6mil 或 5mil/5mil 等组合实现取决于叠层结构和板材。同一对差分线要保持等长长度差越小越好建议不超过 5mil。走线尽量少打过孔如果必须换层过孔附近加回流地孔。6.2 参考平面与跨分割时钟信号必须有完整的参考平面通常是 GND 平面。如果差分走线跨越了电源/地分割区域回流路径会被破坏导致阻抗突变和辐射增大。在布局时可以让 Clock Buffer 靠近 RK3588 PCIe 控制器放置同时让时钟走线都在同一平面上完成避免跨分割。6.3 与其它高速信号的隔离PCIe 3.0 参考时钟属于敏感信号应该远离以下信号USB3 差分对PCIe 数据差分对HDMI 差分对高频开关电源走线如果无法避免相邻走线至少保证间距不小于 3 倍线宽必要时在两侧加 GND 保护地孔。6.4 电源完整性与散热Clock Buffer 功耗一般不大但供电网络需要稳定。建议从电源输出端到 Buffer 单独拉一条走线不要与其它大电流器件共用细走线。给 Buffer 供电引脚添加 0.1uF 和 1uF 去耦电容。如果 Buffer 靠近板边或散热器需要评估热应力是否会导致焊接问题。7. 工程最佳实践与设计复盘7.1 原理图可读性与命名绘制电路图时不要只追求“能连通”还要考虑后续维护和协作。命名建议统一携带 PCIe 时钟语义例如PCIE30_REF_CLK_P/NPCIE30_CLK_BUF_ENPCIE30_CLK_BUF_PWR这样不仅硬件工程师容易识别软件工程师在查看设备树、调试日志时也能快速理解。7.2 可测试性设计测试点与 0 欧电阻在量产板卡上测试点有时候是救命的。我在设计时会做三件事在 Buffer 输入输出差分对上预留小焊盘测试点。在 RK3588 REFCLK 引脚附近预留 0 欧电阻串联位置必要时可以断开测量。给 Buffer 的 OE 引脚预留跳线电阻位方便调试时强制拉高/拉低。这些操作不会增加多少 BOM 成本但在排查问题时能节省大量时间。7.3 从 dts 到硬件的一致性检查软件侧也需要与硬件设计对应。RK3588 Linux 设备树中PCIe 控制器节点通常包含以下内容compatible rockchip,rk3588-pcie相关配置reg地址和中断配置复位 GPIO、使能 GPIO、电源 GPIO最大速度配置例如max-link-speed 3表示 PCIe 3.0硬件上配置了同源时钟 Buffer软件一般不需要特别配置参考时钟但是要确认 PCIe 控制器是使用外部参考时钟还是内部 PLL这一点需要参考 RK3588 参考驱动和 TRM 中的时钟树说明。7.4 产品化的其它风险控制批量物料一致性Clock Buffer 型号和批次变更前建议先小批量验证抖动和链路稳定性。温度范围如果产品需要高低温工作需要确认 Clock Buffer 的温度等级满足要求。供应链优先选择容易采购、有替代型号的芯片避免单一料号断货导致项目停滞。预留设计余量如果未来可能升级更多 PCIe 设备建议 Buffer 输出路数预留多一路。8. 总结RK3588 PCIe 3.0 同源时钟 Buffer 电路本质上就是“一个输入、多个输出、同频同相”的时钟扇出方案。设计时重点关注三件事一是 Clock Buffer 选型是否满足 PCIe 3.0 抖动要求二是输入输出差分连接是否按照 datasheet 正确端接三是 PCB 阶段是否保证 100Ω 差分阻抗和完整参考平面。硬件调试时如果遇到链路起不来不要急着怀疑 RK3588 本身先用示波器量一下参考时钟频率对不对、幅度够不够、有没有明显毛刺。多数情况下同源时钟网络干净了PCIe 设备也就老实了。希望这篇文章能帮你在画图和调试 RK3588 PCIe 3.0 时钟电路时少走弯路。如果后续再遇到 PCIe 链路问题也可以从参考时钟这个方向快速定位。
返回列表