2. PCIe信号定义与电气规范

PCIe 的物理层并不是“把几根线连起来就能通”的总线,它由一组职责明确的信号族构成:高速差分数据对负责载荷传输,参考时钟为收发器提供频率基准,复位信号决定链路何时进入可训练状态,边带信号承担带外管理与状态上报,链路训练信号在物理层完成位锁定与通道对齐,电源管理信号则控制链路在 L0、L1、L2 等低功耗状态之间迁移。理解这些信号的电气属性与相互时序,是 Allegro 中做约束、布线和后仿真的前提。

差分对:PCIe 的物理传输骨架

PCIe 的每一通道(Lane)由一对发送差分对(TXp/TXn)和一对接收差分对(RXp/RXn)组成,采用交流耦合,发送端串联电容典型值为 100 nF(Gen1/Gen2 常见 75~200 nF)。差分阻抗目标为 85 Ω,允许偏差通常按 ±10% 控制,即 76.5~93.5 Ω;单端对地阻抗约 42.5 Ω。差分对的电气规范核心是“对称”:两条走线等长、等宽、等间距,参考平面连续,过孔成对出现并尽量靠近。

在 Allegro 中,差分对通过 Constraint Manager 的 Differential Pair 约束绑定,需要设置 Primary Gap、Primary Width、Neck Gap、Neck Width 以及差分对内的 Phase Tolerance(相位容差)。以 Gen3(8 GT/s)为例,单位间隔 UI 为 125 ps,若差分对内偏斜按 5 ps 估算,对应约 0.04 UI,通常要求控制在 5~10 ps 以内;Gen4(16 GT/s)UI 为 62.5 ps,偏斜预算更紧,常按 2~5 ps 控制。这些数值是设计目标示例,实际应以所选器件手册和协议版本为准。

PCIe 链路信号族与电气关系 发送端 TX TXp / TXn 差分对 串联电容 100 nF 差分阻抗 85 Ω 去加重 / 预加重 PCB 通道(Allegro 约束对象) TXp TXn 等长 / 等间距 / 参考平面连续 / 过孔成对 接收端 RX RXp / RXn 差分对 接收均衡 CTLE/DFE CDR 时钟恢复 眼图 / 误码率判据 参考时钟 REFCLK 100 MHz 差分 HCSL ±300 ppm 展频可选 复位 PERST# 低有效,异步置位 释放后 100 ms 稳定 边带信号 PRSNT# / WAKE# SMBus / JTAG / CLKREQ# 电源管理 L0 / L1 / L2 状态 PLL 关断与唤醒 链路训练 LTSSM 关键状态 Detect → Polling → Configuration → L0(Recovery / Loopback 为异常或测试分支) 位锁定 → 符号锁定 → 通道对齐 → 极性反转 → 速率协商

参考时钟与复位:链路启动的两个前提

PCIe 参考时钟为 100 MHz 差分时钟,常见电平标准为 HCSL,部分低功耗场景使用 LVDS 或内部时钟。规范对 REFCLK 的频率精度要求为 ±300 ppm(含展频 SSC 时通常为 -5000~0 ppm 的下行展频),差分摆幅约 0.7~1.2 V,共模电压约 0.35 V。REFCLK 必须在 PERST# 释放前稳定,否则链路训练可能无法进入 Polling 状态。

PERST# 是低有效复位,由根复合体或上游器件驱动。规范要求:电源稳定后 PERST# 至少保持 100 ms 有效;释放后系统需在 100 ms 内提供稳定的 REFCLK 和电源。在 Allegro 中,PERST# 通常按低速单端信号处理,但要注意其走线不要与高速差分对长距离并行,避免复位边沿耦合到接收端造成误触发。

边带信号:带外管理与状态上报

边带信号不参与高速数据搬运,但决定了设备能否被正确识别、唤醒和调试。常见边带包括:

  • PRSNT#:存在检测,通过插槽中的短针或电阻分压告知系统板卡已插入,并可用于判断卡的类型(x1/x4/x8/x16)。
  • WAKE#:唤醒信号,低有效,用于设备从 L2 等深度低功耗状态请求系统唤醒。
  • CLKREQ#:时钟请求,低有效,允许设备在不需要 REFCLK 时请求关闭时钟以省电。
  • SMBus:带外管理总线,用于读取温度、功耗、故障日志等,通常与 PCIe 配置空间互补。
  • JTAG:边界扫描与调试,用于生产测试和板级互连检查。

这些信号在 Allegro 中一般按普通单端网络处理,但要注意上拉电阻的位置和阻值。例如 WAKE# 和 CLKREQ# 通常需要 10 kΩ 上拉到 3.3 V 辅助电源,PRSNT# 则通过插槽侧接地或分压实现。边带信号若与高速差分对共享连接器区域,应保证足够的回流路径和间距。

链路训练与电源管理:状态迁移的电气含义

链路训练由 LTSSM(Link Training and Status State Machine)控制,核心状态包括 Detect、Polling、Configuration、L0、Recovery、Loopback 等。Detect 阶段检测接收端是否存在;Polling 阶段通过发送 TS1/TS2 有序集完成位锁定和符号锁定;Configuration 阶段完成通道对齐、极性反转和链路宽度/速率协商;进入 L0 后链路才可传输 TLP。若训练失败,会进入 Recovery 重试,多次失败则降速或降宽。

电源管理信号与 LTSSM 紧密耦合。L0 为全速工作态;L1 为低功耗待机,PLL 可关断,退出需通过 Recovery 重新训练;L2 为深度睡眠,REFCLK 和主电源可关闭,仅靠 WAKE# 或辅助电源唤醒。设计时需注意:L1 退出延迟通常在微秒级,L2 退出则可能达到毫秒级,这会直接影响系统唤醒响应时间。

在 Allegro 中做 PCIe 约束时,建议把差分对、REFCLK、PERST#、边带信号分别建立约束组,并在 Constraint Manager 中为差分对设置 Phase Tolerance、为 REFCLK 设置等长和抖动预算、为 PERST# 设置最大走线长度和串扰隔离。这样在后仿真和 DRC 检查时才能逐项验证。

关键参数速查与检查要点

信号/对象关键电气参数Allegro 检查要点
TX/RX 差分对85 Ω 差分阻抗,100 nF 串联电容,偏斜 2~10 ps差分对绑定、Phase Tolerance、过孔成对、参考平面连续
REFCLK100 MHz,HCSL,±300 ppm,抖动预算等长、包地、远离高速差分对、终端匹配
PERST#低有效,100 ms 保持,异步释放最大长度、串扰隔离、上拉位置
边带信号3.3 V 单端,10 kΩ 上拉上拉电阻位置、连接器区域回流、ESD 保护
LTSSM / 电源管理L0/L1/L2 状态迁移,退出延迟与 REFCLK、PERST# 的时序配合,唤醒路径完整性

实际调试时,可先确认 REFCLK 在 PERST# 释放前已稳定,再用示波器观察差分对眼图是否满足模板要求,最后通过配置空间读取 Link Status 寄存器确认链路宽度和速率是否协商成功。若链路停留在 Polling 或 Configuration,优先检查参考时钟、复位时序和差分对极性;若频繁进入 Recovery,则重点排查阻抗不连续、串扰和电源噪声。