CN106951388A - 一种基于PCIe的DMA数据传输方法及系统 - Google Patents

一种基于PCIe的DMA数据传输方法及系统 Download PDF

Info

Publication number
CN106951388A
CN106951388A CN201710156750.1A CN201710156750A CN106951388A CN 106951388 A CN106951388 A CN 106951388A CN 201710156750 A CN201710156750 A CN 201710156750A CN 106951388 A CN106951388 A CN 106951388A
Authority
CN
China
Prior art keywords
dma
pcie
data
host computer
channel
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.)
Granted
Application number
CN201710156750.1A
Other languages
English (en)
Other versions
CN106951388B (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.)
Hunan Bo Carpenter Mdt Infotech Ltd
Original Assignee
Hunan Bo Carpenter Mdt Infotech Ltd
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 Hunan Bo Carpenter Mdt Infotech Ltd filed Critical Hunan Bo Carpenter Mdt Infotech Ltd
Priority to CN201710156750.1A priority Critical patent/CN106951388B/zh
Publication of CN106951388A publication Critical patent/CN106951388A/zh
Application granted granted Critical
Publication of CN106951388B publication Critical patent/CN106951388B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus

Abstract

本发明公开了一种基于PCIe的DMA数据传输方法及系统,该方法包括:接收上位机发送的控制指令;其中,控制指令包括DMA起始地址、DMA大小、DMA模式和启动DMA指令;根据控制指令从多个DMA通道中选择对应的DMA通道通过PCIe总线对数据进行传输;可见,本发明通过根据控制指令从多个DMA通道中选择对应的DMA通道对数据进行传输,可以使用多通道DMA实现FPGA与计算机之间的数据传输,使多种数据通过同一PCIe总线的链路进行独立传输,不同种类的数据可以使用单独的DMA通道进行传输,避免了对每一种数据进行封包解包等复杂的处理方式,减少了时间消耗,提升了用户体验。

Description

一种基于PCIe的DMA数据传输方法及系统
技术领域
本发明涉及数据传输技术领域,特别涉及一种基于PCIe的DMA数据传输方法及系统。
背景技术
随着现代社会科技的发展,PCIe总线作为一种高性能局部总线广泛应用于计算机系统中,目前几乎所有商业级和工业级的计算机生产商都在其生产的计算机系统中提供了PCIe总线接口。这个总线标准将取代原来的PCI和AGP总线,成为新一代计算机系统的标准总线接口。PCIe总线具有带宽大、可扩展性强的优点,并且在系统软件上与PCI总线协议兼容。
FPGA(Field-Programmable Gate Array,现场可编程门阵列)是一种可编程电路元器件,随着集成电路(IC)制造工艺的提升,FPGA芯片中的资源越来越多,运算能力和功能越来越强大,因此,FPGA在信号采集、数据存储、雷达、通信等电子系统中的应用越来越广泛。当FPGA需要与计算机系统进行大量数据交换时,通常利用FPGA中的高速串行收发器来实现PCIe数据收发。
当利用PCIe总线实现FPGA与计算机之间的数据传输时,通常采用直接内存存取(DMA,Direct Memory Access)传输方式来加快数据传输速度,降低CPU负荷。DMA控制器可以将数据从一个地址空间(计算机)搬移到另一个地址空间(FPGA),搬移过程不需要CPU参与,因此节省了CPU资源。
现有技术中,市场上基于PCIe的DMA数据传输方法基本上都是单通道的,但当数据种类较多时,单通道DMA传输无法针对各种数据做单独处理,因此针对多种数据的应用需要对每一种数据进行封包解包,标记数据种类和长度等信息,处理起来比较复杂,耗费时间较长,不利于用户体验。因此,如何通过PCIe总线使用多通道DMA实现FPGA与计算机之间的数据传输,使多种数据通过同一PCIe链路独立传输,是现今急需解决的问题。
发明内容
本发明的目的是提供一种基于PCIe的DMA数据传输方法及系统,以使用多通道DMA实现FPGA与计算机之间的数据传输,使多种数据通过同一PCIe链路独立传输。
为解决上述技术问题,本发明提供一种基于PCIe的DMA数据传输方法,包括:
接收上位机发送的控制指令;其中,所述控制指令包括DMA起始地址、DMA大小、DMA模式和启动DMA指令;
根据所述控制指令从多个DMA通道中选择对应的所述DMA通道通过PCIe总线对数据进行传输;其中,多个所述DMA通道相互独立。
可选的,所述根据所述控制指令从多个DMA通道中选择对应的DMA通道通过PCIe总线对数据进行传输,包括:
对所述控制指令进行解帧和命令解析,获取从事务请求;
对所述从事务请求进行处理,生成DMA参数;
根据所述DMA参数,生成DMA控制信号;
根据所述DMA控制信号从多个所述DMA通道中选择对应的所述DMA通道通过所述PCIe总线进行DMA读和/或DMA写。
可选的,所述根据所述DMA控制信号从多个所述DMA通道中选择对应的所述DMA通道通过所述PCIe总线进行DMA读和/或DMA写,包括:
若所述DMA控制信号中包含DMA读指令,则生成读请求包;
将所述读请求包发送至所述上位机;
通过所述PCIe总线接收所述上位机发送的带有数据的读完成包,并将所述读完成包中的所述数据写入到所述DMA控制信号对应的DMA通道的FIFO中;其中,所述读完成包中的所述数据为所述读请求包对应的所述上位机的缓存空间中的数据;
若所述DMA控制信号中包含DMA写指令,则将所述DMA控制信号对应的DMA通道的FIFO中的数据生成写请求包,并通过所述PCIe总线发送至所述上位机;其中,每个所述DMA通道均存在独立的FIFO。
可选的,所述接收上位机发送的控制指令之前,还包括:
所述上位机对所述缓存空间进行配置。
可选的,所述根据所述控制指令从多个DMA通道中选择对应的所述DMA通道通过PCIe总线对数据进行传输之后,还包括:
传输结束后,产生中断信息;
将所述中断信息以MSI中断方式或继承中断INTx方式发送到上位机。
此外,本发明还提供了一种基于PCIe的DMA数据传输系统,包括:
接收模块,用于接收上位机发送的控制指令;其中,所述控制指令包括DMA起始地址、DMA大小、DMA模式和启动DMA指令;
DMA控制模块,用于根据所述控制指令从多个DMA通道中选择对应的所述DMA通道通过PCIe总线对数据进行传输;其中,多个所述DMA通道相互独立。
可选的,所述DMA控制模块,包括:
从事务子模块,用于对所述控制指令进行解帧和命令解析,获取从事务请求;
从事务管理子模块,用于对所述从事务请求进行处理,生成DMA参数;
DMA管理子模块,用于根据所述DMA参数,生成DMA控制信号;
DMA核子模块,用于根据所述DMA控制信号从多个所述DMA通道中选择对应的所述DMA通道通过所述PCIe总线进行DMA读和/或DMA写。
可选的,所述DMA核子模块,包括:
读请求包生成单元,用于若所述DMA控制信号中包含DMA读指令,则生成读请求包;
发送单元,用于将所述读请求包发送至所述上位机;
DMA读单元,通过所述PCIe总线接收所述上位机发送的带有数据的读完成包,并将所述读完成包中的所述数据写入到所述DMA控制信号对应的DMA通道的FIFO中;其中,所述读完成包中的所述数据为所述读请求包对应的所述上位机的缓存空间中的数据;
DMA写单元,用于若所述DMA控制信号中包含DMA写指令,则将所述DMA控制信号对应的DMA通道的FIFO中的数据生成写请求包,并通过所述发送单元发送至所述上位机;其中,每个所述DMA通道均存在独立的FIFO。
可选的,所述DMA核子模块,还包括:
中断生成单元,用于传输结束后,产生中断信息;
所述从事务管理子模块,还包括:
中断控制单元,用于将所述中断信息以MSI中断方式或继承中断INTx方式发送到上位机。
可选的,该系统还包括:
PCIe IP核模块,用于将所述PCIe总线上的高速串行差分电信号转换为FPGA内部的逻辑信号。
本发明所提供的一种基于PCIe的DMA数据传输方法,包括:接收上位机发送的控制指令;其中,所述控制指令包括DMA起始地址、DMA大小、DMA模式和启动DMA指令;根据所述控制指令从多个DMA通道中选择对应的所述DMA通道通过PCIe总线对数据进行传输;其中,多个所述DMA通道相互独立;
可见,本发明通过根据控制指令从多个DMA通道中选择对应的DMA通道对数据进行传输,可以使用多通道DMA实现FPGA与计算机之间的数据传输,使多种数据通过同一PCIe总线的链路进行独立传输,不同种类的数据可以使用单独的DMA通道进行传输,避免了对每一种数据进行封包解包等复杂的处理方式,减少了时间消耗,提升了用户体验。此外,本发明还提供了一种基于PCIe的DMA数据传输系统,同样具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的一种基于PCIe的DMA数据传输方法的流程图;
图2为本发明实施例所提供的另一种基于PCIe的DMA数据传输方法的流程图;
图3为本发明实施例所提供的另一种基于PCIe的DMA数据传输方法的流程示意图;
图4为本发明实施例所提供的一种基于PCIe的DMA数据传输系统的结构图;
图5为本发明实施例所提供的一种基于PCIe的DMA数据传输系统的流程示意图;
图6为本发明实施例所提供的一种基于PCIe的DMA数据传输系统的DMA核子模块的工作状态转移示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例所提供的一种基于PCIe的DMA数据传输方法的流程图,该方法可以包括:
步骤101:接收上位机发送的控制指令;其中,所述控制指令包括DMA起始地址、DMA大小、DMA模式和启动DMA指令。
其中,上位机可以为与FPGA进行数据传输的计算机。对于上位机发送的控制指令的具体内容,只要可以根据该控制指令从多个DMA通道中选择对应的DMA通道通过PCIe总线对数据进行传输,避免对每一种数据进行封包解包等复杂的处理方式,本实施例对此不受任何限制。
可以理解的是,对于接收上位机发送的控制指令的方式,可以从将PCIe总线上的高速串行差分电信号转换为FPGA内部的逻辑信号的PCIe IP核上接收,也就是接收上位机通过PCIe总线发送至PCIe IP核的控制指令;也可以通过其他方式接收,只要可以使DMA控制器接收到该控制指令,从而根据所述控制指令选择对应DMA通道对数据进行传输,对于接收该控制指令的方式,本实施例不做任何限制。
需要说明的是,本步骤之前还可以包括上位机对缓存空间进行配置的步骤,也就是上位机先将要传输的数据放在缓存空间或开辟一片空闲的存储空间为接收数据做准备,然后再发送控制指令到DMA控制器。对于上位机对缓存空间进行配置的步骤,可以在本步骤之前,也可以与本步骤共同进行或在本步骤之后,只要可以在数据传输前完成对缓存空间的配置,本实施例对此不受任何限制。
步骤102:根据所述控制指令从多个DMA通道中选择对应的所述DMA通道通过PCIe总线对数据进行传输;其中,多个所述DMA通道相互独立。
可以理解的是,DMA控制器根据控制指令从多个DMA通道中选择对应的DMA通道通过PCIe总线对数据进行传输的方式,可以为先对该控制指令进行解帧和命令解析,获取从事务请求,再对从事务请求进行处理,生成DMA参数,然后根据DMA参数,生成DMA控制信号,最后根据DMA控制信号从多个DMA通道中选择对应的DMA通道通过PCIe总线进行DMA读和/或DMA写的方式;也可以通过其他方式。只要可以根据控制指令从多个DMA通道中选择对应的DMA通道通过PCIe总线进行DMA读和/或DMA写,对于DMA控制器对该控制指令进行解析的方式,本实施例不做任何限制。其中,多个DMA通道相互独立,可以由设计人员或用户根据实用场景或用户需求自行独立设置DMA运行参数,本实施例对此同样不受任何限制。
需要说明的是,本步骤之后,还包括传输结束后,产生中断信息,将该中断信息以MSI中断方式或继承中断INTx方式发送到上位机的步骤,通过将该中断信息发送给上位机,可以使上位机启动中断服务程序,判断DMA传输是否成功,如果不成功则可以根据用户需求进行重新传输,如果成功则可以继续下一次传输。对于上位机启动的中断服务程序的具体流程,本实施例不做任何限制。
本实施例中,本发明实施例通过根据控制指令从多个DMA通道中选择对应的DMA通道通过PCIe总线对数据进行传输,可以使用多通道DMA实现FPGA与计算机之间的数据传输,使多种数据通过同一PCIe总线的链路进行独立传输,不同种类的数据可以使用单独的DMA通道进行传输,避免了对每一种数据进行封包解包等复杂的处理方式,减少了时间消耗,提升了用户体验。
请参考图2和图3,图2为本发明实施例所提供的另一种基于PCIe的DMA数据传输方法的流程图;图3为本发明实施例所提供的另一种基于PCIe的DMA数据传输方法的流程示意图。该方法可以包括:
步骤201:接收上位机发送的控制指令。
可以理解的是,上位机可以依靠发送的控制指令对DMA控制器进行管理,控制DMA数据传输方向、DMA起始地址、DMA大小、DMA启动与停止以及DMA的工作模式。该控制指令可以由上位机通过请求包或其他方式发送,本实施例对此不受任何限制。
其中,DMA的工作模式可以包括直接DMA或分散-聚合DMA模式。DMA控制器可以工作在直接DMA或分散-聚合DMA模式下,直接DMA模式下DMA传输所对应的内存空间可以是连续的;分散-聚合DMA模式下DMA传输所对应的内存空间可以由若干片连续空间组成,也就是多片连续的内存空间组成的一片大的内存空间。
步骤202:对控制指令进行解帧和命令解析,获取从事务请求。
可以理解的是,本步骤可以为DMA控制器对上位机主动发起的事务进行处理,如寄存器读写、IO读写等PIO(Programmable Input/Output,可编程输入输出)事务等。
步骤203:对从事务请求进行处理,生成DMA参数。
需要说明的是,本步骤可以为DMA控制器对PCIe的基地址寄存器(Base AddressRegisters,BAR)空间进行管理,处理上一步骤获取的事务请求,使得上位机可以通过对BAR空间寄存器写入数据实现对各个DMA通道的控制。
其中,如果事务需要返回数据,还可以通过本步骤提供数据。如上位机需要了解DMA控制器的工作状态,,则可以通过本步骤将BAR寄存器中的数据发送到上位机,方便上位机读取。本实施例对此不受任何限制。
步骤204:根据DMA参数,生成DMA控制信号。
可以理解的是,本步骤中DMA控制器可以根据DMA参数生成对DMA通道进行控制的信号,以控制DMA数据传输方向、DMA起始地址、DMA大小、DMA启动与停止以及DMA的工作模式。
步骤205:根据DMA控制信号从多个DMA通道中选择对应的DMA通道通过PCIe总线进行DMA读和/或DMA写。
其中,对于DMA控制器中DMA读与DMA写的具体方式,可以通过发送请求包和生成包的方式,如若DMA控制信号中包含DMA读指令,则生成读请求包,将读请求包发送至上位机,通过PCIe总线接收上位机发送的带有数据的读完成包,并将读完成包中的数据写入到DMA控制信号对应的DMA通道的FIFO中,其中,读完成包中的数据为读请求包对应的上位机的缓存空间中的数据;若DMA控制信号中包含DMA写指令,则将DMA控制信号对应的DMA通道的FIFO中的数据生成写请求包,并通过PCIe总线发送至上位机,其中,每个DMA通道均存在独立的FIFO。也可以通过其他方式,只要可以通过DMA读与DMA写实现FPGA与上位机之间的数据传输,对于具体的DMA读与DMA写的方式,本实施例不做任何限制。
需要说明的是,DMA控制器向上位机发送的读请求包和接收的读完成包的数量,可以根据需要读取数据的多少对应进行设置,如若需要读取的数量较小,只需一个读完成包就能发送完成,则可以DMA控制器向上位机发送一个读请求包,接收上位机返回的一个带有读请求包对应数据的读完成包;若需要读取的数量较大,需要多个读完成包才能发送完成,则可以DMA控制器向上位机发送多个读请求包,接收上位机返回的每个带有读请求包对应数据的对应的读完成包。本实施例对此不受任何限制。对于每个读完成所带数据的最大值可以由用户或设计人员根据实用场景和用户需求自行设置,本实施例对此同样不受任何限制。
对于多个读完成包的发送和对应的多个读完成包的接收的具体方式,可以依次进行,如发送一个读请求包并接收和读取读完成包的数据后,在发送下一个读请求包;也可以共同进行,如将全部读请求包发送或将预定个数的读请求包发送。本实施例对此不受任何限制。
可以理解的是,本步骤中的DMA控制器可以包含用于控制各个DMA通道的DMA读(数据从计算机内存传输到FPGA)和DMA写(数据从FPGA传输到计算机内存)操作的多通道DMA控制器、用于仲裁DMA通道,确定哪个DMA通道占用PCIe总线的链路的仲裁器和用于实现DMA读操作时管理读请求包和读完成包的对应关系,确保所有的读请求包所读取的数据都有上位机返回的读完成包。只要可以达到上述多通道DMA控制器、仲裁器和资源管理器的目的,对于DMA控制器的具体组成,本实施例不做任何限制。
步骤206:传输结束后,产生中断信息。
其中,数据传输结束后,DMA控制器可以产生中断信息。
步骤207:将中断信息以MSI中断方式或继承中断INTx方式发送到上位机。
其中,DMA控制器可以通过中断控制器根据预先的设置将中断信息以MSI中断方式或继承中断INTx方式发送到上位机,可以使上位机启动中断服务程序,判断DMA传输是否成功,如果不成功则可以根据用户需求进行重新传输,如果成功则可以继续下一次传输。对于上位机启动的中断服务程序的具体流程,本实施例不做任何限制。
可以理解的是,本实施所提供的方法主要展示的DMA控制器的内部流程,对于DMA控制器与上位机间的交互流程,可以如图3所示,在开始DMA传输之前,上位机首先判断缓存是否就绪,也就是判断缓存空间是否配置好,如果是DMA写,则上位机需要开辟一片空闲存储空间,而如果是DMA读,则上位机要将数据放在缓存空间中。当缓存空间配置好后,可启动DMA传输。上位机将DMA起始地址、DMA大小、DMA模式和启动DMA指令通过写寄存器的方式将DMA参数写入到BAR空间寄存器中,DMA控制器开始数据传输。当DMA传输结束后,DMA控制器产生中断,中断控制器根据预先的设置将中断信息以MSI中断方式或者继承中断INTx方式发送到上位机。上位机收到中断后进入中断服务程序,首先通过读取BAR空间寄存器判断DMA传输是否成功,如果传输不成功则根据需要进行重传,如果传输成功则继续下一次DMA传输,直到用户终止DMA传输。本实施例对此不受任何限制。
需要说明的是,本实施例中的DMA控制器可以通过PCIe IP核将PCIe总线上的高速串行差分电信号转换为FPGA内部的逻辑信号,也就是说DMA控制器可以通过PCIe IP核从PCIe总线接收上位机发送的控制指令和向上位机发送请求包和完成包。
本实施例中,本发明实施例通过先对控制指令进行解帧和命令解析,获取从事务请求;再对从事务请求进行处理,生成DMA参数;然后根据DMA参数,生成DMA控制信号,从而根据DMA控制信号从多个DMA通道中选择对应的DMA通道通过PCIe总线进行DMA读和/或DMA写,使得上位机可以通过写寄存器的方式将DMA参数写入到DMA控制器的BAR空间寄存器,实现对DMA控制器的控制,从而使不同种类的数据可以使用单独的DMA通道进行传输,避免了对每一种数据进行封包解包等复杂的处理方式,减少了时间消耗,提升了用户体验。
请参考图4、图5和图6,图4为本发明实施例所提供的一种基于PCIe的DMA数据传输系统的结构图;图5为本发明实施例所提供的一种基于PCIe的DMA数据传输系统的流程示意图;图6为为本发明实施例所提供的一种基于PCIe的DMA数据传输系统的DMA核子模块的工作状态转移示意图。该系统可以包括:
接收模块100,用于接收上位机发送的控制指令;其中,所述控制指令包括DMA起始地址、DMA大小、DMA模式和启动DMA指令;
DMA控制模块200,用于根据所述控制指令从多个DMA通道中选择对应的所述DMA通道通过PCIe总线对数据进行传输;其中,多个所述DMA通道相互独立。
可选的,所述DMA控制模块200,可以包括:
从事务子模块,用于对所述控制指令进行解帧和命令解析,获取从事务请求;
从事务管理子模块,用于对所述从事务请求进行处理,生成DMA参数;
DMA管理子模块,用于根据所述DMA参数,生成DMA控制信号;
DMA核子模块,用于根据所述DMA控制信号从多个所述DMA通道中选择对应的所述DMA通道通过所述PCIe总线进行DMA读和/或DMA写。
可选的,所述DMA核子模块,可以包括:
读请求包生成单元,用于若所述DMA控制信号中包含DMA读指令,则生成读请求包;
发送单元,用于将所述读请求包发送至所述上位机;
DMA读单元,通过所述PCIe总线接收所述上位机发送的带有数据的读完成包,并将所述读完成包中的所述数据写入到所述DMA控制信号对应的DMA通道的FIFO中;其中,所述读完成包中的所述数据为所述读请求包对应的所述上位机的缓存空间中的数据;
DMA写单元,用于若所述DMA控制信号中包含DMA写指令,则将所述DMA控制信号对应的DMA通道的FIFO中的数据生成写请求包,并通过所述发送单元发送至所述上位机;其中,每个所述DMA通道均存在独立的FIFO。
可选的,所述DMA核子模块,还可以包括:
中断生成单元,用于传输结束后,产生中断信息;
所述从事务管理子模块,还包括:
中断控制单元,用于将所述中断信息以MSI中断方式或继承中断INTx方式发送到上位机。
可选的,该系统还可以包括:
PCIe IP核模块,用于将所述PCIe总线上的高速串行差分电信号转换为FPGA内部的逻辑信号。
可选的,该系统还可以包括:
驱动程序模块,用于将对基地址寄存器读写和中断处理操作封装成为应用程序编程接口(Application Programming Interface,API)供应用程序使用;
应用程序模块,用于操作所述驱动程序模块提供的API接口对BAR空间寄存器进行读写,从而实现对DMA控制器的操作,进而控制DMA工作。
其中,发送单元可以将DMA核子模块传输要发送的事务请求,按照PCIe IP核模块发送接口的时序要求将数据组帧,然后将帧传输给PCIe IP核模块。发送单元处理的可以都是事务层数据包,主要包括数据请求包和完成包。数据请求包可以DMA写时向上位机发送的写请求包,数据完成包可以为DMA读时向上位机发送的读完成包。对于发送单元发送的请求包和数据包的类型,除了数据请求包和数据完成包,还可以包括如DMA读或DMA写配置完成包之类的其他请求包,可以由设计人员根据实用场景和用户需求自行设置,本实施例对此不受任何限制。
可以理解的是,对于基于PCIe的DMA数据传输系统的具体工作流程,可以如图5所示,图中PCIe IP可以为上述PCIe IP核模块,接收模块可以为上述接收模块100,从事务模块、从事务管理单元、DMA管理单元、DMA核和发送模块可以分别为上述DMA控制模块200的从事务子模块、从事务管理子模块、DMA管理子模块、DMA核子模块和发送单元。图中接收模块接收的请求包可以为上述控制指令也就是配置DMA信息的请求包,完成包可以为上位机返回的读完成包。图中DMA核向发送模块发送的请求包和完成包可以分别为读或写请求包和配置完成包。对于基于PCIe的DMA数据传输系统中具体的请求包和完成包的类型以及传输方式可以由设计人员根据实用场景或用户需要自行设置,本实施例对此不受任何限制。
需要说明的是,对于DMA控制模块200中DMA核子模块的工作状态,可以如图6所示,当正确的DMA参数由上位机写入BAR空间寄存器后,DMA控制器就开始运行。发送单元和接收模块100根据缓存空间使用情况向DMA核提出请求,DMA核收到传输请求后发送数据请求包,然后进入数据等待状态。如果DMA运行中应用终止DMA,则DMA控制器返回带有“完成包夭折”指示信息的状态。当所有完成包接收完毕后,一次DMA传输完成,DMA控制器进入空闲状态。
本实施例中,本发明实施例通过DMA控制模块200根据控制指令从多个DMA通道中选择对应的DMA通道通过PCIe总线对数据进行传输,可以使用多通道DMA实现FPGA与计算机之间的数据传输,使多种数据通过同一PCIe总线的链路进行独立传输,不同种类的数据可以使用单独的DMA通道进行传输,避免了对每一种数据进行封包解包等复杂的处理方式,减少了时间消耗,提升了用户体验。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的基于PCIe的DMA数据传输方法及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (10)

1.一种基于PCIe的DMA数据传输方法,其特征在于,包括:
接收上位机发送的控制指令;其中,所述控制指令包括DMA起始地址、DMA大小、DMA模式和启动DMA指令;
根据所述控制指令从多个DMA通道中选择对应的所述DMA通道通过PCIe总线对数据进行传输;其中,多个所述DMA通道相互独立。
2.根据权利要求1所述的基于PCIe的DMA数据传输方法,其特征在于,所述根据所述控制指令从多个DMA通道中选择对应的DMA通道通过PCIe总线对数据进行传输,包括:
对所述控制指令进行解帧和命令解析,获取从事务请求;
对所述从事务请求进行处理,生成DMA参数;
根据所述DMA参数,生成DMA控制信号;
根据所述DMA控制信号从多个所述DMA通道中选择对应的所述DMA通道通过所述PCIe总线进行DMA读和/或DMA写。
3.根据权利要求2所述的基于PCIe的DMA数据传输方法,其特征在于,所述根据所述DMA控制信号从多个所述DMA通道中选择对应的所述DMA通道通过所述PCIe总线进行DMA读和/或DMA写,包括:
若所述DMA控制信号中包含DMA读指令,则生成读请求包;
将所述读请求包发送至所述上位机;
通过所述PCIe总线接收所述上位机发送的带有数据的读完成包,并将所述读完成包中的所述数据写入到所述DMA控制信号对应的DMA通道的FIFO中;其中,所述读完成包中的所述数据为所述读请求包对应的所述上位机的缓存空间中的数据;
若所述DMA控制信号中包含DMA写指令,则将所述DMA控制信号对应的DMA通道的FIFO中的数据生成写请求包,并通过所述PCIe总线发送至所述上位机;其中,每个所述DMA通道均存在独立的FIFO。
4.根据权利要求3所述的基于PCIe的DMA数据传输方法,其特征在于,所述接收上位机发送的控制指令之前,还包括:
所述上位机对所述缓存空间进行配置。
5.根据权利要求1至4任一项所述的基于PCIe的DMA数据传输方法,其特征在于,所述根据所述控制指令从多个DMA通道中选择对应的所述DMA通道通过PCIe总线对数据进行传输之后,还包括:
传输结束后,产生中断信息;
将所述中断信息以MSI中断方式或继承中断INTx方式发送到上位机。
6.一种基于PCIe的DMA数据传输系统,其特征在于,包括:
接收模块,用于接收上位机发送的控制指令;其中,所述控制指令包括DMA起始地址、DMA大小、DMA模式和启动DMA指令;
DMA控制模块,用于根据所述控制指令从多个DMA通道中选择对应的所述DMA通道通过PCIe总线对数据进行传输;其中,多个所述DMA通道相互独立。
7.根据权利要求6所述的基于PCIe的DMA数据传输系统,其特征在于,所述DMA控制模块,包括:
从事务子模块,用于对所述控制指令进行解帧和命令解析,获取从事务请求;
从事务管理子模块,用于对所述从事务请求进行处理,生成DMA参数;
DMA管理子模块,用于根据所述DMA参数,生成DMA控制信号;
DMA核子模块,用于根据所述DMA控制信号从多个所述DMA通道中选择对应的所述DMA通道通过所述PCIe总线进行DMA读和/或DMA写。
8.根据权利要求7所述的基于PCIe的DMA数据传输系统,其特征在于,所述DMA核子模块,包括:
读请求包生成单元,用于若所述DMA控制信号中包含DMA读指令,则生成读请求包;
发送单元,用于将所述读请求包发送至所述上位机;
DMA读单元,通过所述PCIe总线接收所述上位机发送的带有数据的读完成包,并将所述读完成包中的所述数据写入到所述DMA控制信号对应的DMA通道的FIFO中;其中,所述读完成包中的所述数据为所述读请求包对应的所述上位机的缓存空间中的数据;
DMA写单元,用于若所述DMA控制信号中包含DMA写指令,则将所述DMA控制信号对应的DMA通道的FIFO中的数据生成写请求包,并通过所述发送单元发送至所述上位机;其中,每个所述DMA通道均存在独立的FIFO。
9.根据权利要求6至8任一项所述的基于PCIe的DMA数据传输系统,其特征在于,所述DMA核子模块,还包括:
中断生成单元,用于传输结束后,产生中断信息;
所述从事务管理子模块,还包括:
中断控制单元,用于将所述中断信息以MSI中断方式或继承中断INTx方式发送到上位机。
10.根据权利要求9所述的基于PCIe的DMA数据传输系统,其特征在于,还包括:
PCIe IP核模块,用于将所述PCIe总线上的高速串行差分电信号转换为FPGA内部的逻辑信号。
CN201710156750.1A 2017-03-16 2017-03-16 一种基于PCIe的DMA数据传输方法及系统 Active CN106951388B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710156750.1A CN106951388B (zh) 2017-03-16 2017-03-16 一种基于PCIe的DMA数据传输方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710156750.1A CN106951388B (zh) 2017-03-16 2017-03-16 一种基于PCIe的DMA数据传输方法及系统

Publications (2)

Publication Number Publication Date
CN106951388A true CN106951388A (zh) 2017-07-14
CN106951388B CN106951388B (zh) 2020-06-30

Family

ID=59472739

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710156750.1A Active CN106951388B (zh) 2017-03-16 2017-03-16 一种基于PCIe的DMA数据传输方法及系统

Country Status (1)

Country Link
CN (1) CN106951388B (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107807558A (zh) * 2017-09-28 2018-03-16 国营芜湖机械厂 基于pci9054的多总线通信板卡电路及控制方法
WO2019072111A1 (zh) * 2017-10-09 2019-04-18 阿里巴巴集团控股有限公司 Fpga设备、基于fpga设备的云系统
WO2019084789A1 (zh) * 2017-10-31 2019-05-09 深圳市大疆创新科技有限公司 直接存储器访问控制器、数据读取方法和数据写入方法
CN109739786A (zh) * 2019-01-08 2019-05-10 郑州云海信息技术有限公司 一种dma控制器和异构加速系统
CN109753461A (zh) * 2019-01-31 2019-05-14 郑州云海信息技术有限公司 一种dma设备及数据传输的方法
CN110825674A (zh) * 2019-10-30 2020-02-21 北京计算机技术及应用研究所 基于fpga的pcie dma交互系统及交互方法
WO2020037621A1 (zh) * 2018-08-23 2020-02-27 深圳市汇顶科技股份有限公司 一种主芯片、从芯片及芯片间的dma传输系统
CN110865953A (zh) * 2019-10-08 2020-03-06 华南师范大学 异步拷贝方法和装置
CN111090221A (zh) * 2019-12-05 2020-05-01 合肥芯碁微电子装备股份有限公司 用于直写式光刻系统中的PCIe DMA数据传输系统及其传输方法
CN111427816A (zh) * 2020-03-04 2020-07-17 深圳震有科技股份有限公司 一种amp系统核间通讯方法、计算机设备及存储介质
CN111666237A (zh) * 2020-06-08 2020-09-15 王斌 具有高速缓存管理功能的dma控制器
CN112181890A (zh) * 2020-09-30 2021-01-05 北京锐马视讯科技有限公司 Pcie_dma数据传输装置和方法及系统
CN112217851A (zh) * 2019-07-12 2021-01-12 西安诺瓦星云科技股份有限公司 数据传输方法、数据传输装置以及电子设备
CN112488293A (zh) * 2020-11-19 2021-03-12 山东产研鲲云人工智能研究院有限公司 运行深度学习网络的方法及装置
US10990544B2 (en) 2019-05-10 2021-04-27 Nxp Usa, Inc. PCIE root complex message interrupt generation method using endpoint
CN110083461B (zh) * 2019-03-29 2021-09-24 郑州信大捷安信息技术股份有限公司 一种基于fpga的多任务处理系统及方法
CN114546917A (zh) * 2022-01-29 2022-05-27 山东云海国创云计算装备产业创新中心有限公司 一种fpga侧辅助ip系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101504633A (zh) * 2009-03-27 2009-08-12 北京中星微电子有限公司 一种多通道dma控制器
CN102231142A (zh) * 2011-07-21 2011-11-02 浙江大学 一种带有仲裁器的多通道dma控制器
US8677044B1 (en) * 2012-10-25 2014-03-18 Qlogic, Corporation Method and system for communication using multiple DMA channels
CN105224482A (zh) * 2015-10-16 2016-01-06 浪潮(北京)电子信息产业有限公司 一种fpga加速卡高速存储系统
CN105528319A (zh) * 2015-12-07 2016-04-27 中国电子科技集团公司第三十二研究所 基于fpga的加速卡及其加速方法
CN106034199A (zh) * 2015-03-18 2016-10-19 中国科学院苏州纳米技术与纳米仿生研究所 一种模拟数据源的图像采集装置和方法
US20170004092A1 (en) * 2015-06-30 2017-01-05 Microsoft Technology Licensing, Llc Direct memory access with filtering

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101504633A (zh) * 2009-03-27 2009-08-12 北京中星微电子有限公司 一种多通道dma控制器
CN102231142A (zh) * 2011-07-21 2011-11-02 浙江大学 一种带有仲裁器的多通道dma控制器
US8677044B1 (en) * 2012-10-25 2014-03-18 Qlogic, Corporation Method and system for communication using multiple DMA channels
CN106034199A (zh) * 2015-03-18 2016-10-19 中国科学院苏州纳米技术与纳米仿生研究所 一种模拟数据源的图像采集装置和方法
US20170004092A1 (en) * 2015-06-30 2017-01-05 Microsoft Technology Licensing, Llc Direct memory access with filtering
CN105224482A (zh) * 2015-10-16 2016-01-06 浪潮(北京)电子信息产业有限公司 一种fpga加速卡高速存储系统
CN105528319A (zh) * 2015-12-07 2016-04-27 中国电子科技集团公司第三十二研究所 基于fpga的加速卡及其加速方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
任家富等: "《数据采集与总线技术》", 30 September 2008, 北京航空航天大学出版社 *
张洋等: "《精通STM32F4(库函数版)》", 30 April 2015, 北京航空航天大学出版社 *

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107807558B (zh) * 2017-09-28 2024-03-22 国营芜湖机械厂 基于pci9054的多总线通信板卡电路及控制方法
CN107807558A (zh) * 2017-09-28 2018-03-16 国营芜湖机械厂 基于pci9054的多总线通信板卡电路及控制方法
US11048826B2 (en) 2017-10-09 2021-06-29 Alibaba Group Holding Limited FPGA device and cloud system based on FPGA device
WO2019072111A1 (zh) * 2017-10-09 2019-04-18 阿里巴巴集团控股有限公司 Fpga设备、基于fpga设备的云系统
WO2019084789A1 (zh) * 2017-10-31 2019-05-09 深圳市大疆创新科技有限公司 直接存储器访问控制器、数据读取方法和数据写入方法
US11188486B2 (en) 2018-08-23 2021-11-30 Shenzhen GOODIX Technology Co., Ltd. Master chip, slave chip, and inter-chip DMA transmission system
WO2020037621A1 (zh) * 2018-08-23 2020-02-27 深圳市汇顶科技股份有限公司 一种主芯片、从芯片及芯片间的dma传输系统
CN109739786A (zh) * 2019-01-08 2019-05-10 郑州云海信息技术有限公司 一种dma控制器和异构加速系统
CN109739786B (zh) * 2019-01-08 2022-02-18 郑州云海信息技术有限公司 一种dma控制器和异构加速系统
CN109753461B (zh) * 2019-01-31 2022-02-18 郑州云海信息技术有限公司 一种dma设备及数据传输的方法
CN109753461A (zh) * 2019-01-31 2019-05-14 郑州云海信息技术有限公司 一种dma设备及数据传输的方法
CN110083461B (zh) * 2019-03-29 2021-09-24 郑州信大捷安信息技术股份有限公司 一种基于fpga的多任务处理系统及方法
US10990544B2 (en) 2019-05-10 2021-04-27 Nxp Usa, Inc. PCIE root complex message interrupt generation method using endpoint
CN112217851A (zh) * 2019-07-12 2021-01-12 西安诺瓦星云科技股份有限公司 数据传输方法、数据传输装置以及电子设备
CN112217851B (zh) * 2019-07-12 2023-05-12 西安诺瓦星云科技股份有限公司 数据传输方法、数据传输装置以及电子设备
CN110865953A (zh) * 2019-10-08 2020-03-06 华南师范大学 异步拷贝方法和装置
CN110825674A (zh) * 2019-10-30 2020-02-21 北京计算机技术及应用研究所 基于fpga的pcie dma交互系统及交互方法
CN111090221B (zh) * 2019-12-05 2021-10-26 合肥芯碁微电子装备股份有限公司 用于直写式光刻系统中的PCIe DMA数据传输系统及其传输方法
CN111090221A (zh) * 2019-12-05 2020-05-01 合肥芯碁微电子装备股份有限公司 用于直写式光刻系统中的PCIe DMA数据传输系统及其传输方法
CN111427816A (zh) * 2020-03-04 2020-07-17 深圳震有科技股份有限公司 一种amp系统核间通讯方法、计算机设备及存储介质
CN111666237A (zh) * 2020-06-08 2020-09-15 王斌 具有高速缓存管理功能的dma控制器
CN112181890A (zh) * 2020-09-30 2021-01-05 北京锐马视讯科技有限公司 Pcie_dma数据传输装置和方法及系统
CN112488293A (zh) * 2020-11-19 2021-03-12 山东产研鲲云人工智能研究院有限公司 运行深度学习网络的方法及装置
CN112488293B (zh) * 2020-11-19 2022-12-09 山东产研鲲云人工智能研究院有限公司 运行深度学习网络的方法及装置
CN114546917A (zh) * 2022-01-29 2022-05-27 山东云海国创云计算装备产业创新中心有限公司 一种fpga侧辅助ip系统

Also Published As

Publication number Publication date
CN106951388B (zh) 2020-06-30

Similar Documents

Publication Publication Date Title
CN106951388A (zh) 一种基于PCIe的DMA数据传输方法及系统
CN105224482B (zh) 一种fpga加速卡高速存储系统
CN106951379B (zh) 一种基于axi协议的高性能ddr控制器及数据传输方法
CN108228492B (zh) 一种多通道ddr交织控制方法及装置
CN103366794B (zh) 用于减少接脚数内存总线接口的装置及方法
WO2023284169A1 (zh) 从axi总线到opb总线的数据写入方法及读取方法
CN103064805B (zh) Spi控制器及通信方法
CN110109626B (zh) 一种基于FPGA的NVMe SSD命令处理方法
CN102841871B (zh) 基于高速串行总线的DMA结构的pipeline读写方法
CN105302612A (zh) 快速升级电子系统机箱内单片机软件程序的方法
CN111931442B (zh) Fpga内嵌flash控制器及电子装置
CN106933760A (zh) 一种基于axi协议的dma控制器及数据上传方法
TW201822010A (zh) 資料儲存裝置與資料傳輸速率控制方法
US8943240B1 (en) Direct memory access and relative addressing
CN108595350A (zh) 一种基于axi的数据传输方法和装置
CN105579952B (zh) 利用伪停顿的高速通道上的emi抑制
CN113961494B (zh) 一种pcie总线与axi总线的桥接系统
CN103885900B (zh) 数据访问处理方法、PCIe设备和用户设备
CN116776781B (zh) 一种寄存器参数的管理方法、系统、设备及存储介质
CN107544937A (zh) 一种协处理器、数据写入方法和处理器
CN106610906A (zh) 一种数据访问方法及总线
CN106294225A (zh) 一种数据读取方法、对端设备及控制器
CN110489353A (zh) 一种提高固态硬盘带宽读取性能方法及装置
US9244824B2 (en) Memory sub-system and computing system including the same
CN107870885A (zh) 通信系统、装置及方法

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