CN101339541A - 一种dma数据传输方法及dma控制器 - Google Patents

一种dma数据传输方法及dma控制器 Download PDF

Info

Publication number
CN101339541A
CN101339541A CNA2008101182302A CN200810118230A CN101339541A CN 101339541 A CN101339541 A CN 101339541A CN A2008101182302 A CNA2008101182302 A CN A2008101182302A CN 200810118230 A CN200810118230 A CN 200810118230A CN 101339541 A CN101339541 A CN 101339541A
Authority
CN
China
Prior art keywords
address
data
dma
wraparound
data transmission
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.)
Granted
Application number
CNA2008101182302A
Other languages
English (en)
Other versions
CN101339541B (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 CN2008101182302A priority Critical patent/CN101339541B/zh
Publication of CN101339541A publication Critical patent/CN101339541A/zh
Application granted granted Critical
Publication of CN101339541B publication Critical patent/CN101339541B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)

Abstract

本发明提供的一种DMA数据传输的方法及DMA控制器,是通过在现有技术的基础上,增加地址绕回步骤,在向内存读/写数据到达内存终止地址时,交替根据两个地址绕回使能状态寄存判断是否将读/写地址绕回到内存起始地址。由于其中一个地址绕回使能状态值在另一个地址绕回使能状态值在被使用时已经被设置好,因此在完成一次数据传输能够及时找到下次传输的地址,无需再次启动DMA,从而避免出现由于上一次传输结束中断和启动DMA存在时间间隔,而导致数据丢失的问题。

Description

一种DMA数据传输方法及DMA控制器
技术领域
本发明涉及DMA(Direct Memory Access Control,直接内存访问)传输,具体涉及一种能用少量内存实现大尺寸或不定尺寸数据进行DMA传输的DMA数据传输方法及DMA控制器。
背景技术
DMA(Direct Memory Access Control,直接内存访问)方式能够不受CPU的干涉而进行数据传输。因此,即使在外部设备与总线上的存储器中进行DMA传输时,CPU也能够同时进行其它处理,由此增加系统的吞吐量。
现有技术中,外部设备发起的DMA传输通常是从外部设备的缓存中取数据放到内存中。图1是现有技术DMA传输方法示意图。以写内存为例,该方法主要包括:
(a)初始化通道。具体为:CPU通过配置外部数据缓存大小寄存器将外部数据缓存空间大小通知DMA控制器,通过配置内存空间大小寄存器将内存空间大小通知DMA控制器,通过配置硬件请求使能状态寄存器使能通道的硬件请求。
(b)等待硬件的DMA传输请求。
(c)根据通道状态寄存器的值查询通道是否可用。当查询通道可用则执行步骤(d),否则重复步骤(c),直到通道可用。
其中,通道状态寄存器中的值具体为:在开始DMA传输后,通道状态寄存器的值为表示“通道被占用”的值;当该通道上的DMA传输完成或终止后,将通道状态寄存器的值为表示“通道可用”的值。
(d)开始进行DMA数据传输;
(e)判断外部设备与外部数据缓存间传输的数据量是否达到外部数据缓存大小寄存器中的数值,如果是则发出中断给控制模块,将通道状态寄存器置为表示“通道可用”的值,并执行步骤(f);否则,直接执行步骤(f)。
(f)判断外部数据缓存和内存间传输的数据量是否达到内存空间大小寄存器中的数值,如果是则执行(g);否则返回(b)。
(g)DMA控制器向CPU发出通道完成传输中断请求,告知已经完成此段内存数据的传输,即已填满内存的缓存,结束本次DMA传输;与此同时关闭此通道的硬件请求使能;直到CPU重新配置此通道为止。
从上面的传输方法的可以看出,该方法只能传输定长的数据,对于未知长度的传输比较困难。而且需要先设定一个长度比如512字节的数据长度,收到结束中断后,再次启动DMA。这样就存在一个问题,当硬件传输速率比较高的情况下,上一次传输结束中断和启动DMA的时间间隔,将会出现数据丢失的问题。如果为了避免这个问题的出现,而将内存空间开得很大,以实现一次性完成数据的读取,则会增加成本。
发明内容
有鉴于此,本发明的目的在于提供一种DMA数据传输方法及DMA控制器,能够用少量的内存空间完成对大尺寸及不定长度数据的传输。
为达到上述目的,本发明提供一种DMA数据传输方法,包括:
在外部数据缓存与内存间进行DMA数据传输,其中所述DMA数据传输是从内存的起始地址开始连续进行的;
如果所述DMA数据传输是向内存写数据,当DMA数据传输量达到预定的中断产生长度时,则产生数据处理中断,并从内存中已写有数据的区域读出数据;
如果所述DMA数据传输是读取内存读数据,当DMA数据传输量达到预定的中断产生长度时,则产生数据处理中断,并向内存中已读出数据的区域写入数据;
在DMA数据传输进行至内存的终止地址时,根据当前地址绕回使能状态值决定是否将内存地址绕回到起始地址。
所述根据当前地址绕回使能状态值,决定是否将内存地址绕回到起始地址,具体为:当当前地址绕回使能状态值为表示地址绕回使能有效的值时,下一次数据传输将从内存的起始地址开始进行;否则结束数据传输。
在一次外部数据缓存与内存间的DMA数据传输中还需要设置备用地址绕回使能状态值,将作为下一次数据传输时的当前地址绕回使能状态值,而本次数据传输中的当前地址绕回使能状态值将作为下一次数据传输的备用地址绕回使能状态值。
所述地址绕回使能状态值是通过比较外部设备所需传输的剩余数据量与内存空间大小来设定,如果外部设备所述传输的剩余数据量大于等于内存空间大小,则将地址绕回使能状态值设为有效,否则将地址绕回使能状态值设为无效。
对外部数据缓存与内存间的DAM数据传输量进行计数,是从DMA数据传输开始或产生数据处理中断时开始。
该方法还包括:CPU配置外部数据缓存空间大小,内存空间大小,中断产生长度,及外部数据缓存与内存间第一次传输时使用的地址绕回使能状态值。7、如权利要求1所述的方法,其特征在于,该方法还包括:在外部设备与外部数据缓存间传输数据时,判断外部设备与外部数据缓存间传输的数据量是否达到外部数据缓存空间大小,如果是,则进行外部数据缓存与内存间的DMA数据传输,否则,继续进行外部设备与外部数据缓存间的数据传输。
该方法还包括:在外部数据缓存与内存间传输数据时,判断外部数据缓存和内存间传输的数据量是否达到内存空间大小,如果是,则发出通道完成传输中断给控制模块,表明完成一次外部数据缓存和内存间的DMA数据传输;否则继续进行外部数据缓存与内存间的DMA数据传输。
本发明还提供一种DMA控制器,包括控制模块、寄存器组和计数器组,其特征在于:所述DMA控制器还包括地址绕回模块,用于根据所述控制模块的选择信号输出当前地址绕回使能状态值;还用于存储绕回地址。
所述控制模块根据地址绕回模块输出的当前地址绕回使能状态值,决定是否进行地址绕回,如果当前地址绕回使能状态值为有效,则从地址绕回模块中读取绕回地址,并发出控制命令,使下一次数据传输从绕回地址开始。
所述地址绕回模块包括:
第一地址绕回使能状态寄存器和第二地址绕回使能状态寄存器,均用于存储地址绕回使能状态值,且在每次外部数据缓存与内存见的DMA数据传输中交替使用;
选择器,用于接收控制模块的选择信号,选择第一地址绕回使能状态寄存器中的值和第二地址绕回使能状态寄存器中的值之一作为当前地址绕回使能状态值,并输出给控制模块。
绕回地址存储单元,用于存储绕回地址;
所述绕回地址为内存的起始地址。
所述寄存器组包括:
通道状态寄存器,用于存储通道状态值;
DMA使能状态寄存器,用于存储DMA使能状态值;
外部数据缓存空间大小寄存器,用于存储由CPU配置的外部数据缓存的大小值。
内存空间大小寄存器,用于存储由CPU配置的内存空间的大小值。
中断产生长度寄存器,用于存储在数据传输过程中中断产生时传输数据量的值。
地址寄存器,用于存储数据传输在内存中的当前地址。
所述计数器组包括:
第一计数器,用于在一次外部设备与外部数据缓存间的数据传输中对所传输的字节数进行计数;
所述控制模块,用于在进行数据传输期间,控制第一计数器进行计数;并通过比较第一计数器的计数值与外部数据缓存空间大小,来判断外部设备与外部数据缓存间传输的字节数是否达到外部数据缓存空间大小,达到时,则向外部设备发送完成本次外部设备与外部数据缓存间的数据传输的信号;
所述计数器组还包括:
第二计数器,用于在一次外部数据缓存与内存间数据传输中对所传输的字节数进行计数;
所述控制模块,用于在进行数据传输期间,控制第二计数器进行计数;并通过比较第二计数器的计数值与内存空间大小寄存器中的数值,来判断外部数据缓存与内存间传输的字节数是否达到内存空间的大小,达到时,则向CPU发出通道完成传输中断请求,表示完成一次外部数据缓存与内存间的DMA数据传输;所述控制模块根据来自地址绕回模块的当前地址绕回使能状态值决定是否进行地址绕回,如果当前地址绕回使能状态值为有效,则从地址绕回模块读取绕回地址,作为下一次数据传输的起始地址。
所述计数器组还包括:
第三计数器,用于在产生两个中断之间外部数据缓存与内存件数据传输中对所传输的字节数进行计数。
所述控制模块,用于分别在外部数据缓存与内存间开始进行DMA数据传输时和在发出数据处理中断请求时控制第三计数器进行计数;并通过比较第三计数器的计数值与中断产生长度,来判断从数据传输开始或发出数据处理中断请求起外部数据缓存与内存间进行的数据传输是否达到中断产生长度,达到时,则向CPU发出数据处理中断,
如果DMA数据传输是向内存写数据,CPU从内存中已写有数据的区域读出数据;
如果DMA数据传输是读取内存读数据,CPU向内存中已读出数据的区域写入数据;
发出通道完成传输中断请求,表示完成一次外部数据缓存与内存间的DMA数据传输;所述控制模块根据来自地址绕回模块的当前地址绕回使能状态值决定是否进行地址绕回,如果当前地址绕回使能状态值为有效,则从地址绕回模块读取绕回地址,作为下一次数据传输的起始地址。
由以上的技术方案可见,本发明在现有技术的基础上,增加了地址绕回步骤,在向内存读/写数据到达内存终止地址时,交替根据地址绕回使能状态寄存器的值判断是否将读/写地址绕回到内存起始地址。由于其中一个地址绕回使能状态寄存器在另一个地址绕回使能状态寄存器在被使用时已经被设置好,因此在完成一次数据传输能够及时找到下次传输的地址,无需再次启动DMA,从而避免出现由于上一次传输结束中断和启动DMA存在时间间隔,而导致数据丢失的问题。同时,由于本方法使用了地址绕回的技术手段,在一次传输的数据量达到内存空间的最大值时,便可以使用地址绕回的技术手段,找到下次传输的起始地址,只要地址绕回使能状态值一直为有效,则可以进行不定次数的数据传输,这样即使内存空间比较小,也能实现对大长度数据进行传输,而且所传输的数据的长度可以不固定。
附图说明
图1是现有技术中DMA传输数据的方法;
图2是本发明提供的一种DMA传输数据的方法实施例示意图。
图3是本发明提供的一种DMA控制器的结构实施例示意图。
具体实施方式
本发明提供的一种DMA数据传输的方法及DMA控制器,是通过在现有技术的基础上,增加地址绕回步骤,在向内存读/写数据到达内存终止地址时,交替根据两个地址绕回使能状态寄存判断是否将读/写地址绕回到内存起始地址。由于其中一个地址绕回使能状态值在另一个地址绕回使能状态值在被使用时已经被设置好,因此在完成一次数据传输能够及时找到下次传输的地址,无需再次启动DMA,从而避免出现由于上一次传输结束中断和启动DMA存在时间间隔,而导致数据丢失的问题。
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
图2是本发明提供的一种DMA传输数据的方法实施例示意图。该方法包括以下步骤:
步骤201,初始化。
具体为:CPU配置外部数据缓存空间大小,内存空间大小,DMA使能状态值,通道状态值,中断产生长度,及外部数据缓存与内存间第一次传输时使用的地址绕回使能状态值。
如果所需传输的数据量长度较小时,比如小于512K字节长度,则可以将内存空间大小设置为所需传输的数据量长度。
通道状态值具体为:在开始DMA传输后,通道状态值为表示“通道被占用”的值,如1;当该通道上的DMA传输完成或终止后或DMA传输开始前,通道状态值为表示“通道可用”的值,如0。初始化时,将该值置为0。
地址绕回使能状态值是由外部设备所需传输的数据量决定的,如果当前外部设备所需传输的数据量大于内存空间大小,则设置下一次传输所使用的地址绕回使能状态值的为1,否则为0。
另外,对于不定长度的数据传输量,地址绕回使能状态值始终为1,只有当CPU发出控制命令才将这个值设为0。
在本实施例中,设置中断产生长度的作用是为了在数据传输中,当传输数据量达到中断产生长度时,发出中断给控制模块,控制模块提取内存中的数据进行处理,使得在下一次传输中DMA控制器可以在这些被提取的数据所占的地址上进行数据传输。比如,写操作,当控制模块收到中断后,则提取当前写地址之前的数据进行处理,使得在下一次写操作中DMA控制器可以将新的数据直接写在当前目的地址之前的内存中。因此,这里所设置的中断产生长度不宜超过内存空间大小,而为了节省资源,也不宜将其设置得太小。譬如,可以将中断产生长度设置为内存空间大小的一半。
步骤202,等待硬件的DMA传输请求。
这里的DMA传输请求是外设或内存根据需求,比如当外设缓存装满数据后,或当预定的时间到达时,发起DMA传输请求。
步骤203,根据通道状态值查询通道是否可用。当查询通道可用则执行步骤204,否则重复步骤203,直到通道可用。
步骤204,开始外部设备与外部数据缓存间的数据传输。
步骤205,判断外部设备与外部数据缓存间传输的数据量是否达到外部数据缓存空间大小,如果是,则发出通道可用中断请求给控制模块,并执行步骤206;否则,返回步骤202。
步骤206,开始从内存的起始地址开始进行外部数据缓存与内存间的DMA数据传输,配置备用地址绕回使能状态值。
在本实施例中,每次数据传输将交替使用两个地址绕回使能状态寄存器。设当前所使用的地址绕回使能状态寄存器为当前地址绕回使能状态寄存器,用于存储当前地址绕回使能状态值,已在初始化时,完成配置;另一个地址绕回使能状态寄存器为备用地址绕回使能状态寄存器,用于存储备用地址绕回使能状态值,即下一次外部数据缓存与内存间数据传输所使用的地址绕回使能状态值。当地址绕回使能状态值为1,则表明地址绕回使能有效,为0则表明地址绕回使能无效。在本步骤中需要对备用地址绕回使能状态值进行配置。
上面所说的配置地址绕回使能状态值是由外部设备所需传输的数据量决定的,如果当前外部设备所需传输的数据量大于内存空间大小,则设置下一次外部数据缓存与内存间数据传输所使用的地址绕回使能状态值的为1,否则为0。
另外,对于不定长度的数据传输量,地址绕回使能状态值始终为1,只有当CPU发出控制命令才将这个值设为0。
步骤207,判断外部数据缓存和内存间传输的数据量是否达到中断产生长度,如果是,则发出数据处理中断给控制模块,控制模块提取内存中的数据进行处理,并执行步骤208;如果不是,则直接执行步骤208。
如果DMA数据传输是向内存写数据,当DMA数据传输量达到预定的中断产生长度时,则产生数据处理中断,并从内存中已写有数据的区域读出数据;
如果所述DMA数据传输是读取内存读数据,当DMA数据传输量达到预定的中断产生长度时,则产生数据处理中断,向内存中已读出数据的区域写入数据;
在步骤207中,用来判断是否达到中断产生长度的传输数据量,是从DMA数据传输开始或上一次数据处理中断产生时算起,所以,虽然中断产生长度是固定的,但每次达到当传输的数据量达到中断产生长度时,数据传输的地址并不相同。
步骤208,判断外部数据缓存和内存间传输的数据量是否达到内存空间大小,即数据传输是否进行至内存的终止地址,如果是,则发出通道完成传输中断给控制模块,表明完成一次外部数据缓存与内存间的DMA数据传输,执行步骤209;否则返回步骤202。
步骤209,判断当前地址绕回状态值是否表示的是使能有效。如果是,则将内存空间的起始地址作为下一次数据传输的起始地址,并执行步骤202;否则,则结束数据传输,同时关闭此通道的硬件请求使能,直到CPU重新配置此通道为止。
本发明还提供了一种DMA控制器,能够实现用少量的内存空间完成对大尺寸及不定长度数据的传输。
图3是本发明提供的一种DMA控制器的结构实施例示意图。该DMA控制器包括:控制模块301、寄存器组302、计数器组303和地址绕回模块304。
其中,寄存器组302包括:
通道状态寄存器,用于存储通道状态值,比如当前通道被占用时,通道状态寄存器中的通道状态值为1;当前通道可用时,通道状态寄存器中的通道状态值为0。
DMA使能状态寄存器,用于存储DMA使能状态值,比如当前DMA请求使能有效时,DMA请求使能状态寄存器中的DMA使能状态值为1;当前DMA请求使能无效时,DMA请求使能状态寄存器中的DMA使能状态值为0。
外部数据缓存空间大小寄存器,用于存储由CPU配置的外部数据缓存空间的大小值。
内存空间大小寄存器,用于存储由CPU配置的内存空间的大小值。
中断产生长度寄存器,用于存储在数据传输过程中中断产生时传输数据量的值。
地址寄存器,用于存储当前数据传输在内存中的地址。。
计数器组303,包括:
第一计数器,用于在一次外部设备与外部数据缓存间的数据传输中对所传输的字节数进行计数;
第二计数器,用于在一次外部数据缓存与内存间数据传输中对所传输的字节数进行计数;
第三计数器,用于在产生两个中断之间外部数据缓存与内存件数据传输中对所传输的字节数进行计数。
地址绕回模块304,包括:
第一地址绕回使能状态寄存器和第二地址绕回使能状态寄存器,均用于存储地址绕回使能状态值。比如,地址绕回使能状态值为1表示地址绕回使能状态为有效,其为0表示地址绕回使能状态为无效。
这两个地址绕回使能状态寄存器在每次外部数据缓存与内存间数据传输中交替使用,当一个地址绕回使能状态寄存器作为当前地址绕回使能状态寄存器供本次数据传输使用,另一个地址绕回使能状态寄存器则作为备用地址绕回使能状态寄存器供下一次数据传输使用,当进入下一次数据传输时,本次的当前地址绕回使能状态寄存器将作为备用地址绕回使能状态寄存器使用,本次数据传输的备用地址绕回使能状态寄存器将作为当前地址绕回使能状态寄存器使用。
选择器,用于接收控制模块的选择信号,选择第一地址绕回使能状态寄存器中的值和第二地址绕回使能状态寄存器中的值之一作为当前地址绕回使能状态值,并输出给控制模块。
绕回地址存储单元,用于存储下一次数据传输的起始地址,即绕回地址,为内存的起始地址。
控制模块301,用于控制外部设备和内存间的数据传输;当DMA使能状态值为1时,接收硬件的DMA传输请求,当DMA使能状态值为0时,继续探询,直到DMA使能状态值为1;还用于探询通道状态值,如果通道状态值为1时,发出控制命令,开始数据传输;如果通道状态值为0,继续探询,直到通道状态值为1。
控制模块301,还用于在进行数据传输期间,控制第一计数器进行计数;并通过比较第一计数器的计数值与外部数据缓存空间大小,来判断外部设备与外部数据缓存间传输的字节数是否达到外部数据缓存空间大小,达到时,则向外部设备发送完成本次外部设备与外部数据缓存间的数据传输的信号;
控制模块301,还用于分别在外部数据缓存与内存间开始进行数据传输时和在发出数据处理中断请求时控制第三计数器进行计数;并通过比较第三计数器的计数值与中断产生长度,来判断从数据传输开始或发出数据处理中断请求起外部数据缓存与内存间进行的数据传输是否达到中断产生长度,达到时,则将数据传输的在内存中的当前地址存入地址寄存单元中,并向CPU发出数据处理中断请求,CPU将内存中的数据提取出来并进行数据处理。
控制模块301,还用于在进行数据传输期间,控制第二计数器进行计数;并通过比较第二计数器的计数值与内存空间大小,来判断外部数据缓存与内存间传输的字节数是否达到内存空间的大小,达到时,则向CPU发出通道完成传输中断请求,表示完成一次数据传输;并根据来自地址绕回模块304的当前地址绕回使能状态值决定是否进行地址绕回,如果该值为1,则表明地址绕回使能状态为有效,则从地址绕回模块304中的绕回地址单元读取绕回地址,作为下一次数据传输的起始地址。
控制模块301,还用于向地址绕回模块304中的选择器发送选择信号,使得选择器在每次外部数据缓存与内存间的数据传输中交替选择并输出两个地址绕回使能状态值之一作为当前地址绕回使能状态值;。
所述DMA控制模块还用于在开始DMA传输后,将所用传输通道的通道状态寄存器的值置为“通道被占用”;当该通道上的DMA传输完成或终止后,将通道状态寄存器的值置为表示“通道可用”的值。
由上述的实施例可见,本发明在现有技术的基础上,增加了地址绕回的步骤,并设置有两个地址绕回使能状态寄存器,由于其中一个地址绕回使能状态寄存器在另一个地址绕回使能状态寄存器在被使用时已经被设置好,因此在完成一次数据传输能够及时找到下次传输的地址,无需再次启动DMA,从而避免出现由于上一次传输结束中断和启动DMA存在时间间隔,而导致数据丢失的问题。同时,由于本方法使用了地址绕回的技术手段,在一次传输的数据量达到内存空间的最大值时,便可以使用地址绕回的技术手段,找到下次传输的起始地址,只要地址绕回使能状态值一直为有效,则可以进行不定次数的数据传输,这样即使内存空间比较小,也能实现对大长度数据进行传输,而且所传输的数据的长度可以不固定。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (15)

1、一种DMA数据传输方法,其特征在于,所述方法包括:
在外部数据缓存与内存间进行DMA数据传输,其中所述DMA数据传输是从内存的起始地址开始连续进行的;
如果所述DMA数据传输是向内存写数据,当DMA数据传输量达到预定的中断产生长度时,则产生数据处理中断,并从内存中已写有数据的区域读出数据;
如果所述DMA数据传输是读取内存读数据,当DMA数据传输量达到预定的中断产生长度时,则产生数据处理中断,并向内存中已读出数据的区域写入数据;
在DMA数据传输进行至内存的终止地址时,根据当前地址绕回使能状态值决定是否将内存地址绕回到起始地址。
2、如权利要求1所述的方法,其特征在于,所述根据当前地址绕回使能状态值,决定是否将内存地址绕回到起始地址,具体为:当当前地址绕回使能状态值为表示地址绕回使能有效的值时,下一次数据传输将从内存的起始地址开始进行;否则结束数据传输。
3、如权利要求2所述的方法,其特征在于:在一次外部数据缓存与内存间的DMA数据传输中还需要设置备用地址绕回使能状态值,将作为下一次数据传输时的当前地址绕回使能状态值,而本次数据传输中的当前地址绕回使能状态值将作为下一次数据传输的备用地址绕回使能状态值。
4、如权利要求2所述的方法,其特征在于:所述地址绕回使能状态值是通过比较外部设备所需传输的剩余数据量与内存空间大小来设定,如果外部设备所述传输的剩余数据量大于等于内存空间大小,则将地址绕回使能状态值设为有效,否则将地址绕回使能状态值设为无效。
5、如权利要求1所述的方法,其特征在于:对外部数据缓存与内存间的DAM数据传输量进行计数,是从DMA数据传输开始或产生数据处理中断时开始。
6、如权利要求1所述的方法,其特征在于,该方法还包括:CPU配置外部数据缓存空间大小,内存空间大小,中断产生长度,及外部数据缓存与内存间第一次传输时使用的地址绕回使能状态值。
7、如权利要求1所述的方法,其特征在于,该方法还包括:在外部设备与外部数据缓存间传输数据时,判断外部设备与外部数据缓存间传输的数据量是否达到外部数据缓存空间大小,如果是,则进行外部数据缓存与内存间的DMA数据传输,否则,继续进行外部设备与外部数据缓存间的数据传输。
8、如权利要求1所述的方法,其特征在于,该方法还包括:在外部数据缓存与内存间传输数据时,判断外部数据缓存和内存间传输的数据量是否达到内存空间大小,如果是,则发出通道完成传输中断给控制模块,表明完成一次外部数据缓存和内存间的DMA数据传输;否则继续进行外部数据缓存与内存间的DMA数据传输。
9、一种DMA控制器,包括控制模块、寄存器组和计数器组,其特征在于:所述DMA控制器还包括地址绕回模块,用于根据所述控制模块的选择信号输出当前地址绕回使能状态值;还用于存储绕回地址;
所述控制模块根据地址绕回模块输出的当前地址绕回使能状态值,决定是否进行地址绕回,如果当前地址绕回使能状态值为有效,则从地址绕回模块中读取绕回地址,并发出控制命令,使下一次数据传输从绕回地址开始。
10、如权利要求9所述的DMA控制器,其特征在于,所述地址绕回模块包括:
第一地址绕回使能状态寄存器和第二地址绕回使能状态寄存器,均用于存储地址绕回使能状态值,且在每次外部数据缓存与内存间的DMA数据传输中交替使用;
选择器,用于接收控制模块的选择信号,选择第一地址绕回使能状态寄存器中的值和第二地址绕回使能状态寄存器中的值之一作为当前地址绕回使能状态值,并输出给控制模块;
绕回地址存储单元,用于存储绕回地址。
11、如权利要求10所述的DMA控制器,其特征在于:所述绕回地址为内存的起始地址。
12、如权利要求9所述的DMA控制器,其特征在于,所述寄存器组包括:
通道状态寄存器,用于存储通道状态值;
DMA使能状态寄存器,用于存储DMA使能状态值;
外部数据缓存空间大小寄存器,用于存储由CPU配置的外部数据缓存的大小值;
内存空间大小寄存器,用于存储由CPU配置的内存空间的大小值;
中断产生长度寄存器,用于存储在数据传输过程中中断产生时传输数据量的值;
当前地址寄存器,用于存储数据传输在内存中的当前地址。
13、如权利要求9所述的DMA控制器,其特征在于,所述计数器组包括:
第一计数器,用于在一次外部设备与外部数据缓存间的数据传输中对所传输的字节数进行计数;
所述控制模块,用于在进行数据传输期间,控制第一计数器进行计数;并通过比较第一计数器的计数值与外部数据缓存空间大小,来判断外部设备与外部数据缓存间传输的字节数是否达到外部数据缓存空间大小,达到时,则向外部设备发送完成本次外部设备与外部数据缓存间的数据传输的信号。
14、如权利要求13所述的DMA控制器,其特征在于,所述计数器组还包括:
第二计数器,用于在一次外部数据缓存与内存间数据传输中对所传输的字节数进行计数;
所述控制模块,用于在进行数据传输期间,控制第二计数器进行计数;并通过比较第二计数器的计数值与内存空间大小寄存器中的数值,来判断外部数据缓存与内存间传输的字节数是否达到内存空间的大小,达到时,则向CPU发出通道完成传输中断请求,表示完成一次外部数据缓存与内存间的DMA数据传输;所述控制模块根据来自地址绕回模块的当前地址绕回使能状态值决定是否进行地址绕回,如果当前地址绕回使能状态值为有效,则从地址绕回模块读取绕回地址,作为下一次数据传输的起始地址。
15、如权利要求14所述的DMA控制器,其特征在于,所述计数器组还包括:
第三计数器,用于在产生两个中断之间外部数据缓存与内存件数据传输中对所传输的字节数进行计数;
所述控制模块,用于分别在外部数据缓存与内存间开始进行DMA数据传输时和在发出数据处理中断请求时控制第三计数器进行计数;并通过比较第三计数器的计数值与中断产生长度,来判断从数据传输开始或发出数据处理中断请求起外部数据缓存与内存间进行的数据传输是否达到中断产生长度,达到时,则向CPU发出数据处理中断,
如果DMA数据传输是向内存写数据,CPU从内存中已写有数据的区域读出数据;
如果DMA数据传输是读取内存读数据,CPU向内存中已读出数据的区域写入数据;
发出通道完成传输中断请求,表示完成一次外部数据缓存与内存间的DMA数据传输;所述控制模块根据来自地址绕回模块的当前地址绕回使能状态值决定是否进行地址绕回,如果当前地址绕回使能状态值为有效,则从地址绕回模块读取绕回地址,作为下一次数据传输的起始地址。
CN2008101182302A 2008-08-11 2008-08-11 一种dma数据传输方法及dma控制器 Expired - Fee Related CN101339541B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008101182302A CN101339541B (zh) 2008-08-11 2008-08-11 一种dma数据传输方法及dma控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101182302A CN101339541B (zh) 2008-08-11 2008-08-11 一种dma数据传输方法及dma控制器

Publications (2)

Publication Number Publication Date
CN101339541A true CN101339541A (zh) 2009-01-07
CN101339541B CN101339541B (zh) 2012-06-06

Family

ID=40213612

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101182302A Expired - Fee Related CN101339541B (zh) 2008-08-11 2008-08-11 一种dma数据传输方法及dma控制器

Country Status (1)

Country Link
CN (1) CN101339541B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101925160A (zh) * 2009-06-11 2010-12-22 上海易狄欧电子科技有限公司 无线数据收发方法及其系统
CN105389156A (zh) * 2015-11-24 2016-03-09 珠海全志科技股份有限公司 一种基于dma技术降低声音输入至输出延迟的方法和系统
CN107766268A (zh) * 2017-10-27 2018-03-06 郑州云海信息技术有限公司 存储设备的中断发送方法、装置、系统、设备及存储介质
CN108388529A (zh) * 2018-01-26 2018-08-10 武汉中元华电电力设备有限公司 一种外设主动实现与cpu间数据交换的方法
CN110781104A (zh) * 2019-10-30 2020-02-11 深圳市元征科技股份有限公司 一种数据处理系统、方法和装置
CN111858419A (zh) * 2020-06-30 2020-10-30 山东云海国创云计算装备产业创新中心有限公司 一种数据传输方法、装置及设备
CN112115096A (zh) * 2020-09-16 2020-12-22 天津津航计算技术研究所 一种基于嵌入式微处理器的数据传输控制方法
CN114097727A (zh) * 2020-08-27 2022-03-01 古洛布莱株式会社 钓鱼信息管理系统
CN114691564A (zh) * 2020-12-29 2022-07-01 新唐科技股份有限公司 直接内存访问设备、数据传输方法与电子设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088745A (en) * 1998-03-17 2000-07-11 Xylan Corporation Logical output queues linking buffers allocated using free lists of pointer groups of multiple contiguous address space
JP4749657B2 (ja) * 2003-03-20 2011-08-17 パナソニック株式会社 Dma制御装置
CN100527111C (zh) * 2007-09-29 2009-08-12 北京时代民芯科技有限公司 一种片上dma电路及其实现方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101925160A (zh) * 2009-06-11 2010-12-22 上海易狄欧电子科技有限公司 无线数据收发方法及其系统
CN105389156A (zh) * 2015-11-24 2016-03-09 珠海全志科技股份有限公司 一种基于dma技术降低声音输入至输出延迟的方法和系统
CN105389156B (zh) * 2015-11-24 2018-12-11 珠海全志科技股份有限公司 一种基于dma技术降低声音输入至输出延迟的方法和系统
CN107766268A (zh) * 2017-10-27 2018-03-06 郑州云海信息技术有限公司 存储设备的中断发送方法、装置、系统、设备及存储介质
CN108388529A (zh) * 2018-01-26 2018-08-10 武汉中元华电电力设备有限公司 一种外设主动实现与cpu间数据交换的方法
CN108388529B (zh) * 2018-01-26 2021-03-09 武汉中元华电电力设备有限公司 一种外设主动实现与cpu间数据交换的方法
CN110781104A (zh) * 2019-10-30 2020-02-11 深圳市元征科技股份有限公司 一种数据处理系统、方法和装置
CN111858419A (zh) * 2020-06-30 2020-10-30 山东云海国创云计算装备产业创新中心有限公司 一种数据传输方法、装置及设备
CN114097727A (zh) * 2020-08-27 2022-03-01 古洛布莱株式会社 钓鱼信息管理系统
CN114097727B (zh) * 2020-08-27 2024-02-20 古洛布莱株式会社 钓鱼信息管理系统
CN112115096A (zh) * 2020-09-16 2020-12-22 天津津航计算技术研究所 一种基于嵌入式微处理器的数据传输控制方法
CN114691564A (zh) * 2020-12-29 2022-07-01 新唐科技股份有限公司 直接内存访问设备、数据传输方法与电子设备

Also Published As

Publication number Publication date
CN101339541B (zh) 2012-06-06

Similar Documents

Publication Publication Date Title
CN101339541B (zh) 一种dma数据传输方法及dma控制器
CN100440184C (zh) 一种能同时进行读写操作的dma控制器及传输方法
CN106874224B (zh) 自动搬运且适应器件的多线SPI-Flash控制器
CN100349150C (zh) 通过直接存储器访问控制器传输数据的系统及方法
TWI434182B (zh) 外部記憶體快進快出裝置
CN100483377C (zh) 一种异步桥及数据传输方法
US8819310B2 (en) System-on-chip and data arbitration method thereof
CN100464318C (zh) 一种实现高效dma传输的dma控制器及传输方法
JP5791397B2 (ja) デバイスコントローラ、usbデバイスコントローラ及び電力制御方法
CN109412914A (zh) 流数据与axi接口通信装置
CN108958800A (zh) 一种基于fpga硬件加速的ddr管理控制系统
CN102789439A (zh) 控制数据传输过程中的中断的方法
CN101266584B (zh) 通用串行总线主机控制器及其控制方法
US20050188121A1 (en) System and controller with reduced bus utilization time
CN102841871B (zh) 基于高速串行总线的DMA结构的pipeline读写方法
CN102841870B (zh) 基于高速串行总线的通用dma结构及预读方法
CN113590512B (zh) 可直连外设设备的自启动dma装置及应用
CN102841869A (zh) 一种基于fpga的多通道i2c控制器
CN101303685B (zh) 可提升通用序列总线储存设备的读写数据速率的方法
CN108932207A (zh) 带有缓存区的sdio-wifi数据传输方法及系统
CN101944075B (zh) 总线系统、对低速总线设备进行读写操作的方法及装置
CN110046114B (zh) 基于pcie协议的dma控制器及dma数据传输方法
KR20210134965A (ko) 데이터 전송 장치, 방법 및 판독 가능 저장매체
JP2010211322A (ja) ネットワークプロセッサ、受信コントローラ、及びデータ受信処理方法
JP2011065359A (ja) メモリシステム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
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

TA01 Transfer of patent application right

Effective date of registration: 20110127

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

Applicant after: Wuxi Vimicro Co., Ltd.

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

Applicant before: Beijing Vimicro Corporation

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120606

Termination date: 20170811

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