CN108595353B - 一种基于PCIe总线的控制数据传输的方法及装置 - Google Patents
一种基于PCIe总线的控制数据传输的方法及装置 Download PDFInfo
- Publication number
- CN108595353B CN108595353B CN201810312335.5A CN201810312335A CN108595353B CN 108595353 B CN108595353 B CN 108595353B CN 201810312335 A CN201810312335 A CN 201810312335A CN 108595353 B CN108595353 B CN 108595353B
- Authority
- CN
- China
- Prior art keywords
- fpga
- data
- pcie bus
- memory
- instruction
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI 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
本申请提供一种基于PCIe总线的控制数据传输的方法,其特征在于,所述方法应用于具有直接内存存取控制器DMAC模块的FPGA,所述FPGA通过PCIe总线与计算机的CPU连接,该方法包括:DMAC模块接收所述CPU发送的直接内存存取DMA指令;获得所述DMA指令中指定的外部设备的信息,并将获得的信息发送至FPGA的转换模块,以使转换模块根据该获得的信息,确定所述外部设备的状态、及连接所述外部设备与FPGA的目标总线的状态;在接收到转换模块根据确定的状态发出的响应后,获取PCIe总线控制权,并使用PCIe总线控制权,根据所述DMA指令,控制FPGA与计算机的内存进行数据传输。应用本申请方案,在FPGA中加入DMAC模块控制PCIe总线的数据传输过程,减轻CPU的负荷。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于PCIe总线的控制数据传输的方法及装置。
背景技术
PCIe(Peripheral Component Interconnect Express,快捷外设互联标准)总线作为一种高性能局部总线,在计算机系统中广泛应用于连接CPU与外部设备。随着计算机系统性能、功能和带宽的日益提高与增长,需要CPU能够同时连接更多的、基于不同协议的外部设备,因此可以通过FPGA丰富的外部接口与内部资源,在实现PCIe协议与其他协议转换的同时,扩展PCIe端口的数量。
现有技术中,PCIe总线连接CPU与FPGA后,CPU通过FPGA实现内存与外部设备进行数据传输时,数据在内存与FPGA间的传输过程,通常需要由CPU控制,在传输完成之前CPU无法进行其他工作。因此,如果CPU与外部设备之间需要进行大量数据的传输时,这种数据传输方法将增加CPU的负荷,降低计算机系统的工作效率。
发明内容
有鉴于此,本申请提供一种基于PCIe总线的控制数据传输的方法及装置,技术方案如下:
一种基于PCIe总线的控制数据传输的方法,其特征在于,所述方法应用于具有直接内存存取控制器DMAC模块的FPGA,所述FPGA通过PCIe总线与计算机的CPU连接,该方法包括:
DMAC模块接收所述CPU发送的直接内存存取DMA指令;
获得所述DMA指令中指定的外部设备的信息,并将获得的信息发送至FPGA的转换模块,以使转换模块根据该获得的信息,确定所述外部设备的状态、及连接所述外部设备与FPGA的目标总线的状态;
在接收到转换模块根据确定的状态发出的响应后,获取PCIe总线控制权,并使用PCIe总线控制权,根据所述DMA指令,控制FPGA与计算机的内存进行数据传输。
一种基于PCIe总线的控制数据传输的装置,其特征在于,所述装置应用于具有直接内存存取控制器DMAC模块的FPGA,所述FPGA通过PCIe总线与计算机的CPU连接,该装置包括DMAC模块中的指令接收子模块、控制权获取子模块、及传输控制子模块:
所述指令接收子模块,用于接收所述CPU发送的直接内存存取DMA指令;
所述控制权获取子模块,用于获得所述DMA指令中指定的外部设备的信息,并将获得的信息发送至FPGA的转换模块,以使转换模块根据该获得的信息,确定所述外部设备的状态、及连接所述外部设备与FPGA的目标总线的状态,并在接收到转换模块根据确定的状态发出的响应后,获取PCIe总线控制权;
所述传输控制子模块,用于使用PCIe总线控制权,根据所述DMA指令,控制FPGA与计算机的内存进行数据传输。
本申请所提供的技术方案,在FPGA中加入DMAC(Direct Memory AccessController,直接内存存取控制器)模块,用于在CPU发出DMA指令后,首先确认指令中指定的外部设备、及连接的目标总线的状态,然后控制内存与FPGA内存储器间的数据传输,从而减少CPU进入数据传输进程的次数,使其可以进行其他工作,节约CPU资源,提高计算机系统的工作效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。此外,本申请中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是CPU、FPGA及外部设备的一种连接方式示意图;
图2是本申请基于PCIe总线的控制数据传输的方法的流程示意图;
图3是本申请实施例FPGA内部模块结构及与CPU、外部设备连接示意图;
图4是本申请实施例多方交互流程示意图;
图5是本申请基于PCIe总线的控制数据传输的装置的第一种结构示意图;
图6是本申请基于PCIe总线的控制数据传输的装置的第二种结构示意图;
图7是本申请基于PCIe总线的控制数据传输的装置的第三种结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
如图1所示,为通过FPGA扩展PCIe端口数量时,CPU、FPGA及外部设备的一种连接方式示意图。FPGA与CPU通过PCIe总线连接,并通过n个目标总线分别与n个外部设备连接,在FPGA内部通过转换模块实现PCIe协议与其他协议的转换。CPU通过FPGA实现内存与外部设备进行数据传输时,例如将内存中的数据发送至外部设备1,则内存中的数据将通过PCIe总线传输到FPGA,FPGA内部可以通过PCIe端口接收,并发送至转换模块进行解析,提取出需要发送给外部设备1的数据,并根据目标总线1的要求进行封装,然后从I/O端口1通过目标总线1发送至外部设备1。而所连接的某一外部设备,如外部设备n,向CPU发送数据时,首先通过连接的目标总线n将数据从I/O端口n发送至FPGA,转换模块解析数据并提取出需要发送给CPU的数据,然后将数据从PCIe端口通过PCIe总线发送至内存。
数据在内存与FPGA间的传输过程,通常需要由CPU控制、占用CPU的进程,在传输完成之前,CPU将无法进行其他工作,因此,如果CPU与外部设备之间需要进行大量数据的传输时,这种数据传输方法将更多地占用CPU进程,进而增加CPU的负荷,降低计算机系统的工作效率。
为了避免上述技术问题,本申请提供一种基于PCIe总线的控制数据传输的方法,该方法应用于具有直接内存存取控制器DMAC模块的FPGA,CPU只需要对CPU与FPGA传输数据的过程进行初始化,然后由DMAC模块控制数据传输过程,从而将CPU从数据传输的任务中分离出,以减轻CPU的负荷。
参见图2所示,该方法可以包括以下步骤:
S101,DMAC模块接收所述CPU发送的直接内存存取DMA指令;
本申请方案中,如果CPU需要向外部设备发送数据、或者从外部设备接收数据,首先将向DMAC模块发送直接内存存取DMA指令,此外,如果是由外部设备发起的数据传输,可以由外部设备通知FPGA,FPGA中的DMAC模块接收到内存数据传输请求后,根据该请求向CPU发起DMA请求,再由CPU根据DMA请求发出相应的DMA指令。
S102,获得所述DMA指令中指定的外部设备的信息,并将获得的信息发送至FPGA的转换模块,以使转换模块根据该获得的信息,确定所述外部设备的状态、及连接所述外部设备与FPGA的目标总线的状态;
DMAC模块接收到CPU发送的DMA指令后,将根据该DMA指令获取PCIe总线控制权。可以理解的是,DMAC模块获得PCIe总线控制器之后,在控制数据传输的过程中,并非完全占用PCIe总线,其他进程仍可以使用PCIe总线进行其他的数据传输。
具体地,DMAC模块首先获得DMA指令中指定的外部设备的信息,例如,如果DMA指令中指定了与CPU进行数据传输的外部设备,并且FPGA中预先保存了所连接的各个外部设备的对应信息,则可以在预先保存的信息中获得DMA指令中指定的外部设备的信息;如果DMA指令中包括了指定外部设备的信息,则可以由DMA指令直接获得;等等。然后将获得的信息发送至FPGA的转换模块,由转换模块根据该获得的信息,确定DMA指令中指定的外部设备的状态,如是否在位、是否正常等,并确定连接该外部设备与FPGA的目标总线的状态,如总线占用或空闲等。如果转换模块确定该外部设备及目标总线可以进行数据传输,如外部设备为正常状态、目标总线为空闲状态等,则响应DMAC模块,DMAC模块接收到响应后便可以获取PCIe总线控制权。
此外,在本申请的一种具体实施方式中,DMAC模块接收到转换模块的响应后,向裁决PCIe总线控制权的PCIe总线裁决器发出PCIe总线控制权请求,在CPU通过PCIe总线向FPGA的DMAC模块发送DMA指令时,PCIe总线的控制器在CPU处,而CPU发出DMA指令后将释放PCIe总线控制权,PCIe总线裁决器接收到DMAC模块的PCIe总线控制器请求后,便会在CPU释放PCIe总线控制权后,响应DMAC模块的PCIe总线控制器请求,DMAC模块将获得PCIe总线控制权。
S103,在接收到转换模块根据确定的状态发出的响应后,获取PCIe总线控制权,并使用PCIe总线控制权,根据所述DMA指令,控制FPGA与计算机的内存进行数据传输。
DMAC模块获得PCIe总线控制权后,即可根据所述DMA指令,控制FPGA与计算机的内存通过PCIe总线进行数据传输。
在本申请的一种具体实施方式中,无论CPU与外部设备间进行的数据传输,是由直接CPU发起的、或是由外部设备通过CPU发起的,均需要从内存中读或写数据,因此DMA指令中可以包括针对内存中数据的操作指令、及该数据在内存中的存储地址。因此DMAC模块使用PCIe总线控制权控制FPGA与计算机的内存进行数据传输时,首先需要确定DMA指令中的数据操作指令、及数据在内存中的存储地址,如果确定为读指令,则根据DMA指令中包括的存储地址,即需要读取的数据在内存中的存储地址,从内存中读取数据写入FPGA的数据缓存中;如果确定为写指令,则从FPGA的数据缓存中读取数据,并根据DMA指令中包括的存储地址,即数据需要写入内存中存储的地址,将数据写入内存中。
此外,由于PCIe总线和目标总线的传输速率可能有差异,通常数据通过PCIe总线在内存与FPGA间传输的速率,大于通过目标总线在外部设备与FPGA间的传输速率,因此CPU与外部设备进行数据传输时,可以在FPGA的数据缓存中进行缓存。
在确定为读指令进而需要向FPGA的数据缓存中写入数据时,FPGA的数据缓存中可能有已从内存中读取、且还未写入外部设备的存储器的数据,因此可以首先检测FPGA的数据缓存中是否存在剩余空间,如果FPGA的数据缓存中无剩余空间则可以停留在检测状态,反复进行检测,直到检测到FPGA的数据缓存中存在剩余空间后,再将内存数据写入。
在确定为写指令进而需要从FPGA的数据缓存中读取数据时,FPGA的数据缓存中可能还未写入从外部设备的存储器读取的数据,因此可以首先检测FPGA的数据缓存中是否存在已写入数据,如果FPGA的数据缓存中无已写入数据则可以停留在检测状态,反复进行检测,直到检测到FPGA的数据缓存中存在已写入数据后,再将数据写入内存中。
DMAC模块控制FPGA与计算机的内存,通过PCIe总线完成数据传输后,可以将数据传输结果上报CPU,由CPU检测本次由DMAC控制的数据传输的正确性。具体地,首先确定FPGA与外部设备完成了数据传输,获得FPGA与内存、及FPGA与外部设备的数据传输结果,将结果上报CPU、通知CPU获取PCIe总线控制权,CPU获得PCIe总线控制权后,即可根据DMAC上报的结果检测本次FPGA与内存、及FPGA与外部设备数据传输的正确性。
下面通过一个具体实施例,对本申请方案中CPU与FPGA、及FPGA与外部设备的数据传输方式进行详细描述:
本具体实施例中,CPU、FPGA、外部设备三者间的连接,及FPGA内部模块的结构可以如图3所示。FPGA与CPU通过PCIe总线连接,并通过n个目标总线分别与n个外部设备连接,其中不同的外部设备支持不同的协议类型,因而在FPGA内部通过转换模块,实现PCIe协议与其他协议的转换。CPU初始化内存与FPGA的数据传输后,由DMAC模块控制后续的数据传输过程,并由转换模块控制FPGA与对应外部设备间的数据传输。DMAC模块及转换模块的功能均可通过编程实现。
由于PCIe总线和目标总线的传输速率可能不同,因此DMAC模块与转换模块之间需要对由内存及外部设备写入FPGA的数据进行缓存,如图3所示,可以分别由内存数据缓存与设备数据缓存负责。此外,DMAC模块与转换模块之间,可以通过信息通道传递各种信息,如操作指令(读或写指令)、外部设备信息(外部设备内部地址信息等)、外部设备状态(是否在位、是否正常等)、目标总线状态(总线占用或空闲等)、请求和响应信号(转换模块与DMAC模块间的请求和响应信号等)、等等。FPGA内部的PCIe端口,可以使用SerDes接口和PCIe IP实现,也可以使用FPGA外部的专用芯片实现,各个I/O端口则可以根据各个目标总线的要求进行配置。
本具体实施例中,CPU与某一外部设备进行数据传输时,各方的交互流程可以如图4所示。
本申请实施例中,无论数据传输的发起方是CPU或者外部设备,均需由CPU向DMAC模块发送DMA指令,以初始化DMA数据传输过程。因此,如果某一外部设备,如外部设备1,需要读取内存中的数据、或向内存中写数据,则首先向转换模块发送数据操作请求,请求中可以包括外部设备1的信息、读/写指令、指定数据的存储地址及数据大小等信息。转换模块通过目标总线1接收到该请求后,根据目标总线1的格式解析该请求得到上述信息,并通知DMAC模块,由DMAC模块通过PCIe总线将上述信息上报CPU,使CPU生成上述信息的DMA指令,并通过PCIe总线将该指令发送至DMAC模块,例如,DMAC可以将上述信息写入PCIe BAR空间寄存器并通知CPU。CPU接收到DMAC的通知后,在结束当前任务进程后进入处理该通知的进程,读取BAR空间寄存器中的信息并发送DMA指令。如果是CPU需要将内存中的数据写入外部设备1的存储器中、或需要读取该存储器中的数据,则可以直接向DMAC模块发送包括上述信息的DMA指令。
DMAC模块接收到DMA指令后,将解析得到其中包括的信息并发送至转换模块。转换模块接收到信息后,首先根据外部设备信息,确定指令中指定的外部设备,即外部设备1及目标总线1的状态,如外部设备1是否在位、是否正常等,目标总线1占用或空闲等,如果确认外部设备1目前在位、正常,且目标总线1目前空闲,则向DMAC模块发送响应信号。DMAC模块接收到响应信号后,向计算机系统的PCIe总线裁决器请求PCIe总线控制权,如果此时CPU已释放PCIe总线控制权,则PCIe总线裁决器将响应DMAC模块的请求。
DMAC模块获得PCIe总线控制权后,即可以控制FPGA与内存,通过PCIe总线进行数据传输,而CPU挂起或只执行内部操作。而FPGA与外部设备1间通过目标总线1进行的数据传输由转换模块控制。
如果DMA指令中包含读指令,则DMAC模块首先检测FPGA内部的内存数据缓存,如果内存数据缓存没有可继续写入的空间,则停留在该检测状态;如果内存数据缓存有可写入空间,则从内存中读取数据,写入内存数据缓存;由于PCIe总线和目标总线可能存在传输速率差异,如果写内存数据缓存过程中发生缓存被写满的状态,也需要返回上述检测状态。而转换模块首先检测内存数据缓存中是否有数据,如果内存数据缓存中没有数据,则停留在该检测状态;如果内存数据缓存中有数据,转换模块从内存数据缓存中读取数据,根据目标总线1的协议进行封装,发送给外部设备1;基于上述类似的原因,如果读内存数据缓存过程中发生被读空的情况,也需要返回上述检测状态。
如果DMA指令中包含写指令,则转换模块首先检测FPGA内部的设备数据缓存中是否有可写入空间,并采取上述的相应操作,如在设备数据缓存中有可写入空间时,从外部设备1读取数据,解包后写入设备数据缓存中,而DMAC模块首先检测设备数据缓存中是否有数据,并采取上述的相应操作,如在设备数据缓存中有数据时,读取数据写入内存中。
CPU与FPGA、FPGA与外部设备均完成指定数据的传输后,由DMAC模块检测CPU与FPGA之间的数据传输状态,接收并记录转换模块上报的FPGA与外部设备之间的数据传输状态,并将这些数据传输状态上报CPU,如写入BAR空间寄存器,然后向CPU发送中断信号,使CPU获得PCIe总线控制权。CPU获得PCIe总线控制权后进入中断服务进程,检查BAR空间寄存器中的数据,判断本次DMA传输操作正确性。
根据上述对具体实施例的描述可知,本申请方案在CPU初始化内存与FPGA的DMA数据传输后,由FPGA的DMAC模块控制内存与FPGA通过PCIe总线传输数据,并由FPGA的转换模块控制外部设备与FPGA通过目标总线传输数据。从而实现通过FPGA转换PCIe协议与外部设备使用的其他协议,扩展PCIe端口的数量,并减少CPU进入数据传输进程的次数,节约CPU资源,提高计算机系统的工作效率。
相应于上述方法实施例,本申请还提供一种基于PCIe总线的控制数据传输的装置,该装置应用于具有直接内存存取控制器DMAC模块的FPGA,所述FPGA通过PCIe总线与计算机的CPU连接,参见图5所示,该装置可以包括DMAC模块中的指令接收子模块、控制权获取子模块、及传输控制子模块:
所述指令接收子模块110,用于接收所述CPU发送的直接内存存取DMA指令;
所述控制权获取子模块120,用于获得所述DMA指令中指定的外部设备的信息,并将获得的信息发送至FPGA的转换模块,以使转换模块根据该获得的信息,确定所述外部设备的状态、及连接所述外部设备与FPGA的目标总线的状态,并在接收到转换模块根据确定的状态发出的响应后,获取PCIe总线控制权;
所述传输控制子模块130,用于使用PCIe总线控制权,根据所述DMA指令,控制FPGA与计算机的内存进行数据传输。
在本申请的一种具体实施方式中,所述控制器获取单元,具体可以用于:
在接收到转换模块根据确定的状态发出的响应后,向PCIe总线裁决器发出PCIe总线控制权请求,以使PCIe总线裁决器在CPU释放PCIe总线控制权后,响应该PCIe总线控制权请求。
在本申请的一种具体实施方式中,所述传输控制子模块130,可以包括:
指令确定单元,用于确定DMA指令中的数据操作指令、及数据在内存中的存储地址;
读指令执行单元,用于在确定的数据操作指令为读指令的情况下,根据确定的存储地址,从内存中读取数据并写入FPGA的数据缓存中;
写指令单元,用于在确定的数据操作指令为写指令的情况下,从FPGA的数据缓存中读取数据,并根据确定的存储地址写入内存中。
在本申请的一种具体实施方式中,所述读指令执行单元,具体可以用于:
在确定的数据操作指令为读指令的情况下,检测FPGA的数据缓存中是否存在剩余空间;
在检测到FPGA的数据缓存中存在剩余空间的情况下,根据确定的存储地址,从内存中读取数据并写入FPGA的数据缓存中。
在本申请的一种具体实施方式中,所述写指令执行单元,具体可以用于:
在确定的数据操作指令为写指令的情况下,检测FPGA的数据缓存中是否存在已写入数据;
在检测到FPGA的数据缓存中存在已写入数据的情况下,读取该已写入数据,并根据确定的存储地址写入内存中。
在本申请的一种具体实施方式中,参见图6所示,该装置可以进一步包括:
结果获得子模块140,用于在确定FPGA与外部设备完成数据传输的情况下,获得FPGA与内存、及FPGA与外部设备的数据传输结果;
结果上报子模块150,用于将获得的数据传输结果上报CPU,并通知CPU获取PCIe总线控制权,以使CPU在获得PCIe总线控制权后,根据上报的数据传输结果,检测本次FPGA与内存、及FPGA与外部设备数据传输的正确性。
在本申请的一种具体实施方式中,参见图7所示,该装置还可以包括:
传输请求接收子模块160,用于接收内存数据传输请求;
DMA发起子模块170,用于根据接收的内存数据传输请求,向CPU发起DMA请求,以使CPU根据该DMA请求,发出相应的DMA指令。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种基于PCIe总线的控制数据传输的方法,其特征在于,所述方法应用于具有直接内存存取控制器DMAC模块的FPGA,所述FPGA通过PCIe总线与计算机的CPU连接,所述FPGA通过n个目标总线分别与n个外部设备连接,所述外部设备基于不同于PCIe协议的其他协议;该方法包括:
DMAC模块接收所述CPU发送的直接内存存取DMA指令;
DMAC模块获得所述DMA指令中指定的外部设备的信息,并将获得的信息发送至FPGA的转换模块,以使转换模块根据该获得的信息,确定所述指定的外部设备的状态、及连接所述指定的外部设备与FPGA的目标总线的状态;
DMAC模块在接收到转换模块根据确定的状态发出的响应后,获取PCIe总线控制权,并使用PCIe总线控制权,根据所述DMA指令,控制FPGA与计算机的内存进行数据传输;
所述转换模块控制FPGA与所述指定的外部设备间进行数据传输,并在进行数据传输时,控制实现PCIe协议与所述指定的外部设备所基于的协议的转换。
2.根据权利要求1所述的方法,其特征在于,在接收到转换模块根据确定的状态发出的响应后,获取PCIe总线控制权,包括:
在接收到转换模块根据确定的状态发出的响应后,向PCIe总线裁决器发出PCIe总线控制权请求,以使PCIe总线裁决器在CPU释放PCIe总线控制权后,响应该PCIe总线控制权请求。
3.根据权利要求1所述的方法,其特征在于,所述使用PCIe总线控制权,根据所述DMA指令,控制FPGA与计算机的内存进行数据传输,包括:
确定DMA指令中的数据操作指令、及数据在内存中的存储地址;
在确定的数据操作指令为读指令的情况下,根据确定的存储地址,从内存中读取数据并写入FPGA的数据缓存中;
在确定的数据操作指令为写指令的情况下,从FPGA的数据缓存中读取数据,并根据确定的存储地址写入内存中。
4.根据权利要求3所述的方法,其特征在于,所述在确定的数据操作指令为读指令的情况下,根据确定的存储地址,从内存中读取数据并写入FPGA的数据缓存中,包括:
在确定的数据操作指令为读指令的情况下,检测FPGA的数据缓存中是否存在剩余空间;
在检测到FPGA的数据缓存中存在剩余空间的情况下,根据确定的存储地址,从内存中读取数据并写入FPGA的数据缓存中。
5.根据权利要求3所述的方法,其特征在于,所述在确定的数据操作指令为写指令的情况下,从FPGA的数据缓存中读取数据,并根据确定的存储地址写入内存中,包括:
在确定的数据操作指令为写指令的情况下,检测FPGA的数据缓存中是否存在已写入数据;
在检测到FPGA的数据缓存中存在已写入数据的情况下,读取该已写入数据,并根据确定的存储地址写入内存中。
6.根据权利要求1所述的方法,其特征在于,在FPGA与内存完成数据传输后,该方法进一步包括:
在确定FPGA与外部设备完成数据传输的情况下,获得FPGA与内存、及FPGA与外部设备的数据传输结果;
将获得的数据传输结果上报CPU,并通知CPU获取PCIe总线控制权,以使CPU在获得PCIe总线控制权后,根据上报的数据传输结果,检测本次FPGA与内存、及FPGA与外部设备数据传输的正确性。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收内存数据传输请求;
根据接收的内存数据传输请求,向CPU发起DMA请求,以使CPU根据该DMA请求,发出相应的DMA指令。
8.一种基于PCIe总线的控制数据传输的装置,其特征在于,所述装置应用于具有直接内存存取控制器DMAC模块的FPGA,所述FPGA通过PCIe总线与计算机的CPU连接,所述FPGA通过n个目标总线分别与n个外部设备连接,所述外部设备基于不同于PCIe协议的其他协议;该装置包括DMAC模块中的指令接收子模块、控制权获取子模块及传输控制子模块,以及FPGA的转换模块:
所述指令接收子模块,用于接收所述CPU发送的直接内存存取DMA指令;
所述控制权获取子模块,用于获得所述DMA指令中指定的外部设备的信息,并将获得的信息发送至FPGA的转换模块,以使转换模块根据该获得的信息,确定所述指定的外部设备的状态、及连接所述指定的外部设备与FPGA的目标总线的状态,并在接收到转换模块根据确定的状态发出的响应后,获取PCIe总线控制权;
所述传输控制子模块,用于使用PCIe总线控制权,根据所述DMA指令,控制FPGA与计算机的内存进行数据传输;
所述转换模块用于控制FPGA与所述指定的外部设备间进行数据传输,并在进行数据传输时,控制实现PCIe协议与所述指定的外部设备所基于的协议的转换。
9.根据权利要求8所述的装置,其特征在于,所述控制器获取单元,具体用于:
在接收到转换模块根据确定的状态发出的响应后,向PCIe总线裁决器发出PCIe总线控制权请求,以使PCIe总线裁决器在CPU释放PCIe总线控制权后,响应该PCIe总线控制权请求。
10.根据权利要求8所述的装置,其特征在于,所述传输控制子模块包括:
指令确定单元,用于确定DMA指令中的数据操作指令、及数据在内存中的存储地址;
读指令执行单元,用于在确定的数据操作指令为读指令的情况下,根据确定的存储地址,从内存中读取数据并写入FPGA的数据缓存中;
写指令单元,用于在确定的数据操作指令为写指令的情况下,从FPGA的数据缓存中读取数据,并根据确定的存储地址写入内存中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810312335.5A CN108595353B (zh) | 2018-04-09 | 2018-04-09 | 一种基于PCIe总线的控制数据传输的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810312335.5A CN108595353B (zh) | 2018-04-09 | 2018-04-09 | 一种基于PCIe总线的控制数据传输的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108595353A CN108595353A (zh) | 2018-09-28 |
CN108595353B true CN108595353B (zh) | 2021-11-23 |
Family
ID=63621179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810312335.5A Active CN108595353B (zh) | 2018-04-09 | 2018-04-09 | 一种基于PCIe总线的控制数据传输的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108595353B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110209399B (zh) * | 2018-09-29 | 2022-02-08 | 腾讯科技(深圳)有限公司 | Fpga服务系统、数据处理方法及存储介质 |
CN109388597B (zh) * | 2018-09-30 | 2020-06-09 | 杭州迪普科技股份有限公司 | 一种基于fpga的数据交互方法及装置 |
CN109446130B (zh) * | 2018-10-29 | 2021-01-26 | 杭州迪普科技股份有限公司 | 一种i/o设备状态信息的获取方法及系统 |
CN109800202B (zh) * | 2019-01-17 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种基于pcie的数据传输系统、方法及装置 |
CN109766299A (zh) * | 2019-02-21 | 2019-05-17 | 苏州佳世达电通有限公司 | 一种电子装置及其数据传输方法 |
CN109828944B (zh) * | 2019-03-12 | 2024-08-30 | 深圳大普微电子科技有限公司 | 一种通信方法及通信系统 |
WO2020182135A1 (zh) * | 2019-03-12 | 2020-09-17 | 深圳大普微电子科技有限公司 | 一种通信方法及通信系统 |
CN109992560B (zh) * | 2019-03-12 | 2023-06-20 | 深圳大普微电子科技有限公司 | 一种通信方法及通信系统 |
CN110825674B (zh) * | 2019-10-30 | 2021-02-12 | 北京计算机技术及应用研究所 | 基于fpga的pcie dma交互系统及交互方法 |
CN111639038B (zh) * | 2020-05-25 | 2023-07-07 | 北京东土军悦科技有限公司 | Dma控制器的内存控制方法、装置、存储介质及设备 |
CN111651951B (zh) * | 2020-06-04 | 2024-08-13 | 上海思尔芯技术股份有限公司 | 一种fpga端口扩展的方法 |
CN111913897A (zh) * | 2020-08-11 | 2020-11-10 | 浙江鑫网能源工程有限公司 | 基于fpga的pci总线控制器及控制方法 |
CN112505527B (zh) * | 2020-12-10 | 2024-03-22 | 杭州迪普信息技术有限公司 | 一种检测集成电路缺陷的方法及装置 |
CN113676421B (zh) * | 2021-10-25 | 2022-01-28 | 之江实验室 | 一种基于PCIe的多端口网络报文收发方法 |
CN114415935B (zh) * | 2021-12-02 | 2024-03-12 | 深圳市乐升半导体有限公司 | 数据传输芯片、方法和电子设备 |
CN114043504B (zh) * | 2021-12-17 | 2023-04-18 | 库卡机器人制造(上海)有限公司 | 机器人系统 |
CN114398303B (zh) * | 2022-01-19 | 2022-10-28 | 扬州万方科技股份有限公司 | 一种实现低延时的数据传输方法及系统 |
CN114595171A (zh) * | 2022-02-21 | 2022-06-07 | 杭州加速科技有限公司 | 一种pcie转gpib的接口转换装置及其使用方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106997059A (zh) * | 2017-03-23 | 2017-08-01 | 中国科学技术大学 | 一种应用于海洋地震勘探拖缆系统的高速数据传输通用接口卡 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130232293A1 (en) * | 2012-03-05 | 2013-09-05 | Nguyen P. Nguyen | High performance storage technology with off the shelf storage components |
US9727510B2 (en) * | 2013-03-15 | 2017-08-08 | Micron Technology, Inc. | System and method for independent, direct and parallel communication among multiple field programmable gate arrays |
CN106487507A (zh) * | 2016-10-28 | 2017-03-08 | 成都力雅信息技术有限公司 | 一种数据加密的微盘控制系统 |
-
2018
- 2018-04-09 CN CN201810312335.5A patent/CN108595353B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106997059A (zh) * | 2017-03-23 | 2017-08-01 | 中国科学技术大学 | 一种应用于海洋地震勘探拖缆系统的高速数据传输通用接口卡 |
Also Published As
Publication number | Publication date |
---|---|
CN108595353A (zh) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108595353B (zh) | 一种基于PCIe总线的控制数据传输的方法及装置 | |
CN112765059A (zh) | 一种基于fpga的dma设备及dma数据搬移方法 | |
CN105573951B (zh) | 一种针对数据流传输的ahb总线接口系统 | |
US20060182040A1 (en) | Device and method for diagnosis in multi-channel-CAN-applications | |
EP2904765B1 (en) | Method and apparatus using high-efficiency atomic operations | |
JPH077374B2 (ja) | インタフェース回路 | |
CN108984442A (zh) | 一种基于二值化算法的加速控制系统、芯片及机器人 | |
CN107066413B (zh) | 一种用于处理多个总线设备数据的方法及其总线系统 | |
CN112947857B (zh) | 一种数据搬移方法、装置、设备及计算机可读存储介质 | |
US7962676B2 (en) | Debugging multi-port bridge system conforming to serial advanced technology attachment (SATA) or serial attached small computer system interface (SCSI) (SAS) standards using idle/scrambled dwords | |
US7124232B2 (en) | Bus connection circuit and bus connection system having plural request queues, a bus interface portion outputting request signals, an arbiter performing arbitration of plural requests and a bus interface portion outputting a request signal indicating allocation of pre-fetch buffers corresponding to arbitrated requests | |
CN106155971A (zh) | I2c总线的仲裁方法及装置 | |
CN113986513A (zh) | 主从架构芯片的主从核通信方法及系统 | |
CN109446130B (zh) | 一种i/o设备状态信息的获取方法及系统 | |
US7315913B2 (en) | CPU system, bus bridge, control method therefor, and computer system | |
CN114328357A (zh) | 用于裸芯的互联通信方法、系统和集成合封芯片 | |
US10095643B2 (en) | Direct memory access control device for at least one computing unit having a working memory | |
TWI750386B (zh) | 匯流排系統 | |
US6523077B1 (en) | Data processing apparatus and data processing method accessing a plurality of memories in parallel | |
CN103003806B (zh) | 一种配置pcie端口的方法、装置和设备 | |
US10713188B2 (en) | Inter-process signaling system and method | |
CN102984599B (zh) | 基于RapidIO协议网络的视频采集传输装置及方法 | |
CN111026699A (zh) | 基于环形总线的多核网络通信方法、装置及系统 | |
JP2006285872A (ja) | マルチcpuシステム | |
EP2800003B1 (en) | Method and device for realizing end-to-end hardware message passing |
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 |