前面的文章簡單的介紹了一些關于PCIe總線事務層(Transaction Layer)和數據鏈路層(Data Link Layer)的一些基本概念。這篇文章來繼續聊一聊PCIe總線的最底層——物理層(Physical Layer)。在PCIe Spec中,物理層是被分為兩個部分單獨介紹的,分別是物理層邏輯子層和物理層電氣子層,其中后者一般都是采用SerDes來實現的。本篇文章只是簡單地介紹一些PCIe物理層的基本概念,關于物理層詳細、深入地介紹,請關注我后續的連載博文。
由于物理層處于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的編碼和解碼機制。關于8b/10b,這里不再詳細地介紹了.
物理層的另一個重要的功能時進行鏈路(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物理層處理可以轉發LTP和DLLP之外,還可以直接發送命令集(Ordered Sets)。之所以稱其為命令集,是因為它并不是真正意義上的包(Packet),因為物理層不會為其添加起始字符(Start & End Characters)。并且命令集始于發送端的物理層,結束語接收端的物理層。雖然命令集沒有起始字符,但是對于Gen1&Gen2版本的PCIe物理層來說,會為其添加一個叫做COM的字符作為開始字符,隨后跟著三個或者更多的信息字符。
注:PCIe Gen3及之后的版本處理方式有所不同,但是Gen3是向前兼容Gen1 & Gen2的。由于本文主要還是基于Gen2來介紹的,所以關于Gen3的更多信息,大家可以自行參考PCIe Gen3 的Spec。
命令集(OrderedSets)的收發示意圖,如下圖所示:
命令集(OrderedSets)的結構圖如下圖所示:
命令集主要用于鏈路的訓練操作(Link Training Process)。此外,命令集還用于鏈路進入或者退出低功耗模式的操作。
-
總線
+關注
關注
10文章
2881瀏覽量
88085 -
PCIe
+關注
關注
15文章
1239瀏覽量
82653 -
物理層
+關注
關注
1文章
150瀏覽量
34370
原文標題:【博文連載】PCIe掃盲——PCIe總線物理層入門
文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論