一种直接存储器存取的传输装置与方法 【技术领域】
本发明涉及一种直接存储器存取的传输装置与方法,尤其涉及一种基于便携式多媒体应用设备进行数据传输的直接存储器存取的传输装置与方法。
背景技术
直接存储器存取(DMA,Direct Memory Access)是微机系统提高数据传输效率的一项重要传输技术。传统的DMA传输技术可以在中央处理器(CPU,Central Process Unit)执行任务的同时,对系统设备中的数据块进行存取操作,减轻处理器的负荷,并且由于是直接存储器存取,其传输速度比CPU存取数据的速度更快;DMA传输技术也可以在CPU不参与的情况下,由专用的硬件电路控制数据块的存取。
在多媒体技术应用中,传统的DMA传输技术的数据传输速度逐渐满足不了高带宽、高传输速率的图像视频数据的传输要求,在普通的二维DMA传输中,对于字节对齐的数据采用的传输方法是进行单字节传输,这种方式浪费了大量带宽。而在多媒体应用中,图像视频数据是数据量非常大的一类数据,这类图像是二维的,公开号为US6292853B1的美国专利“DMA controller adapted for transferring data in two-dimensional mappedaddress space”,公开了一种二维DMA传输模式,在这种传输模式下,可以通过配置图像的二维大小,指定要传输的图像,在方便系统配置的同时,也减少了配置的次数,加快了传输速度。但是上述技术在便携式多媒体的应用中,比如GPS类便携设备,需要批量定时传输一定数量的二维图形图像数据,对于这样的传输要求,系统每次都要启动CPU来进行DMA传输装置的配置,导致系统功耗和传输效果不能够得到平衡;虽然现有技术中已经有链路DMA传输方法,这种传输方法可以一次指定多个传输任务,但普通的链路DMA传输方法不能达到定时传输的目的,并且普通的链路DMA传输方法也没有完全脱离通过CPU进行系统配置的方式。
综上所述,目前现有技术中的DMA传输方式,均不能完全脱离系统每次传输过程都要通过启动CPU来进行DMA传输装置的配置的形式,均不能取得系统功耗与传输效果的平衡。
【发明内容】
本发明针对现有技术存在的系统功耗与传输效果不平衡的问题,在现有技术的基础上提出一种直接存储器存取的传输装置与方法。
一种直接存储器存取的传输装置,该装置包括:DMA控制模块、源端存储模块、目的端存储模块、存放任务模块、第一时钟、第二时钟和第三时钟,第一时钟与DMA控制模块相连,第二时钟和第三时钟分别接入源端存储模块和目的端存储模块,源端存储模块、目的端存储模块、存放任务模块分别与DMA控制模块相连,存放任务模块又与CPU相连,
DMA控制模块包括时间调控模块、二维任务控制模块和FIFO模块,时间调控模块与二维任务控制模块由CPU进行时间与任务配置并将第一任务存入二维任务控制模块,时间调控模块由CPU进行第一次触发,二维任务控制模块根据时间调控模块的触发信号控制FIFO模块将目标图像从源端存储模块传输到目的端存储模块,时间调控模块根据FIFO模块的反馈信息控制二维任务控制模块从存放任务模块中取任务。
所述时间调控模块包括时间控制模块和时间传输控制模块,时间控制模块直接受CPU控制,时间传输控制模块接收时间控制模块命令,控制二维控制模块。
所述二维任务控制模块包括二维任务寄存器、二维任务传输控制模块和取任务模块,二维任务寄存器直接受CPU控制,时间传输控制模块接收时间控制模块命令,控制二维任务传输控制模块从二维任务寄存器中读取任务内容,并根据二维任务传输控制模块的反馈信息控制取任务模块从存放任务模块读取新任务写入二维任务寄存器,二维任务传输控制模块控制FIFO模块进行任务传输并将传输状态信息分别反馈时间传输控制模块和取任务模块。
所述时间调控模块受CPU控制生成时间维度,所述时间维度上有确定的DMA操作触发点,时间调控模块对各个操作触发点上的传输任务进行优先配置。
所述对二维任务控制模块的配置包括对传输任务中传输源端和目的端的图像的起始地址、大小、宽度和高度的配置。
所述传输装置可以采用链路DMA传输方式。
所述方法包括如下步骤:
步骤一、确定时间维度上各个DMA操作触发点;
步骤二、确定各个操作触发点上二维传输任务并进行配置;
步骤三、配置各个操作触发点上二维传输任务的优先级顺序;
步骤四、所有任务配置完毕,触发第一个操作触发点开始DMA数据传输。
所述步骤二还包括如下步骤:
a、配置源端存储模块中图像的起始地址;
b、配置源端存储模块中图像的宽度、高度及行地址间隔;
c、配置待传输图像的起始点坐标、宽度和高度;
d、配置目的端存储模块中图像地起始地址;
e、配置目的端存储模块中图像的宽度、高度及行地址间隔;
f、配置待传输图像的起始点坐标、宽度和高度。
所述步骤一中操作触发点可以是单次循环点。
所述步骤一中操作触发点可以是多次循环点。
所述步骤一中操作触发点可以是不定的时间点。
所述步骤还包括在各链路DMA传输任务中配置下一传输任务的存放地址,并在该地址处存储步骤a到步骤f的传输任务配置指令。
本发明针对便携式无线或者有限设备的数据传输,在现有普通DMA传输技术的基础上增加了时间维度,实现了在时间维度上定时定量传输二维图形图像数据,这种数据传输方法,在CPU对DMA传输装置进行初始化配置结束之后,DMA传输装置即可完全的脱离系统独立运行,这样就可以实现尽可能低的系统功耗,该传输方式还可事先设定每个任务的传输优先级;本发明所述的DMA传输装置采用了各部分独立的时钟域的结构,也可实现较低的系统功耗。本发明所述的DMA传输装置与方法可以更好的满足便携类消费电子产品在进行图像数据传输时的要求,而且明显降低了系统的使用功耗。
【附图说明】
图1是本发明所述传输装置具体结构图;
图2是本发明所述时间维度上三种不同模式下操作触发点示意图;
图3a是源端存储模块中二维图像示意图;
图3b是目的端存储模块中二维图像示意图。
【具体实施方式】
下面结合附图说明对本发明的具体实施方式进行详细描述。
实施例1
本发明所述直接存储器存取的传输装置实施例1的结构如图1所示,包括三维DMA控制模块100、第一数据终端104、第二数据终端105、存放任务模块109、第一时钟106、第二时钟107和第三时钟108。
本发明所述的三维DMA是指在现有技术中所述的二维DMA的基础上加多一时间维度,凡本发明所述三维DMA均做此解释。
其中三维DMA控制模块100包括:时间控制模块101、时间传输控制模块102、第一FIFO模块103、二维任务传输控制模块111、二维任务寄存器110和取任务模块112。
时间控制模块101用于对时间维度及时间维度上各操作触发点优先级进行配置;
时间传输控制模块102用于对时间维度上各操作触发点的任务传输进行控制;
二维任务寄存器110用于对传输图像任务的高度、宽度、起始坐标点等数据进行配置并存放第一个传输任务;
二维任务传输控制模块111用于控制第一FIFO模块103的传输进程并反馈传输状态的信息;
取任务模块112用于从存放任务模块109中读取任务并将读取的任务写如二维任务寄存器110;
第一FIFO模块103用于连接第一数据终端104和第二数据终端105进行任务数据传输。
存放任务模块109的输出端与取任务模块112相连,其输入端与CPU300相连,CPU300将除第一个传输任务以外的其他所有任务输入存放任务模块109内。
三维DMA控制模块100外部接入第一时钟106。
第一数据终端104和第二数据终端105分别直接与三维DMA控制模块100中的第一FIFO模块103连接,第一数据终端104外接第二时钟107,第二数据终端105外接第三时钟108。
本实施例以单点单任务的普通二维DMA为例,下面结合图1对本发明所述实施例1的DMA传输装置的具体工作原理进行描述:
中央处理器CPU300与其他外设部分303相连,其他外设部分303配有独立的第四时钟304,由中央处理器CPU300通过第二FIFO模块301分别对三维DMA控制模块100中时间控制模块101和二维任务寄存器110进行配置,并将第一个传输任务存于二维任务寄存器110中;中央处理器CPU300直接将除第一个传输任务以外的其他所有任务存入存放任务模块109内。
对时间控制模块101中时间维度进行配置,要确定好时间维度上的各个DMA传输任务的操作触发点,操作触发点的配置有三种模式,如图2所示,所述操作触发点可以是单次循环点,也可以是多次循环点,或者是不定的时间点。
对于单次循环点的方式需要配置一个计数器进行循环计数,每次计数完毕后发出一个脉冲信号,触发三维DMA控制模块100对DMA传输装置的起始操作;
对于多次循环点的方式需要配置一个状态机进行循环,在每个状态循环周期里面触发三维DMA控制模块100对DMA传输装置进行起始操作若干次;
对于不定时间点的方式,则需要配置一个存储器和一个计数器,对每次操作触发点的时间间隔数值依次存储,计数器在第一次触发完毕进行一次DMA传输任务操作后就读取第二个数值,同时计数器开始计数,当计数值等于第二个数值的时候进行第二次触发,依此类推。但是这种方式具有一定的限制,其受制于存放时间间隔的存储器大小,在时间轴上的延伸不能超出一定长度。
对各个操作触发点上传输任务进行优先级设置,如果当前操作触发点上的任务优先级高,并且该任务启动时间来临的时候,前一个任务尚未完成,就取消前一个操作触发点的任务,启动新的传输;否则,就继续前一个任务,对于每个DMA操作触发点的任务都要专门分配一个寄存器来配置任务优先级。
对二维任务寄存器110中二维传输任务图像进行配置,包括对传输源端和目标端的传输目标图形图像的配置,以及传输目标图形图像大小的配置,其具体分为以下几个步骤:
a、配置源端图像的起始地址:配置第一数据终端104内图像起始地址为32’h1000_0000;
b、配置源端图像的宽度和高度,配置行地址间隔:配置第一数据终端图像宽度为32,高度为32,行地址间隔为64,则图像第二行的首地址就是32’h1000_0040;
c、配置待传输图像在源端的起始点坐标,宽度和高度:如图3a所示,配置待传图像的起始点坐标为(2,3),宽度3,高度4,通过前两步已经配置的数值,可以计算出该待传图像的起始地址为32’h1000_0000+3*64+2;
d、配置目的端图像的起始地址:配置第二数据终端105内图像起始地址为32’h1000_0000;
e、配置目的端图像的宽度和高度,以及行地址间隔:如图3b所示,目的端图像的宽度与源端图像不同,配置第二数据终端105图像宽度20,高度32,行地址间隔为64;
f、配置待传输图像在目的端的起始点坐标,宽度和高度:如图3所示,配置待传输图像的起始点坐标为(1,1),宽度3,高度4。
对于每个被写入二维任务寄存器110的传输任务都要在传输之前根据任务要求进行以上步骤a-f的配置。
当三维DMA控制模块100内所有任务配置好后,便可独立运行DMA传输装置进行任务传输了,DMA传输装置通过CPU300对三维DMA控制模块100中时间控制模块101进行触发,时间传输控制模块102根据时间控制模块101的命令启动二维任务传输控制模块111,二维任务传输控制模块111从二维任务寄存器110中读出第一个传输任务,并控制第一FIFO模块103将目标图形图像由第一数据终端104通过第一FIFO模块103输入到第二数据终端105,或者通过第一FIFO模块103将传输任务由第二数据终端105将目标图形图像输入到第一数据终端104。
当第一个任务传输完毕后,第一FIFO模块103将此信息反馈到二维任务传输控制模块111,二维任务传输控制模块111分别向时间传输控制模块102取任务模块112发送任务完成信息,由时间传输控制模块102控制取任务模块112从存放任务模块109中读取第二个任务,然后由取任务模块112将第二个任务写入二维任务寄存器110中进行二维图像配置,并等待第二个操作触发点被触发;当第二个操作触发点被触发后,由时间传输控制模块102控制二维任务传输控制模块111进行任务传输其具体过程如前述过程相同。
如果当第三个操作触发点的优先级高于第二个操作触发点,在第二个任务尚未传输完毕时第三个操作触发点已经被触发了,则停止当前的任务传输,开始第三个任务的传输。
如果当第二个操作触发点的任务尚未完成,而第三个操作触发点已经被触发了,且第二个操作触发点的优先级又高于第三个操作触发点,则触发为无效。
当所有任务传输完毕后,由时间控制模块101和二维任务寄存器110分别向CPU300发送时间维度进程结束和二维任务处理完毕的反馈信号。
在CPU300完成对控制寄存模块102及存放任务模块109的配置后并触发时间维度上第一个操作触发点后,DMA传输装置开始独立工作既使其他外设部分303和CPU300在内都关闭了,只要保证DMA传输装置内部第一数据终端104、第二数据终端105、存放任务模块109及三维DMA控制模块100没有关闭,DMA传输装置就可以独立的在时间维度上自动完成传输任务。
整个DMA传输系统中共有三个独立时钟,分别为第一时钟106、第二时钟107和第三时钟108,这三个时钟可以是同源的也可以是异步的。
实施例2
本实施例所述DMA传输装置是以链路DMA为基础,其特点为单时间点下包含多个任务,所述DMA传输装置具体结构与实施例1所述DMA传输装置的结构基本相同。链路DMA的一个特点为在一个操作触发点上会有n个任务存在,另一特点为在每个任务包中既包含任务内容也包含下一任务包的存储地址。
本实施例所述DMA传输装置的工作原理与实施例1所述工作原理基本相同:
由中央处理器CPU300通过第二FIFO模块301对DMA传输装置进行配置,即分别对三维DMA控制模块100中的时间控制模块101和二维任务寄存器110进行配置。
其中,对时间控制模块101和二维任务寄存器110的配置与实施例1所述的关于时间维度、二维传输任务图像的配置基本相同,并将第一个操作触发点的第一个任务存入二维任务寄存器110,并且配置链路DMA传输任务的存放地址,并在该地址处存放好二维任务配置的步骤a到步骤f的传输指令,当前传输任务完成后,二维任务寄存器110自动将链路地址输入取任务模块110,由取任务模块110根据链路地址到该地址处去出下一任务。中央处理器CPU300将除第一个操作触发点上第一个任务以外的所有需传输的任务存放到存放任务模块109中。
然后由CPU300触发第一个操作触发点,DMA传输装置开始任务传输,与实施例1不同之处在于当第一个操作触发点上的第一个任务完成后,二维任务传输控制模块111向取任务模块112发送任务传输结束信息,取任务模块112接到任务完成信号后,根据存放在前一任务中的下一任务的地址从存放任务模块109中读取第一个操作触发点上的第二个任务,并存入二维任务寄存器110进行配置,由二维任务传输控制模块111读出任务内容并控制第一FIFO模块103进行任务传输,当第一个操作触发点上的所有任务传输结束后,二维任务传输控制模块111向时间传输控制模块102发送任务传输完毕信号,由时间传输控制模块102向取任务模块112发送命令,取任务模块112从存放任务模块109中读取第二个操作触发点上的第一个任务,开始进行任务传输,以此类推直至第二个操作触发点所有任务完成之后,等待下一操作触发点被触发,再开始下一操作触发点的任务。
如果当第三个操作触发点的优先级高于第二个操作触发点,第二个操作触发点内的多项任务还未进行完时,先开始执行第三个操作触发点的任务,放弃正在进行的第二个操作触发点尚未完成的任务。同一操作触发点内的各项任务间不存在优先级顺序。
在CPU300完成对时间控制模块101、二维任务寄存器110及存放任务模块109的配置后既使系统中其他外设部分303和CPU300在内都关闭了,只要保证DMA传输装置内部第一数据终端104、第二数据终端105、存放任务模块109及三维DMA控制模块100没有关闭,DMA传输装置就可以独立的在时间维度上自动完成传输任务。
以上内容是结合具体的优选实施方式对本发明作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。