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#的电平。
- 设备未插入:PRSNT2#处于高阻态,被主板上拉至高电平(逻辑1)。
- 插入过程(先接触PRSNT1#):设备的地平面通过PRSNT1#与主板地连通,但PRSNT2#尚未接触,仍为高电平。
- 插入完成(PRSNT2#接触):设备内部将PRSNT2#与地(GND)短接。主板检测到PRSNT2#从高电平跳变为低电平(逻辑0),判定设备已完全就位。
- 移除过程(先断开PRSNT2#):拔出时短引脚PRSNT2#先脱离,主板检测到PRSNT2#从低电平跳变为高电平,判定设备开始移除。
- 移除完成(PRSNT1#断开):长引脚PRSNT1#最后断开,地回路切断,系统进入安全状态。
检测阈值:主板热插拔控制器通常设置去抖时间(Debounce Time)为50ms~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#信号机制与状态跳转的对应关系如下:
- Detect状态:物理层周期性发送Detect信号,等待PRSNT2#变低。一旦检测到低电平,立即进入Detect.Active子状态。
- Polling状态:PRSNT2#保持低电平,PERST#释放,REFCLK稳定。LTSSM开始训练链路,进行位锁定和符号锁定。
- L0状态:链路正常工作。PRSNT2#持续为低,作为“设备在位”的保持信号。
- Recovery/Detect(移除):PRSNT2#跳变为高,LTSSM从L0进入Recovery,尝试重训练;若PRSNT2#持续为高超过超时时间(通常为50ms),则回退到Detect状态,最终进入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#的时序验证是热插拔测试中最基础、也最容易忽略的环节。