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

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

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

PCIE XDMA開發(fā)環(huán)境搭建以及環(huán)路測試

FPGA設(shè)計論壇 ? 來源:FPGA設(shè)計論壇 ? 2025-01-13 09:38 ? 次閱讀

1.1 課程介紹

這一章開始主要介紹 XILINX FPGA PICE IP XDMA IP的使用。XDMA IP使用部分教程LINUX 篇和WINDOWS篇兩個部分。通過實戰(zhàn),面向應用,提供給大家 XILINX FPGA PCIE 應用解決方案。

本教程以MZ7035FA作為樣機測試。在正式開始教程內(nèi)容前,有必要把MZ7035FA開發(fā)板的特點說明下。這是一款高性價比的FPGA開發(fā)板。帶PCIE接口,SFP通信接口,3路千兆以太網(wǎng)口,2路SATA接口,1路HDMI輸出,1路串口,1路TF卡接口。支持MSXBO(米聯(lián)客)FEP標準擴展接口。采用的CPU型號為XC7Z035-FFG676。PL端搭載32bit 1024MB DDR3內(nèi)存,PS端搭載32bit 1024MB DDR3內(nèi)存,F(xiàn)PGA讀寫DDR支持的最大數(shù)據(jù)時鐘為1600M,可以進行很多復雜的開發(fā)任務。

1.2 XDMA 概述

Xilinx 提供的DMASubsystem for PCIExpressIP是一個高性能,可配置的適用于PCIE2.0,PCIE3.0 的SG 模式 DMA,提供用戶可選擇的 AXI4 接口或者 AXI4-Stream接口。一般情況下配置成 AXI4 接口可以加入到系統(tǒng)總線互聯(lián),適用于大數(shù)據(jù)量異步傳輸,通常情況都會使用到 DDR,AXI4-Stream 接口適用于低延遲數(shù)據(jù)流傳輸。

XDMA 是SGDMA,并非Block DMA,SG 模式下,主機會把要傳輸?shù)臄?shù)據(jù)組成鏈表的形式,然后將鏈表首地址通過BAR 傳送給XDMA,XDMA 會根據(jù)鏈表結(jié)構(gòu)首地址依次完成鏈表所指定的傳輸任務。

dd0ba102-cf08-11ef-9310-92fbcf53809c.png

1.3 XDMA 提供如下接口:

AXI4、AXI4-Stream,必須選擇其中一個,用來數(shù)據(jù)傳輸

AXI4-Lite Master,可選,用來實現(xiàn)PCIE BAR 地址到AXI4-Lite 寄存器地址的映射,可用來讀寫用戶邏輯寄

存器

AXI4-Lite Slave,可選,用來將XDMA 內(nèi)部寄存器開放給用戶邏輯,用戶邏輯可以通過此接口訪問XDMA

內(nèi)部寄存器,不會映射到BAR

AXI4 Bypass 接口,可選,用來實現(xiàn)PCIE 直通用戶邏輯訪問,可用于低延遲數(shù)據(jù)傳輸

1.4 XDMA IP 配置

Mode:配置模式,選擇 Advanced 高級配置

Lane Width:MZ7035 支持X4

Max Link Speed:選擇5.0GT/s 即PCIE2.0

Reference Clock :100MHZ,參考時鐘 100M

DMA Interface Option:接口選擇 AXI4 接口

AXI Data Width:128bit,即 AXI4 數(shù)據(jù)總線寬度為128bit

AXI Clock :125M,即AXI4 接口時鐘為 125MHZ

dd23845c-cf08-11ef-9310-92fbcf53809c.png

PCIE ID 配置

我們配置成Memory controller 讓IP 自動選擇VID 等

dd36b66c-cf08-11ef-9310-92fbcf53809c.png

PCIE BAR 配置,這里面的配置比較重要

首先使能PCIE to AXI Lite Master Interface ,這樣可以在主機一側(cè)通過PCIE 來訪問用戶邏輯側(cè)寄存器或者其他AXI4-Lite 總線設(shè)備

映射空間選擇 1M,當然用戶也可以根據(jù)實際需要來自定義大小。

PCIE to AXI Translation:這個設(shè)置比較重要,通常情況下,主機側(cè)PCIE BAR 地址與用戶邏輯側(cè)地址是不一樣的,這個設(shè)置就是進行BAR 地址到AXI 地址的轉(zhuǎn)換,比如主機一側(cè) BAR 地址為0,IP 里面轉(zhuǎn)換設(shè)置為0x80000000,則主機訪問 BAR 地址0 轉(zhuǎn)換到AXI LIte 總線地址就是0x80000000

PCIE to DMA Interface :選擇64bit 使能

DMA Bypass 暫時不用

dd4dfe62-cf08-11ef-9310-92fbcf53809c.png

PCIE 中斷設(shè)置

User Interrupts:用戶中斷,XDMA 提供16 條中斷線給用戶邏輯,這里面可以配置使用幾條中斷線。

Legacy Interrupt:XDMA 支持 Legacy 中斷

選擇MSI 中斷

注意:MSI 中斷和 MSI-X 中斷只能選擇一個,否則會報錯,如果選擇了 MSI 中斷,則可以選擇 Legacy 中斷,如果選擇了 MSI-X 中斷,那么 MSI 必須取消選擇,同時Legacy 也必須選擇None。此 IP 對于7 系列設(shè)置有這么個問題,如果使用Ultrascale 系列,則可以全部選擇

dd65c736-cf08-11ef-9310-92fbcf53809c.png

配置DMA 相關(guān)內(nèi)容

Number of DMA Read Channel(H2C)和Number of DMA Write Channel(C2H)通道數(shù),對于PCIE2.0 來說最大只能選擇 2,也就是 XDMA 可以提供最多兩個獨立的寫通道和兩個獨立的讀通道,獨立的通道對于實際應用中有很大的作用,在帶寬允許的前提前,一個PCIE 可以實現(xiàn)多種不同的傳輸功能,并且互不影響。這里我們選擇1

Number of Request IDs for Read (Write)channel :這個是每個通道設(shè)置允許最大的 outstanding 數(shù)量,按照默認即可

dd7be4e4-cf08-11ef-9310-92fbcf53809c.png

配置完成以后,點擊Run Block Auto,可以看到之前的配置信息,如果有發(fā)現(xiàn)和目標配置不一樣的,需要手動修改,點擊OK,完成配置

dd914d52-cf08-11ef-9310-92fbcf53809c.png

ddad736a-cf08-11ef-9310-92fbcf53809c.png

配置完成以后,VIVADO 會自動進行必要的連接

ddbb43fa-cf08-11ef-9310-92fbcf53809c.png

到此為止,XDMA IP 配置就完成了只要再進行時鐘和 GTP 約束即可。

1.5 MIG 7 SERIES 的配置

Step1:任單擊 IP Catalog,選取 Memory Interface Generator(MIG 7 series)IP 添加到 Block design。雙擊 MIG 7 SERIES ,對這個 IP 進行配置。

ddd8355a-cf08-11ef-9310-92fbcf53809c.png

雙擊生成的IP核

dde32e38-cf08-11ef-9310-92fbcf53809c.png

單擊NEXT

ddf7f804-cf08-11ef-9310-92fbcf53809c.png

繼續(xù)單擊NEXT

de0aaa44-cf08-11ef-9310-92fbcf53809c.png

選擇DDR3 單擊NEXT

de245cfa-cf08-11ef-9310-92fbcf53809c.png

設(shè)置MIG 內(nèi)核時鐘頻率為、內(nèi)存型號、內(nèi)存的數(shù)據(jù)位寬

de443d72-cf08-11ef-9310-92fbcf53809c.png

設(shè)置MIG AXI4 最大支持的位寬,對于2片DDR 最大位寬為256bit

de6412be-cf08-11ef-9310-92fbcf53809c.png

設(shè)置輸入頻率

de7a379c-cf08-11ef-9310-92fbcf53809c.png

系統(tǒng)和參考時鐘時鐘選擇no buffer,MIG低電平復位

de935c0e-cf08-11ef-9310-92fbcf53809c.png

Step9:終端阻抗選擇50hms,設(shè)置DCI

deb3aec8-cf08-11ef-9310-92fbcf53809c.png

選擇Fixed Pin Out

decdd24e-cf08-11ef-9310-92fbcf53809c.png

根據(jù)原理圖手動填寫PIN 腳定義,或者選擇Read XDC/UCF直接讀入pin腳定義,本課程下提供了MZ7035.ucf 的DDR 配置文件,直接讀入既可。

dee2adea-cf08-11ef-9310-92fbcf53809c.png

填寫完成后,先單擊Validate再單擊NEXT

deff0fd0-cf08-11ef-9310-92fbcf53809c.png

繼續(xù)單擊NEXT

df2418c0-cf08-11ef-9310-92fbcf53809c.png

繼續(xù)單擊NEXT

df31b5de-cf08-11ef-9310-92fbcf53809c.png

繼續(xù)單擊NEXT

df53b530-cf08-11ef-9310-92fbcf53809c.png

繼續(xù)單擊NEXT

df633d48-cf08-11ef-9310-92fbcf53809c.png

最后單擊Generate,至此MIG的配置完成

df7baf5e-cf08-11ef-9310-92fbcf53809c.png

1.6基礎(chǔ)測試系統(tǒng)搭建

我們的測試目標是進行PCIE AXI4總線與外設(shè)進行讀寫操作,PCIE AXI4-Lite 總線進行用戶邏輯寄存器或者其他 AXI4-Lite 總線設(shè)備訪問操作。AXI4總線上掛載到MIG控制器DDR上去,實現(xiàn)對DDR的讀寫控制。

為此搭建系統(tǒng)為下圖所示:

df92039e-cf08-11ef-9310-92fbcf53809c.png

進行地址分配:

這里我們把掛在M_AXI上的DDR地址分配從0開始(對于widnows系統(tǒng)必須為0), M_AXI是需要進行DMA操作的。而M_AXI_LITE掛載的BRAM是需要進行BAR空間操作,所以地址設(shè)置為0x80000000和XMDA IP里面設(shè)置的地址對應。

dfac3408-cf08-11ef-9310-92fbcf53809c.png

1.7LINUX下驅(qū)動程序編譯安裝測試1.7.1 驅(qū)動編譯和安裝(下必須重新編譯)

官方驅(qū)動包選擇 2017 版本以后的,注意 2016 版本的有 BUG?。?!

在終端進入到xdma 目錄,輸入make ,進行驅(qū)動編譯

dfbf257c-cf08-11ef-9310-92fbcf53809c.png

執(zhí)行以下指令:

- Change directory to the driver directory.

cd driver

- Compile the kernel module driver.

make

- Change directory to the tests directory.

cd tests

- Compile the provided example software.

make

- Copy the provided driver rules from the etc directory to the

/etc/ directory on your system.

cp ../etc/udev/rules.d/* /etc/udev/rules.d/

關(guān)于驅(qū)動加載,這里有兩點要說明一下,首先是在驅(qū)動加載之前,如果檢測到系統(tǒng)中已經(jīng)加載過驅(qū)動,那么它會將已經(jīng)加載的驅(qū)動卸載,然后再加載。然后就是PCIe DMA的工作方式可以通過加載驅(qū)動傳輸參數(shù)進行修改。默認情況下DMA工作在中斷模式,可以通過修改load_driver.sh腳本改為輪循模式如下圖所示,但是可能驅(qū)動有問題,實際測試輪詢模式有些程序無法正常執(zhí)行,所以建議大家不要使用輪詢模式。

dfdaf7d4-cf08-11ef-9310-92fbcf53809c.png

在準備加載驅(qū)動前,確保你的開發(fā)板已經(jīng)下載PCIE工程的bit文件,而且已經(jīng)重啟過電腦。好了,現(xiàn)在加載驅(qū)動。

./load_driver.sh

如下顯示驅(qū)動安裝成功

dff26e8c-cf08-11ef-9310-92fbcf53809c.png

在終端執(zhí)行命令:

./dma_from_device -d /dev/xdma0_c2h_0 -f ./test.bin-s 4096-a 0 -c 1

e00730ec-cf08-11ef-9310-92fbcf53809c.png

./dma_to_device -d /dev/xdma0_h2c_0 -f ./test.bin-s 4096-a0-c 1

e048d920-cf08-11ef-9310-92fbcf53809c.png

-d:device 設(shè)備.

-f:file 文件

-s:size 大小

-a:addr 起始地址

-c:count

這兩個操作分別是從板卡讀 4096 Bytes 數(shù)據(jù)到文件 test.bin 以及從 test.bin 讀出4096 Bytes 數(shù)據(jù)發(fā)送給板卡。

原文鏈接;

https://openatomworkshop.csdn.net/674532733a01316874d81597.html

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

    關(guān)注

    15

    文章

    1244

    瀏覽量

    82859
  • 環(huán)路測試
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    5923

原文標題:PCIE XDMA 開發(fā)環(huán)境搭建以及環(huán)路測試

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    【米爾-Xilinx XC7A100T FPGA開發(fā)板試用】+02.PCIE接口測試(zmj)

    通信速率可高達 5G bit 帶寬。本例程中通過利用 XILINX 的 XDMA IP 來實現(xiàn) PCIE 的發(fā)送和接收速度測試。 1.1參考電路 米爾-Xilinx XC7A100T FPGA
    發(fā)表于 11-12 16:05

    ZYNQ調(diào)用XDMA PCIE IP同時讀寫PS DDR,導致藍屏問題。

    你好!我在ZYNQ 7015里(或者7035)調(diào)用XDMA PCIE IP 從上位機HOST PC通過PCIE接口給ZYNQ的PS DDR發(fā)送數(shù)據(jù)(XDMA
    發(fā)表于 11-21 10:35

    開發(fā)環(huán)境搭建教程

    android Windows系統(tǒng)下開發(fā)環(huán)境搭建
    發(fā)表于 03-22 17:42 ?0次下載

    本地測試環(huán)境搭建

    本文主要介紹了本地測試環(huán)境搭建搭建一個本地測試環(huán)境無疑是個明智的選擇,再結(jié)合GitHub、Jen
    的頭像 發(fā)表于 01-31 16:01 ?2890次閱讀
    本地<b class='flag-5'>測試</b><b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>

    測試環(huán)境搭建和維護_軟硬件測試環(huán)境

     測試環(huán)境搭建,每個公司都有不一樣的流程和方法。一種是運維或者開發(fā)負責搭建和維護,另一種是測試
    的頭像 發(fā)表于 01-31 18:30 ?6864次閱讀
    <b class='flag-5'>測試</b><b class='flag-5'>環(huán)境</b>的<b class='flag-5'>搭建</b>和維護_軟硬件<b class='flag-5'>測試</b><b class='flag-5'>環(huán)境</b>

    搭建測試環(huán)境常用linux命令_linux下web測試環(huán)境搭建

    本文主要介紹的是搭建測試環(huán)境常用的一些linux命令以及linux下web測試環(huán)境
    的頭像 發(fā)表于 01-31 18:41 ?1.2w次閱讀
    <b class='flag-5'>搭建</b><b class='flag-5'>測試</b><b class='flag-5'>環(huán)境</b>常用linux命令_linux下web<b class='flag-5'>測試</b><b class='flag-5'>環(huán)境</b>的<b class='flag-5'>搭建</b>

    arm的開發(fā)環(huán)境有哪些_使用Eclipse搭建ARM架構(gòu)MCU開發(fā)環(huán)境

    本文主要介紹了關(guān)于arm的開發(fā)環(huán)境有哪些以及使用Eclipse搭建ARM架構(gòu)MCU開發(fā)環(huán)境。Ec
    的頭像 發(fā)表于 02-01 16:19 ?2w次閱讀

    如何搭建鴻蒙開發(fā)環(huán)境

    開發(fā)某一個平臺的程序,那么首先要搭建出本地開發(fā)環(huán)境,那么如何搭建鴻蒙開發(fā)
    的頭像 發(fā)表于 02-24 11:25 ?3808次閱讀
    如何<b class='flag-5'>搭建</b>鴻蒙<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>

    Digispark開發(fā)環(huán)境搭建

    Digispark開發(fā)環(huán)境搭建
    發(fā)表于 11-15 20:51 ?16次下載
    Digispark<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>

    STM32 搭建開發(fā)環(huán)境

    STM32 搭建開發(fā)環(huán)境
    發(fā)表于 12-08 14:36 ?20次下載
    STM32 <b class='flag-5'>搭建</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>

    XDMA/PCIE IP的定制和Block Design的搭建

    IP,基于這些IP我們設(shè)置不需要知道TLP包的組包原理我們便可以把PCIE使用起來。這篇博客我們主要把FPGA作為endpoint來進行講解,當然也對作為root port進行簡單的描述。我們使用的主要IP是XDMA,主要參考資料是米聯(lián)客。如果對IP的使用感覺到疑惑可以
    的頭像 發(fā)表于 06-01 15:52 ?1.2w次閱讀

    高頻探針如何搭建測試環(huán)境及下針

    在高頻測試領(lǐng)域,搭建適合的測試環(huán)境以及正確下針對于確保準確的測量結(jié)果至關(guān)重要。
    的頭像 發(fā)表于 05-29 18:25 ?1425次閱讀

    基于FPGA的PCIE通信測試

    本文介紹一個FPGA開源項目:PCIE通信。該工程圍繞Vivado軟件中提供的PCIE通信IP核XDMA IP建立。Xilinx提供了XDMA的開源驅(qū)動程序,可在Windows系統(tǒng)或者
    的頭像 發(fā)表于 09-04 16:45 ?3400次閱讀
    基于FPGA的<b class='flag-5'>PCIE</b>通信<b class='flag-5'>測試</b>

    PyTorch深度學習開發(fā)環(huán)境搭建指南

    PyTorch作為一種流行的深度學習框架,其開發(fā)環(huán)境搭建對于深度學習研究者和開發(fā)者來說至關(guān)重要。在Windows操作系統(tǒng)上搭建PyTorc
    的頭像 發(fā)表于 07-16 18:29 ?1155次閱讀

    如何搭建企業(yè)AI開發(fā)環(huán)境

    搭建企業(yè)AI開發(fā)環(huán)境是一個復雜而細致的過程,涉及硬件選擇、操作系統(tǒng)配置、軟件安裝、工具選用以及實踐等多個方面。下面,AI部落小編將詳細介紹如何搭建
    的頭像 發(fā)表于 12-20 10:37 ?176次閱讀