CN101558366A - 直接存储器存取控制器 - Google Patents
直接存储器存取控制器 Download PDFInfo
- Publication number
- CN101558366A CN101558366A CNA2007800460427A CN200780046042A CN101558366A CN 101558366 A CN101558366 A CN 101558366A CN A2007800460427 A CNA2007800460427 A CN A2007800460427A CN 200780046042 A CN200780046042 A CN 200780046042A CN 101558366 A CN101558366 A CN 101558366A
- Authority
- CN
- China
- Prior art keywords
- dma
- cpu
- dma controller
- mode
- register
- 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.)
- Granted
Links
Images
Landscapes
- Bus Control (AREA)
- Power Sources (AREA)
Abstract
一种系统具有:中央处理单元(CPU),其可操作以在休眠或低功率模式下和在活动模式下操作;多个系统组件,其可操作以在休眠或低功率模式下和在活动模式下操作;以及直接存储器存取(DMA)控制器,其独立于所述CPU而操作,且可操作以在休眠或低功率模式下和在活动模式下操作,其中所述DMA控制器进一步可操作以从存储器或外围装置传送数据和将数据传送到存储器或外围装置,其中当所述系统处于休眠或低功率模式时,仅将所述DMA控制器和执行DMA事务所必需的任何系统组件切换到活动模式中。
Description
相关申请案的交叉参考
本申请案主张2006年12月15日申请的标题为“DMA唤醒模式(DMAWAKE UPMODE)”的第60/870,267号美国临时申请案和2006年12月15日申请的标题为“DMA暂停模式(DMA SUSPEND MODE)”第60/870,295号美国临时申请案的权益,所述美国临时申请案以全文引用的方式并入本文中。
技术领域
本申请案的技术领域涉及直接存储器存取控制器。
背景技术
直接存储器存取控制器(DMA)通常用于微处理器系统、集成微控制器等中。DMA控制器用于独立于计算机系统的中央处理单元而执行从存储器到外围装置以及从外围装置到存储器的数据传送。为此,可将DMA控制器视为具有受限能力的第二可编程处理单元。一般来说,指令DMA控制器将特定量的数据从源位置传送到目的地位置。所述源可在存储器(例如微控制器的数据存储器、外围装置的存储器)内,或为由外围装置(例如,模数转换器、端口、俘获比较单元等)产生或在外围装置内可存取的数据。目的地也可在存储器内,因此允许计算机系统或微控制器的存储器装置内的高速传送。然而,目的地也可为外围装置,例如数模转换器、端口等。为了将数据从源传送到目的地,DMA控制器必须接收相应的源和目的地地址。另外,需要指定每一传送长度。为此,DMA控制器需要接收数据传送的长度或待传送的数据的开始和结束地址。
使用此些DMA控制器的微处理器系统通常用于手持型系统中,所述手持型系统对功率消耗特别敏感。上文所述的DMA控制器与处理器以及集成和外部组件的互动导致相当大的功率消耗。因此,需要一种经改进的具有DMA控制器的系统。
发明内容
根据一实施例,一种系统可包括:中央处理单元(CPU),其可操作以在休眠或低功率模式下和在活动模式下操作;多个系统组件,其可操作以在休眠或低功率模式下和在活动模式下操作;直接存储器存取(DMA)控制器,其独立于所述CPU而操作,且可操作以在休眠或低功率模式下和在活动模式下操作,其中所述DMA控制器进一步可操作以将数据从存储器或外围装置传送和将数据传送到存储器或外围装置,其中当所述系统处于休眠或低功率模式时,仅将所述DMA控制器和(如果必要的话)执行DMA事务所必需的任何系统组件切换到活动模式中。
根据另一实施例,在DMA事务已完成之后,可将DMA控制器和执行DMA事务所必需的任何系统组件切换回到休眠或低功率模式中。根据另一实施例,DMA控制器可在至少一个数据传输已至少部分完成之后产生信号,所述信号用于去激活CPU的休眠模式。根据另一实施例,所述系统可进一步包括功率管理单元,其用于控制多个低功率操作模式,其中可将CPU和DMA控制器彼此独立地设置到低功率模式中,其中在第一低功率操作模式期间,CPU以减小的时钟速度操作,且在第二低功率操作模式期间,停止中央处理单元。根据另一实施例,CPU可通过第一中断等级而从低功率操作模式切换到较高功率操作模式中,且DMA控制器可通过不同于第一中断等级的第二中断等级而从低功率操作模式切换到较高功率操作模式中。根据另一实施例,DMA控制器可包括多个通道,且每一通道包括一控制寄存器,所述控制寄存器包括可编程位,其确定是否产生在数据传送完成后的所述信号。根据另一实施例,在数据传送完成后的信号可为中断信号,且其中控制寄存器包括可编程位字段,其确定中断的优先级。根据另一实施例,所述系统可进一步包括:用于存储一预定义数目的第一寄存器;用于对完成的DMA传输的数目进行计数的第二寄存器;以及用于将第一和第二寄存器的内容进行比较的比较器,其中仅在第二寄存器的内容等于或高于第一寄存器的内容的情况下产生所述信号。根据另一实施例,所述DMA控制器可包括多个通道,且每一通道可包括一控制寄存器,所述控制寄存器包括偏移位字段,其中如果源或目的地地址等于结束地址减去偏移,那么产生所述信号。根据另一实施例,所述DMA控制器可包括多个通道,且每一通道包括一唤醒寄存器,其中如果源或目的地地址等于存储在唤醒寄存器中的唤醒地址,那么产生所述信号。
根据另一实施例,一种微控制器可包括:中央处理单元(CPU),其可以可编程方式在具有第一功率消耗的第一操作模式和具有低于所述第一功率消耗的第二功率消耗的第二操作模式下操作;与所述中央处理单元耦合的总线;与所述总线耦合的存储器;与所述总线耦合的外围单元;以及与所述总线耦合的直接存储器存取(DMA)控制器,其中所述DMA控制器独立于CPU而操作,以在CPU处于第二操作模式的同时,从存储器或外围单元传送数据和将数据传送到存储器或外围单元,其中DMA控制器在数据传送完成后产生信号,所述信号使CPU从第二操作模式切换到第一操作模式中。
根据另一实施例,所述微控制器可进一步包括功率管理单元,其用于控制多个低功率操作模式,其中DMA控制器和CPU可操作以被独立地置于所述低功率操作模式中的一者中。
根据又一实施例,一种通过包括中央处理单元(CPU)的系统中的直接存储器存取(DMA)控制器来独立地执行多个数据从源到目的地的传输的方法可包括以下步骤:a)至少使CPU和DMA控制器从高功率消耗模式切换到低功率消耗模式中;b)接收DMA请求;c)使DMA控制器切换到高功率消耗模式中,而CPU保留在低功率消耗模式中;d)通过DMA控制器来执行DMA,而CPU维持低功率消耗模式;e)在至少所述DMA请求完成后,使DMA控制器切换到低功率消耗模式中。
根据另一实施例,CPU可在低功率模式期间停止。根据另一实施例,CPU在低功率模式期间可以减小的时钟速度操作。根据另一实施例,DMA控制器可包括多个通道,且可以是可编程的,以设置每一通道的优先级,其中优先级界定通道的执行偏好。根据另一实施例,DMA控制器可包括多个通道,且每一通道可以是可编程的,以确定在对通道的DMA请求完成后是否产生用于使CPU切换到高功率消耗模式中的信号。根据另一实施例,在数据传送的完成之后的信号可以是中断信号。根据另一实施例,对于每一通道,中断信号的优先级可以是可编程的。根据另一实施例,数据传送的完成可由目标结束地址或由匹配待传送数据的预定义数据来确定。根据另一实施例,步骤e)可包括在DMA请求完成后产生信号,所述信号致使CPU切换到高功率消耗模式中。根据又一实施例,步骤e)可包括在多个DMA请求完成后产生信号,所述信号致使CPU切换到高功率消耗模式中。根据另一实施例,在步骤a)中,可将系统置于低功率消耗模式,且在接受到DMA请求之后,DMA控制器和DMA请求所需的任何系统单元可切换到操作模式中。
根据又一实施例,一种通过包括中央处理单元(CPU)的系统中的直接存储器存取(DMA)控制器来独立地执行多个数据从源到目的地的传输的方法可包括以下步骤:a)至少将CPU和DMA控制器从高功率消耗模式切换到低功率消耗模式中;b)接受DMA请求;c)使DMA控制器切换到操作模式中;d)通过DMA控制器来执行DMA,而CPU维持低功率消耗模式。
根据另一实施例,所述方法可进一步包括步骤e):在DMA请求完成后,使CPU切换到高功率消耗模式中,且使DMA控制器切换到低功率消耗模式中。
所属领域的技术人员从以下图式、描述内容和权利要求书将容易明白本发明的其它技术优点。本发明的各种实施例可仅获得所陈述优点的子集。任一优点对所述实施例都不是关键性的。
附图说明
通过参考结合附图而进行的以下描述,可获得本发明及其优点的更全面理解,在附图中,相同参考编号指示相同特征,且其中:
图1是展示计算机系统内的典型DMA控制器(例如,微控制器)的框图;
图2说明总线矩阵中所使用的示范性总线;
图3是展示DMA控制器的第一实施例的细节的框图;
图4是展示DMA控制器的第二实施例的细节的框图;
图5是展示DMA控制器的第二实施例的细节的框图;
图6A和图6B说明根据一实施例的用于控制具有DMA控制器的系统的某些方面的典型寄存器;
图7展示根据一实施例的系统控制例程的流程图;
图8展示DMA初始化例程;
图9展示DMA控制器的传送例程的流程图;
图10展示多通道传送的时序图;以及
图11说明具有使用中断来控制系统的功能性的DMA控制器的系统。
具体实施方式
根据一实施例,允许DMA控制器因某一事件(例如中断)而醒来,而中央CPU和有关逻辑以及数字装置中没有必要活动以用于所述事件的服务的组件和装置保留在掉电或休眠模式中。以此方式,DMA逻辑或DMA控制器可服务请求,而CPU和其它系统装置保留在休眠模式中。在服务已完成之后,DMA控制器控制在包含其本身的服务例程期间已活动的系统装置以返回相应的休眠模式。
任选地,当达到预定义缓冲器计数或以其它方式确定传输结束时,可例如通过另一中断信号来唤醒处理器,且CPU退出掉电模式或休眠模式。因此,可独立地控制CPU和DMA控制器的相应功率模式,其中可将CPU和DMA控制器每一者个别地置于低功率消耗模式中或高功率消耗模式中。可使用不同优先级来唤醒CPU和/或DMA控制器。因此(例如)对于一些优先级,仅DMA控制器将醒来,而CPU将留在休眠模式中。
而且,DMA控制器和CPU共享同一数据和地址总线,以将数据传送到存储器且从存储器传送数据。CPU和DMA控制器两者可控制对总线的存取。因此,CPU或DMA控制器可为主装置。此外,多个外围装置可以是可配置的以存取所述总线,且变为所述总线上的主装置或从属装置。系统可以“先来后到(first come)”优先权或使用所指派的优先权来准许对总线的存取。“先来后到”优先权方案准许对任何首先被请求存取的总线的存取。所有其它请求者必须等待,且将以其请求的次序循序地获得存取。然而,大多数系统使用指派优先权方案,其中每一可能主装置具有可超越较低优先权的所指派的存取优先权。一般来说,DMA控制器在此系统中具有最高优先权。因此,如果CPU或外围主装置和DMA控制器积极寻求对总线的准许,那么DMA控制器通常具有优于所有其它可能主装置的存取总线的优先权。因此,经过DMA控制器的数据传送的任何激活将使CPU或外围装置停止。根据一实施例,将DMA控制器设计成可以以下方式编程:CPU可(例如)通过设置专用控制寄存器中的位来暂停DMA控制器的数据传送。然而,可提供其它控制机制来暂停DMA控制器,例如通过CPU与DMA控制器之间的专用控制线。
常规数字装置目前通过唤醒处理器核心或整个系统且通过相应的中断系统执行相应的指令来响应事件。这是耗时的,且导致更多电流被消耗以对CPU和程序存储器供电,以便在返回休眠之前执行服务例程。根据一实施例,仅唤醒DMA控制器以服务异步事件允许在服务所述事件时CPU、程序存储器和所述服务不需要的其它组件保留在低功率状态。所述事件通常不外乎读取外围装置的内容和将值存储到局部存储器中。这可由DMA控制器单独来完成。在服务所述事件之后,根据一实施例,DMA控制器可返回到休眠模式中。
芯片上的微控制器或系统可具有以下模式,所述模式可通过相应地控制的中断系统或其它适当控制来实施。在运行模式中:所有时钟根据相应配置值而运行到达所有外围装置和中央处理单元。在此模式中,CPU是活动的,且消耗功率。在第一低功率模式(闲置模式)中:处理器时钟停止,且仅消耗待机功率,例如所述时钟可被选通关闭。总线矩阵上的总线时钟继续运行。快闪程序存储器处于待机模式。中断事件仅启动DMA控制器,或以全速启动DMA控制器且以减小的时钟启动处理器时钟。在第二低功率模式(休眠模式)下:处理器和总线时钟停止。快闪程序存储器断电。异步中断事件仅针对DMA控制器而启动时钟。在其它实施例中,可提供更多模式,其中仅某些装置接收时钟,且因此是操作的。
常规技术数字装置不具有在不启用CPU的情况下退出低功率模式的能力。根据下文更详细描述的实施例,DMA控制器可从与系统时钟伪同步的单独系统时钟运行。当外部事件(例如中断)经编程以唤醒DMA时,将启用此时钟。在此过程期间,无需启用CPU,这节约功率。根据一个实施例,每次当DMA控制器完成传输时,存储数目n的寄存器就增加1。一旦已记录的DMA事件的预定义数目n>=1,就可用中断事件来警告CPU。根据一实施例,中断控制器可检测针对外围装置(例如USB或以太网)的事件,并将所述外围装置唤醒到(例如)闲置模式,因此所述外围装置可将其缓冲器写入系统数据随机存取存储器(RAM)中。因此,如果DMA事件在休眠模式期间出现,那么仅DMA控制器和数据存储器以及(任选地)相应的外围装置从休眠模式切换到活动模式。因此,仅对DMA事务必要的那些系统组件在请求后被激活,且一旦请求已完成就将去激活。
转向图式,现在将描述本申请案的示范性实施例。图1描绘计算机系统内的DMA控制器(例如微控制器100)的典型实施例。微控制器100通常包括中央处理单元(CPU)110,其(例如)经由总线矩阵120耦合到系统组件和外围装置。通过总线矩阵120,CPU110可直接与多个外围装置i到k 145...150通信,且/或通过外围桥接器180与外围装置n到m 165...170通信。外围装置可为(但不限于)例如I/O端口、存储器、A/D和D/A转换器、计时器、脉冲宽度调制器等装置。可提供中断控制器155,其控制用于提供CPU110内的中断例程的异步开始的中断信号。可使用中断信号来中断指令流的当前执行,且迫使CPU 110分支到相应的中断服务例程。中断信号还可用于控制DMA控制器125的功能性,例如新通道传输的激活。然而,另外,中断信号还可用于唤醒CPU 110、DMA控制器125和其它外围装置。总线矩阵120可提供专用中断总线以携载这些信号。中断控制器155可经编程以遮蔽例如某些中断等级,以防止某些中断信号中断或唤醒CPU110。
此外,可在总线矩阵120内提供专用存储器总线,以经由高速缓冲存储器130使CPU 110与快闪程序存储器135耦合。数据随机存取存储器(RAM)140也可经由总线矩阵120耦合到CPU 110。直接存储器存取控制器(DMA)以编号125展示。此DMA控制器125还与总线矩阵120耦合,以允许与总线矩阵120耦合的装置之间的数据传送。在总线矩阵120内,DMA单元可通过各种总线与存储器140和外围装置145...150以及165...170耦合。此外,DMA控制器125可通过总线矩阵120从CPU 110接收多个控制信号。系统定时装置115直接或通过总线矩阵120中的相应控制信号向CPU和向需要时钟的所有单元提供各种时钟信号。根据一实施例,为允许CPU和DMA控制器的独立操作,为CPU和DMA控制器提供两个或多个独立时钟信号。还可通过总线矩阵120向其它系统组件提供不同时钟。或者,系统内的每一组件可操作以控制其自己的功率模式。为此,总线矩阵120可包括与功率管理单元175耦合的专用功率控制总线,功率管理单元175包含单个或多个时钟信号、功率模式信号和控制信号,其指示哪些单元在哪一功率模式下操作。然而,功率管理单元可替代地直接控制所有单元。
此系统允许在无CPU 110的直接涉及的情况下,通过DMA控制器125在与总线矩阵120耦合的任何外围装置145...150和165...170之间以及那些外围装置145...150,165...170与存储器140之间或存储器140内传送数据。通常仅需要CPU 110来初始化DMA控制器125,且一旦数据已被传送就处理所述数据。一旦DMA控制器125被编程,就在无CPU 110的辅助下进行合适的数据传送。CPU 110于是能够自由地执行其它任务。为此,执行并行DMA传送的系统通常不会改变与系统相关联的单元的功率管理,因为例如在一些情况下,在DMA控制器125执行数据传送时CPU 110可执行独立功能。功率管理单元175允许对装置的灵活控制。因此,视功率节约模式而定,可断开系统的不同单元。功率节约模式在功率消耗上从高到低变化。CPU 110在大多数功率节约模式下通常是活动的,且可以不同的定时速度操作。通常仅在最高功率节约模式下,CPU 110才会完全断开。
根据一实施例,具有CPU 110和DMA控制器125的系统允许一特定模式,其中可独立于CPU 110而激活DMA控制器125,且其中CPU 110可同时进入从减小的时钟速度到完全去激活的不同等级的功率节约模式。根据一实施例,一旦CPU 110和DMA控制器125进入较高等级的功率节约模式中(例如其中CPU 110和DMA控制器125被停止的静态模式)中,就可通过DMA传送请求来独立地激活DMA控制器125。此请求可(例如)通过相应的中断信号产生。一旦接收到此传送请求,DMA控制器125就将操作。为此,如果有必要的话,功率管理单元可唤醒DMA控制器125和一个或一个以上所请求的外围装置。然而,在一个实施例中,中断信号本身可激活DMA控制器125。数据随机存取存储器140甚至在功率节约模式期间也可能已经为活动的,但如果不是这样的话,还可被重新激活(如果有必要的话)。一旦相应DMA传送所必需的所有单元都为活动,DMA控制器125就开始适当的DMA传送。在此时间期间,CPU和对事务来说不必要的其它装置保留在其相应的休眠模式中。这可(例如)通过以以下方式遮蔽中断等级来完成:相应中断等级仅激活DMA控制器125而不激活CPU 110。DMA控制器125监视并控制所述传送,且直接或通过功率管理单元175将信号发送到CPU 110,所述信号将唤醒CPU 110。举例来说,在一个实施例中,DMA控制器125可产生具有高得足以在DMA传输完成后唤醒CPU 110的等级的中断。因此,CPU可接着进一步处理已被传送的数据。一旦CPU 110完成了任何必要的处理,CPU 110就可再次进入相应的功率节约模式。而且,在DMA控制器125已服务DMA请求之后,DMA控制器125可重新进入休眠或低功率模式。在一个实施例中,仅在已完成预定数目的DMA传输的情况下起始对CPU 110的唤醒过程。为此,提供相应的寄存器,其每次在一DMA传输已完成时增加1。如果此寄存器的内容高于或等于预定义数目n>=1,那么可仅产生用于唤醒CPU110的中断信号。
在又一实施例中,一种特殊寄存器可包括起始CPU 110的激活的地址或数据。如果CPU 110从休眠模式到活动模式的过渡需要大量时间,那么此实施例是有用的。因此,被设置为传输的开始地址与结束地址之间的预定义数目个存储器位置的中间地址可触发CPU 110的重新激活。因此,每当DMA传送已完成时,CPU将为活动,而无任何(例如)由振荡器启动时间导致的进一步延迟。代替于特殊寄存器,可使用控制寄存器中的位字段来界定从结束地址的偏移,其可用于在DMA传输已完成之前产生唤醒信号。
图2展示总线矩阵120内所使用的总线200的一些总线信号。举例来说,总线可包含普通的地址和数据信号,以及多个控制信号。所述控制信号中可包含:如图所示的多个控制信号;多个中断信号,用于界定具有不同优先权/等级的不同中断信号;特定信号,用于指示休眠模式;以及相关联的模式信号,指示将进入哪种类型的休眠模式。可包含其它指示哪些单元应进入相应的休眠模式的信号。图2还展示可用于系统中的专用CPU时钟信号和单独DMA时钟信号的实例,其中特定单元无法被个别地指派有不同的功率模式。底部控制线指示通常在微处理器或微控制器中实施的其它控制信号。
图3展示DMA控制器的实施例。提供多个DMA通道350...360,且所述多个DMA通道350...360由控制总线340(例如中断请求控制总线)控制。DMA通道350...360与总线310耦合以接收数据和地址。明确地说,地址解码器320接收地址320,并将其与相应的控制寄存器330进行比较,以控制DMA传送的功能性。多路复用器370可用于控制相应通道350...360的输出。控制器380控制多路复用器370,且因此控制经过随后的总线矩阵接口390的数据流。图3中所示的实施例可由相应的中断信号控制。举例来说,可使用中断信号来起始经过相应通道的传送。为此,每一通道可被指派有相应的中断等级。可使用中断等级的子集,且DMA控制器125可以是可编程的,以将某些中断等级指派给相应的传送通道。此外,DMA控制器可以是可编程的,以在传输完成、到达传输中的某一点(例如通道缓冲器的一半的传送)、到达通道缓冲器内的预定义点或匹配于待传送的预定义数据型式后产生多个中断信号。可实施其它中断控制信号。
图4展示DMA控制器125内的通道的实施例的更多细节。根据一个实施例,DMA控制器125可具有静态设计,且因此可接收其自己的DMA时钟信号490,其可用于直接控制不同的功率模式,例如,在高功率模式下,所述装置将接收最高时钟速度,在最低功率模式下,无任何时钟信号,且中间功率模式可包括各种中间时钟速度。DMA控制器125可包括可编程的门,其接收时钟信号,且可在进入休眠模式后阻断时钟信号,并在接收到中断唤醒信号后打开所述门。DMA控制器125进一步包括至少一数据寄存器或锁存器410a以及相关联的地址寄存器或锁存器440a,440b,其两者与总线矩阵120内的接收总线470和传输总线480耦合。图4通过虚线来指示接收总线470和传输总线480可以是同一者,例如图2中所示的总线200。然而,在另一实施例中,DMA控制器125还可经配置以在两个不同总线之间通信。在此实施例中,接收总线470可为(例如)如图3中所示的总线310,且传输总线480可为连接到如图3中所示的总线矩阵接口390的另一总线。用于地址和数据的寄存器或锁存器410a以及440a,440b与这些总线耦合。或者,可针对传输和接收利用单独的寄存器。如图4中所示的单独的地址寄存器440a和440b是有用的,因为源地址和目的地地址通常是不同的。数据寄存器410a和传输和/或接收寄存器440a,440b可进一步与比较器420,450耦合,以确定数据或地址的匹配。
在DMA数据传送期间,DMA控制器125可经编程以将开始于源开始地址且结束于源结束地址的特定量的数据传送到目的地,所述目的地也开始于目的地开始地址且结束于目的地结束地址。为此,例如,寄存器440a加载有源开始地址,且寄存器440b加载有目的地开始地址。DMA控制器125进一步接收待传送的数据块的长度或源结束地址。如果使用源结束地址,那么将此地址加载在与比较器单元450耦合的相应寄存器440c中。或者,可使用目的地结束地址或如上文所述的数据块的长度来确定传送的结束。一旦已进行此示范性初始化,合适的数据传送就发生。DMA控制器125进一步可包括另一寄存器440d,其可用于界定特定中间地址以用于产生传送已到达某一点的信号。为此,此寄存器440d可预设有指示传送缓冲器的中点或缓冲器内的任一其它点的地址。比较器单元450可包括一组比较器,或可经配置以在比较不同寄存器内容后产生单独的信号。可使用比较器输出信号来产生特定的中断信号。
在下文中阐释使用单个总线的传送。DMA控制器125将第一地址(存储在寄存器440a中的源开始地址)置于总线上。此地址可在与所述总线耦合的存储器或任何装置内。接着将相关联的数据传送到数据寄存器410a中。在一随后步骤中,将存储器440a从所述总线去耦,且将寄存器440b与所述总线耦合。或者,如果仅使用一个地址寄存器,那么将此地址寄存器加载有目的地开始地址。因此,现在将目的地地址置于总线上,从而寻址相应的目的地,例如与所述总线耦合的存储器或任何装置。接着,将存储在寄存器410a中的数据传送到此目的地地址。接着使源地址寄存器440a和目的地地址寄存器440b递增,并重复所述过程,直到源地址寄存器440a含有源结束地址为止。可(例如)通过比较器450来检测传输的此结尾,所述比较器450比较地址寄存器440a和寄存器440c的内容。可使用寄存器440d来产生中间信号,其指示已达到传输的某一状态/时间。
另外,DMA控制器125允许有条件的传送,其一旦已接收到特定型式(例如预定义的数据字节)就停止所述传送。为此,DMA控制器125包括进一步的型式寄存器410b。在初始化后,此寄存器410b加载有例如特定字节等型式。一旦比较器420检测到寄存器410a中所加载的数据与型式寄存器410b之间的匹配,就产生相应的信号430,其向DMA控制器125指示已到达传输的结尾。为了防止无尽传输,可另外使用地址比较器450来界定最大传送。
因此,根据此实施例的DMA控制器125通常允许两种不同类型的事务。将第一事务界定为固定长度传输,其允许DMA控制器传送界定的数据块。第二事务具有开放长度,且其长度由特定型式界定。举例来说,传输的结尾可由特定符号界定。此外,在另一实施例中,符号序列可界定传输的结尾。因此,对传输结尾的更灵活界定是可能的。举例来说,代替于单个字节,可使用两个字节的序列,例如回车(carriage return,CR)换行(LF)序列。为此,可提供多个寄存器,其编程有相应的序列。可用最大传送长度来增强第二事务类型,以避免无尽传送循环,且因此提供额外的安全性。
图5展示DMA控制器125的另一示范性实施例。在此实施例中,提供源寄存器510和目的地地址寄存器520。此外,长度/最大长度寄存器530与比较器580耦合,所述比较器580可产生结束地址检测EndAddr。比较器580另外与计数器570耦合。型式寄存器540与另一比较器550耦合,所述比较器550还与数据寄存器560耦合,所述数据寄存器560接收且传输合适的数据Din和Dout。比较器550产生信号Match,其接着可产生传输结束信号EofTrans。如由使用虚线的相应元件所指示,可提供多个型式寄存器540和相关联的比较器。可提供寄存器与比较器之间的相应逻辑,以允许不同类型的传输。举例来说,图5展示第一可控制驱动器585,其接收来自比较器580的信号EndAddr。驱动器585的输出与“或”门590的第一输入耦合。第二可控制反相器555接收来自比较器550的信号Match。驱动器555的输出与“或”门590的第二输入耦合。因此,“或”门590的输出提供传输结束信号EofTrans。可使用此信号来控制数据传送。此外,可将此信号馈送到功率管理单元175。
或者,提供比较器单元565,以将源地址寄存器510或目的地地址寄存器520的内容与结束地址寄存器595的内容进行比较,以直接产生传输结束信号EoTrans。在又一实施例中,提供偏移寄存器545,其内容用于从结束地址寄存器595中减去偏移,以产生独立的早期唤醒信号,如下文将更详细地阐释。作为另一替代例,使用唤醒地址寄存器475来代替偏移寄存器545。在此实施例中,通过将源地址寄存器510或目的地地址寄存器520与结束地址寄存器595进行比较而产生传输结束信号EoTrans,且通过将源地址寄存器510或目的地地址寄存器520与唤醒地址寄存器575进行比较而产生唤醒信号WakeUp。
根据另一实施例,另外可提供存储预定义可编程数目n的控制寄存器515和充当计数器并对DMA控制器所执行的传输的数目进行计数的寄存器535。上述两个寄存器的内容由比较器525进行比较,且结果被馈送到功率管理单元175。寄存器515存储由用户通过CPU 110编程的整数n。在将系统设置到休眠模式中后,使寄存器535复位到DMA#=0。如果在休眠模式期间接收到DMA请求,那么重新激活DMA控制器和DMA传输所必需的相应装置。如果传输已完成,那么使寄存器535且因此DMA#递增。比较器525将寄存器515和535的内容进行比较,并将结果发送到功率管理单元175。如果DMA#>=n,那么功率管理单元175产生唤醒信号。否则,DMA控制器125被放置回休眠模式,直到下一个DMA请求到达为止。
可在不同模式下执行DMA传输。在第一模式下,控制驱动器555以使比较器550从“或”门590去耦,从而在“或”门590的第二输入处产生恒定的逻辑低信号,且控制驱动器585以使比较器580与“或”门590耦合。寄存器510和520加载有相应的源开始地址和目的地开始地址。寄存器530加载有待传输数据块的长度,且计数器570复位到零。接着,可开始数据传送。为此,将寄存器510所寻址的数据加载到寄存器560中,且写入到寄存器520中所含有的地址。接着,使寄存器510和520递增所传输数据的大小。举例来说,如果数据寄存器为一字节宽寄存器,那么寄存器510和520递增1。如果数据寄存器为16位寄存器,那么寄存器510和520递增2,依此类推。计数器570相应地递增。比较器580将计数器570的计数器值与寄存器530进行比较。重复数据传送,直到计数器值与寄存器530的内容匹配为止。如果达到此匹配,那么EndAddr信号变为逻辑高,且“或”门590的输出将变为高,从而指示传输结束EofTrans。因此,DMA控制器被停止。
在第二模式下,控制驱动器585以使比较器580从“或”门590去耦,从而在“或”门590的第一输入处产生恒定的逻辑低信号,且控制驱动器555以使比较器550与“或”门590耦合。在此模式下,源寄存器510和目的地寄存器520再次加载有相应的开始地址。另外,型式寄存器540加载有预定义型式。再次开始DMA传送,且将与源寄存器相关联的第一数据加载到数据寄存器560中,并将其与型式寄存器540进行比较。如果发生匹配,那么比较器550在其输出处产生高信号,其引起“或”门590的输出处的高信号,并指示传输结束。否则,寄存器510和520递增,且传送继续,直到发生所传输的数据与型式寄存器540之间的匹配为止。在第三模式下,激活驱动器555和585两者,从而使比较器550和580两者与“或”门590耦合。在此模式下,寄存器510和520再次加载有相应的开始地址。此外,将最大长度值加载到寄存器530中,且将型式加载到寄存器540中。如上文所述,数据传送发生。然而,传输结束由比较器550或580产生。
在CPU 110工作或被暂停或处于休眠模式,同时DMA控制器125和相应的外围装置为活动时,可执行所有DMA传送模式。接着使用功率管理单元175来控制进一步过程。为此,还可将EofTrans信号转发到功率管理单元175。功率管理单元175可包括相应的寄存器,其可经编程以依据如上文所述的DMA传输的数目或依据通道、外围装置等而产生被发送到CPU 110的唤醒信号。因此,在经编程模式下(其中CPU 110必需立即处理特定DMA传送的数据),在CPU 110处于休眠或暂停模式的情况下,功率管理单元175将在相应的DMA传送完成后唤醒CPU 110。一旦CPU 110已完成其数据处理且如果被请求,CPU 110就可根据其进一步编程而再次进入休眠或暂停模式。类似地,一旦所有待决传输都已完成,就将DMA控制器125置回相应的休眠模式。
另外,当CPU 110和DMA控制器125两者都为活动时,通常DMA控制器125具有对任何总线存取的优先权。因此,当在总线上传送数据的同时,CPU 110被禁止存取同一总线,且因此被停止。对于可变为总线上的主装置的外围装置来说,情况也是如此。然而,允许CPU或另一外围装置存取当前由DMA控制器125使用的总线有时是重要的。为了允许此存取,DMA控制器可经由寄存器而编程以暂停当前传送。为此,CPU 110可设置DMA控制器内的专用位,其向DMA控制器125指示DMA控制器125将暂停其当前传送,直到CPU 110使相应位复位为止。代替于如上文所述使用控制寄存器内的专用位,可使用专用控制线来使DMA控制器暂停当前数据传输。此外,可使用优先权方案,其中可将每一DMA通道和/或相关联的DMA单元指派给一特定优先级。暂停信号可包括特定优先级。因此,将依据CPU的请求仅暂停那些低于所述特定优先级的通道。
因此,在检测到暂停信号后,DMA控制器125完成当前数据传送,即使用数据寄存器410a/560的单个数据传送,其在暂停位/信号的检测完成之前已开始。在另一实施例中,在没完成已经开始的数据传送之前,异常中止所述数据传送。在完成或异常中止此已经开始的传送之后,DMA控制器暂停任何进一步传送,但保持其所存储的当前状态。换句话说,在DMA控制器处于暂停模式时,维持所有寄存器内容。如果数据传送已被异常中止,那么使DMA控制器复位到传送异常中止之前的相应状态以能够重复异常中止的事务。在暂停模式期间,DMA控制器解除对用于传送数据的总线的任何阻断。在优先权方案的情况下,只有那些具有比暂停优先权高的优先权的DMA事务才会被完成,且接着DMA控制器切换到暂停模式中。因此,现在允许CPU 110或外围装置具有对相应总线的完全存取,且可传送必要的数据。在完成相应的传送后,CPU 110可通过使控制寄存器中的相应位复位或通过去激活相应的控制信号或通过发送具有最低优先权的暂停命令,来使DMA从暂停模式释放。此机制允许对存取系统内的总线的更灵活控制。因此,如果某一程序需要立即引起CPU或外围装置注意,那么CPU可以可控制方式使DMA控制器暂停阻断CPU的当前传输,且CPU或外围装置可执行必要的存取。
图6A和图6B展示用于DMA控制器125的通道的某些控制寄存器。举例来说,根据图6A,寄存器600 DMACON用于控制DMA控制器的一般功能。位15用于激活DMA控制器125或去激活DMA控制器125。通过此位,可启用或停用DMA模块。位14用于在被设置时“冻结”调试(Debug)模式期间的DMA,或在未被设置时允许调试模式期间的DMA传送。位13用于在被设置时冻结休眠模式期间的传送,且在未被设置时允许休眠模式期间的传送。位12用于如上文所述动态地控制DMA控制器125的暂停。为此,可将位12设置为“1”以暂停DMA传送,且允许CPU不中断地存取总线。当使位12复位为“0”时,DMA控制器125正常操作,其将给予DMA控制器对总线的优先权,从而停止或中断CPU的任何存取。优先权机制可自动暂停那些具有比暂停命令低的优先权的DMA通道。还可经由中断机制来实施优先权方案。
寄存器610CHXCON控制个别通道X。因为每一数据传输可由多个事务组成,所以可使用位0到1 CHPR[1:0]来界定指派给每一通道的优先权。在此实施例中,DMA控制器125可具有若干通道,例如4个或8个通道。2个位能够界定4个不同优先权。如果更多优先权是必要的,那么根据一实施例,可扩大位字段CHPR,以提供相应量的位。使用优先权指派来确定将执行多个通道事务的次序。举例来说,如果通道0具有最高优先权,且所有其它通道具有较低优先权,那么将执行针对通道0的所有事务,直到已针对此通道产生EofTrans信号且数据传输已完成为止。如果多个通道具有相同优先权,那么控制器将循环通过所述优先权的所有通道。因此,如果通道2和通道3具有相同优先权且不存在更高优先权,那么在针对通道2的一个事务之后,控制器切换到通道3,以执行针对此通道的一个事务,且接着切换回通道2,依此类推,直到针对这两个通道的所有事务都已完成为止。如果具有较高优先权的通道请求传送,而具有较低优先权的另一通道具有待决事务,那么所述事务将在移动到具有较高优先权的通道之前完成。
图10展示具有8个通道(其中通道0、1、2和4为活动)的系统中的多通道传送的实例。通道0首先通过断言其相应的控制线来请求传送。在此时间t1处,无事务待决。因此,传送事务开始下一个循环,如线“活动通道:”中所指示,所述线识别当前活动的通道。在针对通道0的传送期间,通道4请求传送。因为通道4与通道0相比具有较高优先权,所以在下一循环时间t2处,开始针对通道4的传送事务。在针对通道4的传送期间,通道2请求传送。因为通道2与通道4相比具有较高优先权,所以在下一循环时间t3处,开始针对通道2的传送事务。在执行针对通道2的循序传送事务时,针对通道0和4的传送被暂停。在时间t4处,针对通道2的所有传送被完成,且控制器恢复针对在此时具有最高优先权的通道4的传送。在时间t5处,通道1请求传送,其中通道1与通道4具有相同的优先权。因此,控制器从现在开始将循环通过通道1和通道4的传送,直到其传输已完成或接收到较高优先权请求为止。在图10所示的实例中,在时间t6处,针对通道1和4的传输完成。因此,控制器恢复针对剩余通道0的下一传送事务。在任何时间,具有某一优先级的暂停命令可由DMA控制器接收。接着,仅允许那些具有较高优先权的通道进行其事务。以此方式,可在DMA控制器内实施非常灵活的暂停机制,其允许选择性地暂停某些或所有DMA通道。
返回参看图6A的寄存器CHXCON,使用位4到5ETMD[1:0]来界定操作模式。举例来说,可指派4种不同模式。因此,这些位允许界定(例如)相对于图5而描述的三种模式。
返回参看图6A的寄存器CHXCON,使用(例如)位8(和9)ETWU来界定当传输已完成时是否产生唤醒信号。如果相应的位被设置,那么功率管理单元175可(例如)从“或”门590接收此信号(如图5中所说明),且针对CPU 110产生相应的唤醒信号。作为替代例,如图6中所示的位字段ETWU[1:0]可与两个或两个以上位一起使用,以界定一旦针对相应通道的传输已完成就会产生的中断信号的中断等级。在此情况下,例如,将使用“或”门590的输出信号来产生中断信号。CPU 110可经编程以仅在接收到具有某一优先级的中断的情况下才醒来。换句话说,在休眠模式期间,将遮蔽某些较低优先权中断。此方法将允许唤醒机制的简单设计。无意唤醒CPU 110的DMA传输将被指派有较低等级的优先权,而需要CPU来处理所传输数据的DMA传送将被指派有较高优先权以唤醒CPU 110。
位14CHAED在被设置时用于允许通道开始/异常中止事件的寄存,即使所述通道被停用。位15CHEN在被设置时用于个别地启用相应通道。因此,可使用这些位来个别地暂停通道传送。
返回参看图6A,位16到26 CHOFFSET[8:0]指示偏移,以早于DMA传送的完成而产生唤醒信号。举例来说,在DMA存储器传送中,每一事务需要一已知时间t1。如果用于CPU 110的激活时间延迟为25xt1,那么可将位字段CHOFFSET编程为25。可提供相应的比较器565和寄存器545,其将目的地地址减去所述偏移与实际源地址进行比较,如图5中所指示。所述比较的结果独立于传输结束信号,且被馈送到功率管理单元175。
图6B说明可针对每一通道而实施的另一寄存器620DCHXECON,其控制每一通道的中断功能性。为此,位16到23界定位字段CHAIRQ,其可以中断等级编程。高于所述经编程等级的中断将导致相应通道传送的异常中止。位8到15界定位字段CHSIRQ,且用于界定将导致针对所述通道的DMA传送开始的中断等级。位7CFORCE在被设置为“1”时可用于迫使DMA传送开始。位6CABORT在被设置为“1”时可用于异常中止特定传送。位5PATCEN可用于设置型式匹配功能性。因此,当此位已被设置为“1”时,如上文所述,传送将在型式匹配后异常中止。
图6B展示用于控制中断受控DMA系统中的某些功能的又一寄存器630CHXINT。此寄存器可用于对某些中断信号的产生和功能性进行编程。位23CHSDIE启用指示通道源缓冲器何时完成的中断。位22CHSHIE启用指示通道源缓冲器何时半空(到达所述缓冲器的中心)的中断。位21CHDDIE启用指示通道目的地缓冲器何时完成的中断。位20CHDHIE启用指示通道目的地缓冲器何时半空(到达所述缓冲器的中心)的中断。位19CHBCIF用于启用指示块传送完成的中断。位18CHCCIE用于启用指示单元传送完成的中断。位17CHTAIE用于启用针对传送异常中止的中断。位16CHERIE用于启用针对通道地址错误的中断。位7CHSDIF是指示通道源缓冲器指针已到达所述源缓冲器的结尾的中断旗标位。位6CHSHIF是指示通道源缓冲器指针已到达所述源缓冲器的中点的中断旗标位。位5CHDDIF是指示通道目的地缓冲器指针已到达所述目的地缓冲器的结尾的中断旗标位。位4CHDHIF是指示通道目的地缓冲器指针已到达所述目的地缓冲器的中点的中断旗标位。位3CHBCIF是指示块传送已完成的中断旗标位。位2CHCCIF是指示单元传送已完成的中断旗标位。位1CHTAIF是指示已检测到中断匹配CHAIRQ且DMA传送已异常中止的中断旗标位。位0CHERIF是指示已检测到通道地址错误的中断旗标位。在上文所述的实施例中,单元传送描述当DMA通道具有在等待另一事件之前起始的传送时所传送的字节数。因此,单元传送包括可编程数目个单字传送,其中每一单字传送可由32位系统中的多达4个字节组成。将区块传送界定为当通道被启用时所传送的字节数。所述字节数可以是可独立编程的源大小或目的地大小中的较大者。因此,块传送包括一个或一个以上单元传送。
图11展示具有CPU 110、DMA控制器125、中断控制器155和专用控制信号(例如中断总线1110、个别中断线1120、1130和1140)的系统的实施例。在一个实施例中,中断总线1110可用于产生不同中断信号,如上文所述。中断控制器155用于控制这些中断。然而,在其它实施例中,可在DMA控制器125与CPU 110之间使用例如中断线1140等直接连接。此外,进一步的个别中断信号1120和1130可由中断控制器155使用和产生。然而,可实施中断总线1110,例如使用馈送到所有单元和多个控制线的单个中断信号来指示相应的中断等级。如(例如)上文所描述,使用多个寄存器允许非常灵活地控制包含CPU 110和DMA控制器125的系统。根据一实施例,DMA通道将在无CPU介入的情况下将数据从源寄存器传送到目的地寄存器。通道源缓冲器开始地址寄存器界定源缓冲器的开始地址。通道目的地缓冲器开始地址寄存器界定目的地缓冲器的开始。可使用相应的寄存器独立地配置源缓冲器和目的地缓冲器两者。单元传送可由设置相应的位CFORCE的软件或由匹配经编程的CHSIRQ中断等级的中断事件来起始。DMA传送在被起始时将执行单元传送。根据一实施例,通道保持被启用,直到DMA通道已传送了源缓冲器或目的地缓冲器中的较大者为止。每一通道使用缓冲器指针来跟踪从源缓冲器和目的地缓冲器传送的字的数目。当源或目的地指针为缓冲器大小的一半时,或者当源或目的地计数器到达缓冲器的结尾时,可产生缓冲器中断。根据不同实施例,中断可由中断控制器155控制,且可个别地或通过允许多个优先级的专用中断总线来管理。
如上文所述,用户还可通过写入暂停位SUS(见图6A)来立即暂停DMA模块125。这将立即使DMA暂停任何进一步的总线事务。可实施此功能以允许CPU具有完全总线存取。当CPU为了原子指令(atomic instruction)序列(例如非易失性存储器模块的解锁序列)而需要对总线的完全控制时,通常将暂停DMA。可使用CHEN位(见图6A,寄存器610)来暂停个别通道。如果DMA传送正在进行中且CHEN位被清除,那么将完成当前事务,且将暂停此通道上的进一步的事务。清除启用位CHEN将不会影响通道指针或事务计数器。当通道被暂停时,用户可通过设置CHAED位(见图6A,寄存器610)来选择继续接收例如异常中止中断等事件。如上文所述,还可使用优先权方案来个别地暂停某些DMA通道。
图7展示根据一实施例具有DMA控制器的系统的休眠模式的实施例的流程图。在第一步骤710中,去激活可能进入休眠模式的包含CPU 110的所有单元,以将功率消耗降低到最小。在步骤720中,DMA控制器检查是否已接收到DMA传送请求。如果是受中断驱动,那么对此请求的轮询是不必要的,且例程将被作为中断服务例程执行。或者,DMA控制器也可处于休眠模式,且DMA传送请求或中断将唤醒DMA控制器。如果有必要的话,在步骤730中,将通过相应的唤醒信号来激活DMA传输所需的所有单元。在步骤740中,开始DMA传送,且执行第一事务。在步骤750中,DMA控制器检查传输是否已完成。如果未完成,那么例程返回步骤740,以执行另一事务。如果传输已完成,那么在步骤750之后,例程可以不同方式操作。
根据第一实施例,例程继续步骤760a,其中检查是否要唤醒CPU 110。如果(例如)相应通道控制寄存器中的相应位已被设置,那么将在步骤770中激活CPU 110。否则,例程跳过步骤770。作为对步骤760和770的替代,可在传输完成之后产生具有先前指派的中断等级的中断信号。
根据第二实施例,例程继续步骤755,其中递增寄存器DMA#。接着,在步骤760b中,检查是否DMA#>=n,以确定是否要唤醒CPU 110。如果(例如)所完成的传输的数目低于预定数目n,那么仍将不激活CPU 110,且例程跳过步骤770。上述确定步骤的组合当然是可能的,且可根据所需的系统设计来实施。
根据第三实施例,例程继续步骤770c,其中所有装置重新进入其在事务开始之前已进入的相应休眠模式。
图8展示用于DMA控制器的初始化例程的实施例的流程图。在第一步骤810中,作出是否使用型式模式的决定。如果不使用,那么例程分支到步骤820,其中存储源和目的地地址。在随后的步骤830中,通过结束地址或块长度来确定传输的长度。接着例程结束。如果使用型式模式,那么例程转到步骤840,其中设置源和目的地。接着在步骤850中,任选地设置传输的最大长度,且在步骤860中,存储数据终止型式值。在步骤870中,设置型式模式,且初始化例程结束。
图9更详细地展示DMA传送例程(例如图7的步骤740到750)的实施例的流程图。例程在步骤910中开始,在步骤910中,读取开始地址下的源数据。在步骤920中,将此数据写入到目的地地址。在步骤930中,检查是否已设置型式匹配模式。如果未设置,那么递增源地址和目的地地址,且在步骤960中,递减数据长度值。在步骤970中,检查数据长度值是否为0。如果是,那么传送结束,如果不是,那么例程返回步骤910。如果型式模式已被设置,那么例程从步骤930分支到步骤950,其中检查数据是否匹配所述型式。如果匹配发生,那么传送结束。否则,例程继续步骤940,如上文所述。
总之,因为CPU在DMA事务期间并不醒来,所以处理器无须提取指令且不必消耗能量来弄清其为何醒来。如上文所述,在存取快闪存储器时所述提取消耗功率。当DMA控制器被唤醒时,程序存储器可保持断电,因为没有执行从程序存储器和到程序存储器的传送。因此,只有那些对DMA事务必要的组件才会被激活,且可在事务已完成之后返回休眠。而且,如果必要的话,DMA控制器可经编程以被暂停。可使用一般控制寄存器中的相应位或优先权方案或信号来暂停整个DMA模块。然而,还可通过专用通道控制寄存器或优先权方案来暂停个别通道。因此,如果必要的话,对总线的存取可对CPU开放。
因此,本发明非常适合于实行所述目标并实现所提及的目的和优点,以及其中固有的其它目的和优点。虽然已参考本发明的特定优选实施例而描绘、描述且界定了本发明,但所述参考并不暗示对本发明的限制,且不应推断出任何此类限制。如相关领域的一般技术人员将想到,本发明在形式和功能上能够容许相当多的修改、更改和等效物。所描绘和描述的本发明的优选实施例只是示范性的,且并不详尽地阐明本发明的范围。因此,本发明意在仅由所附权利要求书的精神和范围限定,从而在所有方面都给予等效物完全认定。
Claims (25)
1.一种系统,其包括:
中央处理单元(CPU),其可操作以在休眠或低功率模式下和在活动模式下操作;
多个系统组件,其可操作以在休眠或低功率模式下和在活动模式下操作;
直接存储器存取(DMA)控制器,其独立于所述CPU而操作,且可操作以在休眠或低功率模式下和在活动模式下操作,其中所述DMA控制器进一步可操作以从存储器或外围装置传送数据和将数据传送到存储器或外围装置,其中当所述系统处于休眠或低功率模式时,仅所述DMA控制器以及如果必要的话对执行DMA事务来说必需的任何系统组件被切换到活动模式中。
2.根据权利要求1所述的系统,其中在所述DMA事务已完成之后,所述DMA控制器和对执行所述DMA事务来说必需的任何系统组件被切换回所述休眠或低功率模式中。
3.根据权利要求1所述的系统,其中所述DMA控制器在至少一个数据传输已至少部分地完成之后产生信号,所述信号用于去激活所述CPU的所述休眠模式。
4.根据权利要求1所述的系统,其进一步包括功率管理单元,用于控制多个低功率操作模式,其中可将所述CPU和所述DMA控制器独立于彼此而设置到低功率模式中,其中在第一低功率操作模式期间,所述CPU以减小的时钟速度操作,且在第二低功率操作模式期间,所述中央处理单元被停止。
5.根据权利要求3所述的系统,其中所述CPU通过第一中断等级从低功率操作模式切换到较高功率操作模式中,且所述DMA控制器通过不同于所述第一中断等级的第二中断等级从低功率操作模式切换到较高功率操作模式中。
6.根据权利要求1所述的系统,其中所述DMA控制器包括多个通道,且每一通道包括控制寄存器,所述控制寄存器包括可编程位,所述可编程位确定是否产生在数据传送完成后的所述信号。
7.根据权利要求6所述的系统,其中数据传送完成后的所述信号是中断信号,且其中所述控制寄存器包括可编程位字段,所述可编程位字段确定所述中断的优先级。
8.根据权利要求1所述的系统,其进一步包括用于存储预定义数目的第一寄存器、用于对完成的DMA传输的数目进行计数的第二寄存器,以及用于将所述第一和第二寄存器的内容进行比较的比较器,其中所述信号仅在所述第二寄存器的所述内容等于或大于所述第一寄存器的所述内容的情况下产生。
9.根据权利要求1所述的系统,其中所述DMA控制器包括多个通道,且每一通道包括控制寄存器,所述控制寄存器包括偏移位字段,其中所述信号在源或目的地地址等于结束地址减去所述偏移的情况下产生。
10.根据权利要求1所述的系统,其中所述DMA控制器包括多个通道,且每一通道包括唤醒寄存器,其中所述信号在源或目的地地址等于存储在所述唤醒寄存器中的唤醒地址的情况下产生。
11.一种微控制器,其包括:
中央处理单元(CPU),其可以可编程方式在具有第一功率消耗的第一操作模式和具有低于所述第一功率消耗的第二功率消耗的第二操作模式下操作;
总线,其与所述中央处理单元耦合;
存储器,其与所述总线耦合;
外围单元,其与所述总线耦合;以及
直接存储器存取(DMA)控制器,其与所述总线耦合,其中所述DMA控制器独立于所述CPU而操作,以在所述CPU处于所述第二操作模式时,从所述存储器或外围单元传送数据和将数据传送到所述存储器或外围单元,其中在数据传送完成后,所述DMA控制器产生信号,所述信号使所述CPU从所述第二操作模式切换到所述第一操作模式。
12.根据权利要求11所述的微控制器,其进一步包括功率管理单元,用于控制多个低功率操作模式,其中所述DMA控制器和所述CPU可操作以独立地被置于所述低功率操作模式中的一者中。
13.一种通过包括中央处理单元(CPU)的系统中的直接存储器存取(DMA)控制器来独立地执行多个数据从源到目的地的传输的方法,其包括以下步骤:
a)至少使所述CPU和所述DMA控制器从高功率消耗模式切换到低功率消耗模式中;
b)接收DMA请求;
c)使所述DMA控制器切换到所述高功率消耗模式中,而所述CPU保留在所述低功率消耗模式中;
d)通过所述DMA控制器来执行所述DMA,而所述CPU维持所述低功率消耗模式;
e)在完成至少所述DMA请求后,使所述DMA控制器切换到所述低功率消耗模式中。
14.根据权利要求13所述的方法,其中在所述低功率模式期间停止所述CPU。
15.根据权利要求13所述的方法,其中所述CPU在所述低功率模式期间以减小的时钟速度操作。
16.根据权利要求13所述的方法,其中所述DMA控制器包括多个通道,且可编程以设置每一通道的优先级,其中优先级界定通道的执行偏好。
17.根据权利要求13所述的方法,其中所述DMA控制器包括多个通道,且每一通道是可编程的以确定在针对通道的所述DMA请求完成后是否产生用于使所述CPU切换到所述高功率消耗模式的信号。
18.根据权利要求17所述的方法,其中在数据传送完成后的所述信号是中断信号。
19.根据权利要求18所述的方法,其中对于每一通道,所述中断信号的优先级是可编程的。
20.根据权利要求13所述的方法,其中通过目标结束地址或通过匹配待传送数据的预定义数据来确定数据传送的所述完成。
21.根据权利要求13所述的方法,其中步骤e)包括在所述DMA请求完成后,产生致使所述CPU切换到高功率消耗模式中的信号。
22.根据权利要求13所述的方法,其中步骤e)包括在完成多个DMA请求后,产生致使所述CPU切换到高功率消耗模式的信号。
23.根据权利要求13所述的方法,其中在步骤a)中,将所述系统置于所述低功率消耗模式,且在接收到所述DMA请求之后,使所述DMA控制器和所述DMA请求所需的任何系统单元切换到操作模式中。
24.一种通过包括中央处理单元(CPU)的系统中的直接存储器存取(DMA)控制器来独立地执行多个数据从源到目的地的传输的方法,其包括以下步骤:
a)至少使所述CPU和所述DMA控制器从高功率消耗模式切换到低功率消耗模式中;
b)接收DMA请求;
c)使所述DMA控制器切换到操作模式中;
d)通过所述DMA控制器来执行所述DMA,而所述CPU维持所述低功率消耗模式。
25.根据权利要求24所述的方法,其进一步包括以下步骤:
e)在完成所述DMA请求后,使所述CPU切换到所述高功率消耗模式中,且使所述DMA控制器切换到所述低功率消耗模式中。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US87026706P | 2006-12-15 | 2006-12-15 | |
US87029506P | 2006-12-15 | 2006-12-15 | |
US60/870,267 | 2006-12-15 | ||
US60/870,295 | 2006-12-15 | ||
US11/928,415 US8117475B2 (en) | 2006-12-15 | 2007-10-30 | Direct memory access controller |
US11/928,415 | 2007-10-30 | ||
PCT/US2007/087594 WO2008076893A1 (en) | 2006-12-15 | 2007-12-14 | Direct memory access controller |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101558366A true CN101558366A (zh) | 2009-10-14 |
CN101558366B CN101558366B (zh) | 2012-11-21 |
Family
ID=41175628
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800460130A Active CN101558396B (zh) | 2006-12-15 | 2007-12-14 | 直接存储器存取控制器 |
CN2007800460427A Active CN101558366B (zh) | 2006-12-15 | 2007-12-14 | 直接存储器存取控制器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800460130A Active CN101558396B (zh) | 2006-12-15 | 2007-12-14 | 直接存储器存取控制器 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN101558396B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102136943A (zh) * | 2010-01-26 | 2011-07-27 | 精工爱普生株式会社 | 网络系统的节电控制 |
CN102789437A (zh) * | 2011-12-26 | 2012-11-21 | 深圳中科讯联科技有限公司 | 射频sim卡擦除flash时cpu停止工作的数据处理方法 |
CN106020721A (zh) * | 2016-03-30 | 2016-10-12 | 威盛电子股份有限公司 | 存储器装置及其节能控制方法 |
CN106649183A (zh) * | 2016-11-18 | 2017-05-10 | 深圳市博巨兴实业发展有限公司 | 一种基于mcu的低功耗串行通信芯片 |
CN107924222A (zh) * | 2015-09-23 | 2018-04-17 | 英特尔公司 | 用于进入存储器器件的较低功率状态的技术 |
CN108089689A (zh) * | 2017-11-17 | 2018-05-29 | 珠海慧联科技有限公司 | 一种小型SoC超低功耗控制电路与方法 |
CN109669896A (zh) * | 2017-10-13 | 2019-04-23 | 技嘉科技股份有限公司 | 具有多主控芯片的主机板及切换控制顺序的方法 |
CN109767524A (zh) * | 2017-11-10 | 2019-05-17 | 恩智浦有限公司 | 用于汽车进入的型式检测 |
CN112506828A (zh) * | 2020-12-18 | 2021-03-16 | 展讯半导体(成都)有限公司 | 直接内存访问的传输配置方法及装置 |
CN113064847A (zh) * | 2021-03-25 | 2021-07-02 | 浙江清华柔性电子技术研究院 | 数据传输方法、系统、处理器及dma控制器 |
CN114594850A (zh) * | 2020-12-03 | 2022-06-07 | 意法半导体(鲁塞)公司 | 用于管理片上系统的操作的方法 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662889B (zh) * | 2012-04-24 | 2016-12-14 | 华为技术有限公司 | 中断处理方法、中断控制器及处理器 |
CN103777894A (zh) * | 2012-10-25 | 2014-05-07 | 深圳市中兴微电子技术有限公司 | 解决存储器读写冲突的方法及装置 |
JP6176058B2 (ja) | 2013-10-29 | 2017-08-09 | 株式会社ソシオネクスト | ダイレクトメモリアクセス制御装置、その制御方法、及び情報処理システム |
JP2015132894A (ja) * | 2014-01-09 | 2015-07-23 | カシオ計算機株式会社 | マイクロコントローラ装置及びその動作制御方法 |
DE102016203307A1 (de) * | 2016-03-01 | 2017-09-07 | Robert Bosch Gmbh | Speicherdirektzugriffssteuereinrichtung für eine einen Arbeitsspeicher aufweisende Recheneinheit |
CN110737618B (zh) | 2019-10-23 | 2021-03-16 | 盛科网络(苏州)有限公司 | 内嵌处理器进行快速数据通信的方法、装置及存储介质 |
CN111258937B (zh) * | 2020-01-23 | 2021-08-03 | 烽火通信科技股份有限公司 | 一种环式链表dma的传输方法及系统 |
CN114385529A (zh) * | 2020-10-16 | 2022-04-22 | 瑞昱半导体股份有限公司 | 直接记忆体存取控制器、使用其之电子装置以及操作其的方法 |
CN113468084B (zh) * | 2021-05-28 | 2023-08-29 | 北京时代民芯科技有限公司 | 一种多模式dma数据传输系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4989113A (en) * | 1987-03-13 | 1991-01-29 | Texas Instruments Incorporated | Data processing device having direct memory access with improved transfer control |
US5461266A (en) * | 1990-11-27 | 1995-10-24 | Hitachi, Ltd. | Power consumption control system |
US5379381A (en) * | 1991-08-12 | 1995-01-03 | Stratus Computer, Inc. | System using separate transfer circuits for performing different transfer operations respectively and scanning I/O devices status upon absence of both operations |
US5367639A (en) * | 1991-12-30 | 1994-11-22 | Sun Microsystems, Inc. | Method and apparatus for dynamic chaining of DMA operations without incurring race conditions |
JPH05250305A (ja) * | 1992-03-06 | 1993-09-28 | Mitsubishi Electric Corp | データ転送制御方式 |
JP2996183B2 (ja) * | 1996-08-16 | 1999-12-27 | 日本電気株式会社 | Dma機能を備えたデータ処理装置 |
JP3602293B2 (ja) * | 1997-04-22 | 2004-12-15 | 株式会社ソニー・コンピュータエンタテインメント | データ転送方法及び装置 |
-
2007
- 2007-12-14 CN CN2007800460130A patent/CN101558396B/zh active Active
- 2007-12-14 CN CN2007800460427A patent/CN101558366B/zh active Active
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102136943A (zh) * | 2010-01-26 | 2011-07-27 | 精工爱普生株式会社 | 网络系统的节电控制 |
CN102789437A (zh) * | 2011-12-26 | 2012-11-21 | 深圳中科讯联科技有限公司 | 射频sim卡擦除flash时cpu停止工作的数据处理方法 |
CN102789437B (zh) * | 2011-12-26 | 2015-04-22 | 深圳中科讯联科技有限公司 | 射频sim卡擦除flash时cpu停止工作的数据处理方法 |
CN107924222A (zh) * | 2015-09-23 | 2018-04-17 | 英特尔公司 | 用于进入存储器器件的较低功率状态的技术 |
CN106020721B (zh) * | 2016-03-30 | 2019-05-31 | 威盛电子股份有限公司 | 存储器装置及其节能控制方法 |
CN106020721A (zh) * | 2016-03-30 | 2016-10-12 | 威盛电子股份有限公司 | 存储器装置及其节能控制方法 |
CN106649183A (zh) * | 2016-11-18 | 2017-05-10 | 深圳市博巨兴实业发展有限公司 | 一种基于mcu的低功耗串行通信芯片 |
CN109669896A (zh) * | 2017-10-13 | 2019-04-23 | 技嘉科技股份有限公司 | 具有多主控芯片的主机板及切换控制顺序的方法 |
CN109669896B (zh) * | 2017-10-13 | 2022-03-08 | 技嘉科技股份有限公司 | 具有多主控芯片的主机板及切换控制顺序的方法 |
CN109767524A (zh) * | 2017-11-10 | 2019-05-17 | 恩智浦有限公司 | 用于汽车进入的型式检测 |
CN108089689A (zh) * | 2017-11-17 | 2018-05-29 | 珠海慧联科技有限公司 | 一种小型SoC超低功耗控制电路与方法 |
CN114594850A (zh) * | 2020-12-03 | 2022-06-07 | 意法半导体(鲁塞)公司 | 用于管理片上系统的操作的方法 |
CN112506828A (zh) * | 2020-12-18 | 2021-03-16 | 展讯半导体(成都)有限公司 | 直接内存访问的传输配置方法及装置 |
CN112506828B (zh) * | 2020-12-18 | 2024-05-17 | 展讯半导体(成都)有限公司 | 直接内存访问的传输配置方法及装置 |
CN113064847A (zh) * | 2021-03-25 | 2021-07-02 | 浙江清华柔性电子技术研究院 | 数据传输方法、系统、处理器及dma控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN101558396B (zh) | 2011-12-14 |
CN101558366B (zh) | 2012-11-21 |
CN101558396A (zh) | 2009-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101558396B (zh) | 直接存储器存取控制器 | |
US8117475B2 (en) | Direct memory access controller | |
US9921985B2 (en) | Direct memory access controller | |
US20200159279A1 (en) | Low power autonomous peripheral management | |
US6895530B2 (en) | Method and apparatus for controlling a data processing system during debug | |
US7783905B2 (en) | Method for reducing power consumption of a computer system in the working state | |
US7624215B2 (en) | Interrupt controller | |
US7739528B2 (en) | Method for managing and controlling the low power modes for an integrated circuit device | |
EP1785810A1 (en) | Idle mode for power mangagement | |
US5619729A (en) | Power management of DMA slaves with DMA traps | |
US20180101489A1 (en) | Controlling transitions of devices between normal state and quiescent state | |
US10261927B2 (en) | DMA controller with trigger sequence generator | |
CN201583943U (zh) | 音频soc芯片的高效低功耗dma的ip结构 | |
US9459886B2 (en) | Autonomous sleep mode | |
JP2003044177A (ja) | コンピュータ装置、電源制御装置、電源管理方法 | |
US11281473B2 (en) | Dual wakeup interrupt controllers | |
CN103765394A (zh) | 信息处理装置和调度方法 | |
CN111176409B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |