天天看點

PCIe系列第七講、PCIe的實體層

本章将着重講述PCIe實體層組成與操作,實體層位于資料鍊路層之下,可産生PLP包(Physical Layer Packet)進行管理。

————————————————————

從作用方面考慮:實體層位于資料鍊路層和PCIe鍊路之間,其主要作用是:

1、 發送來自資料鍊路層的TLP和DLLP。

2、 發送和接收在實體層産生的PLP封包 

3、 從PCIe鍊路接收資料封包并發送到資料鍊路層 

————————————————————

從組成結構方面考慮,實體層主要由實體邏輯子層和實體電氣子層構成,側重于實體電氣子層,PCIe鍊路通過LTSSM狀态機對PCIe鍊路進行控制和管理,邏輯子層主要完成與資料鍊路層的資料交換,由發送邏輯和接收邏輯組成。

發送邏輯 :

1、實體層從資料鍊路層中擷取TLP或DLLP,将其存放到TX Buffer中 

2、實體層将TX buffer中的資料添加實體層的字首(Start Code)和字尾(End Code),之後通過多路選擇器MUX,進入Byte Strpping子產品。(因為實體層也定義了一系列PLP,這些PLP也可以通過MUX,進入Byte Stripping部件) 

3、PCIe鍊路由多個Lane構成,Byte Stripping部件将封包發送到不同的Lane中,由于PCIe不同的Lane中傳遞的資料可能存在漂移,即Skew,Byte Stripping的一個重要功能就是消除這個漂移,即De-Skew。

4、資料進入到各自Lane的加擾(Scramber子產品),“加擾”後進行8b/10b編碼,最後通過并串轉換子產品發送到PCIe鍊路中。

————————————————————

接收邏輯 :

1、 實體層從PCIe鍊路的各個Lane中獲得串行資料,串并轉換之後經過8b/10b解碼和De-Scramber解擾之後,發送到“Byte Unstripping”部件。

2、 “Byte Unstripping”部件将來自不同Lane的的資料進行合并,進行De-Skew操作,然後取出實體層字首字尾并進行邊界檢查後,将資料放入RX buffer中。

3、 實體層将Rx Buffer中的資料發送到資料鍊路層。

————————————————————

從信号處理的角度來看(Scramber加擾),在串行鍊路上進行傳輸時,如果字元流存在一些規律,這些“規律”将會疊加,并産生較大的EMI(Electromagnetic Interference,電磁噪聲)。

Scramber的主要作用是通過“加擾”的方式削減EMI,所謂“加擾”就是将資料流與一個随機序列進行異或操作後,再發送出去。此時被發送的資料流也基本是僞随機序列,進而降低了發送資料時的EMI PCIe總線通過一個16位的線性回報移位寄存器生成僞随機序列,核心是m序列,在m序列中,“0”和“1”的數量基本相等,但是“1”多一點,因為全0不可以作為初始值。

來自Byte Stripping部件的資料鍊與這個僞随機序列中的字元流進行異或操作,進而生成一個較為随機的随機數,進而降低EMI。

De-Scramber進行去擾操作,其随機多項式與Scramber完全相同且完全同步,即使用相同的初始值(0xffff),PCIe鍊路兩端裝置每次加擾一個8b資料後,LFSR進行8次移位操作。

————————————————————

最後,以一個事務層包發送執行個體對實體層進行說明:

一個TLP在通過實體層時,首先要添加Start Code和End Code,分别為STD和END,STD的控制字元為K27.7和K29.7。STD和END字元在通過實體層時,不需要進行加擾解擾操作。資料鍊路層字首、TLP、資料鍊路層字尾都屬于資料字元,這些字元在通過實體層時需要進行加擾解擾操作,之後進行8b/10b轉換,并串轉換後發向PCIe鍊路。控制字元和資料自讀都需要根據實體層CRD的狀态,決定使用CRD-還是CRD+。PCIe鍊路的兩端進行加擾解擾操作時,需要保證使用的LFSR寄存器同步,LFSR寄存器的同步由控制字元COM控制,在初始複位時LFSR寄存器的int value為0xffff,當接收到控制字元COM後,實體層将LFSR寄存器的值置為0xffff,此外實體層在接收到SKP控制字元後,不會對LFSR進行移位操作。

繼續閱讀