具有触发序列发生器的DMA控制器的制作方法

文档序号:16667179发布日期:2019-01-18 23:20阅读:182来源:国知局
具有触发序列发生器的DMA控制器的制作方法

本发明涉及直接存储器存取(dma)控制器,并且更具体地,涉及具有触发序列发生器的dma控制器。



背景技术:

直接存储器存取是用于允许例如来自外围装置的数据被转移到存储器而不需要处理器的干预的技术,这使处理器能够并行地执行其它任务。数据转移任务由dma控制器而不是处理器来管理。图1例示了用于诸如微控制器单元(mcu)和数字信号处理器(dsp)的各种集成电路芯片上的常规dma控制器10。dma控制器10位于诸如ahb(高级高性能总线)或axi(高级可扩展接口)的第一高速总线12和低速从总线14之间。可以理解,ahb和axi总线主机在许多方面是不同的,但dma控制器可用于这两种系统。高速总线12用于将数据移入和移出存储器(未示出)。诸如中央处理单元(cpu)的处理器经由低速总线14连接到dma控制器10,并且向dma控制器10提供信息以配置dma控制器10。也就是说,cpu指示dma控制器10有多少数据要移动,在哪里获取数据(源地址)以及将数据移动到哪里(目的地地址)。

dma控制器10包括数据路径16、地址路径18、控制和仲裁逻辑20以及dma程序模型和数据转移描述符逻辑22。数据路径16表示要从源地址转移到目的地地址的数据的路径,而地址路径18是源地址和目的地地址的路径。控制和仲裁逻辑20通过例如将源/目的地地址放在高速总线12上并递减计数器(例如,如果移动8个字,则从7减到0)控制循环来安排与高速总线12的数据交换并管理数据转移。dma控制器10通过加载描述关于源/目的地、突发大小、转移的长度等的所有细节的转移配置(例如,描述符)来执行操作。程序模型和数据转移描述符逻辑22从低速总线14接收该描述符信息来管理转移。

当外部触发(诸如来自cpu的软件触发或者由诸如计时器的片上外设启动并由dma程序模型和数据转移描述符逻辑22接收的硬件触发)到达时,dma控制器10将开始从指定的源地址获取数据,并将获取的数据移动到指定的目的地地址,直到转移了指定的数据量。如上所述,在此时间段期间,处理器(cpu)在数据移动期间不需要进行干预,因此它被释放用于其它任务或者可以睡眠。

在一些情况下,周期性地进行数据移动,数据转移之间的间隔是等距的或不等距的。可以使用由cpu发出的软件触发或来自另一片上外设(如计时器)的硬件触发来启动此类周期性数据移动。如果使用来自cpu的软件触发,则cpu必须保持唤醒,以便它可以触发dma转移请求。这在功耗是关键设计目标的诸如计量或医疗装置的一些应用中效率不高。另一方面,如果使用片上计时器,则在dma转移之间的间隔不均匀分布的情况下需要软件来刷新计时器的计时模数,这也需要cpu干预。此外,对于一些芯片,只有一个计时器资源可用,但是可能需要该计时器用于其它应用。

因此,具有触发dma活动同时允许cpu睡眠并且同时不捆绑其它芯片资源的方法将是有利的。

附图说明

本发明的实施例在本文中以示例的方式例示出,并且不受附图的限制,在附图中相同的附图标记指示相似的元件。附图中的元件为了简单和清楚而被例示出,并且不一定按比例绘制。作为示例,通过参考附图的以下详细描述,所公开的实施例的各个方面、特征和益处将变得更加明显,其中:

图1是常规dma控制器的示意性框图;

图2是根据本发明的实施例的dma控制器的示意性框图;

图3是例示使用与各种外围装置连接的根据本发明的实施例的dma控制器的数据的示例流的示意图;以及

图4是根据本发明的实施例的触发dma的方法的流程图。

具体实施方式

此处公开了本发明的详细例示性实施例。然而,为了描述本发明的示例实施例的目的,本公开所参考的具体结构和功能细节仅仅是代表性的。本发明的实施例可以以许多替代形式实施,并且不应被解释为仅限于本文所阐述的实施例。

如本文所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文另有明确指示。还应当理解,术语“包括”、“包括有”、“具有”、“有”、“包含”和/或“包含有”指定所述特征、步骤或组件的存在,但不排除存在或添加一个或多个其它特征、步骤或组件。还应当注意,在一些替代实施例中,某些功能或动作可以不按照附图中所示的顺序进行。

在一个实施例中,本发明是通过低速总线连接到中央处理单元并且通过高速总线连接到存储器的dma控制器。dma控制器将数据从源数据地址转移到目的地地址。dma控制器包括数据路径、地址路径、控制和仲裁单元、dma程序模块以及内置的触发序列发生器。数据路径连接到高速总线,用于通过高速总线将数据转移到存储器。地址路径连接到高速总线,用于指示要存储被转移到高速总线的数据的存储器地址。控制和仲裁单元连接到地址路径和数据路径,并控制dma控制器的数据移动操作。dma程序模块连接到低速总线,并启动通过数据路径在高速和低速总线之间的数据移动。触发序列发生器连接到控制和仲裁单元以及dma程序模块,并将使dma程序模块启动数据移动操作的内部触发输出到dma程序模块。触发序列发生器包括存储多个计时器模数的计时器模数缓冲器,其中每个计时器模数指示对应的数据移动操作所需的时间。

在另一个实施例中,本发明是与dma控制器集成的触发序列发生器。触发序列发生器包括计时器模数缓冲器、计时器和多路复用器。计时器模数缓冲器存储多个计时器模数。计时器连接到模数缓冲器,并从其中接收指示当前数据移动操作的间隔的当前计时器模数。当计数值等于预定值时,计时器产生计数值和内部计时器触发信号。多路复用器连接到计时器并接收内部计时器触发信号。多路复用器基于选择信号输出内部计时器触发信号和外部触发信号之一。内部计时器触发信号指示当前数据移动操作的完成。

现在参考图2,示出了根据本发明的实施例的具有内置的触发序列发生器32的dma控制器30的示意性框图。与dma控制器10(图1)一样,dma控制器30位于高速总线12和低速总线14之间,并且包括数据和地址路径16和18、控制和仲裁逻辑34以及dma程序模型和数据转移描述符逻辑36。dma程序模型和数据转移描述符逻辑36与dma程序模型和数据转移描述符逻辑22类似,除了它从触发序列发生器32而不是直接从外部源接收触发信号并且向触发序列发生器32提供诸如缓冲器地址、模数值和索引的数据之外。dma程序模型和数据转移描述符逻辑36还向触发序列发生器32提供选择信号以将触发的源指定和选择为来自触发序列发生器32或外部触发。控制和仲裁逻辑34与控制和仲裁逻辑20类似,除了它连接到触发序列发生器32并将转移的状态提供给触发序列发生器32,使得如下面将讨论的在完成最后一次数据移动时计时器模数被刷新。

内置的触发序列发生器32是基于计时器的子块,并且包括计时器模数缓冲器40、计时器42和多路复用器44(即,多路复用器44)。计时模数缓冲器40存储从dma程序模型和数据转移描述符逻辑36接收到的多个计时模数。在数据移动过程完成时刷新计时模数,这意味着每次数据移动之间的间隔可以在既不唤醒cpu用于发出软件触发也不使用来自其它外设的不同硬件触发的情况下进行配置。尽管如下所述,但是可以由触发序列发生器32接收外部触发。例如,如果触发序列发生器32可以在没有cpu的协助的情况下执行八(8)个事务,则缓冲器40的大小被设计为保持八(8)个计时模数。在一个实施例中,缓冲器40包括16个寄存器,或者大小被设计成保持16个计时间隔。

计时模数缓冲器40连接到计时器42。计时器42可以是向下计数或向上计数的计时器。在完成第一次dma转移之后,计时器42将开始向上计数(在向上计数计时器的情况下),直到达到存储在缓冲器40中的模数之一的值。从dma程序模块逻辑36接收计时器模数缓冲器40的索引以指示要由计时器42使用的模数。一旦计时器42达到模数值,则激活从计时器42向多路复用器44的输入,这触发下一个dma操作。也就是说,输入到复用器44的值指示当前事务完成,从而可以启动下一个事务。同时,计时器42停止计数并被清除或复位。多路复用器选择信号来自dma程序模块逻辑36,并且是当事务建立时从cpu接收的程序数据的一部分。计时器42基于从控制和仲裁逻辑34接收到的转移的状态而被清除。计时器42将恢复向上计数(从零开始),直到其计数达到从计时器模数缓冲器40中的下一个位置读取的模数的值,此时再次激活触发信号(从计时器到多路复用器44以及从多路复用器到dma程序模块逻辑36)。

获得有效触发信号的常规方法是从外部装置接收外部触发信号或从cpu接收指示应启动数据转移的软件触发。然而,如上所述,本发明提供了独立于外部触发的dma控制器30的内部触发源。另一方面,触发序列发生器32可以与现有技术中相同地接收外部触发信号,在这种情况下,到多路复用器40的选择信号被设置为使得外部触发被选择的值。换句话说,除了现有技术的外部触发之外,本发明还提供了由触发序列发生器32产生的附加的触发序列。

图3是例示使用图2的dma控制器30可以如何在存储器50和不同的外围装置52-58之间移动数据的示意图。外围装置包括模拟数字转换器(adc)52、数字模拟转换器(dac)54、lcd56和uart58,其中这些装置52-58中的每一个包括相关的硬件元件,例如传感器62-64、玻璃(glass)66和uart68。在图3中,dma60负责针对三个通道(ch0-ch2)在不同空间(存储器、外设等)之间移动数据。例如,数据在路径0上从adc52移动到lcd56;在路径1上从uart58移动到存储器50;并且在路径2上从存储器50移动到dac54。在一个示例中,路径0上的数据每50ms发生一次,路径1上每100ms发生一次并且路径2上每20ms发生一次。为了实现该数据移动,使用常规的dma控制器10(图1),有三个主要的解决方案。第一个是让cpu一直运行,并且按照应用需求时常明确地配置dma转移。显然,这种方法的缺点是cpu总是消耗功率,特别是当cpu不需要用于任何其它任务时。第二个选项是周期性地唤醒cpu,并按照需求配置dma的不同通道,例如,每50ms开始通道0上的转移请求等。这样也需要计时器来唤醒cpu。另一个缺点是cpu每次配置dma时都会消耗功率。第三个选项是具有三个独立的片上计时器,每个计时器负责为特定dma通道产生硬件触发。这里的缺点是需要数个独立的计时器一直运行。然而,利用本发明的dma控制器30,只需要位于dma控制器30内的一个计时器42,并且cpu只要完成建立外设50-58就可以睡眠。dma控制器30在接收到请求时开始第一数据移动,并且在第一数据移动之后,dma控制器30本身进入空闲状态。第一个请求可以来自cpu建立的软件触发,或来自外围装置52-58之一的硬件触发。内置的计时器42使用存储在计时器模数缓冲器40中的指定的计时模数开始向上计数(或向下计数)。当计数器值达到模数值时,计时器42产生通过多路复用器44提供给dma程序模块36的触发以请求另一次转移。由于在转移完成之后刷新模数(即,缓冲器指针指向下一个缓冲器地址),所以转移之间的间隔是独立的并且是可配置的。

图4是根据本发明的实施例的操作dma控制器的方法的流程图70。在第一步骤72中,中央处理器(cpu)配置包括每次转移的计时器模数的dma转移描述符。参考图2,cpu经由低速从总线14向dma控制器30发送dma转移描述符和计时器模数,dma转移描述符进入dma程序模块36,并且计时模数从dma程序模块36传递到触发序列发生器32的计时器模数缓冲器40。

在步骤74,dma控制器30开始第一次转移,并且假设cpu没有其它任务要执行则它可以进入睡眠。步骤76示出了dma控制器30完成第一次转移,并且计时器42开始使用存储在模数缓冲器40中的指定的模数进行计数。此时,dma控制器30处于空闲状态,如步骤78所示。在步骤80,如果计时器42尚未完成其计数,则dma控制器30循环回到步骤78。因此,执行步骤78和80,直到计时器42完成计数。

在步骤80,当计时器42例如通过向下计数至零或向上计数达指定的计时器模数而完成计数时,dma控制器30开始另一次转移操作,如步骤82所示。步骤84指示dma控制器30将使用针对每次转移的存储在缓冲器40中的指定的计时器模数来重复步骤76-82。

因此,如对本领域技术人员而言显然的,本发明提供了一种具有内置的计时序列发生器的dma控制器,该内置的计时序列发生器包括用于保持一个或多个计时器模数的缓冲器,这允许dma控制器在cpu睡眠时管理可能具有不同计时要求的多个dma转移。

本文中对“一个实施例”或“实施例”的引用意味着结合实施例描述的特定特征、结构或特性可以包括在本发明的至少一个实施例中。短语“在一个实施例中”在说明书中的不同地方的出现不一定都是指相同的实施例,也不是一定与其它实施例相互排斥的单独的或替代实施例。这对术语“实施方式”也同样适用。

为了描述的目的,术语“耦合”、“耦合到”、“耦接”、“连接”、“连接到”或“被连接”是指能量被允许在两个或更多个元件之间转移并且考虑加入一个或多个附加元件(尽管不是必需的)的现有技术或稍后开发的领域中已知的任何方式。术语“直接耦合”、“直接连接”等意味着连接的元件是连续的或经由用于转移的能量的导体进行连接。

虽然以下方法权利要求中的步骤以具有对应的标号的特定顺序被列举,但是除非另有说明权利要求的记载暗示用于实施这些步骤中的一些或所有步骤的特定顺序,否则那些步骤不一定意图被限制为以特定序列来实施。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1