目录
1. 链路训练和状态机
1.1 Detect 状态
1.1.1 Detect.Quiet 子状态
1.1.2 Detect.Active 子状态
1.2 Polling 状态
1.2.1 Polling.Active 子状态
1.2.2 Polling.Compliance 子状态
1.2.2 Polling.Configuration 子状态
1.2.3 Polling.Speed 子状态
1.3 Configuration 状态
1.4 L0 状态
1.5 L0s 状态
1.6 L1 状态
1.7 L2 状态
1.8 Recovery 状态
1.9 Hot Reset 状态
1.10 Disable 状态
1.11 Loopback 状态
LTSSM是指Link Training and Status State Machine,是PCIe物理层实现的,用于控制和管理PCIe总线上的数据链路。它提供了一组状态,以便设备进行链路训练和链接协商。
在PCIe总线上,发送端和接收端需要进行链路训练,以便确定最佳的链接速度和链接宽度。LTSSM的作用是控制这个过程,并在链路训练期间跟踪链路状态和错误。
LTSSM状态包括:Detect、Polling、Configuration、Recovery、L0、L0s、L1、L2、Hot Reset、Loopback和Disable。当设备之间开始建立连接时,LTSSM从Detect状态开始。然后,它进入Polling状态,等待对方回应确认连接。如果确认完成,则进入Configuration状态,进行链路配置。之后,LTSSM进入L0状态,表明链路处于活动状态。如果设备需要低功耗状态,则可以进入L0s或L1状态。如果出现错误,则可能会进入L2状态或Loopback状态进行修复。
1. 链路训练和状态机
物理层的链路训练和状态机(LTSSM)模块负责配置和初始化一个设备的物理层、端口的发送器和接收器以及相关的链路,以状态机来管理和描述这个过程。
下图展示了LTSSM的 11 个状态,这些状态可以分为以下 4 种类型:
- 链路训练状态:Detect、Polling 和 Configuration状态。
- 链路重训练状态:Recovery 状态。
- 电源管理状态:L0、L0s、L1 和 L2。
- 其它状态:Disable、Loopback 和 Hot Reset。
1.1 Detect 状态
Detect 状态是在基本复位或者软件产生的热复位命令后进入的初始状态,在复位80ms内进入这个状态。Detect状态也能从其它状态进入。如下图所示:
Detect有两个子状态:Detect.Quiet 和 Detect.Active。
1.1.1 Detect.Quiet 子状态
进入条件 | Detect.Quiet 期间 | 退出条件 |
---|---|---|
1. 基本复位或热复位进入; 2. 从L2、Loopback、Disable、Polling、Configuration 和 Recovery 状态进入。 | 1. 发送器处于Electrical Idle状态; 2.发送器DC共模电压(不满足0~3.6V的规格); 3. 传输速率默认Gen1; 4. 向数据链路层发送LinkUp = 0的链路状态指示。 | 1. 处于Detect.Quiet子状态超过12ms,或者当链路退出Electrical Idle状态时,退出本子状态,进入Detect.Active状态。 |
1.1.2 Detect.Active 子状态
进入条件 | Detect.Active 期间 | 退出条件 |
---|---|---|
1. 从Detect.Quiet 子状态进入。 | 1. TX设备检测RX设备是否存在,通过RC充放电时间来检测,当设备没有连接,RC充放电时间短,接上以后时间长; | 1. 如果没有检测到RX端,返回到Detect.Quiet子状态,循环检测12ms。 2. 检测到RX端设备,进入下一个Polling状态,这个时候DC共模电压符合规范限定值(0~3.6V)。 |
1.2 Polling 状态
Polling 状态是链路训练和初始化过程中的第一个时段,在这个过程中两相连设备互相发送PLP包(TS1 和 TS2 序列)。Polling 状态机共有 4 个子状态:
- Polling.Active:进行 Bit Lock 和 Symbol Lock;
- Polling.Compliance:进行 Compliance 合规性测试;
- Polling.Configuration:实现极性翻转(Lane Polarity Inversion);
- Polling.Speed:确定链路速率。
1.2.1 Polling.Active 子状态
1.2.2 Polling.Configuration 子状态
进入条件 | Polling.Configuration 期间 | 退出条件 |
---|---|---|
1. 从Polling.Active 子状态进入。 | 1. 如果接收器发现所接收到的TS1/TS2有序集为反码,则它颠倒差分输入对端子的极性,完成Lane Polarity Inversion;Polarity Inversion是强制性的,必须在所有的Lane上独立实现。 2. 发送器发送 8 个以上的TS2有序集。 | 1. 退出到Configuration 状态,连续收到8个TS2有续集中,Rate ID字段都没有大于Gen1 2.5Gbps的,则进入到Configuration状态。 2. 退出到Polling.Speed子状态,连续收到8个TS2有续集中,至少有1个Lane上,Rate ID字段大于Gen1 2.5Gbps,则进入到Polling.Speed子状态。 3. 退出到Detect状态:如果以上两个退出条件都不满足,则48ms之后返回到Detect状态。 |
1.2.3 Polling.Speed 子状态
进入条件 | Polling.Speed 期间 | 退出条件 |
---|---|---|
1. 从Polling.Configuration子状态进入。 | 1. 发送器发送1条Electrical Idle有序集,然后进入电气闲状态,时间在20ns ~ 2ms之间; 2. 在所有Lane上将数据速率改变为链路两方都支持的、最高的公共数据速率。 | 无条件返回到Polling.Active子状态。 |
1.2.4 Polling.Compliance 子状态
进入条件 | Polling.Compliance 期间 | 退出条件 |
---|---|---|
1. 从Polling.Active进入 | 1. 50Ω阻抗的测试探针或者50Ω的接地阻抗钩到任一Lane上的TX发送信号差分对,使得设备进入Polling.Compliance。在这个状态下,要求该设备在链路上生成合格性测试位谱。 2. 发送器在所有Lane上输出合格性测试位谱。 3. 在Polling.Compliance期间,不发送Skip有序集。 | 1. 当所有Lane上检测到一个Electrical Idle退出时,发送器通过发送1024个TS1有序集退出该合格性测试状态,返回Polling.Active子状态。 |