日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

PCIe的DMA介紹

FPGA設計論壇 ? 來源:FPGA設計論壇 ? 作者:FPGA設計論壇 ? 2022-08-03 14:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在PCIE中有兩種數(shù)據(jù)傳輸方式:

DMA(Direct Memory Access),直接內(nèi)存訪問,在該模式下,數(shù)據(jù)傳送不是由CPU負責處理,而是由一個特殊的處理器DMA控制器來完成,因此占用極少的CPU資源。

PIO(Programmed Input-Output),可編程輸入輸出,在該模式下,數(shù)據(jù)傳送由CPU執(zhí)行I/O端口指令來按照字節(jié)或更大的數(shù)據(jù)單位來處理,占用大量的CPU資源,數(shù)據(jù)傳輸速度也大大低于DMA模式。舉例老說,在DMA方式下,如果copy文件的同時在播放mp3音樂,則不受絲毫影響;如果在PIO模式下,則會發(fā)現(xiàn)音樂聲時斷時續(xù),這是因為大部分CPU資源被文件傳輸占用。

所以,總的來說,使用DMA模式時,計算機的運行速度會比使用PIO模式快很多。

在xilinx中生成IP核后,工程文件夾下會有這兩個文件夾:

[Xilinx_PCIe_BMD] xilinx FPGA 開發(fā) pcie BMD DMA的verilog HDL源碼[example_design] xilinx pcie總線 pio模式下的控制器代碼。包含接收發(fā)送模塊,存儲模塊,控制模塊等。

1.DMA概念

DMA的英文拼寫是“Direct Memory Access”,漢語的意思就是直接內(nèi)存訪問。

內(nèi)存與內(nèi)存(外設)交換數(shù)據(jù)不經(jīng)過CPU。

使用DMA的好處就是它不需要CPU的干預而直接服務外設,這樣CPU就可以去處理別的事務,從而提高系統(tǒng)的效率,對于慢速設備,如UART,其作用只是降低CPU的使用率,但對于高速設備,如硬盤,它不只是降低CPU的使用率,而且能大大提高硬件設備的吞吐量。因為對于這種設備,CPU直接供應數(shù)據(jù)的速度太低。因CPU只能一個總線周期最多存取一次總線,而且對于ARM,它不能把內(nèi)存中A地址的值直接搬到B地址。它只能先把A地址的值搬到一個寄存器,然后再從這個寄存器搬到B地址。也就是說,對于ARM,要花費兩個總線周期才能將A地址的值送到B地址。而DMA就不同了,一般系統(tǒng)中的DMA都有突發(fā)(Burst)傳輸?shù)哪芰?,在這種模式下,DMA能一次傳輸幾個甚至幾十個字節(jié)的數(shù)據(jù),所以使用DMA能使設備的吞吐能力大為增強。

對于任何類型的DMA傳輸,我們都需要規(guī)定數(shù)據(jù)的起始源和目標地址。對于外設DMA的情況來說,外設的FIFO可以作為數(shù)據(jù)源或者目標端。當外設作為源端時,某個存儲器的位置(內(nèi)部或外部)則成為目標端地址。當外設作為目標端,存儲的位置(內(nèi)部或者外部)則成為源端地址

2.PCIe的DMA介紹

在PCIe中需要使用DMA的項目,一定要先看XAPP1052,里面包含一個DMA的參考設計,對初學者有極大的幫助。

XAPP1052中包含F(xiàn)PGA源代碼和驅(qū)動程序源代碼,其中FPGA源代碼最主要的文件為:

1、《TX_ENGINE.v》:是產(chǎn)生TLP包的邏輯,包含讀TLP請求用于DMA讀;寫TLP請求用于DMA寫;CPLD用于BAR空間讀。

2、《RX_ENGINE.v》:是解析TLP包的邏輯,包含讀TLP解析用于BAR空間讀、寫TLP解析用于BAR空間寫、CPLD解析用于DMA讀。

DMA分為讀和寫種操作,兩種操作在細節(jié)上不同。

這里先簡單介紹一下DMA讀過程:

1、驅(qū)動程序向操作系統(tǒng)申請一片物理連續(xù)的內(nèi)存;

2、主機向該地址寫入數(shù)據(jù);

3、主機將這個內(nèi)存的物理地址告訴FPGA;

4、FPGA向主機發(fā)起讀TLP請求—連續(xù)發(fā)出多個讀請求;

5、主機向FPGA返回CPLD包—連續(xù)返回多個CPLD;

6、FPGA取出CPLD包中的有效數(shù)據(jù);

7、FPGA發(fā)送完數(shù)據(jù)后通過中斷等形式通知主機DMA完成;

DMA寫過程如下:

1、驅(qū)動程序向操作系統(tǒng)申請一片物理連續(xù)的內(nèi)存;

2、主機將這個內(nèi)存的物理地址告訴FPGA;

3、FPGA向主機發(fā)起寫TLP請求,并將數(shù)據(jù)放入TLP包中—連續(xù)發(fā)出多個寫請求;

4、FPGA發(fā)送完數(shù)據(jù)后通過中斷等形式通知主機DMA完成;

5、主機從內(nèi)存中獲取數(shù)據(jù);

如果是參考XAPP1052,一定要注意幾點:

1.1連續(xù)內(nèi)存

申請的內(nèi)存一定要物理連續(xù)。DMA是直接對物理內(nèi)存—也就是實際的內(nèi)存條進行讀寫操作,必須為物理連續(xù)的內(nèi)存;而應用程序和驅(qū)動程序一般只能申請到邏輯上連續(xù)的內(nèi)存,在物理上不一定連續(xù)。XAPP1052中可以看到申請內(nèi)存上的一些特殊處理,目的就是獲取物理連續(xù)的內(nèi)存,可獲取4KB的物理連續(xù)內(nèi)存。但是XAPP1052在內(nèi)存處理上也存在一些問題,實驗尚可,應用則不行。如何獲取內(nèi)存的物理地址在XAPP1052中已經(jīng)有示范,可直接參考。

1.2將地址告訴FPGA

XAPP1052是在BAR空間開辟了一段專用地址存放DMA讀地址、DMA寫地址、DMA長度、TLP包大小等參數(shù),可直接參考。

1.3寫TLP請求

DMA寫的操作相對簡單,只需要FPGA單向發(fā)起寫TLP操作即可完成,至于有沒有真正寫入內(nèi)存一般不需要FPGA關心;而驅(qū)動程序需要等待一定時間讓數(shù)據(jù)正真寫入內(nèi)存—中斷處理的時間已經(jīng)足夠讓數(shù)據(jù)寫入內(nèi)存,所以也不必特別關心。

發(fā)起寫TLP請求可以連續(xù)發(fā)送,但是注意《TX_ENGINE.v》中要處理讀TLP請求、寫TLP請求和CPLD,所以有時會遇到三種請求競爭的情況。如果想要提高DMA的效率可以重新設定三種請求的優(yōu)先級。

1.4讀TLP請求

DMA讀的操作相對復雜,需要FPGA向主機發(fā)出讀請求,主機再返回數(shù)據(jù)。FPGA控制邏輯必須計算發(fā)起了多少個讀TLP請求,再計算收到的數(shù)據(jù)是否足夠。

一般來說FPGA可以一次發(fā)送所有的讀請求,然后按照順序接收數(shù)據(jù)即可。但是某些主板并不一定是按照請求的順序返回數(shù)據(jù)的情況,可能后發(fā)出的請求先返回數(shù)據(jù),屬于主機亂序執(zhí)行的現(xiàn)象。要么FPGA一次只發(fā)一個讀請求,等數(shù)據(jù)收到了再發(fā)現(xiàn)一個讀請求—但是效率就對不起了;要么對亂序情況進行特殊處理,XAPP1052還沒有解決該問題。

1.5特殊參數(shù)

TLP包中有很多參數(shù),例如:TC、ATTR等等,如果不了解的話,千萬不要隨意修改,與參考設計保持一致即可,否則很容易導致藍屏。

1.6 DMA通道

XAPP1052中只實現(xiàn)了一個DMA讀通道和一個DMA寫通道。對于很多應用,例如兩路視頻采集,需要兩路DMA寫通道:要么把兩路數(shù)據(jù)按照一定的格式整合為一個流;要么實現(xiàn)兩路DMA寫通道,XAPP1052不能直接實現(xiàn)。

1.7數(shù)據(jù)流量

XAPP1052整個方案的效率并不高,數(shù)據(jù)流量非常有限。數(shù)據(jù)量較少時倒是夠用,數(shù)據(jù)量大了會發(fā)現(xiàn)CPU使用率非常高,占用一個CPU核心,但是還會丟數(shù)據(jù)。主要原因是XAPP1052一次DMA的總長度為4KB,每一次DMA完成必須以中斷形式通知驅(qū)動程序,驅(qū)動程序再配置下一次DMA。從FPGA角度來說,已經(jīng)做到“盡力”了,但是數(shù)據(jù)量一大CPU不停的進入中斷,時間全部浪費在處理中斷上了,而且CPU使用率非常高。

審核編輯:彭靜

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

    關注

    16

    文章

    1483

    瀏覽量

    88978
  • dma
    dma
    +關注

    關注

    3

    文章

    582

    瀏覽量

    106303
  • 源代碼
    +關注

    關注

    96

    文章

    2953

    瀏覽量

    70698

原文標題:PCIE之DMA

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    PCIe校時卡 B碼-PCIe授時卡 雙模pcie時統(tǒng)卡發(fā)貨視頻

    PCIe
    jf_47371611
    發(fā)布于 :2026年04月23日 17:54:15

    pcie總線授時時碼卡#時統(tǒng)卡 #時碼卡 #pcie總線授時 #cpci授時卡

    PCIE總線
    知道點啥
    發(fā)布于 :2026年03月24日 14:03:44

    CPCI或pcie總線時統(tǒng)卡# 授時卡# 時統(tǒng)卡# pcie總線授時

    PCIE總線
    知道點啥
    發(fā)布于 :2026年03月24日 13:58:59

    DMA(Direct Memory Access)的具體原理和實現(xiàn)方法是什么

    ] PCIe 端點使用系統(tǒng) DMApcie_ep_dma_xfer() 用系統(tǒng) DMA 在“映射的主機內(nèi)存”和本地設備內(nèi)存之間搬運數(shù)據(jù),本質(zhì)上也是配置
    發(fā)表于 02-12 10:16

    CW32L052 DMA直接內(nèi)存訪問介紹

    CW32L052 DMA直接內(nèi)存訪問概述CW32L052支持DMA(Direct Memory Access),即直接內(nèi)存訪問,無需CPU干預,實現(xiàn)高速數(shù)據(jù)傳輸。數(shù)據(jù)的傳輸可以發(fā)生在: 外設和內(nèi)存
    發(fā)表于 12-12 07:21

    Xilinx高性能低延時8通道PCIe-DMA控制器IP,SGDMA,QDMA,CDMA,RDMA, V4L2驅(qū)動,高速視頻采集, 高速AD采集

    Multi-ChannelHigh Performance PCIe QDMA&RDMA IP1 介紹基于PCI Express Integrated Block
    發(fā)表于 12-11 11:07

    Xilinx高性能NVMe Host控制器IP+PCIe 3.0軟核控制器IP,純邏輯實現(xiàn),AXI4和AXI4-Stream DMA接口,支持PCIe 3.0和4.0

    NVMe AXI4 Host Controller IP1介紹NVMe AXI4 Host Controller IP可以連接高速存儲PCIe SSD,無需CPU,自動加速處理所有的NVMe協(xié)議命令
    發(fā)表于 11-14 22:40

    芯源的直接內(nèi)存訪問(DMA)技術介紹

    芯片內(nèi)置 DMA 控制器,4 條獨立通道,外設和存儲器之間、外設和外設之間、存儲器和存儲器之間的高速數(shù) 據(jù)傳輸。 每個 DMA 通道都通過專用的硬件連接 DMA 請求,并支持獨立的軟件觸發(fā),支持
    發(fā)表于 11-12 07:40

    雙Zynq MPSoC PS側(cè)PCIe高速DMA互連解決方案

    在涉及Xilinx Zynq UltraScale+ MPSoC的項目中,實現(xiàn)設備間高速、低延遲的數(shù)據(jù)傳輸往往是核心需求之一。PCIe(尤其PS側(cè))結(jié)合DMA(直接內(nèi)存訪問)正是滿足這類需求的理想技術方案。
    的頭像 發(fā)表于 10-22 13:53 ?4148次閱讀
    雙Zynq MPSoC PS側(cè)<b class='flag-5'>PCIe</b>高速<b class='flag-5'>DMA</b>互連解決方案

    FPGA利用DMA IP核實現(xiàn)ADC數(shù)據(jù)采集

    本文介紹如何利用FPGA和DMA技術處理來自AD9280和AD9708 ADC的數(shù)據(jù)。首先,探討了這兩種ADC的特點及其與FPGA的接口兼容性。接著,詳細說明了使用Xilinx VIVADO環(huán)境下
    的頭像 發(fā)表于 07-29 14:12 ?5361次閱讀

    基于AMD Versal器件實現(xiàn)PCIe5 DMA功能

    Versal是AMD 7nm的SoC高端器件,不僅擁有比16nm性能更強的邏輯性能,并且其PS系統(tǒng)中的CPM PCIe也較上一代MPSoC PS硬核PCIe單元強大得多。本節(jié)將基于AMD官方開發(fā)板展示如何快速部署PCIe5x8
    的頭像 發(fā)表于 06-19 09:44 ?2049次閱讀
    基于AMD Versal器件實現(xiàn)<b class='flag-5'>PCIe</b>5 <b class='flag-5'>DMA</b>功能

    第十五章 DMA

    本章介紹DMA(直接存儲器存取),其可在不占用CPU的情況下搬數(shù)據(jù),支持多種傳輸方向,含控制器、通道等配置及相關實驗代碼。
    的頭像 發(fā)表于 06-14 16:32 ?1606次閱讀
    第十五章 <b class='flag-5'>DMA</b>

    nvme IP開發(fā)之PCIe

    PCIe 體系結(jié)構(gòu) 常見的PCIe總線系統(tǒng)結(jié)構(gòu)如圖1所示,其中主要包含三種設備,分別是根復合體(RootComplex,RC)、Switch 和終端設備(EndPoint,EP)。 圖1 PCIe
    發(fā)表于 05-17 14:54
    同心县| 厦门市| 加查县| 沅江市| 桂林市| 基隆市| 涡阳县| 那坡县| 岳池县| 元阳县| 策勒县| 兴宁市| 西乌珠穆沁旗| 淳化县| 定安县| 五寨县| 松潘县| 阿城市| 丹凤县| 泸州市| 阳朔县| 扬州市| 西城区| 临江市| 梁河县| 灵石县| 资溪县| 罗平县| 靖边县| 宝坻区| 崇阳县| 余干县| 南昌市| 莱阳市| 灌云县| 顺义区| 康乐县| 虹口区| 旺苍县| 涿州市| 信宜市|