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

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

Info

Publication number
CN104021099B
CN104021099B CN201410276233.4A CN201410276233A CN104021099B CN 104021099 B CN104021099 B CN 104021099B CN 201410276233 A CN201410276233 A CN 201410276233A CN 104021099 B CN104021099 B CN 104021099B
Authority
CN
China
Prior art keywords
data
width
peripheral hardware
transmission
conversion parameter
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.)
Active
Application number
CN201410276233.4A
Other languages
English (en)
Other versions
CN104021099A (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.)
Datang Microelectronics Technology Co Ltd
Original Assignee
Datang Microelectronics Technology Co Ltd
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 Datang Microelectronics Technology Co Ltd filed Critical Datang Microelectronics Technology Co Ltd
Priority to CN201410276233.4A priority Critical patent/CN104021099B/zh
Publication of CN104021099A publication Critical patent/CN104021099A/zh
Application granted granted Critical
Publication of CN104021099B publication Critical patent/CN104021099B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Bus Control (AREA)

Abstract

本发明提供一种控制数据传输的方法及DMA控制器,该方法包括:接收CPU的配置信息,对所述配置信息进行解析,所述配置信息包括传输宽度转换参数;从源外设读取数据,根据所述传输宽度转换参数将读取到的数据转换成相应的数据宽度后写入目的外设。本发明的DMA控制器采取的传输方式,为作用于存储器之间、存储器与外设之间、外设与外设之间直接交换数据,不执行CPU读写指令,且不需要经过CPU缓存,减少了中间环节,只要完成配置DMA控制器,所有读写时序全部由硬件执行,因此大大提高了传送数据的速率。

Description

一种控制数据传输的方法及DMA控制器
技术领域
本发明涉及集成电路领域,特别是涉及一种控制数据传输的方法及DMA(DirectMemory Access,存储器直接访问)控制器。
背景技术
随着互联网及电子产品的快速发展,含有音频、视频等大量数据的应用软件考验着硬件芯片的数据处理能力,大量数据的快速传输已成为当今芯片的重要性能指标。
相对于传统系统中的CPU直接传输数据方式、查询方式及中断方式,DMA控制器采取的传输方式,为作用于存储器之间、存储器与外设之间、外设与外设之间直接交换数据。不执行CPU读写指令,且不需要经过CPU缓存,减少了中间环节。只要完成配置DMA控制器,所有读写时序全部由硬件执行,因此大大提高了传送数据的速率。
如图1所示,为现有设计的DMA系统结构框图。CPU工作模式中:通过系统总线(SYS_BUS),CPU可以单独访问DMA控制器、源存储器或外设(Src)、目的存储器或外设(Dst)。DMA工作模式中:通过SYS_BUS,CPU配置DMA内部功能寄存器,包括传输长度、源起始地址、目的起始地址、传输方向、工作使能等。
使能打开后,DMA开始工作。首先,通过SYS_BUS,从源起始地址读出的数据送进DMA暂存,完成一次读操作。然后,DMA再将数据写入目的起始地址,完成一次写操作。同时,源地址、目的地址增加至下一次读、写操作的地址。依此,进行后续的从Src读出数据,并写入Dst的操作。直至所有数据全部传输完毕,DMA工作完毕,释放总线。
现有设计的DMA控制器,存在不同数据宽度存储器之间数据转换频繁、传输效率较低、耗时较长的技术缺点:
从设计原理上,现有设计的DMA控制器,由于设计简单,很少考虑数据宽度匹配的问题,所以要求源、目的传输数据宽度必须相等。针对在不同数据宽度的存储器或外设之间传输时,需要在系统或存储器接口模块中,增加数据转换或数据缓存的设计,导致系统复杂化,数据速度较慢等缺点。
此外,现有设计的DMA控制器工作时,会占有系统总线。此时,CPU无法通过系统总线访问其它从模块,只能等到DMA工作完毕后,才可操作。此时,CPU可能无法及时处理外设或其他模块的中断信号,在系统使用上具有一定的局限性。
发明内容
本发明要解决的技术问题是提供一种控制数据传输的方法及DMA控制器,以提高不同数据宽度之间的传输效率。
为了解决上述技术问题,本发明提供了一种控制数据传输的方法,应用于存储器直接访问控制器,包括:
接收CPU的配置信息,对所述配置信息进行解析,所述配置信息包括传输宽度转换参数;
从源外设读取数据,根据所述传输宽度转换参数将读取到的数据转换成相应的数据宽度后写入目的外设。
进一步地,上述方法还具有下面特点:
所述从源外设读取数据是通过所述源外设与所述存储器直接访问控制器之间的接口实现的;
所述将数据写入目的外设是通过所述目的外设与所述存储器直接访问控制器之间的接口实现的。
进一步地,上述方法还具有下面特点:
所述接收的配置信息还包括:源起始地址和目的起始地址;
所述传输宽度转换参数包括源外设数据宽度和目的外设所需的数据宽度;
所述从源外设读取数据,根据所述传输宽度转换参数将读取到的数据转换成相应的数据宽度后写入所述目的外设,包括:根据所述传输宽度转换参数,按照所述源外设的接口时序从所述源起始地址开始读取源外设数据宽度的数据,将读取到的数据转换成所述目的外设所需的数据宽度后,按照所述目的外设的接口时序,从所述目的起始地址开始写入所述目的外设。
进一步地,上述方法还具有下面特点:
所述源外设支持的数据宽度包括以下的任一种:8比特、16比特和32比特;
所述目的外设支持的数据宽度包括以下的任一种:8比特、16比特和32比特。
进一步地,上述方法还具有下面特点:
所述传输宽度转换参数为0时,表示数据宽度从8bits转换为8bits;
所述传输宽度转换参数为5时,表示数据宽度从16bits转换为16bits;
所述传输宽度转换参数为a时,表示数据宽度从32bits转换为32bits;
所述传输宽度转换参数为1时,表示数据宽度从16bits转换为8bits;
所述传输宽度转换参数为2时,表示数据宽度从32bits转换为8bits;
所述传输宽度转换参数为6时,表示数据宽度从32bits转换为16bits;
所述传输宽度转换参数为4时,表示数据宽度从8bits转换为16bits;
所述传输宽度转换参数为8时,表示数据宽度从8bits转换为32bits;
所述传输宽度转换参数为9时,表示数据宽度从16bits转换为32bits。
为了解决上述问题,本发明还提供了一种存储器直接访问控制器,其中,所述存储器直接访问控制器具有数据接口直接与源外设和目的外设连接,包括:
配置模块,用于接收CPU的配置信息,对所述配置信息进行解析,所述配置信息包括传输宽度转换参数;
控制模块,用于从源外设读取数据,根据所述传输宽度转换参数将读取到的数据转换成相应的数据宽度后写入目的外设。
进一步地,上述存储器直接访问控制器还具有下面特点:
所述控制模块,从源外设读取数据是通过所述源外设与所述存储器直接访问控制器之间的接口实现的;将数据写入目的外设是通过所述目的外设与所述存储器直接访问控制器之间的接口实现的。
进一步地,上述存储器直接访问控制器还具有下面特点:
所述配置模块,接收的配置信息还包括:源起始地址和目的起始地址;所述传输宽度转换参数包括源外设数据宽度和目的外设所需的数据宽度;
所述控制模块,具体用于根据所述传输宽度转换参数,按照所述源外设的接口时序从所述源起始地址开始读取源外设数据宽度的数据,将读取到的数据转换成所述目的外设所需的数据宽度后,按照所述目的外设的接口时序,从所述目的起始地址开始写入所述目的外设。
进一步地,上述存储器直接访问控制器还具有下面特点:
所述源外设支持的数据宽度包括以下的任一种:8比特、16比特和32比特;
所述目的外设支持的数据宽度包括以下的任一种:8比特、16比特和32比特。
进一步地,上述存储器直接访问控制器还具有下面特点:
所述传输宽度转换参数为0时,表示数据宽度从8bits转换为8bits;
所述传输宽度转换参数为5时,表示数据宽度从16bits转换为16bits;
所述传输宽度转换参数为a时,表示数据宽度从32bits转换为32bits;
所述传输宽度转换参数为1时,表示数据宽度从16bits转换为8bits;
所述传输宽度转换参数为2时,表示数据宽度从32bits转换为8bits;
所述传输宽度转换参数为6时,表示数据宽度从32bits转换为16bits;
所述传输宽度转换参数为4时,表示数据宽度从8bits转换为16bits;
所述传输宽度转换参数为8时,表示数据宽度从8bits转换为32bits;
所述传输宽度转换参数为9时,表示数据宽度从16bits转换为32bits。
综上,本发明提供一种控制数据传输的方法及DMA控制器,本发明的DMA控制器采取的传输方式,为作用于存储器之间、存储器与外设之间、外设与外设之间直接交换数据,不执行CPU读写指令,且不需要经过CPU缓存,减少了中间环节。只要完成配置DMA控制器,所有读写时序全部由硬件执行,因此大大提高了传送数据的速率。本发明可以处理不同宽度数据互通的问题,使之互通方便、传输速度较快、系统连接简单,且不占用系统总线。
附图说明
图1为现有设计的DMA系统结构框图;
图2为本发明实施例的DMA系统结构框图;
图3为本实施例的DMA控制器的框图;
图4为本发明实施例的DMA控制器的工作原理图;
图5为本发明实施例的一种控制数据传输的方法的流程图;
图6为本发明实施例的数据宽度传输:8—>8bits的仿真图;
图7为本发明实施例的数据宽度传输:16—>16bits的仿真图;
图8为本发明实施例的数据宽度传输:32—>32bits的仿真图;
图9为本发明实施例的数据宽度传输:16—>8bits的仿真图;
图10为本发明实施例的数据宽度传输:32—>8bits的仿真图;
图11为本发明实施例的数据宽度传输:32—>16bits的仿真图;
图12为本发明实施例的数据宽度传输:8—>16bits的仿真图;
图13为本发明实施例的数据宽度传输:8—>32bits的仿真图;
图14为本发明实施例的数据宽度传输:16—>32bits的仿真图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图2为本发明实施例的DMA系统结构框图。CPU工作模式中:通过系统总线(SYS_BUS),CPU也可以单独访问DMA控制器、源存储器或外设(Src)、目的存储器或外设(Dst)。Src和Dst均有一数据接口直接与DMA控制连接。DMA工作模式中:通过SYS_BUS,CPU也是先配置DMA内部功能寄存器,使能打开后,DMA开始工作。
图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)。
图4为本发明实施例的DMA控制器的工作原理图,CPU对Dma寄存器配置:传输长度(len),传输宽度转换参数(width),源起始地址(Base_src_addr),目的起始地址(Base_dst_addr),最后配置控制使能(en)完成后,Dma开始工作。
图5为本发明实施例的一种控制数据传输的方法的流程图,如图5所示,本实施例的方法包括以下步骤:
S11、接收CPU的配置信息,对所述配置信息进行解析,所述配置信息包括传输宽度转换参数;
S12、从源外设读取数据,根据所述传输宽度转换参数将读取到的数据转换成相应的数据宽度后写入目的外设。
其中,所述从源外设读取数据是通过所述源外设与所述存储器直接访问控制器之间的接口实现的;
所述将数据写入目的外设是通过所述目的外设与所述存储器直接访问控制器之间的接口实现的。
以现有技术相比,本发明实施例的方法具有以下优点:
首先,解决数据宽度匹配问题,支持数据宽度从Src到Dst的8/16/32bits之中的任意比特宽度互通。DMA工作时,遵循Src接口的时序,从源地址读出的数据(8/16/32bits)通过DMA内部将数据转换成Dst所需宽度(8/16/32bits),按照Dst接口时序,直接写入目的地址。硬件自动匹配宽度,转换时序,系统连接简单,数据传输快速。
其次,本发明实施例的DMA控制器工作时,不占用系统总线。DMA工作时,CPU可以通过系统总线访问其他从模块(除了DMA工作传输涉及的Src和Dst),实现进程两线运行,并且可及时处理外设或其他模块的中断信号,使用方便。
本实施例的数据传输,采用“先读后写”的时序。
首先,读指针(Rd)指向源起始地址(Base_src_addr),读取数据进入DMA,DMA内部进行数据宽度转换(8/16/32bits),源地址增加量(Src_addr_inc)增加;然后,写指针(Wr)指向目的起始地址(Base_dst_addr),写入存储器相应地址。
本实施例的传输宽度转换参数(Dmac_width)表示源外设数据宽度与目的外设数据宽度的对应关系如下表1所示.
本实施例的传输宽度转换参数用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。
表1
完成写操作之后,目的地址增加量(Dst_addr_inc)增加,下一次读操作,Rd指向源地址(Base_src_addr+Src_addr_inc);下一次写操作,Wr指向目的地址(Base_dst_addr+Dst_addr_inc),完成数据读写。
依此,后面每次数据传输Src_addr_inc和Dst_addr_inc都会递增。直到数据传输长度等于len,表示所有数据传输结束,Dma停止工作。
以下以几个具体实施例对本发明的方法进行详细的说明。
实施例一
图6为本发明实施例的数据宽度传输:8—>8bits的仿真图。配置信息:源起始地址Dmac_src_addr=32’h1000,目的起始地址Dmac_dst_addr=32’h2000,传输长度Dmac_len=“3”(表示传输4次),传输宽度转换参数Dmac_width=“0”(表示从源—>目的宽度为8—>8bits),当使能Dmac_en=“1”时,DMA开始工作。
源地址(Src_addr)从“1000”开始,当读信号(Src_rd)与读正确应答信号(rd_dack)都为“1”时,读出数据(Src_rd_data)“12”。读操作之后,目的地址(Dst_addr)从“2000”开始,写读信号(Dst_wr)与写正确应答信号(wr_dack)都为“1”时,写入数据(Dst_wr_data)“12”,且Src_addr、Dst_addr增加,至此完成一次读写。
此次读写各操作4次,传输4字节。数据传输完毕,结束标志信号Dmac_end置“1”,使能信号Dmac_en置“0”,DMA模块工作完毕。
本实施例中,DMA模块读、写操作,要保证源、目的模块接口的时序正确;并且需要“握手”机制,在数据读出之前,不允许发出下一次写操作。下面电路仿真波形,也遵循此说明。
实施例二
图7为本发明实施例的数据宽度传输:16—>16bits的仿真图。配置信息:Dmac_src_addr=32’h1000,Dmac_dst_addr=32’h2000,Dmac_len=“3”(传输4字节),Dmac_width=“5”(表示从源—>目的宽度为16—>16bits),当使能Dmac_en=“1”时,DMA开始工作。
Src_addr从“1000”开始,当Src_rd与rd_dack都为“1”时,Src_rd_data为“3412”。读操作之后,Dst_addr从“2000”开始,Dst_wr与wr_dack都为“1”时,写入数据Dst_wr_data为“3412”,且Src_addr、Dst_addr增加。至此完成一次读写。
此次读写各操作2次,传输4字节。数据传输完毕,结束标志信号Dmac_end置“1”,使能信号Dmac_en置“0”,DMA模块工作完毕。
实施例三
图8为本发明实施例的数据宽度传输:32—>32bits的仿真图。配置信息:Dmac_src_addr=32’h1000,Dmac_dst_addr=32’h2000,Dmac_len=“3”(传输4字节),Dmac_width=“a”(表示从源—>目的宽度为32—>32bits),当使能Dmac_en=“1”时,DMA开始工作。
Src_addr从“1000”开始,当Src_rd与rd_dack都为“1”时,Src_rd_data为“7856_3412”。读操作之后,Dst_addr从“2000”开始,Dst_wr与wr_dack都为“1”时,写入数据Dst_wr_data为“7856_3412”,且Src_addr、Dst_addr增加。至此完成一次读写。
此次读写各操作1次,传输4字节。数据传输完毕,结束标志信号Dmac_end置“1”,使能信号Dmac_en置“0”,DMA模块工作完毕。
实施例四
图9为本发明实施例的数据宽度传输:16—>8bits的仿真图。配置信息:Dmac_src_addr=32’h1000,Dmac_dst_addr=32’h2000,Dmac_len=“3”(传输4字节),Dmac_width=“1”(表示从源—>目的宽度为16—>8bits),当使能Dmac_en=“1”时,DMA开始工作。
16—>8bits传输时,从Src读出数据宽度为16bits,而写入Dst数据宽度为8bits,所以需要写2次,每次写8bits,写入Dst_addr。
Src_addr从“1000”开始,当Src_rd与rd_dack都为“1”时,Src_rd_data为“3412”。读操作之后,Dst_wr与wr_dack都为“1”时,将数据的[7:0]为“12”写入Dst_addr(从“2000”开始),Dst_wr_data为“12”。然后Src_addr不变,再读出“3412”,并将数据的[15:8]为“34”写入下一个Dst_addr(“2001”),Dst_wr_data为“34”,且Src_addr、Dst_addr增加。这样完成了一次数据转换。
此次读写各操作4次,传输4字节。数据传输完毕,结束标志信号Dmac_end置“1”,使能信号Dmac_en置“0”,DMA模块工作完毕。
实施例五
图10为本发明实施例的数据宽度传输:32—>8bits的仿真图。配置信息:Dmac_src_addr=32’h1000,Dmac_dst_addr=32’h2000,Dmac_len=“3”(传输4字节),Dmac_width=“2”(表示从源—>目的宽度为32—>8bits),当使能Dmac_en=“1”时,DMA开始工作。
32—>8bits传输时,从Src读出数据宽度为32bits,而写入Dst数据宽度为8bits,所以需要写4次,每次写8bits,写入Dst_addr。
Src_addr从“1000”开始,当Src_rd与rd_dack都为“1”时,Src_rd_data为“7856_3412”。读操作之后,Dst_wr与wr_dack都为“1”时,将数据“[7:0]”为“12”写入Dst_addr(从“2000”开始),Dst_wr_data为“12”。然后Src_addr不变,再读出“7856_3412”,并将数据“[15:7]”为“34”写入下一个Dst_addr(“2001”),Dst_wr_data为“34”。再读出“7856_3412”,并将数据“[23:15]”为“56”写入下一个Dst_addr(“2002”),Dst_wr_data为“56”。再读出“7856_3412”,并将数据“[31:24]”为“78”写入下一个Dst_addr(“2003”),Dst_wr_data为“78”。且Src_addr、Dst_addr增加。这样完成了一次数据转换。
此次读写各操作4次,传输4字节。数据传输完毕,结束标志信号Dmac_end置“1”,使能信号Dmac_en置“0”,DMA模块工作完毕。
实施例六
图11为本发明实施例的数据宽度传输:32—>16bits的仿真图。配置信息:Dmac_src_addr=32’h1000,Dmac_dst_addr=32’h2000,Dmac_len=“3”(传输4字节),Dmac_width=“6”(表示从源—>目的宽度为32—>16bits),当使能Dmac_en=“1”时,DMA开始工作。
32—>16bits传输时,从Src读出数据宽度为32bits,而写入Dst数据宽度为16bits,所以需要写2次,每次写16bits,写入Dst_addr。
Src_addr从“1000”开始,当Src_rd与rd_dack都为“1”时,Src_rd_data为“7856_3412”。读操作之后,Dst_wr与wr_dack都为“1”时,将数据“[15:0]”为“3412”写入Dst_addr(从“2000”开始),Dst_wr_data为“3412”。然后Src_addr不变,再读出“7856_3412”,并将数据“[31:16]”为“7856”写入下一个Dst_addr(“2001”),Dst_wr_data为“7856”,且Src_addr、Dst_addr增加。这样完成了一次数据转换。
此次读写各操作2次,传输4字节。数据传输完毕,结束标志信号Dmac_end置“1”,使能信号Dmac_en置“0”,DMA模块工作完毕。
实施例七
图12为本发明实施例的数据宽度传输:8—>16bits的仿真图。配置信息:Dmac_src_addr=32’h1000,Dmac_dst_addr=32’h2000,Dmac_len=“3”(传输4字节),Dmac_width=“4”(表示从源—>目的宽度为8—>16bits),当使能Dmac_en=“1”时,DMA开始工作。
8—>16bits传输时,从Src读出数据宽度为8bits,而写入Dst数据宽度为16bits,所以需要读2次,每次读8bits,一次写入Dst_addr为16bits。`
Src_addr从“1000”开始,当Src_rd与rd_dack都为“1”时,Src_rd_data为“12”。读操作之后,Dst_wr与wr_dack都为“1”时,虽然此时将数据“12”放在[7:0],写入Dst_addr(从“2000”开始),Dst_wr_data为“12”。但之后Src_addr增加为“1001”,再读出“34”放在[15:8],并将数据“3412”一并写入Dst_addr(“2000”)”,Dst_wr_data为“3412”,且Src_addr、Dst_addr增加。这样完成了一次数据转换。
此次读写各操作4次,传输4字节。数据传输完毕,结束标志信号Dmac_end置“1”,使能信号Dmac_en置“0”,DMA模块工作完毕。
实施例八
图13为本发明实施例的数据宽度传输:8—>32bits的仿真图。配置信息:Dmac_src_addr=32’h1000,Dmac_dst_addr=32’h2000,Dmac_len=“3”(传输4字节),Dmac_width=“8”(表示从源—>目的宽度为8—>32bits),当使能Dmac_en=“1”时,DMA开始工作。
8—>32bits传输时,从Src读出数据宽度为8bits,而写入Dst数据宽度为32bits,所以需要读4次,每次读8bits,一次写入Dst_addr为32bits。
Src_addr从“1000”开始,当Src_rd与rd_dack都为“1”时,Src_rd_data为“12”。读操作之后,Dst_wr与wr_dack都为“1”时,虽然此时将数据“12”放在[7:0],写入Dst_addr(从“2000”开始),Dst_wr_data为“12”。之后Src_addr增加为“1001”,再读出“34”放在[15:8],并将数据“3412”写入Dst_addr(“2000”)”,Dst_wr_data为“3412”。之后Src_addr增加为“1002”,再读出“56”放在[23:16],并将数据“56_3412”写入Dst_addr(“2000”)”,Dst_wr_data为“56_3412”。之后Src_addr增加为“1003”,再读出“78”放在[31:24],并将数据“7856_3412”一并写入Dst_addr(“2000”)”,Dst_wr_data为“7856_3412”,且Src_addr、Dst_addr增加。这样完成了一次数据转换。
此次读写各操作4次,传输4字节。数据传输完毕,结束标志信号Dmac_end置“1”,使能信号Dmac_en置“0”,DMA模块工作完毕。
实施例九
图14为本发明实施例的数据宽度传输:16—>32bits的仿真图。配置信息:Dmac_src_addr=32’h1000,Dmac_dst_addr=32’h2000,Dmac_len=“3”(传输4字节),Dmac_width=“9”(表示从源—>目的宽度为16—>32bits),当使能Dmac_en=“1”时,DMA开始工作。
16—>32bits传输时,从Src读出数据宽度为16bits,而写入Dst数据宽度为32bits,所以需要读2次,每次读16bits,一次写入Dst_addr为32bits。
Src_addr从“1000”开始,当Src_rd与rd_dack都为“1”时,Src_rd_data为“3412”。读操作之后,Dst_wr与wr_dack都为“1”时,虽然此时将数据“3412”放在[15:0],写入Dst_addr(从“2000”开始),Dst_wr_data为“3412”。但之后Src_addr增加为“1002”,再读出“7856”放在[31:16],并将数据“7856_3412”一并写入Dst_addr(“2000”)”,Dst_wr_data为“7856_3412”,且Src_addr、Dst_addr增加,这样完成了一次数据转换。
此次读写各操作2次,传输4字节。数据传输完毕,结束标志信号Dmac_end置“1”,使能信号Dmac_en置“0”,DMA模块工作完毕。
本发明实施例可以解决数据宽度匹配问题,例如,支持数据宽度从Src到Dst的8/16/32bits之中的任意比特宽度互通。硬件自动匹配宽度,转换时序,系统连接简单,数据传输快速。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上仅为本发明的优选实施例,当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (10)

1.一种控制数据传输的方法,应用于存储器直接访问控制器,存储器直接访问控制器工作时,不占用系统总线;包括:
接收CPU的配置信息,对所述配置信息进行解析,所述配置信息包括传输宽度转换参数;
从源外设读取数据,根据所述传输宽度转换参数将读取到的数据转换成相应的数据宽度后写入目的外设;
所述从源外设读取数据,根据所述传输宽度转换参数将读取到的数据转换成相应的数据宽度后写入所述目的外设,包括:
根据所述传输宽度转换参数,按照所述源外设的接口时序从源起始地址开始读取源外设数据宽度的数据,将读取到的数据转换成所述目的外设所需的数据宽度后,按照所述目的外设的接口时序,从所述目的起始地址开始写入所述目的外设;
所述传输宽度转换参数表示源外设数据宽度与目的外设数据宽度的对应关系。
2.如权利要求1所述的方法,其特征在于:
所述从源外设读取数据是通过所述源外设与所述存储器直接访问控制器之间的接口实现的;
所述将数据写入目的外设是通过所述目的外设与所述存储器直接访问控制器之间的接口实现的。
3.如权利要求1所述的方法,其特征在于:
所述接收的配置信息还包括:源起始地址和目的起始地址;
所述传输宽度转换参数包括源外设数据宽度和目的外设所需的数据宽度。
4.如权利要求1-3任一项所述的方法,其特征在于:
所述源外设支持的数据宽度包括以下的任一种:8比特、16比特和32比特;
所述目的外设支持的数据宽度包括以下的任一种:8比特、16比特和32比特。
5.如权利要求1所述的方法,其特征在于:
所述传输宽度转换参数为0时,表示数据宽度从8bits转换为8bits;
所述传输宽度转换参数为5时,表示数据宽度从16bits转换为16bits;
所述传输宽度转换参数为a时,表示数据宽度从32bits转换为32bits;
所述传输宽度转换参数为1时,表示数据宽度从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所述的存储器直接访问控制器,其特征在于:
所述传输宽度转换参数为0时,表示数据宽度从8bits转换为8bits;
所述传输宽度转换参数为5时,表示数据宽度从16bits转换为16bits;
所述传输宽度转换参数为a时,表示数据宽度从32bits转换为32bits;
所述传输宽度转换参数为1时,表示数据宽度从16bits转换为8bits;
所述传输宽度转换参数为2时,表示数据宽度从32bits转换为8bits;
所述传输宽度转换参数为6时,表示数据宽度从32bits转换为16bits;
所述传输宽度转换参数为4时,表示数据宽度从8bits转换为16bits;
所述传输宽度转换参数为8时,表示数据宽度从8bits转换为32bits;
所述传输宽度转换参数为9时,表示数据宽度从16bits转换为32bits。
CN201410276233.4A 2014-06-19 2014-06-19 一种控制数据传输的方法及dma控制器 Active CN104021099B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410276233.4A CN104021099B (zh) 2014-06-19 2014-06-19 一种控制数据传输的方法及dma控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410276233.4A CN104021099B (zh) 2014-06-19 2014-06-19 一种控制数据传输的方法及dma控制器

Publications (2)

Publication Number Publication Date
CN104021099A CN104021099A (zh) 2014-09-03
CN104021099B true CN104021099B (zh) 2017-11-17

Family

ID=51437860

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410276233.4A Active CN104021099B (zh) 2014-06-19 2014-06-19 一种控制数据传输的方法及dma控制器

Country Status (1)

Country Link
CN (1) CN104021099B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105183684B (zh) * 2015-09-09 2019-01-25 成都思鸿维科技有限责任公司 数据处理装置、方法及系统
CN105786735A (zh) * 2016-02-19 2016-07-20 大唐微电子技术有限公司 一种直接内存存取dma控制器及数据访问方法
CN107844438B (zh) * 2017-12-07 2023-06-16 合肥国为电子有限公司 用于地震仪主控站cpu与外设数据传输的桥接器及方法
CN107943727B (zh) * 2017-12-08 2021-02-09 深圳市德赛微电子技术有限公司 一种高效dma控制器
CN110765044B (zh) * 2018-07-26 2021-02-23 展讯通信(上海)有限公司 数据包传输装置及系统
CN113032300A (zh) * 2021-03-23 2021-06-25 安谋科技(中国)有限公司 数据的传输控制方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1700196A (zh) * 2005-06-06 2005-11-23 北京中星微电子有限公司 通过直接存储器访问控制器传输数据的系统及方法
CN101426015A (zh) * 2008-12-12 2009-05-06 北京航空航天大学 面向多媒体传输的IEEE1394/GbE变换器及数据采集系统
CN101556565A (zh) * 2009-01-22 2009-10-14 杭州中天微系统有限公司 嵌入式处理器的片上高性能dma
CN102135946A (zh) * 2010-01-27 2011-07-27 中兴通讯股份有限公司 一种数据处理方法和装置
CN102169467A (zh) * 2010-06-22 2011-08-31 上海盈方微电子有限公司 一种离散式外设dma传输方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100449721B1 (ko) * 2002-05-20 2004-09-22 삼성전자주식회사 서로 다른 데이터 버스 폭을 갖는 장치들을 위한인터페이스 및 이를 이용한 데이터 전송방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1700196A (zh) * 2005-06-06 2005-11-23 北京中星微电子有限公司 通过直接存储器访问控制器传输数据的系统及方法
CN101426015A (zh) * 2008-12-12 2009-05-06 北京航空航天大学 面向多媒体传输的IEEE1394/GbE变换器及数据采集系统
CN101556565A (zh) * 2009-01-22 2009-10-14 杭州中天微系统有限公司 嵌入式处理器的片上高性能dma
CN102135946A (zh) * 2010-01-27 2011-07-27 中兴通讯股份有限公司 一种数据处理方法和装置
CN102169467A (zh) * 2010-06-22 2011-08-31 上海盈方微电子有限公司 一种离散式外设dma传输方法和系统

Also Published As

Publication number Publication date
CN104021099A (zh) 2014-09-03

Similar Documents

Publication Publication Date Title
CN104021099B (zh) 一种控制数据传输的方法及dma控制器
US9792072B2 (en) Embedded multimedia card (eMMC), host controlling eMMC, and method operating eMMC system
US8266369B2 (en) Flash memory interface
KR101105489B1 (ko) Nand 플래시 메모리의 커맨드 기반 제어
CN103366794B (zh) 用于减少接脚数内存总线接口的装置及方法
CN106951388A (zh) 一种基于PCIe的DMA数据传输方法及系统
US20110016267A1 (en) Low-Power USB Flash Card Reader Using Bulk-Pipe Streaming with UAS Command Re-Ordering and Channel Separation
US20140269088A1 (en) System and method of reading data from memory concurrently with sending write data to the memory
GB2430512A (en) Controller for NAND flash memory
US9606928B2 (en) Memory system
CN100373388C (zh) 一种快速生成逻辑电路的方法
US10133497B1 (en) SPI command censoring method and apparatus
US20100191901A1 (en) Non-volatile storage device, host device, non-volatile storage system, data recording method, and program
CN102591783A (zh) 可编程存储器控制器
CN108304334B (zh) 应用处理器和包括中断控制器的集成电路
US20150046616A1 (en) Peripheral registers with flexible data width
CN102567272B (zh) 一种提高spi接口电路工作频率的方法
CN102968396B (zh) 从Flash芯片到SRAM芯片的专用数据传输模块
CN113849433A (zh) 一种总线控制器的执行方法、装置、总线控制器、计算机设备和存储介质
Gaikwad et al. Verification of AMBA AXI on-chip communication protocol
CN102789424B (zh) 基于fpga的外扩ddr2的读写方法及基于fpga的外扩ddr2颗粒存储器
CN112256331B (zh) 虚拟机指令解析加速方法、装置和计算机存储介质
CN101261611A (zh) 一种外围设备间的数据传输装置和传输方法
CN107608927B (zh) 一种支持全功能的lpc总线主机端口的设计方法
TWI734150B (zh) 記憶體介面電路、記憶體儲存裝置及訊號產生方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200730

Address after: 2505 COFCO Plaza, No.2, nanmenwai street, Nankai District, Tianjin

Patentee after: Xin Xin finance leasing (Tianjin) Co.,Ltd.

Address before: 100094 No. 6 Yongjia North Road, Beijing, Haidian District

Patentee before: DATANG MICROELECTRONICS TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211025

Address after: 100094 No. 6 Yongjia North Road, Beijing, Haidian District

Patentee after: DATANG MICROELECTRONICS TECHNOLOGY Co.,Ltd.

Address before: 300110 2505 COFCO Plaza, No. 2, nanmenwai street, Nankai District, Tianjin

Patentee before: Xin Xin finance leasing (Tianjin) Co.,Ltd.