【PCIe Detect State】

Dectect 简介

PCIe Detect是LTSSM状态的起始状态,在该状态transmitter会去探测link的对端是否存在receiver。

Detect State Machine介绍

Detect substate 介绍

  • Dectect.Quiet
    Dectect.Quiet 是LTSSM的初始状态,在这个状态下transmitter处于Electrical Idle,并且data rate 一定是2.5GT/s。
  • Dectect.Active
    LTSSM在Dectect.Active开始测试对端receiver是否存在,该探测过程是由MAC发起,PHY从DC common mode 电压开始改变电压,然后测试充电时间。因为对端存在与否负载电阻不同,因此充电时间不同,如果充电时间比较短,那么则认为没有receiver,否则存在receiver。

在这里插入图片描述

Dectect substate跳转条件

  • Dectect.Quiet到Dectect.Active
    1. 每12ms LTSSM会从Detect.Quiet 跳转到Dectec.Active去测试对端是否存在,如果对端一直不存在这个过程也会一直进行。
    2. 如果链路上的Electrical Idle状态被破坏了,那么transmitter中的LTSSM会跳到Detect.Active状态。
      这种Electrical Idle状态可能发生在金手指连接不稳定的场景下,在这种场景下transmitter会尝试进入Detect.Active状态来修复连接不稳定的信道或者降lane,来解决这种问题。
  • Detect.Active到Detect.Quiet
    当对端不存在receiver时,LTSSM会从Detect.Quiet跳到Detect.Quiet。

测试对端是否存在过程中MAC和PHY交互

PCIe MAC和PHY之间通过标准PIPE接口PIPE学习记录进行交互,从上述描述可以看出测试对端是否存在的过程主要的逻辑是PHY完成的。但是在Simulation过程中有VIP PIPE<-> DUT PIPE 拓扑,因此对MAC和PHY在Detect状态下的交互进行介绍可以更好的对这种拓扑进行理解。

  • 与Detect状态相关的PIPE信号
    1. PowerDown[1:0]
    2. TxDetectRx/Loopback
    3. TxElecIdle
    4. RxElecIdle

详细介绍见PIPE Spec

Detect.Quiet 状态下PIPE信号行为介绍

  1. 12ms timeout引起的状态机跳转到Detect.Active
    所有相关信号都会保持不动。
  2. No Electrical Idle on Link引起的状态机跳转到Detect.Active
    PHY会将RxElecIdle拉低给MAC,以表示lane上已经不是Electrical Idle了。

Dectect.Active 状态下PIPE信号行为介绍

MAC拉高TxDetectRx来发起测试过程,然后PHY(在VIP PIPE <-> DUT PIPE拓扑下,PHY通常是PHY model),通过PhyStatus和RxStatus来告知MAC对端是否存在,详细时序图如下。
在这里插入图片描述

### PCIe 6.0状态机详解 #### 状态定义与转换机制 PCIe接口通过一系列严格定义的状态来管理链路的建立、维护以及断开。对于PCIe 6.0而言,其状态机模型继承自早期版本并进行了优化改进以适应更高的传输速率需求。 - **Detect (DET)**: 链路两端设备在此状态下检测对方的存在,并准备进入物理层初始化阶段[^1]。 - **Polling Active (POLL_ACT)** 和 **Polling Inactive (POLL_INACT)**: 这两个子状态用于完成初始训练序列(ITS),其中包含了对电气特性的协商和确认。一旦成功,则会过渡到配置(Link Training and Status State Machine, LTSSM)中的下一个主要状态[^2]. - **Configuration**: 在此期间执行更详细的参数设置工作,比如确定数据宽度和支持的最大读取请求大小等属性。值得注意的是,在这个过程中可能会涉及到轻量级通知(LN)协议的应用;然而随着PCIe 6.0的发展,该功能已被移除. - **Recovery**: 当遇到错误条件时,系统将尝试恢复正常的操作模式而不必完全重启整个连接流程。这有助于提高系统的稳定性和效率。 - **L0/L1 Power States**: L0表示活动的工作状态,而L1则是低功耗闲置模式之一。为了实现更好的节能效果,PCIe 6.0继续沿用了这些电源管理模式的同时还引入了一些新的特性来进一步降低能耗水平。 ```python class PcieStateMachine: def __init__(self): self.state = "DETECT" def transition(self, event): transitions = { ("DETECT", "device_detected"): "POLLING", ("POLLING", "training_complete"): "CONFIGURATION", # 更多状态转移逻辑... } new_state = transitions.get((self.state, event)) if new_state: print(f"Transition from {self.state} to {new_state}") self.state = new_state state_machine = PcieStateMachine() state_machine.transition("device_detected") # Transition from DETECT to POLLING ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值