4. PRSNT#信号机制:PRSNT1#与PRSNT2#引脚定义、长短引脚检测原理、热插拔事件触发逻辑

PRSNT#(Present)信号是PCIe热插拔电气序列的物理层“哨兵”。它利用引脚长度的物理差异,在连接器层面实现先连接、后断开的机械时序,从而为LTSSM状态跳转提供可靠的插入/移除事件。

4.1 引脚定义与电气特性

信号名称 引脚长度 连接方向 默认电平 电气作用
PRSNT1# 长引脚(先接触) 主板 → 设备 高阻/上拉至Vcc 提供参考地回路,建立共模基准
PRSNT2# 短引脚(后接触) 设备 → 主板 高阻/上拉至Vcc 触发热插拔状态机,指示设备就绪
关键设计点:PRSNT1#与PRSNT2#在连接器上物理错开约1.5mm~2.0mm。长引脚PRSNT1#先于所有数据信号(包括REFCLK、PERST#)接触,短引脚PRSNT2#最后接触。这种“长短脚”结构是热插拔电气序列的机械基础。

4.2 长短引脚检测原理

长短引脚检测的核心在于机械时序差转化为电气状态变化。主板侧通过上拉电阻(通常为10kΩ至Vcc)监测PRSNT2#的电平。

  1. 设备未插入:PRSNT2#处于高阻态,被主板上拉至高电平(逻辑1)。
  2. 插入过程(先接触PRSNT1#):设备的地平面通过PRSNT1#与主板地连通,但PRSNT2#尚未接触,仍为高电平。
  3. 插入完成(PRSNT2#接触):设备内部将PRSNT2#与地(GND)短接。主板检测到PRSNT2#从高电平跳变为低电平(逻辑0),判定设备已完全就位。
  4. 移除过程(先断开PRSNT2#):拔出时短引脚PRSNT2#先脱离,主板检测到PRSNT2#从低电平跳变为高电平,判定设备开始移除。
  5. 移除完成(PRSNT1#断开):长引脚PRSNT1#最后断开,地回路切断,系统进入安全状态。
检测阈值:主板热插拔控制器通常设置去抖时间(Debounce Time)为50ms~100ms,避免因机械抖动产生误触发。PRSNT2#电平必须在去抖时间内保持稳定,才被视为有效事件。
PRSNT1#/PRSNT2# 长短引脚检测时序图 PRSNT1# / PRSNT2# 长短引脚检测时序 t T0: 未插入 T1: PRSNT1#接触 T2: PRSNT2#接触 T3: 完全就位 PRSNT1# (长引脚) 高阻/浮空 GND(地回路建立) PRSNT2# (短引脚) 高电平(上拉至Vcc) 低电平(GND短接) 去抖窗口(50~100ms):PRSNT2#低电平稳定后,热插拔控制器才确认插入事件

4.3 热插拔事件触发逻辑

PRSNT2#的电平跳变是热插拔状态机的直接输入。主板上的热插拔控制器(通常集成在Root Complex或Switch的物理层)根据PRSNT2#状态,结合PERST#和REFCLK,生成标准热插拔事件。

PRSNT2#状态 PERST#状态 REFCLK状态 触发事件 LTSSM目标状态
高→低 低(有效) 稳定 插入事件(Attention Button / Presence Detect) Detect → Polling → L0
低→高 低(有效) 稳定 移除事件(Surprise Remove) L0 → Recovery → Detect → Disabled
低→高 高(无效) 丢失 紧急移除(Power Fault) 直接进入Disabled
设计约束:PRSNT2#必须在PERST#释放之前完成低电平稳定。如果PRSNT2#已经为低但PERST#仍为高,设备可能无法正确复位,导致LTSSM卡在Detect状态。PCIe Base Spec要求PERST#在PRSNT2#稳定后至少延迟100μs再释放。

4.4 热插拔事件触发流程(状态机视角)

从LTSSM的角度看,PRSNT#信号机制与状态跳转的对应关系如下:

  1. Detect状态:物理层周期性发送Detect信号,等待PRSNT2#变低。一旦检测到低电平,立即进入Detect.Active子状态。
  2. Polling状态:PRSNT2#保持低电平,PERST#释放,REFCLK稳定。LTSSM开始训练链路,进行位锁定和符号锁定。
  3. L0状态:链路正常工作。PRSNT2#持续为低,作为“设备在位”的保持信号。
  4. Recovery/Detect(移除):PRSNT2#跳变为高,LTSSM从L0进入Recovery,尝试重训练;若PRSNT2#持续为高超过超时时间(通常为50ms),则回退到Detect状态,最终进入Disabled。
PRSNT# 触发 LTSSM 状态跳转流程 PRSNT# 触发 LTSSM 状态跳转流程 Detect Polling L0 Recovery Disabled PRSNT2#=低 链路训练完成 PRSNT2#=高 重训练失败 / 超时 PRSNT2#持续高 注意:PRSNT2#高电平持续时间超过50ms(去抖+超时),LTSSM才判定为永久移除,进入Disabled状态。

4.5 设计验证要点

验证清单(硬件设计/测试阶段):
  • 引脚长度公差:PRSNT1#与PRSNT2#的物理长度差必须≥1.2mm,确保先接触/后断开时序。
  • 上拉电阻选择:主板侧PRSNT2#上拉电阻推荐10kΩ±5%,兼顾功耗和噪声容限。
  • 去抖时间测量:使用示波器捕获PRSNT2#下降沿,验证去抖时间在50ms~100ms范围内。
  • PERST#与PRSNT2#时序:PERST#释放必须在PRSNT2#稳定为低之后至少100μs。
  • 热插拔循环测试:至少执行1000次插拔循环,监测LTSSM是否出现卡死在Detect或Recovery的情况。

PRSNT#信号机制是PCIe热插拔电气序列的“第一道门”。它通过简单的长短引脚物理设计,实现了可靠的存在检测,为后续的电源排序、复位释放和LTSSM状态跳转提供了准确的触发条件。在硬件设计中,PRSNT#的时序验证是热插拔测试中最基础、也最容易忽略的环节。