首先,回顧一下,之前看了很多遍的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)會周期性地被復位。
注:關于8b/10b的原理和作用,在我之前的博文中有所介紹。所以接下來的文章中不會重復介紹這些內容,但是會簡要地介紹PCIe中的8b/10b的實現細節和要點。
物理層邏輯子層的接收端部分的結構圖如下圖所示:
由于PCIe采用的是一種Embeded Clock(借助8b/10b)機制,因此接收端在接收到數據流時,首先要從中恢復出時鐘信號,這正是通過CDR邏輯來實現的。如上圖所示,接收端的邏輯基本上都是與發送端相對應的相反的操作。這里就不在詳細地介紹了。
-
全雙工
+關注
關注
0文章
50瀏覽量
10610 -
PCIe
+關注
關注
16文章
1322瀏覽量
84647 -
物理層
+關注
關注
1文章
154瀏覽量
34895
原文標題:【博文連載】PCIe掃盲——物理層邏輯部分基礎(一)
文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
HAL庫的串口收發函數,HAL的串口DMA方式下不能實現獨立的全雙工通信嗎?
用于RS485全雙工的LPUART,以半雙工方式連接時出現回聲怎么解決?
WiMAX物理層技術特征及其OFDM和OFDMA技術的應用

PCIe物理層的基本概念

PCIe物理層接口定義了物理層中的,媒介層和物理編碼子層之間的統一接口

通信接口利用RS-485物理層實現飛機防雷保護

SWIPT MIMO全雙工系統中的物理層通信優化綜述
ZLG致遠電子新一代車載以太網全雙工物理層轉換器發布

評論