LTSSM – Recovery

Recovery.RcvrLock

处于该状态时

  • 如果链路速度在 8.0 GT/s 或者更高, 只有那条 lane 获得 block alignment (块锁定) 之后,才会考虑接受 TS1 或者 TS2
  • 如果该状态是从 L1 或者 Recovery.Speed 或者 L0s 进入, block alignment 必须在退出 ei 后
  • 如果该状态是从 L0 进入, block alignment 必须在最后一个 Data Stream(数据流) 后
  • 当操作速度在 8.0 GT/s 或者更高时

状态跳转

图片

Recovery.Equalization

  • 发射机在所有配置过的 lane 上发送 TS1OS
    • 如果 LTSSM 经历了从 Configuration 到 Recovery.RcvrLock 再到 Recovery.Equalization, 则 TS1OS 中的 link# 和 lane# 在离开 Configutaion 状态时已经确定
    • 如果该状态是由 Loopback.Entry 跳转而来, 则 TS1OS 中的 link# 和 lane# 在 Loopback.Entry 中定义; – 如果该状态是从 Loopback.Entry, 未测试的 lane 必须被是没有配置过且不能执行 EQ(Equalization) 程序, 未测试的 lane 必须设置它们的发射机预设(preset)值未 P4, 在测试的 lane 的目的仅仅是为了在 Loopback.Active 中创造需要的噪声.

Recovery.Equalization Phase 1

Downstream Port 处于该状态时

  • 进入该状态时
    • 当前阶段是 Phase 1
    • 如果数据操作速度是 8.0 GT/s, 需要将下面的内容清零
      • 寄存器 Equalization 8.0 GT/s Phase 1 Successful
      • 寄存器 Equalization 8.0 GT/s Phase 2 Successful
      • 寄存器 Equalization 8.0 GT/s Phase 3 Successful
      • 寄存器 Link Equalization Request 8.0 GT/s
      • 寄存器 Link Status 2 中的 Equalization 8.0 GT/s Complete 位
      • 寄存器 Link Control 3 中的 Perform Equalization 位
      • 变量 equalization_done_8GT_data_rate
    • 如果数据操作速度是 16.0 GT/s, 需要将下面的内容清零
      • 寄存器 Equalization 16.0 GT/s Phase 1 Successful
      • 寄存器 Equalization 16.0 GT/s Phase 2 Successful
      • 寄存器 Equalization 16.0 GT/s Phase 3 Successful
      • 寄存器 Link Equalization Request 16.0 GT/s
      • 寄存器 16.0 GT/s Status 中的 Equalization 16.0 GT/s Complete 位
      • 寄存器 Link Control 3 中的 Perform Equalization 位
      • 变量 equalization_done_16GT_data_rate
    • 如果数据操作速度是 32.0 GT/s, 需要将下面的内容清零
      • 寄存器 Equalization 32.0 GT/s Phase 1 Successful
      • 寄存器 Equalization 32.0 GT/s Phase 2 Successful
      • 寄存器 Equalization 32.0 GT/s Phase 3 Successful
      • 寄存器 Link Equalization Request 16.0 GT/s
      • 寄存器 32.0 GT/s Status 中的 Equalization 32.0 GT/s Complete 位
      • 寄存器 Link Control 3 中的 Perform Equalization 位
      • 变量 equalization_done_32GT_data_rate
    • start_equalization_w_preset 值设置未 0b
  • 发射机传输 TS1OS,
    • TS1OS 中包括当前速度下对应的发射机预设设置
    • EC 域必须位 01b
    • 每条 lane 的 Transmitter Preset 位都必须设置为当前速度下的预设值
    • FS,LF 和 Post-cursor 系数的设置必须与发射机预设位保持一致

Recovery.RcvrCfg

处于该状态时

  • 发射机在所有配置过的 lane 上发送 TS2
    • lane# 和 link# 为退出 Configuration 状态后的 lane# 和 link#
    • 如果 directed_speed_change 变量为 1, 则 speed_change (Symbol 4 bit[7]) 位也要为 1

状态跳转

图片

Recovery.Speed

处于该状态时

  • gen1 没有 recovery.speed 状态, gen1 只有一个速度,不需要改变速度
  • 发射机会进入 ei 状态,并且会待在 ei 状态直到 Receiver lane 也进入到 ei 状态
  • 如果速度协商成功(successful_speed_negotiation = 1b), 至少需要在此状态待 800 ns, 如果速度协商失败(successful_speed_negotiation = 0b), 则至少需要待 6 us, 但是待在此状态的总时间不能操作 1 ms
  • 只有 Receiver 也进入 ei 状态后,才能更改的新的链路速度
  • 如果协商的速度是 5.0 GT/s 并且操作在 full swing 模式, 根据变量 select_deemphasis 的值确定 de-emphasis
    • 如果 select_deemphasis 为 0, de-emphasis 水平为 -6 dB
    • 如果 select_deemphasis 为 1, de-emphasis 水平为 -3.5 dB
  • 进入 ei 前必须发送 EIOSQ
  • 如果任意一条配置过的 lane 收到 EIOS 或者检测/推断对方进入了 ei (根据多长时间没有收到 TS 来判断), 则该条 lane 上存在 ei 条件
    • 进入该状态时,速度协商成功(如 successful_speed_negotiation = 1b), 如果任意一条配置过的 lane 在特定时间类,Receiver lanes 没有收到 TS1 或者 TS2, 则推断进入了 ei
    • 进入该状态时,速度协商失败(如 successful_speed_negotiation = 0b), 如果在指定时间间隔内,任意一条配置过的 lane 中没有检测到至少一次 ei 退出(即所有 lane 都没有检测到退出 ei)
  • 如果速度没有达到 target link speed(Link Control 2 bit[3:0]), 则会一直往最高速度切

状态跳转

图片

Recovery.Idle

处于该状态时

  • 当使用8b/10b 编码时, 所有配置过的 lane 上传输 idle data(全0, 会加扰)
  • 当使用 128b/130b 编码时, 与速度有关
    • 当速率为 8.0 GT/s 时, 在所有配置过的 lane 上, 发射机发射一个 SDSOS 开始传输数据流 (Data Stream), 然后发送 Idle Data Symbol, 第一个 Idle data Symbol 位于 lane 0上,并且也是 Data Symbol 的第一个 Symbol
    • 当速率为 16.0 GT/s 及更高时, 在所有配置过的 lane 上, 发射机发射 1 个 SDSOS 后, 需要在发送 1 个 Control SKPOS, 然后才发送数据流。同样, 数据流由 Idle data Symbol 构成, lane 0 上传输的第一个 Idle data Symbol 是数据流的第一个 Symbol
    • 如果更高层需要直接去其它状态(如 Disable, Hot Reset, Configuration 或 Loopback), 在跳转在其它状态之前,禁止发送 Idle Symbol, 并且 Idle Symbol 也禁止使用 128b/130b 编码

状态跳转

图片

guest
0 评论
内联反馈
查看所有评论