CN101777031B - 直接存储器存取控制器以及数据传输方法 - Google Patents

直接存储器存取控制器以及数据传输方法 Download PDF

Info

Publication number
CN101777031B
CN101777031B CN2009100001732A CN200910000173A CN101777031B CN 101777031 B CN101777031 B CN 101777031B CN 2009100001732 A CN2009100001732 A CN 2009100001732A CN 200910000173 A CN200910000173 A CN 200910000173A CN 101777031 B CN101777031 B CN 101777031B
Authority
CN
China
Prior art keywords
data
buffer
source
saltus step
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.)
Expired - Fee Related
Application number
CN2009100001732A
Other languages
English (en)
Other versions
CN101777031A (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.)
Sanechips Technology Co Ltd
Original Assignee
ZTE 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 ZTE Corp filed Critical ZTE Corp
Priority to CN2009100001732A priority Critical patent/CN101777031B/zh
Publication of CN101777031A publication Critical patent/CN101777031A/zh
Application granted granted Critical
Publication of CN101777031B publication Critical patent/CN101777031B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)

Abstract

本发明公开了一种DAMC和数据传输方法,其中,该DMAC包括:读取器,用于响应于来自外部的传输请求,获取与传输请求对应的源地址,并从源地址对应的设备中读取数据,其中,数据包括多个数据块;缓存器,包括第一缓存器和第二缓存器,其中,第一缓存器和第二缓存器用于交替存储多个数据块;发射器,用于按照交替存储的顺序从缓存模块中依次获取并发送多个数据块。借助于本发明,通过在DMAC的读取器和发射器之间设置第一缓存器和第二缓存器,能够在第一缓存器和第二缓存器中交替地存入数据,并且能够实现并行的读取和发送数据的操作,能够提高数据传输的效率,从而能够解决相关技术中存在的DMA数据传输速度慢的问题。

Description

直接存储器存取控制器以及数据传输方法
技术领域
本发明涉及通信领域,具体地,涉及一种直接存储器存取控制器以及数据传输方法。
背景技术
目前,大规模复杂控制芯片设计主要采用的片上系统(Systemon Chip,简称为SoC)技术,该技术通过互连总线结构将控制器、存储器、各种特殊处理设备连接成为一个互相协作的整体系统,从而形成特定的具有复杂功能的芯片。
直接存储器存取(Direct Memory Access,简称为DMA)控制器(DMA Controller,简称为DMAC)是SoC系统中必不可少的部件,其主要在系统中进行一定规模数据块的传输(或称为搬运)工作,从而释放SOC系统中控制器的负担,提高SOC系统整体性能。
传统的DMAC多采用串行工作的原理,即,一次DMA数据传输操作包括:首先进行读数据操作,将一段数据读入DMAC内部的缓存器中,然后再将该段数据从缓存器中写出到相关设备。这样,一次DMA数据传输操作的时间总和为读数据时间和写数据时间的总和。可见,DMAC的串行工作方式所需的数据传输时间较长、传输速度慢。
在相关技术中,为了解决DMAC的串行工作方式所需的数据传输时间较长的问题,采用了增加DMA的总线接口的个数的方法,这种方法能够提高DMA的数据读写效率,但是,在一定程度上增加了设计和使用的复杂性。
此外,在相关技术中,DMAC进行数据传输时,能够实现的数据辅助处理功能有限。目前,DMA数据传输大多采用一维搬运方式,即,设置好搬运的起始地址和终止地址,当DMA传输启动后,根据设置的地址范围、按照顺序依次对数据进行搬运,所搬运的数据一般为地址范围内的连续数据块。目前,针对图像数据的搬运出现了二维传输的方式,即,先对一行数据进行搬运,当该行数据搬运结束后,按照设置好的参数直接跳跃到下一行的起始地址进行搬运,直到搬运完全部图像数据。但是,这种二维搬运仅仅实现了二维图像的搬运工作,却不能实现图像处理中的其它辅助功能,诸如对图像数据进行采样、翻转、YUV分量打包/平面分解等图像加速处理的工作。
由此可见,在相关技术中存在DMA数据传输速度慢、实现的数据辅助处理功能有限的问题。
发明内容
考虑到相关技术中存在DMA数据传输速度慢、实现的数据辅助处理功能有限的问题而提出本发明,为此,本发明的主要目的在于提供一种改进的直接存储器存取控制器以及数据传输方法,以解决相关技术中的上述问题至少之一。
为了达到上述目的,根据本发明的一个方面,提供了一种直接存储器存取控制器即DMAC。
根据本发明的DMAC包括:读取器,用于响应于来自外部的传输请求,获取与传输请求对应的源地址,并从源地址对应的设备中读取数据,其中,数据包括多个数据块;缓存器,包括第一缓存器和第二缓存器,其中,第一缓存器和第二缓存器用于交替存储多个数据块;发射器,用于按照交替存储的顺序从缓存模块中依次获取并发送多个数据块。
优选地,该DMAC还包括配置器和存储器,其中,配置器,用于响应于传输请求,获取预存的与传输请求对应的配置信息,将配置信息发送到存储器;存储器,用于存储来自配置器的配置信息;其中,配置信息包括源地址、目的地址,并且还包括以下至少之一:源行跳变参数、源列跳变参数、源行计数参数、源列计数参数、源控制参数、目的行跳变参数、目的列跳变参数、目的行计数参数、目的列计数参数、目的控制参数。
优选地,上述缓存器还包括:写入位置选择模块,用于根据数据的大小、宽度和源行跳变参数确定第一存储位置,并在第一存储位置存储数据块,其中,第一存储位置用于指示在第一缓存器或第二缓存器中存储数据块的位置;读出位置选择模块,用于根据数据的大小、宽度和目的行跳变参数确定第二存储位置,并从第二存储位置读出数据块,其中,第二存储位置用于指示从第一缓存器或第二缓存器中读出数据块的位置。
根据本发明的另一个方面,提供了一种数据传输方法,用于直接存储器存取控制器即DMAC进行数据传输。
根据本发明的数据传输方法包括:接收来自外部的传输请求;获取传输请求对应的源地址,并从源地址对应的设备中读取数据,其中,数据包括多个数据块;在第一缓存器和第二缓存器中交替存储多个数据块,并按照交替存储的顺序依次读取并发送多个数据块。
优选地,上述交替存储多个数据块,并按照交替存储的顺序依次读取并发送多个数据块的操作具体包括:在当前时钟沿,将当前数据块存入第一缓存器,并且如果第二缓存器非空,则读取第二缓存器中存储的数据块;在下一时钟沿,将下一数据块存入第二缓存器,并且如果第一缓存器非空,则读取第一缓存器中存储的数据块。
优选地,在接收传输请求之后,该方法还包括:根据传输请求,获取预存的与传输请求相对应的配置信息,其中,配置信息中包括源行跳变参数、源列跳变参数、源行计数参数、源列计数参数、源控制参数、目的行跳变参数、目的列跳变参数、目的行计数参数、目的列计数参数、目的控制参数、源地址、目的地址。
优选地,该方法还包括:根据源行跳变参数、源列跳变参数、源行计数参数、源列计数参数、源控制参数从源地址对应的设备中读取数据;根据目的行跳变参数、目的列跳变参数、目的行计数参数、目的列计数参数、目的控制参数将数据发送到目的地址对应的设备。
优选地,在对数据块进行存储前,该方法还包括:对于多个数据块中的每个数据块,根据数据的大小、宽度和源行跳变参数确定第一存储位置,其中,第一存储位置用于指示存储数据块的位置;在第一存储位置上存储数据块。
优选地,依次将数据的多个数据块发送到DMAC存储的目的地址对应的设备的操作还包括:对于多个数据块中的每个数据块,根据数据的大小、宽度和目的行跳变参数确定第二存储位置,其中,第二存储位置用于指示读出数据块的位置;获取传输请求对应的目的地址,从第二存储位置读取数据块,并将读取的数据块发送到目的地址对应的设备。
优选地,该方法还包括:源行跳变参数为1时,使用总线突发模式读取数据,在行跳变参数不为1时,使用总线单独模式读取数据;目的行跳变参数为1时,使用总线突发模式发送数据,在目的行跳变参数不为1时,使用总线单独模式发送数据。
借助于本发明的上述技术方案,通过在直接存储器存取控制器的读取器和发射器之间设置第一缓存器和第二缓存器,能够在第一缓存器和第二缓存器中交替地存入数据,并且能够实现并行的读取和发送数据的操作,能够提高数据传输的效率,从而能够解决相关技术中存在的DMA数据传输速度慢的问题。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是据本发明装置实施例的DMAC的结构框图;
图2是根据本发明装置实施例的DMAC的优选结构框图;
图3是根据本发明方法实施例的数据传输方法的流程图;
图4是根据本发明装置实施例的DMAC具体实现的结构框图;
图5是根据本发明实施例的配置信息实现数据翻转的处理示意图;
图6是根据本发明装置实施例的DMAC的FIFO的存储结构示意图;
图7是使用如图5所示存储结构进行图像数据平面化处理的示意图。
具体实施方式
功能概述
考虑到相关技术中存在的DMA数据传输速度慢、实现的数据辅助处理功能有限的问题,本发明实施例提供了一种改进的DMAC以及数据传输方法,在改进的DMAC中,在DMAC的读取器和发射器之间设置第一缓存器和第二缓存器,并在第一缓存器和第二缓存器中交替地存入数据(即,通过乒乓操作进行存储),能够实现并行的读取和发送数据的操作;此外,在本发明的实施例中,还设置了一组配置信息,根据这组配置信息DMAC能够实现对数据传输规模的控制、实现对诸如图像数据的数据辅助处理功能。
需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可以相互结合,均在本发明的保护范围之内。
下面结合附图对本发明的实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
装置实施例
根据本发明的实施例,首先提供了一种DMAC。图1示出了根据本发明装置实施例的DMAC的结构,如图1所示,根据本发明装置实施例的DMAC包括:读取器1、缓存器3、发射器5。下面详细说明上述构成部分的功能。
读取器1,用于响应于来自外部的传输请求,获取与传输请求对应的源地址,并从源地址对应的设备中读取数据,这里的数据包括多个数据块。
缓存器3,包括第一缓存器31和第二缓存器33,第一缓存器31和第二缓存器33均连接至读取器1,其中,第一缓存器31和第二缓存器33用于交替存储多个数据块。
发射器5,连接至第一缓存器31和第二缓存器33,用于按照交替存储的顺序从缓存模块中依次获取并发送多个数据块。
通过本实施例的技术方案,在DMAC的读取器和发射器之间设置第一缓存器和第二缓存器,并在第一缓存器和第二缓存器中交替地存入数据,能够实现并行地读取和发送数据的操作。
图2示出了根据本发明装置实施例的DMAC的优选结构,如图2所示,根据本发明装置实施例的DMAC的优选结构包括:读取器1、缓存器3、发射器5、配置器2和存储器4,其中,缓存器3还包括写入位置选择模块35和读出位置选择模块37,需要说明的是,读取器1、缓存器3、发射器5与图1中相应模块的功能类似,在下文中,相似的功能不再赘述。
配置器2,用于响应于传输请求,获取预存的与传输请求对应的配置信息,将配置信息发送到存储器4;存储器4连接至配置器2、读取器1和发射器5,用于存储来自配置器2的配置信息。
其中,配置信息包括:源端配置信息(源行跳变参数(Src_XMODIFY)、源列跳变参数(Src_YMODIFY)、源行计数参数(Src_XCOUNT)、源列计数参数(Src_YCOUNT)、源控制参数(Src_CONTROL)、源地址(Src_ADDR))、目的端配置信息(目的行跳变参数(Dest_XMODIFY)、目的列跳变参数(Dest_YMODIFY)、目的行计数参数(Dest_XCOUNT)、目的列计数参数(Dest_YCOUNT)、目的控制参数(Dest_CONTROL)、目的地址(Dest_ADDR))。
与相关技术相比,本发明实施例在配置信息中新增加了四个MODIFY参数,即,Src_XMODIFY、Src_YMODIFY、Dest_XMODIFY、Dest_YMODIFY。其中,Src_XMODIFY和Dest_XMODIFY主要记录在行方向上搬运数据时地址的跳变值、以及用于指示数据搬运的模式,Src_YMODIFY和Dest_YMODIFY主要记录在列方向上搬运数据时地址的跳变值;优选地,如果Src_XMODIFY和Dest_XMODIFY为1,则表明以地址连续自增的方式读取数据,可以用总线突发模式(burst)对数据进行搬运,否则,表明以地址跳跃自增的方式读取数据,并且按照Src_XMODIFY或Dest_XMODIFY指定的大小对地址进行跳跃自增,用总线单独模式(single)进行数据的搬运;与相关技术相比,本实施例采用XMODIFY参数(Src_XMODIFY和/或Dest_XMODIFY)来指示数据搬运的方式,能够更加灵活地控制数据搬运。
此外,Src_XCOUNT和Dest_XCOUNT主要记录在行方向上搬运数据的个数,Src_YCOUNT和Dest_YCOUNT主要记录在列方向上搬运数据的个数,Src_CONTROL和Dest_CONTROL中包含诸如传输位宽的传输控制信息,Src_ADDR用于记录读取数据的源端设备的地址,Dest_ADDR用于记录发送数据的目的端设备的地址。
读取器1还用于从存储器4中获取源端配置信息中的Src_ADDR,从Src_ADDR对应的设备中读取数据,并且,在Src_XMODIFY为1时,读取器1使用总线突发模式读取数据,在Src_XMODIFY参数不为1时,使用总线单独模式读取数据。
缓存器3还可以包括:写入位置选择模块35和读出位置选择模块37;其中,写入位置选择模块35,连接至读取器1、第一缓存器31和第二缓存器33、存储器4,用于根据数据的大小、宽度和Src_XMODIFY确定在第一缓存器或第二缓存器中存储数据块的位置,并在该位置对数据块进行缓存;读出位置选择模块37,连接至第一缓存器31、第二缓存器33、存储器4和发射器5,用于根据数据的大小、宽度和Dest_XCOUNT确定从第一缓存器或第二缓存器中读出数据块的位置,并从该位置读出数据块。
发射器5还用于从存储器4中获取与传输请求对应的目的端配置信息中的Dest_ADDR,并将数据发送到Dest_ADDR对应的设备,并且,在Dest_XMODIFY为1时,发射器5使用总线突发模式发送数据,在Dest_XMODIFY不为1时,发射器5使用总线单独模式发送数据。
在本实施例提供的DMAC优选结构中,在DMAC的读取器和发射器之间设置第一缓存器和第二缓存器,并在第一缓存器和第二缓存器中交替地存入数据,能够实现并行地读取和发送数据的操作;并且,通过设置配置信息中的MODIFY参数(即,Src_XMODIFY、Src_YMODIFY、Dest_XMODIFY、Dest_YMODIFY),还能够实现对数据传输规模的控制、实现对数据的辅助处理功能。
方法实施例
根据本发明的实施例,还提供了一种数据传输方法,该方法可以通过上述装置实施例提供的DMAC来实现。
图3示出了根据本发明方法实施例的数据传输方法的流程,如图3所示,根据本发明方法实施例的数据传输方法包括如下处理过程(步骤S302至步骤S306):
步骤S302,接收来自外部的传输请求;
步骤S304,获取传输请求对应的源地址,并从Src_ADDR对应的设备中读取数据,其中,数据包括多个数据块;
步骤S306,在第一缓存器和第二缓存器中交替存储多个数据块,并按照交替存储的顺序依次读取并发送多个数据块。
下面详细说明上述处理过程的细节。
(一)步骤S302
在步骤S302中,DMAC接收到的传输请求可以是由外部设备通过硬连线以信号形式输入的传输请求,也可以是由外部的软件配置通过指令形式发送的传输请求。
(二)步骤S304
在接收到传输请求之后,DMAC获取预存的与传输请求相对应的配置信息,其中,配置信息中包括:源端配置信息(Src_XMODIFY、Src_YMODIFY、Src_XCOUNT、Src_YCOUNT、Src_CONTROL、Src_ADDR)、目的端配置信息(Dest_XMODIFY、Dest_YMODIFY、Dest_XCOUNT、Dest_YCOUNT、Dest_CONTROL、Dest_ADDR)。
DMAC从源地址对应的设备中读取数据,该数据可以是包括多个数据块,也可以是一维数据或二维数据,同时还可以是诸如图像数据的多种数据形式的数据。
优选地,读取器根据源端配置信息从Src_ADDR对应的设备中读取数据,如果Src_XMODIFY为1,读取器可以使用总线突发模式读取数据,如果Src_XMODIFY不为1,读取器可以使用总线单独模式读取数据。
(三)步骤S306
步骤S306优选地可以包括以下的步骤(1)和步骤(2):
步骤(1)DMAC的读取器在当前时钟沿,如果第一缓存器为空,则将当读取到的数据块存入第一缓存器,并且如果第二缓存器非空,则发射器读取并发送第二缓存器中存储的数据块。
步骤(2)在下一时钟沿,如果第二存储器为空,读取器将读取的下一数据块存入第二缓存器,并且如果第一缓存器非空,则发生器读取并发送第一缓存器中存储的数据块。
依次执行步骤(1)和步骤(2),直至读取和发送完需要传输的全部数据。
优选地,在将读取的数据存入第一缓存器或第二缓存器之前,可以进行如下操作:
(1)对于多个数据块中的每个数据块,根据数据的大小、宽度和Src_XMODIFY确定用于指示在第一缓存器或第二缓存器中存储数据块的位置,并在该位置上存储数据块。
(2)对于多个数据块中的每个数据块,根据数据的大小、宽度和Dest_XMODIFY确定读出数据块的位置,并从该位置读取数据块,获取传输请求对应的目的地址,将读取的数据块发送到目的地址对应的设备。
此外,发射器可以根据目的端配置信息向目的地址对应的设备发送数据;如果Dest_XMODIFY为1,发射器可以使用总线突发模式发送数据,如果Dest_XMODIFY不为1,发射器可以使用总线单独模式发送数据。
通过本实施例提供的技术方案,通过第一缓存器和第二缓存器中交替地存入数据(即,通过乒乓操作进行存储),能够实现并行的读取和发送数据的操作,能够提高数据传输的效率。
实例
基于以上的描述,图4示出了根据本发明装置实施例的DMAC具体实现的结构,通过该DMAC能够实现如图3所示的数据传输方法。
如图4所示,该DMAC包括一个逻辑选择通道和一个物理通道。
其中,逻辑选择通道(对应于图2中的配置器2)包括逻辑通道组301(其中包括16个逻辑通道,即,逻辑通道1、逻辑通道2、......、逻辑通道16)、通道仲裁模块302、以及逻辑通道优先级模块303,逻辑通道组301、通道仲裁模块302、以及逻辑通道优先级模块303之间相互连接;其中,每个逻辑通道都包括一个负责传输和控制的寄存器组(未在图4中示出),这些逻辑通道通过高级外设总线(Advanced Periphral Bus,简称为APB)接口进行配置。
物理通道包括读状态机304(Receive Finite State Machine,简称为RCV FSM)(对应于图1中的读取器1)、写入位置选择电路305(对应于图2中的写入位置选择模块35)、先进先出(First InputFirst Output,简称为FIFO)缓存器1、FIFO 2(分别对应于图1或图2中的第一缓存器31和第二缓存器33)、读出位置选择电路306(对应于图2中的读出位置选择模块)、写状态机307(Send FiniteState Machine,简称为SND FSM)(对应于图1或图2中的发射器5)、以及用于存储配置信息的寄存器组308(对应于图2中的存储器4)(其中包括用于存储源端配置信息的源端寄存器组308-1和用于存储目的端配置信息的目的端寄存器组308-2),其中,RCV FSM 304与写入位置选择电路305之间串联,写入位置选择电路305和读出位置选择电路306位于FIFO 1和FIFO 2的两端、并且均与FIFO 1和FIFO 2并联,读出位置选择电路306与SND FSM 307之间串联,寄存器组308连接到通道仲裁模块302、RCV FSM 304、写入位置选择电路305、读出位置选择电路306、以及SND FSM 307。图4中各部分的功能与图1或图2中相应部分的功能类似,这里不再赘述。
具体地,图4所示的DMAC的具体工作流程(即,进行数据搬运的过程)包括以下处理过程(步骤1至步骤4)。
(一)步骤1
当外部设备或软件配置发出传输请求后,该传输请求会进入相应的逻辑通道。步骤1可以对应于上述步骤S302。
(二)步骤2
通道仲裁模块302以及逻辑通道优先级模块303对携带传输请求的逻辑通道进行仲裁,并将获得仲裁的逻辑通道的寄存器中存储的配置信息送入源端寄存器组308-1和目的端寄存器组308-2,其中,配置信息包括源端配置信息和目的端配置信息,源端配置信息包括但不限于:Src_XMODIFY、Src_YMODIFY、Src_XCOUNT、Src_YCOUNT、Src_CONTROL、Src_ADDR,目的端配置信息包括但不限于:Dest_XMODIFY、Dest_YMODIFY、Dest_XCOUNT、Dest_YCOUNT、Dest_CONTROL、Dest_ADDR。
(三)步骤3
RCV FSM 304得到触发后(优选地,外部设备通过发出高位信号触发RCV FSM,软件配置通过配置信息中的使能位的状态来触发RCV FSM),从源端寄存器组308-1和目的端寄存器组308-2中获取配置信息,根据配置信息进行数据搬运工作;即,RCV FSM 304从源端地址对应的设备中读取数据,并以交替存储的方式在FIFO 1和FIFO 2中对读取的数据进行缓存,SND FSM 307按照交替存储的顺序依次将FIFO 1和FIFO 2中的数据发送到目的端地址对应的设备);优选地,这里提到的数据可以是多种形式的数据,例如,图像数据。
在读取/发送数据的操作中,分离的RCV FSM304/SND FSM307通过FIFO 1和FIFO 2的空/满状态来触发读取/发送数据的操作。这样,更具体的数据搬运的处理可以包括如下过程:
步骤3-1,在DMA传输开始后,RCV FSM 304将第一次读入的数据存储到FIFO 1中,该数据的存储位置由写入位置选择电路305根据源端配置参数来确定(确定存储数据位置的处理过程将在下文中详细描述);
步骤3-2,当读传输状态结束后,生成信号触发SND FSM 307进行工作;
步骤3-3,SND FSM 307响应于该触发从FIFO 1中读取数据后将数据发送出去,读取数据的位置由读出位置选择电路306根据目的端配置参数来确定(确定读取数据位置的处理过程将在下文中详细描述);
步骤3-4,在SND FSM 307发送FIFO 1中的数据的同时,FIFO2的状态为空,这将触发RCV FSM 304开始新的读操作并向FIFO 2中写入数据,这样,就形成了RCV FSM 304和SND FSM 307的读、写操作并行执行的状况;
步骤3-5,当SND FSM 307将数据从相应的FIFO发送出去后该FIFO又会空闲,从而触发RCV FSM 304开启新的读操作。
通过步骤3-1至步骤3-5的处理,可以能够提高DMA传输数据的效率。优选地,在理想状态下,读写状态机持续工作,内部的两个FIFO以乒乓方式交替读入和写出数据,这样能够将传输数据的效率提高2倍。
步骤2至步骤3可以对应于上述步骤S304至步骤S306。
(四)步骤4,物理通道在完成一次数据搬运传输后释放该逻辑通道。剩余未传输的数据继续参与新的信道仲裁直到所有数据传输完毕。
借助于如图4所示的DMAC,通过设置并联的FIFO 1和FIFO2,能够将数据交替地存储到FIFO 1和FIFO 2中,并且能够实现并行的读取/发送数据的操作,从而能够提高DMA数据传输的效率。
此外,根据本实施例提供的配置信息(特别是MODIFY参数,即,Src_XMODIFY、Src_YMODIFY、Dest_XMODIFY、Dest_YMODIFY),可以实现对诸如图像数据行列规模的控制、并进行行/列内数据的跳跃传输,还可以在FIFO中对数据进行特定数据结构的存储,或者对存储在FIFO中的数据进行特定数据结构的输出,从而能够完成对图像数据的截取、转置、抽取、采样、插值、交织等多种操作,以及可以实现对图像数据的平面化操作和打包操作;与相关技术相比,通过本实施例提供的配置信息和数据传输方法,能够实现更灵活的数据传输、以及实现对数据的辅助处理功能。
下面详细描述本实例的具体应用。
(一)数据传输规模控制
根据XMODIFY参数来实现控制数据传输规模的具体过程包括:
(1)在读取数据的操作中,如果Src_XMODIFY为1,则RCVFSM 304用总线突发模式(burst)进行数据搬运,否则用总线单独模式(single)进行数据的搬运,并且按照XMODIFY指定的大小跳跃自增地进行数据搬运;在读取数据的过程中,当RCV FSM 304的内部计数器(未在图4中示出)发现已经按照Src_XCOUNT所指示的数量读入了数据时,则表明一行数据的搬运结束,这时按照Src_YMODIFY指定的大小跳跃到下一行地址进行数据的读取。
(2)在发送数据的操作中,在第一批读操作结束后就启动SNDFSM 307进行发送数据的操作,SND FSM 307按照Dest_XMODIFY指示的大小按行发送数据;在发送数据的过程中,当SND FSM 307中的内部计数器(未在图中示出)发现已经传输了XCOUNT*YCOUNT个数据后,整个DMA传输结束。
(二)对图像数据的翻转处理
图5是根据本发明实施例的配置信息实现数据翻转的处理示意图,在图5中,需要读取源端存储的16个数据块(数据块1至数据块16),配置信息为:Src_XCOUNT=4、Src_XMODIFY=1、Src_YCOUNT=4、Src_YMODIFY=3,Dest_XCOUNT=4、Dest_XMODIFY=4、Dest_YCOUNT=4、Dest_YMODIFY=-13,具体的处理过程如下:
(1)由于Src_XMODIFY=1,RCV FSM 304采用连续的传输方式(总线突发模式)进行读取,根据源地址指示的存储位置读取数据块1、数据块2、数据块3、数据块4,当读取了数据块4时,RCV FSM 304的内部计数器根据Src_XCOUNT=4的指示计数发现对一行数据的搬运已经结束,这时RCV FSM 304根据Src_YMODIFY=3的指示跨越行边界、从距离数据块4的存储空间为3个存储空间的存储位置(即,第二行的第一个存储空间)开始搬运数据,依次类推,直至将数据块16搬运完毕;
(2)在RCV FSM 304从源端搬运数据的同时,SND FSM 307根据目的端配置信息将数据发送到目的地址指定的位置,按照先进先出的顺序,首先将数据块1发送到目的地址指定的位置(如图5中目的端的第一行的最后一个存储空间),然后根据Dest_XMODIFY=4的指示,在距离数据块1的存储空间为4个存储空间的位置(即,第二行的第4个存储空间)存入数据块2,同理存入数据块3和数据块4,存储完数据块4后,SND FSM 307的内部计数器根据Dest_XCOUNT=4的指示计数发现对一行数据的搬运已经结束,此时SND FSM 307根据Dest_YMODIFY=-13的指示折回计数(因为数据块4的存储空间位于行边界和列边界,所以需要折回计数)、在距离数据块4的存储空间为13个存储空间的位置存入数据块5(即,第一行的第3个存储空间),以此类推,直至将数据块16发送给目的端。
(三)对图像数据的平面化处理和打包处理
本发明实施例还提供了一种FIFO的存储结构,利用这种存储结构可以实现对图像数据诸如平面化、打包等的处理。
图6是根据本发明装置实施例的DMAC的FIFO的存储结构示意图,如图6所示,每个FIFO对外呈现出64*16的物理存储结构,但是其内部是由8个8*16的小物理存储结构进行拼接而成的,8个小物理存储的两端分别是写入位置选择电路305和读出位置选择电路306,写入位置选择电路305可以首先根据数据大小和Src_XMODIFY来确定在FIFO(FIFO 1或FIFO 2)中存储数据的首地址,然后根据该首地址和数据宽度确定数据在FIFO中的存储位置,并将数据存入FIFO。
例如,读取的数据块为连续的4个位宽8比特位的数据块,Src_XMODIFY=1,则在FIFO为空时,将第一个数据块存储在编号为0000_000的存储空间中,将第二个数据块存储在的编号为0000_001存储空间中,将第三个数据块存储在编号为0000_010的存储空间中,将第一个数据块存储在编号为0000_011的存储空间中。
如果读取的数据块为连续的4个位宽为16比特位的数据块,Src_XMODIFY=1,则在FIFO为空时,将第一个数据块存储在编号为0000_000和编号为0000_001的存储空间中,将第二个数据块存储在在编号为0000_010和编号为0000_011的存储空间中,将第三个数据块存储在编号为0000_100和编号为0000_101的存储空间中,将第四个数据块存储在编号为0000_110和编号为0000_111的存储空间中。
如果读取的数据块为连续的4个位宽为8比特位的数据块,Src_XMODIFY=2,则在FIFO为空时,将第一个数据块存储在编号为0000_000的存储空间中,将第二个数据块存储在的编号为0000_010存储空间中,将第三个数据块存储在编号为0000_100的存储空间中,将第四个数据块存储在编号为0000_110的存储空间中。
相应地,读出位置选择电路306可以首先根据数据大小和Dest_XMODIFY来确定从FIFO中读取数据的首地址,然后根据首地址和数据宽度确定在FIFO中的读取数据位置,并将数据从FIFO中读出,利用该存储结构最小可以字节为单位选择数据的存储位置。
在图像处理中,图像数据像素的分量信息(RGB,YUV等)有时分开存放在存储结构的不同区域,这种处理被称为平面化(planar),而有时为了显示和处理的需要,又会将不同的分量信息交织到一起进行传输,这种处理被称之为图像数据打包(packed)。基于如图6所示的存储结构,以及本实施例提供的配置信息,可以将读入的不同数据块按照规律交织地存入该存储结构中,也可从该存储结构中按规律抽取出数据方向不同的数据块,从而可以实现对图像数据的平面化操作和打包操作。
在进行一般的连续传输时(即,Src_XMODIFY=1时),在FIFO中,由图4中的写入位置选择电路305确定的存储地址以传输宽度为单位进行自增,按照顺序将数据块存入该存储结构,读出位置选择电路306按照顺序从存储结构中读取数据块。当进行平面化或打包操作时,写入位置选择电路305则根据MODIFY(Src_XMODIFY、Dest_XMODIFY)的跳变指示确定存储地址,直接在图6所示的存储结构内完成对数据的插入或抽取操作。这样,整个存储结构实际上成为平面化或打包操作的数据交换结构,输出时则按照交换后的顺序进行数据传输。
图7是使用如图6所示存储结构进行图像数据平面化处理的示意图,图7示出了图像传输中YUV分量为4:2:2时的图像数据在FIFO中存放位置的示意结构,此时传输宽度为1字节。
当进行打包操作时,按照YUV分量通道的MODIFY值(Y:Src_YMODIFY=2,U:Src_YMODIFY=4,V:Src_YMODIFY=4),写入位置选择电路305将通过3个逻辑通道分别读取的Y、U、V分量信息按照图7所示的位置插入存储结构中,即,在编号为0000_000的存储空间存入第一个Y分量,在编号为0000_001的存储空间存入第一个U分量,根据Y:Src_YMODIFY=2,在编号为0000_010的存储空间存入第二个Y分量,在编号为0000_011的存储空间存入第一个V分量,根据Y:Src_YMODIFY=2,在编号为0000_100的存储空间存入第三个Y分量,根据U:Src_YMODIFY=4,在编号为0000_101的存储空间存入第二个U分量,根据Y:Src_YMODIFY=2,在编号为0000_110的存储空间存入第四个Y分量,根据V:Src_YMODIFY=4,在编号为0000_111的存储空间存入第二个V分量;依次类推,直至将需要存储的分量信息全部存储到图6所示的存储结构中。
在发送这三个分量时,则按照连续输出的方式将存储结构中的数据一起向目的地发送。
当进行平面化操作时,根据目的端配置信息,不同平面的逻辑通道将按上述位置从每次读入缓存的数据上抽取相应的数据分量(例如,从包含YUV分量信息的数据中分别抽取Y、U、V分量信息),并通过各自的逻辑通道发送向不同的平面。详细的过程可以参照打包操作的处理,这里不再赘述。
综上所述,借助于本发明的技术方案,在DMAC的读取器和发射器之间设置第一缓存器和第二缓存器,能够在第一缓存器和第二缓存器中交替地存入数据,能够实现并行的读取和发送数据的操作;此外,根据本发明实施例提供的配置信息能够实现对数据传输规模的控制、实现对诸如图像数据的数据辅助处理功能。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种直接存储器存取控制器即DMAC,其特征在于,包括:
读取器,用于响应于来自外部的传输请求,获取与所述传输请求对应的源地址,并从所述源地址对应的设备中读取数据,其中,所述数据包括多个数据块;
缓存器,包括第一缓存器和第二缓存器,其中,所述第一缓存器和第二缓存器用于交替存储所述多个数据块;
发射器,用于按照所述交替存储的顺序从所述缓存器中依次获取并发送所述多个数据块;
所述DMAC还包括配置器和存储器,其中
所述配置器,用于响应于所述传输请求,获取预存的与所述传输请求对应的配置信息,将所述配置信息发送到所述存储器;
所述存储器,用于存储来自所述配置器的所述配置信息;
其中,所述配置信息包括所述源地址、目的地址,并且还包括:源行跳变参数、源列跳变参数、源行计数参数、源列计数参数、源控制参数、目的行跳变参数、目的列跳变参数、目的行计数参数、目的列计数参数、目的控制参数;所述源行跳变参数和所述目的行跳变参数记录在行方向上搬运数据时地址的跳变值、以及用于指示数据搬运的模式,所述源列跳变参数和所述目的列跳变参数记录在列方向上搬运数据时地址的跳变值,所述源行计数参数和所述目的行计数参数记录在行方向上搬运数据的个数,所述源列计数参数和所述目的列计数参数记录在列方向上搬运数据的个数。
2.根据权利要求1所述的DMAC,其特征在于,所述缓存器还包括:
写入位置选择模块,用于根据所述读取的数据的大小、宽度和所述源行跳变参数确定第一存储位置,并在所述第一存储位置存储所述数据块,其中,所述第一存储位置用于指示在所述第一缓存器或所述第二缓存器中存储所述数据块的位置;
读出位置选择模块,用于根据所述读取的数据的大小、宽度和所述目的行跳变参数确定第二存储位置,并从所述第二存储位置读出所述数据块,其中,所述第二存储位置用于指示从所述第一缓存器或所述第二缓存器中读出所述数据块的位置。
3.一种数据传输方法,用于直接存储器存取控制器即DMAC进行数据传输,其特征在于,所述方法包括:
接收来自外部的传输请求;
获取所述传输请求对应的源地址,并从所述源地址对应的设备中读取数据,其中,所述数据包括多个数据块;
在第一缓存器和第二缓存器中交替存储所述多个数据块,并按照所述交替存储的顺序依次读取并发送所述多个数据块;
在接收所述传输请求之后,所述方法还包括:
根据所述传输请求,获取预存的与所述传输请求相对应的配置信息,其中,所述配置信息中包括源行跳变参数、源列跳变参数、源行计数参数、源列计数参数、源控制参数、目的行跳变参数、目的列跳变参数、目的行计数参数、目的列计数参数、目的控制参数、所述源地址、目的地址;
根据所述源行跳变参数、所述源列跳变参数、所述源行计数参数、所述源列计数参数、所述源控制参数从所述源地址对应的所述设备中读取所述数据;
根据所述目的行跳变参数、所述目的列跳变参数、所述目的行计数参数、所述目的列计数参数、所述目的控制参数将所述读取的数据发送到所述目的地址对应的设备;
其中,所述源行跳变参数和所述目的行跳变参数记录在行方向上搬运数据时地址的跳变值、以及用于指示数据搬运的模式,所述源列跳变参数和所述目的列跳变参数记录在列方向上搬运数据时地址的跳变值,所述源行计数参数和所述目的行计数参数记录在行方向上搬运数据的个数,所述源列计数参数和所述目的列计数参数记录在列方向上搬运数据的个数。
4.根据权利要求3所述的方法,其特征在于,所述交替存储所述多个数据块,并按照所述交替存储的顺序依次读取并发送所述多个数据块包括:
在当前时钟沿,将当前数据块存入所述第一缓存器,并且如果所述第二缓存器非空,则读取所述第二缓存器中存储的数据块;
在下一时钟沿,将下一数据块存入所述第二缓存器,并且如果所述第一缓存器非空,则读取所述第一缓存器中存储的数据块。
5.根据权利要求3所述的方法,其特征在于,在对多个数据块进行存储前,所述方法还包括:
对于所述多个数据块中的每个数据块,根据所述读取的数据的大小、宽度和所述源行跳变参数确定第一存储位置,其中,所述第一存储位置用于指示存储所述多个数据块的位置;
在所述第一存储位置上存储所述多个数据块。
6.根据权利要求3所述的方法,其特征在于,依次将所述读取的数据的所述多个数据块发送到所述DMAC存储的所述目的地址对应的所述设备还包括:
对于所述多个数据块中的每个数据块,根据所述读取的数据的大小、宽度和所述目的行跳变参数确定第二存储位置,其中,所述第二存储位置用于指示读出所述多个数据块的位置;
获取所述传输请求对应的所述目的地址,从所述第二存储位置读取所述多个数据块,并将读取的所述多个数据块发送到所述目的地址对应的所述设备。
7.根据权利要求3所述的方法,其特征在于,还包括:
所述源行跳变参数为1时,使用总线突发模式读取所述读取的数据,在所述行跳变参数不为1时,使用总线单独模式读取所述读取的数据;
所述目的行跳变参数为1时,使用总线突发模式发送所述读取的数据,在所述目的行跳变参数不为1时,使用总线单独模式发送所述读取的数据。
CN2009100001732A 2009-01-14 2009-01-14 直接存储器存取控制器以及数据传输方法 Expired - Fee Related CN101777031B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100001732A CN101777031B (zh) 2009-01-14 2009-01-14 直接存储器存取控制器以及数据传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100001732A CN101777031B (zh) 2009-01-14 2009-01-14 直接存储器存取控制器以及数据传输方法

Publications (2)

Publication Number Publication Date
CN101777031A CN101777031A (zh) 2010-07-14
CN101777031B true CN101777031B (zh) 2012-02-08

Family

ID=42513499

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100001732A Expired - Fee Related CN101777031B (zh) 2009-01-14 2009-01-14 直接存储器存取控制器以及数据传输方法

Country Status (1)

Country Link
CN (1) CN101777031B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541780B (zh) * 2011-12-15 2014-10-22 苏州国芯科技有限公司 一种多数据流通道dma系统
CN102567258B (zh) * 2011-12-29 2014-08-27 中国科学院自动化研究所 多维dma传输装置与方法
JP6019586B2 (ja) * 2012-01-10 2016-11-02 株式会社リコー ネットワーク通信装置
CN104580268A (zh) * 2013-10-09 2015-04-29 南京中兴新软件有限责任公司 文件数据的传输方法及装置
CN104333674B (zh) * 2014-11-24 2019-01-22 广东中星电子有限公司 一种视频稳像方法和装置
CN106681948A (zh) * 2016-12-26 2017-05-17 深圳先进技术研究院 可编程逻辑器件的逻辑控制方法及装置
CN110008156B (zh) * 2019-03-27 2020-12-15 无锡海斯凯尔医学技术有限公司 数据传输的装置、方法及可读存储介质
CN110928818B (zh) * 2019-12-09 2023-06-16 Oppo广东移动通信有限公司 直接存储访问、处理器和电子设备
US11302366B2 (en) * 2020-03-06 2022-04-12 Macronix International Co., Ltd. Method and system for enhanced read performance in low pin count interface
CN111966610B (zh) * 2020-09-04 2023-12-01 Oppo广东移动通信有限公司 数据传输方法、处理芯片和计算机设备
CN114067882A (zh) * 2021-10-22 2022-02-18 长江先进存储产业创新中心有限责任公司 一种相变存储器系统及其访问方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1585373A (zh) * 2004-05-28 2005-02-23 中兴通讯股份有限公司 一种乒乓缓冲装置
CN1862518A (zh) * 2006-06-21 2006-11-15 北京中星微电子有限公司 一种异步数据缓存装置
CN101188429A (zh) * 2007-12-24 2008-05-28 北京创毅视讯科技有限公司 一种比特交织器和进行比特交织的方法
CN101236528A (zh) * 2008-02-20 2008-08-06 华为技术有限公司 一种乒乓控制的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1585373A (zh) * 2004-05-28 2005-02-23 中兴通讯股份有限公司 一种乒乓缓冲装置
CN1862518A (zh) * 2006-06-21 2006-11-15 北京中星微电子有限公司 一种异步数据缓存装置
CN101188429A (zh) * 2007-12-24 2008-05-28 北京创毅视讯科技有限公司 一种比特交织器和进行比特交织的方法
CN101236528A (zh) * 2008-02-20 2008-08-06 华为技术有限公司 一种乒乓控制的方法及装置

Also Published As

Publication number Publication date
CN101777031A (zh) 2010-07-14

Similar Documents

Publication Publication Date Title
CN101777031B (zh) 直接存储器存取控制器以及数据传输方法
CN102567258B (zh) 多维dma传输装置与方法
CN101568904A (zh) 非易失性存储器的成扇形展开的高速系统体系结构和输入/输出电路
CN111159075B (zh) 数据传输方法和数据传输装置
CN110134366B (zh) 一种并行写入多通道fifo的方法及装置
CN114265872B (zh) 一种用于总线的互联装置
CN101004674B (zh) 数据处理系统和包括数据处理系统的高清晰度电视机
CN102279729B (zh) 动态可重构阵列调用配置信息的方法、缓存器和处理器
US7035956B2 (en) Transmission control circuit, reception control circuit, communications control circuit, and communications control unit
US7657711B2 (en) Dynamic memory bandwidth allocation
CN112882986B (zh) 一种带有超节点以及超节点控制器的众核处理器的应用方法
CN103309981A (zh) 一种具有高存储效率的adc数据组织系统及其方法
TWI397285B (zh) 封包轉送方式
CN109145397B (zh) 一种支持并行流水访问的外存仲裁系统
CN101110259A (zh) 先进先出存储器
CN113867796B (zh) 利用多状态机提高读性能的协议转换桥及实现方法
CN111782562B (zh) 数据传输方法、dma控制器、npu芯片及计算机设备
CN102184150A (zh) 高功能环形缓冲缓存系统及其控制方法
KR101404844B1 (ko) 듀얼 포트 메모리 및 그 방법
JPWO2008105494A1 (ja) Dma転送装置及び方法
US11094368B2 (en) Memory, memory chip and memory data access method
JP5126010B2 (ja) メモリアクセス制御回路及び画像処理装置
TWI797642B (zh) 半導體記憶裝置及記憶體系統
JP4904136B2 (ja) 双方向データ通信用単一ポートメモリ制御装置およびその制御方法
JP7223503B2 (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
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: SHENZHEN ZTE MICROELECTRONIC TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: ZTE CORPORATION

Effective date: 20131202

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 518057 SHENZHEN, GUANGDONG PROVINCE TO: 518083 SHENZHEN, GUANGDONG PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20131202

Address after: 518083 workshop No. 1, Dameisha, Yantian District, Shenzhen

Patentee after: SANECHIPS TECHNOLOGY Co.,Ltd.

Address before: 518057 Nanshan District science and technology, Guangdong Province, South Road, No. 55, No.

Patentee before: ZTE Corp.

EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20100714

Assignee: Xi'an Chris Semiconductor Technology Co.,Ltd.

Assignor: SANECHIPS TECHNOLOGY Co.,Ltd.

Contract record no.: 2019440020036

Denomination of invention: Direct memory access controller and data transmission method

Granted publication date: 20120208

License type: Common License

Record date: 20190619

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

Granted publication date: 20120208

Termination date: 20220114

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