类似文章

guest
50 评论
内联反馈
查看所有评论
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

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

aochen

没明白由于no lane exit EI而进入polling.compliance子状态的目的是?原先收不到TS1的lane在该状态岂不是继续收不到,难道说这种场景只是为了继续延长any lane EI exit的时间?但是又没说在该状态如果继续检测不到any lane EI exit该怎么办?

aochen

明白了,进入compliance的前提是对端要接测试设备,谢谢博主细致的回答

aochen

明白,软件drive进入

tex

在 Polling.Active -> Polling.Configuration 中有下面条件“任意一条lane收到8个连续的TS(或者TS的反),收到1个TS后最少需要发送1024个TS1,收到的TS需要满足下面其一”,请问作者,这句话怎么理解。

tex

(直接在下面的楼层继续回复一直提示让我验证,重新开一楼)
感谢作者的讲解,明白您所描述的过程了。顺便提一下这个学习平台做的太好了!

最后由tex编辑于7 月 之前
wanderingxs

想请问一下作者一个比较奇怪的问题。如果链路正常,进入polling.active状态后,再要进入polling.configuration状态是要检测到8个连续的TS1。要检测到TS1是需要实现块对齐吧?发送方需要在发TS1的同时,必须时不时地发送EIEOS来确保接收方能够获得块对齐?
这和我遇到的一个问题也有关。我在使用xilinx的pcie phy IP核的时候,x8链路每次测试时总是有部分lane达不到块对齐。我对pcie协议的实现做了简化,要求所有lane均能收到8个连续的TS1之后才能从polling.active跳转到polling.configuration,否则超时后跳回detect;我没有实现polling.compliance状态。但是实际上板测试的时候,ltssm总是不能正常跳转到polling.configuration.
看了您文章和评论区对polling.compliance状态的解释,您觉得这个问题和信号质量有关吗?

wanderingxs

@重新开始 谢谢博主的回复!ヾ(≧∇≦*)ゝ
我之前的回复遗漏了一个要点:pcie1.0或2.0速率下链路是可以正常建立的;但是pcie3.0或4.0下由于部分lane总是不能收到连续的8个TS1(更确切地说,部分lane什么数据都收不到),导致我之前实现的简化版ltssm一直卡在polling.active状态。我打算按照您的建议,根据协议完善下ltssm,看看会不会有改善。

但是在 Polling.Configuration 需要所有的 lane 都收到符合要求的 TS2OS

这里捉个虫,按照协议polling.configuration -> Configuration的状态跳转,也只需要detect状态下有检测到接收方的任意一个lane,检测到8个连续的TS2即可。
此外我注意到,xilinx PCIe PHY IP核中,对于使用128b/130b编码的数据流,RX端的数据通路是:SIPO -> 128b/130b decoder -> Block Detect Align -> PCIe RX buffer -> RX Interface -> PCIe MAC。在polling.active状态下,对端TX必须发送1024个以上的TS1OS,本端RX CDR才有可能正常恢复出时钟和数据,然后经过上述数据通路,将收到的TS1OS送到MAC,是这样吗?

wanderingxs

@重新开始 谢谢博主的回复!ヾ(≧∇≦*)ゝ
我之前的回复遗漏了一个要点:pcie1.0或2.0速率下链路是可以正常建立的;但是pcie3.0或4.0下由于部分lane总是不能收到连续的8个TS1(更确切地说,部分lane什么数据都收不到),导致我之前实现的简化版ltssm一直卡在polling.active状态。我打算按照您的建议,根据协议完善下ltssm,看看会不会有改善。
但是在 Polling.Configuration 需要所有的 lane 都收到符合要求的 TS2OS
这里捉个虫,按照协议polling.configuration -> Configuration的状态跳转,也只需要detect状态下有检测到接收方的任意一个lane,检测到8个连续的TS2即可。
此外我注意到,xilinx PCIe PHY IP核中,对于使用128b/130b编码的数据流,RX端的数据通路是:SIPO -> 128b/130b decoder -> Block Detect Align -> PCIe RX buffer -> RX Interface -> PCIe MAC。在polling.active状态下,对端TX必须发送1024个以上的TS1OS,本端RX CDR才有可能正常恢复出时钟和数据,然后经过上述数据通路,将收到的TS1OS送到MAC,是这样吗?

wanderingxs

@重新开始 明白了,谢谢您的耐心解答😊