pcie de-skew

De-Skew

什么是skew

  • skew是偏移,通常说的skew指的是不同lane之间的数据不是对齐的。比如gen1下lane0和lane1都在发送TS1,但是不同lane上的COM字符并不是出现在同一个时刻。
  • 只有链路宽度大于x1时,才可能出现skew

Skew的来源

  • 按照数据流向,skew的来源分成三个,分别是发送端产生的skew,实际走线中产生的skew以及接收端产生的skew。

发送端的skew

  • 不同lane上phy发出的数据可能并不是严格对齐的
  • 协议规定了单个发射机任意两条lane之间输出数据最大的skew,单位为ns
    最大值(ns) 2.5GT/s 5.0GT/s 8.0GT/s 16.0GT/s 32.0GT/s 64.0GT/s
    LTX-SKEW 2.5 2.0 1.5 1.25 1.25 1.25

实际走线中的skew

  • 跟具体主板设计制造有关

接收端的skew

  • phy收到数据后,可能由于某种原因也会增加skew
  • 协议规定了单个接收机任意两条lane之间输入数据最大的skew,单位为ns
    最大值(ns) 2.5GT/s 5.0GT/s 8.0GT/s 16.0GT/s 32.0GT/s 64.0GT/s
    LRX-SKEW 20 8 6 5 5 5

怎么De-Skew

  • de-skew的目的
    • 为了补偿不同lane上出现的skew。在经过de-skew后,相当于所有lane上的数据都是对齐的,这样在多lane的link上,就可以根据lane上的数据正确获取TLP或者DLP的内容。 如果没有经过de-skew,lane上的数据可能没有对齐,这样根据收到的数据组成TLP时,就会出现问题

de-skew方法

8b/10b编码下的de-skew

  • 用COM字符来de-skew,根据不同lane上收到COM的时间就知道skew为多少,然后针对每条lane可以增加一点delay,让不同lane上的数据对齐
  • 可以采用下面一个或者多个OS中的COM字符:
    • TS1OS或者TS2OS中的COM字符
    • EIEOS中的COM字符
    • FTS序列后第一个SKPOS中的COM字符
    • 非SRIS模式,TS间隔中收到SKPOS的COM字符

128b/130b编码下的de-skew

  • 128b/130b编码中,没有COM字符,只能根据其它OS来做de-skew,同样的原理,根据不同lane上收到OS的时间来确定skew有多大。
  • 根据收到下面的一个或者多个来de-skew:
    • 收到SDSOS
    • 退出L0s时收到的EIEOS
    • 退出L0s时,在收到FTSOS后,收到的第一个EIEOS
    • 工作在8.0GT/s,接收到的SKPOS
    • 工作在16.0GT/s或更高时,FTS后的收到第一个的SKPOS
    • 工作在16.0GT/s或更高时,收到的SKPOS,但是下面两种情况除外
      • 退出TS时收到的SKPOS,应该就是对方发完TS后又发了一个SKPOS,此时的SKPOS不能做de-skew,因为后面会有SDSOS
      • 被EDS分割开的两个SKPOS

1b/1b编码下的de-skew

  • 根据收到下面的一个或者多个来de-skew:
    • 收到的SDSOS
    • 收到的EIEOS
    • 收到的Control SKPOS

什么时候de-skew

Configuration状态做de-skew

  • 8b/10b编码时,在离开Configuration.Complete时,de-skew必须完成
  • 128b/130b,non-Flit模式,Configuration.Idle状态跳转到L0状态,开始处理数据流之前必须完成de-skew
  • Flit模式,Configuration.Idle跳到L0状态,开始处理数据流之前必须完成de-skew
  • Configuration状态

Recovery状态做de-skew

  • 8b/10b编码时,离开Recovery.RcvrCfg前必须完成de-skew
  • 128b/130b,non-Flit模式,Recovery.Idle状态跳转到L0状态,开始处理数据流之前必须完成de-skew
  • Flit模式,Recovery.Idle跳到L0状态,开始处理数据流之前必须完成de-skew

L0s状态做de-skew

  • 8b/10b或者128b/130b编码时,离开Rx_L0s.FTS前必须完成de-skew

L0p状态做de-skew

  • 速度在8.0GT/s已经更高时,在当前激活的lane上以及将要激活的lane上(这些lane到8个连续的TS2和SDDOS)使用SKPOS必须完成lane-to-lane de-skew

De-Skew失败了会怎样

  • 8b/10b编码下,lane-to-lane de-skew丢失会造成Link Errors
  • 8b/10b编码下,lane-to-lane de-skew丢失会触发receiver error(可选)
  • 128b/130b编码下,lane-to-lane de-skew丢失会造成Link Errors
  • 128b/130b编码下,lane-to-lane de-skew丢失会触发receiver error(可选)
  • 1b/1b编码,lane-to-lane de-skew丢失会造成Link Errors
  • 1b/1b编码下,lane-to-lane de-skew丢失会触发receiver error(可选)
  • lane-to-lane de-skew丢失会导致LTSSM进入Recovery状态
guest
0 评论
内联反馈
查看所有评论