专利名称:一种多数据流通道dma系统的制作方法
技术领域:
本发明涉及DMA (直接存储器存取)系统,尤其涉及一种应用于SOC芯片的多数据流通道DMA系统。
背景技术:
目前,DMA (Direct Memory Access,直接存储器存取)技术已广泛应用于SOC芯片(System on Chip,称为系统级芯片,也有称片上系统)。但是,在实现DMA传输时,DMA控制器不仅需要占用系统总线,而且只能用于内部存储器之间的数据传输,还不能直接对SOC 芯片的外部设备和内部功能模块进行各种操作。这就使得芯片的外部设备和内部功能模块与内部存储器之间的数据传输仍需通过CPU和系统总线的配合来完成,特别是随着数据传输量的增大,仍需要耗费大量CPU资源。比如,对于目前日益受到重视的信息安全问题,大多SOC芯片都是通过CPU对加密模块(芯片的内部功能模块)进行操作来完成。使用CPU对加密模块操作的方式,需要耗费大量的CPU资源,同时处理的数据量也很有限。再比如,现在的SOC芯片为了满足更多的应用需要,通常都配有各种外设接口,以便与外部设备进行数据通讯。而这种数据通讯也是由CPU来操作完成,这使得CPU往往为这些数据流通讯而耗费大量资源。
发明内容
鉴于上述技术现状,本发明提出一种多数据流通道DMA系统,旨在汲取DMA对处理数据流通讯的优势,来解决目前SOC芯片中,CPU耗费大量资源用于外部设备和内部功能模块与内部存储器之间数据流通讯的问题。为达到上述目的,本发明采用的技术方案是一种多数据流通道DMA系统,包括 DMA控制器、内部存储器以及设备,其中,所述设备由内部功能模块或/和外设接口组成,其创新在于
所述内部存储器与DMA控制器之间设有第一数据传输通路,设备与DMA控制器之间设有第二数据传输通路,以此在所述DMA系统内建立起以下四种类型的数据流通道 第一种是内部存储器之间的数据流通道; 第二种是从内部存储器到设备的单发送数据流通道; 第三种是从设备到内部存储器的单接收数据流通道; 第四种是内部存储器与设备之间的双向数据流通道; 所述DMA控制器由数据缓冲存储器、寄存器组和接口控制逻辑组成,其中 数据缓冲存储器由第一 FIFO缓存器和第二 FIFO缓存器组成,其中,第一 FIFO缓存器用来缓冲从内部存储器读到设备的数据,第二 FIFO缓存器用来缓冲从设备写到内部存储器的数据,当数据流在内部存储器之间进行通讯时,使用第一 FIFO缓存器或第二 FIFO缓存器;DMA系统的每次数据流通讯,其中,每组配置寄存器至少用来配置每次数据流通讯中的数据流通道类型、设备类型、内部存储器的发送地址或/和接收地址、传输数据长度;一组状态寄存器用来启动DMA系统并且反映DMA系统的传输状态,其中,传输状态至少为反映当前传输是否完成;
接口控制逻辑由状态机构成,当DMA系统访问设备时状态机根据各状态以及状态跳转直接对设备发送或接收数据的接口信号进行控制,并实时侦测设备的工作状态;所述状态机由四个状态组成,这四个状态分别为空闲状态、填充状态、等待状态和提取状态,其中
空闲状态,表示传输还未开始,或者传输结束时状态机的所处状态,在空闲状态时不会对设备的接口信号进行任何操作;
填充状态,表示从第一 FIFO缓存器取数据填充到设备的状态,在填充状态时DMA系统会发起对设备填充数据的操作;
等待状态,表示查询设备操作是否完成的状态,在等待状态时,DMA系统会不断的查询设备操作是否完成;
提取状态,表示从设备提取数据存储到第二 FIFO缓存器中的状态,在提取状态时DMA 系统会控制从设备读取数据。上述技术方案中的有关内容解释如下
1.上述方案中,所述“内部存储器”是指SOC芯片内部使用的临时存储器或随机存储器,比如RAM。2.上述方案中,所述“内部功能模块”是指SOC芯片内部的一些具有功能性的模块,其中,功能对SOC芯片来说可以是应用功能,比如数据加解密模块、纠错模块(BCH),也可以是控制功能,比如看门狗(Watch dog)、计时器(Time Counter),还可以是其他内部存储部件,比如FLASH、R0M。所述“外设接口”是指一些用来连接SOC芯片外部设备的接口,比如 SPI (串行外设接口)、IS07816、I2C、SCI 等。3.上述方案中,所述“FIFO缓存器”是一种先进先出的数据缓存器,FIFO是英文 First In First Out的缩写,它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。4.上述方案中,所述“第一数据传输通路”是指内部存储器与DMA控制器之间的专用数据传输通路,该专用数据传输通路可以采用DMA专用接口以及相应的接口控制逻辑来实现。所述“第二数据传输通路”是指设备与DMA控制器之间的专用数据传输通路。5.上述方案中,所述每组配置寄存器还可以配置中断使能、配置寄存器使能。所述状态寄存器还可以包括下列状态位
(1)标志当前哪组配置寄存器有效;
(2)标志哪组配置寄存器的传输开始;
(3)标志哪组配置寄存器的传输结束;
(4)标志当前传输了多少数据量。本发明技术构思和效果是在嵌入式SOC芯片中利用专门的DMA控制器设计在内部存储器与设备之间建立一个具有四种类型数据流通道的DMA系统。该DMA系统在CPU对其进行相应的配置后,可以在不耗费CPU资源,并且不占用系统总线的前提下完成内部存储器与设备之间的四种类型通道的数据流通讯。本发明汲取DMA对处理数据流通讯的优势,在DMA系统中集四种类型数据流通讯于一体,解决了目前SOC芯片中,CPU耗费大量资源用于外部设备和内部功能模块与内部存储器之间数据流通讯的问题,大大节省了系统的 CPU资源,而且数据流通讯不占用系统总线,可以广泛应用于嵌入式SOC芯片领域。
附图1为应用本发明内容的嵌入式SOC芯片结构示意图; 附图2为本发明数据流通道示意附图3、为本发明中的第一 FIFO缓存器工作原理示意图; 附图5飞为本发明中的第二 FIFO缓存器工作原理示意图; 附图7为本发明中的接口控制逻辑状态机状态跳转示意图; 附图8为本发明实施例多数据流通道DMA系统的数据流通讯示意图。
具体实施例方式下面结合附图及实施例对本发明作进一步描述 实施例
图1为应用本发明内容的嵌入式SOC芯片结构示意图,在嵌入式SOC芯片中包含有一种多数据流通道DMA系统。该DMA系统包括DMA控制器、内部存储器以及设备,其中,所述设备是指内部功能模块或/和外设接口。在内部存储器与DMA控制器之间设有第一数据传输通路,在设备与DMA控制器之间设有第二数据传输通路,第二数据传输通路和系统总线经过二选一选通器与设备连接(见图1 ),当DMA使能时,设备通过第二数据传输通路与DMA 控制器连通,当DMA没有使能时,设备与系统总线连接。由于上述通路的关系,在DMA系统内建立起以下四种类型的数据流通道 第一种是内部存储器之间的数据流通道;
第二种是从内部存储器到设备的单发送数据流通道; 第三种是从设备到内部存储器的单接收数据流通道; 第四种是内部存储器与设备之间的双向数据流通道。为了使上述四种类型的数据流通道能够在不耗费CPU资源,并且不占用系统总线的前提下完成数据流通讯,DMA控制器的设计十分关键。本发明中的DMA控制器由数据缓冲存储器、寄存器组和接口控制逻辑组成,下面分别对其进行描述
1.数据缓冲存储器
数据缓冲存储器由第一 FIFO缓存器和第二 FIFO缓存器组成,其中,第一 FIFO缓存器用来缓冲从内部存储器读到设备的数据,第二 FIFO缓存器用来缓冲从设备写到内部存储器的数据,当数据流在内部存储器之间进行通讯时,使用第一 FIFO缓存器或第二 FIFO缓存
ο2.寄存器组
寄存器组由两组配置寄存器和一组状态寄存器组成,两组配置寄存器用来轮流控制 DMA系统的每次数据流通讯,其中,每组配置寄存器用来配置每次数据流通讯中的数据流通道类型、设备类型、内部存储器的发送地址或/和接收地址、传输数据长度、中断使能、配置寄存器使能。一组状态寄存器用来启动DMA系统并且反映DMA系统的传输状态,具体配置有下列状态位
(1)标志当前传输是否完成;
(2)标志当前哪组配置寄存器有效;
(3)标志哪组配置寄存器的传输开始;
(4)标志哪组配置寄存器的传输结束;
(5)标志当前传输了多少数据量。采用两组配置寄存器,可提前配置其中的一组配置寄存器,轮流使两组配置寄存器中的配置起作用,使得两次启动DMA系统进行数据流通讯之间不需要额外耗费时钟周期对配置寄存器进行配置。3.接口控制逻辑
接口控制逻辑由状态机构成,当DMA系统访问设备时状态机根据各状态以及状态跳转直接对设备发送或接收数据的接口信号进行控制,并实时侦测设备的工作状态,无需CPU 参与。所述状态机由四个状态组成,这四个状态分别为空闲状态、填充状态、等待状态和提取状态,其中
空闲状态,表示传输还未开始,或者传输结束时状态机的所处状态,在空闲状态时不会对设备的接口信号进行任何操作;
填充状态,表示从第一 FIFO缓存器取数据填充到设备的状态,在填充状态时DMA系统会发起对设备填充数据的操作;
等待状态,表示查询设备操作是否完成的状态,在等待状态时,DMA系统会不断的查询设备操作是否完成;
提取状态,表示从设备提取数据存储到第二 FIFO缓存器中的状态,在提取状态时DMA 系统会控制从设备读取数据。本发明可应用于多数据流通道通讯的嵌入式SOC芯片中,也可以进行多功能扩展使用。在本实施例中,将以SOC芯片中的信息安全加解密过程为例来加以说明。假设从外部获取数据是加密过程,向外部发送数据是解密过程。图2为本发明数据流通道示意图,其中外设接口包括SPI接口和IS07816接口, 实现与外部设备进行数据通讯。加解密模块用于控制原文数据的加解密,实现数据的加解密。内部存储器用于存储与外部设备通讯的数据和加解密后的数据。DMA控制器用于控制四种类型数据流通道的数据通讯,其中,第一种是内部存储器之间的数据流通讯,第二种是从内部存储器单发送数据流到设备的通讯,第三种是从设备单接收数据流到内部存储器的通讯,第四种是内部存储器与设备之间的双向数据流通讯。在本发明中,第一 FIFO缓存器和第二 FIFO缓存器保证了数据在内部存储器和设备传输过程中的传输连续性,提高了传输效率。下面分别介绍第一 FIFO缓存器和第二 FIFO 缓存器。图3、为第一 FIFO缓存器工作原理示意图,第一 FIFO缓存器用来缓冲从内部存储器读到设备的数据。当从内部存储器读取1个字的数据存储到第一 FIFO缓存器时,第一 FIFO缓存器的写指针rdfif0_wptr加1 ;当设备从第一 FIFO缓存器读取1个字的数据时, 第一 FIFO缓存器的读指针rdfifo_rptr加1 ;当rdf ifo_wptr与rdfifo_rptr最高位不相等,其余位都相等时代表第一 FIFO缓存器已满,当rdfifo_wptr与rdfifo_rptr包括最高位在内所有位都相等时代表第一 FIFO缓存器已空。当第一 FIFO缓存器为空时,禁止设备从第一 FIFO缓存器取数据。当第一 FIFO缓存器为满时,禁止从内部存储器再读取数据到第一 FIFO缓存器。当完成内部存储器之间的数据通讯时,只用上述第一 FIFO缓存器进行缓冲即可。图3表示的含义是再读一个就空,图4表示的含义是已空。图5飞为第二 FIFO缓存器工作原理示意图。第二 FIFO缓存器用来缓冲从设备写到内部存储器的数据。当从设备接收到1个字的数据存储到第二 FIFO缓存器时,第二 FIFO 缓存器的写指针wrfif0_Wptr加1 ;当内部存储器从第二 FIFO缓存器读取一个字的数据时,第二 FIFO缓存器的读指针wrf ifo_rptr加1 ;当wrf ifo_wptr与wrf ifo_rptr最高位不相等,其余位都相等时代表第二 FIFO缓存器已满,当wrfif0_wptr与wrfifo_rptr包括最高位在内所有位都相等时代表第二 FIFO缓存器已空。当第二 FIFO缓存器为空时,禁止从第二 FIFO缓存器取数据发送到内部存储器。当第二 FIFO缓存器为满时,禁止设备再向第二 FIFO缓存器发送数据。图5表示的含义是再写一个就满,图6表示的含义是已满。图7为本发明中的接口控制逻辑状态机状态跳转示意图。如图所示,根据数据通讯过程中需要对设备的控制操作,整个状态机分为四个状态空闲状态、填充状态、等待状态、提取状态。空闲状态为整个传输过程的起始状态,当一次传输还未开始或者传输已经结束时状态机回到空闲状态。在空闲状态时DMA系统对设备不发起任何操作。根据DMA系统中的配置寄存器对通道类型的配置情况,如果配置为双向数据流通道或者单发送数据流通道,状态机在传输开始信号发出后,从空闲状态跳转到填充状态;如果配置为单接收数据流通道,状态机从空闲状态跳转到等待状态。填充状态为从第一 FIFO缓存器取数据填充到设备的状态,在填充状态时DMA系统对设备发起发送数据的操作。当数据填充操作完成时,状态机从填充状态跳转到等待状态。等待状态为等待设备操作完成的状态,处于等待状态时, DMA系统一直不停的查询设备的状态寄存器,判断操作是否完成。一旦等待完成,对于双向数据流通道配置来说,状态机从等待状态跳转到提取状态;而对于单发送数据流通道传输, 先判断设置长度的传输数据是否全部完成,如果全部传完状态机从等待状态跳转到空闲状态;如果传输数据的长度小于设置长度,即还未完成全部传输,对于单发送数据流通道,状态机从等待状态重新跳转到填充状态,继续填充数据;对于单接收数据流通道,状态机从等待状态跳转到提取状态。提取状态为从设备提取数据存储到第二 FIFO缓存器中的状态,在提取状态时,DMA系统对设备发起获取数据的操作。当提取数据完成时,对于单接收数据流通道,状态机从提取状态重新跳转到等待状态;对于双向数据流通道来说,先判断设置长度的传输数据是否全部完成,如果全部完成,状态机从提取状态跳转到空闲状态;如果还未完成,状态机从提取状态继续跳转到填充状态。以上状态机控制是用于内部存储器与设备之间的数据通讯,内部存储器之间的数据通讯不需要状态机跳转和控制,只要通过Busy信号来控制即可。图8为本发明多数据流通道DMA系统的一种数据流通讯示意图。图中使用了三种类型的数据流通道,完成了数据加密操作和数据解密操作两种过程,现将其工作流程及数据流描述如下
首先,CPU配置外设接口和加解密模块的控制寄存器,具体是把外设接口配置为发送模式,加解密模块配置为加密模式。
其次,CPU配置DMA系统中的配置寄存器,由于本发明具备两组配置寄存器,可以把第一组配置寄存器中的数据流通道类型配置为单接收数据流通道,从外部设备接收数据存储到内部存储器addrl,外设接口配置为IS07816,配置好传输数据长度后使能第一组配置寄存器的配置;把第二组配置寄存器中的数据流通道类型配置为双向数据流通道,加解密模块配置为AES,数据从内部存储器addrl经过加密后再存储到内部存储器addr2(addr2 可以与addrl相同),配置好传输数据长度后使能第二组配置寄存器的配置。最后,启动DMA 系统进行传输。DMA系统启动后,先执行第一组配置寄存器中的配置。从外部设备不断接收数据通过第二 FIFO缓存器的数据缓冲逐步存储到内部存储器addrl中。当第一组配置寄存器中设置的传输数据长度完成后,自动开始执行第二组配置寄存器中的配置,即开始双向数据流通道的操作,先从内部存储器addrl读取数据作为原文填充到加解密模块中,等待加解密模块加密完成,再从加解密模块取出密文,存储到内部存储器addr2(addr2可以与addrl 相同)。当第一组配置寄存器任务完成,第二组配置寄存器任务正在进行时,CPU就可以提前对第一组配置寄存器进行重新配置。具体是先把第一组配置寄存器中的数据流通道类型配置为双向数据流通道,加解密模块仍配置为AES,数据从内部存储器addr2经过解密后再存储到内部存储器addrl (addrl可以与addr2相同),配置好传输数据长度后使能第一组配置寄存器的配置。当第二组配置寄存器完成加密任务后,先暂停DMA系统操作,CPU重新配置外设接口和加解密模块的控制寄存器。具体是把加解密模块配置为解密模式,外设接口配置为接收模式。启动DMA系统,提前配置好的第一组配置寄存器的解密任务立即执行。在DMA系统执行第一组配置寄存器的解密任务时,CPU提前重新配置第二组配置寄存器,具体是把第二组配置寄存器中的数据流通道类型配置为单发送数据流通道,从内部存储器addrl向外部设备发送数据,外设接口配置为IS07816,配置好传输数据长度后使能第二组配置寄存器的配置。当第一组配置寄存器的解密任务完成后,自动开始执行第二组配置寄存器的单发送数据流任务。根据上述操作步骤,DMA系统可以完成数据流从外部设备输入经过加密以密文的形式存储到内部存储器中,也可以完成从内部存储器读取密文经过解密把原文发送到外部设备的操作。上述操作只是嵌入式SOC芯片中的内部存储器与设备之间众多应用的一种, 本发明还可以完成多种设备与内部存储器之间的数据流通讯,其中四种类型的数据流通道组合之后应用更为广泛,既涉及信息安全加密范畴,又适用于各种接口外设扩展,甚至可以广泛应用于嵌入式SOC芯片领域。上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
权利要求
1.一种多数据流通道DMA系统,包括DMA控制器、内部存储器以及设备,其中,所述设备由内部功能模块或/和外设接口组成,其特征在于所述内部存储器与DMA控制器之间设有第一数据传输通路,设备与DMA控制器之间设有第二数据传输通路,以此在所述DMA系统内建立起以下四种类型的数据流通道 第一种是内部存储器之间的数据流通道; 第二种是从内部存储器到设备的单发送数据流通道; 第三种是从设备到内部存储器的单接收数据流通道; 第四种是内部存储器与设备之间的双向数据流通道; 所述DMA控制器由数据缓冲存储器、寄存器组和接口控制逻辑组成,其中 数据缓冲存储器由第一 FIFO缓存器和第二 FIFO缓存器组成,其中,第一 FIFO缓存器用来缓冲从内部存储器读到设备的数据,第二 FIFO缓存器用来缓冲从设备写到内部存储器的数据,当数据流在内部存储器之间进行通讯时,使用第一 FIFO缓存器或第二 FIFO缓存器;寄存器组由两组配置寄存器和一组状态寄存器组成,两组配置寄存器用来轮流控制 DMA系统的每次数据流通讯,其中,每组配置寄存器至少用来配置每次数据流通讯中的数据流通道类型、设备类型、内部存储器的发送地址或/和接收地址、传输数据长度;一组状态寄存器用来启动DMA系统并且反映DMA系统的传输状态,其中,传输状态至少为反映当前传输是否完成;接口控制逻辑由状态机构成,当DMA系统访问设备时状态机根据各状态以及状态跳转直接对设备发送或接收数据的接口信号进行控制,并实时侦测设备的工作状态;所述状态机由四个状态组成,这四个状态分别为空闲状态、填充状态、等待状态和提取状态,其中空闲状态,表示传输还未开始,或者传输结束时状态机的所处状态,在空闲状态时不会对设备的接口信号进行任何操作;填充状态,表示从第一 FIFO缓存器取数据填充到设备的状态,在填充状态时DMA系统会发起对设备填充数据的操作;等待状态,表示查询设备操作是否完成的状态,在等待状态时,DMA系统会不断的查询设备操作是否完成;提取状态,表示从设备提取数据存储到第二 FIFO缓存器中的状态,在提取状态时DMA 系统会控制从设备读取数据。
2.根据权利要求1所述的多数据流通道DMA系统,其特征在于所述每组配置寄存器还配置有中断使能、配置寄存器使能。
3.根据权利要求1所述的多数据流通道DMA系统,其特征在于所述状态寄存器还包括有下列状态位(1)标志当前哪组配置寄存器有效;(2)标志哪组配置寄存器的传输开始;(3)标志哪组配置寄存器的传输结束;(4)标志当前传输了多少数据量。
全文摘要
一种多数据流通道DMA系统,在嵌入式SOC芯片中利用专门的DMA控制器设计在内部存储器与设备之间建立一个具有四种类型数据流通道的DMA系统。该DMA系统在CPU对其进行相应的配置后,可以在不耗费CPU资源,并且不占用系统总线的前提下完成内部存储器与设备之间的四种类型通道的数据流通讯。本发明汲取DMA对处理数据流通讯的优势,在DMA系统中集四种类型数据流通讯于一体,解决了目前SOC芯片中,CPU耗费大量资源用于外部设备和内部功能模块与内部存储器之间数据流通讯的问题,可以广泛应用于嵌入式SOC芯片领域。
文档编号G06F13/28GK102541780SQ20111042013
公开日2012年7月4日 申请日期2011年12月15日 优先权日2011年12月15日
发明者匡启和, 张文婷, 林雄鑫, 肖佐楠, 郑茳 申请人:苏州国芯科技有限公司