PCIe EIOS & EIEOS
简介
在发射机进入 Electrical Idle (简称 EI) 前,如果没有特别说明,发射机必须发送 Electrical Idle Ordered Set Sequence (简称EIOSQ)。在 2.5 GT/s, 8.0 GT/s, 16.0 GT/s 和 32.0 GT/s 时,EIOSQ 为一个 Electrical Idle Ordered Set (简称 EIOS),在 5.0 GT/s 为两个 EIOS。EIOS 在不同速度下其内容不完全一样。Electrical Idle Exit Ordered Sets (简称EIEOS) 是用来退出 EI 状态, EIEOS 在不同速度下也有不同的格式。EIEOS序列 (Electrical Idle Exit Ordered Set Sequence,简称EIEOSQ) 在 5.0 GT/s, 8.0 GT/s, 16.0 GT/s 由一个 EIEOS 构成,在 32.0 GT/s 时由 2 个连续的 EIEOS 构成
EIOS
不同速度下的 EIOS 组成
2.5 GT/s 和 5.0 GT/s
COM (K28.5) + IDL(K28.3) + IDL + IDL
8.0 GT/s 及以上
66h (EIOS标识) + 15个66h (0110_0110b)
EIEOS
作用
- 确保电路能够退出 EI 状态
- 128b/130b 编码时用来做块对齐 (Block Alignment)
不同速度下的 EIEOS 组成
5.0 GT/s
EIEOS 为 Gen2 增加的内容,在 Gen1 不存在
Symbol 号 | 编码 | 描述 |
---|---|---|
0 | K28.5 | COM 字符用符号对齐 |
1-14 | K28.7 | 退出 EI 的低频序列 |
15 | D10.2 | TS1 的标识 |
8.0 GT/s
Symbol 号 | 编码 | 描述 |
---|---|---|
0,2,4,6,8,10,12,14 | 00h | 低频序列 |
1,3,5,7,9,11,13,15 | ffh | 低频序列 |
16.0 GT/s
Symbol 号 | 编码 | 描述 |
---|---|---|
0,1,4,5,8,9,12,13 | 00h | Symbol0 : EIEOS 标识,其它低频序列 |
2,3,6,7,10,11,14,15 | ffh | 低频序列 |
32.0 GT/s
Symbol 号 | 编码 | 描述 |
---|---|---|
0,1,2,3,8,9,10,11 | 00h | Symbol0 : EIEOS 标识,其它低频序列 |
4,5,6,7,12,13,14,15 | ffh | 低频序列 |
一些规则
- 8b/10b编码,且链路速度为 5.0 GT/s 时
- 进入 Configuration.Linkwidth.Start 状态后,发送第一个 TS1OS 前,必须发送 EIEOS
- 进入 Recovery.RcvrLock 状态后,发送第一个 TS1OS 前,必须发送 EIEOS
- 在 LTSSM 中的 Configuration.Linkwidth.Start, Recovery.RcvrLock 和 Recovery.RcvrCfg 状态,每发送 32 个 TS1/2 后要发送一个 EIEOS。TS1/2 的数量会被清零,当满足下面的条件时 :
- 发送了一个 EIEOS
- 当在 Recovery.RcvrCfg 状态时,收到第一个 TS2OS
- 128b/130b 编码,EIEOS 需要满足的规则
- 进入 Configuration.Linkwidth.Start 状态后,发送第一个 TS1OS 前,必须发送 EIEOS
- 进入 Recovery.RcvrLock 状态后,发送第一个 TS1OS 前,必须发送 EIEOS
- 当数据流 (Data Stream) 结束且没有发送 EIOS, 也没有进入 LTSSM 中的 Recovery.RcvrLock 状态时,在 EDS Framing Token 后面接 EIEOS
- 在需要传输 TS1/2 的状态,每32个 TS1/2 传输后必须跟 EIEOS。当满足下面条件时, TS1/2 的数量会被清零
- 传输了一个 EIEOS
- 在 Recovery.RcvrCfg 状态,收到第一个 TS2OS 后
- 在 Configuration.Complete 状态,收到第一个 TS2OS 后
- Downstream Port 在 LTSSM 中 Recovery.Equalization 的 Phase 2 并且任意一条 lane 收到 2 个连续的 TS1 (Reset EIEOS Interval Count 必须要为1,Symbol 6 bit[2])
- Upstream port 在 LTSSM 中 Recovery.Equalization 的 phase 3并且收到 2 个连续的 TS1 (Reset EIEOS Interval Count 必须要为1,Symbol 6 bit[2])
- LTSSM 中的 Recovery.Equalization 状态每传输 65536 个 TS1 后 (Reset EIEOS Interval Count 位要设置为 1)