CN116225998B - Dma数据传输*** - Google Patents
Dma数据传输*** Download PDFInfo
- Publication number
- CN116225998B CN116225998B CN202310521109.9A CN202310521109A CN116225998B CN 116225998 B CN116225998 B CN 116225998B CN 202310521109 A CN202310521109 A CN 202310521109A CN 116225998 B CN116225998 B CN 116225998B
- Authority
- CN
- China
- Prior art keywords
- dma
- data
- memory
- module
- target value
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 46
- 238000012546 transfer Methods 0.000 claims abstract description 31
- 230000010365 information processing Effects 0.000 claims abstract description 18
- 238000000034 method Methods 0.000 claims description 16
- 230000001360 synchronised effect Effects 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 12
- 238000013500 data storage Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本公开是关于一种DMA数据传输***。该DMA数据传输***包括基于FPGA芯片开发的且用于向上位机环形内存缓冲区传输数据的数据采集卡,数据采集卡包括链表块随机存储器、链表信息处理模块和DMA模块;链表块随机存储器中存储有用于描述上位机环形内存缓冲区的DMA设备描述符,DMA设备描述符为n个且每个DMA设备描述符均包括一段物理上连续的内存空间的起始物理地址及存储空间大小。本申请FPGA向PC机进行数据传输时可直接读取在FPGA数据采集卡内的链表块随机存储器存储的DMA设备描述符,根据DMA设备描述符中的物理地址向PC机发送存储数据。这个数据传输过程中不需要FPGA再与PC机进行频繁通信,来获取物理地址,从而有利于提高数据传输效率。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种DMA数据传输***。
背景技术
FPGA(Field Programmable Gate Array,可编程阵列逻辑器件)与PC机交互时,有时候需要将FPGA中的数据传输到PC机供PC机调用。数据传输时一般会采用DMA模块或SGDMA模块。通过DMA模块或SGDMA模块进行数据传输时,一般需要FPGA与PC机频繁通信,读取存储在PC机的数据链表中的物理地址,进行数据传输。这会降低FPGA向PC机的数据传输效率。
发明内容
有鉴于此,本公开实施例期望提供一种DMA数据传输***。
本公开的技术方案是这样实现的:
本公开提供一种DMA数据传输***。
本公开实施例提供的DMA数据传输***,包括:
DMA数据传输***,其特征在于,包括基于FPGA芯片开发的且用于向上位机环形内存缓冲区传输数据的数据采集卡,所述数据采集卡包括链表块随机存储器、链表信息处理模块和DMA模块;
所述链表块随机存储器中存储有用于描述所述上位机环形内存缓冲区的DMA设备描述符,所述DMA设备描述符为n个,2≤n≤50,且每个所述DMA设备描述符均包括一段物理上连续的内存空间的起始物理地址及存储空间大小,n个所述DMA设备描述符所记录的存储空间大小之和等于所述上位机环形内存缓冲区的存储空间大小;
所述链表信息处理模块用于对n个所述DMA设备描述符进行排序,且依次循环往复获取所述DMA设备描述符并发送给所述DMA模块;
所述DMA模块用于依据接收的所述DMA设备描述符向所述上位机环形内存缓冲区传输数据,每次传输的数据可写满一个所述DMA设备描述符所对应的所述上位机环形内存缓冲区的存储空间之后,再接收所述链表信息处理模块发送的下一个所述DMA设备描述符,并依据下一个所述DMA设备描述符继续传输数据。
在一些实施例中,所述上位机环形内存缓冲区的申请方法为:
以存储空间大小的目标值申请物理地址连续的内存空间,其中,所述目标值的初始值为预设值,所述目标值小于所述上位机环形内存缓冲区的存储空间大小;
当申请失败后,更新所述目标值,并返回所述以存储空间大小的目标值申请物理地址连续的内存空间的步骤,其中,更新后的目标值小于更新前的目标值;
当申请成功后,获取申请到的内存空间的物理地址,并判断累积申请到的存储空间大小是否达到所述上位机环形内存缓冲区的存储空间大小;
若是,则确定申请完成;
若否,则返回所述以存储空间大小的目标值申请物理地址连续的内存空间的步骤。
在一些实施例中,所述更新所述目标值,包括:
计算所述目标值的半值;
将所述半值作为更新后的目标值。
在一些实施例中,在计算所述目标值的半值之后,所述方法还包括:
计算所述上位机环形内存缓冲区的存储空间大小与所述累积申请到的存储空间大小之间的差值,并判断所述差值是否小于所述半值;
若是,则将所述差值作为更新后的目标值;
若否,则执行所述将所述半值作为更新后的目标值的步骤。
在一些实施例中,所述数据采集卡还包括用于打包数据并向所述上位机环形内存缓冲区传输的数据接口模块。
在一些实施例中,所述数据接口模块为提供标准AXI总线用户数据接口的AXIBridge PCIE IP核,所述AXI Bridge PCIE IP核使用axi slave接口接收所述DMA模块传输的数据,打包数据为TLP数据包。
在一些实施例中,所述数据采集卡还包括用于通过所述数据接口模块接收指令、反馈状态,且用于对所述链表块随机存储器进行读写的寄存器读写模块。
在一些实施例中,所述寄存器读写模块为AXI Bram Ctrl IP核,且所述AXIBridge PCIE IP核使用axi master接口连接所述AXI Bram Ctrl IP核。
在一些实施例中,数据采集卡还包括用于向所述DMA模块提供原始数据的数据缓冲存储模块,所述数据缓冲存储模块包括缓冲存储控制单元和数据缓冲存储器,所述数据缓冲存储器为同步动态随机存取存储器。
在一些实施例中,所述DMA模块包括用于向所述上位机环形内存缓冲区传输数据的DMA数据搬运单元、用于接收原始数据并提供给所述DMA数据搬运单元的先进先出写入存储器、用于依据接收的所述DMA设备描述符控制所述DMA数据搬运单元的DMA搬运控制单元、用于获取所述DMA搬运控制单元状态信息的DMA状态监视单元。
在一些实施例中,所述DMA模块包括用于接收所述DMA数据搬运单元传输的数据的先进先出读出存储器,所述DMA数据搬运单元还用于接收所述上位机环形内存缓冲区传输的数据。
根据本公开实施例的DMA数据传输***包括基于FPGA芯片开发的且用于向上位机环形内存缓冲区传输数据的数据采集卡,数据采集卡包括链表块随机存储器、链表信息处理模块和DMA模块;链表块随机存储器中存储有用于描述上位机环形内存缓冲区的DMA设备描述符,DMA设备描述符为n个,2≤n≤50,且每个DMA设备描述符均包括一段物理上连续的内存空间的起始物理地址及存储空间大小,n个DMA设备描述符所记录的存储空间大小之和等于上位机环形内存缓冲区的存储空间大小;链表信息处理模块用于对n个DMA设备描述符进行排序,且依次循环往复获取DMA设备描述符并发送给DMA模块;DMA模块用于依据接收的DMA设备描述符向上位机环形内存缓冲区传输数据,每次传输的数据可写满一个DMA设备描述符所对应的上位机环形内存缓冲区的存储空间之后,再接收链表信息处理模块发送的下一个DMA设备描述符,并依据下一个DMA设备描述符继续传输数据。本申请中链表块随机存储器集成于FPGA中,存储有描述上位机环形内存缓冲区的DMA设备描述符。FPGA向PC机进行数据传输时可直接读取在FPGA数据采集卡内的链表块随机存储器存储的DMA设备描述符,根据DMA设备描述符中的物理地址向PC 机发送存储数据。这个数据传输过程中不需要FPGA再与PC机进行频繁通信,来获取物理地址,从而有利于提高数据传输效率。
本公开附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。
附图说明
图1是根据一示例性实施例示出的DMA数据传输***结构示意图;
图2是根据一示例性实施例示出的一种FPGA与PC交互示意图;
图3是根据一示例性实施例示出的数据存储空间分配示意图一;
图4是根据一示例性实施例示出的数据存储空间分配示意图二;
图5是根据一示例性实施例示出的类SGDMA模块结构示意图;
图6是根据一示例性实施例示出的类SGDMA模块中的DMA模块结构示意图。
具体实施方式
下面详细描述本公开的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。
FPGA(Field Programmable Gate Array,可编程阵列逻辑器件)与PC机交互时,有时候需要将FPGA中的数据传输到PC机供PC机调用。数据传输时一般会采用DMA模块或SGDMA模块。通过DMA模块或SGDMA模块进行数据传输时,一般需要FPGA与PC机频繁通信,读取存储在PC机的数据链表中的物理地址,然后根据物理地址进行数据传输。这会降低FPGA向PC机的数据传输效率。
针对上述情况,本公开提供一种DMA数据传输***。图1是根据一示例性实施例示出的DMA数据传输***结构示意图。如图1所示,该DMA数据传输***,可应用于与PC机通信的FPGA端,包括:
基于FPGA芯片开发的且用于向上位机环形内存缓冲区传输数据的数据采集卡10,所述数据采集卡10包括链表块随机存储器11、链表信息处理模块12和DMA模块13;
所述链表块随机存储器11中存储有用于描述所述上位机环形内存缓冲区的DMA设备描述符,所述DMA设备描述符为n个,2≤n≤50,且每个所述DMA设备描述符均包括一段物理上连续的内存空间的起始物理地址及存储空间大小,n个所述DMA设备描述符所记录的存储空间大小之和等于所述上位机环形内存缓冲区的存储空间大小;
所述链表信息处理模块12用于对n个所述DMA设备描述符进行排序,且依次循环往复获取所述DMA设备描述符并发送给所述DMA模块;
所述DMA模块13用于依据接收的所述DMA设备描述符向所述上位机环形内存缓冲区传输数据,每次传输的数据可写满一个所述DMA设备描述符所对应的所述上位机环形内存缓冲区的存储空间之后,再接收所述链表信息处理模块发送的下一个所述DMA设备描述符,并依据下一个所述DMA设备描述符继续传输数据。
在本示例性实施例中,基于DMA模块或SGDMA模块,FPGA向PC机进行数据传输时,需要读取存储数据的物理地址。包含有物理地址的DMA设备描述符如果存储在PC机上,FPGA在向PC机进行数据传输时需要不断与PC机通信读取DMA设备描述符中的物理地址。每个DMA设备描述符均包含有对应于一个连续物理内存空间的物理地址,不同DMA设备描述符中包含的物理地址不同,且不同DMA设备描述符之间包含的物理内存空间不连续。当读取一个DMA设备描述符传输完成数据后,需要读取下一个DMA设备描述符来继续数据传输。如果DMA设备描述符存储在PC机内,当FPGA向PC机进行数据传输时就需要频繁与PC机通信读取各个DMA设备描述符。
因此,本申请中集成在FPGA的DMA数据传输***包含有链表块随机存储器、链表信息处理模块和DMA模块。链表块随机存储器中存储有用于描述上位机环形内存缓冲区的DMA设备描述符。当FPGA向PC机进行数据传输时,通过链表信息处理模块对n个DMA设备描述符进行排序,且依次循环往复获取DMA设备描述符并发送给DMA模块;通过DMA模块依据接收的DMA设备描述符向上位机环形内存缓冲区传输数据。数据传输过程中每次传输的数据可写满一个DMA设备描述符所对应的上位机环形内存缓冲区的存储空间之后,再接收链表信息处理模块发送的下一个DMA设备描述符,并依据下一个DMA设备描述符继续传输数据。这个数据传输过程中不需要FPGA再与PC机进行频繁通信,来获取物理地址,从而有利于提高数据传输效率。
在一些实施例中,所述上位机环形内存缓冲区的申请方法为:
以存储空间大小的目标值申请物理地址连续的内存空间,其中,所述目标值的初始值为预设值,所述目标值小于所述上位机环形内存缓冲区的存储空间大小;
当申请失败后,更新所述目标值,并返回所述以存储空间大小的目标值申请物理地址连续的内存空间的步骤,其中,更新后的目标值小于更新前的目标值;
当申请成功后,获取申请到的内存空间的物理地址,并判断累积申请到的存储空间大小是否达到所述上位机环形内存缓冲区的存储空间大小;
若是,则确定申请完成;
若否,则返回所述以存储空间大小的目标值申请物理地址连续的内存空间的步骤。
在本示例性实施例中,所述目标值的初始值可以是所述上位机环形内存缓冲区的存储空间大小的半值,也可以是0.1 GB~2.0 GB之间的任一值。
在本示例性实施例中,累积申请到的存储空间大小达到所述上位机环形内存缓冲区的存储空间大小时,确定申请完成。说明此时申请到的存储空间满足此次数据传输的需要。若否,则返回以存储空间大小的目标值申请物理地址连续的内存空间的步骤。说明此时申请到的存储空间未满足此次数据传输的需要,则继续进行存储空间申请,直到申请完成,从而得到满足此时数据传输的存储空间。
在一些实施例中,所述更新所述目标值,包括:
计算所述目标值的半值;
将所述半值作为更新后的目标值。
在本示例性实施例中,例如目标值的初始值为2G,如果2G申请失败,则计算所述目标值的半值为1G;将1G作为更新后的目标值,在以后的每次申请中均如此进行以此类推。
在一些实施例中,在计算所述目标值的半值之后,所述方法还包括:
计算所述上位机环形内存缓冲区的存储空间大小与所述累积申请到的存储空间大小之间的差值,并判断所述差值是否小于所述半值;
若是,则将所述差值作为更新后的目标值;
若否,则执行所述将所述半值作为更新后的目标值的步骤。
在本示例性实施例中,当判断所述差值小于所述半值时,说明此时需要申请的剩余存储空间已经不足以半值,此时只需要申请上位机环形内存缓冲区的存储空间大小与所述累积申请到的存储空间大小之间的差值即可。当判断所述差值未小于所述半值时,说明此时需要申请的剩余存储空间大于半值,此时按照半值作为目标值进行申请即可。以此类推直到申请完成。
在一些实施例中,所述数据采集卡还包括用于打包数据并向所述上位机环形内存缓冲区传输的数据接口模块。
在本示例性实施例中,所述数据接口模块为提供标准AXI总线用户数据接口的AXIBridge PCIE IP核,所述AXI Bridge PCIE IP核使用axi slave接口接收所述DMA模块传输的数据,打包数据为TLP数据包。
在本示例性实施例中,本申请数据采集卡的数据接口模块采用提供标准AXI总线用户数据接口的AXI Bridge PCIE IP核,AXI Bridge PCIE IP核使用axi slave接口接收DMA模块传输的数据,打包数据为TLP(Transaction Layer Packet,事务层数据包)数据包。如此,既没有组TLP的繁琐,节约了开发时间;也没有CPU的反复参与,极大地提高了PCIE(Peripheral Component Interconnect Express高速串行通信互联标准)的有效传输数据速率。其中,实测可达到6.5 GB左右,完全满足大部分DAQ数据采集卡应用,传输采集数据到PC主机的需求。
在一些实施例中,所述数据采集卡还包括用于通过所述数据接口模块接收指令、反馈状态,且用于对所述链表块随机存储器进行读写的寄存器读写模块。
在本示例性实施例中,所述寄存器读写模块为AXI Bram Ctrl IP核,且所述AXIBridge PCIE IP核使用axi master接口连接所述AXI Bram Ctrl IP核,来实现PC下发DMA设备描述符以及DMA控制参数。
在一些实施例中,数据采集卡还包括用于向所述DMA模块提供原始数据的数据缓冲存储模块,所述数据缓冲存储模块包括缓冲存储控制单元和数据缓冲存储器,所述数据缓冲存储器为同步动态随机存取存储器。
在本示例性实施例中,数据缓冲存储模块为可选模块,用于当用户数据瞬时带宽大于PCIE数据传输带宽时,暂时缓存用户数据。如果用户数据速率,一直小于PCIE传输速率,可不用。同步动态随机存取存储器即DDR,可以是DDR4,或不计成本可用DDR5,或降低成本用DDR3等。
在一些实施例中,所述DMA模块包括用于向所述上位机环形内存缓冲区传输数据的DMA数据搬运单元、用于接收原始数据并提供给所述DMA数据搬运单元的先进先出写入存储器、用于依据接收的所述DMA设备描述符控制所述DMA数据搬运单元的DMA搬运控制单元、用于获取所述DMA搬运控制单元状态信息的DMA状态监视单元。
在本示例性实施例中,进行数据传输时,如果有数据缓冲存储模块,则先进先出写入存储器的数据来源是数据缓冲存储模块。如果没有数据缓冲存储模块,则先进先出写入存储器的数据来源是仪器信号检测器。
在一些实施例中,所述DMA模块包括用于接收所述DMA数据搬运单元传输的数据的先进先出读出存储器,所述DMA数据搬运单元还用于接收所述上位机环形内存缓冲区传输的数据。
在本示例性实施例中,当数据缓冲存储模块还用于存储上位机下发的数据,以便在下位机处理或应用,例如下位机示波器示波。此时,先进先出读出存储器的数据可输出给数据缓冲存储模块。
图2是根据一示例性实施例示出的一种FPGA与PC交互示意图。如图2所示,DAQ数据采集应用中,使用axi bridge pcie ip核axi master接口,经axi bram ctrl ip核转换为寄存器读写接口,实现PC下发DMA设备描述符以及DMA控制参数。使用axi slave接口,接收SG-DMA模块传输数据。pcie ip核,自动打包数据为TLP数据包,写入PC主机内存空间。DDR4***内存控制模块为可选模块,用于当用户数据瞬时带宽大于PCIE数据传输带宽时,暂时缓存用户数据,如果用户数据速率,一直小于PCIE传输速率,可不用。
这里采用基于axi bridge pcie ip核,开发自研DMA模块,使用SG模式,DMA设备描述符存储在本地,既没有组TLP的繁琐,节约了开发时间;也没有CPU的反复参与,极大的提高了PCIE的有效传输数据速率,实测可达到6.5GB左右,完全满足大部分DAQ应用,传输采集数据到PC主机的需求。
图3是根据一示例性实施例示出的数据存储空间分配示意图一。如图3所示,类SGDMA申请的物理内存空间与虚拟内存空间均不连续。本申请中类SG-DMA与常规方式不同。PC申请多个物理和虚拟上都不连续的连续内存空间;此种方式,PC申请的每个内存空间大、个数少、空间利用率高;PC只需在初始化下位机SG-DMA时,下发这些空间信息到下位机,存储到下位机本地FPGA Block RAM中。启动SG-DMA工作后,无需CPU参与,下位机会从本地直接获取DMA设备描述符,启动数据传输,极大提高了数据传输效率。DMA设备描述符即为指链表里的物理地址和存储空间大小。本申请中用户数据可以不缓存,直接写入PC内存中。采用类SG模式在PC机申请多个连续内存空间的办法,使得每个内存空间大,且个数少。内存信息即DMA描述符,可全部存储到本地RAM。启动类SGDMA后,无需CPU参与,且空间利用率高、有效传输带宽高,可达到6.5GB。
图4是根据一示例性实施例示出的数据存储空间分配示意图二。如图4所示,常规的SGDMA为PC申请多个物理上不连续,映射到虚拟空间连续的连续内存空间。此种方式,申请的每个空间大小不一、且都很小、空间个数多、空间利用率低;PC会开辟链表存储空间,存储这些空间信息在PC内存中,启动SG-DMA工作时,CPU会不停地下发DMA设备描述符,更新使用内存空间信息。这会降低数据传输效率。
图5是根据一示例性实施例示出的类SGDMA模块结构示意图。如图5所示,类SGDMA模块包含有链表随机存储器11、链表信息处理模块12和DMA模块13;
所述链表信息处理模块用于接收PC端发送的多个物理地址与虚拟地址均可不连续的数据存储空间的空间信息,及基于所述多个物理地址与虚拟地址均可不连续的数据存储空间的空间信息,生成数据链表,并传输所述数据链表至所述DMA模块。
图6是根据一示例性实施例示出的类SGDMA模块中的DMA模块结构示意图。如图6所示,
所述DMA模块包含有DMA搬运控制单元90、DMA状态监视单元91及DMA数据搬运单元92;
所述DMA搬运控制单元90与所述DMA状态监视单元91及DMA数据搬运单元92均电连接;
所述DMA搬运控制单元用于指示所述DMA数据搬运单元根据所述数据链表将FPGA中的待传输数据传输给所述PC端,存储所述待传输数据传输至所述PC端的所述数据存储空间;
所述DMA状态监视单元用于标记当前所述类SGDMA模块的数据传输状态。
在本示例性实施例中, PC申请多个连续物理内存空间,记录内存空间信息。通过PCIE寄存器接口,将内存空间信息全部写入图5本地链表Block RAM中,记作DMA设备描述符(每个DMA设备描述符对应于一个连续物理内存空间)。DMA数据搬运单元通过WR FIFO的方式向FPGA写入数据,通过RD FIFO的方式读出数据。
PC通过寄存器接口,启动SG-DMA模块和SG-DMA模块中的DMA模块。开始读取链表block ram,获取DMA设备描述符,发送给DMA模块。同时启动DMA模块,开始传输数据到内存或读取内存数据。
DMA完成当前设备描述符指示的数据传输后,继续从ram中读取下一个设备描述符,再次启动DMA传输,以此类推。当最后一个设备描述符完成DMA传输后,DMA开始从头读取设备描述符。如此循环往复,整个过程无需CPU参与,CPU只需在启动传输前,做好链表blockram的初始化即可。
具体地,PC申请多个连续物理内存空间的方法为:
依据内存空间的申请需求A(需要的存储空间大小),依次按A,A/2,A/4,A/8等大小做内存空间申请;
当前申请内存成功后,继续以此大小申请。当前申请内存失败后,申请大小减半,继续申请。以此类推,直到总申请空间等于A,停止内存空间申请。
就这样将一个很大的连续内存空间申请,转换为多个A的2的次幂分之一的连续空间申请,一般连续减小10次以内,就能申请完所需内存空间。这些内存空间都比较大,个数有限,完全可以把申请的内存空间信息(起始地址,空间大小)存入下位机block ram中。
“类SG-DMA功能” 解释说明:
1:基于xilinxaxibridgepcieip核;
2:使用类SG-DMA功能(与现有技术中的SG-DMA功能不同,基于现有技术中的SG-DMA模块,采用不同于现有技术的工作原理和方式);
3:SG-DMA的设备描述符全部存储在下位机本地FPGAblockRAM中;不是存储在上位机链表空间里;
4:PC内存空间的申请,有别与常规SG-DMA应用中内存空间申请方式;
5:SG-DMA工作后,全程无需CPU参与,解放CPU。
本公开提高一种计算机可读存储介质,其上存储有数据传输程序,该数据传输程序被处理器执行时,实现上述FPGA向PC机的数据传输方法;其中,
所述数据传输方法包括:
读取链表块随机存储器存储的用于描述所述上位机环形内存缓冲区的DMA设备描述符;
基于所述DMA设备描述符向所述PC机传输数据;
当完成一个DMA设备描述符对应存储空间的数据传输时,读取下一个DMA设备描述符向所述PC机传输数据。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行***、装置或设备(如基于计算机的***、包括处理器的***或其他可以从指令执行***、装置或设备取指令并执行指令的***)使用,或结合这些指令执行***、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行***、装置或设备或结合这些指令执行***、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。
应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
在本公开的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本公开和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本公开的限制。
此外,本公开实施例中所使用的“第一”、“第二”等术语,仅用于描述目的,而不可以理解为指示或者暗示相对重要性,或者隐含指明本实施例中所指示的技术特征数量。由此,本公开实施例中限定有“第一”、“第二”等术语的特征,可以明确或者隐含地表示该实施例中包括至少一个该特征。在本公开的描述中,词语“多个”的含义是至少两个或者两个及以上,例如两个、三个、四个等,除非实施例中另有明确具体的限定。
在本公开中,除非实施例中另有明确的相关规定或者限定,否则实施例中出现的术语“安装”、“相连”、“连接”和“固定”等应做广义理解,例如,连接可以是固定连接,也可以是可拆卸连接,或成一体,可以理解的,也可以是机械连接、电连接等;当然,还可以是直接相连,或者通过中间媒介进行间接连接,或者可以是两个元件内部的连通,或者两个元件的相互作用关系。对于本领域的普通技术人员而言,能够根据具体的实施情况理解上述术语在本公开中的具体含义。
在本公开中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
尽管上面已经示出和描述了本公开的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本公开的限制,本领域的普通技术人员在本公开的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (9)
1.一种DMA数据传输***,其特征在于,包括基于FPGA芯片开发的且用于向上位机环形内存缓冲区传输数据的数据采集卡,所述数据采集卡包括链表块随机存储器、链表信息处理模块和DMA模块;
所述链表块随机存储器中存储有用于描述所述上位机环形内存缓冲区的DMA设备描述符,所述DMA设备描述符为n个,2≤n≤50,且每个所述DMA设备描述符均包括一段物理上连续的内存空间的起始物理地址及存储空间大小,n个所述DMA设备描述符所记录的存储空间大小之和等于所述上位机环形内存缓冲区的存储空间大小;
所述链表信息处理模块用于对n个所述DMA设备描述符进行排序,且依次循环往复获取所述DMA设备描述符并发送给所述DMA模块;
所述DMA模块用于依据接收的所述DMA设备描述符向所述上位机环形内存缓冲区传输数据,每次传输的数据可写满一个所述DMA设备描述符所对应的所述上位机环形内存缓冲区的存储空间之后,再接收所述链表信息处理模块发送的下一个所述DMA设备描述符,并依据下一个所述DMA设备描述符继续传输数据;其中,所述上位机环形内存缓冲区的申请方法为:
以存储空间大小的目标值申请物理地址连续的内存空间,其中,所述目标值的初始值为预设值,所述目标值小于所述上位机环形内存缓冲区的存储空间大小;
当申请失败后,更新所述目标值,并返回所述以存储空间大小的目标值申请物理地址连续的内存空间的步骤,其中,更新后的目标值小于更新前的目标值;
当申请成功后,获取申请到的内存空间的物理地址,并判断累积申请到的存储空间大小是否达到所述上位机环形内存缓冲区的存储空间大小;
若是,则确定申请完成;
若否,则返回所述以存储空间大小的目标值申请物理地址连续的内存空间的步骤;其中,所述更新所述目标值,包括:
计算所述目标值的半值;
将所述半值作为更新后的目标值。
2.根据权利要求1所述的DMA数据传输***,其特征在于,在计算所述目标值的半值之后,所述方法还包括:
计算所述上位机环形内存缓冲区的存储空间大小与所述累积申请到的存储空间大小之间的差值,并判断所述差值是否小于所述半值;
若是,则将所述差值作为更新后的目标值;
若否,则执行所述将所述半值作为更新后的目标值的步骤。
3.根据权利要求1所述的DMA数据传输***,其特征在于,所述数据采集卡还包括用于打包数据并向所述上位机环形内存缓冲区传输的数据接口模块。
4.根据权利要求3所述的DMA数据传输***,其特征在于,所述数据接口模块为提供标准AXI总线用户数据接口的AXI Bridge PCIE IP核,所述AXI Bridge PCIE IP核使用axislave接口接收所述DMA模块传输的数据,打包数据为TLP数据包。
5.根据权利要求4所述的DMA数据传输***,其特征在于,所述数据采集卡还包括用于通过所述数据接口模块接收指令、反馈状态,且用于对所述链表块随机存储器进行读写的寄存器读写模块。
6.根据权利要求5所述的DMA数据传输***,其特征在于,所述寄存器读写模块为AXIBram Ctrl IP核,且所述AXI Bridge PCIE IP核使用axi master接口连接所述AXI BramCtrl IP核。
7.根据权利要求1所述的DMA数据传输***,其特征在于,数据采集卡还包括用于向所述DMA模块提供原始数据的数据缓冲存储模块,所述数据缓冲存储模块包括缓冲存储控制单元和数据缓冲存储器,所述数据缓冲存储器为同步动态随机存取存储器。
8.根据权利要求7所述的DMA数据传输***,其特征在于,所述DMA模块包括用于向所述上位机环形内存缓冲区传输数据的DMA数据搬运单元、用于接收原始数据并提供给所述DMA数据搬运单元的先进先出写入存储器、用于依据接收的所述DMA设备描述符控制所述DMA数据搬运单元的DMA搬运控制单元、用于获取所述DMA搬运控制单元状态信息的DMA状态监视单元。
9.根据权利要求8所述的DMA数据传输***,其特征在于,所述DMA模块包括用于接收所述DMA数据搬运单元传输的数据的先进先出读出存储器,所述DMA数据搬运单元还用于接收所述上位机环形内存缓冲区传输的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310521109.9A CN116225998B (zh) | 2023-05-10 | 2023-05-10 | Dma数据传输*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310521109.9A CN116225998B (zh) | 2023-05-10 | 2023-05-10 | Dma数据传输*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116225998A CN116225998A (zh) | 2023-06-06 |
CN116225998B true CN116225998B (zh) | 2023-07-25 |
Family
ID=86570091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310521109.9A Active CN116225998B (zh) | 2023-05-10 | 2023-05-10 | Dma数据传输*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225998B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116775524B (zh) * | 2023-06-19 | 2024-02-02 | 无锡摩芯半导体有限公司 | 一种dma链表模式的lli动态写入方法 |
CN116578631B (zh) * | 2023-07-13 | 2023-10-13 | 国仪量子(合肥)技术有限公司 | 数据交互方法、数据采集设备、数据处理设备及交互*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10534736B1 (en) * | 2018-12-31 | 2020-01-14 | Texas Instruments Incorporated | Shared buffer for multi-output display systems |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7162551B2 (en) * | 2003-10-31 | 2007-01-09 | Lucent Technologies Inc. | Memory management system having a linked list processor |
US20060190697A1 (en) * | 2005-02-10 | 2006-08-24 | Grant Calum A | A lock-free memory allocator with delayed coalescing |
US8892788B2 (en) * | 2011-02-22 | 2014-11-18 | Red Hat Israel, Ltd. | Exposing a DMA engine to guests in a virtual machine system |
CN102314400B (zh) * | 2011-09-27 | 2014-12-24 | 广东威创视讯科技股份有限公司 | 一种分散聚合式dma方法及装置 |
CN112236962B (zh) * | 2019-05-13 | 2022-07-22 | 华为技术有限公司 | 一种内存管理的方法和装置、终端设备 |
CN115729870A (zh) * | 2022-11-22 | 2023-03-03 | 电信科学技术第五研究所有限公司 | 一种基于fpga的高效pcie dma数据传输方法 |
-
2023
- 2023-05-10 CN CN202310521109.9A patent/CN116225998B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10534736B1 (en) * | 2018-12-31 | 2020-01-14 | Texas Instruments Incorporated | Shared buffer for multi-output display systems |
Also Published As
Publication number | Publication date |
---|---|
CN116225998A (zh) | 2023-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116225998B (zh) | Dma数据传输*** | |
US9395921B2 (en) | Writing data using DMA by specifying a buffer address and a flash memory address | |
US9734085B2 (en) | DMA transmission method and system thereof | |
CN101324869B (zh) | 一种基于axi总线的多路复用器 | |
US20040093454A1 (en) | USB endpoint controller flexible memory management | |
US8429324B2 (en) | Bus-protocol converting device and bus-protocol converting method | |
CN1904868A (zh) | 用于包化总线的组合包 | |
CN113590512B (zh) | 可直连外设设备的自启动dma装置及应用 | |
US11068283B2 (en) | Semiconductor apparatus, operation method thereof, and stacked memory apparatus having the same | |
JP2021501941A (ja) | メモリブロックリクレーム方法およびメモリブロックリクレーム装置 | |
US20060236001A1 (en) | Direct memory access controller | |
CN112214157A (zh) | 主机输出输入命令的执行装置及方法及计算机可读取存储介质 | |
US7925819B2 (en) | Non-volatile memory storage system and method for reading an expansion read only memory image thereof | |
TWI626540B (zh) | 一般及垃圾回收的資料存取方法以及使用該方法的裝置 | |
JP2008015876A (ja) | データアクセスシステム、データアクセス装置、データアクセス集積回路及びデータアクセス方法 | |
CN116340217A (zh) | 数据处理方法及相关装置 | |
KR101260313B1 (ko) | 전자장치 및 그 데이터 송수신방법과, 슬레이브 장치 및복수의 장치 간의 통신방법 | |
US20040167999A1 (en) | Data transfer control device, electronic instrument, program and method of fabricating electronic instrument | |
JP2010198138A (ja) | データ転送装置、データ転送制御方法、データ転送制御プログラム及び記録媒体 | |
KR100633742B1 (ko) | 주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는직접 메모리 액세스 제어 장치 및 방법 | |
US10565137B2 (en) | Non-volatile memory device and controlling apparatus, having extension activating and control parts, where memory device can be operated in an optimum operation mode | |
CN103559157B (zh) | 采集数据的传输方法、装置及*** | |
JP2007011659A (ja) | インターフェース装置、ディスクドライブ及びインターフェース制御方法 | |
CN114840447B (zh) | 一种加速器 | |
CN102819511B (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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: 230088 floor 1-4, zone a, building E2, phase II, innovation industrial park, No. 2800, innovation Avenue, high tech Zone, Hefei, Anhui Province Patentee after: Guoyi Quantum Technology (Hefei) Co.,Ltd. Address before: 230088 floor 1-4, zone a, building E2, phase II, innovation industrial park, No. 2800, innovation Avenue, high tech Zone, Hefei, Anhui Province Patentee before: Guoyi Quantum (Hefei) Technology Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |