本发明专利技术公开了一种基于FPGA的高效PCIE DMA数据传输方法,其包括主机向内核发出申请创建DMA读文件句柄的指令,主机通过DMA读文件句柄访问FPGA相对应的内核;内核接收指令并创建DMA读文件句柄,同时申请创建环形缓存空间以及DMA描述符链表;FPGA DMA读链表控制器接收并处理内核创建的环形缓存对应的描述符链表信息;根据描述符链表信息读取用户数据并将其上传到环形缓存空间;主机软件根据创建的读文件句柄,向内核发起一次读数据操作;内核收到主机软件读命令,获取主机软件的读取长度信息,然后判断环形缓存状态;若环形缓存数据满足主机读需求,则主机复制数据,完成用户数据到主机的数据传输。本发明专利技术能够大大提高传输带宽,实现高效率数据传输。实现高效率数据传输。实现高效率数据传输。
【技术实现步骤摘要】
一种基于FPGA的高效PCIE DMA数据传输方法
[0001]本专利技术涉及数据传输
,特别是一种基于FPGA的高效PCIE DMA数据传输方法。
技术介绍
[0002]FPGA普遍应用于通信、电力、导航、航空航天、交通等领域,随着科技地不断进步与发展,人们对高速信号传输的要求也越来越高。PCIE是一种高速串行总线标准,采用高速串行点对点双通道高带宽传输,具有系统总线吞吐量高、I/O数量少和物理尺寸小等优势,因此广泛应用于高速信号传输。
[0003]PCIE通常用于板卡间的高速、大带宽数据传输,涉及硬件、逻辑(FPGA)、软件等方面。主机软件主要完成系统驱动FILE的操作(主要是OPEN、READ、WRITE),这个依赖于驱动的开发。对于逻辑开发,FPGA芯片提供方有支持PCIE的物理层IP,一般提供两类IP:一类只有纯物理层、链路层和事务层,把复杂的PCIE协议转换为各类传输包,工程师可以完全自主定义DMA的设计,比如在DMA上传时,可以定义DMA读的源地址和物理地址以及传输长度等常规DMA设计;另一类IP提供方直接把DMA都定义好,主机驱动和软件也提供了参考设计,用户只需参考设计例程来完成自己的设计。PCIE的常用高速传输的控制传输流程如图1所示,主要涉及DMA传输的几个环节:1)用户数据为需要传输的数据;2)DMA控制:控制DMA,把用户数据上传到内核;3)PCIE为PCIE总线;4)内核:配置DMA,并且能接收DMA的数据;5)主机:即主控获取有效数据。通常一次DMA操作流程为:主机对内核发起一次DMA取数据;内核配置DMA,并启动一次搬数据;FPGA逻辑DMA控制器收到配置且启动命令后,开始搬运数据,把用户数据搬运到主机的目的地址。这类DMA操作是比较成熟的DMA传输方法,对于逻辑设计来说,只需等待DMA控制器的配置命令后,启动命令并开始搬运数据即可,相对来说比较简单。但这类传输方法的PCIE传输链路比较长,传输控制环节过于冗余,相互制约,传输效率低。
技术实现思路
[0004]鉴于此,本专利技术提供一种基于FPGA的高效PCIE DMA数据传输方法,可大大提高传输带宽,实现高效率数据传输。
[0005]本专利技术公开了一种基于FPGA的高效PCIE DMA数据传输方法,其包括创建DMA阶段和主机读取数据阶段;
[0006]所述创建DMA阶段包括以下步骤:
[0007]步骤1:主机向内核发出申请创建DMA读文件句柄的指令,主机通过DMA读文件句柄访问FPGA相对应的内核;
[0008]步骤2:内核接收指令并创建DMA读文件句柄,同时申请创建环形缓存空间以及DMA描述符链表;
[0009]步骤3:FPGA DMA读链表控制器接收并处理内核创建的环形缓存对应的描述符链表信息,完成FPGA DMA读数据控制器初始化;
[0010]步骤4:FPGA DMA读数据控制器启动,根据描述符链表信息读取用户数据并将其上传到环形缓存空间;
[0011]所述主机读取数据阶段包括以下步骤:
[0012]步骤5:主机软件根据创建的读文件句柄,向内核发起一次读数据操作;
[0013]步骤6:内核收到主机软件读命令,获取主机软件的读取长度信息,然后判断环形缓存状态;若环形缓存数据满足主机读需求,则主机复制数据,完成用户数据到主机的数据传输。
[0014]进一步地,所述步骤2包括:
[0015]步骤21:内核创建DMA描述符链表,底层FPGA DMA控制器主要根据DMA描述符信息工作;
[0016]步骤22:内核配置DMA描述符链表的基本参数并在内核中创建环形缓存;其中,所述基本参数包括DMA传输完成状态、DMA传输源地址、DMA传输目的地址、DMA传输长度;
[0017]步骤23:内核返回主机程序已创建的读文件句柄。
[0018]进一步地,所述步骤3包括:
[0019]步骤31:内核启动FPGA DMA读程序;
[0020]步骤32:FPGA DMA读链表控制器获取主机发起的读命令以及DMA描述符链表参数;
[0021]步骤33:FPGA DMA读数据控制器接收并处理环形缓存对应的链表信息;
[0022]步骤34:待整个数据传输链路配置完成后,FPGA DMA控制器则一直根据DMA链表信息将用户数据搬运到环形缓存空间。
[0023]进一步地,所述步骤4包括:
[0024]步骤41:FPGA DMA用户控制逻辑判断环形缓存是否已经存满,如果存满则停止读取用户数据;否则,重复执行步骤41;
[0025]步骤42:FPGA DMA读数据控制器根据当前DMA链表信息,把用户数据搬运到内核目的地址,该目的地址为内核申请的环形缓存空间地址;
[0026]步骤43:FPGA DMA读数据控制器在搬运完一帧数据后,设置该DMA描述符的DMA传输完成状态,并提取下一包的DMA描述符链表信息;其中,一帧数据对应一个DMA描述符;
[0027]步骤44:若主机不发起停止读数据工作命令,则整个FPGA逻辑程序重复执行步骤41至步骤43。
[0028]进一步地,在所述步骤5中,读取数据长度需要满足以下参数关系:
[0029]DMA描述符链表的DMA长度是内存页大小的整数倍时,传输效率最高;主机发起读操作长度必须是DMA链表长度的整数倍。
[0030]进一步地,所述步骤6还包括:
[0031]若环形缓存数据不满足主机读需求,则主机软件开始等待。
[0032]进一步地,在所述步骤6之后,还包括:
[0033]内核每复制完一帧DMA数据到主机目的地址时,需要把复制数据的长度信息传递至FPGA DMA用户控制逻辑,以便于FPGA DMA用户逻辑控制器获取环形缓存剩余空间大小。
[0034]进一步地,若主机需要再次读取数据,仅需重复步骤5至步骤6。
[0035]由于采用了上述技术方案,本专利技术具有如下的优点:本专利技术能够大大提高传输带宽,实现高效率数据传输。
附图说明
[0036]为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0037]图1为现有技术的DMA传输链路示意图;
[0038]图2为现有技术的DMA传输时间示意图;
[0039]图3为本专利技术实施例的PCIE传输结构图;
[0040]图4为现有技术的DMA常规读流程示意图;
[0041]图5为本专利技术实施例的各环节完全前后承接独立传输流程示意图。
具体实施方式
[0042]结合附图和实施例对本专利技术作进一步说明,显然,所描述的实施例仅是本专利技术实施例一部分实施例,而不是全部的实施例。本领域普通技术人员所获得的所有其他实施例,都应当属于本专利技术实施例本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种基于FPGA的高效PCIE DMA数据传输方法,其特征在于,包括创建DMA阶段和主机读取数据阶段;所述创建DMA阶段包括以下步骤:步骤1:主机向内核发出申请创建DMA读文件句柄的指令,主机通过DMA读文件句柄访问FPGA相对应的内核;步骤2:内核接收指令并创建DMA读文件句柄,同时申请创建环形缓存空间以及DMA描述符链表;步骤3:FPGA DMA读链表控制器接收并处理内核创建的环形缓存对应的描述符链表信息,完成FPGA DMA读数据控制器初始化;步骤4:FPGA DMA读数据控制器启动,根据描述符链表信息读取用户数据并将其上传到环形缓存空间;所述主机读取数据阶段包括以下步骤:步骤5:主机软件根据创建的读文件句柄,向内核发起一次读数据操作;步骤6:内核收到主机软件读命令,获取主机软件的读取长度信息,然后判断环形缓存状态;若环形缓存数据满足主机读需求,则主机复制数据,完成用户数据到主机的数据传输。2.根据权利要求1所述的方法,其特征在于,所述步骤2包括:步骤21:内核创建DMA描述符链表,底层FPGA DMA控制器主要根据DMA描述符信息工作;步骤22:内核配置DMA描述符链表的基本参数并在内核中创建环形缓存;其中,所述基本参数包括DMA传输完成状态、DMA传输源地址、DMA传输目的地址、DMA传输长度;步骤23:内核返回主机程序已创建的读文件句柄。3.根据权利要求1所述的方法,其特征在于,所述步骤3包括:步骤31:内核启动FPGA DMA读程序;步骤32:FPGA DMA读链表控制器获取主机发起的读命令以及DMA描述符链表参数;步骤33:FPGA DMA读数据控...
【专利技术属性】
技术研发人员:陈培美,何定高,赵耀,
申请(专利权)人:电信科学技术第五研究所有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。