CN110825674B - 基于fpga的pcie dma交互系统及交互方法 - Google Patents
基于fpga的pcie dma交互系统及交互方法 Download PDFInfo
- Publication number
- CN110825674B CN110825674B CN201911041998.9A CN201911041998A CN110825674B CN 110825674 B CN110825674 B CN 110825674B CN 201911041998 A CN201911041998 A CN 201911041998A CN 110825674 B CN110825674 B CN 110825674B
- Authority
- CN
- China
- Prior art keywords
- dma
- cpu
- fpga
- register
- interrupt
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/32—Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本发明涉及一种基于FPGA的PCIE DMA交互系统及交互方法,属于DMA技术领域。本发明采用一种新的方案,对现有CPU轮询寄存器(R2)的方式作了改进,实现了FPGA板卡与CPU之间的PCIE多通道DMA交互,有效降低了对CPU资源和PCIE带宽的占用,提高了PCIE传输效率。
Description
技术领域
本发明属于DMA技术领域,具体涉及一种基于FPGA的PCIE DMA交互系统及交互方法。
背景技术
DMA读写是FPGA板卡与CPU之间进行数据传输的常用方式, CPU以怎么样的方式开始DMA,PCIE传输完成后,FPGA板卡又以 怎么样的方式结束DMA,是影响DMA传输效率的关键技术。
常用的DMA交互方式,一般是CPU写某个BAR空间地址的 DAM使能寄存器(R1)开始DMA,FPGA板卡控制PCIE传输数据, 传输完成后,FPGA更新BAR空间地址的另一个寄存器(R2),CPU 轮询寄存器(R2)结束DMA,完成一次DMA操作,如图1所示。 在PCIE传输数据期间,CPU一直在轮询FPGA板卡上的寄存器R2, 占用了CPU资源,同时也占用了PCIE带宽,降低了数据传输效率。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何解决PCIE传输过程中,CPU 不断轮询FPGA板卡的寄存器,占用CPU资源和PCIE带宽的问题。
(二)技术方案
为了解决上述技术问题,本发明提供了一种基于FPGA的PCIE DMA交互系统,该系统用于实现FPGA板卡与CPU之间的PCIE多通道 DMA交互。
优选地,该系统包括位于CPU端的CPU程序和位于FPGA端的 FPGA程序,所述CPU程序包括驱动程序、中断服务程序和应用程序, FPGA程序包括BAR控制器、DMA控制器、中断控制器;
其中,所述驱动程序用于分配内存以设置交互寄存器,以及使能 中断;
中断服务程序用于接收FPGA板卡发出的中断,并清除中断,更 新应用程序;
应用程序用于使能DMA,结束DMA以及处理CPU端的应用层数 据;
BAR控制器用于在BAR空间设置用于启动DMA的相关寄存器, 包括内存首地址寄存器,数据长度寄存器,DMA使能寄存器R1,检 测R1,并在检测到DMA使能后开启DMA;
DMA控制器用于控制DMA数据传输,并在数据传输完成后,更 新CPU内存中的交互寄存器;
中断控制器用于在DMA传输完成并更新完交互寄存器之后,发 起中断;
优选地,所述FPGA程序还包括应用逻辑,所述应用逻辑用于处 理FPGA板卡的应用层数据。
本发明还提供了一种利用所述的系统实现的基于FPGA的PCIE DMA交互方法,包括以下步骤:
CPU端的驱动程序分配一片内存,将内存的前面一部分寄存器 设置为交互寄存器,并使能中断,应用程序使能DMA传输,FPGA 板卡的BAR控制器启动DMA的相关寄存器,应用程序将CPU内存 的首地址、数据包的长度信息,写到FPGA板卡BAR空间的对应DMA 相关寄存器,具体是将CPU内存的首地址写到内存首地址寄存器, 将数据包的长度信息写到数据长度寄存器,FPGA板卡的BAR控制 器检测DMA使能寄存器R1,检测到DMA使能后开启DMA,DMA控制器开始控制DMA数据传输,并在数据传输完成后更新CPU内 存中的交互寄存器,之后由中断控制器产生中断,CPU端的中断服 务程序接收中断并清除中断,更新应用程序,应用程序处理CPU端 的应用数据并结束当前DMA。
优选地,所述应用程序结束当前DMA后进入下一次DMA传输 流程。
优选地,CPU端的驱动程序将内存前面16字节的寄存器设置为 交互寄存器。
优选地,所述应用程序将CPU内存的首地址、数据包的长度信 息,通过PCIE写到FPGA板卡BAR空间的对应DMA相关寄存器。
(三)有益效果
本发明采用一种新的方案,对现有CPU轮询寄存器(R2)的方 式作了改进,实现了FPGA板卡与CPU之间的PCIE多通道DMA交 互,有效降低了对CPU资源和PCIE带宽的占用,提高了PCIE传输 效率。
附图说明
图1为常用的DMA交互原理图;
图2为本发明DMA交互方式原理图;
图3为本发明的系统架构图;
图4为本发明的DMA交互方法流程图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实 施例,对本发明的具体实施方式作进一步详细描述。
如图2所示,本发明的主要思路是在内存的数据区,将前面一部 分寄存器作为交互寄存器(即交互区),PCIE传输完成后,FPGA板 卡主动更新位于CPU内存中的交互寄存器,使得CPU不需要轮询 FPGA板卡的寄存器(R2),而只需要查询CPU本地内存的交互寄存 器,降低了CPU对PCIE带宽的占用。为了进一步降低DMA交互对CPU 的资源使用,在PCIE传输完成后,FPGA板卡发起一次中断请求,CPU 在接收到中断后完成一次DMA操作,使CPU在参与DMA交互时,不 需要轮询FPGA板卡的寄存器,也不需要查询本地寄存器,完全释放 CPU,既节省了PCIE带宽,也节省了CPU资源。
具体地,本发明提供了一种基于FPGA的PCIE DMA交互系统, 用于实现FPGA板卡与CPU之间的PCIE多通道DMA交互,如图3所示, 包括位于CPU端的CPU程序和位于FPGA端的FPGA程序,进一步,所 述CPU程序包括驱动程序、中断服务程序和应用程序,FPGA程序包 括BAR控制器、DMA控制器、中断控制器和应用逻辑;
其中,所述驱动程序用于分配内存以设置交互寄存器,以及使能 中断;
中断服务程序用于接收FPGA板卡发出的中断,并清除中断,更 新应用程序;
应用程序用于使能DMA,结束DMA以及处理CPU端的应用层数 据;
BAR控制器用于在BAR空间设置用于启动DMA的相关寄存器, 包括内存首地址寄存器,数据长度寄存器,DMA使能寄存器(R1), 检测R1,并在检测到DMA使能后开启DMA;
DMA控制器用于控制DMA数据传输,并在数据传输完成后,更 新CPU内存中的交互寄存器(交互区);
中断控制器用于在DMA传输完成并更新完交互寄存器之后,发 起中断;
应用逻辑用于处理FPGA板卡的应用层数据。
如图4所示,本发明的交互系统工作原理,即一种基于FPGA的 PCIE DMA交互方法实现流程为:
CPU端的驱动程序分配一片内存,将内存的前面一部分(本实施 例中为16字节)寄存器设置为交互寄存器(交互区),并使能中断, 应用程序使能DMA传输,FPGA板卡的BAR控制器启动DMA的相关 寄存器应用程序将CPU内存的首地址、数据包的长度信息,通过PCIE写到FPGA板卡BAR空间的对应DMA相关寄存器,具体是将CPU内存 的首地址写到内存首地址寄存器,将数据包的长度信息写到数据长度 寄存器,FPGA板卡的BAR控制器检测DMA使能寄存器R1,检测到 DMA使能后开启DMA,DMA控制器开始控制DMA数据传输,并在 数据传输完成后更新CPU内存中的交互寄存器,之后由中断控制器产 生中断,CPU端的中断服务程序接收中断并清除中断,更新应用程序, 应用程序处理CPU端的应用数据并结束当前DMA,然后进入下一次 DMA传输。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领 域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以 做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (7)
1.一种基于FPGA的PCIE DMA交互系统,其特征在于,该系统用于实现FPGA板卡与CPU之间的PCIE多通道DMA交互;
该系统包括位于CPU端的CPU程序和位于FPGA端的FPGA程序,所述CPU程序包括驱动程序、中断服务程序和应用程序,FPGA程序包括BAR控制器、DMA控制器、中断控制器;
其中,所述驱动程序用于分配内存以设置交互寄存器,以及使能中断;
中断服务程序用于接收FPGA板卡发出的中断,并清除中断,更新应用程序;
应用程序用于使能DMA,结束DMA以及处理CPU端的应用层数据;
BAR控制器用于在BAR空间设置用于启动DMA的相关寄存器,包括内存首地址寄存器,数据长度寄存器,DMA使能寄存器R1,检测R1,并在检测到DMA使能后开启DMA;
DMA控制器用于控制DMA数据传输,并在数据传输完成后,更新CPU内存中的交互寄存器;
中断控制器用于在DMA传输完成并更新完交互寄存器之后,发起中断。
2.如权利要求1所述的系统,其特征在于,所述FPGA程序还包括应用逻辑,所述应用逻辑用于处理FPGA板卡中的数据。
3.如权利要求2所述的系统,其特征在于,所述FPGA程序还包括应用逻辑,所述应用逻辑用于处理FPGA板卡中的应用层数据。
4.一种利用权利要求1或2或3所述的系统实现的基于FPGA的PCIE DMA交互方法,其特征在于,包括以下步骤:
CPU端的驱动程序分配一片内存,将内存的前面一部分寄存器设置为交互寄存器,并使能中断,应用程序使能DMA传输,FPGA 板卡的BAR控制器启动DMA的相关寄存器,应用程序将CPU内存的首地址、数据包的长度信息,写到FPGA板卡BAR空间的对应DMA相关寄存器,具体是将CPU内存的首地址写到内存首地址寄存器,将数据包的长度信息写到数据长度寄存器,FPGA板卡的BAR控制器检测DMA使能寄存器R1,检测到DMA使能后开启DMA,DMA控制器开始控制DMA数据传输,并在数据传输完成后更新CPU内存中的交互寄存器,之后由中断控制器产生中断,CPU端的中断服务程序接收中断并清除中断,更新应用程序,应用程序处理CPU端的应用数据并结束当前DMA。
5.如权利要求4所述的方法,其特征在于,所述应用程序结束当前DMA后进入下一次DMA传输流程。
6.如权利要求4所述的方法,其特征在于,CPU端的驱动程序将内存前面16字节的寄存器设置为交互寄存器。
7.如权利要求4所述的方法,其特征在于,所述应用程序将CPU内存的首地址、数据包的长度信息,通过PCIE写到FPGA板卡BAR空间的对应DMA相关寄存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911041998.9A CN110825674B (zh) | 2019-10-30 | 2019-10-30 | 基于fpga的pcie dma交互系统及交互方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911041998.9A CN110825674B (zh) | 2019-10-30 | 2019-10-30 | 基于fpga的pcie dma交互系统及交互方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110825674A CN110825674A (zh) | 2020-02-21 |
CN110825674B true CN110825674B (zh) | 2021-02-12 |
Family
ID=69551170
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911041998.9A Active CN110825674B (zh) | 2019-10-30 | 2019-10-30 | 基于fpga的pcie dma交互系统及交互方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110825674B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113946527B (zh) * | 2021-09-30 | 2023-06-20 | 中国船舶集团有限公司第七二四研究所 | 一种基于PCIe总线的多通道DMA交互设计方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495817A (zh) * | 2011-12-08 | 2012-06-13 | 成都林海电子有限责任公司 | 一种基于pci总线的高速数据传输方法 |
CN108897703A (zh) * | 2018-05-30 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种基于pcie的高速数据传输系统及方法 |
CN109613569A (zh) * | 2018-11-27 | 2019-04-12 | 北京航空航天大学 | 一种基于cpu+fpga的卫星导航异常信号模拟器及异常信号模拟方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673253A (zh) * | 2009-08-21 | 2010-03-17 | 曙光信息产业(北京)有限公司 | 直接存储器访问的实现方法 |
CN102521182B (zh) * | 2011-11-23 | 2015-05-06 | 华南师范大学 | 一种可扩展多通道并行实时数据采集装置和方法 |
CN103116560B (zh) * | 2013-02-06 | 2016-01-13 | 杭州海莱电子科技有限公司 | 可编程刀片服务器结构 |
US9658977B2 (en) * | 2013-03-15 | 2017-05-23 | Micron Technology, Inc. | High speed, parallel configuration of multiple field programmable gate arrays |
US10127185B1 (en) * | 2016-12-20 | 2018-11-13 | The United States Of America, As Represented By The Secretary Of The Navy | Format agnostic data transfer circuit |
CN106951388B (zh) * | 2017-03-16 | 2020-06-30 | 湖南博匠信息科技有限公司 | 一种基于PCIe的DMA数据传输方法及系统 |
CN108595353B (zh) * | 2018-04-09 | 2021-11-23 | 杭州迪普科技股份有限公司 | 一种基于PCIe总线的控制数据传输的方法及装置 |
CN108776649A (zh) * | 2018-06-11 | 2018-11-09 | 山东超越数控电子股份有限公司 | 一种基于cpu+fpga异构计算系统及其加速方法 |
CN109710560A (zh) * | 2018-12-25 | 2019-05-03 | 杭州迪普科技股份有限公司 | 一种cpu与fpga交互确认的方法和装置 |
-
2019
- 2019-10-30 CN CN201911041998.9A patent/CN110825674B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495817A (zh) * | 2011-12-08 | 2012-06-13 | 成都林海电子有限责任公司 | 一种基于pci总线的高速数据传输方法 |
CN108897703A (zh) * | 2018-05-30 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种基于pcie的高速数据传输系统及方法 |
CN109613569A (zh) * | 2018-11-27 | 2019-04-12 | 北京航空航天大学 | 一种基于cpu+fpga的卫星导航异常信号模拟器及异常信号模拟方法 |
Non-Patent Citations (1)
Title |
---|
A PCIe DMA Architecture for Multi-Gigabyte Per Second Data Transmission;L. Rota; M. Caselle; S. Chilingaryan; A. Kopmann; M. Weber;《IEEE Transactions on Nuclear Science ( Volume: 62, Issue: 3, June 2015)》;IEEE;20150630;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110825674A (zh) | 2020-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102111741B1 (ko) | 임베디드 멀티미디어 카드 및 이의 동작 방법 | |
CN107305534B (zh) | 同时进行内核模式访问和用户模式访问的方法 | |
CN110910921A (zh) | 一种命令读写方法、装置及计算机存储介质 | |
US20190196972A1 (en) | Managing flash memory read operations | |
CN108932108B (zh) | 快闪存储器的命令排程及执行方法以及使用该方法的装置 | |
CN102566939B (zh) | 一种固态硬盘及其读-修改-写操作的数据管理方法 | |
CN114662136B (zh) | 一种基于pcie通道的多算法ip核的高速加解密系统及方法 | |
CN110825674B (zh) | 基于fpga的pcie dma交互系统及交互方法 | |
CN104123250A (zh) | 基于dma的数据传输方法 | |
TWI771574B (zh) | 半導體裝置及半導體系統 | |
CN114780032A (zh) | 一种数据读取方法、装置、设备及存储介质 | |
JP2008521080A5 (zh) | ||
KR20180049340A (ko) | 스토리지 장치 및 그것의 링크 상태 제어 방법 | |
CN103399832A (zh) | 总线间的乱序返回数据的归序方法 | |
TW200935297A (en) | Non-volatile memory device, and method of accessing a non-volatile memory device | |
JP2017520052A (ja) | ユニバーサルシリアルバス(usb)通信システムおよび方法 | |
CN110990309B (zh) | Tte端系统适配卡pcie控制器的高效中断操作方法 | |
CN110990310B (zh) | 一种设备端sd控制器、控制方法及电子设备 | |
US7080189B1 (en) | USB device communication | |
CN116893991A (zh) | 一种axi协议下的存储模块转换接口及其转换方法 | |
CN113946527B (zh) | 一种基于PCIe总线的多通道DMA交互设计方法 | |
CN116627869A (zh) | 应用于电子设备的数据传输方法及装置 | |
CN109189705B (zh) | 一种usb扩展方法、装置、设备、存储介质及系统 | |
CN106909523B (zh) | 大规模数据传输方法及系统 | |
CN111694777B (zh) | 基于PCIe接口的DMA传输方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |