精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于AMD FPGA的PCIE DMA邏輯實現

jf_pJlTbmA9 ? 來源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-07-14 15:53 ? 次閱讀

一、AMD FPGA PCIE IP介紹

AMD FPGA自帶PCIE硬核,實現了PCIE協議,把串行數據轉換為并行的用戶數據,以UltraScale系列FPGA為例,其支持Gen1.02.03.04.0,1~16 Lanes,如下圖所示:

100571679-305868-01.png

另外當前最新7nm系列器件Versal? ACAP可支持到PCIE Gen5.0,單個Lane可達32G的線速率,如下圖所示:

100571679-305869-02.png

1.1 PCIE IP功能介紹

用戶接口采用AXI接口實現PCIE TLP報文收發,從而完成PCIE傳輸事務的收發,最終實現PCIE的各種數據傳輸模式,系統架構如下圖所示:

100571679-305870-03.png

圖左側為FPGA PCIE IP,實現了PCIE協議,其與用戶邏輯的數據交互主要通過AXI CQ,CC,RQ,RC四個接口,可以實現PCIE上行和下行的數據傳輸。

1.2 PCIE協議TLP報文介紹

使用PCIE IP用戶需要了解PCIE協議,至少了解TLP報文的構造,如下圖所示為32位地址寫請求TLP報文:

100571679-305871-04.png

R:保留位,一般填0;
Fmt:報文長度類型,指示當前TLP報文是3DW長度還是4DW長度(此處主要是跟地址位寬相關,PCIE協議可支持32位地址和64位地址);
Type:包類型,指示包括Mrd(讀數據)、Mwr(寫數據)、Cfg(配置PCIe)、Msg(消息事務)、Cpl(讀地址數據請求后返回的數據包);
TC:傳輸優先級,數值越大表示優先級越高;
Attr:包屬性,指示當前包是順序或者是亂序,cache一致性等;
TH:PCIe V2.1 總線規范引入的一個重要功能。TLP 的發送端可以使用 TPH 信息,通知接收端即將訪問數據的特性,以便接收端合理地預讀和管理數據,一般很少應用;
TD:指示接收端是否需要做ECRC校驗;
EP:指示當前TLP包的有效性;
AT:地址種類,與 PCIe 總線的地址轉換相關;
Length:指示TLP長度;
Requester ID:請求者ID,包括PCIe設備的總線號(Bus Number)、設備號(Device Number)和功能號(Function Number),通過該ID可以找到對應的目標設備;
Tag:數據包標簽,可以指示當前TLP數據包是屬于哪一組數據中分拆的數據塊;
Last DW BE:指示最后一個DW中有效的字節,主要是針對在傳輸數據粒度比較小的情況,比如最小粒度為1字節;
1st DW BE:指示第一個DW中有效的字節。

1.3 PCIE IP邏輯設計

用戶在實現PCIE數據傳輸功能時可通過上圖中AXI CQ,CC,RQ,RC四個接口來完成各種PCIE事務的數據收發:
RQ:請求者請求接口,通常是主機向終端設備發送數據傳輸請求;
RC:請求者完成接口,通常是終端設備向主機發送需要的返回數據;
CQ:完成者請求接口,通常是終端設備向主機發送數據傳輸請求;
CC:完成者完成接口,通常是主機向終端設備發送需要的返回數據;

用戶需要通過這4個接口構造TLP報文可以實現從主機到終端或者終端到主機的訪問請求和相應的數據傳輸,下面是主機向終端發起寫數據請求的時序:

100571679-305872-05.png

用戶在邏輯設計時可以先通過右鍵IP生成一個example工程,工程里面就有構造TLP報文的代碼,用戶可以在這個工程代碼上修改TLP報文的相關數據來實現具體的數據傳輸需求。

二、AMD PCIE DMA功能實現

AMD PCIE DMA功能主要是通過XDMA IP來實現,其作用本質上是通過這幾個接口實現PCIE DMA傳輸流程,用戶不需要關注PCIE TLP報文的構造細節,只需要通過XDMA的AXI接口完成數據傳輸即可,如下圖所示:

100571679-305873-06.png

用戶只需關注AXI用戶接口的邏輯設計,通過該接口就可以實現DMA傳輸。另外,AXI用戶接口包括MM接口和ST兩種接口,MM接口是可以直接對接內存,其包括了地址控制,可以直接實現內存讀寫。

2.1 XDMA AXI-MM接口實現DMA傳輸

AXI-MM接口的操作相對簡單,其與用戶邏輯對接的接口為標準的AXI接口,包括了地址信息,可以直接對接內存,最簡單的方式就是例化一個AXI接口的RAM直接對接,PC端就可以直接訪問該RAM,如下圖所示:

100571679-305875-07.png

AXI-MM接口主要應用場景是直接訪問FPGA內存,但對于視頻流,采集數據流等場景,特別是需要用到多通道的場景通常采用ST接口會更加方便。

2.2 XDMA ST接口實現DMA傳輸

ST(AXI4-Stream)接口是實現數據流傳輸接口,用于傳輸連續的數據流,比如視頻數據流,特別是在實現多通道DMA的情況下通常會采用該接口,如下圖所示:

100571679-305876-08.png

S_AXIS_C2H是終端設備向主機發送數據接口,S_AXIS_H2C是主機向終端設備發送數據接口,均為AXI Stream接口,只實現數據流傳輸,典型特征是不傳輸地址,其端口如下圖所示:

100571679-305877-09.png

其時序跟上述PCIE IP的AXI接口類似,所以,通過XDMA的ST接口可以很方便實現數據流傳輸,只需要跟PC驅動程序配對好地址和長度信息,邏輯設計只需要通過ST接口收發數據。

2.3 DMA邏輯設計方法

邏輯與主機上層軟件實現DMA數據傳輸主要有查詢和中斷兩種方式,以ST接口為例,邏輯可以通過AXI LITE接口實現PC的寄存器訪問,PC可以通過查詢寄存器來確定是否可以啟動DMA下發數據,或者通過發起DMA獲取邏輯需要上傳的數據,邏輯根據當前數據需要上傳或者允許PC下發數據的具體情況來設置寄存器的狀態。
中斷模式首先要在例化XDMA IP時要選擇一個中斷,IP自動生成一個可供用戶產生中斷的接口,時序如下圖所示:

100571679-305878-10.png

用戶產生中斷的方法很簡單,只需要拉高usr_irq_req,等待usr_irq_ack拉高即可產生中斷。需要注意的是當usr_irq_ack拉高時用戶不能立刻把usr_irq_req拉低,因為此刻不能確定PC已經響應并完成中斷處理,最簡單的方式是設置一個清中斷寄存器,PC通過向這個寄存器寫1來通知邏輯,中斷事務已經被處理完成。

另外,PCIE協議支持3種中斷:
INTx中斷:主要是為了兼容PCI設備,是電平觸發中斷;
MSI中斷:消息中斷,PCIE設備通過構造對應的中斷消息發送到主機,從而觸發中斷;
MSI-X中斷:是MSI中斷的擴展,可以通過中斷向量表的方式把中斷個數擴展到2048個;

當PC啟動DMA下發數據時,XDMA IP會通過H2C接口向邏輯發送數據,邏輯可以通過s_axis_h2c_tready信號來決定是否允許數據下發;當邏輯向PC上傳數據時可通過C2H接口向PC傳輸數據,在發送數據前邏輯需要向PC產生一個中斷,PC檢測到中斷后就會啟動DMA上傳數據,邏輯側看到的是s_axis_c2h_tready信號拉高,說明邏輯可以開始通過C2H接口發送數據給PC。所以,整個DMA傳輸都是由PC發起的,無論是上傳還是下發數據,邏輯只是被動完成數據傳輸。

值得注意的是當使用多通道DMA時每個通道的操作是完全獨立的,包括ST接口和中斷都是獨立的,相關的寄存器用戶最好也采用獨立的寄存器來實現與PC的交互。

責任編輯:彭菁

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1620

    文章

    21510

    瀏覽量

    598900
  • amd
    amd
    +關注

    關注

    25

    文章

    5376

    瀏覽量

    133378
收藏 人收藏

    評論

    相關推薦

    基于PCIE(mcap)的部分可重構實現方案

    芯片才能實現,具體哪些系列能實現哪種配置方式如下圖所示: 圖1 本質上來說,無論是JTAG還是ICAP或者MCAP以及其它FPGA的配置方式,目的都是配置FPGA
    的頭像 發表于 01-03 09:20 ?3941次閱讀
    基于<b class='flag-5'>PCIE</b>(mcap)的部分可重構<b class='flag-5'>實現</b>方案

    基于Xilinx V6的PCIE DMA高速傳輸模塊

    利用XIlinx V6評估板ML605實現PCIE2.0,8通道主模式DMA數據傳輸,DMAFPGA發起,采用1GB DDR3作為
    發表于 04-25 12:48

    Xilinx PCIe Master DMA設計

    基于PCI Express的數據采集卡PCIe數據采集卡PCI Express數據采集卡本人在北京工作6年以上,從事FPGA外圍接口設計,非常熟悉PCI Express協議,設計調試了多個基于PCI
    發表于 03-01 18:11

    PCIe DMA設計實現

    基于PCI Express的數據采集卡PCIe數據采集卡PCI Express數據采集卡在北京工作6年以上,從事FPGA外圍接口設計,非常熟悉PCI Express協議,設計調試了多個基于PCI
    發表于 01-10 20:36

    關于PCIE DMA操作的一個疑問

    功能,1、FPGA是不是可以直接通過PCIE操作DDR完成DMA操作?2、在操作過程中CPU是一個旁觀者的角色嗎?3、地址轉換,DDR接口操作等都是由CPU內部的硬件完成?CPU在FPGA
    發表于 04-06 16:24

    尋求fpga大牛開發一個簡單的fpga pcie設備

    需求:兩塊fpga互聯,兩塊fpga分別模擬成特定的pcie設備,兩個設備通過serdes總線互聯通信,fpga僅僅只要模擬特定的設備就可以,不需要負載的
    發表于 02-11 15:31

    采用FPGA實現PCIe接口設計

    系列FPGA實現PCIe接口所涉及的硬件板卡參數、應用層系統方案、DMA仲裁、PCIe硬核配置與讀寫時序等內容。
    發表于 05-21 09:12

    如何通過PCIe進行FPGA到PC的通信?

    嗨,我正在使用超大規模的FPGA板。我可以通過DMA子系統IP和DDR控制器IP將數據從PC傳輸到DDR。我打算在FPGA中進行一些處理,然后更新數據,以便PC可以讀取。如何通過PCIe
    發表于 05-08 09:40

    如何利用PCIe DMA總線實現一個基于FPGAPCIe 8位數據采集卡?

    PCIe總線通信過程是怎樣的?是什么原理?如何利用PCIe DMA總線實現一個基于FPGAPCIe
    發表于 09-17 07:16

    PCIE DMA例子

    Xilinx FPGA工程例子源碼:PCIE DMA例子
    發表于 06-07 14:13 ?52次下載

    基于FPGAPCIe總線接口的DMA控制器的實現并進行仿真驗證

    本文實現的基于FPGAPCIe總線接口的DMA控制器是在Altera PHY IP和Synopsys Core IP的基礎上實現的,
    的頭像 發表于 01-11 10:57 ?1.3w次閱讀
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>PCIe</b>總線接口的<b class='flag-5'>DMA</b>控制器的<b class='flag-5'>實現</b>并進行仿真驗證

    Xilinx PCIe DMA子系統的性能測試

    本視頻介紹了設置和測試Xilinx PCIe DMA子系統性能的過程。
    的頭像 發表于 11-27 06:16 ?6366次閱讀

    基于AMD FPGAPCIE DMA邏輯實現

    AMD FPGA自帶PCIE硬核,實現PCIE協議,把串行數據轉換為并行的用戶數據,以UltraScale系列
    的頭像 發表于 06-09 09:34 ?1433次閱讀
    基于<b class='flag-5'>AMD</b> <b class='flag-5'>FPGA</b>的<b class='flag-5'>PCIE</b> <b class='flag-5'>DMA</b><b class='flag-5'>邏輯</b><b class='flag-5'>實現</b>

    PCIe控制器(FPGA或ASIC),PCIe-AXI-Controller

    Transaction Layer的所有功能特性,不僅內置DMA控制器,而且具備AXI4用戶接口,提供一個高性能,易于使用,可定制化的PCIe-AXI互連解決方案,同時適用于ASIC和FPGA
    的頭像 發表于 02-21 15:15 ?650次閱讀
    <b class='flag-5'>PCIe</b>控制器(<b class='flag-5'>FPGA</b>或ASIC),<b class='flag-5'>PCIe</b>-AXI-Controller

    Xilinx高性能PCIe DMA控制器IP,8個DMA通道

    基于PCI Express Integrated Block,Multi-Channel PCIe QDMA Subsystem實現了使用DMA地址隊列的獨立多通道、高性能Continous或
    的頭像 發表于 02-22 11:11 ?1103次閱讀
    Xilinx高性能<b class='flag-5'>PCIe</b> <b class='flag-5'>DMA</b>控制器IP,8個<b class='flag-5'>DMA</b>通道