PCIe(一)


PCI Express是一種總線接口,是計算機主板上最大尺寸的接口,計算機上的網卡、聲卡、以及獨立顯卡,視頻采集卡都是采用的這種接口。是一種高帶寬串行互聯標准,代替了基於總線的通信架構。

 

主要用於需要直接與CPU通信的設備使用,目的是為平台輸出更加強力的圖形能力,彌補核顯的不足。根據總線位寬不同而有所差異,包括X1、X4、X8以及X16(X2模式將用於內部接口而非插槽模式)。

PCI Express X1規格支持雙向數據傳輸,每向數據傳輸帶寬250MB/s,PCI Express X1已經可以滿足主流聲效芯片、網卡芯片和存儲設備對數據傳輸帶寬的需求,但是遠遠無法滿足圖形芯片對數據傳輸帶寬的需求。

因此,必須采用PCI Express X16,PCI Express X16也支持雙向數據傳輸,每向數據傳輸帶寬高達4GB/s,雙向數據傳輸帶寬有8GB/s之多。即16條點對點數據傳輸通道連接。

(帶寬:信號傳輸的最大速率,單位時間內能傳輸的數據的量,信道容量(最大傳輸速率)與信道模擬帶寬成正比)https://wenku.baidu.com/view/7d5f4b010740be1e650e9a64.html

FPGA中實現PCIe的通信協議有其自己獨特的優勢

  • 因為在目前的大多數FPGA中集成了Gbit的收發器IP,可以實現高速串行協議,包括千兆以太網、PCIe等,
  • 可以省去專用接口芯片的費用,
  • 利用FPGA的可編程特性,大大提高設計的靈活性、適應性和可擴展性。
  • Altera的PCIe硬核IP包含處理層,鏈路層和物理層所要求的全部功能,以及大多數的可選功能。只需在IPCompiler中經過簡單的參數設置即可生成全功能的IP模塊,如果是作為端點設備,可以使用Avalon-ST接口或Avalon—MM接口適配器,將應用層映射為處理層的TLP。Avalon—ST適配層將應用層的Avalon—ST接口映射到PCIe處理層的TLPs。

通常將PCI-e總線協議分為3層處理

 

 

PCI-e協議層

通常將機械層和物理層合並為物理層(PHY Layer)(PLP),緊接着第二層為數據鏈路層(DLL)(DLLP),第三層為事務傳輸層(TL)(TLP),應用層不算在內。

物理層中的機械層

機械層定義了諸如對連接器、卡外形尺寸、卡檢測和熱插拔等要求的機械環境。

物理層中的電氣和邏輯層

    • 物理層下的電氣層實現包括收發器、模擬緩沖器、串行/解串行器(SerDes)在內的模擬器件以及10位接口。

    • 物理編碼子層(PCS)把每8位數據字節編碼/解碼為10位代碼。這種編碼特性不僅能檢查有效字符,而且也限制了被發送的“0”和“1”數量上的差異,從而同時在發射器和接收器側保持了DC均衡,進而大大提高了電磁兼容性(EMC)和電氣信號性能。

插入一個概念:

數據包:數據在PCIe網絡上的傳輸過程,PCIe實際上是以數據包的形式在各系統間或數字接口的各層之間傳輸的。首先是應用層發起事務傳輸,事務傳輸層把把請求轉換為一個PCIe數據包。數據鏈路層為該包添加序列號和鏈路CRC(LCRC)。數據鏈路層確保數據接收的正確性,然后在物理層PCIe鏈路上傳輸該事務。

數據鏈路層:實際上該層的主要作用是保證數據傳輸的可靠性,對接受或者發送的數據包進行各種校驗處理。

數據鏈路層完成的主要任務是:

    1. 數據交換。接收發送方處理層的TLP包,並送到物理層。另外從物理層接收TLP包並送到接收端的處理層。

    2. 出錯檢測和裁決。LCRC和序列號(TLP Sequence Number)的生成;存儲發送端的TLP用於再試重發;為TLP和DLLP做數據完成性檢測(crc校驗);DLLP的ack和nack響應;錯誤指示;鏈接確認超時重試機制。

    3. 初始化和電源管理。跟蹤鏈路狀態並傳送鏈路活動、鏈路復位、鏈路失去連連等狀態給處理層;

    4. 生成DLLP。用於鏈路管理功能包括TLP確認、電源管理、流程控制信息(VC通道初始化)交流。在鏈接兩端的數據鏈路層點對點傳輸。

 

事務傳輸層:該層的主要作用命令請求和響應。一共有4種地址空間和三種處理類型。

 

創建出站和接收入站的事務傳輸層數據包(TLP)。TLP包括一個報頭、一個可選數據配載以及一個可選的端到端CRC(ECRC)。TLP既可以是請求也可以是對請求(完成)的響應,它永遠是4個字節(1個DWORD)的倍數。報頭指定事務類型、優先級、地址,路由規則及其他數據包特征。發送事務傳輸層構建數據包報頭、伺機添加ECRC並門控數據包的傳輸(直到有足夠的遠程流量控制額度可用)。接收事務傳輸層檢查TLP格式和報頭。

 

PCI-e基本功能和屬性:

    • 吞吐量:流量控制額度

    • QoS:傳輸類別和虛擬通道

    • RAS:數據完整性

    • RAS: 排序/PCI規則

    • 主動電源管理

    • 先進的出錯管理

    • 中斷

關於端對端與點對點的連接方式的比較分析https://wenda.so.com/q/1361455318067037

在具體的FPGA 的IP核開發的流程中,已經寫好的IP核實際上已經把上述三個層的相關規定都已經寫好了,我們的主要職責就是要寫出圖中的和邏輯接口,將數據從Device Core輸出的數據格式轉換成IP的TL層可以接受的數據的格式。

所以搞清楚兩個點就好,一是PCIe設備進行通信時的數據包的格式,其次就是PCIe系統的整體架構。用兩個圖就可以概全貌,這兩個圖說明PCIe設備是以點對點的結構連在一起的,並且點對點時間是以數據包的形式進行傳輸的。

 

PCIe的拓撲架構圖

注意的是其中RC(Root complex)結構,,他負責的是把幾種不同的傳輸協議聚合到一起,如內存的DDR總線,以及處理器的前端總線(FSB),實際上在PCIe中CPU的操作是由RC代替實現的。如圖是一個簡單的實例,完成由CPU發送讀命令MRd,然后設備返回一個讀完成信號CplD。

 

PCIe的數據傳輸過程圖

TPL包的傳輸過程中,會出現TLP包的組裝和拆解

 


免責聲明!

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



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