PCIe初探(2/2)


  上一篇講到了PCIe的事務層,下面會對數據鏈路層和物理層做簡要介紹。

數據鏈路層的主要功能為

TLP傳輸
出錯檢測和裁決
  LCRC和Sequence Number的生成 
  存儲發送端的TLP用於重發
  為TLP和DLLP做crc校驗
  DLLP的ack/nack響應
  鏈路初始化和電源管理
DLLP傳輸
  用於鏈路管理功能(TLP確認,電源管理,VC通道初始化)

仍然用下面這張圖來梳理三層結構中的事務包.

 

 

數據鏈路層為了保證事務包傳輸的正確性, 采用了Ack/Nak的握手機制,

Ack/Nak是一種由硬件實現的,完全自動的機制,目的是保證TLP有效可靠地傳輸。Ack DLLP用於確認TLP被成功接收,Nak DLLP則用於表明TLP傳輸中遇到了錯誤。

下圖為數據鏈路層的工作過程:

 

 

 

PCIe的物理層 :

物理層分為兩部分,邏輯物理層和電氣物理層。如下圖所示:

 

 

電氣層和邏輯層間定義了一個成為PIPE的物理接口
電氣子層: 包括收發器、模擬緩沖器、串行/解串行器(SerDes)在內的模擬器件以及10位接口
編碼子層(PCS)把每8位數據字節編碼/解碼為10位代碼。這種編碼特性不僅能檢查有效字符,而且也限制了被發送的0/1數量上的差異,從而同時在發射器和接收器側保持了DC均衡,進而大大提高了電磁兼容性(EMC)和電氣信號性能。
在物理層內PIPE接口的另一側包含用以指示鏈路訓練和狀態的狀態機(LTSSM)、通道間去除偏移、特殊序列檢測和生成等功能。

電氣層涉及模擬電路的部分,這里簡單了解一點:

  從串行引腳層到PIPE接口層統稱為物理層。
  從PIPE接口到應用的那些層稱為數字控制器(Controller)。

SerDes設計挑戰
  串行到並行的數據轉換,要求先進的模擬設計
  不同工藝技術間,模擬設計不具有移植性。所以必須針對芯片制造所采用的工藝技術對物理層實施重新設計
  高速-模擬鏈路引入的額外設計復雜性使設計難度進一步加大(如因信號完整性和噪音導致的衰減問題)
  物理層必須通過嚴格的電氣和兼容性測試,以確保與其他設備的互操作性。

 邏輯物理層:

物理層的發射部分負責:
  采用特殊符號插入對數據包進行幀化處理; 如用STP或SDP符號標志數據包的開始,用END符號標記數據包結束。
  通道映射使順序傳送數據包在到通道鏈路上同時發送,從而增加吞吐量。接收器物理層以正確順序對數據包進行重組
  數據加擾
  鏈路控制 – 初始化、寬度和通道反轉協商
  多通道傳輸控制
  生成跳躍序列以補償鏈路兩端的時鍾PPM差。

 

 

 

物理層的接收部分負責:
  負責包含多通道鏈路的通道映射、通道到通道間的去偏移
  數據解擾
  發現數據包並實施去幀化處理
  CDR恢復始終信號
  檢測特殊數據包序列,如: TS1, TS2, Skip和電氣閑置。

關於三層結構介紹暫時到這里,那么PCIe在上電后是怎么開始工作的呢?下面會較詳細的敘述PCIe開始工作的過程。

PCIe開始工作主要分為3個步驟:鏈路訓練,枚舉掃描,配置BAR空間。

鏈路初始化:

 

 

 Link Initialization & Training:

 

 

 

 

 

 枚舉掃描:

 

 

 總線枚舉過程:

 

 

 

 

 

 配置BAR:

  配置基地址寄存器,給PCIe分配地址空間。

 

 

 

 

 

 

 

 PCIe還有很多其他內容,比如Ordering, 中斷,RAS,Power管理,虛擬化等,每一個話題都可以單獨開題,PCIe初探部分就到此為止了,后續會對PCIe的Ordering和在ARM架構中的應用做一次專題,敬請期待.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM