PCIe – Training Sequence

PCIe – Training Sequences

Training Sequences (简称TS) 用于初始化位锁定、字符锁定和交换 PL 层参数。在 2.5 GT/s 和 5.0 GT/s 时, TS 不会加扰,在 8.0 GT/s 以及以上时,可能会加扰也可能不会加扰。TS 有两类 : TS1 和 TS2。TS 是连续传送,但是中间可以插入 SKP Ordered Sets (简称SKPOS) 或者 EIEOS Ordered Sets (针对2.5 GT/s 以上,因为 EIEOS 在 5.0 GT/s 及以上才有)

TS1

16个 symbol,每一个 symbol 有 8bits,代表不同的意思

  • Symbol 0
    • 在 2.5 或者 5.0 GT/s 时,为 COM 字符,用来实现符号对齐
    • 在 8.0 GT/s 及以上时,固定编码为 1Eh(8’b0001_1110),标识这是一个 TS1 而不是其它,在 Gen3 及以上时,没有 8b/10b 编码来维持 DC (直流) 平衡,所以在一些固定编码上会尽量保持 0 和 1 的个数相当。
  • Symbol 1
    • Link Number, 链路号, 需要满足一定的规则
      • port 不支持 8.0 GT/s 及以上时,取值为 0-255 或者 PAD
      • 支持 8.0 GT/s 及以上的 Downstream port 时,取值为 0-31 或者 PAD
      • 支持 8.0 GT/s 及以上的 Upstream port时,取值为0-255 或者 PAD
      • 当链路速度在 2.5 或者 5.0 GT/s 时,PAD 编码为 K23.7
      • 当链路速度在 8.0 GT/s 或者更高时,PAD 编码为 F7h
  • Symbol 2
    • 链路的 Lane number
      • 当链路速度在 2.5 或者 5.0 GT/s 时,取值为 0-31 或者 PAD (K23.7)
      • 当链路速度在 8.0 GT/s 或者更高时,取值为 0-31 或者 PAD (F7h)
  • Symbol 3
    • N_FTS, 接收机需要的 Fast Training Sequences (简称 FTS)数量,取值 0-255
  • Symbol 4
    • 数据指示标志
      • bit[0] : 保留
      • bit[1] : 是否支持 2.5 GT/s,必须设置为1
      • bit[2] : 是否支持 5.0 GT/s,当 bit[3] 为 1 时,必须设置为 1
      • bit[3] : 是否支持 8.0 GT/s,当 bit[4] 为 1 时,必须设置为 1
      • bit[4] : 是否支持 16.0 GT/s,当 bit[5] 为 1 时,必须设置为 1
      • bit[5] : 是否支持 32.0 GT/s
      • bit[6] : Autonomous Change/Selectable De-emphasis
        • 这种多功能位在不同的状态代表不同的作用,比如在 Recovery 状态不会有 De-emphasis 操作,因此只能是 Autonomous Change
        • 对于 Downstream port, 此位只会在 LTSSM 中的 Polling.Active, Configuraton.Linkwidth.Start 和 Loop.Entry 状态使用,其它状态保留
        • 对于 Upstream port, 此位只会在 LTSSM 中的 Polling.Active, Configuration, Recovery 和 Loopback.Entry 状态使用,其它情况保留 bit[7] : speed_change, 此位只允许在 LTSSM 中 Recovery.RcvrLock 状态置 1, 其它状态保留
  • Symbol 5
    • 链路控制
      • Deassert 可以理解为不执行相应动作,Assert 可以理解为执行相应动作,比如 bit[0] 当 Assert 后,会进入到 Hot Reset
      • bit[0] : Hot Reset 位
        • 0b Deassert, 1b Assert
      • bit[1] : Disable Link 位
        • 0b Deassert, 1b Aseert
      • bit[2] : Loopback 位
        • 0b Deassert, 1b Aseert
      • bit[3] : 禁止加扰位 (适用于 2.5 和 5.0 GT/s)
        • 0b Deassert, 1b Aseert, 其它情况保留
      • bit[4] : Compliance Receive 位(2.5 GT/s 可选,5.0 GT/s 及以上必须实现)
        • 0b Deassert, 1b Aseert, 只支持 2.5 GT/s 可选,如果没有实现,则改为保留
      • bit[5] : 在 Loopback 发送 Modified Compliance Pattern, 在 32.0 GT/s 及更高速度中的 Loopback master 中使用,其它情况保留
      • bit[7:6] : 增强链路行为控制
        • bit[7:6] 只会在下面两种条件下才会定义
          1. 32.0 GT/s 及更高速度, LinkUp = 0 且 LTSSM 处于 Polling 或者 Configuration 状态 <br>
          2. 32.0 GT/s 及更高速度,LTSSM 处于 Loopack 且只能是 Loopback Master
        • 00b : Full EQ, 比如从 2.5 GT/s 往 32.0 GT/s 切速时,不能跳过 16.0 GT/s,不支持 Modified TS1/TS2
        • 01b : 支持 EQ bypass to highest rate,比如从 2.5 GT/s 往 32.0 GT/s 切速时,可以跳过 16.0 GT/s 的 EQ 过程
        • 10b : 不需要 EQ 过程
        • 11b : 是否支持 Modified TS1/TS2 Ordered Sets
  • Symbol 6
    • 当链路速度在 2.5 或者 5.0 GT/s 时
      • 如果是标准的 TS1, 编码为 D10.2 (4Ah),作为 TS1 的标识符
      • 如果是 EQ TS1 (当需要切换到 8.0 GT/s 或者 32.0 GT/s 及以上时会有EQ过程,这时发送的 TS1 为 EQ TS1)
        • 2.5 或者 5.0 GT/s往上切换速度时,不会直接切换到 16.0GT/s,在 Gen5 时规定了可以做一次 EQ 直接切换到最高速度,所以会有下面 32.0 GT/s 及更高时的 EQ 过程
        • 当链路速度为 8.0 GT/s 时的 EQ 过程(比如 5.0 GT/s 往 8.0 GT/s 切换时,先将连链路速度切换到 8.0 GT/s,然后看能否实现 Symbol Lock (符号锁定), 然后就会做 EQ)
          • bit[2:0] : 接收机 Preset Hint (预设提升)
          • bit[6:3] : 接收机 Preset
          • bit[7] : 设置为 1
        • 当链路速度为 32.0 GT/s 是的 EQ 过程
          • bit[0] : 发射机预编码请求,接受机方向此时对该位没有定义
          • bit[2:1] : 保留
          • bit[6:3] : 发射机 Preset
          • bit[7] : 设置为 1
    • 当链路速度为 8.0GT/s 及更高时
      • bit[1:0] : 均衡控制 (Equalization Control, 简称EC), 这些位只会在在 LTSSM 中的 Recovery.Equalization 和 Loopback 状态使用, 在 LTSSM 的其它状态,固定为 00b
      • bit[2] : 重置 EIEOS 间隔计数。这一位只会在 LTSSM中的 Recovery.Equalization 状态使用,LTSSM 的其它状态中保留
      • bit[6:3] : 发射机预设
      • bit[7] : 使用预设/重做 EQ。这一位在 LTSSM 中的 Recovery.Equalization、Recovery.RcvrLock 和 Loopback 状态使用,其它状态保留。这种多功能位,在不同的状态过程会有不同的含义
  • Symbol 7
    • 当链路速度为 2.5 或 5.0 GT/s 时,为 TS1 的标志,固定编码为 D10.2 (4Ah)
    • 当链路速度在 8.0 GT/s 及以上时
      • bit[5:0] : 当 Symbol 6 的 EC 域为 01b 时,此位为 FS,其它情况代表当前链路速度对应的 Pre-cursor 系数
      • bit[6] : 发射机 Precoding (预编码) 开启,只会在 32.0 GT/s 及更更高速度下的 Recovery 状态使用,其它情况保留
      • bit[7] : Retimer EQ 扩展位, 此位只会在 16.0 GT/s 及更高速度下的 Recovery.Equalization 状态使用,在 8.0 GT/s 和其它状态为保留位
  • Symbol 8
    • 当链路速度为 2.5 或 5.0 GT/s 时,为 TS1 的标志,固定编码为 D10.2 (4Ah)
    • 当链路速度在 8.0 GT/s 及以上时
      • bit[5:0] : 当 Symbol 6 的 EC 域为 01b 时,此位为 LF,其它情况代表当前链路速度对应的 Cursor 系数
      • bit[7:6] : 保留
  • Symbol 9
    • 当链路速度为 2.5 或 5.0 GT/s 时,为 TS1 的标志,固定编码为 D10.2 (4Ah)
    • 当链路速度在 8.0 GT/s 及以上时
      • bit[5:0] : 当前链路速度对应的 Post-cursor 系数
      • bit[6] : 拒绝系数值位,此位只会在 LTSSM 中的 Recovery.Equalization 下的一些特定阶段置 1, 在 LTSSM 的其它状态,必须设置为 0
      • bit[7] : 奇偶校验(P), 此位为 Symbol 6,7,8 和 Symbol 9 的 bit[6:0] 的奇偶校验位,接收机必须根据接受到的 TS1 来计算此位,并将其与接收的奇偶校验位进行比较。只有计算出的奇偶校验位与此位一致时,接收到 TS1 才是有效的。
  • Symbol 10-13
    • 当链路速度为 2.5 或 5.0 GT/s 时,为 TS1 的标志,固定编码为 D10.2 (4Ah)
    • 当链路速度为 8.0 GT/s 及以上时,为 TS1 的标志,固定编码为 (4Ah)
  • Symbol 14-15
    • 当链路速度为 2.5 或 5.0 GT/s 时,为 TS1 的标志,固定编码为 D10.2 (4Ah)
    • 当链路速度为 8.0 GT/s 及以上时,可以是 TS1 的标志,固定编码为 (4Ah),也可以是用来维持直流平衡 (根据前面 Symbol 中 0 和 1 的个数来设置此位)

TS2

  • Symbol 0
    • 当链路速度为 2.5 或 5.0 GT/s 时,为 COM (K28.5)用于符号对齐
    • 当链路速度为 8.0 GT/s 时,固定编码为 2Dh (8’b0010_1101)
  • Symbol 1
    • Link Number, 链路号, 需要满足一定的规则
      • port 不支持 8.0 GT/s 及以上时,取值为 0-255 或者 PAD
      • 支持 8.0 GT/s 及以上的 Downstream port 时,取值为 0-31 或者 PAD
      • 支持 8.0 GT/s 及以上的 Upstream port时,取值为0-255 或者 PAD
      • 当链路速度在 2.5 或者 5.0 GT/s 时,PAD 编码为 K23.7
      • 当链路速度在 8.0 GT/s 或者更高时,PAD 编码为 F7h
  • Symbol 2
    • 链路的 Lane number
      • 当链路速度在 2.5 或者 5.0 GT/s 时,取值为 0-31 或者 PAD (K23.7)
      • 当链路速度在 8.0 GT/s 或者更高时,取值为 0-31 或者 PAD (F7h)
  • Symbol 3
    • N_FTS, 接收机需要的 Fast Training Sequences (简称 FTS)数量,取值 0-255
  • Symbol 4
    • 数据指示标志
      • bit[0] : 保留
      • bit[1] : 是否支持 2.5 GT/s,必须设置为1
      • bit[2] : 是否支持 5.0 GT/s,当 bit[3] 为 1 时,必须设置为 1
      • bit[3] : 是否支持 8.0 GT/s,当 bit[4] 为 1 时,必须设置为 1
      • bit[4] : 是否支持 16.0 GT/s,当 bit[5] 为 1 时,必须设置为 1
      • bit[5] : 是否支持 32.0 GT/s
      • bit[6] : Autonomous Change/Selectable De-emphasis/Link Upconfigure Capalibity
        • TS2 中此位比 TS1 中的 Symbol 4 bit[6] 的功能要多
        • 这些位只会在 LTSSM 中的 Polling.Configuration, Configuraton.Complete 和 Recovery 状态使用,其它情况保留
      • bit[7] : speed_change, 此位只允许在 LTSSM 中 Recovery.RcvrLock 状态置 1, 其它状态保留
  • Symbol 5
    • 链路控制
      • Deassert 可以理解为不执行相应动作,Assert 可以理解为执行相应动作,比如 bit[0] 当 Assert 后,会进入到 Hot Reset
      • bit[0] : Hot Reset 位
        • 0b Deassert, 1b Assert
      • bit[1] : Disable Link 位
        • 0b Deassert, 1b Aseert
      • bit[2] : Loopback 位
        • 0b Deassert, 1b Aseert
      • bit[3] : 禁止加扰位 (适用于 2.5 和 5.0 GT/s)
        • 0b Deassert, 1b Aseert, 其它情况保留
      • bit[4] : Retimer Present bit (只对 2.5 GT/s 适用,其它速度保留)
        • 0b : 没有 Retimers 存在,1b : 一个或多个 Retimes 存在,此位与 TS1 中的定义不同
      • bit[5] : Two Retimes Present,目前没理解
      • bit[7:6] : 增强链路行为控制
        • 00b : Full EQ, 不支持 Modified TS1/TS2 Ordered Sets
        • 01b : 支持 EQ bypass to highest rate,不支持 Modified TS1/TS2 Ordered Sets
        • 10b : 不需要 EQ 过程,支持这种能力的 device 必须支持 Equalization bypass to highest rate. 需要与其它寄存器配合使用,不支持 Modified TS1/TS2 Ordered Sets
        • 11b : 支持 Modified TS1/TS2 Ordered Sets
        • bit[7:6] 只会在 32.0 GT/s 及更高速度, LinkUp = 0 且 LTSSM 处于 Polling 或者 Configuration 状态是才会被定义
  • Symbol 6
    • 当链路速度在 2.5 或者 5.0 GT/s 时
      • 如果是标准的 TS2, 编码为 D5.2 (45h),作为 TS2 的标识符
      • 如果是 EQ TS2
        • 当链路速度为 8.0 GT/s 时的 EQ 过程
          • bit[2:0] : 接收机 Preset Hint (预设提示)
          • bit[6:3] : 接收机 Preset
          • bit[7] : 设置为 1
        • 当链路速度为 32.0 GT/s 是的 EQ 过程
          • bit[0] : 发射机预编码请求
          • bit[2:1] : 保留
          • bit[6:3] : 发射机 Preset
          • bit[7] : 设置为 1
    • 当链路速度在 8.0 GT/s 或者更高与 TS1 不同
      • bit[3:0] : 保留
      • bit[5:4] : EQ 请求速度
        • 这些位只会在 LTSSM 中的 Recovery.RcvfCfg 状态使用,其它情况保留
        • 00b : 8.0 GT/s
        • 10b : 16.0 GT/s
        • 01b : 32.0 GT/s
        • 11b : 保留
      • bit[6] : Quisce Guarantee,此位只会在 LTSSM 中的 Recovery.RcvfCfg 状态使用,在 LTSSM 的其它状态保留
      • bit[7] : 请求 EQ, 此位只会在 LTSSM 中的 Recovery.RcvrCfg 状态使用,在 LTSSM 的其它状态保留
  • Symbol 7
    • 与 TS1 Symbol 7 定义不同
    • 当链路速度为 2.5 或 5.0 GT/s 时,为 TS2 的标志,固定编码为 D5.2 (45h)
    • 当链路速度在 8.0 GT/s 及以上时
      • 如果是标准的 TS2, 为 TS2 的标志,固定编码为 45h
      • 128b/130b EQ TS2 OS
        • 只有在传输预设值且 LTSSM 处于 Recovery.RcvrCfg 时才有效
        • bit[0] : 32.0 GT/s 及更高速度下的发射机预编码请求,在 8.0 GT/s 和 16.0 GT/s 下的 EQ 过程保留
        • bit[2:1] : 保留
        • bit[6:3] : 128b/130b 发射机预设
        • bit[7] : 设置为 1
  • Symbol 8-13
    • 2.5 或者 5.0 GT/s 时,TS2 的标志,固定为 D5.2 (45h)
    • 8.0 GT/s 或者更高时,TS2 的标志,固定为 45h
  • Symbol 14-15
    • 2.5 或者 5.0 GT/s 时,TS2 的标志,固定为 D5.2 (45h)
    • 8.0 GT/s 及更高时, 可以是 TS2 的标志 (编码为 45h),也可以用来维持直流平衡
Subscribe
提醒
guest
0 评论
内联反馈
查看所有评论