PCIe總線物理層

在PCIe Spec中,物理層是被分爲兩個部分單獨介紹的,分別是物理層邏輯子層物理層電氣子層,其中後者一般都是基於SerDes來實現的。

由於物理層處於PCIe體系結構中的最底層,所以無論是TLP還是DLLP都必須通過物理層完成收發操作。來自數據鏈路層的TLP和DLLP都會被臨時放入物理層的Buffer中,並被加上起始字符(Start & End Characters),這些起始字符有的時候也被稱爲幀字符(Frame Characters)。具體如下圖所示:

注:這裏所說的TLP和DLLP指的是包的原始發送者發的包,即TLP表示這個包的原始發送者爲事務層,而DLLP則爲數據鏈路層。但是TLP仍然會被數據鏈路層轉發,並添加Sequence和LCRC。

物理層完成的一個重要的功能就是8b/10b編碼和解碼(Gen1 & Gen2),Gen3及之後的PCIe則採用了128b/130b的編碼和解碼機制。

物理層的另一個重要的功能時進行鏈路(Link)的初始化和訓練(Initialization & Training),且是完全自動操作,不需要人爲的干預。完成鏈路的初始化和訓練之後,便可以確定當前PCIe設備的一些基本屬性:

·        鏈路的寬度(Link Width,x1還是x2,x4……)

·        鏈路的速率(Link Data Rate)

·        Lane Reversal - Lanes connected in reverse order

·        Polarity Inversion – Lane polarity connected backward

·        Bit Lock Per Lane – Recovering the transmitter clock

·        Symbol Lock Per Lane – Finding a recognizable position in the bit-stream

·        Lane-to-Lane De-skew Within a Multi-Lane Link

物理層的電氣子層主要實現了差分收發對,如下圖所示:

由於其速度很高,因此採用的是交流耦合方式(AC-Coupled),說白了就是在信號線上加了電容Ctx,此時低頻信號和直流信號都會被抑制。

需要注意的是,PCIe物理層處理可以轉發TLP和DLLP之外,還可以直接發送命令集(Ordered Sets)。之所以稱其爲命令集,是因爲它並不是真正意義上的包(Packet),因爲物理層不會爲其添加起始字符(Start & End Characters)。並且命令集始於發送端的物理層,結束語接收端的物理層。雖然命令集沒有起始字符,但是對於Gen1&Gen2版本的PCIe物理層來說,會爲其添加一個叫做COM的字符作爲開始字符,隨後跟着三個或者更多的信息字符。

注:PCIe Gen3及之後的版本處理方式有所不同,但是Gen3是向前兼容Gen1 & Gen2的。由於本文主要還是基於Gen2來介紹的,所以關於Gen3的更多信息可以自行參考PCIe Gen3 的Spec。

命令集(Ordered Sets)的收發示意圖,如下圖所示:

命令集主要用於鏈路的訓練操作(Link Training Process)。此外,命令集還用於鏈路進入或者退出低功耗模式的操作。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章