CN100464318C - 一种实现高效dma传输的dma控制器及传输方法 - Google Patents

一种实现高效dma传输的dma控制器及传输方法 Download PDF

Info

Publication number
CN100464318C
CN100464318C CNB2007100988321A CN200710098832A CN100464318C CN 100464318 C CN100464318 C CN 100464318C CN B2007100988321 A CNB2007100988321 A CN B2007100988321A CN 200710098832 A CN200710098832 A CN 200710098832A CN 100464318 C CN100464318 C CN 100464318C
Authority
CN
China
Prior art keywords
dma
hardware
channel
transmission
data
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.)
Expired - Fee Related
Application number
CNB2007100988321A
Other languages
English (en)
Other versions
CN101046786A (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.)
Wuxi Vimicro Corp
Original Assignee
Vimicro Corp
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 Vimicro Corp filed Critical Vimicro Corp
Priority to CNB2007100988321A priority Critical patent/CN100464318C/zh
Publication of CN101046786A publication Critical patent/CN101046786A/zh
Application granted granted Critical
Publication of CN100464318C publication Critical patent/CN100464318C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)

Abstract

一种实现高效直接内存访问DMA传输的DMA控制器及传输方法;所述DMA控制器包括DMA控制模块,其包括用于进行DMA传输的装置以及用于进行判断的装置,用于进行DMA传输的装置接收到DMA传输请求后,进行DMA传输,接收到结束指示后,结束本次DMA传输;所述用于进行判断的装置每当用于进行DMA传输的装置传输完一块数据后判断外设与DMA控制器间传输的字节数是否达到外设缓存空间大小,达到则发送完成本次外设与DMA控制器间的DMA传输请求的信号给外设;否则判断DMA控制器与内存间传输的字节数是否达到内存缓存空间大小,达到则发送通道完成传输中断请求给CPU,发送结束指示给用于进行DMA传输的装置。

Description

一种实现高效DMA传输的DMA控制器及传输方法
技术领域
本发明涉及DMA(Direct Memory Access Control,直接内存访问)传输,具体涉及一种实现高效DMA传输的DMA控制器及传输方法。
背景技术
在含有中央处理器(CPU)的系统中,为了提高内存和CPU使用效率,在大量内存数据有规律的操作时,通常采用直接内存访问(Direct MemoryAccess Control,DMA)的方式对数据进行操作。而DMA的操作是通过DMA控制器(DMA Controller,DMAC)来实现的。DMA控制器有选择型和多路型两类,本文中涉及的DMA控制器为选择型,即物理上连接有多个硬件,而逻辑上只允许一个硬件,即在某段时间内只能为一个硬件服务。
在现有技术中,外设发起的DMA传输通常是从外设的缓存中取数据放到总线上的存储器中;如图1所示,比如当有外设需要进行DMA传输时,当其缓存装满数据后,其通过DMA请求触发器向DMA控制器发起DMA传输请求。在此之前CPU已经将地址等控制信息配给DMA控制器内的地址寄存器中,当DMA控制器接到DMA传输请求时,其向CPU发起总线占用请求。CPU通常在执行完当前指令后将总线控制权交给DMA控制器。此时DMA控制器的控制、状态寄存器发生变化,表明已获得总线控制权,开始进行DMA传输。传输中用一个计数器对传输的数据量进行计数,当计数达到外设缓存空间大小时,DMA控制器向CPU归还总线控制权,完成本次DMA传输;即一次DMA传输只能完成一次外设的DMA传输请求。当外设再次需要进行DMA传输时,就再发起一次DMA传输。虽然内存中缓存空间相对而言较大,但每次还是只能传输相当于外设缓存空间大小的数据量,不能充分利用内存中缓存的空间。由于每次DMA传输的数据量受到外设缓存空间大小的限制,所以在传输大量数据时,往往需要发起多次DMA传输,而每次DMA传输都必须等待CPU将总线控制权交给DMA控制器,因此传输效率低。另外,每进行一次DMA传输,就会对内存进行一次访问。而内存的效率由被访问次数决定,访问得越频繁,内存效率越低,而系统效率又与内存效率直接相关,这样的工作方式在某种程度上降低了系统的工作效率。
另外,在现有的DMA传输中,如果外设比如UART(UniversalAsynchronous Receiver/Transmitter通用异步收发器)等仅有字节类型的缓存,则DMA控制器仅用总线的低8位进行传输,降低了总线的利用率,并且DMA传输效率也比较低。DMA控制器与外设间的数据传输如图2、3所示。
发明内容
针对上述不足,本发明要解决的技术问题是提供一种实现高效DMA传输的DMA控制器,能够提高每次DMA传输的数据量,提高传输效率。
所述实现高效DMA传输的DMA控制器包括用于控制外设和内存间的DMA传输的DMA控制模块;所述DMA控制模块包括用于进行DMA传输的装置以及用于进行判断的装置;其中,所述用于进行DMA传输的装置接收到DMA传输请求后,进行DMA传输,接收到用于进行判断的装置发送的结束指示后,结束本次DMA传输;
所述用于进行判断的装置每当用于进行DMA传输的装置传输完一块数据后判断外设与DMA控制器间传输的字节数是否达到外设缓存空间大小,达到则发送完成本次外设与DMA控制器间的DMA传输请求的信号给外设;否则判断DMA控制器与内存间传输的字节数是否达到内存缓存空间大小,达到则发送通道完成传输中断请求给CPU,发送结束指示给用于进行DMA传输的装置。
进一步的,所述DMA控制器还包括:
外设缓存大小寄存器,用于存放外设的缓存空间大小的数值;
内存缓存大小寄存器,用于存放内存中缓存空间大小的数值;
第一计数器,用于在一次外设与DMA控制器间的DMA传输中对外设与DMA控制器间传输的字节数进行计数;
第二计数器,用于在一次DMA传输中对DMA控制器与内存间传输的字节数进行计数;
所述DMA控制模块中用于进行判断的装置与所述第一、第二计数器及外设、内存缓存大小寄存器相连,通过比较第一计数器的计数值是否小于外设缓存大小寄存器中的数值,来判断外设与DMA控制器间传输的字节数是否达到外设缓存空间的大小;通过比较第二计数器的计数值是否小于内存缓存大小寄存器中的数值,来判断DMA控制器与内存间传输的字节数是否达到内存缓存空间的大小。
进一步的,所述DMA控制器还包括:
硬件请求使能状态寄存器,用于存放表示硬件请求使能状态的数值,包括表示“允许硬件请求”和“不允许硬件请求”的值;在需要硬件发起DMA传输时由CPU置为表示“允许硬件请求”的值;
通道状态寄存器,用于存放表示通道状态的数值,包括表示“通道被占用”的值和表示“通道可用”的值;
所述DMA控制模块中用于进行DMA传输的装置与所述硬件请求使能状态寄存器、通道状态寄存器相连,当收到硬件的DMA传输请求时探询所述硬件请求使能状态寄存器与所述通道状态寄存器的数值,当硬件请求使能状态寄存器的数值表示“允许硬件请求”时,接收硬件的DMA传输请求,表示“不允许硬件请求”时继续探询硬件请求使能状态寄存器;当通道状态寄存器的数值表示“通道可用”进行DMA传输;表示“通道被占用”时继续探询通道状态寄存器;在开始DMA传输后,将所用传输通道的通道状态寄存器的值置为“通道被占用”;当该通道上的DMA传输完成或终止后,将通道状态寄存器的值置为表示“通道可用”的值;
DMA控制模块中用于进行判断的装置在DMA控制器与内存间传输的字节数达到内存缓存空间大小时,通过将所述硬件请求使能状态寄存器置为表示“不允许硬件请求”的值发送结束指示给用于进行DMA传输的装置。
进一步的,所述DMA控制器还包括多个通道、数据拼拆模块和先进先出寄存器FIFO;各通道每次传输的数据量对应于所连接的总线接口;将每次传输的数据量为32字节的通道称为标准通道;将每次传输的数据量不到32字节的通道称为非标准通道;各通道与FIFO相连,并分别通过不同的总线接口连接在具有相应缓存类型的硬件上;
所述DMA控制模块与各通道、数据拼拆模块、FIFO相连,在进行非标准通道和标准通道之间的DMA传输时启动所述数据拼拆模块;当接收到数据拼拆模块的拼接完毕消息时,将FIFO中拼接好的数据通过目的硬件所连接的通道发送给目的硬件;当接收到数据拼拆模块的拆分完毕消息时,通过源硬件所连接的通道从源硬件中读取数据放入FIFO;当接收到数据拼拆模块的可发送消息时,将FIFO中拆分出的的数据块通过目的硬件所连接的通道发送给目的硬件;
所述数据拼拆模块与各通道、FIFO相连,当源硬件的缓存类型比目的硬件的小时,将源硬件通过所连接的通道发送的数据在FIFO中进行拼接,当到达FIFO的数据量达到目的硬件的缓存类型大小时发送拼接完毕消息给DMA控制模块;当源硬件的缓存类型比目的硬件的大时,从到达FIFO的数据里拆分出符合目的硬件缓存类型大小的数据块,每拆一次发送一个可发送消息给DMA控制模块;当发送的数据量达到源硬件的缓存类型大小后发送拆分完毕消息给DMA控制模块。
进一步的,所述DMA控制器还包括:
源地址变化方式寄存器,用于存放表示传输中源地址变化方式的数值;包括表示“增加”、“减少”和“不变”的值;
目的地址变化方式寄存器用于存放表示传输中目的地址变化方式的数值;包括表示“增加”、“减少”和“不变”的值;
第三计数器,用于存放DMA传输的源地址;
第四计数器,用于存放DMA传输的目的地址;
所述DMA控制模块与所述第三、第四计数器、源、目的地址变化方式寄存器相连,探询源地址变化方式寄存器及目的地址变化方式寄存器的数值,根据该数值相应控制第三、第四计数器中的源/目的地址的数值递增、或递减、或不变;并按照第三计数器中的源地址和第四计数器中存放的目的地址进行DMA传输。
本发明要解决的又一技术问题是提供一种实现高效DMA传输的传输方法,所述方法包括:
(a)接收DMA传输请求;
(b)进行DMA传输;并对外设与DMA控制器间传输的数据量、及DMA控制器和内存间传输的数据量分别进行计数;
每传输完一块数据执行(c1);
(c1)判断外设与DMA控制器间传输的数据量是否达到外设缓存大小,如果是则执行(c2),如果否则返回(b);
(c2)判断DMA控制器和内存间传输的数据量是否达到内存中缓存大小,如果是则执行(d);如果否则返回(a);
(d)结束本次DMA传输。
进一步的,步骤(a)前还存在:
(a1)初始化通道;CPU将外设和内存的缓存空间大小送入DMA控制器,并使能通道的硬件请求;
所述步骤(d)还包括:关闭通道的硬件请求使能。
进一步的,当源硬件的缓存类型与目的硬件的缓存类型不一致时,步骤(c)具体为:
进行DMA传输,对进行DMA传输的数据在所述FIFO中进行拼接和拆分;使每次读、写操作的数据量分别与源、目的硬件的缓存类型一致。
采用了本发明的技术方案后,每次DMA传输的数据量由内存中缓存空间大小决定,从而可以在一次DMA传输中完成多次外设与DMA控制器间的DMA传输,大大增加了每次DMA传输的数据量,传输效率显著提高;并且由于在传输时减少了访问内存的次数,内存的效率得以提高;另外,采用优化方案后,还可以进一步提升DMA传输的效率。
附图说明
图1是现有技术中DMA控制器的工作原理示意图;
图2是现有技术中,DMA控制器接收数据的示意图;
图3是现有技术中,DMA控制器接收数据的示意图;
图4是本发明实现高效DMA传输的传输方法的具体实施流程图;
图5是本发明的DMA控制器接收数据的示意图;
图6是本发明的DMA控制器接收数据的示意图。
具体实施方式
下面将结合附图及实施例对本发明的技术方案进行更详细的说明。
为了方便说明,首先解释一下文中出现的几个概念;在本文中:
一次DMA传输是指从DMA控制器向CPU发起请求并获得总线控制权开始,到DMA控制器发出中断为止进行的传输;在一次DMA传输中,DMA控制器只需访问一次内存,所传输的数据量为内存中缓存空间的大小。
一次外设与DMA控制器间的DMA传输是指从外设与DMA控制器之间进行数据交换的传输过程,所传输的数据量为外设的缓存空间大小;内存中缓存空间的大小通常是外设缓存大小的整数倍;本发明里,一次DMA传输中可以包括多次外设与DMA控制器间的DMA传输。
本发明提供了一种实现高效DMA传输的DMA控制器,包括用于控制外设和内存间的DMA传输的DMA控制模块、数据拼拆模块、FIFO(First InFirst Out先进先出寄存器)、寄存器组及计数器。
所述寄存器组包括:
外设缓存大小寄存器,用于存放外设的缓存空间大小的数值;
内存缓存大小寄存器,用于存放内存中缓存空间大小的数值;
硬件请求使能状态寄存器,用于存放表示硬件请求使能状态的数值;比如1表示允许硬件请求,其它数值表示不允许硬件请求;在需要硬件发起DMA传输时由CPU置为表示“允许硬件请求”的值;
通道状态寄存器,用于存放表示通道状态的数值;比如1表示通道被占用,其它数值表示通道可用;
源地址变化方式寄存器,用于存放表示传输中源地址变化方式的数值;比如1表示增加,2表示减少,其它数值表示不变;
目的地址变化方式寄存器用于存放表示传输中目的地址变化方式的数值;比如1表示增加,2表示减少,其它数值表示不变;
所述计数器包括:
第一计数器,用于在一次外设与DMA控制器间的DMA传输中对外设与DMA控制器间传输的字节数进行计数;
第二计数器,用于在一次DMA传输中对DMA控制器与内存间传输的字节数进行计数;
第三计数器,用于存放DMA传输的源地址;
第四计数器,用于存放DMA传输的目的地址。
所述DMA控制模块与外设和CPU相连,包括用于进行DMA传输的装置以及用于进行判断的装置;其中:
所述用于进行DMA传输的装置接收到DMA传输请求后,进行DMA传输,接收到用于进行判断的装置发送的结束指示后,结束本次DMA传输;
所述用于进行判断的装置每当用于进行DMA传输的装置传输完一块数据后判断外设与DMA控制器间传输的字节数是否达到外设缓存空间大小,达到则发送完成本次外设与DMA控制器间的DMA传输请求的信号给外设;否则判断DMA控制器与内存间传输的字节数是否达到内存缓存空间大小,达到则发送通道完成传输中断请求给CPU。
所述DMA控制模块中用于进行DMA传输的装置与所述硬件请求使能状态寄存器、通道状态寄存器相连,当收到硬件的DMA传输请求时探询所述硬件请求使能状态寄存器与所述通道状态寄存器的数值,当硬件请求使能状态寄存器的数值表示“允许硬件请求”时,接收硬件的DMA传输请求,表示“不允许硬件请求”时继续探询硬件请求使能状态寄存器;当通道状态寄存器的值表示“通道被占用”时继续探询,表示“通道可用”时进行DMA传输。
所述DMA控制模块中用于进行判断的装置与所述第一、第二计数器及外设、内存缓存大小寄存器相连,通过比较第一计数器的计数值是否小于外设缓存大小寄存器中的数值,来判断外设与DMA控制器间传输的字节数是否达到外设缓存空间的大小,达到时给外设完成本次外设与DMA控制器间的DMA传输请求的信号,将第一计数器的值设置为0;还用于通过比较第二计数器的计数值是否小于内存缓存大小寄存器中的数值,来判断DMA控制器与内存间传输的字节数是否达到内存缓存空间的大小,达到时向CPU发出通道完成传输中断请求,将第二计数器的值设置为0,并发送结束指示给用于进行DMA传输的装置,比如将所述硬件请求使能状态寄存器的值配置为“不允许硬件请求的值”。
当接收到内存的缓存数据处理完的信号时——即当内存又可以接收或发送数据时,CPU会将所述硬件请求使能状态寄存器的值配置为“允许硬件请求”的值;以继续进行外设与内存间的DMA传输。
所述DMA控制模块中用于进行DMA传输的装置还用于在开始DMA传输后,将所用传输通道的通道状态寄存器的值置为“通道被占用”,控制第一、第二计数器开始进行计数;当该通道上的DMA传输完成或终止后,将通道状态寄存器的值置为表示“通道可用”的值。
在进行DMA传输的过程中,对于地址的变化存在着多种需求。例如,当需要从一个FIFO中取数,存到一片内存中时,就需要源地址不变,而目的地址增加;当从内存中取数存到FIFO中时,则需要源地址增加,目的地址不变。
所述源地址变化方式寄存器和目的地址变化方式寄存器由CPU根据实际传输需要进行配置,比如需要将内存中的一个数覆盖到一片内存中时,则将源地址变化方式寄存器置为表示“不变”的值,将目的地址变化方式寄存器置为表示“增加”的值。
所述DMA控制模块与所述第三、第四计数器、源、目的地址变化方式寄存器相连,还用于通过探询源地址变化方式寄存器及目的地址变化方式寄存器的值来确定源地址及目的地址的变化方式,并相应控制第三、第四计数器中表示源/目的地址的数值递增、或递减、或不变;并按照第三计数器中的源地址和第四计数器中存放的目的地址进行DMA传输;第三、第四计数器中的数值为初始的源/目的地址。
比如当从内存传输数据到一个FIFO时,目的地址固定;设置一个初始值为源地址的计数器;内存每次传输8字节的数据给FIFO,每传输一次就将计数器的值加上8,然后将该值作为新的源地址。
在本发明的DMA控制器中,不同的硬件根据自身缓存类型的大小与相应容量(或大小)的总线接口相连,而各通道根据所连接的总线接口容量的不同,每次传输的数据量不一样,有的每次能传输32字节,比如与用于和内存交换数据的总线接口相连的通道,称为标准通道;有的每次只能传输8个字节,比如与用于和UART(Universal Asynchronous Receiver/Transmitter通用异步收发器)交换数据的总线接口相连的通道,称为非标准通道。因此,不同硬件各自对应于不同的通道,或者说DMA控制器中各通道分别通过不同的总线接口连接在具有相应缓存类型的硬件上。各通道分别与FIFO相连。
所述DMA控制模块与各通道、数据拼拆模块、FIFO相连,在进行源硬件和目的硬件缓存类型不一致的DMA传输,比如非标准通道和标准通道之间的DMA传输时,启动所述数据拼拆模块对在非标准通道进行DMA传输的数据在所述FIFO中进行拼接或拆分,使每次读、写操作的数据量分别与源、目的硬件的缓存类型一致;并且,当接收到数据拼拆模块的拼接完毕消息时,将FIFO中拼接好的数据通过目的硬件所连接的通道发送给目的硬件;当接收到数据拼拆模块的拆分完毕消息时,通过源硬件所连接的通道从源硬件中读取数据放入FIFO;当接收到数据拼拆模块的可发送消息时,将FIFO中拆分出的数据块通过目的硬件所连接的通道发送给目的硬件。
所述数据拼拆模块与各通道、FIFO相连;当目的硬件为内存时,说明源硬件的缓存类型比目的地址的小,此时所述数据拼拆模块将从源硬件通过所连接的通道到达FIFO的数据进行拼接,当到达FIFO的数据量达到目的硬件的缓存类型大小时发送拼接完毕消息给DMA控制模块;当源硬件为内存时,说明源硬件的缓存类型比目的硬件的大,所述数据拼拆模块从FIFO的数据里拆分出符合目的硬件缓存类型大小的数据块,每拆一次发送一个可发送消息给DMA控制模块;当发送的数据量达到源硬件的缓存类型大小后发送拆分完毕消息给DMA控制模块。
所述数据拼拆模块还可以包括一个计数器,用于在拼接时对到达FIFO的数据量或FIFO接收数据的次数进行计数;在拆分时对从FIFO发送的数据量或FIFO发送数据的次数进行计数。
本发明还提供了一种实现高效DMA传输的方法,能够在一次DMA传输中完成多次外设与DMA控制器间的传输,如图4所示,所述方法包括:
(a1)初始化通道;
CPU通过配置外设缓存大小寄存器将外设缓存空间大小送入DMA控制器,通过配置内存缓存大小寄存器将内存中缓存空间大小送入DMA控制器。
(a2)通过配置硬件请求使能状态寄存器使能通道的硬件请求;
(a3)等待硬件的DMA传输请求;
这里的DMA传输请求是外设或内存根据需求,比如当外设缓存装满数据后,再或者当预定的时间到达时,发起DMA传输请求。
(b)DMA控制模块通过硬件请求使能状态寄存器的值判断通道能否接受硬件请求,并通过通道状态寄存器的值查询通道是否可用;如果不能接受硬件请求或通道不可用——比如通道正在被其它硬件使用或上次传输未完成——则返回(b),即继续探询这两个寄存器的值;也就是说,当一个方向的传输未完成时,不能开始另一方向的传输;例如在进行外设向内存发送数据的DMA传输时,未完成前,即内存中缓存未满前,不能发起从内存中取数据的DMA传输。
如果可接受硬件请求并且通道可用,则此时DMA控制器就取得了总线控制权;将第一、第二计数器的值设置为0,将通道状态寄存器置为表示“通道被占用”的值,执行步骤(c)。
(c)开始进行DMA传输;
在传输的同时,第一计数器对外设与DMA控制器间传输的数据量以字节为单位进行计数,第二计数器对DMA控制器和内存间传输的数据量以字节为单位进行计数。
每传输完一块数据执行(d1),一块数据通常可设置为一字节、四字节、八字节和十六字节中的一种,缓存的空间大小均为“块”的整数倍。
(d1)判断第一计数器的计数是否达到外设缓存大小寄存器中的数值,如果是则DMA控制器发给外设完成本次外设与DMA控制器间的DMA传输的信号,将通道状态寄存器置为表示“通道可用”的值;将第一计数器设置为0后执行(d2);否则执行(c),即继续DMA传输。
(d2)判断第二计数器的计数是否达到内存缓存大小寄存器中的数值,如果是则执行(e),可以此时将第二计数器设置到0,也可以在开始新一次DMA传输时设置为0;否则返回(a3)。
(e)DMA控制器向CPU发出通道完成传输中断请求,告知已经完成此段内存数据的传输,即已填满内存的缓存,结束本次DMA传输;与此同时关闭此通道的硬件请求使能;直到CPU重新配置此通道为止。
由此可知,在DMA控制器取得一次总线控制权后,能够传输相当于内存缓存大小的数据量,传输效率大大提高,对内存的访问次数也由此降低。
通常情况下,内存缓存大小为硬件缓存大小的整数倍,所以在本发明中采用第一计数器计到后再判断第二计数器的方式来操作;假如实际应用中,出现了内存缓存大小不是硬件缓存大小的整数倍的情况,则每传完一块数据后就同时对第一计数器和第二计数器的数值都判断一次;而且这种情况下,应设定对第二计数器的判断及处理比对第一计数器有更高的优先等级。
当源硬件的缓存类型与目的硬件的缓存类型不一致时,步骤(c)具体为:进行DMA传输,按照传输源硬件的缓存类型读取数据到FIFO中,在FIFO中进行拼接或拆分,使其与目的硬件的缓存类型一致后,将其传输到目的硬件。
这里可以是内存作为传输源硬件,外设作为目的硬件;也可以相反。
下面用一个例子来具体说明,比如UART(Universal AsynchronousReceiver/Transmitter通用异步收发器)之类的外设的缓存类型仅有字节类型,原先DMA控制器每次只能用总线中的低8位传输数据。而在本发明中,从外设取数据时,如图5所示,DMA控制器从外设缓存中以字节形式读取数据到FIFO中,每读取一次就计数一次,当计数达到4时,将FIFO中的数据以字的形式写入内存;而向外设发送数据时,如图6所示,DMA控制器从内存中以字的形式读取数据到FIFO中,然后从FIFO中以字节的形式将数据发送给硬件,每发送一次就计数一次,当计数达到4时,发送完毕。
上述为本发明的最优实施方式,其余与现有技术相同部分不再赘述。在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的变形,但这些相应的变形都应属于本发明。

Claims (8)

1.一种实现高效直接内存访问DMA传输的DMA控制器,包括用于控制外设和内存间的DMA传输的DMA控制模块;其特征在于:所述DMA控制模块包括用于进行DMA传输的装置以及用于进行判断的装置;其中,
所述用于进行DMA传输的装置接收到DMA传输请求后,进行DMA传输,接收到用于进行判断的装置发送的结束指示后,结束本次DMA传输;
所述用于进行判断的装置每当用于进行DMA传输的装置传输完一块数据后判断外设与DMA控制器间传输的字节数是否达到外设缓存空间大小,达到则发送完成本次外设与DMA控制器间的DMA传输请求的信号给外设;否则判断DMA控制器与内存间传输的字节数是否达到内存缓存空间大小,达到则发送通道完成传输中断请求给CPU,发送结束指示给用于进行DMA传输的装置。
2.如权利要求1所述的DMA控制器,其特征在于,还包括:
外设缓存大小寄存器,用于存放外设的缓存空间大小的数值;
内存缓存大小寄存器,用于存放内存中缓存空间大小的数值;
第一计数器,用于在一次外设与DMA控制器间的DMA传输中对外设与DMA控制器间传输的字节数进行计数;
第二计数器,用于在一次DMA传输中对DMA控制器与内存间传输的字节数进行计数;
所述DMA控制模块中用于进行判断的装置与所述第一、第二计数器及外设、内存缓存大小寄存器相连,通过比较第一计数器的计数值是否小于外设缓存大小寄存器中的数值,来判断外设与DMA控制器间传输的字节数是否达到外设缓存空间的大小;通过比较第二计数器的计数值是否小于内存缓存大小寄存器中的数值,来判断DMA控制器与内存间传输的字节数是否达到内存缓存空间的大小。
3.如权利要求2所述的DMA控制器,其特征在于,还包括:
硬件请求使能状态寄存器,用于存放表示硬件请求使能状态的数值,包括表示“允许硬件请求”和“不允许硬件请求”的值;在需要硬件发起DMA传输时由CPU置为表示“允许硬件请求”的值;
通道状态寄存器,用于存放表示通道状态的数值,包括表示“通道被占用”的值和表示“通道可用”的值;
所述DMA控制模块中用于进行DMA传输的装置与所述硬件请求使能状态寄存器、通道状态寄存器相连,当收到硬件的DMA传输请求时探询所述硬件请求使能状态寄存器与所述通道状态寄存器的数值,当硬件请求使能状态寄存器的数值表示“允许硬件请求”时,接收硬件的DMA传输请求,表示“不允许硬件请求”时继续探询硬件请求使能状态寄存器;当通道状态寄存器的数值表示“通道可用”时进行DMA传输;表示“通道被占用”时继续探询通道状态寄存器;在开始DMA传输后,将所用传输通道的通道状态寄存器的值置为“通道被占用”;当该通道上的DMA传输完成或终止后,将通道状态寄存器的值置为表示“通道可用”的值;
DMA控制模块中用于进行判断的装置在DMA控制器与内存间传输的字节数达到内存缓存空间大小时,通过将所述硬件请求使能状态寄存器置为表示“不允许硬件请求”的值发送结束指示给用于进行DMA传输的装置。
4.如权利要求2所述的DMA控制器,其特征在于:还包括多个通道、数据拼拆模块和先进先出寄存器FIFO;各通道每次传输的数据量对应于所连接的总线接口;将每次传输的数据量为32字节的通道称为标准通道;将每次传输的数据量不到32字节的通道称为非标准通道;各通道与FIFO相连,并分别通过不同的总线接口连接在具有相应缓存类型的硬件上;
所述DMA控制模块与各通道、数据拼拆模块、FIFO相连,在进行非标准通道和标准通道之间的DMA传输时启动数据拼拆模块;当接收到数据拼拆模块的拼接完毕消息时,将FIFO中拼接好的数据通过目的硬件所连接的通道发送给目的硬件;当接收到数据拼拆模块的拆分完毕消息时,通过源硬件所连接的通道从源硬件中读取数据放入FIFO;当接收到数据拼拆模块的可发送消息时,将FIFO中拆分出的数据块通过目的硬件所连接的通道发送给目的硬件;
所述数据拼拆模块与各通道、FIFO相连,当源硬件的缓存类型比目的硬件的小时,将源硬件通过所连接的通道发送的数据在FIFO中进行拼接,当到达FIFO的数据量达到目的硬件的缓存类型大小时发送拼接完毕消息给DMA控制模块;当源硬件的缓存类型比目的硬件的大时,从FIFO的数据里拆分出符合目的硬件缓存类型大小的数据块,每拆一次发送一个可发送消息给DMA控制模块;当发送的数据量达到源硬件的缓存类型大小后发送拆分完毕消息给DMA控制模块。
5.如权利要求1所述的DMA控制器,其特征在于,还包括:
源地址变化方式寄存器,用于存放表示传输中源地址变化方式的数值;包括表示“增加”、“减少”和“不变”的值;
目的地址变化方式寄存器用于存放表示传输中目的地址变化方式的数值;包括表示“增加”、“减少”和“不变”的值;
第三计数器,用于存放DMA传输的源地址;
第四计数器,用于存放DMA传输的目的地址;
所述DMA控制模块与所述第三、第四计数器、源、目的地址变化方式寄存器相连,探询源地址变化方式寄存器及目的地址变化方式寄存器的数值,根据该数值相应控制第三、第四计数器中的源/目的地址的数值递增、或递减、或不变;并按照第三计数器中的源地址和第四计数器中存放的目的地址进行DMA传输。
6.一种实现高效DMA传输的方法,所述方法包括:
(a)接收DMA传输请求;
(b)进行DMA传输;并对外设与DMA控制器间传输的数据量、及DMA控制器和内存间传输的数据量分别进行计数;
每传输完一块数据执行(c1);
(c1)判断外设与DMA控制器间传输的数据量是否达到外设缓存大小,如果是则执行(c2),如果否则返回(b);
(c2)判断DMA控制器和内存间传输的数据量是否达到内存中缓存大小,如果是则执行(d);如果否则返回(a);
(d)结束本次DMA传输。
7.如权利要求6所述的方法,其特征在于,步骤(a)前还存在:
(a1)初始化通道;CPU将外设和内存的缓存空间大小送入DMA控制器,并使能通道的硬件请求;
所述步骤(d)还包括:关闭通道的硬件请求使能。
8.如权利要求6所述的方法,其特征在于:当源硬件的缓存类型与目的硬件的缓存类型不一致时,步骤(c)具体为:
进行DMA传输,对进行DMA传输的数据在所述FIFO中进行拼接和拆分;使每次读、写操作的数据量分别与源、目的硬件的缓存类型一致。
CNB2007100988321A 2007-04-27 2007-04-27 一种实现高效dma传输的dma控制器及传输方法 Expired - Fee Related CN100464318C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007100988321A CN100464318C (zh) 2007-04-27 2007-04-27 一种实现高效dma传输的dma控制器及传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007100988321A CN100464318C (zh) 2007-04-27 2007-04-27 一种实现高效dma传输的dma控制器及传输方法

Publications (2)

Publication Number Publication Date
CN101046786A CN101046786A (zh) 2007-10-03
CN100464318C true CN100464318C (zh) 2009-02-25

Family

ID=38771407

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007100988321A Expired - Fee Related CN100464318C (zh) 2007-04-27 2007-04-27 一种实现高效dma传输的dma控制器及传输方法

Country Status (1)

Country Link
CN (1) CN100464318C (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102290050B (zh) * 2010-06-18 2014-07-30 北京中星微电子有限公司 一种传输音频数据的方法及装置
CN103714026B (zh) * 2014-01-14 2016-09-28 中国人民解放军国防科学技术大学 一种支持原址数据交换的存储器访问方法及装置
CN104182264B (zh) * 2014-09-03 2017-07-11 福州瑞芯微电子股份有限公司 一种eMMC的开机优化方法及其装置
CN105786733B (zh) * 2014-12-26 2020-08-07 南京中兴新软件有限责任公司 一种写入tcam条目的方法及装置
CN105389156B (zh) * 2015-11-24 2018-12-11 珠海全志科技股份有限公司 一种基于dma技术降低声音输入至输出延迟的方法和系统
CN105955764A (zh) * 2016-04-22 2016-09-21 佛山市南海区欧谱曼迪科技有限责任公司 一种stm32单片机iap串口程序烧录的改进方法
CN107870879B (zh) * 2016-09-23 2020-04-03 中国移动通信有限公司研究院 一种数据搬移方法、加速器板卡、主机及数据搬移系统
CN108388529B (zh) * 2018-01-26 2021-03-09 武汉中元华电电力设备有限公司 一种外设主动实现与cpu间数据交换的方法
CN110046114B (zh) * 2019-03-06 2020-08-14 上海熠知电子科技有限公司 基于pcie协议的dma控制器及dma数据传输方法
CN110059042B (zh) * 2019-04-30 2023-02-07 成都启英泰伦科技有限公司 一种uart设备的数据dma传输方法
CN111110966B (zh) * 2019-12-02 2022-05-27 湖南明康中锦医疗科技发展有限公司 多模块通信控制方法及呼吸支持设备
CN113868158B (zh) * 2021-08-27 2024-02-23 浪潮电子信息产业股份有限公司 一种片上系统及数据比较方法、装置、设备、计算机介质
CN114356813B (zh) * 2021-12-15 2024-07-19 中国航空工业集团公司成都飞机设计研究所 一种基于消息块dma的总线数据高效输入输出方法
CN114328318B (zh) * 2021-12-28 2022-07-12 湖南航天经济发展有限公司 微控制器用直接设备互连的dma控制器及互联控制方法
CN114741345B (zh) * 2022-04-24 2024-02-13 苏州雄立科技有限公司 一种usb dma数据传输装置和方法
CN117667790A (zh) * 2022-08-24 2024-03-08 上海合见工业软件集团有限公司 离散dma数据传输系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1625736A (zh) * 2002-02-01 2005-06-08 英特尔公司 用于监视计算机系统中的存储器直接访问状态的方法和系统
JP2005182505A (ja) * 2003-12-19 2005-07-07 Kyocera Mita Corp データ転送制御装置および画像形成装置
CN1700196A (zh) * 2005-06-06 2005-11-23 北京中星微电子有限公司 通过直接存储器访问控制器传输数据的系统及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1625736A (zh) * 2002-02-01 2005-06-08 英特尔公司 用于监视计算机系统中的存储器直接访问状态的方法和系统
JP2005182505A (ja) * 2003-12-19 2005-07-07 Kyocera Mita Corp データ転送制御装置および画像形成装置
CN1700196A (zh) * 2005-06-06 2005-11-23 北京中星微电子有限公司 通过直接存储器访问控制器传输数据的系统及方法

Also Published As

Publication number Publication date
CN101046786A (zh) 2007-10-03

Similar Documents

Publication Publication Date Title
CN100464318C (zh) 一种实现高效dma传输的dma控制器及传输方法
CN100440184C (zh) 一种能同时进行读写操作的dma控制器及传输方法
CN101634975B (zh) 一种实现dma数据传输的方法及装置
CN102841871B (zh) 基于高速串行总线的DMA结构的pipeline读写方法
EP4002137B1 (en) Secure digital (sd) direct command for improving throughput with a reduced memory footprint
CN101339541B (zh) 一种dma数据传输方法及dma控制器
CN111221759B (zh) 一种基于dma的数据处理系统及方法
KR100919159B1 (ko) 멀티미디어 카드 인터페이스 방법, 컴퓨터 프로그램 생성물및 장치
EP0496177A1 (en) Method of transmitting data by buffer chaining between a host computer and a communication controller
CN102841870B (zh) 基于高速串行总线的通用dma结构及预读方法
US9471521B2 (en) Communication system for interfacing a plurality of transmission circuits with an interconnection network, and corresponding integrated circuit
CN111143259A (zh) 一种多线SPI flash控制器
EP0010187B1 (en) Input/output-system for a data processing system
CN112947857A (zh) 一种数据搬移方法、装置、设备及计算机可读存储介质
CN111290983A (zh) Usb传输设备及传输方法
EP1970815A1 (en) Data transfering apparatus and information processing system
WO2006124460A2 (en) Concurrent read response acknowledge enhanced direct memory access unit
CN114691023A (zh) 读写设备的读写操作方法、读写设备及可读存储介质
CN101814011A (zh) Usb主机控制器以及用于usb主机控制器的控制方法
CN101170382B (zh) 一种数据传输的方法和系统
CN116166581A (zh) 用于pcie总线的队列式dma控制器电路及数据传输方法
CN116192624A (zh) 通信接口的配置方法和通信接口
JP2010198138A (ja) データ転送装置、データ転送制御方法、データ転送制御プログラム及び記録媒体
KR101706201B1 (ko) 다이렉트 메모리 액세스 컨트롤러 및 그것의 동작 방법
KR20050063939A (ko) 주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는직접 메모리 액세스 제어 장치 및 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: WUXI VIMICRO ELECTRONIC CO., LTD.

Free format text: FORMER OWNER: BEIJING ZHONGXING MICROELECTRONICS CO., LTD.

Effective date: 20110127

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100083 15/F, SHINING BUILDING, NO.35, XUEYUAN ROAD, HAIDIAN DISTRICT, BEIJING TO: 214028 610, NATIONAL INTEGRATED CIRCUIT DESIGN PARK (CHUANGYUAN BUILDING), NO.21-1, CHANGJIANG ROAD, NEW DISTRICT, WUXI CITY, JIANGSU PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20110127

Address after: 214028 national integrated circuit design (21-1), Changjiang Road, New District, Jiangsu, Wuxi, China, China (610)

Patentee after: Wuxi Vimicro Co., Ltd.

Address before: 100083, Haidian District, Xueyuan Road, Beijing No. 35, Nanjing Ning building, 15 Floor

Patentee before: Beijing Vimicro Corporation

C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090225

Termination date: 20130427