在PCIe的链路初始化和协商的过程中(Link Training),其中一个重要的步骤就是确定双方的Link链路需要几条Lane。我们给Lane做了编号,称之为Lane Number,从0开始。默认设备A的Lane0需要和设备B的Lane0连接,如下图所示。

       幸运的话,我们在A情况下,连线就很容易了,直接连接即可。可是,如果我们遇到情况B呢?这时候对于PCB布线工程师就是场噩梦了。

       要不采用单层走线,不过走线得从芯片下面绕一圈,要不就是双层走线,打一堆过孔。连线倒是通了,不过要命得是,对于PCIe的这种高速信号,对于信号质量要求很高,比如走线长度尽量要求一致、间距一致,尽量减少过孔降低EMI辐射等等。上面两种走线并不是最合理的方式,为了降低PCB布线工程师的布线难度,PCIe spec定义了Lane Reversal和Polarity Inversion,即Lane反转和极性倒置(或称之为极性反转)。

       在PCIe设备支持Lane Reversal的情况下,上述图B变成了下图。Lane0可以和Lane3连接,Lane1可以和Lane2连接。。。于是变成了和图A一样的PCB走线。So easy~

       在PCIe设备支持极性倒置的情况下,对于差分信号的D+和D-交换了极性,避免了走线交叉。

       注意,PCIe spec规定了Polarity Inversion是PCIe设备必须要实现的,而Lane Reversal则是可选支持特性。另外,对于Lane Reversal,很容易看出,只需要链路一端的设备支持就可以实现了。

思考:

大假归来第一天,想必各位不怎么想思考问题吧?那就休息一下咯


上期问答:

 数据在不同的lane上,是怎么分配传输的?

下期详细道来。:)

1 对 “Lane Reversal 和 Polarity Inversion”的想法;

  1. 你好,请问下Polarity Inversion是如何解决图B中lane乱序的问题的呢,还是没太明白,麻烦再通俗解释一下这点?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注