首页 理论教育物理层组成结构和PCIExpress体系结构导读

物理层组成结构和PCIExpress体系结构导读

【摘要】:图7-13 逻辑子层的组成结构如上图所示,物理层发送报文的过程如下。物理层的接收过程是发送的逆过程,其步骤如下。“Byte Un-Stripping”部件将来自不同Lane的数据合并,进行De-skew操作,然后取出物理层的前后缀并进行边界检查后,将数据放入Rx Buffer中。物理层将在Rx Buffer中的数据传递到数据链路层。物理层的数据在通过Byte Un-Stripping/Stripping部件时,需要注意大小端模式的转换。对应的,由本原多项式作为生成多项式所产生的LFSR序列为最大周期序列。

PCIe总线的物理层通过LTSSM状态机对PCIe链路进行配置与管理,并与数据链路层进行数据交换,由逻辑子层(Logical Sub-block)和电气子层(Electrical Sub-block)组成。本节主要讲述逻辑子层。逻辑子层与数据链路层进行数据交换,由发送逻辑TX和接收逻辑RX组成,其结构如图7-13所示。

978-7-111-29822-9-Part02-87.jpg

图7-13 逻辑子层的组成结构

如上图所示,物理层发送报文的过程如下。

(1)物理层从数据链路层获得TLP或者DLLP,然后放入Tx Buffer中。

(2)物理层将这些TLP或者DLLP加入物理层的前缀(Start Code)和后缀(End Code),后通过多路选择器Mux,进入Byte Stripping部件。物理层也定义了一系列PLP,这些PLP也可以通过Mux,进入Byte Stripping部件。

(3)PCIe链路可能由多个Lane组成,Byte Stripping部件可以将数据报文分发到不同的Lane中。在PCIe链路的不同Lane中传递的数据可能存在漂移,即Skew,Byte Stripping部件还有一个重要功能即消除这个漂移,即De-skew。

(4)数据进入到各自Lane的加扰(Scrambler)部件,“加扰”后进行8/10b编码,最后通过并转串逻辑将数据发送到PCIe链路中。

物理层的接收过程是发送的逆过程,其步骤如下。

(1)物理层从PCIe链路的各个Lane获得串行数据,并通过8/10b解码和De-Scrambler部件,发送到“Byte Un-Stripping”部件。(www.chuimin.cn)

(2)“Byte Un-Stripping”部件将来自不同Lane的数据合并,进行De-skew操作,然后取出物理层的前后缀并进行边界检查后,将数据放入Rx Buffer中。

(3)物理层将在Rx Buffer中的数据传递到数据链路层。

物理层的数据在通过Byte Un-Stripping/Stripping部件时,需要注意大小端模式的转换。而Scrambler和De-Scrambler部件的主要作用是对数据流进行“加扰”和“解扰”操作。在串行链路上进行数据传递时,如果在字符流中存在某些规律,这些“规律”将会叠加,并产生较大的EMI(Electromagnetic interference)噪声。

Scrambler部件的主要作用就是通过“加扰”的方法削减EMI噪声,所谓加扰是指将源数据流与一个随机序列进行异或操作后,再发送出去。此时被发送出的数据流也基本是伪随机的,从而降低了发送数据时产生的EMI噪声。

PCIe总线通过一个16位线性反馈移位寄存器(Linear Feedback Shift Register,LFSR),产生伪随机序列,该移位寄存器的表达式如公式7-2所示。

Gx)=X16+X5+X4+X3+1 (7-2)

该公式是一个本原多项式,使用该本原多项式可以产生一个周期为216-1(这个周期是16位移位寄存器能够产生的最大周期)的伪随机序列。所谓本原多项式是“具有最大周期”的不可约多项式。对应的,由本原多项式作为生成多项式所产生的LFSR序列为最大周期序列。这些序列一般被称为m-序列,在m-序列中“0”和“1”所占的比例相对均衡,但是1的个数比0的个数多1,因为全0不能作为初始值,也不可能是中间状态。

来自Byte Stripping部件的字符流与这个伪随机序列中的字符流进行异或操作,从而生成一个相对较为随机的字符流,从而降低了数据流的EMI噪声。

De-Scrambler部件的主要作用是进行解扰。值得注意的是,在PCIe链路的两端,加扰和解扰使用的编解码公式相同,而且完全同步,即LFSR使用相同的初始值,在PCIe链路的两端,该初始值为0xFFFF。PCIe链路两端设备每次加解扰一个8b数据后,LFSR进行8次移位操作。在PCIe总线中,数据在发送时,首先经过“加扰”操作,然后进入8/10b编码模块;而接收数据时,首先经过8/10b解码模块,然后进行“解扰”操作。