一种控制数据传输的方法及dma控制器的制造方法

文档序号:6550176阅读:147来源:国知局
一种控制数据传输的方法及dma控制器的制造方法
【专利摘要】本发明提供一种控制数据传输的方法及DMA控制器,该方法包括:接收CPU的配置信息,对所述配置信息进行解析,所述配置信息包括传输宽度转换参数;从源外设读取数据,根据所述传输宽度转换参数将读取到的数据转换成相应的数据宽度后写入目的外设。本发明的DMA控制器采取的传输方式,为作用于存储器之间、存储器与外设之间、外设与外设之间直接交换数据,不执行CPU读写指令,且不需要经过CPU缓存,减少了中间环节,只要完成配置DMA控制器,所有读写时序全部由硬件执行,因此大大提高了传送数据的速率。
【专利说明】—种控制数据传输的方法及DMA控制器
【技术领域】
[0001]本发明涉及集成电路领域,特别是涉及一种控制数据传输的方法及DMA (DirectMemory Access,存储器直接访问)控制器。
【背景技术】
[0002]随着互联网及电子产品的快速发展,含有音频、视频等大量数据的应用软件考验着硬件芯片的数据处理能力,大量数据的快速传输已成为当今芯片的重要性能指标。
[0003]相对于传统系统中的CPU直接传输数据方式、查询方式及中断方式,DMA控制器米取的传输方式,为作用于存储器之间、存储器与外设之间、外设与外设之间直接交换数据。不执行CPU读写指令,且不需要经过CPU缓存,减少了中间环节。只要完成配置DMA控制器,所有读写时序全部由硬件执行,因此大大提高了传送数据的速率。
[0004]如图1所示,为现有设计的DMA系统结构框图。CPU工作模式中:通过系统总线(SYS_BUS),CPU可以单独访问DMA控制器、源存储器或外设(Src)、目的存储器或外设(Dst)。DMA工作模式中:通过SYS_BUS,CPU配置DMA内部功能寄存器,包括传输长度、源起始地址、目的起始地址、传输方向、工作使能等。
[0005]使能打开后,DMA开始工作。首先,通过SYS_BUS,从源起始地址读出的数据送进DMA暂存,完成一次读操作。然后,DMA再将数据写入目的起始地址,完成一次写操作。同时,源地址、目的地址增加至下一次读、写操作的地址。依此,进行后续的从Src读出数据,并写入Dst的操作。直至所有数据全部传输完毕,DMA工作完毕,释放总线。
[0006]现有设计的DMA控制器,存在不同数据宽度存储器之间数据转换频繁、传输效率较低、耗时较长的技术缺点:
[0007]从设计原理上,现有设计的DMA控制器,由于设计简单,很少考虑数据宽度匹配的问题,所以要求源、目的传输数据宽度必须相等。针对在不同数据宽度的存储器或外设之间传输时,需要在系统或存储器接口模块中,增加数据转换或数据缓存的设计,导致系统复杂化,数据速度较慢等缺点。
[0008]此外,现有设计的DMA控制器工作时,会占有系统总线。此时,CPU无法通过系统总线访问其它从模块,只能等到DMA工作完毕后,才可操作。此时,CPU可能无法及时处理外设或其他模块的中断信号,在系统使用上具有一定的局限性。

【发明内容】

[0009]本发明要解决的技术问题是提供一种控制数据传输的方法及DMA控制器,以提高不同数据宽度之间的传输效率。
[0010]为了解决上述技术问题,本发明提供了一种控制数据传输的方法,应用于存储器直接访问控制器,包括:
[0011]接收CPU的配置信息,对所述配置信息进行解析,所述配置信息包括传输宽度转换参数;[0012]从源外设读取数据,根据所述传输宽度转换参数将读取到的数据转换成相应的数据宽度后写入目的外设。
[0013]进一步地,上述方法还具有下面特点:
[0014]所述从源外设读取数据是通过所述源外设与所述存储器直接访问控制器之间的接口实现的;
[0015]所述将数据写入目的外设是通过所述目的外设与所述存储器直接访问控制器之间的接口实现的。
[0016]进一步地,上述方法还具有下面特点:
[0017]所述接收的配置信息还包括:源起始地址和目的起始地址;
[0018]所述传输宽度转换参数包括源外设数据宽度和目的外设所需的数据宽度;
[0019]所述从源外设读取数据,根据所述传输宽度转换参数将读取到的数据转换成相应的数据宽度后写入所述目的外设,包括:根据所述传输宽度转换参数,按照所述源外设的接口时序从所述源起始地址开始读取源外设数据宽度的数据,将读取到的数据转换成所述目的外设所需的数据宽度后,按照所述目的外设的接口时序,从所述目的起始地址开始写入所述目的外设。
[0020]进一步地,上述方法还具有下面特点:
[0021]所述源外设支持的数据宽度包括以下的任一种:8比特、16比特和32比特;
[0022]所述目的外设支持的数据宽度包括以下的任一种:8比特、16比特和32比特。
[0023]进一步地,上述方法还具有下面特点:
[0024]所述传输宽度转换参数为O时,表示数据宽度从Sbits转换为Sbits ;
[0025]所述传输宽度转换参数为5时,表示数据宽度从16bits转换为16bits ;
[0026]所述传输宽度转换参数为a时,表示数据宽度从32bits转换为32bits ;
[0027]所述传输宽度转换参数为I时,表示数据宽度从16bits转换为Sbits ;
[0028]所述传输宽度转换参数为2时,表示数据宽度从32bits转换为Sbits ;
[0029]所述传输宽度转换参数为6时,表示数据宽度从32bits转换为16bits ;
[0030]所述传输宽度转换参数为4时,表示数据宽度从Sbits转换为16bits ;
[0031]所述传输宽度转换参数为8时,表示数据宽度从Sbits转换为32bits ;
[0032]所述传输宽度转换参数为9时,表示数据宽度从16bits转换为32bits。
[0033]为了解决上述问题,本发明还提供了一种存储器直接访问控制器,其中,所述存储器直接访问控制器具有数据接口直接与源外设和目的外设连接,包括:
[0034]配置模块,用于接收CPU的配置信息,对所述配置信息进行解析,所述配置信息包括传输宽度转换参数;
[0035]控制模块,用于从源外设读取数据,根据所述传输宽度转换参数将读取到的数据转换成相应的数据宽度后写入目的外设。
[0036]进一步地,上述存储器直接访问控制器还具有下面特点:
[0037]所述控制模块,从源外设读取数据是通过所述源外设与所述存储器直接访问控制器之间的接口实现的;将数据写入目的外设是通过所述目的外设与所述存储器直接访问控制器之间的接口实现的。
[0038]进一步地,上述存储器直接访问控制器还具有下面特点:[0039]所述配置模块,接收的配置信息还包括:源起始地址和目的起始地址;所述传输宽度转换参数包括源外设数据宽度和目的外设所需的数据宽度;
[0040]所述控制模块,具体用于根据所述传输宽度转换参数,按照所述源外设的接口时序从所述源起始地址开始读取源外设数据宽度的数据,将读取到的数据转换成所述目的外设所需的数据宽度后,按照所述目的外设的接口时序,从所述目的起始地址开始写入所述目的外设。
[0041]进一步地,上述存储器直接访问控制器还具有下面特点:
[0042]所述源外设支持的数据宽度包括以下的任一种:8比特、16比特和32比特;
[0043]所述目的外设支持的数据宽度包括以下的任一种:8比特、16比特和32比特。
[0044]进一步地,上述存储器直接访问控制器还具有下面特点:
[0045]所述传输宽度转换参数为O时,表示数据宽度从Sbits转换为Sbits ;
[0046]所述传输宽度转换参数为5时,表示数据宽度从16bits转换为16bits ;
[0047]所述传输宽度转换参数为a时,表示数据宽度从32bits转换为32bits ;
[0048]所述传输宽度转换参数为I时,表示数据宽度从16bits转换为Sbits ;
[0049]所述传输宽度转换参数为2时,表示数据宽度从32bits转换为Sbits ;
[0050]所述传输宽度转换参数为6时,表示数据宽度从32bits转换为16bits ;
[0051]所述传输宽度转换参数为4时,表示数据宽度从Sbits转换为16bits ;
[0052]所述传输宽度转换参数为8时,表示数据宽度从Sbits转换为32bits ;
[0053]所述传输宽度转换参数为9时,表示数据宽度从16bits转换为32bits。
[0054]综上,本发明提供一种控制数据传输的方法及DMA控制器,本发明的DMA控制器采取的传输方式,为作用于存储器之间、存储器与外设之间、外设与外设之间直接交换数据,不执行CPU读写指令,且不需要经过CPU缓存,减少了中间环节。只要完成配置DMA控制器,所有读写时序全部由硬件执行,因此大大提高了传送数据的速率。本发明可以处理不同宽度数据互通的问题,使之互通方便、传输速度较快、系统连接简单,且不占用系统总线。
【专利附图】

【附图说明】
[0055]图1为现有设计的DMA系统结构框图;
[0056]图2为本发明实施例的DMA系统结构框图;
[0057]图3为本实施例的DMA控制器的框图;
[0058]图4为本发明实施例的DMA控制器的工作原理图;
[0059]图5为本发明实施例的一种控制数据传输的方法的流程图;
[0060]图6为本发明实施例的数据宽度传输:8 — >8bits的仿真图;
[0061]图7为本发明实施例的数据宽度传输:16 — >16bits的仿真图;
[0062]图8为本发明实施例的数据宽度传输:32 — >32bits的仿真图;
[0063]图9为本发明实施例的数据宽度传输:16 — >8bits的仿真图;
[0064]图10为本发明实施例的数据宽度传输:32 — >8bits的仿真图;
[0065]图11为本发明实施例的数据宽度传输:32 — >16bits的仿真图;
[0066]图12为本发明实施例的数据宽度传输:8 — >16bits的仿真图;
[0067]图13为本发明实施例的数据宽度传输:8 — >32bits的仿真图;[0068]图14为本发明实施例的数据宽度传输:16 — >32bits的仿真图。
【具体实施方式】
[0069]为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0070]图2为本发明实施例的DMA系统结构框图。CPU工作模式中:通过系统总线(SYS_BUS),CPU也可以单独访问DMA控制器、源存储器或外设(Src)、目的存储器或外设(Dst)。Src和Dst均有一数据接口直接与DMA控制连接。DMA工作模式中:通过SYS_BUS,CPU也是先配置DMA内部功能寄存器,使能打开后,DMA开始工作。
[0071]图3为本实施例的DMA控制器的框图。DMA模块分为两个部分:配置模块(Dma_sfr)和控制模块(Dma_ctrl)。Dmac_sfr接收CPU配置信息(Sys_dat),对配置信息(Sys_dat)进行解析,将配置信息(Configure)发送至Dmac_ctrl模块。Dma_ctrl作为控制模块实现数据传输,从Src读出数据(Src_rd_dat),向Dst写入数据(Dst_wr_dat)。
[0072]图4为本发明实施例的DMA控制器的工作原理图,CPU对Dma寄存器配置:传输长度(Ien),传输宽度转换参数(width),源起始地址(Base_src_addr),目的起始地址(Base_dst_addr),最后配置控制使能(en)完成后,Dma开始工作。
[0073]图5为本发明实施例的一种控制数据传输的方法的流程图,如图5所示,本实施例的方法包括以下步骤:
[0074]S11、接收CPU的配置信息,对所述配置信息进行解析,所述配置信息包括传输宽度转换参数;
[0075]S12、从源外设读取数据,根据所述传输宽度转换参数将读取到的数据转换成相应的数据宽度后写入目的外设。
[0076]其中,所述从源外设读取数据是通过所述源外设与所述存储器直接访问控制器之间的接口实现的;
[0077]所述将数据写入目的外设是通过所述目的外设与所述存储器直接访问控制器之间的接口实现的。
[0078]以现有技术相比,本发明实施例的方法具有以下优点:
[0079]首先,解决数据宽度匹配问题,支持数据宽度从Src到Dst的8/16/32bits之中的任意比特宽度互通。DMA工作时,遵循Src接口的时序,从源地址读出的数据(8/16/32bits)通过DMA内部将数据转换成Dst所需宽度(8/16/32bits),按照Dst接口时序,直接写入目的地址。硬件自动匹配宽度,转换时序,系统连接简单,数据传输快速。
[0080]其次,本发明实施例的DMA控制器工作时,不占用系统总线。DMA工作时,CPU可以通过系统总线访问其他从模块(除了 DMA工作传输涉及的Src和Dst),实现进程两线运行,并且可及时处理外设或其他模块的中断信号,使用方便。
[0081]本实施例的数据传输,采用“先读后写”的时序。
[0082]首先,读指针(Rd)指向源起始地址(Base_src_addr),读取数据进入DMA, DMA内部进行数据宽度转换(8/16/32bits),源地址增加量(SrC_addr_inC)增加;然后,写指针(Wr)指向目的起始地址(Base_dst_addr),写入存储器相应地址。[0083]本实施例的传输宽度转换参数(Dmac_width)表示源外设数据宽度与目的外设数据宽度的对应关系如下表1所示.[0084]本实施例的传输宽度转换参数用4Bits表示,低两位表示源外设的数据宽度,例如,表1中[1:0] = 00表示源外设的数据宽度(src_width)为8bits, [1:0] = 01表示src_width为16bits, [1:0] = 10表示src_width为32bits ;高两位表示目的外设的数据宽度,例如,表1中[3:2] = 00表示目的外设的数据宽度(dst_width)为8bits;[3:2] = 01表不 dst_width 为 16bits ; [3:2] = 10 表不 dst_width 为 32bits。
[0085]表1
[0086]
【权利要求】
1.一种控制数据传输的方法,应用于存储器直接访问控制器,包括: 接收CPU的配置信息,对所述配置信息进行解析,所述配置信息包括传输宽度转换参数; 从源外设读取数据,根据所述传输宽度转换参数将读取到的数据转换成相应的数据宽度后写入目的外设。
2.如权利要求1所述的方法,其特征在于: 所述从源外设读取数据是通过所述源外设与所述存储器直接访问控制器之间的接口实现的; 所述将数据写入目的外设是通过所述目的外设与所述存储器直接访问控制器之间的接口实现的。
3.如权利要求1所述的方法,其特征在于: 所述接收的配置信息还包括:源起始地址和目的起始地址; 所述传输宽度转换参数包括源外设数据宽度和目的外设所需的数据宽度; 所述从源外设读取数据,根据所述传输宽度转换参数将读取到的数据转换成相应的数据宽度后写入所述目的外设,包括:根据所述传输宽度转换参数,按照所述源外设的接口时序从所述源起始地址开始读取源外设数据宽度的数据,将读取到的数据转换成所述目的外设所需的数据宽度后,按照所述目的外设的接口时序,从所述目的起始地址开始写入所述目的外设。
4.如权利要求1-3任一项所述的方法,其特征在于: 所述源外设支持的数据宽度包括以下的任一种:8比特、16比特和32比特; 所述目的外设支持的数据宽度包括以下的任一种:8比特、16比特和32比特。
5.如权利要求1所述的方法,其特征在于: 所述传输宽度转换参数为O时,表示数据宽度从8bits转换为8bits ; 所述传输宽度转换参数为5时,表示数据宽度从16bits转换为16bits ; 所述传输宽度转换参数为a时,表示数据宽度从32bits转换为32bits ; 所述传输宽度转换参数为I时,表示数据宽度从16bits转换为8bits ; 所述传输宽度转换参数为2时,表示数据宽度从32bits转换为8bits ; 所述传输宽度转换参数为6时,表示数据宽度从32bits转换为16bits ; 所述传输宽度转换参数为4时,表示数据宽度从8bits转换为16bits ; 所述传输宽度转换参数为8时,表示数据宽度从8bits转换为32bits ; 所述传输宽度转换参数为9时,表示数据宽度从16bits转换为32bits。
6.一种存储器直接访问控制器,其特征在于,所述存储器直接访问控制器具有数据接口直接与源外设和目的外设连接,包括: 配置模块,用于接收CPU的配置信息,对所述配置信息进行解析,所述配置信息包括传输宽度转换参数; 控制模块,用于从源外设读取数据,根据所述传输宽度转换参数将读取到的数据转换成相应的数据宽度后写入目的外设。
7.如权利要求6所述的存储器直接访问控制器,其特征在于: 所述控制模块,从源外设读取数据是通过所述源外设与所述存储器直接访问控制器之间的接口实现的;将数据写入目的外设是通过所述目的外设与所述存储器直接访问控制器之间的接口实现的。
8.如权利要求6所述的存储器直接访问控制器,其特征在于: 所述配置模块,接收的配置信息还包括:源起始地址和目的起始地址;所述传输宽度转换参数包括源外设数据宽度和目的外设所需的数据宽度; 所述控制模块,具体用于根据所述传输宽度转换参数,按照所述源外设的接口时序从所述源起始地址开始读取源外设数据宽度的数据,将读取到的数据转换成所述目的外设所需的数据宽度后,按照所述目的外设的接口时序,从所述目的起始地址开始写入所述目的外设。
9.如权利要求6-8任一项所述的存储器直接访问控制器,其特征在于: 所述源外设支持的数据宽度包括以下的任一种:8比特、16比特和32比特; 所述目的外设支持的数据宽度包括以下的任一种:8比特、16比特和32比特。
10.如权利要求6所述的存储器直接访问控制器,其特征在于: 所述传输宽度转换参数为O时,表示数据宽度从8bits转换为8bits ; 所述传输宽度转换参 数为5时,表示数据宽度从16bits转换为16bits ; 所述传输宽度转换参数为a时,表示数据宽度从32bits转换为32bits ; 所述传输宽度转换参数为I时,表示数据宽度从16bits转换为8bits ; 所述传输宽度转换参数为2时,表示数据宽度从32bits转换为8bits ; 所述传输宽度转换参数为6时,表示数据宽度从32bits转换为16bits ; 所述传输宽度转换参数为4时,表示数据宽度从8bits转换为16bits ; 所述传输宽度转换参数为8时,表示数据宽度从8bits转换为32bits ; 所述传输宽度转换参数为9时,表示数据宽度从16bits转换为32bits。
【文档编号】G06F13/28GK104021099SQ201410276233
【公开日】2014年9月3日 申请日期:2014年6月19日 优先权日:2014年6月19日
【发明者】王震 申请人:大唐微电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1