PCIe链路训练学习 (持续更新中)

PCIE 链路训练学习 LTSSM

PCIE Link Training and Status State Rules

在这里插入图片描述

一、Detect

PCIe 链路处于该状态时,发送逻辑TX并不知道对端接收逻辑RX的存在,需要使用Receiver Detect 识别逻辑判断对端RX是否可以正常工作。
在这里插入图片描述

1.Detect Quiet

进入到Detect Active态的条件:

前提:a.状态机使能拉起
b.phy powerdown 处于P1状态(应该是针对phy而言 longer recovery time, additional power saving)
(1)处于detect quiet状态超过12ms。
(2)测到PCIe链路上的任何一条lane退出“Electrial Idle”状态。
(1)(2)满足其中一个,PCIe设备进入detect active状态。

协议中指出:

(1)Transmitter 处于电气空闲状态。
(2) 如果在进入该子状态时操作频率不是 2.5 GT/s 数据速率,则 LTSSM 必须在该子状态中保持至少 1 ms,在此期间操作频率必须更改为 2.5 GT/s 数据速率。
(3)所有Receiver 必须在进入此子状态的 1 ms 内(见表 8-10)满足 Z RX-DC 规范 2.5 GT/s。 LTSSM 必须保持在此子状态,直到满足 2.5 GT/s 的ZRX-DC 规范。
(4)LinkUp = 0b (status is cleared).
(5)The use_modified_TS1_TS2_Ordered_Set variable is reset to 0b.
在这里插入图片描述

2.Detect Active

Controller对所有active lane 执行接收器检测,并检查检测到接收器的lane数量(应该是通过TS序列–个人理解)。

进入到Polling Active状态的条件:

(1)如果在所有未配置的lane上检测到Receiver。
(2)至少一个lane并不是全部未配置的lane 被检测到:
①物理层等待12ms
②然后向使用该链路的所有“未检测成功的lane”向对端重新发送“Receiver Detection Sequence” 如果与第一次检测结果相同,物理层将这些“不使用的lane”设置成Elecctrial Idle 状态 进入polling状态,否则进入Detect Quiet状态。
(1)(2)满足其中一个,PCIe设备进入polling active状态。

进入到Detect Quiet 状态的条件:

如果在任何lane上都没有检测到Receiver

协议中指出:

Transmitter所有未配置的可以形成一个或多个链路的通道上执行Receiver Detection Sequence

二、POLLING

在这里插入图片描述

1.Polling Active

polling状态确定bit lock、symbol lock、lane的极性。
大前提powerdown在P0状态下(PHY正常工作)

进入到Polling Configuration 状态的条件:

(1)前提:TX需要向对端发送至少 1024 个 TS1 Ordered Sets ,其中TS1序列的Lane/LInk Number必须为"PAD"即不设置Lane/LInk Number;并且在 Detect 期间检测到一个 Receiver 的 所有Lanes(注意是已被正确识别的所有lane)接收到满足以下任何条件的八个连续训练序列(或其补码):
在这里插入图片描述
◦ TS1 with Lane and Link numbers set to PAD and the Compliance Receive bit (bit 4 of Symbol 5) is 0b.
◦ TS1 with Lane and Link numbers set to PAD and the Loopback bit (bit 2 of Symbol 5) is 1b.
◦ TS2 with Lane and Link numbers set to PAD.
以上三个条件三选一
在这里插入图片描述
(2)前提:经过24ms之后并且接收到一个 TS1 或 TS2 ,最少传输 1024 个 TS1 。
在这里插入图片描述1. TS1 with Lane and Link numbers set to PAD and the Compliance Receive bit (bit 4 of Symbol 5) is 0b.
2. TS1 with Lane and Link numbers set to PAD and the Loopback bit (bit 2 of Symbol 5) is 1b.
3. TS2 with Lane and Link numbers set to PAD.
以上三个条件三选一
(1)(2)条件满足其中一个,PCIe设备进入Polling Configuration 状态。
Note:
任何接收到 8 个连续 TS1 或 TS2 的lane在进入 Polling.Active 后至少应该检测到一次从电气空闲退出。

进入到Polling Compliance 状态的条件:

(1)Link Control 2 Register中的 Enter Compliance 位(bit 4)为 1b,则下一个状态是 Polling.Compliance。
如果在进入 Polling.Active 之前设置了 Enter Compliance 位,则必须立即转换到 Polling.Compliance,而不发送任何 TS1 有序集。
(2)经过24ms
在检测期间检测到Receiver的任何通道接收到八个连续的 TS1 有序集(或其补码),其中lane和link number设置为 PAD,
①Compliance Receive bit (bit 4 of Symbol 5) is 1b
②Loopback bit (bit 2 of Symbol 5) is 0b
与Polling Configuration 的条件正好相反 ①与② 任选一个
与Polling Configuration(1)的条件正好相反
在这里插入图片描述
(1)(2)条件满足其中一个,PCIe设备进入Polling Compliance 状态。

进入到Detect状态的条件:

检测到不满足 Polling.Configuration 或 Polling.Compliance 的条件

协议中指出:

Transmitter 在 Detect 期间在所有检测到 Receiver 的 Lane 上发送 TS1 Ordered Sets,其中 Lane 和 Link 编号设置为 PAD。
TS1 有序集的数据速率标识符符号必须公布端口支持的所有数据速率,包括那些它不打算使用的数据速率。
◦ 发送器必须等待其 TX 共模稳定,然后才能退出电气空闲并发送 TS1 有序集。
▪ 发送器必须在从进入到该状态的 192 ns 内以发送裕量字段的默认电压电平驱动模式。 在输入 Polling.Compliance 或 Recovery.RcvrLock 之前,此发射电压电平将保持有效。

2.Polling Compliance(待补充)

进入到polling active 状态的条件:

如果在检测期间检测到接收器的任何lane的接收器处检测到从Electrical Idle退出(lane的数量变了?重新检测?),则下一个状态是polling active。 如果Transmitte以 2.5 GT/s 以外的数据速率进行传输,则发射器会发送 8 个连续的 EIOS 并在转换到 Polling.Active 之前进入电气空闲状态。 在 Electrical Idle 期间,数据速率变为 2.5 GT/s 并稳定下来。
电气空闲时间大于 1 毫秒,但不得超过 2 毫秒。
1、如果进入Polling Compliance 时Enter Compliance bit =1 下一个状态是轮询。如果出现以下任何情况,则激活:
(1)Link Control 2 Register中的Enter Compliance bit 改为 0;
(2)该Port是Upstream,在任Lane上都会收到EIOS,当此条件为真时,Enter Compliance bit 重置为0
(1)(2)条件任选其一

进入到detect 状态的条件:

如果Link Control 2 Register中的Enter Compliance bit = 0

协议中指出:

3.Polling Configuration

进入到Configuration状态的条件:

(1)进入该子状态时,Link Controller 2 Register 的"Transmit Margin"字段必须重置为 000b。
(2)Transmitter 在 Detect 期间在所有检测到 Receiver 的 Lane 上发送 TS2 Ordered Sets,Link 和 Lane 编号设置为 PAD。
(TS2序列的数据速率标识符符号必须公布端口支持的所有数据速率,包括那些它不打算使用的数据速率)。
(3)Receiver 任何lane上接收8个连续的 TS2 (link和lane设置为 PAD),并且在接收到一个 TS2 序列后发送 16 个 TS2 序列。

进入到Detect状态的条件:

48ms之后 进入到detect状态。

协议中指出:

在这里插入图片描述
当发现极性反转 PCIe Controller可自行转换?

4.Polling Speed

该状态的主要作用是调整PCIe链路使用的数据传输速率,当一个PCIe链路两端的设备支持高于2.5GT/s的数据是传送乐意首先进入该状态,改变PCIe链路的数据传送率。
在这里插入图片描述
在Gen1的时候不会有这个状态,在recovery 状态时会有。

进入到下一个状态的条件:

协议中指出:

三、Configuration

在这里插入图片描述

Configuration Linkwidth Start

Downstream lanes

进入到Dectect状态的条件:

24ms之后 进入到detect状态

协议中指出:

Upstream lanes

Configuration Linkwidth Accept

Configuration Lanenum Wait

Configuration Lanenum Accept

Configuration Complete

Configuration Idle

四、Recovery

在这里插入图片描述

Recovery.RcvrLock

Recovery.Equalization

Downstream Lanes

Phase 1 of Transmitter Equalizeaion
Phase 2 of Transmitter Equalizeaion
Phase 3 of Transmitter Equalizeaion

Upstream Lanes

Phase 0 of Transmitter Equalizeaion
Phase 1 of Transmitter Equalizeaion
Phase 2 of Transmitter Equalizeaion
Phase 3 of Transmitter Equalizeaion

Recovery.Speed

Recovery.RcvrCfg

Recovery.Idle

五、L0

PCIe正常工作的状态 linkup =1
收到 STP(TLP起始) 或 SDP(DLLP起始) Symbol后,idle_to_rlock_transitioned 变量将重置为 00h。

进入到Recovery状态的条件

1、改变速率
(1)当双方都支持大于2.5 GT/s的速度并且链路处于DL_Active状态;
(1)当双方都支持8.0 GT/s数据速率以8.0 GT/s数据速率执行发射机均衡时,如果指示高层改变速度 (directed_speed_change variable=1b)changed_speed_recovery位重置为0b;
(1)(2)条件满足其中一个,从L0进入Recovery 状态;
2、改变link width;
3、如果在任何配置的通道上接收到TS1或TS2有序集,或者在任何配置通道上以128b/130b编码接收到EIEOS;
4、如果在所有Lane上检测到/推断出电空闲[1],而没有在任何Lane上接收到EIOS,则Port 可能会转换到Recovery状态或保持在L0。如果Port处于L0,并且在没有接收到EIOs的情况下出现电空闲状态,则可能会发生错误,Port可能会被转到到Recovery状态;
以上条件任选其一从L0状态跳转到 Recovery状态

进入到L0s状态的条件

进入到L1状态的条件

进入到L2状态的条件

Downstream lanes

进入到Dectect状态的条件:

六、L0s

七、L1

八、L2

九、Disable

十、Loopback

十一、Hot Reset

参考资料
[1] 电气闲和逻辑闲参考csdn:MangoPapa

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值