色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

PCIe的DMA介紹

FPGA設計論壇 ? 來源:FPGA設計論壇 ? 作者:FPGA設計論壇 ? 2022-08-03 14:15 ? 次閱讀

在PCIE中有兩種數據傳輸方式:

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

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

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

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

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

1.DMA概念

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

內存與內存(外設)交換數據不經過CPU。

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

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

2.PCIe的DMA介紹

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

XAPP1052中包含FPGA源代碼和驅動程序源代碼,其中FPGA源代碼最主要的文件為:

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

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

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

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

1、驅動程序向操作系統申請一片物理連續的內存;

2、主機向該地址寫入數據;

3、主機將這個內存的物理地址告訴FPGA;

4、FPGA向主機發起讀TLP請求—連續發出多個讀請求;

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

6、FPGA取出CPLD包中的有效數據;

7、FPGA發送完數據后通過中斷等形式通知主機DMA完成;

DMA寫過程如下:

1、驅動程序向操作系統申請一片物理連續的內存;

2、主機將這個內存的物理地址告訴FPGA;

3、FPGA向主機發起寫TLP請求,并將數據放入TLP包中—連續發出多個寫請求;

4、FPGA發送完數據后通過中斷等形式通知主機DMA完成;

5、主機從內存中獲取數據;

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

1.1連續內存

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

1.2將地址告訴FPGA

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

1.3寫TLP請求

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

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

1.4讀TLP請求

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

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

1.5特殊參數

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

1.6 DMA通道

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

1.7數據流量

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

審核編輯:彭靜

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

    關注

    15

    文章

    1234

    瀏覽量

    82586
  • dma
    dma
    +關注

    關注

    3

    文章

    560

    瀏覽量

    100549
  • 源代碼
    +關注

    關注

    96

    文章

    2945

    瀏覽量

    66730

原文標題:PCIE之DMA

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

收藏 人收藏

    評論

    相關推薦

    PCIe熱插拔機制介紹

    前言本文主要講述PCIe熱插拔機制,通過圖形方式方便讀者快速掌握。 一、概述 如果在PCIe設備不支持熱插拔的條件下,在不斷電的情況下插拔一塊PCIe SSD時,很可能會對主板或PCIe
    的頭像 發表于 11-20 09:07 ?343次閱讀
    <b class='flag-5'>PCIe</b>熱插拔機制<b class='flag-5'>介紹</b>

    DMA是什么?詳細介紹

    DMA(Direct Memory Access)是一種允許某些硬件子系統直接訪問系統內存的技術,而無需中央處理單元(CPU)的介入。這種技術可以顯著提高數據傳輸速率,減輕CPU的負擔,并提高整體
    的頭像 發表于 11-11 10:49 ?4611次閱讀

    PCIe插槽竟然能玩出花樣?多個最新PCIe擴展硬盤方式!#PCIe擴展 #PCIe #硬盤盒

    硬盤PCIe
    ICY DOCK硬盤盒
    發布于 :2024年07月11日 17:21:28

    PCIE的BAR空間介紹

    PCIE是一種高速串行總線接口標準,用于連接計算機內部的各種外設和組件。在PCIe架構中,BAR(Base Address Register)空間是用于映射I/O端口或內存地址空間的一組寄存器。
    的頭像 發表于 04-22 11:00 ?4314次閱讀

    高性能NVMe主機控制器,Xilinx FPGA PCIe 3

    NVMe Host Controller IP1介紹NVMe Host Controller IP可以連接高速存儲PCIe SSD,無需CPU和外部存儲器,自動加速處理所有的NVMe協議命令,具備
    發表于 04-20 14:41

    基于安路PCIe SGDMA高速數據傳輸方案

    安路科技提供基于PCIe 硬核控制器開發的SGDMA IP。SGDMA可作為一個PCIe2AXI4系列接口的橋或者一個高性能DMA使用。
    的頭像 發表于 04-08 14:29 ?662次閱讀
    基于安路<b class='flag-5'>PCIe</b> SGDMA高速數據傳輸方案

    8路SDI/HDMI/MIPI/PCIe-DMA音視頻采集,V4L2驅動應用介紹

    基于PCIe的多路視頻采集與顯示子系統1 概述視頻采集與顯示子系統可以實時采集多路視頻信號,并存儲到視頻采集隊列中,借助高效的硬實時視頻幀出入隊列管理和PCIe C2H DMA引擎,將采集到的視頻幀
    發表于 03-13 13:59

    Xilinx FPGA NVMe主機控制器IP,高性能版本介紹應用

    NVMe Host Controller IP1介紹NVMe Host Controller IP可以連接高速存儲PCIe SSD,無需CPU和外部存儲器,自動加速處理所有的NVMe協議命令,具備
    發表于 03-09 13:56

    Xilinx FPGA 1/4/8通道PCIe-DMA控制器IP,高性能應用介紹

    Multi-ChannelPCIe QDMA&RDMA IP1 介紹基于PCI Express Integrated Block,Multi-Channel PCIe QDMA
    發表于 03-07 13:54

    基于 PCIe 的多路視頻采集與顯示子系統介紹

    電子發燒友網站提供《基于 PCIe 的多路視頻采集與顯示子系統介紹.pdf》資料免費下載
    發表于 02-23 09:47 ?0次下載

    Multi-Channel PCIe QDMA&RDMA IP應用介紹

    基于PCI Express Integrated Block,Multi-Channel PCIe QDMA Subsystem實現了使用DMA地址隊列的獨立多通道、高性能Continous或
    發表于 02-22 14:34 ?1次下載

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

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

    PCIe-AXI-Cont用戶手冊

    Transaction layer的所有功能特性,不僅內置DMA控制器,而且具備AXI4用戶接口,提供一個高性能,易于使用,可定制化的PCIe-AXI互連解決方案,同時適用于ASIC和FPGA。
    發表于 02-22 09:15 ?3次下載

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

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

    dma和串口直接發送的區別

    DMA(Direct Memory Access)和串口直接發送是兩種不同的數據傳輸方式,它們在實現上有著明顯的區別和優劣勢。本文將詳細介紹DMA和串口直接發送的原理、優缺點以及適用場景。 首先
    的頭像 發表于 01-07 17:43 ?2874次閱讀
    主站蜘蛛池模板: 黑人猛挺进小莹的体内视频| 久久久久久久久a免费| 久久九九日本韩国精品| 牛牛在线国产精品| 香港成人社区| 99久久国产露脸精品国产吴梦梦| 国产超碰人人爱被IOS解锁| 久99re视频9在线观看| 强开少妇嫩苞又嫩又紧九色| 亚洲精品久久久久久久蜜臀老牛| 99久久99久久久精品久久| 国产欧美精品一区二区色综合 | 耽美肉文 高h失禁| 久九九精品免费视频| 色屁屁影院| 中文字幕在线观看| 国产麻豆剧果冻传媒免费网站 | 2017最新伦理伦理片67| 国产高清免费观看| 凌馨baby| 亚洲精品久久久久久蜜臀| 成年性生交大片免费看| 久久人人爽人人片AV人成| 午夜理论片YY4399影院| av淘宝 在线观看| 久久re热在线视频精69| 午夜久久影院| 成人免费无毒在线观看网站| 辣文肉高h粗暴| 亚洲国产日韩欧美视频二区| 成年视频xxxxxx在线| 秘密教学93话恩爱久等了免费 | 大胆国模一区二区三区伊人 | 国产婷婷色综合AV蜜臀AV| 强奸日本美女小游戏| 2021国产精品国产精华| 饥渴的40岁熟妇完整版在线| 色综合伊人色综合网站下载| 99视频精品全部 国产| 看全色黄大色大片免费久黄久| 亚洲zooz人禽交xxxx|