CN112181890A - Pcie_dma数据传输装置和方法及系统 - Google Patents
Pcie_dma数据传输装置和方法及系统 Download PDFInfo
- Publication number
- CN112181890A CN112181890A CN202011063899.3A CN202011063899A CN112181890A CN 112181890 A CN112181890 A CN 112181890A CN 202011063899 A CN202011063899 A CN 202011063899A CN 112181890 A CN112181890 A CN 112181890A
- Authority
- CN
- China
- Prior art keywords
- data
- dma
- module
- pcie
- host
- 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.)
- Pending
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 141
- 238000000034 method Methods 0.000 title claims description 21
- 238000004891 communication Methods 0.000 claims abstract description 7
- 238000012546 transfer Methods 0.000 claims description 27
- 238000013519 translation Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 4
- 230000001960 triggered effect Effects 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- 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)
- Information Transfer Systems (AREA)
Abstract
本申请涉及一种PCIE_DMA数据传输装置,包括:FPGA模块;FPGA模块设置有PCIE硬核,并通过PCIE接口与主机通信连接;FPGA模块配置有DMA传输模块,DMA传输模块与用户层逻辑接口之间设置有DMA通道;DMA传输模块中的通道混合子模块,被配置为获取接收子模块传输的数据,并将由接收子模块传输的数据分配至DMA通道进行数据的传输;通道混合子模块,还被配置为接收各DMA通道传输的数据,并将各DMA通道传输的数据进行整合后发送至发送子模块。通过通道混合子模块与用户层逻辑接口之间所设置的DMA通道进行数据传入和传出,实现了单路数据传输和多路数据传输之间的自由转换,提高了数据传输的可扩展性。
Description
技术领域
本申请涉及数据传输技术领域,尤其涉及一种PCIE_DMA数据传输装置和方法及系统。
背景技术
PCIE(PCI Express)为第三代高性能I/O总线,具有速度快并且点对点串行传输,使两端设备可以独享带宽,扩展灵活方便等优点。其中,PCIE DMA数据传输技术通过对数据的直接存储访问,有效降低了数据传输对处理器资源的占用,能够显著提高系统运行效率。但是,现有的PCIE DMA数据传输技术基本上都是基于开源DMA传输修改的,而基于开源DMA所设计的PCIE数据传输,要么是单路传输,要么是多路传输,在需要单路到多路扩展时很难进行自由变换,从而使得现有的DMA数据传输的可扩展性较差。
发明内容
有鉴于此,本申请提出了一种PCIE_DMA数据传输装置,可以有效提高DMA数据传输的可扩展性。
根据本申请的一方面,提供了一种PCIE_DMA数据传输装置,包括:FPGA模块;
所述FPGA模块内设置有PCIE硬核,并通过PCIE接口与主机通信连接;
其中,所述FPGA模块配置有DMA传输模块,所述DMA传输模块包括接收子模块、发送子模块和通道混合子模块;
所述通道混合子模块与用户层逻辑接口之间设置有用于传输数据的DMA通道;
其中,所述接收子模块被配置为接收由所述FPGA模块内所配置的PCIE硬核输出的数据,并将所述PCIE硬核输出的数据进行处理后传输至所述通道混合子模块;
所述通道混合子模块,被配置为获取所述接收子模块传输的数据,并将由所述接收子模块传输的数据分配至相应的所述DMA通道,由所述DMA通道进行数据的传输;
所述通道混合子模块,还被配置为接收各所述DMA通道传输的数据,并将各所述DMA通道传输的数据进行整合后发送至所述发送子模块;
所述发送子模块,被配置为接收所述通道混合子模块传输的数据,并将所述通道混合子模块传输的数据发送至所述PCIE硬核,由所述PCIE硬核进行数据的传输。
在一种可能的实现方式中,所述PCIE硬核与所述DMA传输模块之间设置有用于表征所述PCIE硬核输出的工作状态的配置接口。
在一种可能的实现方式中,所述配置接口为CONFIG数据接口。
在一种可能的实现方式中,所述发送子模块包括AXIS发送接口,所述接收子模块包括AXIS接收接口。
在一种可能的实现方式中,所述通道混合子模块包括TLP包翻译模块、TLP包解析模块、寄存器接收模块、寄存器发送模块、内部RAM模块、用户外部逻辑状态接口模块、DMA数据接收模块、DMA数据发送模块和DMA中断生成模块;
所述TLP包翻译模块,用于对所述PCIE硬核输出和输入的数据进行TLP包翻译;
所述TLP包解析模块,用于将所述TLP包翻译模块处理后的数据进行解析,输出多路数据信号;
所述寄存器接收模块和所述寄存器发送模块,用于分别实现所述PCIE硬核的BAR寄存器空间的写操作和读操作;
所述内部RAM模块,用于存储所述BAR寄存器的数据;
所述用户外部逻辑状态接口模块,用于将所述FPGA模块的状态通过所述PCIE硬核传输至所述主机;
所述用户外部逻辑状态接口模块,还用于读取所述主机下发的状态;
所述DMA数据接收模块,用于接收所述主机下传的DMA数据,并将所述DMA数据存储到DMA接收FIFO;
所述DMA数据发送模块,用于接收所述用户层逻辑接口发送的DMA数据,并将接收到的所述DMA数据存储至DMA发送FIFO;
所述DMA中断生成模块,用于在DMA传输过程中,通过中断将数据的当前传输位置通知所述主机的驱动层。
根据本申请的另一方面,还提供了一种PCIE_DMA数据传输方法,基于前面任一所述的PCIE_DMA数据传输装置实现,包括读数据操作;
其中,所述读数据操作,包括:
在触发读数据操作指令时,所述FPGA模块读取所述读操作指令对应的读信号,根据所述读信号的信号类型确定读取数据长度,并将所述读取数据长度发送至主机,由主机接收到所述读取数据长度后,生成DMA传输地址链表,并将所述DMA传输地址链表发送至所述FPGA模块;
所述FPGA模块接收所述DMA传输地址链表,根据所述DMA传输地址链表中的地址,通过DMA方式将数据存储至相应的驱动程序地址中直至所有数据全部存储完成。
在一种可能的实现方式中,所述读操作还包括:
所述FPGA模块在将对应的所有数据均存储至所述驱动程序地址中后,发送数据传输完成指令至所述主机,由所述主机接收到所述数据传输完成指令后,将所述驱动程序地址中的所有数据返回至用户层。
在一种可能的实现方式中,还包括写数据操作;
所述写数据操作包括:
所述FPGA模块接收到所述主机下发的写数据传输信号后,清空相应的FIFO并复位状态机后发送写数据启动通知至所述主机;
其中,所述写数据传输信号由所述主机获取当前要写入的数据,生成相应的DMA传输地址链表后生成并下发至所述FPGA模块;
所述FPGA模块接收所述主机发起DMA写操作后所下发的DMA传输长度和所述DMA传输地址链表后,根据所述DMA传输地址链表读取所述主机的数据,并将读取到的数据存储至FIFO,直至所有数据读取完成。
在一种可能的实现方式中,所述写操作还包括:
在所述FPGA模块将所有数据读取完成后,发送数据读取完成通知至所述主机;
所述主机接收到所述数据读取完成通知后,返回写成功至用户层。
根据本申请的一方面,还提供了一种PCIE_DMA数据传输系统,包括主机和前面任一所述的PCIE_DMA数据传输装置;
其中,所述主机与所述PCIE_DMA数据传输装置中的FPGA模块通过PCIE接口通信连接;
所述主机配置有驱动层、内存模块和内核库模块;
所述驱动层,用于生成供用户应用程序读写操作的接口,以及DMA传输所需要的内存块;
所述内存模块,用于存储DMA传输时的数据;
所述内核库模块,用于提供驱动所述驱动层的驱动程序。
本申请的PCIE_DMA数据传输装置,通过在FPGA模块中设置PCIE硬核,由PCIE硬核进行与主机(即,PC机)之间的数据传输,同时还对应配置DMA传输模块,通过DMA传输模块中的通道混合子模块对PCIE硬核传输的数据进行处理。其中,通道混合子模块与用户层逻辑接口之间通过所设置的DMA通道进行数据传入和传出,所有经过通道传输的数据会在通道混合子模块进行统一收发,由此在进行数据传输时,用户可以根据实际需要灵活设置DMA通道的数量,从而实现单路数据传输和多路数据传输之间的自由转换,这也就有效提高了PCIE_DMA数据传输的可扩展性。
根据下面参考附图对示例性实施例的详细说明,本申请的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本申请的示例性实施例、特征和方面,并且用于解释本申请的原理。
图1示出本申请实施例的PCIE_DMA数据传输装置的工作原理框图;
图2示出本申请实施例的PCIE_DMA数据传输装置中DMA传输模块的结构框图;
图3示出本申请实施例的PCIE_DMA数据传输装置中PCIE操作说明框图。
具体实施方式
以下将参考附图详细说明本申请的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本申请,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本申请同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本申请的主旨。
图1示出根据本申请一实施例的PCIE_DMA数据传输装置的结构框图。其中,需要说明的是,本申请实施例的PCIE_DMA数据传输装置主要是基于FPGA来实现的。如图1所示,该装置包括FPGA模块100。其中,FPGA模块100内设置有PCIE硬核110,通过FPGA模块100的PCIE硬核110,采用PCIE接口300与主机200进行数据通信。其中,PCIE硬核110只接收和发送标准的TLP协议数据。
同时,在本申请实施例的PCIE_DMA数据传输装置中,FPGA模块100还配置有DMA传输模块120。参阅图1,DMA传输模块120包括接收子模块122、发送子模块121和通道混合子模块123。其中,通道混合子模块123与用户层逻辑接口400之间设置有两个以上用于传输数据的DMA通道130。
在执行写数据操作时,接收子模块122被配置为接收由FPGA模块100内所配置的PCIE硬核110输出的数据,并将PCIE硬核110输出的数据进行处理后传输至通道混合子模块123。通道混合子模块123则被配置为获取接收子模块122传输的数据,并将由接收子模块122传输的数据分配至相应的DMA通道130,由DMA通道130进行数据的传输。
在执行读数据操作时,通道混合子模块123还被配置为接收各DMA通道130传输的数据,并将各DMA通道130传输的数据进行整合后发送至发送子模块121。发送子模块121则被配置为接收通道混合子模块123整合后的数据,将整合后的数据发送至PCIE硬核110,由PCIE硬核110进行数据的传输。
由此,本申请实施例的PCIE_DMA数据传输装置,通过在FPGA模块100中设置PCIE硬核110,由PCIE硬核110进行与主机200(即,PC机)之间的数据传输,同时还对应配置DMA传输模块120,通过DMA传输模块120中的通道混合子模块123对PCIE硬核110传输的数据进行处理。其中,通道混合子模块123与用户层逻辑接口400之间通过所设置的DMA通道130进行数据传入和传出,所有经过DMA通道130传输的数据会在通道混合子模块123进行统一收发,由此在进行数据传输时,用户可以根据实际需要灵活设置DMA通道130的数量,从而实现单路数据传输和多路数据传输之间的自由转换,这也就有效提高了PCIE_DMA数据传输的可扩展性。
其中,在本申请实施例的PCIE_DMA数据传输装置中,数据传输的核心主要是在PCIE硬核110后的DMA传输上。具体的,DMA传输模块120在进行数据传输时,可以通过以下配置来实现。
参见图2,在本申请实施例的PCIE_DMA数据传输装置中PCIE传输分为两部分,一部分为少量数据的寄存器读写,用于控制整个FPGA模块100的工作状态,启动和完成DMA整体数据的传输。另一部分则是大量数据的DMA传输,支持双向同传,该部分则是通过DMA通道130来完成传输的。
同时,在一种可能的实现方式中,PCIE硬核110可以直接通过硬件的串并转换和8B/10B编解码转换来完成从PCIE接口300到AXIS协议接口的数据转换。如前面所述,PCIE硬核110对FPGA内可以设置三个接口:AXIS发送接口121a、AXIS接收接口122a和CONFIG配置接口。
即,发送子模块121可以通过AXIS发送接口121a来实现,接收子模块122则可以通过AXIS接收接口122a来实现。其中,AXIS发送接口121a是符合AXIS协议的TLP包,通过该接口发送给PCIE硬核110。AXIS接收接口122a则是PCIE硬核110直接输出AXIS协议的TLP包。PCIE硬核110与DMA传输模块120之间通过所设置的配置接口来表征PCIE硬核110输出的工作状态,通过该接口可以区分TLP包的种类和状态。
此外,参阅图2,在本申请实施例的PCIE_DMA数据传输装置中,通道混合子模块123还包括TLP包翻译模块1230、TLP包解析模块1231、寄存器接收模块1232、寄存器发送模块1233、内部RAM模块、用户外部逻辑状态接口模块、DMA数据接收模块1235、DMA数据发送模块1234和DMA中断生成模块1236。
其中,TLP包翻译模块1230,用于对PCIE硬核110输出和输入的数据进行TLP包翻译。也就是说,TLP包翻译模块1230是把PCIE硬核110输出和输入的信号进行TLP包翻译,TLP包有很多种类,需要根据CONFIG配置接口输出的数据进行重新分类和配置,才能转换为可解析的TLP包。反向操作则是把标准TLP包根据CONFIG配置接口数据配置,转换成PCIE硬核110可接受的数据包。
TLP包解析模块1231,用于将TLP包翻译模块1230处理后的数据进行解析,输出多路数据信号。其中,TLP包的包结构图如下:
参见表1,为PCIE的非报告事务和报告事务的划分:
表1
此外,TLP包总共可以分为9种,不同的TLP包通过包头区分,如:表2示出了事务类型TLP包头结构图,表3示出了3DW存储器读请求的TLP包头结构图,表4示出了4DW存储器读请求TLP包头结构。
表2
表3
表4
其中,关于TLP包头格式的解释具体如下:
(1)、头标格式Fmt[1:0],这两位编码是关于头标长度和该TLP是否有数据载荷的信息:00表示无数据3DW包头,01表示无数据4DW包头,10表示有数据3DW包头,11表示有数据4DW包头。
(2)、TLP的类型Type[4:0],这5位编码与Fmt字段一起用来规定事务类型,包头长度和是否有数据载荷。
(3)、传输类别TC[2:0],这3位是设备核施加于请求TLP及完成TLP的传输类别编号,TC0是默认编号,TC1-TC7用来要求对TLP提供有区别的服务。
(4)、TLP摘要字段存在,如果设置为1,可选的一个双字的TLP摘要字段要包含在此TLP中,而且该TLP包含ECRC值。
(5)、错误和中毒位EP,此位为1时,尽管允许事务正常完成,但应将包中的数据视为无效。
(6)、属性Attr,位5为宽松排序位,值为1时,使能PCI-X式的宽松排序;值为0时,使用PCI式的严格排序。位4为不监听Cache位,值为1时,表明本TLP不存在处理器Cache监听。
(7)、长度Length[9:0],本TLP的数据有效载荷长度,以双字DW为单位,最大长度为1024个双字。
(8)、第一个双字的字节使能,这4个高为真的位与数据载荷第一个双字中的4字节一一对应,表明相应的字节有效。
(9)、最后一个双字的字节使能,这4个高为真的位与数据载荷最后一个双字中的4字节一一对应,表明相应的字节有效。
通过对以上TLP包头的解析,TLP包解析模块1231能够将TLP数据分为5路:BAR寄存器数据接收、BAR寄存器数据发送、DMA数据接收、DMA数据发送和中断输入。如果需要多路DMA传输时,会扩充出多路DMA数据接收和DMA数据发送接口(即,DMA通道130),使DMA对用户逻辑接口400增加。
寄存器接收模块1232和寄存器发送模块1233,用于分别实现PCIE硬核110的BAR寄存器空间的写操作和读操作。即,寄存器接收模块1232和寄存器发送模块1233,是用于实现PCIE的BAR寄存器空间读写工作的,BAR寄存器对于PCIE来说相当重要,因为寄存器存储着PCIE的操作数据,对DMA正确传输起着至关重要的作用。
寄存器操作模块1237,主要包含两部分,一部分为内部RAM模块,一部分为用户外部逻辑状态接口。其中,内部RAM模块,用于存储BAR寄存器的数据,使BAR寄存器读写都能工作。用户外部逻辑状态接口模块,用于将FPGA模块100的状态通过PCIE硬核110传输至主机200,还用于读取主机200下发的状态。即,外部逻辑需要将一些FPGA的状态通过PCIE传给PC机,也需要读取一些PC机下发的状态,这些都通过该接口来实现。通过内部RAM模块和用户外部逻辑状态接口模块(即,寄存器操作模块1237)实现了整个BAR寄存器的功能。
DMA数据接收模块1235,用于接收主机200下传的DMA数据,并将DMA数据存储到DMA接收FIFO1239。即,DMA数据接收模块1235,用来接收PC机下传的DMA数据,然后存储到DMA接收FIFO1239,DMA接收FIFO1239还有一个功能就是生成用户逻辑能识别的数据流格式。DMA数据接收模块1235会分离出另外两个接口,分别是写DMA地址链存储接口和读DMA地址链存储接口,分别接DMA地址链TX存储模块1241和DMA地址链RX存储模块1242,完成对DMA地址链的存储,因为DMA传输是要知道PC机端内存的地址,这个地址是多个地址组成的一个链表,要下发到DMA模块内,通过这个地址,DMA可以上传和下载数据。
DMA数据发送模块1234,用于接收用户层逻辑接口400发送的DMA数据,并将接收到的DMA数据存储至DMA发送FIFO1238。也就是说,用户逻辑需要发送的DMA数据,会通过DMA发送数据接口存储到DMA发送数据FIFO1238,当FIFO存储一定量的数据之后,DMA数据发送模块1234会读取FIFO内部数据发送给TLP包解析模块1231,打包然后发送到PC机内存里。
DMA中断生成模块1236,用于在DMA传输过程中,通过中断将数据的当前传输位置通知主机200的驱动层210,从而配合驱动完成DMA数据的传输。
由此,在本申请实施例的DMA传输模块120中,通过通道混合子模块123内所设置的上述模块之间的相互协调工作,实现了PCIE_DMA高速传输工作,通过扩充DMA通道130即可实现单路和多路DMA传输的自由切换。
此外,还需要指出的是,基于前面任一所述的PCIE_DMA数据传输装置,本申请还提供了一种PCIE_DMA数据传输方法。在本申请提供的PCIE_DMA数据传输方法中,包括读数据操作、写数据操作和IO操作中的至少一种。并且,该方法是基于前面任一所述的PCIE_DMA数据传输装置来实现的。
具体的,读数据操作包括:在触发读数据操作指令时,FPGA模块100读取读操作指令对应的读信号,根据读信号的信号类型确定读取数据长度,并将读取数据长度发送至主机200,由主机200接收到读取数据长度后,生成DMA传输地址链表,并将DMA传输地址链表发送至FPGA模块100。FPGA模块100接收DMA传输地址链表,根据DMA传输地址链表中的地址,通过DMA方式将数据存储至相应的驱动程序地址中直至所有数据全部存储完成。
读操作还包括:FPGA模块100在将对应的所有数据均存储至驱动程序地址中后,发送数据传输完成指令至主机200,由主机200接收到数据传输完成指令后,将驱动程序地址中的所有数据返回至用户层。
进一步的,在本申请实施例的PCIE_DMA数据传输方法中,写数据操作则包括FPGA模块100接收到主机200下发的写数据传输信号后,清空相应的FIFO并复位状态机后发送写数据启动通知至主机200;其中,写数据传输信号由主机200获取当前要写入的数据,生成相应的DMA传输地址链表后生成并下发至FPGA模块100;FPGA模块100接收主机200发起DMA写操作后所下发的DMA传输长度和DMA传输地址链表后,根据DMA传输地址链表读取主机200的数据,并将读取到的数据存储至FIFO,直至所有数据读取完成。
此外,写操作还包括:在FPGA模块100将所有数据读取完成后,发送数据读取完成通知至主机200;主机200接收到数据读取完成通知后,返回写成功至用户层。
为更清楚地说明采用本申请实施例的PCIE_DMA数据传输装置进行数据传输的过程,参见图3,以下结合主机200端的PCIE驱动层210的操作来进行更加详细的说明。
在进行读数据操作时,装载在主机200上的用户层应用程序240发起读数据操作,驱动层210通过寄存器操作通知FPGA模块100进行DMA读取操作,当FPGA模块100得到读取信号后,会根据信号类型准备好读取的数据长度,通过中断通知驱动程序(即,DMA模块驱动层210),驱动程序得到数据长度信息后,会生成DMA传输地址链表,通过寄存器操作写入FPGA模块100内,FPGA模块100得到DMA传输地址链表后,会根据地址链表中的地址,通过DMA方式把数据存储到相应的驱动程序地址中,当所有数据存储完成后,再通过中断操作通知驱动程序完成数据传输,驱动程序收到完成传输的中断后,通过copy to user的方式,把数据返回给用户层,并通知应用程序240,读取完成。
在执行写数据操作时,用户层应用程序240发起写数据操作,用户层应用程序240先把块数据准备好,然后通知驱动层210写数据开始,驱动层210通过copy from user方式把应用层数据移动到驱动层210,然后生成DMA传输地址链表,通过寄存器操作方式,通知FPGA模块100进行DMA写数据传输,FPGA模块100在接到DMA写数据传输信号后,会清空相关FIFO和复位状态机,通过中断方式通知驱动可以进行DMA写数据操作,驱动层210开始发起DMA写操作,把DMA传输长度下发到FPGA模块100,把DMA地址链表通过寄存器方式下发到FPGA模块100,当FPGA模块100收到下发的DMA地址链表后,会根据DMA地址链表读取驱动层210的块数据,读取的数据会暂取到通到FIFO内,通知FPGA模块100下一个子模块读取数据,当FPGA模块100把所有数据读取完成后,会通过中断通知驱动层210数据读取完成,驱动层210返回用户层写成功。
另外,执行IO接口操作时,是驱动层210开放给应用层的FPGA内部寄存器操作,因为有时用户层会需要一些DMA传输的扩展应用,比如获取信号类型、格式、数据量缓存的多少、对信号进行预处理、设置信号发送的速率、信号发送的类型等。这些操作都会对FPGA内PCIE的寄存器进行读写操作。
更进一步的,本申请还提供了一种PCIE_DMA数据传输系统,包括主机200和前面任一的PCIE_DMA数据传输装置;其中,主机200与PCIE_DMA数据传输装置中的FPGA模块100通过PCIE接口300通信连接;主机200配置有驱动层210、内存模块220和内核库模块230;驱动层210,用于生成供用户应用程序读写操作的接口,以及DMA传输所需要的内存块;内存模块220,用于存储DMA传输时的数据;内核库230模块,用于提供驱动驱动层210的驱动程序。
也就是说,本申请实施例的PCIE_DMA数据传输系统包括两部分,一部分为主机200上的驱动部分,另一部分则为FPGA模块100中的硬核和DMA传输部分。
对于主机200这一端,主要包括用户层应用程序240、PCIE接口300驱动(,即驱动层210)、PCIE分配的本机内存(即,内存模块220)和PCIE操作需要的Linux库(即,内核库模块230)。
其中,PCIE驱动用来生成一个PCIE设备,生成供用户应用程序读写操作的接口。驱动同时生成一个或多个DMA传输所要用到的内存块,保证数据上传时能存到正确的内存位置。写操作时,驱动能把指定内存里的数据,通过DMA传输送到FPGA内部。这些操作都要linux内核库函数的支撑。
对于FPGA这一端,FPGA部份包括PCIE硬核110和DMA传输部份(即,DMA传输模块120),PCIE硬核110是由硬件做成的。DMA传输部份是把硬核传输的TLP包进行处理,发送子模块和接收子模块就是用来处理TLP包的,在FPGA端,用户逻辑数据通过通道接口传入和传出,通道数可以自行设置,最多支持12个,所有通道的数据会进入通道混合子模块,在这里进行统一收和发,通道混合子模块与发送子模块和接收子模块相接,用来接收和分发TLP包后的数据。
通过采用上述PCIE_DMA数据传输系统进行DMA数据传输,使得数据传输效率提高到了满速率的80%,其整体设计成DMA传输模块120,针对不同产品不需要大量修改,只需要接口对上进行少许调试即可。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种PCIE_DMA数据传输装置,其特征在于,包括:FPGA模块;
所述FPGA模块内设置有PCIE硬核,并通过PCIE接口与主机通信连接;
其中,所述FPGA模块配置有DMA传输模块,所述DMA传输模块包括接收子模块、发送子模块和通道混合子模块;
所述通道混合子模块与用户层逻辑接口之间设置有用于传输数据的DMA通道;
其中,所述接收子模块被配置为接收由所述FPGA模块内所配置的PCIE硬核输出的数据,并将所述PCIE硬核输出的数据进行处理后传输至所述通道混合子模块;
所述通道混合子模块,被配置为获取所述接收子模块传输的数据,并将由所述接收子模块传输的数据分配至相应的所述DMA通道,由所述DMA通道进行数据的传输;
所述通道混合子模块,还被配置为接收各所述DMA通道传输的数据,并将各所述DMA通道传输的数据进行整合后发送至所述发送子模块;
所述发送子模块,被配置为接收所述通道混合子模块传输的数据,并将所述通道混合子模块传输的数据发送至所述PCIE硬核,由所述PCIE硬核进行数据的传输。
2.根据权利要求1所述的装置,其特征在于,所述PCIE硬核与所述DMA传输模块之间设置有用于表征所述PCIE硬核输出的工作状态的配置接口。
3.根据权利要求2所述的装置,其特征在于,所述配置接口为CONFIG数据接口。
4.根据权利要求1所述的装置,其特征在于,所述发送子模块包括AXIS发送接口,所述接收子模块包括AXIS接收接口。
5.根据权利要求1所述的装置,其特征在于,所述通道混合子模块包括TLP包翻译模块、TLP包解析模块、寄存器接收模块、寄存器发送模块、内部RAM模块、用户外部逻辑状态接口模块、DMA数据接收模块、DMA数据发送模块和DMA中断生成模块;
所述TLP包翻译模块,用于对所述PCIE硬核输出和输入的数据进行TLP包翻译;
所述TLP包解析模块,用于将所述TLP包翻译模块处理后的数据进行解析,输出多路数据信号;
所述寄存器接收模块和所述寄存器发送模块,用于分别实现所述PCIE硬核的BAR寄存器空间的写操作和读操作;
所述内部RAM模块,用于存储所述BAR寄存器的数据;
所述用户外部逻辑状态接口模块,用于将所述FPGA模块的状态通过所述PCIE硬核传输至所述主机;
所述用户外部逻辑状态接口模块,还用于读取所述主机下发的状态;
所述DMA数据接收模块,用于接收所述主机下传的DMA数据,并将所述DMA数据存储到DMA接收FIFO;
所述DMA数据发送模块,用于接收所述用户层逻辑接口发送的DMA数据,并将接收到的所述DMA数据存储至DMA发送FIFO;
所述DMA中断生成模块,用于在DMA传输过程中,通过中断将数据的当前传输位置通知所述主机的驱动层。
6.一种PCIE_DMA数据传输方法,其特征在于,基于权利要求1至5任一项所述的PCIE_DMA数据传输装置实现,包括读数据操作;
其中,所述读数据操作,包括:
在触发读数据操作指令时,所述FPGA模块读取所述读操作指令对应的读信号,根据所述读信号的信号类型确定读取数据长度,并将所述读取数据长度发送至主机,由主机接收到所述读取数据长度后,生成DMA传输地址链表,并将所述DMA传输地址链表发送至所述FPGA模块;
所述FPGA模块接收所述DMA传输地址链表,根据所述DMA传输地址链表中的地址,通过DMA方式将数据存储至相应的驱动程序地址中直至所有数据全部存储完成。
7.根据权利要求6所述的方法,其特征在于,所述读操作还包括:
所述FPGA模块在将对应的所有数据均存储至所述驱动程序地址中后,发送数据传输完成指令至所述主机,由所述主机接收到所述数据传输完成指令后,将所述驱动程序地址中的所有数据返回至用户层。
8.根据权利要求6所述的方法,其特征在于,还包括写数据操作;
所述写数据操作包括:
所述FPGA模块接收到所述主机下发的写数据传输信号后,清空相应的FIFO并复位状态机后发送写数据启动通知至所述主机;
其中,所述写数据传输信号由所述主机获取当前要写入的数据,生成相应的DMA传输地址链表后生成并下发至所述FPGA模块;
所述FPGA模块接收所述主机发起DMA写操作后所下发的DMA传输长度和所述DMA传输地址链表后,根据所述DMA传输地址链表读取所述主机的数据,并将读取到的数据存储至FIFO,直至所有数据读取完成。
9.根据权利要求8所述的方法,其特征在于,所述写操作还包括:
在所述FPGA模块将所有数据读取完成后,发送数据读取完成通知至所述主机;
所述主机接收到所述数据读取完成通知后,返回写成功至用户层。
10.一种PCIE_DMA数据传输系统,其特征在于,包括主机和权利要求1至5任一项所述的PCIE_DMA数据传输装置;
其中,所述主机与所述PCIE_DMA数据传输装置中的FPGA模块通过PCIE接口通信连接;
所述主机配置有驱动层、内存模块和内核库模块;
所述驱动层,用于生成供用户应用程序读写操作的接口,以及DMA传输所需要的内存块;
所述内存模块,用于存储DMA传输时的数据;
所述内核库模块,用于提供驱动所述驱动层的驱动程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011063899.3A CN112181890A (zh) | 2020-09-30 | 2020-09-30 | Pcie_dma数据传输装置和方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011063899.3A CN112181890A (zh) | 2020-09-30 | 2020-09-30 | Pcie_dma数据传输装置和方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112181890A true CN112181890A (zh) | 2021-01-05 |
Family
ID=73948418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011063899.3A Pending CN112181890A (zh) | 2020-09-30 | 2020-09-30 | Pcie_dma数据传输装置和方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112181890A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113472964A (zh) * | 2021-06-05 | 2021-10-01 | 山东英信计算机技术有限公司 | 一种图像处理装置和系统 |
CN113868039A (zh) * | 2021-08-30 | 2021-12-31 | 浪潮电子信息产业股份有限公司 | 一种测试方法、装置及相关设备 |
CN114398303A (zh) * | 2022-01-19 | 2022-04-26 | 扬州万方科技股份有限公司 | 一种实现低延时的数据传输方法及系统 |
CN115168260A (zh) * | 2022-09-08 | 2022-10-11 | 深圳鲲云信息科技有限公司 | 直接内存存取装置、数据传输方法及集成电路系统 |
CN115408322A (zh) * | 2022-08-31 | 2022-11-29 | 湖南智存合壹信息科技有限公司 | 一种基于fpga的高性能数据传输系统及方法 |
CN115827168A (zh) * | 2023-02-01 | 2023-03-21 | 南京芯传汇电子科技有限公司 | 一种二进制仿真环境下虚拟机通信的优化方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106951388A (zh) * | 2017-03-16 | 2017-07-14 | 湖南博匠信息科技有限公司 | 一种基于PCIe的DMA数据传输方法及系统 |
US20170371828A1 (en) * | 2016-06-23 | 2017-12-28 | International Business Machines Corporation | Synchronous input / output hardware acknowledgement of write completions |
CN109471816A (zh) * | 2018-11-06 | 2019-03-15 | 西安微电子技术研究所 | 一种基于描述符的pcie总线dma控制器及数据传输控制方法 |
CN110083461A (zh) * | 2019-03-29 | 2019-08-02 | 郑州信大捷安信息技术股份有限公司 | 一种基于fpga的多任务处理系统及方法 |
CN111309656A (zh) * | 2020-03-20 | 2020-06-19 | 北京光润通科技发展有限公司 | 一种pfga通用dam ip核 |
-
2020
- 2020-09-30 CN CN202011063899.3A patent/CN112181890A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170371828A1 (en) * | 2016-06-23 | 2017-12-28 | International Business Machines Corporation | Synchronous input / output hardware acknowledgement of write completions |
CN106951388A (zh) * | 2017-03-16 | 2017-07-14 | 湖南博匠信息科技有限公司 | 一种基于PCIe的DMA数据传输方法及系统 |
CN109471816A (zh) * | 2018-11-06 | 2019-03-15 | 西安微电子技术研究所 | 一种基于描述符的pcie总线dma控制器及数据传输控制方法 |
CN110083461A (zh) * | 2019-03-29 | 2019-08-02 | 郑州信大捷安信息技术股份有限公司 | 一种基于fpga的多任务处理系统及方法 |
CN111309656A (zh) * | 2020-03-20 | 2020-06-19 | 北京光润通科技发展有限公司 | 一种pfga通用dam ip核 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113472964A (zh) * | 2021-06-05 | 2021-10-01 | 山东英信计算机技术有限公司 | 一种图像处理装置和系统 |
CN113472964B (zh) * | 2021-06-05 | 2024-04-16 | 山东英信计算机技术有限公司 | 一种图像处理装置和系统 |
CN113868039A (zh) * | 2021-08-30 | 2021-12-31 | 浪潮电子信息产业股份有限公司 | 一种测试方法、装置及相关设备 |
CN113868039B (zh) * | 2021-08-30 | 2024-02-09 | 浪潮电子信息产业股份有限公司 | 一种测试方法、装置及相关设备 |
CN114398303A (zh) * | 2022-01-19 | 2022-04-26 | 扬州万方科技股份有限公司 | 一种实现低延时的数据传输方法及系统 |
CN115408322A (zh) * | 2022-08-31 | 2022-11-29 | 湖南智存合壹信息科技有限公司 | 一种基于fpga的高性能数据传输系统及方法 |
CN115168260A (zh) * | 2022-09-08 | 2022-10-11 | 深圳鲲云信息科技有限公司 | 直接内存存取装置、数据传输方法及集成电路系统 |
CN115168260B (zh) * | 2022-09-08 | 2022-12-06 | 深圳鲲云信息科技有限公司 | 直接内存存取装置、数据传输方法及集成电路系统 |
CN115827168A (zh) * | 2023-02-01 | 2023-03-21 | 南京芯传汇电子科技有限公司 | 一种二进制仿真环境下虚拟机通信的优化方法 |
CN115827168B (zh) * | 2023-02-01 | 2023-05-12 | 南京芯传汇电子科技有限公司 | 一种二进制仿真环境下虚拟机通信的优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112181890A (zh) | Pcie_dma数据传输装置和方法及系统 | |
US7702827B2 (en) | System and method for a credit based flow device that utilizes PCI express packets having modified headers wherein ID fields includes non-ID data | |
US4490788A (en) | Well-logging data processing system having segmented serial processor-to-peripheral data links | |
KR101077900B1 (ko) | 네트워크 효율성을 고려한 SoC 기반 시스템 네트워크에서의 인터페이스 장치의 통신방법 및 그에 의해 통신하는 인터페이스 장치 | |
JP2744865B2 (ja) | シリアルチャネルアダプタ | |
US8032686B2 (en) | Protocol translation in a data storage system | |
US20130151750A1 (en) | Multi-root input output virtualization aware switch | |
US8612713B2 (en) | Memory switching control apparatus using open serial interface, operating method thereof, and data storage device therefor | |
EP1730643A2 (en) | Pvdm (packet voice data module) generic bus protocol | |
CN113742269B (zh) | 用于epa设备的数据传输方法、处理设备和介质 | |
US8250260B2 (en) | Method, arrangement, data processing program and computer program product for exchanging message data in a distributed computer system | |
KR20120038282A (ko) | 아이디 컨버터를 포함하는 버스 시스템 및 그것의 변환 방법 | |
US10896119B1 (en) | Common input/output interface for application and debug circuitry | |
CN115827524A (zh) | 一种数据传输方法以及装置 | |
US9535454B2 (en) | Computing module with serial data connectivity | |
KR100579203B1 (ko) | 능률화된 ata 장치 초기화 방법 및 장치 | |
US7096290B2 (en) | On-chip high speed data interface | |
US5937175A (en) | PCI bus to IEEE 1394 bus translator employing pipe-lined read prefetching | |
US7133958B1 (en) | Multiple personality I/O bus | |
CN113498595A (zh) | 一种基于PCIe的数据传输方法及装置 | |
CN112511537B (zh) | 一种sce-mi协议桥及仿真系统 | |
CN116483259A (zh) | 一种数据处理方法以及相关装置 | |
CN116166581A (zh) | 用于pcie总线的队列式dma控制器电路及数据传输方法 | |
KR20120054142A (ko) | QoS 및 전송 효율 개선을 위한 SoC 기반 시스템 네트워크에서의 인터페이스 장치의 통신방법 및 그에 의해 통신하는 인터페이스 장치 | |
JP4432388B2 (ja) | 入出力制御装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210105 |
|
RJ01 | Rejection of invention patent application after publication |