CN110825674B - 基于fpga的pcie dma交互系统及交互方法 - Google Patents

基于fpga的pcie dma交互系统及交互方法 Download PDF

Info

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
Application number
CN201911041998.9A
Other languages
English (en)
Other versions
CN110825674A (zh
Inventor
龚清生
王吕大
赵明亮
沈月峰
王震
李正坤
孙大东
杨帆
王晓光
胡建军
陕振
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Institute of Computer Technology and Applications
Original Assignee
Beijing Institute of Computer Technology and Applications
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Computer Technology and Applications filed Critical Beijing Institute of Computer Technology and Applications
Priority to CN201911041998.9A priority Critical patent/CN110825674B/zh
Publication of CN110825674A publication Critical patent/CN110825674A/zh
Application granted granted Critical
Publication of CN110825674B publication Critical patent/CN110825674B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/32Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI 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

基于FPGA的PCIE DMA交互系统及交互方法
技术领域
本发明属于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相关寄存器。
CN201911041998.9A 2019-10-30 2019-10-30 基于fpga的pcie dma交互系统及交互方法 Active CN110825674B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113946527B (zh) * 2021-09-30 2023-06-20 中国船舶集团有限公司第七二四研究所 一种基于PCIe总线的多通道DMA交互设计方法

Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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交互确认的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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