PCIe物理層邏輯部分基礎

PCIe的Layer結構圖

 

PCIe中的物理層主要完成編解碼(8b/10b for Gen1&Gen2,128b/130b for Gen3 and later)、擾碼與解擾碼、串並轉換、差分發送與接收、鏈路訓練等功能。其中鏈路訓練主要通過物理層包Ordered Sets來實現。

PCIe Spec將物理層分爲兩個部分——邏輯子層電氣子層,如下圖所示:

如上圖所示,PCIe物理層實現了一對收發差分對,因此可以實現全雙工的通信方式。需要注意的是,PCIe Spec只是規定了物理層需要實現的功能、性能與參數等,至於如何實現這些卻並沒有明確的說明。也就是說,廠商可以根據自己的需要和實際情況,來設計PCIe的物理層。下面將以Mindshare書中的例子來簡要的介紹PCIe的物理層邏輯部分,可能會與其他的廠商的設備的物理層實現方式有所差異,但是設計的目標和最終的功能是基本一致的。

物理層邏輯子層的發送端部分的結構圖如下所示:

 

在進行8b/10b編碼之前,Mux會對來自數據鏈路層的數據中插入一些內容,如用於標記包邊界或者Ordered Sets的控制字符和數據字符。爲了區分這些字符,Mux爲其對應上一個D/K#位(Data or Kontrol)。

注:圖中還包含了Gen3的一些實現,不過這裏只介紹Gen1 & Gen2,並不會介紹Gen3。如果大家感興趣的,可以去閱讀Mindshare的書籍或者參考PCIe Gen3的Spec。

Byte Striping將來自Mux的並行數據按照一定的規則(後面會詳細地說)分配到各個Lane上去。隨後進行擾碼(Scrambler)、8b/10b編碼、串行化(Serializer),然後是差分發送對。

其中擾碼器(Scrambler)是基於僞隨機碼(Pesudo-Random)的異或邏輯(XOR),由於是僞隨機碼,所以只要發送端和接收端採用相同的算法和種子,接收端便可以輕鬆地恢復出數據。但是,如果發送端和接收端由於某些原因導致其節拍不一致了,此時便會產生錯誤,因此Gen1和Gen2的擾碼器(Scrambler)會週期性地被複位

物理層邏輯子層的接收端部分的結構圖如下圖所示:

由於PCIe採用的是一種Embeded Clock(藉助8b/10b)機制,因此接收端在接收到數據流時,首先要從中恢復出時鐘信號,這正是通過CDR邏輯來實現的。如上圖所示,接收端的邏輯基本上都是與發送端相對應的相反的操作。

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