FPGA接口協議之PCIE


這個問題應該分為兩個:FPGA高速接口協議, FPGA PCIE 功能運用。

如果FPGA 來做PCIE 的話,X,A 廠的PCIE phy,link,trans layer 都是硬核 + logic實現,並且IP接口,驅動, 廠商均已經提供好,如果要運用PCIE 的話,直接使用對應的IP+Driver即可。

Phy

需要用到,Tranciver(收發器 單lane可達30Gbps) 和 Serdes(普通高速IO 單lane可達 1.5Gbps)。所以只需要熟悉並掌握對應的文檔和應用即可,最好結合實際硬件進行學習。

協議IP

最主要的是閱讀 協議文檔,並了解自己需要實現協議的哪一部分。可以去 opencore,github上去翻翻看別人的代碼。

Eth 提供的Phy + Mac 層IP, 上層需要 自己實現。(閱讀相關文檔,或者使用IP 對應的driver, 嵌入式軟件實現)。

Sata 廠商提供 Phy。 link, trans layer + driver 均需要自己實現。

Pcie 可以不用管協議直接使用xdma 等IP,或者使用比較基礎的pcie IP(xdma 內部就是 pcie ip + dma ip)自己實現TLP (傳輸層協議)。大部分運用使用官方IP即可(xilinx windows 驅動問題較多)。

  • FPGA PCIE 功能運用:
    以xilinx為例

第一個IP 直接封裝硬核 需要自己去封裝TLP 包,可以生成Example 去查看TLP 相關協議如何工作。運用的使用還需要再stream外層對數據進行打包,比較復雜。

第二個IP 就是將IP 封裝為AXI Mem接口,對外直接讀寫數據,無法看到協議控制等內容。並且驅動以及IP控制沒有提供sgdma 的方式,應用層內存管理較為復雜。

第三個IP 算是用的最多的,在第二個基礎上增加了SGDMA 的功能,Root端運用非常方便。Example 直接可以在 windows/linux/mac 上運行。
(這個IP的windows驅動問題較多,不過勉強可用)。

 

PCIe研究的人挺多的,網上資料也很多。

1、先在網上搜PCIe關鍵字,把各個論壇、博客上相關內容都熟悉一下,建立對PCIe體系結構的初步概念。

2、需要閱讀pcie spec,可以配合MINDSHARE的PCI Express Technology,這一步可能需要反復重復才能弄懂。

3、看懂XILINX/INTEL等FPGA原廠PCIe IP的datasheet。

4、可以用官方PCIe Example,在開發板上跑起來。

還要看你學習的目的,如果你的目的是精通PCIe協議本身,那么最重要的是上述第2步,如果你的目的僅僅是把PCIe用起來,那就簡單了,FPGA原廠提供各種功能完善的PCIe IP,比如XILINX的PCIe AXI Bridge等IP,這些IP已經把復雜的PCIe接口屏蔽,用戶面對的是相對簡單的AXI接口。

樓上也提到MINDSHARE,去MINDSHARE官網看看,不光是PCIe,很多高速接口協議,比如SATA、NVMe、USB等等,它們都有出詳解。


免責聲明!

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



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