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

技术编号:23399860 阅读:33 留言:0更新日期:2020-02-22 12:09
本发明专利技术涉及一种基于FPGA的PCIE DMA交互系统及交互方法,属于DMA技术领域。本发明专利技术采用一种新的方案,对现有CPU轮询寄存器(R2)的方式作了改进,实现了FPGA板卡与CPU之间的PCIE多通道DMA交互,有效降低了对CPU资源和PCIE带宽的占用,提高了PCIE传输效率。

PCIe DMA interactive system and method based on FPGA

【技术实现步骤摘要】
基于FPGA的PCIEDMA交互系统及交互方法
本专利技术属于DMA
,具体涉及一种基于FPGA的PCIEDMA交互系统及交互方法。
技术介绍
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的PCIEDMA交互系统,该系统用于实现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的PCIEDMA交互方法,包括以下步骤: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的PCIEDMA交互系统,用于实现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的PCIEDMA交互方法实现流程为: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传输。以上所述仅是本专利技术的优选实施方式,应当指出,对于本
的普通技术人员来说,在不脱离本专利技术技术原理的前提下,本文档来自技高网
...

【技术保护点】
1.一种基于FPGA的PCIE DMA交互系统,其特征在于,该系统用于实现FPGA板卡与CPU之间的PCIE多通道DMA交互。/n

【技术特征摘要】
1.一种基于FPGA的PCIEDMA交互系统,其特征在于,该系统用于实现FPGA板卡与CPU之间的PCIE多通道DMA交互。


2.如权利要求1所述的系统,其特征在于,该系统包括位于CPU端的CPU程序和位于FPGA端的FPGA程序,所述CPU程序包括驱动程序、中断服务程序和应用程序,FPGA程序包括BAR控制器、DMA控制器、中断控制器;
其中,所述驱动程序用于分配内存以设置交互寄存器,以及使能中断;
中断服务程序用于接收FPGA板卡发出的中断,并清除中断,更新应用程序;
应用程序用于使能DMA,结束DMA以及处理CPU端的应用层数据;
BAR控制器用于在BAR空间设置用于启动DMA的相关寄存器,包括内存首地址寄存器,数据长度寄存器,DMA使能寄存器R1,检测R1,并在检测到DMA使能后开启DMA;
DMA控制器用于控制DMA数据传输,并在数据传输完成后,更新CPU内存中的交互寄存器;
中断控制器用于在DMA传输完成并更新完交互寄存器之后,发起中断。


3.如权利要求2所述的系统,其特征在于,所述FPGA程序还包括应用逻辑,所述应用逻辑用于处理FPGA板卡中的数据。


4.如权利要求3所述的系统,其特征在于,所述FPGA程序还包括应用逻辑,所述应用逻辑用于处理FPGA板卡中的应用层数据。...

【专利技术属性】
技术研发人员:龚清生王吕大赵明亮沈月峰王震李正坤孙大东杨帆王晓光胡建军陕振
申请(专利权)人:北京计算机技术及应用研究所
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1