专利名称:一种dma数据传输方法及dma控制器的制作方法
技术领域:
本发明涉及DMA (Direct Memory Access Control,直4妻内存访问)传H 具体涉及一种能用少量内存实现大尺寸或不定尺寸数据进行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控制器, 能够用少量的内存空间完成对大尺寸及不定长度凄t据的传输。
为达到上述目的,本发明提供一种DMA数据传输方法,包括
在外部数据緩存与内存间进行DMA数据传输,其中所述DMA数据传输 是从内存的起始地址开始连续进行的;
如果所述DMA数据传输是向内存写数据,当DMA数据传输量达到预定 的中断产生长度时,则产生数据处理中断,并从内存中已写有数据的区域读出 数据;
如果所述DMA数据传输是读取内存读数据,当DMA数据传输量达到预定的中断产生长度时,则产生数据处理中断,并向内存中已读出数据的区域写
入数据;
在DMA数据传输进行至内存的终止地址时,根据当前地址绕回使能状态 值决定是否将内存地址绕回到起始地址。
所述根据当前地址绕回使能状态值,决定是否将内存地址绕回到起始地址, 具体为当当前地址绕回使能状态值为表示地址绕回使能有效的值时,下一次 数据传输将从内存的起始地址开始进行;否则结束数据传输。
在一次外部数据緩存与内存间的DMA数据传输中还需要设置备用地址绕 回使能状态值,将作为下一次数据传输时的当前地址绕回使能状态值,而本次 数据传输中的当前地址绕回使能状态值将作为下一次数据传输的备用地址绕回 使能状态值。
所述地址绕回使能状态值是通过比较外部设备所需传输的剩余数据量与内 存空间大小来设定,如果外部设备所述传输的剩余数据量大于等于内存空间大 小,则将地址绕回使能状态值设为有效,否则将地址绕回使能状态值设为无效。
对外部数据緩存与内存间的DAM数据传输量进行计数,是从DMA数据 传输开始或产生凄t据处理中断时开始。
该方法还包括CPU配置外部数据緩存空间大小,内存空间大小,中断产 生长度,及外部数据緩存与内存间第一次传输时使用的地址绕回使能状态值。7、 如权利要求1所述的方法,其特征在于,该方法还包括在外部设备与外部数 据緩存间传输数据时,判断外部设备与外部数据緩存间传输的数据量是否达到 外部数据緩存空间大小,如果是,则进行外部数据緩存与内存间的DMA数据 传输,否则,继续进行外部设备与外部数据緩存间的数据传输。
该方法还包括在外部数据緩存与内存间传输数据时,判断外部数据緩存 和内存间传输的数据量是否达到内存空间大小,如果是,则发出通道完成传输 中断给控制模块,表明完成一次外部数据緩存和内存间的DMA数据传输;否 则继续进行外部数据緩存与内存间的DMA数据传输。
本发明还提供一种DMA控制器,包括控制模块、寄存器组和计数器组, 其特征在于所述DMA控制器还包括地址绕回模块,用于根据所述控制模块 的选捧信号输出当前地址绕回使能状态值;还用于存储绕回地址。
所述控制模块根据地址绕回模块输出的当前地址绕回使能状态值,决定是 否进行地址绕回,如果当前地址绕回使能状态值为有效,则从地址绕回模块中 读取绕回地址,并发出控制命令,使下一次数据传输从绕回地址开始。
所述地址绕回;f莫块包括
第一地址绕回使能状态寄存器和第二地址绕回使能状态寄存器,均用于存 储地址绕回使能状态值,且在每次外部数据緩存与内存见的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使能状 态值,通道状态值,中断产生长度,及外部数据緩存与内存间第一次传输时使 用的地址绕回使能状态值。
如果所需传输的lt据量长度较小时,比如小于512K字节长度,则可以将 内存空间大小设置为所需传输的数据量长度。
通道状态值具体为在开始DMA传输后,通道状态值为表示"通道被占 用,,的值,如l;当该通道上的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表示地址绕回使能状 态为有效,其为O表示地址绕回使能状态为无效。
这两个地址绕回使能状态寄存器在每次外部数据緩存与内存间数据传输中 交替使用,当一个地址绕回使能状态寄存器作为当前地址绕回使能状态寄存器 供本次数据传输使用,另一个地址绕回使能状态寄存器则作为备用地址绕回使 能状态寄存器供下一次数据传输使用,当进入下一次数据传输时,本次的当前 地址绕回使能状态寄存器将作为备用地址绕回使能状态寄存器使用,本次数据 传输的备用地址绕回使能状态寄存器将作为当前地址绕回使能状态寄存器使 用。
选择器,用于接收控制模块的选择信号,选择第一地址绕回使能状态寄存 器中的值和第二地址绕回使能状态寄存器中的值之一作为当前地址绕回使能状 态值,并输出给控制模块。
绕回地址存储单元,用于存储下一次数据传输的起始地址,即绕回地址, 为内存的起始地址。
控制模块301,用于控制外部设备和内存间的数据传输;当DMA使能状态 值为1时,接收硬件的DMA传输请求,当DMA使能状态值为0时,继续探 询,直到DMA使能状态值为1;还用于探询通道状态值,如果通道状态值为1 时,发出控制命令,开始数据传输;如果通道状态值为0,继续探询,直到通 道状态值为1。
控制模块301,还用于在进行数据传输期间,控制第一计数器进行计数; 并通过比较第一计数器的计数值与外部数据緩存空间大小,来判断外部设备与 外部数据緩存间传输的字节数是否达到外部数据緩存空间大小,达到时,则向 外部设备发送完成本次外部设备与外部数据緩存间的数据传输的信号;
控制模块301,还用于分别在外部数据緩存与内存间开始进行数据传输时 和在发出数据处理中断请求时控制第三计数器进行计数;并通过比较第三计数 器的计数值与中断产生长度,来判断从数据传输开始或发出数据处理中断请求 起外部数据緩存与内存间进行的数据传输是否达到中断产生长度,达到时,则 将数据传输的在内存中的当前地址存入地址寄存单元中,并向CPU发出数据处 理中断请求,CPU将内存中的数据提取出来并进行数据处理。
控制模块301,还用于在进行数据传输期间,控制第二计数器进行计数; 并通过比较第二计数器的计数值与内存空间大小,来判断外部数据緩存与内存 间传输的字节数是否达到内存空间的大小,达到时,则向CPU发出通道完成传 输中断请求,表示完成一次数据传输;并根据来自地址绕回模块304的当前地 址绕回使能状态值决定是否进行地址绕回,如果该值为1,则表明地址绕回使 能状态为有效,则从地址绕回模块304中的绕回地址单元读取绕回地址,作为 下一次数据传输的起始地址。
控制模块301,还用于向地址绕回模块304中的选择器发送选择信号,使 得选择器在每次外部数据緩存与内存间的数据传输中交替选择并输出两个地址 绕回使能状态值之一作为当前地址绕回使能状态值;。
所述DMA控制模块还用于在开始DMA传输后,将所用传输通道的通道 状态寄存器的值置为"通道#1占用";当该通道上的DMA传输完成或终止后, 将通道状态寄存器的值置为表示"通道可用"的值。
由上述的实施例可见,本发明在现有技术的基础上,增加了地址绕回的步 骤,并设置有两个地址绕回使能状态寄存器,由于其中一个地址绕回使能状态 寄存器在另一个地址绕回使能状态寄存器在被4吏用时已经祐:设置好,因此在完
成一次数据传输能够及时找到下次传输的地址,无需再次启动DMA,从而避免出 现由于上一次传输结束中断和启动DMA存在时间间隔,而导致数据丟失的问
题。同时,由于本方法使用了地址绕回的技术手"a,在一次传输的数据量达到
内存空间的最大值时,便可以使用地址绕回的技术手段,找到下次传输的起始 地址,只要地址绕回使能状态值一直为有效,则可以进行不定次数的数据传输, 这样即使内存空间比较小,也能实现对大长度数据进行传输,而且所传输的数 据的长度可以不固定。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保 护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。
权利要求
1、一种DMA数据传输方法,其特征在于,所述方法包括在外部数据缓存与内存间进行DMA数据传输,其中所述DMA数据传输是从内存的起始地址开始连续进行的;如果所述DMA数据传输是向内存写数据,当DMA数据传输量达到预定的中断产生长度时,则产生数据处理中断,并从内存中已写有数据的区域读出数据;如果所述DMA数据传输是读取内存读数据,当DMA数据传输量达到预定的中断产生长度时,则产生数据处理中断,并向内存中已读出数据的区域写入数据;在DMA数据传输进行至内存的终止地址时,根据当前地址绕回使能状态值决定是否将内存地址绕回到起始地址。
2、 如权利要求l所迷的方法,其特征在于,所述根据当前地址绕回使能状 态值,决定是否将内存地址绕回到起始地址,具体为当当前地址绕回使能状 态值为表示地址绕回使能有效的值时,下一次数据传输将从内存的起始地址开 始进行;否则结束数据传输。
3、 如权利要求2所述的方法,其特征在于在一次外部数据緩存与内存间 的DMA数据传输中还需要设置备用地址绕回使能状态值,将作为下一次数据 传输时的当前地址绕回使能状态值,而本次数据传输中的当前地址绕回使能状 态值将作为下一次数据传输的备用地址绕回使能状态值。
4、 如权利要求2所述的方法,其特征在于所述地址绕回使能状态值是通 过比较外部设备所需传输的剩余数据量与内存空间大小来设定,如果外部设备 所述传输的剩余数据量大于等于内存空间大小,则将地址绕回使能状态值设为 有效,否则将地址绕回使能状态值设为无效。
5、 如权利要求1所述的方法,其特征在于对外部数据緩存与内存间的 DAM数据传输量进行计数,是从DMA数据传输开始或产生数据处理中断时开 始。
6、 如权利要求1所述的方法,其特征在于,该方法还包括CPU配置外 部数据緩存空间大小,内存空间大小,中断产生长度,及外部数据緩存与内存 间第一次传输时使用的地址绕回使能状态值。
7、 如权利要求l所述的方法,其特征在于,该方法还包括在外部设备与 外部数据緩存间传输数据时,判断外部设备与外部数据緩存间传输的数据量是 否达到外部数据緩存空间大小,如果是,则进行外部数据緩存与内存间的DMA 数据传输,否则,继续进行外部设备与外部数据緩存间的数据传输。
8、 如权利要求l所述的方法,其特征在于,该方法还包括在外部数据緩 存与内存间传输数据时,判断外部数据緩存和内存间传输的数据量是否达到内 存空间大小,如果是,则发出通道完成传输中断给控制模块,表明完成一次外 部数据緩存和内存间的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向内存中已读出数据的区域 写入数据;发出通道完成传输中断请求,表示完成一次外部凄t据緩存与内存间的DMA 数据传输;所述控制模块根据来自地址绕回模块的当前地址绕回使能状态值决 定是否进行地址绕回,如果当前地址绕回使能状态值为有效,则从地址绕回模 块读取绕回地址,作为下一次数据传输的起始地址。
全文摘要
本发明提供的一种DMA数据传输的方法及DMA控制器,是通过在现有技术的基础上,增加地址绕回步骤,在向内存读/写数据到达内存终止地址时,交替根据两个地址绕回使能状态寄存判断是否将读/写地址绕回到内存起始地址。由于其中一个地址绕回使能状态值在另一个地址绕回使能状态值在被使用时已经被设置好,因此在完成一次数据传输能够及时找到下次传输的地址,无需再次启动DMA,从而避免出现由于上一次传输结束中断和启动DMA存在时间间隔,而导致数据丢失的问题。
文档编号G06F13/28GK101339541SQ200810118230
公开日2009年1月7日 申请日期2008年8月11日 优先权日2008年8月11日
发明者李晓强 申请人:北京中星微电子有限公司