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

资讯详情

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

RK3588 PCIe 3.0同源时钟buffer设计要点与避坑

RK3588 PCIe 3.0同源时钟buffer设计要点与避坑 在 RK3588 硬件电路设计中PCIe 3.0 是很容易踩坑的高速接口之一。很多工程师把注意力放在差分数据走线、100Ω 阻抗匹配和电源去耦上却容易忽略参考时钟这一环。实际上PCIe 3.0 的 100MHz REFCLK 才是决定链路能否稳定完成 Link Training、能否打开展频SSC、能否兼容 M.2 NVMe 和 PCIe 插槽的关键。所谓“同源时钟”指的是 Root ComplexRC和 EndpointEP两端使用同一个物理时钟源由时钟 buffer 芯片扇出后分别送给 RK3588 的 PCIe PHY 和外部设备。这篇文章会围绕 RK3588 PCIE3.0 场景讲清楚同源时钟 buffer 芯片的工作原理、选型参数、参考电路、PCB 布局注意点以及常见调试手段帮助做过 USB、以太网等接口设计、但第一次接触 PCIe 的硬件工程师把这条时钟链路一次做稳。1. 先理解同源时钟PCIe 3.0 的 100MHz REFCLK 为什么不能随便给1.1 REFCLK 在 PCIe 链路上的作用PCIe 是高速串行总线RK3588 支持的 PCIe 3.0 单 lane 速率达到 8GT/s。发送端要把并行数据串行化后送出去接收端要把串行数据恢复出来这个过程依赖锁相环PLL和时钟数据恢复CDR。PLL 需要有一个稳定的参考输入这个参考输入就是 100MHz 的 REFCLK 差分信号。换句话说REFCLK 是 PCIe PHY 的“心跳”它的频率准确性、抖动、幅度和共模电压会直接影响链路的误码率和稳定性。这里要注意REFCLK 不是数据时钟本身而是 PHY 内部 PLL 的参考源。PCIe 规范要求 REFCLK 的频率为 100MHz静态偏差在无展频时通常为 ±300ppm开启展频时频率会在 100MHz 到 99.5MHz 之间向下扫动这就是后面要说的 SSC。如果 REFCLK 抖动超标PLL 输出的串行时钟同样会变差最终表现为 Link Training 失败、速率降级或者传输中偶发错误。1.2 CC、SRNS、SRIS三种参考时钟架构PCIe 规范把参考时钟架构分为三种。理解这三种架构是看懂同源时钟 buffer 芯片的前提。第一种是 Common Clock简称 CC也就是中文常说的同源时钟。RC 和 EP 共用同一个 100MHz REFCLK 源发送端和接收端的参考时钟来自同一根物理时钟树相位差被控制在规范允许范围内。这种架构下两端 PLL 对时钟抖动的跟踪能力最好也因此允许使用 SSC 来降低 EMI。第二种是 Separate Reference Clock with no Spread Spectrum简称 SRNS。两端各自使用独立的参考时钟但都不开 SSC。由于两端时钟独立系统必须预留更大的抖动裕量抖动容限比 CC 架构严格得多。第三种是 Separate Reference Clock with Independent Spread Spectrum简称 SRIS。两端使用独立参考时钟并且可以各自独立做展频。这种架构主要用在长距离线缆或者两个独立板卡之间的连接场景对收发器的 CDR 能力和抖动容限要求最高。对 RK3588 开发板来说M.2 NVMe、PCIe 插槽都放在同一块 PCB 上REFCLK 走线长度短、拓扑简单完全没有必要引入 SRNS 或 SRIS 的额外复杂度。因此绝大多数 RK3588 硬件设计直接采用 CC 同源时钟架构这也是文章标题里“同源时钟”四个字的由来。1.3 同源时钟 buffer 芯片的组合在 RK3588 场景下的优势同源时钟架构在实现上有一个基本要求RC 和 EP 必须拿到同一个 REFCLK。RK3588 的 PCIe PHY 是一个接收端M.2 连接器或 PCIe 插槽也需要 REFCLK两者的输入源必须来自同一个时钟源。一个时钟源不可能直接驱动多个 PCIe 端点和 RK3588 三组 PHY所以中间需要时钟 buffer 芯片做扇出。时钟 buffer 在这里解决三个问题。第一是扇出能力一路输入变成多路输出常见的是 1 进 4 出、1 进 6 出。第二是信号整形buffer 内部通常是模拟中继可以恢复驱动能力保证每路 REFCLK 的幅度和边沿满足 PCIe 规范。第三是相位一致性同源时钟要求各路输出的传播延迟尽量一致buffer 芯片的 output-to-output skew 就是衡量这个参数的关键指标。选择 buffer 芯片而不是单纯用电阻分路还有一个重要原因。PCIe REFCLK 是差分信号如果用简单并联分路负载阻抗会降低、反射会增大、各路之间的串扰无法控制抖动很快会超标。专业时钟 buffer 芯片内部有端接处理、输出驱动级和供电去耦结构是按 PCIe 抖动指标设计的这是普通无源分路无法替代的。2. RK3588 PCIE3.0 同源时钟链路长什么样2.1 PCIe 接口资源与 REFCLK 输入RK3588 是一颗接口资源非常丰富的 SoC涉及 PCIe 的部分通常包含多组控制器。常见资料里会描述为 PCIe 3.0 x4、PCIe 3.0 x2 和 PCIe 2.0 x1 三组控制器具体 lane 复用关系需要以对应型号的 datasheet 和 TRM 为准。硬件设计时每一组 PCIe 控制器都有对应的 REFCLK 输入差分对原理图符号上一般命名为 PEX_REFCLKP/REFCLKN或者带 PCIE30 前缀的 REFCLKP/REFCLKN。这里要提醒一句RK3588 的 PCIe 3.0 x4 控制器在实际项目中经常被拆分成 x2、x1 使用用来接多块 NVMe 或者不同速率的设备。但 lane 拆分不会改变 REFCLK 的拓扑原则无论怎么拆所有端点的 REFCLK 仍然建议来自同一个 buffer 源否则就退化成 SRIS 架构抖动裕量和调试复杂度都会大幅上升。另外RK3588 的部分 PCIe 接口可能与 SATA、USB3 等其他高速接口存在引脚复用关系。设计之前必须先在 Pin Mux 表里确认当前选择的 PCIe lane 没有和其他功能冲突。时钟链路设计做得再标准如果 pin mux 配置错了软件里一样列不出 PCIe 设备。2.2 典型链路结构一个时钟源多个扇出在 RK3588 开发板里PCIe REFCLK 链路可以抽象成下面这条主线时钟源晶振 时钟发生器或 100MHz 差分振荡器 | v ----------------------- | PCIe 时钟 buffer | | 1 输入N 输出 | ----------------------- | | | v v v RK3588 M.2 Key M PCIe 插槽 PCIE3 REFCLK_N/P REFCLK 差分对 REFCLK_N/P (63/64)在这条链路里“同源”两个字是关键。RK3588 PHY 的 REFCLK 和外部设备的 REFCLK 必须来自同一个上游源buffer 只做扇出和驱动恢复不改变频率、不重新生成时钟。这样两端看到的 100MHz 时钟在频率、展频调制和相位关系上是同一个信号PCIe 的 Common Clock 架构才成立。如果 RK3588 的 REFCLK 来自主晶振分频另一个端点却用了独立 100MHz 振荡器这种设计虽然两端都标称 100MHz但相位和抖动完全独立属于 SRNS 或 SRIS 范畴。此时如果还想开 SSC就必须确认链路两端都支持 SRIS 的抖动容限否则系统可能高低温测试时偶发断链。2.3 HCSL 与 LP-HCSL电平标准先对齐PCIe REFCLK 的电气接口最常见的是 HCSL全称是 High-Speed Current Steering Logic。它看起来是差分信号但本质上是电流型输出典型差分摆幅约 700mV共模电压约 350mV接收端每根线上需要 50Ω 对地电阻提供直流回路。HCSL 的优点是边沿快、抖动小缺点是功耗相对高、端接电阻不能省。后来出现的 LP-HCSL 是低功耗版本通过内部电流源和片上端接降低了外部元件数量。很多新型 PCIe 时钟 buffer 直接输出 LP-HCSL接收端一般也能兼容。设计时不能只看连接器定义还要确认 RK3588 PHY 的 REFCLK 输入支持哪种共模和端接方式。如果 buffer 输出 HCSL而后级 PHY 只接受 LVDS 或 LVPECL就需要额外处理共模电平和端接网络。在选型阶段最简单的方法是把 buffer 芯片数据手册里的输出接口类型、输出共模范围和 RK3588 TRM 里对 REFCLK 输入的描述同时打开一条参数一条参数核对。电路图上“接上去就能用”的直觉在 PCIe 这种高速接口上并不成立。3. 同源时钟 buffer 芯片选型先看参数再谈型号3.1 输出路数按“RC EP 预留”规划选 buffer 芯片第一步不是看品牌而是数输出路数。设计者需要列出当前方案里所有需要 REFCLK 的对象。以一个常见 RK3588 主板为例PCIe 3.0 x4 接一块 M.2 NVMe同时还有一路 PCIe 插槽预留那么 REFCLK 至少需要三路一路给 RK3588 PHY一路给 M.2 连接器一路给 PCIe 插槽。此时选择 1 进 4 出的 buffer 更合理留一路空置作为冗余或后续扩展。需要注意PCIe 3.0 x4 如果拆成两块 x2 设备接两块 NVMe每个 M.2 插槽都会有自己的 REFCLK 差分对输出路数要按实际连接器数量重新数。宁可多选一路不要卡着最紧的数目选型。多出来的输出端可以直接加 100Ω 端接并悬空功耗影响很小但后续改版会宽松很多。3.2 抖动、SSC 透传、接口类型、供电与使能选型时重点看下面几个参数这些参数直接决定芯片能不能用于 PCIe 3.0。第一个是抖动。PCIe Gen3 对 REFCLK 的抖动要求比 Gen2 严格数据手册里如果标注支持 PCIe Gen3 REFCLK通常会在 Jitter 或 Phase Noise 章节给出积分抖动指标。这里不要只看频率范围要认真看是否明确写到 Gen3。第二个是 SSC 透传能力。同源时钟通常要开 SSC 来降低 EMIbuffer 芯片必须能把上游输入的展频调制原样传到每一路输出。非 PLL 型 fanout buffer 天然透传 SSC而 PLL 型芯片要看是否有 SSC pass
返回列表