0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于AMD FPGA的PCIE DMA邏輯實(shí)現(xiàn)

Comtech FPGA ? 來源:Comtech FPGA ? 2023-06-09 09:34 ? 次閱讀

一、AMD FPGA PCIE IP介紹

AMD FPGA自帶PCIE硬核,實(shí)現(xiàn)了PCIE協(xié)議,把串行數(shù)據(jù)轉(zhuǎn)換為并行的用戶數(shù)據(jù),以UltraScale系列FPGA為例,其支持Gen1.02.03.04.0,1~16 Lanes,如下圖所示:

b6df2f10-05ee-11ee-962d-dac502259ad0.png

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

b6f2ca66-05ee-11ee-962d-dac502259ad0.png

1.1 PCIE IP功能介紹

用戶接口采用AXI接口實(shí)現(xiàn)PCIE TLP報(bào)文收發(fā),從而完成PCIE傳輸事務(wù)的收發(fā),最終實(shí)現(xiàn)PCIE的各種數(shù)據(jù)傳輸模式,系統(tǒng)架構(gòu)如下圖所示:

b717ddb0-05ee-11ee-962d-dac502259ad0.png

圖左側(cè)為FPGA PCIE IP,實(shí)現(xiàn)了PCIE協(xié)議,其與用戶邏輯的數(shù)據(jù)交互主要通過AXI CQ,CC,RQ,RC四個(gè)接口,可以實(shí)現(xiàn)PCIE上行和下行的數(shù)據(jù)傳輸。

1.2 PCIE協(xié)議TLP報(bào)文介紹

使用PCIE IP用戶需要了解PCIE協(xié)議,至少了解TLP報(bào)文的構(gòu)造,如下圖所示為32位地址寫請(qǐng)求TLP報(bào)文:

b7379aec-05ee-11ee-962d-dac502259ad0.png

R:保留位,一般填0;

Fmt:報(bào)文長(zhǎng)度類型,指示當(dāng)前TLP報(bào)文是3DW長(zhǎng)度還是4DW長(zhǎng)度(此處主要是跟地址位寬相關(guān),PCIE協(xié)議可支持32位地址和64位地址);

Type:包類型,指示包括Mrd(讀數(shù)據(jù))、Mwr(寫數(shù)據(jù))、Cfg(配置PCIe)、Msg(消息事務(wù))、Cpl(讀地址數(shù)據(jù)請(qǐng)求后返回的數(shù)據(jù)包);

TC:傳輸優(yōu)先級(jí),數(shù)值越大表示優(yōu)先級(jí)越高;

Attr:包屬性,指示當(dāng)前包是順序或者是亂序,cache一致性等;

TH:PCIe V2.1 總線規(guī)范引入的一個(gè)重要功能。TLP 的發(fā)送端可以使用 TPH 信息,通知接收端即將訪問數(shù)據(jù)的特性,以便接收端合理地預(yù)讀和管理數(shù)據(jù),一般很少應(yīng)用;

TD:指示接收端是否需要做ECRC校驗(yàn);

EP:指示當(dāng)前TLP包的有效性;

AT:地址種類,與 PCIe 總線的地址轉(zhuǎn)換相關(guān);

Length:指示TLP長(zhǎng)度;

Requester ID:請(qǐng)求者ID,包括PCIe設(shè)備的總線號(hào)(Bus Number)、設(shè)備號(hào)(Device Number)和功能號(hào)(Function Number),通過該ID可以找到對(duì)應(yīng)的目標(biāo)設(shè)備;

Tag:數(shù)據(jù)包標(biāo)簽,可以指示當(dāng)前TLP數(shù)據(jù)包是屬于哪一組數(shù)據(jù)中分拆的數(shù)據(jù)塊;

Last DW BE:指示最后一個(gè)DW中有效的字節(jié),主要是針對(duì)在傳輸數(shù)據(jù)粒度比較小的情況,比如最小粒度為1字節(jié);

1st DW BE:指示第一個(gè)DW中有效的字節(jié)。

1.3 PCIE IP邏輯設(shè)計(jì)

用戶在實(shí)現(xiàn)PCIE數(shù)據(jù)傳輸功能時(shí)可通過上圖中AXI CQ,CC,RQ,RC四個(gè)接口來完成各種PCIE事務(wù)的數(shù)據(jù)收發(fā):

RQ:請(qǐng)求者請(qǐng)求接口,通常是主機(jī)向終端設(shè)備發(fā)送數(shù)據(jù)傳輸請(qǐng)求;

RC:請(qǐng)求者完成接口,通常是終端設(shè)備向主機(jī)發(fā)送需要的返回?cái)?shù)據(jù);

CQ:完成者請(qǐng)求接口,通常是終端設(shè)備向主機(jī)發(fā)送數(shù)據(jù)傳輸請(qǐng)求;

CC:完成者完成接口,通常是主機(jī)向終端設(shè)備發(fā)送需要的返回?cái)?shù)據(jù);

用戶需要通過這4個(gè)接口構(gòu)造TLP報(bào)文可以實(shí)現(xiàn)從主機(jī)到終端或者終端到主機(jī)的訪問請(qǐng)求和相應(yīng)的數(shù)據(jù)傳輸,下面是主機(jī)向終端發(fā)起寫數(shù)據(jù)請(qǐng)求的時(shí)序:

b7580afc-05ee-11ee-962d-dac502259ad0.png

用戶在邏輯設(shè)計(jì)時(shí)可以先通過右鍵IP生成一個(gè)example工程,工程里面就有構(gòu)造TLP報(bào)文的代碼,用戶可以在這個(gè)工程代碼上修改TLP報(bào)文的相關(guān)數(shù)據(jù)來實(shí)現(xiàn)具體的數(shù)據(jù)傳輸需求。

二、AMD PCIE DMA功能實(shí)現(xiàn)

AMD PCIE DMA功能主要是通過XDMAIP來實(shí)現(xiàn),其作用本質(zhì)上是通過這幾個(gè)接口實(shí)現(xiàn)PCIE DMA傳輸流程,用戶不需要關(guān)注PCIE TLP報(bào)文的構(gòu)造細(xì)節(jié),只需要通過XDMA的AXI接口完成數(shù)據(jù)傳輸即可,如下圖所示:

b772018c-05ee-11ee-962d-dac502259ad0.png

用戶只需關(guān)注AXI用戶接口的邏輯設(shè)計(jì),通過該接口就可以實(shí)現(xiàn)DMA傳輸。另外,AXI用戶接口包括MM接口和ST兩種接口,MM接口是可以直接對(duì)接內(nèi)存,其包括了地址控制,可以直接實(shí)現(xiàn)內(nèi)存讀寫。

2.1 XDMA AXI-MM接口實(shí)現(xiàn)DMA傳輸

AXI-MM接口的操作相對(duì)簡(jiǎn)單,其與用戶邏輯對(duì)接的接口為標(biāo)準(zhǔn)的AXI接口,包括了地址信息,可以直接對(duì)接內(nèi)存,最簡(jiǎn)單的方式就是例化一個(gè)AXI接口的RAM直接對(duì)接,PC端就可以直接訪問該RAM,如下圖所示:

b796baa4-05ee-11ee-962d-dac502259ad0.png

AXI-MM接口主要應(yīng)用場(chǎng)景是直接訪問FPGA內(nèi)存,但對(duì)于視頻流,采集數(shù)據(jù)流等場(chǎng)景,特別是需要用到多通道的場(chǎng)景通常采用ST接口會(huì)更加方便。 2.2 XDMA ST接口實(shí)現(xiàn)DMA傳輸

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

b7b04974-05ee-11ee-962d-dac502259ad0.png

S_AXIS_C2H是終端設(shè)備向主機(jī)發(fā)送數(shù)據(jù)接口,S_AXIS_H2C是主機(jī)向終端設(shè)備發(fā)送數(shù)據(jù)接口,均為AXI Stream接口,只實(shí)現(xiàn)數(shù)據(jù)流傳輸,典型特征是不傳輸?shù)刂罚?a target="_blank">端口如下圖所示:

b7d21586-05ee-11ee-962d-dac502259ad0.png

其時(shí)序跟上述PCIE IP的AXI接口類似,所以,通過XDMA的ST接口可以很方便實(shí)現(xiàn)數(shù)據(jù)流傳輸,只需要跟PC驅(qū)動(dòng)程序配對(duì)好地址和長(zhǎng)度信息,邏輯設(shè)計(jì)只需要通過ST接口收發(fā)數(shù)據(jù)。 2.3 DMA邏輯設(shè)計(jì)方法

邏輯與主機(jī)上層軟件實(shí)現(xiàn)DMA數(shù)據(jù)傳輸主要有查詢和中斷兩種方式,以ST接口為例,邏輯可以通過AXI LITE接口實(shí)現(xiàn)PC的寄存器訪問,PC可以通過查詢寄存器來確定是否可以啟動(dòng)DMA下發(fā)數(shù)據(jù),或者通過發(fā)起DMA獲取邏輯需要上傳的數(shù)據(jù),邏輯根據(jù)當(dāng)前數(shù)據(jù)需要上傳或者允許PC下發(fā)數(shù)據(jù)的具體情況來設(shè)置寄存器的狀態(tài)。

中斷模式首先要在例化XDMA IP時(shí)要選擇一個(gè)中斷,IP自動(dòng)生成一個(gè)可供用戶產(chǎn)生中斷的接口,時(shí)序如下圖所示:

b7f2e3f6-05ee-11ee-962d-dac502259ad0.png

用戶產(chǎn)生中斷的方法很簡(jiǎn)單,只需要拉高usr_irq_req,等待usr_irq_ack拉高即可產(chǎn)生中斷。需要注意的是當(dāng)usr_irq_ack拉高時(shí)用戶不能立刻把usr_irq_req拉低,因?yàn)榇丝滩荒艽_定PC已經(jīng)響應(yīng)并完成中斷處理,最簡(jiǎn)單的方式是設(shè)置一個(gè)清中斷寄存器,PC通過向這個(gè)寄存器寫1來通知邏輯,中斷事務(wù)已經(jīng)被處理完成。

另外,PCIE協(xié)議支持3種中斷:

INTx中斷:主要是為了兼容PCI設(shè)備,是電平觸發(fā)中斷;

MSI中斷:消息中斷,PCIE設(shè)備通過構(gòu)造對(duì)應(yīng)的中斷消息發(fā)送到主機(jī),從而觸發(fā)中斷;

MSI-X中斷:是MSI中斷的擴(kuò)展,可以通過中斷向量表的方式把中斷個(gè)數(shù)擴(kuò)展到2048個(gè);

當(dāng)PC啟動(dòng)DMA下發(fā)數(shù)據(jù)時(shí),XDMA IP會(huì)通過H2C接口向邏輯發(fā)送數(shù)據(jù),邏輯可以通過s_axis_h2c_tready信號(hào)來決定是否允許數(shù)據(jù)下發(fā);當(dāng)邏輯向PC上傳數(shù)據(jù)時(shí)可通過C2H接口向PC傳輸數(shù)據(jù),在發(fā)送數(shù)據(jù)前邏輯需要向PC產(chǎn)生一個(gè)中斷,PC檢測(cè)到中斷后就會(huì)啟動(dòng)DMA上傳數(shù)據(jù),邏輯側(cè)看到的是s_axis_c2h_tready信號(hào)拉高,說明邏輯可以開始通過C2H接口發(fā)送數(shù)據(jù)給PC。所以,整個(gè)DMA傳輸都是由PC發(fā)起的,無論是上傳還是下發(fā)數(shù)據(jù),邏輯只是被動(dòng)完成數(shù)據(jù)傳輸。

值得注意的是當(dāng)使用多通道DMA時(shí)每個(gè)通道的操作是完全獨(dú)立的,包括ST接口和中斷都是獨(dú)立的,相關(guān)的寄存器用戶最好也采用獨(dú)立的寄存器來實(shí)現(xiàn)與PC的交互。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1624

    文章

    21573

    瀏覽量

    600653
  • amd
    amd
    +關(guān)注

    關(guān)注

    25

    文章

    5406

    瀏覽量

    133725
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8372

    瀏覽量

    150561
  • PCIe
    +關(guān)注

    關(guān)注

    15

    文章

    1176

    瀏覽量

    82261
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    555

    瀏覽量

    100237

原文標(biāo)題:基于AMD FPGA的PCIE DMA邏輯實(shí)現(xiàn)

文章出處:【微信號(hào):Comtech FPGA,微信公眾號(hào):Comtech FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于PCIE(mcap)的部分可重構(gòu)實(shí)現(xiàn)方案

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

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

    利用XIlinx V6評(píng)估板ML605實(shí)現(xiàn)PCIE2.0,8通道主模式DMA數(shù)據(jù)傳輸,DMAFPGA發(fā)起,采用1GB DDR3作為
    發(fā)表于 04-25 12:48

    Xilinx PCIe Master DMA設(shè)計(jì)

    基于PCI Express的數(shù)據(jù)采集卡PCIe數(shù)據(jù)采集卡PCI Express數(shù)據(jù)采集卡本人在北京工作6年以上,從事FPGA外圍接口設(shè)計(jì),非常熟悉PCI Express協(xié)議,設(shè)計(jì)調(diào)試了多個(gè)基于PCI
    發(fā)表于 03-01 18:11

    PCIe DMA設(shè)計(jì)實(shí)現(xiàn)

    基于PCI Express的數(shù)據(jù)采集卡PCIe數(shù)據(jù)采集卡PCI Express數(shù)據(jù)采集卡在北京工作6年以上,從事FPGA外圍接口設(shè)計(jì),非常熟悉PCI Express協(xié)議,設(shè)計(jì)調(diào)試了多個(gè)基于PCI
    發(fā)表于 01-10 20:36

    關(guān)于PCIE DMA操作的一個(gè)疑問

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

    尋求fpga大牛開發(fā)一個(gè)簡(jiǎn)單的fpga pcie設(shè)備

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

    采用FPGA實(shí)現(xiàn)PCIe接口設(shè)計(jì)

    系列FPGA實(shí)現(xiàn)PCIe接口所涉及的硬件板卡參數(shù)、應(yīng)用層系統(tǒng)方案、DMA仲裁、PCIe硬核配置與讀寫時(shí)序等內(nèi)容。
    發(fā)表于 05-21 09:12

    如何通過PCIe進(jìn)行FPGA到PC的通信?

    嗨,我正在使用超大規(guī)模的FPGA板。我可以通過DMA子系統(tǒng)IP和DDR控制器IP將數(shù)據(jù)從PC傳輸?shù)紻DR。我打算在FPGA中進(jìn)行一些處理,然后更新數(shù)據(jù),以便PC可以讀取。如何通過PCIe
    發(fā)表于 05-08 09:40

    如何利用PCIe DMA總線實(shí)現(xiàn)一個(gè)基于FPGAPCIe 8位數(shù)據(jù)采集卡?

    PCIe總線通信過程是怎樣的?是什么原理?如何利用PCIe DMA總線實(shí)現(xiàn)一個(gè)基于FPGAPCIe
    發(fā)表于 09-17 07:16

    PCIE DMA例子

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

    基于FPGAPCIe總線接口的DMA控制器的實(shí)現(xiàn)并進(jìn)行仿真驗(yàn)證

    本文實(shí)現(xiàn)的基于FPGAPCIe總線接口的DMA控制器是在Altera PHY IP和Synopsys Core IP的基礎(chǔ)上實(shí)現(xiàn)的,
    的頭像 發(fā)表于 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'>實(shí)現(xiàn)</b>并進(jìn)行仿真驗(yàn)證

    Xilinx PCIe DMA子系統(tǒng)的性能測(cè)試

    本視頻介紹了設(shè)置和測(cè)試Xilinx PCIe DMA子系統(tǒng)性能的過程。
    的頭像 發(fā)表于 11-27 06:16 ?6420次閱讀

    基于AMD FPGAPCIE DMA邏輯實(shí)現(xiàn)

    AMD FPGA自帶PCIE硬核,實(shí)現(xiàn)PCIE協(xié)議,把串行數(shù)據(jù)轉(zhuǎn)換為并行的用戶數(shù)據(jù)
    的頭像 發(fā)表于 07-14 15:53 ?1389次閱讀
    基于<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'>實(shí)現(xiàn)</b>

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

    Transaction Layer的所有功能特性,不僅內(nèi)置DMA控制器,而且具備AXI4用戶接口,提供一個(gè)高性能,易于使用,可定制化的PCIe-AXI互連解決方案,同時(shí)適用于ASIC和FPGA。
    的頭像 發(fā)表于 02-21 15:15 ?741次閱讀
    <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個(gè)DMA通道

    基于PCI Express Integrated Block,Multi-Channel PCIe QDMA Subsystem實(shí)現(xiàn)了使用DMA地址隊(duì)列的獨(dú)立多通道、高性能Continous或
    的頭像 發(fā)表于 02-22 11:11 ?1250次閱讀
    Xilinx高性能<b class='flag-5'>PCIe</b> <b class='flag-5'>DMA</b>控制器IP,8個(gè)<b class='flag-5'>DMA</b>通道