CN104021097A - 数据传输方法、装置及直接存储器存取 - Google Patents
数据传输方法、装置及直接存储器存取 Download PDFInfo
- Publication number
- CN104021097A CN104021097A CN201310066641.2A CN201310066641A CN104021097A CN 104021097 A CN104021097 A CN 104021097A CN 201310066641 A CN201310066641 A CN 201310066641A CN 104021097 A CN104021097 A CN 104021097A
- Authority
- CN
- China
- Prior art keywords
- data
- dma
- width
- destination
- destination end
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
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通过第一物理总线接收源端的数据,其中第一物理总线的宽度与源端的数据的数据宽度相同的;DMA将源端的数据转换为目的端的数据,其中目的端的数据的数据宽度为目的端对应的数据宽度;DMA通过第二物理总线将目的端的数据发送给目的端,其中,第二物理总线的数据宽度与目的端的数据的数据宽度相同。通过本发明,提高了DMA进行数据传输的资源利用率。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种数据传输方法、装置及直接存储器存取(DirectMemory Access,简称为DMA)。
背景技术
直接存储器存取控制器技术广泛应用于处理器及片上系统(System-On-a-Chip,简称为SoC)系统中。它的功能在于实现I/O接口和存储器之间的高速数据传输。对于数字信号处理器(Digital Signal Processor,简称为DSP)而言,DMA模块可以和处理器核一样作为Master访问DSP外部存储资源和内部存储器,使得DSP外部的SoC存储器和DSP内部的程序存储器(Program Memory,简称为PM)、数据存储器(Data Memory,简称为DM)之间可以进行快速的数据搬运,而不需要DSP核使用其内部寄存器进行低效率的数据中转。DMA也和其他外设一样可以接收DSP核的参数配置进行数据搬运,在DMA搬运期间,DSP核可以选择做其它事情。即,DMA专门用于大数据量的传输,一方面DMA做了DSP核不擅长的事情,另一方面DSP核可以抽身做其它事情。
相关技术中DSP的DMA技术往往含有多个通道,优点是可以实现并行传输,缺点是资源利用率比较低,例如:占用的硬件资源较多。如果一次传输只需要一个源端和一个目的端,显然多通道的设计资源利用率并不高,除了一个通道工作之外其他通道将处于闲置状态。
针对相关技术中DMA进行数据传输的资源利用率比较低的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中DMA进行数据传输的资源利用率比较低的问题,本发明提供了一种数据传输方法、装置及直接存储器存取,以至少解决该问题。
根据本发明的一个方面,提供了一种DMA数据传输方法,包括:DMA通过第一物理总线接收源端的数据,其中所述第一物理总线的宽度与所述源端的数据的数据宽度相同;所述DMA将所述源端的数据转换为目的端的数据,其中所述目的端的数据的数据宽度与所述目的端对应的数据宽度相同;所述DMA通过第二物理总线将所述目的端的数据发送给所述目的端,其中,所述第二物理总线的数据宽度与所述目的端的数据的数据宽度相同。
优选地,在所述DMA将所述源端的数据转换为目的端的数据之前,还包括:所述DMA通过双向同步先入先出FIFO缓存所述源端的数据。
优选地,所述DMA将所述源端的数据转换为目的端的数据包括:所述DMA在所述双向同步FIFO中选择预定数目个读数据;所述DMA通过该DMA上的不对齐处理逻辑将所述读数据根据所述目的端的数据的数据宽度进行对齐,得到所述目的端的数据。
优选地,所述源端为SOC存储器(Soc Memory,简称为SM),所述目的端为程序存储器PM;所述源端为所述SM,所述目的端为数据存储器DM;所述源端为所述DM,所述目的端为所述SM。
优选地,所述DMA和SM之间的所述数据宽度为64比特;所述DMA和所述PM之间的所述数据宽度为128比特;所述DMA和所述DM之间的所述数据宽度为256比特。
根据本发明的另一方面,提供了一种DMA数据传输装置,位于DMA,包括:接收模块,用于通过第一物理总线接收源端的数据,其中所述第一物理总线的宽度与所述源端的数据的数据宽度相同的;转换模块,用于将所述源端的数据转换为目的端的数据,其中所述目的端的数据的数据宽度为所述目的端对应的数据宽度;
发送模块,用于通过第二物理总线将所述目的端的数据发送给所述目的端,其中,所述第二物理总线的数据宽度与所述目的端的数据的数据宽度相同。
优选地,上述装置还包括:缓存模块,用于通过双向同步先入先出FIFO缓存所述源端的数据。
优选地,所述转换模块包括:选择模块,用于在所述双向同步FIFO中选择预定数目个读数据;处理模块,用于通过不对齐处理逻辑将所述读数据根据所述目的端的数据的数据宽度进行对齐,得到所述目的端的数据。
优选地,所述源端为SM,所述目的端为程序存储器PM;
所述源端为所述SM,所述目的端为数据存储器DM;
所述源端为所述DM,所述目的端为所述SM。
优选地,所述DMA和SM之间的所述数据宽度为64比特。
所述DMA和所述PM之间的所述数据宽度为128比特;
所述DMA和所述DM之间的所述数据宽度为256比特。
根据本发明的又一方面,还提供了一种DMA,包括:上述的DMA数据传输装置。
通过本发明,采用DMA通过第一物理总线接收源端的数据,其中该第一物理总线的宽度与源端的数据的数据宽度相同;DMA将源端的数据转换为目的端的数据,其中目的端的数据的数据宽度为目的端对应的数据宽度;DMA通过第二物理总线将目的端的数据发送给目的端,其中,第二物理总线的数据宽度与目的端的数据的数据宽度相同,解决了相关技术中DMA进行数据传输的资源利用率比较低的问题,进而达到了提高DMA进行数据传输效率的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的数据传输方法的流程图;
图2是根据本发明实施例的数据传输装置的结构框图;
图3是根据本发明实施例的数据传输装置的优选的结构框图;
图4是根据本发明实施例的DMA的结构框图;
图5是根据本发明优选实施例的DMA结构框图;
图6是根据本发明实施例的5×32-bit双向FIFO的实现的示意图;
图7(a)是根据本发明实施例的写DM地址为对齐地址(DM地址为0)和非对齐地址(DM地址为2)时的处理的示意图一;
图7(b)是根据本发明实施例的写DM地址为对齐地址(DM地址为0)和非对齐地址(DM地址为2)时的处理的示意图二;
图8是根据本发明实施例的写DM时地址不对齐处理MUX的示意图;
图9是根据本发明实施例的读DM时地址不对齐处理MUX的示意图;
图10是根据本发明实施例的SM读写控制逻辑状态机的示意图;以及
图11是根据本发明实施例的PM/DM读写控制逻辑状态机的示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
相关技术中的DSP的DMA技术,源端和目的端的物理总线一般采用同样的位宽。数据逻辑宽度有时候和总线物理宽度不一致,当数据逻辑宽度小于总线物理宽度时,浪费了总线硬件资源;当数据逻辑宽度大于总线物理宽度时,不但影响传输效率,也增加了设计复杂性。在本申请中,采用直接存储器存取DMA通过第一物理总线接收源端的数据,其中第一物理总线的宽度与源端的数据的数据宽度相同;DMA将源端的数据转换为目的端的数据,其中目的端的数据的数据宽度与目的端对应的数据宽度相同;DMA通过第二物理总线将目的端的数据发送给目的端,其中,第二物理总线的数据宽度与目的端的数据的数据宽度相同。通过该方法,实现根据不同传输模式在时间上分离的特点,只采用一个传输通道实现了不同的传输功能;将DMA物理总线宽度设计成和数据宽度一致(例如:DMA和SM之间数据宽度为64bit,DMA和PM之间数据宽度是128bit,DMA和DM之间数据宽度是256bit),采用多组(multi-bank)FIFO缓冲源端和目的端总线宽度的不一致,解决了相关技术中DMA进行数据传输的资源利用率比较低的问题,从而达到了提高DMA进行数据传输效率的效果。
本实施例提供了一种数据传输方法,图1是根据本发明实施例的数据传输方法的流程图,包括如下的步骤S102至步骤S106。
步骤S102:DMA通过第一物理总线接收源端的数据,其中该第一物理总线的宽度与该源端的数据的数据宽度相同。
步骤S104:DMA将该源端的数据转换为目的端的数据,其中该目的端的数据的数据宽度与该目的端对应的数据宽度相同。
步骤S106:DMA通过第二物理总线将该目的端的数据发送给所述目的端,其中,该第二物理总线的数据宽度与该目的端的数据的数据宽度相同。
通过上述步骤,DMA通过与源端的数据的数据宽度相同的第一物理总线接收源端的数据,并将接收到的数据转换为与目的端的数据宽度相同的目的端数据,并通过与目的端的数据的数据宽度相同的第二物理总线进行发送,实现了通过一个通道进行不同位宽的数据的数据传输,解决了相关技术中DMA进行数据传输的资源利用率比较低的的问题,从而达到了提高DMA进行数据传输效率的效果。
作为一个较优的实施方式,在DMA将所述源端的数据转换为目的端的数据之前,该DMA可以通过双向同步先入先出(First In First Out,简称为FIFO)缓存该源端的数据,通过缓存源端的数据,可以提高后续进行转换的效率。
在实施时,DMA可以通过多种实施方式将源端的数据转换为目的端的数据,例如:DMA在所述双向同步FIFO中选择预定数目个读数据;DMA通过该DMA上的不对齐处理逻辑将读数据根据所述目的端的数据的数据宽度进行对齐,得到目的端的数据。该优选实施方式比较易于实现。
在实施时,对应于多种数据传输,源端和目的端可以为如下组合之一:
源端为SM,目的端为程序存储器(PM);
源端为SM,目的端为数据存储器(DM);
源端为DM,目的端为SM。
优选地,上述源端和目的端之间的数据宽度可以为:DMA和SM之间的数据宽度为64比特;DMA和PM之间的数据宽度为128比特;DMA和DM之间的数据宽度为256比特。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在另外一个实施例中,还提供了一种数据传输软件,该软件用于执行上述实施例及优选实施例中描述的技术方案。
在另外一个实施例中,还提供了一种存储介质,该存储介质中存储有上述数据传输软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。
本发明实施例还提供了一种数据传输装置,位于DMA,该数据传输装置可以用于实现上述数据传输方法及优选实施方式,已经进行过说明的,不再赘述,下面对该数据传输装置中涉及到的模块进行说明。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统和方法较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图2是根据本发明实施例的数据传输装置的结构框图,如图2所示,该装置包括:接收模块22、转换模块24和发送模块26,下面对上述结构进行详细描述。
接收模块22,用于通过第一物理总线接收源端的数据,其中该第一物理总线的宽度与该源端的数据的数据宽度相同;转换模块24,连接至接收模块22,用于将接收模块22接收到的源端的数据转换为目的端的数据,其中目的端的数据的数据宽度与该目的端对应的数据宽度相同;发送模块26,连接至转换模块24,用于通过第二物理总线将转换模块24转换得到的目的端的数据发送给该目的端,其中,该第二物理总线的数据宽度与该目的端的数据的数据宽度相同。
图3是根据本发明实施例的数据传输装置的优选的结构框图,如图3所示,该装置还包括:缓存模块32;比较优的,转换模块24包括:选择模块242和处理模块244,下面对上述结构进行详细描述。
数据传输装置还包括:缓存模块32,连接至转换模块24,用于通过双向同步先入先出FIFO缓存所述源端的数据。
优选地,转换模块24包括:选择模块242,用于在所述双向同步FIFO中选择预定数目个读数据;处理模块244,连接至选择模块242,用于通过不对齐处理逻辑将选择模块242选择的读数据根据目的端的数据的数据宽度进行对齐,得到目的端的数据。
优选地,源端为SM,目的端为程序存储器(PM);
源端为SM,目的端为数据存储器(DM);
源端为DM,目的端为SM。
优选地,DMA和SM之间的所述数据宽度为64比特;
DMA和PM之间的所述数据宽度为128比特;
DMA和DM之间的所述数据宽度为256比特。
本实施例提供了一种DMA,图4是根据本发明实施例的DMA的结构框图,如图4所示,该DMA包括上述实施例的数据传输装置2,该数据传输装置2的结构如图2和3所示,在此不再赘述。
下面将结合优选实施例进行说明,以下优选实施例结合了上述实施例及优选实施方式。
优选实施例一
本优选实施例提供了一种改进的DMA进行数据传输的方法。根据不同传输模式在时间上分离的特点,只采用一个传输通道实现了不同的传输功能;将DMA物理总线宽度设计成和数据宽度一致(例如:DMA和SM之间数据宽度为64bit,DMA和PM之间数据宽度是128bit,DMA和DM之间数据宽度是256bit),采用多组(multi-band)FIFO缓冲源端和目的端总线宽度的不一致。
在本实施例中,DMA可执行的功能包括:SM到PM的指令数据搬运,SM到DM的数据搬运以及DM到SM的数据搬运。该DMA可以由ARM或DSP核进行配置和访问。
优选地,DMA包括如下:
(1)8个32比特宽的双向同步FIFO,用于缓冲源端和目的端存储器数据位宽的不一致。
(2)SM MUX,用于DM到SM数据传输时选择8个FIFO的2个读数据。
(3)PM MUX,用于SM到PM传输时选择8个FIFO的4个读数据。
(4)写DM地址不对齐处理逻辑,用于SM到DM数据传输时将从8个FIFO读出的256比特数据根据DM地址(以32比特为单位)自动对齐。
(5)读DM地址不对齐处理逻辑,用于DM到SM数据传输时将从DM读出的256比特数据按照DM地址自动对齐。
(6)DMA控制逻辑和寄存器,用于接受外部访问和控制数据流,其中SM读写控制逻辑控制SM和8个FIFO以AXI总线burst(猝发)方式进行数据传送,PM/DM读写控制逻辑控制8个FIFO和PM/DM的数据传送。DMA配置寄存器包括ext_addr、int_addr和size_ctrl_start,其中ext_addr和int_addr分别指示SM地址和PM/DM地址,size、ctrl和start分别表示传送数据量、传输模式和启动位。
在优选实施例中,DMA执行如下步骤S302至步骤S306。
步骤S302:DSP核或者ARM配置DMA寄存器,设置DMA访问SM、PM或DM的起始地址以及DMA搬运的数据量、传输模式和启动位。启动位所在寄存器需要最后配置。
步骤S304:在启动位被置高之后,DMA开始搬运工作。SM和PM/DM两侧各有一个状态机分别负责SM和PM/DM的读写请求发起。两端状态机各有一个size寄存器对剩余传输量进行计数。size寄存器在一次读写请求成功之后会相应递减。两端状态机根据剩余size的大小和DMAFIFO的空满状态决定是否发起读写请求。
步骤S306:在size寄存器计到0时,两端不再发起读写请求,DMA的搬运工作完成,同时将start寄存器变为0。
通过本优选实施例的技术方案,DMA支持不同数据位宽的存储器之间的数据传输,源端的读和目的端的写可同时进行,SM的读写支持高效的AXI总线burst传送,DM的读写支持连续请求。以上特点显著提高了DMA的传输效率。该DMA只使用一个通道实现SM和DM之间的双向传输,对FIFO的寄存器资源进行了复用,节省了硬件资源。该DMA支持最小数据量为32比特的数据传送(只针对DM,PM为128比特)且支持根据DM地址自动将数据对齐,方便软件调试。
优选实施例二
本优选实施例提供了一种DMA,例如图5示出的DMA,本实施例对该DMA的组成进行详细描述。
为了实现DM的非对齐地址数据访问,DMAFIFO被分为8个组(bank),每个组(bank)是32bit宽。图6是根据本发明实施例的5×32-bit双向FIFO的实现的示意图,如图6所示的每个32bit FIFO的实现。该FIFO深度为5,比一个burst-16数据量略大(当深度为4时,DMAFIFO大小为32×4×8bit=64×16bit=1024bit)。该FIFO可以实现双向传输,5个32-bit寄存器在双向传输时是复用的。传输方向由dir信号控制,mem区分PM和DM,dir和mem信号共同决定传输模式(SM2PM,SM2DM,DM2SM)。图中“_d”后缀表示下行(download)方向,即SM2PM或SM2DM;“_u”后缀表示上行(upload)方向,即DM2SM。优选地,读/写请求成功,需要发起一个新的请求,但从DMA FIFO读取的数据或者写往DMA FIFO的数据可能比请求信号要晚几个周期,所以当需要发起新的请求的时候DMAFIFO的空满状态还没有更新。等到空满状态更新后再决定是否发起新的请求会影响数据传输效率。在FIFO内部有两个计数寄存器:num和num2,它们用于对存储在FIFO内的32-bit数据个数进行计数。num和num2可能并不是真实的数据个数,它们被作为发起新请求的条件。当检查发起新请求的空满状态时,没有必要等到前一个请求对应的数据已经完全读写完毕之后。num和num2的定义分别如表1和表2所示,其中burst16_req表示1个成功的burst-16请求或者当一个burst-16被拆成两个小burst时(遇到4KB边界的时候出现这种情况)的第一个成功的burst请求,new_dm_req表示应答成功的DMA访问DM的请求。
表1 5×32-bit双向FIFO中num的定义
需要说明的是,如表1所示,num寄存器的计数被分为SM2PM,SM2DM,DM2SM三种情况。其中,为了更早地发起请求,SM2DM和DM2SM两种传输模式的num的计数并没有完全使用真正的读写使能信号。对于SM2DM传输模式,当真正写使能(wen_d)为高时;计数器加1,当new_dm_req为高时,计数器减1。对于DM2SM传输模式,当真正读使能(ren_u)为高时;计数器减1,当new_dm_req为高时,计数器加1。
表2 5×32-bit双向FIFO中num2的定义
需要说明的是,如表2所示,num2寄存器的计数被分为下行和上行两种情况。为了更早地发起请求,num2的计数并没有完全使用真正的读写使能信号。对于下行方向,当burst16_req为高时,计数器加4;当真正读使能(ren_d)为高时,计数器减1。对于上行方向,当burst16_req为高时,计数器减4;当真正写使能(wen_u)为高时,计数器减1。
由于burst-16的需要,FIFO左侧的空满信号有特殊的判断机制。对于下行方向,如果num2>1,full_d被置为1,表示FIFO可以接收的32-bit数据个数小于4。所以当8个FIFO的full_d信号都为0时,DMA可以接收一个burst-16的数据量。对于上行方向,如果num2<4,empty_u被置为1,表示存储在FIFO的32-bit数据个数小于4。所以,当8个FIFO的empty_u都为0时,DMA可以发送一个burst-16与请求。
在FIFO的右侧,empty_d和full_u这两个空满信号使用常规的判断机制,即num等于0时,empty_d为高;num等于5时,full_u为高。full_d、empty_d、full_u和empty_u的定义如表3所示。
表3 空满信号定义
| 信号 | 定义 |
| full_d | num2=2,3,4,5 |
| empty_u | num2=0,1,2,3 |
| empty_d | num=0 |
| full_u | num=5 |
| empty_d_one | num=0,1 |
| full_u_four | num=4,5 |
在FIFO的右侧,除了empty_d和full_u信号之外,还有另外一组空满信号:empty_d_one和full_u_four(表3)。这两个信号用于当DMA连续访问DM时。例如,当从DMA FIFO传送数据到DM时,如果在当前周期,num=1且请求信号req=1,并且这个请求被成功应答,那么num将会在下个周期变为0,假如没有数据被写进FIFO的话。在当前周期,不能将empty_d信号作为判断是否在下周发起新的请求的条件,因为num在下周才会更新。如果把num=0或1认为是empty的话,这个问题可以解决。
SM MUX是一个4选1MUX。在对SM进行burst写操作时,读取DMA FIFO按照{fifo_1,fifo0}、{fifo_3,fifo_2}、{fifo_5,fifo_4}、{fifo_7,fifo_6}轮询的方式进行访问。
PM MUX是一个2选1MUX。在对PM进行写操作时,读取DMA FIFO按照{fifo_3,fifo_2,fifo_1,fifo_0}、{fifo_7,fifo6,fifo_5,fifo_4}轮询的方式进行访问。
因为读写DM的数据宽度为256bit,当DM地址(32bit为单位)为8的倍数(包括0)时,这种访问是地址对齐的访问,如图7(a)所示。当DM地址不为8的倍数时,DM地址是非对齐的地址,这时需要对数据做特殊的处理。如图7(b)所示,当写DM起始地址是2时,第一次写DM只需将当前数据的最低6个32bit,即c_data0到c_data5,写进DM。8bit的mask信号控制DM的哪个32bit需要写入。第二次写入时将缓存的p_data6、p_data7与刷新的c_data0到c_data5拼接而成的256bit数据全部写入DM。后面几次的写入方式与第二次相同。最后一次的写入取决于传送数据量的大小。图中,如果传送数据量为256bit的倍数的话,最后一次写入2个32bit,因为第一次写入6个32bit。数据缓存的任务由一个寄存器完成,c_data和p_data同步更新。
当读DM时,与写DM类似,如果读DM地址非对齐,比如为2时,第一次需要将缓存的读数据p_data2到p_data7和刷新的读数据c_data0、c_data1拼接而成的256bit数据全部写入DMAFIFO。后面几次写入与第一次相同。最后一次写入也取决于传送数据量的大小。同样,需要一个寄存器缓存从DM读回的数据,读回数据c_data和缓存数据p_data同步更新。用于缓存读数据的寄存器可以和缓存写数据的寄存器复用。
图8是根据本发明实施例的写DM时地址不对齐处理MUX的示意图,如图8所示,图8的MUX给出了写DM时DM地址低3bit为0到7时对c_data和p_data的选择。当DM地址低3bit为0时,直接选择c_data作为MUX的输出;当DM地址低3bit不为0时,选择c_data的一部分和p_data的一部分拼接成256bit。
图9是根据本发明实施例的读DM时地址不对齐处理MUX的示意图,如图9所示,图9的MUX给出了读DM时DM地址低3bit为0到7时对c_data和p_data的选择。当DM地址低3bit为0时,直接选择c_data作为MUX的输出;当DM地址低3bit不为0时,选择c_data的一部分和p_data的一部分拼接成256bit。
图10是根据本发明实施例的SM读写控制逻辑状态机的示意图,如图10所示,图10是SM读写控制逻辑状态机。有三个状态:IDLE_BURST、REQ_BURST和WAIT_BURST。IDLE_BURST为默认状态;REQ_BURST下,DMA向AXI矩阵的读或写请求信号为高;WAIT_BURST状态下等待下一次burst请求或者等待回到IDLE_BURST状态。在IDLE_BURST状态下,当start为高,size不为0,且DMA FIFO空满满足要求时,进入REQ_BURST状态。在REQ状态下,当请求和应答信号握手成功之后,进入WAIT_BURST状态,同时更新地址(addr)、size、burst length(len)等信号,请求信号req被清零。在WAIT_BURST状态下,当size不为0且满足DMA FIFO空满要求时,重新进入REQ_BURST状态进行下一次请求;当size为0时,进入IDLE_BURST状态。
图11是根据本发明实施例的PM/DM读写控制逻辑状态机的示意图,如图11所示,PM/DM读写控制逻辑状态机。有三个状态:IDLE_256、REQ_256、和WAIT_256。IDLE_256为默认状态;REQ_256状态下,DMA向DM仲裁器的读或写请求信号为高;WAIT_256状态下,等待下一次DM读写请求或者等待回到IDLE256状态。在IDLE256状态下,当应答信号aready为高(aready默认为高),start为高,size不为0,且DMA FIFO空满满足要求时,进入REQ_256状态。在REQ_256状态下,当握手不成功(aready为0)时,继续保持REQ状态;当握手成功,size大于8,且DMA FIFO空满满足要求(使用上面提到的empty_d_one或full_u_four)时,发起下一个请求,同时地址、数据和size信号更新;当握手成功,size小于等于8或者size大于8单DMA FIFO空满不满足要求时,进入WAIT_256状态,同时地址、数据和size信号更新。在WAIT_256状态下,当size不为0且满足DMA FIFO空满要求时,重新进入REQ_256状态进行下一次请求;当size为0且areay为高时,进入IDLE_256状态。在两个状态机都进入IDLE状态时,start信号清零,同时其他一些关键寄存器回到初始态。
上面对图11状态机的描述是针对访问DM的。访问PM时同样使用该状态机。区别在于PM访问不需要连续的访问,即没有REQ_256到REQ_256的两次连续访问。访问PM只有写操作,PM地址宽度是128bit,需要轮流判断fifo_0到fifo_3和fifo_4到fifo_7的空信号。
通过上述实施例,提供了一种数据传输方法、装置及直接存储器存取,根据不同传输模式在时间上分离的特点,只采用一个传输通道实现了不同的传输功能;将DMA物理总线宽度设计成和数据宽度一致(例如:DMA和SM之间数据宽度为64bit,DMA和PM之间数据宽度是128bit,DMA和DM之间数据宽度是256bit),采用多组bank FIFO缓冲源端和目的端总线宽度的不一致,解决了相关技术中DMA进行数据传输的资源利用率比较低的问题,从而达到了提高DMA进行数据传输效率的效果需要说明的是,这些技术效果并不是上述所有的实施方式所具有的,有些技术效果是某些优选实施方式才能取得的。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种数据传输方法,其特征在于包括:
直接存储器存取DMA通过第一物理总线接收源端的数据,其中所述第一物理总线的宽度与所述源端的数据的数据宽度相同;
所述DMA将所述源端的数据转换为目的端的数据,其中所述目的端的数据的数据宽度与所述目的端对应的数据宽度相同;
所述DMA通过第二物理总线将所述目的端的数据发送给所述目的端,其中,所述第二物理总线的数据宽度与所述目的端的数据的数据宽度相同。
2.根据权利要求1所述的方法,其特征在于,在所述DMA将所述源端的数据转换为目的端的数据之前,还包括:
所述DMA通过双向同步先入先出FIFO缓存所述源端的数据。
3.根据权利要求2所述的方法,其特征在于,所述DMA将所述源端的数据转换为目的端的数据包括:
所述DMA在所述双向同步FIFO中选择预定数目个读数据;
所述DMA通过该DMA上的不对齐处理逻辑将所述读数据根据所述目的端的数据的数据宽度进行对齐,得到所述目的端的数据。
4.根据权利要求1至3中任一项所述的方法,其特征在于,
所述源端为SM,所述目的端为程序存储器PM;
所述源端为所述SM,所述目的端为数据存储器DM;
所述源端为所述DM,所述目的端为所述SM。
5.根据权利要求4所述的方法,其特征在于,
所述DMA和SM之间的所述数据宽度为64比特;
所述DMA和所述PM之间的所述数据宽度为128比特;
所述DMA和所述DM之间的所述数据宽度为256比特。
6.一种数据传输装置,位于直接存储器存取DMA,其特征在于包括:
接收模块,用于通过第一物理总线接收源端的数据,其中所述第一物理总线的宽度与所述源端的数据的数据宽度相同;
转换模块,用于将所述源端的数据转换为目的端的数据,其中所述目的端的数据的数据宽度与所述目的端对应的数据宽度相同;
发送模块,用于通过第二物理总线将所述目的端的数据发送给所述目的端,其中,所述第二物理总线的数据宽度与所述目的端的数据的数据宽度相同。
7.根据权利要求6所述的装置,其特征在于,还包括:
缓存模块,用于通过双向同步先入先出FIFO缓存所述源端的数据。
8.根据权利要求7所述的装置,其特征在于,所述转换模块包括:
选择模块,用于在所述双向同步FIFO中选择预定数目个读数据;
处理模块,用于通过不对齐处理逻辑将所述读数据根据所述目的端的数据的数据宽度进行对齐,得到所述目的端的数据。
9.根据权利要求6至8中任一项所述的装置,其特征在于,
所述源端为SM,所述目的端为程序存储器PM;
所述源端为所述SM,所述目的端为数据存储器DM;
所述源端为所述DM,所述目的端为所述SM。
10.根据权利要求9所述的装置,其特征在于,
所述DMA和SM之间的所述数据宽度为64比特;
所述DMA和所述PM之间的所述数据宽度为128比特;
所述DMA和所述DM之间的所述数据宽度为256比特。
11.一种直接存储器存取DMA,其特征在于包括:权利要求6至10中任一项所述的数据传输装置。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201310066641.2A CN104021097A (zh) | 2013-03-01 | 2013-03-01 | 数据传输方法、装置及直接存储器存取 |
| PCT/CN2013/082369 WO2014131273A1 (zh) | 2013-03-01 | 2013-08-27 | 数据传输方法、装置及直接存储器存取 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201310066641.2A CN104021097A (zh) | 2013-03-01 | 2013-03-01 | 数据传输方法、装置及直接存储器存取 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN104021097A true CN104021097A (zh) | 2014-09-03 |
Family
ID=51427508
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201310066641.2A Pending CN104021097A (zh) | 2013-03-01 | 2013-03-01 | 数据传输方法、装置及直接存储器存取 |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN104021097A (zh) |
| WO (1) | WO2014131273A1 (zh) |
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20150074314A1 (en) * | 2013-09-09 | 2015-03-12 | Sony Corporation | Memory, memory system and memory control method |
| WO2016082362A1 (zh) * | 2014-11-25 | 2016-06-02 | 中兴通讯股份有限公司 | 数据位宽转换方法、装置和设备 |
| CN107943727A (zh) * | 2017-12-08 | 2018-04-20 | 深圳市德赛微电子技术有限公司 | 一种高效dma控制器 |
| CN110781120A (zh) * | 2019-10-23 | 2020-02-11 | 山东华芯半导体有限公司 | 一种axi总线主机设备跨4kb传输的实现方法 |
| CN112052204A (zh) * | 2020-08-20 | 2020-12-08 | 浙江树人学院(浙江树人大学) | 非同源时钟数据传输系统 |
| CN114443513A (zh) * | 2022-04-08 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种视频数据读写方法及相关装置 |
| CN115168260A (zh) * | 2022-09-08 | 2022-10-11 | 深圳鲲云信息科技有限公司 | 直接内存存取装置、数据传输方法及集成电路系统 |
| CN116244234A (zh) * | 2023-02-22 | 2023-06-09 | 中国科学院微电子研究所 | 数据传输方法、装置、电子设备及存储介质 |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119336824A (zh) * | 2023-07-20 | 2025-01-21 | 北京有竹居网络技术有限公司 | 数据处理方法及装置、电子设备、存储介质 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1497461A (zh) * | 1997-04-22 | 2004-05-19 | �ֹ��� | 数据传送方法和数据传送设备 |
| US20060195628A1 (en) * | 2005-02-28 | 2006-08-31 | Fujitsu Limited | System and method for DMA transfer between FIFOs |
| CN101018179A (zh) * | 2007-03-07 | 2007-08-15 | 今创集团有限公司 | 数据总线桥接器及其工作方法 |
| CN101667451A (zh) * | 2009-09-11 | 2010-03-10 | 西安电子科技大学 | 高速数据交换接口的数据缓存器及其数据缓存控制方法 |
| CN102567254A (zh) * | 2010-12-31 | 2012-07-11 | 重庆重邮信科通信技术有限公司 | 采用dma控制器进行数据归一化处理的方法 |
-
2013
- 2013-03-01 CN CN201310066641.2A patent/CN104021097A/zh active Pending
- 2013-08-27 WO PCT/CN2013/082369 patent/WO2014131273A1/zh not_active Ceased
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1497461A (zh) * | 1997-04-22 | 2004-05-19 | �ֹ��� | 数据传送方法和数据传送设备 |
| US20060195628A1 (en) * | 2005-02-28 | 2006-08-31 | Fujitsu Limited | System and method for DMA transfer between FIFOs |
| CN101018179A (zh) * | 2007-03-07 | 2007-08-15 | 今创集团有限公司 | 数据总线桥接器及其工作方法 |
| CN101667451A (zh) * | 2009-09-11 | 2010-03-10 | 西安电子科技大学 | 高速数据交换接口的数据缓存器及其数据缓存控制方法 |
| CN102567254A (zh) * | 2010-12-31 | 2012-07-11 | 重庆重邮信科通信技术有限公司 | 采用dma控制器进行数据归一化处理的方法 |
Cited By (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20150074314A1 (en) * | 2013-09-09 | 2015-03-12 | Sony Corporation | Memory, memory system and memory control method |
| US9483425B2 (en) * | 2013-09-09 | 2016-11-01 | Sony Corporation | Memory including a band width conversion unit, memory system and memory control method using the same |
| WO2016082362A1 (zh) * | 2014-11-25 | 2016-06-02 | 中兴通讯股份有限公司 | 数据位宽转换方法、装置和设备 |
| CN107943727B (zh) * | 2017-12-08 | 2021-02-09 | 深圳市德赛微电子技术有限公司 | 一种高效dma控制器 |
| CN107943727A (zh) * | 2017-12-08 | 2018-04-20 | 深圳市德赛微电子技术有限公司 | 一种高效dma控制器 |
| CN110781120A (zh) * | 2019-10-23 | 2020-02-11 | 山东华芯半导体有限公司 | 一种axi总线主机设备跨4kb传输的实现方法 |
| CN110781120B (zh) * | 2019-10-23 | 2023-02-28 | 山东华芯半导体有限公司 | 一种axi总线主机设备跨4kb传输的实现方法 |
| CN112052204A (zh) * | 2020-08-20 | 2020-12-08 | 浙江树人学院(浙江树人大学) | 非同源时钟数据传输系统 |
| CN112052204B (zh) * | 2020-08-20 | 2022-08-12 | 浙江树人学院(浙江树人大学) | 非同源时钟数据传输系统 |
| CN114443513A (zh) * | 2022-04-08 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种视频数据读写方法及相关装置 |
| CN115168260A (zh) * | 2022-09-08 | 2022-10-11 | 深圳鲲云信息科技有限公司 | 直接内存存取装置、数据传输方法及集成电路系统 |
| CN115168260B (zh) * | 2022-09-08 | 2022-12-06 | 深圳鲲云信息科技有限公司 | 直接内存存取装置、数据传输方法及集成电路系统 |
| CN116244234A (zh) * | 2023-02-22 | 2023-06-09 | 中国科学院微电子研究所 | 数据传输方法、装置、电子设备及存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2014131273A1 (zh) | 2014-09-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN104021097A (zh) | 数据传输方法、装置及直接存储器存取 | |
| CN105224482B (zh) | 一种fpga加速卡高速存储系统 | |
| US9929972B2 (en) | System and method of sending data via a plurality of data lines on a bus | |
| CN105095109B (zh) | 缓存访问方法、缓存访问路由器和计算机系统 | |
| CN101539902B (zh) | 多计算机系统中节点的dma设备及通信方法 | |
| CN103077123A (zh) | 一种数据写入和读取方法及装置 | |
| US10740000B2 (en) | Adaptive transaction layer packet for latency balancing | |
| WO2018232736A1 (zh) | 内存访问技术及计算机系统 | |
| CN106951388A (zh) | 一种基于PCIe的DMA数据传输方法及系统 | |
| CN106933760A (zh) | 一种基于axi协议的dma控制器及数据上传方法 | |
| CN103605625B (zh) | 基于AXI总线的Nor Flash芯片的控制方法 | |
| CN103714026B (zh) | 一种支持原址数据交换的存储器访问方法及装置 | |
| CN108228492A (zh) | 一种多通道ddr交织控制方法及装置 | |
| CN115543882B (zh) | 不同位宽总线间的数据转发装置及数据传输方法 | |
| CN117093157B (zh) | 一种用于单向光传输的ddr高速读写方法及系统 | |
| US7308523B1 (en) | Flow-splitting and buffering PCI express switch to reduce head-of-line blocking | |
| CN112948295B (zh) | 一种基于axi4总线的fpga与ddr高速数据包传输系统及方法 | |
| CN102841871B (zh) | 基于高速串行总线的DMA结构的pipeline读写方法 | |
| CN101162448A (zh) | 一种usb高速数据隧道的硬件传输方法 | |
| WO2010105520A1 (zh) | 一种读数据的方法、装置和系统 | |
| CN106294225A (zh) | 一种数据读取方法、对端设备及控制器 | |
| CN104461966B (zh) | 一种基于Nand Flash芯片的数据缓存传输方法及其控制器 | |
| WO2024131147A1 (zh) | 增强型串行外设接口实现方法、装置、转换器件及介质 | |
| WO2011091690A1 (zh) | 一种数据处理方法和装置 | |
| CN100533417C (zh) | 片上系统的数据传输方法及直接存储器访问控制器 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| WD01 | Invention patent application deemed withdrawn after publication | ||
| WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140903 |