基于FPGA的PCIE DMA交互系统及交互方法转让专利

申请号 : CN201911041998.9

文献号 : CN110825674B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 龚清生王吕大赵明亮沈月峰王震李正坤孙大东杨帆王晓光胡建军陕振

申请人 : 北京计算机技术及应用研究所

摘要 :

本发明涉及一种基于FPGA的PCIE DMA交互系统及交互方法,属于DMA技术领域。本发明采用一种新的方案,对现有CPU轮询寄存器(R2)的方式作了改进,实现了FPGA板卡与CPU之间的PCIE多通道DMA交互,有效降低了对CPU资源和PCIE带宽的占用,提高了PCIE传输效率。

权利要求 :

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相关寄存器。

说明书 :

基于FPGA的PCIE DMA交互系统及交互方法

技术领域

[0001] 本发明属于DMA技术领域,具体涉及一种基于FPGA的PCIE DMA交互系统及交互方法。

背景技术

[0002] DMA读写是FPGA板卡与CPU之间进行数据传输的常用方式, CPU以怎么样的方式开始DMA,PCIE传输完成后,FPGA板卡又以 怎么样的方式结束DMA,是影响DMA传输效率的关键技术。
[0003] 常用的DMA交互方式,一般是CPU写某个BAR空间地址的 DAM使能寄存器(R1)开始DMA,FPGA板卡控制PCIE传输数据, 传输完成后,FPGA更新BAR空间地址的另一个寄存器(R2),CPU 轮询寄存器(R2)结束DMA,完成一次DMA操作,如图1所示。 在PCIE传输数据期间,CPU一直在轮询FPGA板卡上的寄存器R2, 占用了CPU资源,同时也占用了PCIE带宽,降低了数据传输效率。

发明内容

[0004] (一)要解决的技术问题
[0005] 本发明要解决的技术问题是:如何解决PCIE传输过程中,CPU 不断轮询FPGA板卡的寄存器,占用CPU资源和PCIE带宽的问题。
[0006] (二)技术方案
[0007] 为了解决上述技术问题,本发明提供了一种基于FPGA的PCIE DMA交互系统,该系统用于实现FPGA板卡与CPU之间的PCIE多通道 DMA交互。
[0008] 优选地,该系统包括位于CPU端的CPU程序和位于FPGA端的 FPGA程序,所述CPU程序包括驱动程序、中断服务程序和应用程序, FPGA程序包括BAR控制器、DMA控制器、中断控制器;
[0009] 其中,所述驱动程序用于分配内存以设置交互寄存器,以及使能 中断;
[0010] 中断服务程序用于接收FPGA板卡发出的中断,并清除中断,更 新应用程序;
[0011] 应用程序用于使能DMA,结束DMA以及处理CPU端的应用层数 据;
[0012] BAR控制器用于在BAR空间设置用于启动DMA的相关寄存器, 包括内存首地址寄存器,数据长度寄存器,DMA使能寄存器R1,检 测R1,并在检测到DMA使能后开启DMA;
[0013] DMA控制器用于控制DMA数据传输,并在数据传输完成后,更 新CPU内存中的交互寄存器;
[0014] 中断控制器用于在DMA传输完成并更新完交互寄存器之后,发 起中断;
[0015] 优选地,所述FPGA程序还包括应用逻辑,所述应用逻辑用于处 理FPGA板卡的应用层数据。
[0016] 本发明还提供了一种利用所述的系统实现的基于FPGA的PCIE DMA交互方法,包括以下步骤:
[0017] CPU端的驱动程序分配一片内存,将内存的前面一部分寄存器 设置为交互寄存器,并使能中断,应用程序使能DMA传输,FPGA 板卡的BAR控制器启动DMA的相关寄存器,应用程序将CPU内存 的首地址、数据包的长度信息,写到FPGA板卡BAR空间的对应DMA 相关寄存器,具体是将CPU内存的首地址写到内存首地址寄存器, 将数据包的长度信息写到数据长度寄存器,FPGA板卡的BAR控制 器检测DMA使能寄存器R1,检测到DMA使能后开启DMA,DMA 控制器开始控制DMA数据传输,并在数据传输完成后更新CPU内 存中的交互寄存器,之后由中断控制器产生中断,CPU端的中断服 务程序接收中断并清除中断,更新应用程序,应用程序处理CPU端 的应用数据并结束当前DMA。
[0018] 优选地,所述应用程序结束当前DMA后进入下一次DMA传输 流程。
[0019] 优选地,CPU端的驱动程序将内存前面16字节的寄存器设置为 交互寄存器。
[0020] 优选地,所述应用程序将CPU内存的首地址、数据包的长度信 息,通过PCIE写到FPGA板卡BAR空间的对应DMA相关寄存器。
[0021] (三)有益效果
[0022] 本发明采用一种新的方案,对现有CPU轮询寄存器(R2)的方 式作了改进,实现了FPGA板卡与CPU之间的PCIE多通道DMA交 互,有效降低了对CPU资源和PCIE带宽的占用,提高了PCIE传输 效率。

附图说明

[0023] 图1为常用的DMA交互原理图;
[0024] 图2为本发明DMA交互方式原理图;
[0025] 图3为本发明的系统架构图;
[0026] 图4为本发明的DMA交互方法流程图。

具体实施方式

[0027] 为使本发明的目的、内容、和优点更加清楚,下面结合附图和实 施例,对本发明的具体实施方式作进一步详细描述。
[0028] 如图2所示,本发明的主要思路是在内存的数据区,将前面一部 分寄存器作为交互寄存器(即交互区),PCIE传输完成后,FPGA板 卡主动更新位于CPU内存中的交互寄存器,使得CPU不需要轮询 FPGA板卡的寄存器(R2),而只需要查询CPU本地内存的交互寄存 器,降低了CPU对PCIE带宽的占用。为了进一步降低DMA交互对CPU 的资源使用,在PCIE传输完成后,FPGA板卡发起一次中断请求,CPU 在接收到中断后完成一次DMA操作,使CPU在参与DMA交互时,不 需要轮询FPGA板卡的寄存器,也不需要查询本地寄存器,完全释放 CPU,既节省了PCIE带宽,也节省了CPU资源。
[0029] 具体地,本发明提供了一种基于FPGA的PCIE DMA交互系统, 用于实现FPGA板卡与CPU之间的PCIE多通道DMA交互,如图3所示, 包括位于CPU端的CPU程序和位于FPGA端的FPGA程序,进一步,所 述CPU程序包括驱动程序、中断服务程序和应用程序,FPGA程序包 括BAR控制器、DMA控制器、中断控制器和应用逻辑;
[0030] 其中,所述驱动程序用于分配内存以设置交互寄存器,以及使能 中断;
[0031] 中断服务程序用于接收FPGA板卡发出的中断,并清除中断,更 新应用程序;
[0032] 应用程序用于使能DMA,结束DMA以及处理CPU端的应用层数 据;
[0033] BAR控制器用于在BAR空间设置用于启动DMA的相关寄存器, 包括内存首地址寄存器,数据长度寄存器,DMA使能寄存器(R1), 检测R1,并在检测到DMA使能后开启DMA;
[0034] DMA控制器用于控制DMA数据传输,并在数据传输完成后,更 新CPU内存中的交互寄存器(交互区);
[0035] 中断控制器用于在DMA传输完成并更新完交互寄存器之后,发 起中断;
[0036] 应用逻辑用于处理FPGA板卡的应用层数据。
[0037] 如图4所示,本发明的交互系统工作原理,即一种基于FPGA的 PCIE DMA交互方法实现流程为:
[0038] 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传输。
[0039] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领 域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以 做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。