PCIe – LTSSM Polling

Polling 状态

  • 目的 : 实现 bit lock (位锁定),Symbol lock (符合锁定) 和 Lane polarity (lane 极性反转)
  • 存在的子状态 : Polling.ActivePolling.Compliance 和 Polling.Configuration

Polling.Active

Polling.Active时的行为

  • 发射机在Detect状态检测到Receiver的所有lane上发射TS1 Ordered Set, 并且TS1中的Lane number(Symbol 1)和Link number(Symbol 0)都设为 PAD
    • 在此状态,必须设置好 TS1 中的 Symbol 4 (速度指示标识)为port支持的所有速度(这个速度是在2.5GT/s-32.0GT/s,如果支持64.0GT/s,不允许在此状态声明),包括不准备用的
    • port不允许在此状态声明高于32.0GT/s速度
    • 在从 ei 退出后,发射机必须等到 TX 共模模式稳定后,才可以发送 TS1 Ordered Sets
      • 进入该状态 192ns 之内,发射机必须用 Transmit Margin field ( Link Control 2 寄存器的 bit[9:7] )中的默认电压发射 patterns, 直到进入 Polling.Compliance 或者 Recovery.Rcvrlock 状态

Polling.Active状态跳转

  • Polling.Active可以实现的跳转
    • Polling.Active -> Polling.Configuration
    • Polling.Active -> Polling.Compliance
    • Polling.Active -> Detet

Polling.Active -> Polling.Configuration

Polling.Active跳转到Polling.Configuration条件
条件 跳转原因
条件1 发送完1024个TS1后,所有在Detect状态检测到接收机的Lane收到8个连续的TS(或者TS的反,如本应该收到4a,但实际收到的是b5)
收到的TS需要满足下面其一:
   a. 如果收到的是TS1,则link number和lane number都是PAD,且Compliance Receive比特为0
   b. 如果收到的是TS1,则link number和lane number都是PAD, 且Loopback位为1b
   c. 如果收到的是TS2,则link number和lane number都是PAD
条件2 同时满足下面两个条件:
a. 24ms超时后,在Detect状态检测到接受的任意一条lane收到8个连续的TS(或者TS的反),收到1个TS后最少需要发送1024个TS1,收到的TS需要满足下面其一:
   i. 如果收到的是TS1,则link number和lane number都是PAD,且Compliance Receive比特为0
   ii. 如果收到的是TS1,则link number和lane number都是PAD, 且Loopback位为1b
   iii. 如果收到的是TS2,则link number和lane number都是PAD
b. 进入Polling.Active状态以来,至少一组预定义的lane(PCIe1-1中这组lane为在Detect检测到接收机的所有lane),这些lane必须是要在Detect状态检测到过接收机,至少退出过EI一次在Detect状态检测到
note : 能收到 TS 的 lane 一定是退出了 EI 状态。 但是退出了 EI, 不一定能收到 TS, 收到的 TS 也不一定对

Polling.Active -> Polling.Compliance

Polling.Active跳转到Polling.Compliance条件
条件 跳转原因
条件1 Link Control 2 寄存器中的Enter Compliance比特为1,如果该bit在进入Polling.Active之前就设置了,则直接进入,不需要发送TS1
条件2 24ms超时后,从进入Polling.Active以来,不是所有预定义的lane都检测到对端退出了EI (所有lane都没有退出EI)
条件3 24ms超时后,在Detect状态检测到接收机的任意一条lane收到8个连续的TS1(或者它的反),且TS1中的link number,lane number都是PAD,Compliance Receive位为1,Loopback位为0

Polling.Active -> detect

Polling.Active跳转到Detect条件
条件 跳转原因
条件1 不满足进入Polling.Configuraion和Polling.Compliance的条件,如24ms超时后对应的bit没有置1且收到的TS不符合要求

Polling.Configuration

Polling.Configuration时的行为

  • 接收机必须处理极性反转 (如果有必要的话)
  • 进入此状态是,Transmit Margin field (Link Control 2寄存器的 bit[9:7]) 必须为 000b
  • 发射机 Polling.Compliance sequence 设置更新 (待续)
  • 在 Detect 状态检测到 Receiver 的所有 lane 发送 TS2
    • link number和lane number为PAD
    • 在此状态就是表明支持的所有速度(这个速度必须是在2.5GT/s-32.0GT/s之间,如果支持64.0GT/s,则不允许声明),即使是不打算用的,即设置 Data Rate Identifier (Symbol 4)
    • 在此状态不允许申明支持高于32.0GT/s的速度

Polling.Configuration状态跳转

  • Polling.Configuration可以实现的跳转
    • Polling.Configuration -> Configuration
    • Polling.Configuration -> Detect

Polling.Configuration -> Configuration

Polling.Configuraion跳转到Configuraion条件
条件 跳转原因
条件1 在Detect状态检测到接收机的任意一条lane收到8个连续的TS2(link number和lane number都是PAD)在接收到1个TS2后必须发送16个TS2

Polling.Configuration -> Detect

Polling.Configuraion跳转到Detect条件
条件 跳转原因
条件1 48ms 超时

Polling.Compliance

Polling.Compliance时的行为

  • 进入时会采样 Transmit Margin field (Link Control 2 寄存器的 bit[9:7]); 发射引脚在进入此状态 192ns 之类仍然有效; 并且 ltssm 在此子状态时一直有效
  • polling.compliance主要需要确定三件事
    • 确定发射机发送pattern的速度
    • 确定发射机发送pattern的De-emphasis/preset
    • 发送compliance pattern的类型,是compliance pattern还是modified compliance pattern或者jitter compliance pattern等

polling.compliance确定速度和De-emphasis/preset

  • 选择发送compliance pattern的速度和de-emphasis/preset,算法如下:
速度和de-emphasis/preset选择
原因 速度选择 de-emphasis/preset
port只支持2.5GT/s 2.5GT/s -3.5dB
收到8个连续的TS1(Compliance Receiver为1,Loopback bit为0) 本端支持64.0GT/s,在polling.Active收到的TS1OS中Flit Mode Supported为1且supported Link Speeds为10111b(对端支持64.0GT/s) 64.0GT/s 收到的EQ TS1OS中的Transmitter Preset比特.如果没有收到EQ TS1OS或者Transmitter Preset是保留的,则发射机根据特定的行为选择一个支持的值
本端不支持64.0GT/s或者对端不支持64.0GT/s 由最高通用传输速度和本端发送TS1中的Data Rate Identifiers(symbol 4)决定 2.5GT/s和5.0GT/s根据收到的TS1中的Selectable De-emphasis bit(Symbol 4 bit 6)决定。8.0GT/s以及更高,根据收到的EQ TS1OS中的Transmitter Preset比特决定。如果没有收到EQ TS1OS或者Transmitter Preset是保留的,则发射机根据特定的行为选择一个支持的值
Link Control 2寄存器中的Enter Compliance比特为1 根据Link Control 2寄存器中的Target Link Speed字段决定 2.5GT/s和5.0GT/s,如果Link Control 2寄存器中的Compliance Preset/De-emphasis字段为0001b,select_deemphasis变为1(表明de-emphasis为-3.5dB)。8.0GT/s及以上,每条lane上select_preset变量设置为Link Control 2寄存器的Compliance Preset/De-emphasis(bit[15:12]),其值必须是有效的编码
没有检测到退出EI进入Polling.Compliance(如通过tx端接50欧姆等效负载进入) 根据进入polling.compliacne的次数来选择速度 根据进入polling.compliacne的次数来选择发射机的De-emphasis或者preset值
  • 没有检测到退出EI进入polling.compliance,速度和de-emphasis/preset的选择如下
速度和de-emphasis/preset选择
Setting Nos(进入Polling.compliance的次数) 速率 发射机De-emphasis或preset
#1 2.5GT/s -3.5dB
#2,#3 5.0GT/s -3.5dB(#2),-6.0dB(#3)
#4到#14 8.0GT/s preset编码从0000b到1010b,按顺序增加
#15到#25 16.0GT/s preset编码从0000b到1010b,按顺序依次增加
#26到#34 16.0GT/s preset编码为0100b
#35到#45 32.0GT/s preset编码从0000b到1010b,按顺序依次增加
#46到#54 32.0GT/s preset编码为0100b
#55到65 64.0GT/s preset编码为0000b到1010b
#66到84 64.0GT/s preset值为0000b

Polling.Compliance确定compliance pattern类型

  • 根据下列算法选择
compliance pattern类型确定
原因 compliance pattern类型
收到8个连续的TS1OS进入Polling.Compliance(Compliance Receive bit为1,Loopback bit为0) Modified Compliance Pattern
Link Control 2寄存器中的Enter Compliance为1 Link Control 2寄存器中的Enter Modified Compliance为1 Modified Compliance Pattern
Link Control 2寄存器中的Enter Modified Compliance为0 Compliance Pattern
没有检测到退出EI而进入Polling.Compliance 根据进入Polling.Compliance的次数决定发送的compliance pattern类型
  • 没有检测到退出EI而进入Polling.Compliance
compliance pattern类型确定
进入Polling.Compliance的次数 发送的compliance pattern类型
#1到#25,#35到#45,#55到#65 所有lane上发送compliance pattern
#26,#46,#66 所有lane上发送Jitter Measurement Pattern
#27,#47,#67 lane 0/8发送Jitter Measurement Pattern,其余所有lane发送Compliance Pattern
#28,#48,#68 lane 1/9发送Jitter Measurement Pattern,其余所有lane发送Compliance Pattern
#29,#49,#69 lane 2/10发送Jitter Measurement Pattern,其余所有lane发送Compliance Pattern
#30,#50,#70 lane 3/11发送Jitter Measurement Pattern,其余所有lane发送Compliance Pattern
#31,#51,#71 lane 4/12发送Jitter Measurement Pattern,其余所有lane发送Compliance Pattern
#32,#52,#72 lane 5/13发送Jitter Measurement Pattern,其余所有lane发送Compliance Pattern
#33,#53,#73 lane 6/14发送Jitter Measurement Pattern,其余所有lane发送Compliance Pattern
#34,#54,#74 lane 7/15发送Jitter Measurement Pattern,其余所有lane发送Compliance Pattern
#75 所有lane发送High Swing Toggle Pattern
#76 lane 0/8发送High Swing Toggle Pattern,其余所有lane发送Compliance Pattern
#77 lane 1/9发送High Swing Toggle Pattern,其余所有lane发送Compliance Pattern
#78 lane 2/10发送High Swing Toggle Pattern,其余所有lane发送Compliance Pattern
#79 lane 3/11发送High Swing Toggle Pattern,其余所有lane发送Compliance Pattern
#80 lane 4/12发送High Swing Toggle Pattern,其余所有lane发送Compliance Pattern
#81 lane 5/13发送High Swing Toggle Pattern,其余所有lane发送Compliance Pattern
#82 lane 6/14发送High Swing Toggle Pattern,其余所有lane发送Compliance Pattern
#83 lane 7/15发送High Swing Toggle Pattern,其余所有lane发送Compliance Pattern
#84 所有lane上发送Low Swing Toggle Pattern

Polling.Compliance状态跳转

  • Polling.Compliance可以实现的跳转
    • Polling.Compliance -> Polling.Active
    • Polling.Compliance -> Detect

Polling.Compliance -> Polling.Active

Polling.Compliance跳转到Polling.Active条件
条件 跳转原因
条件1 如果进入Polling.Compliance时,Enter Compliance字段为1(Enter Modified Compliance为0或1),满足以下其一:
   1. Enter Compliance变为0
   2. Upstream Port的任何一条lane收到了EIOS(收到后会把Enter Compliance置0)
条件2 如果进入Polling.Compliance是因为link control 2寄存器中的enter compliance为1且enter modified compliance为0,满足其一:
   1. link control 2寄存器中的enter compliance从1变到0
   2. USP的任意一条lane收到了EIOS(收到后会把Enter Compliance置0)
条件3 如果是由于没有退出EI而进入Polling.Compliance, 在Detect状态检测到接受的任意一条lane检测到对方退出EI

Polling.Compliance -> Detect

Polling.Compliance跳转到Detect条件
条件 跳转原因
条件1 Link Control 2寄存器的Enter Compliance字段为0,且直接让ltssm进入Detect(如通过配置寄存器)
guest
36 评论
内联反馈
查看所有评论
Thomas

进入polling.compliance的24ms超时,该时间从哪里算做起点?polling.active?

Thomas

@重新开始 谢谢解答

Thomas

@重新开始 继续请问,“从Polling.Active开始算,就是24ms超时后”的超时是说无法正常进入polling.configuration引起的超时吗?

Alen

@重新开始 谢谢作者~强的一批 🐂🍺

Thomas

@重新开始 谢谢作者,是要所有lane都接50欧姆电阻?还是TX的一条lane接50欧姆电阻能让所有lane进pollin.compliance呀

Thomas

@重新开始 感谢花费宝贵的时间解答,我实际尝试的是没有接电阻的lane,不会发compliance码型。

Thomas

@重新开始 作者您好,继续请教两个问题。

  1. 想从Polling.compliance退出Polling状态,可以直接退出吗?还是必须先经过Electrical Idle再Polling.active再退出?
  2. 协议提到Polling.compliance进入Polling.active的条件是Enter Compliance bit从1置0;或者检测到至少1个EIOS。那如果是以后者的方法进入Polling.active,那么Enter Compliance bit还会从1置0吗?

期待您的回复,谢谢!

Thomas

@重新开始 感谢感谢!还是您理解得透彻。
也就是说因为Enter compliance bit置1进入的,想要退出必须要置0。反之Enter compliance bit本身就为0,也就不需要置0。但是DSP为什么不会因为检测到EIOS而将Enter compliance bit置0没太看懂,您方便再讲讲吗?或者说DSP会因为检测到EIOS退出Polling.compliance吗?

Thomas

@重新开始 感谢感谢!太强了!

Thomas

@重新开始 大师都谦虚。
还有个问题,就是我之前提到的,如果某条lane不接50欧姆电阻,就不会发出compliance pattern,那就是某条lane,进入了polling.compliance,而不是整个device。是这样理解吗?

Thomas

@Thomas 不对,应该是Device进入polling.compliance,lane发不出pattern是因为终端开路,默认无设备连接。

Thomas

@重新开始 好的,谢谢~

Thomas

@Thomas If the Port entered Polling.Compliance due to detecting eight consecutive TS1 Ordered Sets i… 阅读更多 »

Thomas

@重新开始 感谢作者这么晚还回复了很多。 但是SPEC的前半部分又提到,检测到8个连续的特定TS1OS会发送Compliance Pattern。所以是Modified Compliance Patt… 阅读更多 »

Thomas

@重新开始 谢谢!那比如说要做电气测试,就是除了TS1和Link Control 2 Register以外的方式(即超时)进入Polling.compliance,这时就会发用于测试的Compliance Pattern。可以这么理解吗?

Thomas

@重新开始 感谢解惑,您是目前网上唯一把Polling.compliance说出来,说得清楚的,大部分都是一笔带过。回头看我提的几个问题,都比较简单,没仔细看SPEC,哈哈。总之感谢您抽出时间解答!

Thomas

@重新开始 作者您好,我又来了 1.SPEC提到的Note是不是放在条件a下较为合适?即不是真实的设备,导致无法退出EI而进入Polling.Compliance。还是说编辑习惯放在一段的最后写Not… 阅读更多 »

Thomas

@重新开始 懂了,感谢解答~
重要的是Detect状态检测到的Lane,不是退出到Detect状态。

Thomas

@重新开始 作者您好,再请教一个问题 b. Next state is Polling.Active if an exit of Electrical Idle is detected at the … 阅读更多 »

Thomas

@重新开始 好的谢谢,我理解错了,以为检测到EIOS和Electrical Idle是一个意思。前者是数据包,后者是状态。
结合之前我问的问题就是:

  1. 24ms超时后+不是所有的Lane都退出EI,会进入Poliing.Compliance。
  2. 进入Polling.Compliance后,检测到任意一条Lane退出EI,将会退出Polling.Compliance,进入Polling.Active。
  3. 进入Polling.Compliance后,有任意一条Lane检测到EIOS,会退出Polling.Compliance,进入Polling.Active。

我的理解正确吗?

Thomas

@重新开始 谢谢大佬!全面又深入