直接存储器访问

文档序号:1042657 发布日期:2020-10-09 浏览:22次 >En<

阅读说明:本技术 直接存储器访问 (Direct memory access ) 是由 F·克卢特 塔巴 于 2020-03-27 设计创作,主要内容包括:本公开的各实施例涉及直接存储器访问。初始化直接存储器访问电路的通道的寄存器组。根据寄存器组的配置执行传输循环,并更新来自存储器的寄存器。在每个传输循环处,根据寄存器组的第一字段执行操作以继续执行或生成第一信号并暂停执行。响应于中央处理单元每次接收到第一信号,执行以下一项操作:生成第二信号;或修改寄存器组的内容和/或将代表寄存器组的下一次更新的第一项目记录到存储器中。然后生成第二信号。(Embodiments of the present disclosure relate to direct memory access. A register set of a channel of a direct memory access circuit is initialized. The transfer cycle is executed according to the configuration of the register set and the registers from the memory are updated. At each transfer cycle, an operation is performed to continue execution or generate a first signal and suspend execution according to a first field of the register set. In response to the central processing unit receiving the first signal each time, performing one of: generating a second signal; or modifying the content of the register set and/or recording a first item representing a next update of the register set in the memory. A second signal is then generated.)

直接存储器访问

相关申请的交叉引用

本申请要求于2019年3月29日提交的法国专利申请号1903407 的优先权,该申请的内容以法律允许的最大程度以其整体通过引用并 入本文。

技术领域

本公开通常涉及电子系统,并且更具体地涉及通过直接存储器访 问(DMA)实施数据传输的电子系统。

背景技术

直接存储器访问是通常由直接存储器访问电路实施的方法,该电 路允许在电子系统中在不涉及中央处理单元(CPU)的情况下,在系 统的元件(***设备,存储器)之间进行数据传输,但不进行初始化 和结束一系列传输循环。一系列传输循环的参数由记录在系统的存储 器中的项目的链接列表确定。然后,每个项目确定该一系列传输循环 中的相应传输循环的一个或多个数据传输的参数。

在本领域中需要克服已知的直接存储器访问方法的全部或部分 缺点。

发明内容

在一个实施例中,一种方法由包括直接存储器访问电路,中央处 理单元和存储器的系统实施,其中,该方法包括:a)初始化直接存 储器访问电路的通道的寄存器组;b)在上述通道上执行传输循环, 上述传输循环中的每个传输循环包括至少一个由寄存器组的内容配 置的数据传输,并且更新来自上述存储器的寄存器组的内容;c)在 上述循环中的每个循环处,根据寄存器组的至少一个第一字段,c1) 在上述通道上继续执行传输循环,或c2)生成第一信号并暂停执行在 上述通道上的传输循环;d)在中央处理单元每次接收到第一信号时, 根据系统的状态,d1)生成第二信号,或d2)修改寄存器组的内容和 /或将代表寄存器组的下一次更新的第一项目记录到存储器中,然后生 成第二信号;以及e)在直接存储器访问电路每次接收到第二信号时, 在上述通道上继续执行上述传输循环。

根据一个实施例,步骤a)包括由中央处理单元对寄存器组编程。

根据一个实施例,在步骤d2)处,中央处理单元读取寄存器组的 第二字段,该第二字段指示存储器中的第一地址,在第一地址处记录 了代表寄存器组的下一次更新的第二项目。

根据一个实施例,在步骤d2)处,中央处理单元不修改寄存器组 的内容,并且将第一项目记录在上述第一地址处。

根据一个实施例,在步骤d2)处,中央处理单元对寄存器组的内 容编程。

根据一个实施例,在步骤d2)处,在不将第一项目记录到上述存 储器中的情况下,基于第一项目执行对寄存器组的内容的编程。

根据一个实施例,直接存储器访问电路在步骤c2)处解除激活上 述通道,并当其在步骤d2)处接收第二信号时激活上述通道。

根据一个实施例,在步骤d2)处,第二信号由中央处理单元生成。

根据一个实施例,在步骤d2)处,中央处理单元对直接存储器访 问电路的另一通道编程,使得上述其他通道将上述第一项目记录到上 述存储器中,并在将上述第一项目记录到存储器中之后生成第二信号。

根据一个实施例,在步骤d2)处,中央处理单元读取寄存器组的 第二字段,上述第二字段指示存储器中的第一地址,在第一地址处记 录了代表寄存器组的下一次更新的第二项目。

根据一个实施例,在步骤d2)处,中央处理单元对第二通道编程, 使得上述第一项目被记录在上述第一地址处。

根据一个实施例,第一信号由直接存储器访问电路生成。

根据一个实施例,第一项目是项目的链接列表的初始项目,并且 优选地,在步骤d2)处,在初始项目之后的上述列表的每个项目被记 录到存储器中。

实施例提供了一种电子系统,该电子系统包括存储器,中央处理 单元和包括至少一个数据传输通道的直接存储器访问电路,该系统被 配置为实施上述方法。

附图说明

下面将结合附图在对具体实施例的非限制性描述中详细讨论前 述和其他特征和优点,其中:

图1以框的形式示意性地示出了对其应用所描述的实施例作为示 例的该类电子系统的实施例;

图2是示出了通过直接存储器访问传输的方法的实施例的定时图;

图3示出了图2的方法的实施方式;

图4示出了图2的方法的另一实施方式;并且

图5示出了图2的方法的另一实施方式。

具体实施方式

在不同的附图中,为相同的元件指定相同的附图标记。特别地, 不同实施例共有的结构和/或功能元件可以用相同的附图标记指定并 且可以具有相同的结构,尺寸和材料特性。

为了清楚起见,仅示出和详细描述了对于理解所描述的实施例有 用的那些步骤和元件。特别地,没有描述经由直接存储器访问电路的 数据传输通道实施数据传输的细节,特别是关于管理访问总线或存储 器的请求以及确认这种请求的细节,所描述的实施例与通常的直接存 储器访问数据传输兼容。此外,没有详细描述当前用于限定在直接存 储器访问电路的通道上的数据传输的循环期间执行的一个或多个数 据传输的各种参数,所描述的实施例与这种通常的参数兼容。此外, 没有详细描述提供直接存储器访问电路的各种电子系统,所描述的实 施例与这种通常的电子系统兼容。

遍及本公开,术语“连接”用于指定在电路元件之间在没有除了 导体之外的中间元件的情况下的直接电连接,而术语“耦合”用于指 定在电路元件之间的电连接,该电连接可以是直接的,也可以是经由 一个或多个其他元件。

在以下描述中,当提及诸如术语“前”,“后”,“顶部”,“底部”, “左”,“右”等修饰绝对位置的术语,或诸如术语“上方”,“下方”, “上方”,“下部”等修饰相对位置的术语,或诸如术语“水平”,“垂 直”等修饰方向的术语时,除非另外说明,否则参考附图的取向。

术语“约”,“大约”,“基本上”和“在...的量级”在本文中用于 指定正负10%的公差,优选地为正负5%的公差。

附图1以框的形式非常示意性地示出了电子电路或系统1的实施 例,该将被描述的实施例应用该类型的电子电路或系统1作为示例。

电子系统1包括:中央处理单元11(CPU),例如状态机、微处 理器、可编程逻辑电路等;一个或多个存储器,其中至少一个例如 SRAM类型的RAM12(MEM);与系统1的外部通信的至少一个例 如串行总线类型的输入/输出接口13(I/O);直接存储器访问电路14 (DMA);以及系统1内部的不同元件之间的一个或多个数据、地址 和/或控制总线,这里以单个总线15的形式示出。

此外,系统1可以根据应用程序集成由框16(FCT)标志的其他 功能,例如专用于图像处理的处理器,其他接口,其他存储器等。

系统1被配置为执行诸如图像处理、编码和/或视频解码、处理源 自传感器的数据等各种应用程序。这种应用程序要求经由总线15在 系统1内部的元件之间进行数据传输。为了使系统1的操作流畅化并 减少中央处理单元11的负载,这种数据传输经由电路14通过直接存 储器访问执行。

在该实施例中,电路14包括多个数据传输通道,并且对于每个 通道,包括通道配置寄存器组。电路14的每个通道使能执行在系统1 的两个元件(电路和/或存储器)之间的数据传输循环。每个循环包括 其参数由配置寄存器组的当前内容确定的一个或多个数据传输,并更 新寄存器组以获得下一个循环的数据传输的参数。在最后一个传输循 环期间,可以省略更新配置寄存器组。此外,传输循环的数据传输可 以与没有数据传输的空传输相对应。

当必须由系统1执行应用程序时,中央处理单元11为应用程序 分配电路14的通道。为此目的,中央处理单元11对电路14的空闲 通道(即尚未分配给应用程序的通道)的配置寄存器组编程或初始化, 使得电路14为该应用程序保留该通道。一旦中央处理单元11已经对 通道配置寄存器组进行了编程,则在通道上连续执行应用程序的多个 数据传输循环。

附图2是以框形式示出了例如通过附图1的系统1实施的实施例 的方法的流程图,该方法通过直接存储器访问进行数据传输。

在初始步骤200(框“初始化寄存器组”)处,通过对与该通道相 关联的配置寄存器组编程,将电路14的通道分配给应用程序。该编 程由中央处理单元11执行。

更特别地,在步骤200处,寄存器组的第一字段[email protected]被编程具有 代表系统1的存储器中的地址的信息,优选地,代表系统1的存储器 12中的地址的信息。该地址与在其中记录了项目的链接列表的第一个 项目(即链接列表的初始项目)的存储器地址相对应。链接列表中的 其他项目也被记录在该存储器中。链接列表限定了应用程序的对应的 一系列传输循环。实际上,项目的链接列表是数据结构的链接列表。 在所描述的实施例中,项目的链接列表中的每个项目代表通道配置寄 存器组的更新。项目的链接列表中的每个项目都确定列表中下一个项 目的存储器地址。此外,项目的链接列表中的每个项目都确定与该项 目相对应的传输循环的(一个或多个)数据传输的参数。

此外,在步骤200处,中央处理单元11对与通道相关联的寄存 器组的第二字段C-sig1编程。字段C-sig1的功能将结合该方法的下 一步骤进行描述。

此外,在步骤200处,中央处理单元11对寄存器组的第三字段C-param编程。字段C-param代表在通道上所实施的下一个数据传输 循环的(一个或多个)数据传输的参数。作为示例,传输循环的(一 个或多个)数据传输的参数包括(一个或多个)数据传输涉及数据或数据块的指示、以及存储将被传输的数据或数据块的来源的地址范围 的起始地址的指示、应复制被传输的数据或数据块的目的地的地址范 围的起始地址的指示、将被传输的数据或数据块的数目的指示、数据 的大小的指示、每块具有的数据的数目的指示、在将被传输的两个连 续的数据之间或两个连续的块之间的地址偏移量的指示等。因此,项 目的链接列表中的每个项目,以及因此在通道上实施的每个传输循环, 可以因此与在来源和目的地之间的一个或多个数据或一个或多个数 据块的传输相对应。

优选地,仅当相应的通道处于解除激活状态或者换言之处于未分 配状态时,才可以由中央处理单元11对寄存器组编程。通道的已分 配或未分配状态由电路14确定。

与通道相关联的寄存器组可以包括除上述字段之外的其他字段。

在初始化步骤200的结束处,中央处理单元11向电路14提供激 活信号。当电路14接收到该激活信号时,中央处理单元11将通道置 于激活状态,或者换言之,处于分配状态。

该方法在下一步骤202(框“(一个或多个)传输”)处进行标记, 例如,传输循环的开始。在步骤202处,电路14在所分配的通道上 执行数据传输,该数据传输由该通道的寄存器组的当前内容,特别是 由该寄存器组的字段C-param参数化。

在下一步骤210(框“下一个LLI?”)处,电路14基于寄存器 组的内容确定当前传输循环是否是应用程序的最后传输循环。作为示 例,当寄存器组的字段[email protected]位于零值处时,例如,当形成字段[email protected] 的位都为逻辑'0'时,这意味着当前传输循环为应用程序的最后一个传输循环。

在当前传输循环是应用程序的最后一个循环(框210的输出为N) 的情况下,在下一步骤212(框“结束”)处,电路14释放或解除激 活该通道并生成用于中央处理单元向其指示该通道空闲的信号。然后 该方法结束。该方法可以通过在新的步骤200处将通道分配给应用程 序而被再次实施。

在应用程序包括下一个传输循环(框210的输出为Y)的情况下, 例如当字段[email protected]为指示与寄存器组的更新相对应的项目的存储器地 址的非零值时,在下一步骤214(框“更新”)处,基于该项目更新该 寄存器组。

在下一步骤204(框“C-sig1”)处,电路14读取寄存器组的字 段C-sig1,即字段C-sig1的当前内容。字段C-sig1代表电路14是否 应该生成信号sig1的指示。作为示例,寄存器组的字段C-sig1和/或 一个或多个其他字段还指示应该生成哪个信号sig1和/或应该在当前 传输循环的何时生成信号sig1。

如果字段C-sig1指示不应该生成信号sig1(框204的输出为N), 则该方法在下一步骤208(框“sig2?”)处继续。

如果字段C-sig1指示应该生成信号sig1(框204的输出为Y), 则该方法在下一步骤206(框“生成sig1”)处继续。在步骤206处, 电路14生成信号sig1。在步骤206之后,该方法在步骤208处继续。

在步骤208处,电路14例如基于在步骤204处读取的寄存器组 的内容,在继续在通道上执行传输循环之前,验证是否应该由电路14 接收信号sig2。

如果在继续执行传输循环之前不接收信号sig2(框208的输出为 N),则该方法在步骤202处继续,例如标记新的传输循环的开始。在 步骤202处,电路14在所分配的通道上执行由通道的寄存器组的当 前内容而参数化的(一个或多个)数据传输,该当前内容例如在最后 步骤214期间根据项目的链接列表的项目而被更新。

如果在继续执行通道上的传输循环之前要接收信号sig2,则该方 法在步骤209(框“是否接收sig2?”)处继续。在步骤209处,电路 14验证它是否接收到信号sig2。只要还未接收到信号sig2(框209的 输出为N),就重复步骤209。当已经接收到信号sig2(框209的输出 为Y)时,该方法在步骤202处继续。

信号sig1和信号sig2的提供使能在通道上暂停执行应用程序的传 输循环,直到电路14接收到信号sig2。

这里假设,至少对于某些传输循环,为中央处理单元11生成信 号sig1,并且在已经接收到信号sig1之后,中央处理单元11根据系 统1的状态进行修改或不修改在通道上提供的下一个传输循环。然后, 中央处理单元生成或触发生成信号sig2,使得在通道上继续执行传输 循环。作为示例,中央处理单元11借助于一个或多个状态寄存器的 内容和/或接收来自系统和/或连接到系统1的各种元件一个或多个中 断信号来确定系统1的状态。

更特别地,当中央处理单元接收到信号sig1并确定应修改通道上 的下一个传输循环时,中央处理单元11修改配置寄存器组的内容和/ 或将代表寄存器组的下一个更新的项目记录到存储器中。对寄存器组 的内容和/或记录该项目的地址的这种修改使得随后将在该通道上实 施与那些被提供的传输循环不同的一个或多个传输循环。

优选地,当中央处理单元11记录代表寄存器组的更新的项目和/ 或修改寄存器组的全部或部分内容,使得实施与所提供的传输循环不 同的一个或多个下一个传输循环时,将与寄存器组的多个连续更新相 对应的多个项目记录到存储器中。这些项目然后以项目的链接列表的 形式被记录,该项目的链接列表与将在通道上实施的应用程序的未来 传输循环相对应。

因此,附图2的方法借助于由电路14生成的信号sig1和接收到 的信号sig2形成的同步信号,使能在执行相同的应用程序时,不执行 最初提供的未来传输循环,并将其替换为其他的未来传输循环。因此, 在执行相同的应用程序时,就执行应用程序的数据传输而言,可以提 供至少两个可能的未来或分支。中央处理单元11根据系统1的状态 在步骤209处执行选择这些未来中的一个或另一个。就应用程序的传 输循环而言提供多个可能的执行的可能性,以及根据系统1的状态在 可能的执行之间进行选择的可能性,使能应用程序的执行适应系统的 状态。

尽管这里没有详细描述,但是优选地,应用程序的每个可能的执 行是预先已知的,并且例如在系统1的引导程序中被确定或限定,该 引导程序例如是当系统1开机或重置时由系统执行的第一程序。

根据实施方式,对于生成信号sig1的所有传输循环,信号sig1 都是相同的,并且然后为中央处理单元11生成信号sig1。在这种情 况下,每次生成信号sig1时,在继续执行传输循环之前,相同的信号 sig2应由中央处理单元11提供并由电路14接收。在这些实施例中, 因此电路14读取字段C-sig1使能确定是否应实施步骤209,以及确 定在该步骤处期望哪个信号sig2。在这样的实施例中,可以同时执行 步骤208和步骤204,然后在步骤206之后直接实施步骤209。

根据其他实施方式,寄存器组包括字段C-sig2,该字段指示在通 道上继续执行传输循环之前,在当前传输循环期间是否应接收信号 sig2。在这种情况下,字段C-sig2和/或寄存器组的一个或多个其他字 段可以指示应在当前循环的何时接收信号sig2和/或应接收哪个信号 sig2。

更通常地,可以修改附图2的方法的顺序和/或步骤的数目。例如, 可以在步骤204和步骤208以及与其相关联的步骤206和步骤209之 后提供步骤210以及与其相关联的步骤212和214。根据另一示例, 可以在传输步骤202之前提供步骤204和步骤208以及与其相关联的 步骤206和步骤209。上述步骤的顺序例如由字段C-sig1和/或由寄存 器组的一个或多个其他字段确定,这些字段指示应在当前传输循环的 何时可以生成信号sig1,例如在更新寄存器组的步骤214之前或之后。 上述步骤的顺序例如由字段C-sig2和/或由寄存器组的一个或多个其 他字段确定,这些字段指示应在当前传输循环的何时可以接收信号sig2。

尽管上文尚未对此进行描述,但是可以假设重复当前的传输循环。 例如,寄存器组可以包括指示应重复当前传输循环的数据传输的字段。 在这种情况下,当重复传输循环时,可以省略步骤214。根据另一示 例,为了重复传输循环,寄存器组的字段[email protected]包含与寄存器组的最后 一次更新相对应的项目的存储器地址,即,该项目指向其自身。在这 种情况下,只要不将字段[email protected]修改以指示除了该项目的地址以外的地 址,就从该项目执行寄存器组的下一次更新。

现在将结合附图3、附图4和附图5更详细地描述上述方法的不 同实施方式。

附图3示出了附图2的方法的第一实施方式的示例,在本示例中, 第一实施方式由附图1的系统1进行,更特别地在称为通道-1的电路 14(DMA)的通道上进行。

在第一实施方式中,为了修改下一个传输循环,中央处理单元11 读取字段[email protected]以获得与在通道上执行的一系列传输循环相对应的项 目的链接列表的下一个项目的地址。在中央处理单元11编程(记录) 该地址之后,然后在该地址处将新的项目记录到存储器中,该新的项 目例如新的项目的链接列表中的第一项目。

在此示例中,对于生成信号sig1的所有传输循环,信号sig1都是 相同的,信号sig1被生成用于中央处理单元11。此外,在此示例中, 每次生成信号sig1时,电路14期望由中央处理单元11提供的相同的 信号sig2。在本示例中,寄存器组不包括字段C-sig2,然后同时执行 步骤208与步骤204,并且在步骤206之后直接执行步骤209。

在时间t0处,中央处理单元11(CPU)初始化通道-1通道的寄 存器组(步骤200)。特别地,中央处理单元11对寄存器组的字段[email protected] 编程,使得其内容代表存储器12(MEM)的地址LLI(0)[email protected]。地址 LLI(0)[email protected]与存储器12中记录的项目的第一链接列表的第一项LLI (0)在存储器12中的地址相对应。

在下一个时间t1处,中央处理单元11将信号使能-通道-1递送到 电路14,然后电路14激活通道-1通道。

然后,电路14从下一时间t2开始,执行由与用于通道-1的通道 相关联的寄存器组的当前内容参数化的数据传输(步骤202)。应用程 序的第一个传输循环的数据传输例如是空传输。

然后,电路14基于寄存器组的内容,例如在读取了寄存器组字 段[email protected]之后,验证当前传输循环是否是应用程序的最后一个循环(步 骤210,在附图3中未示出)。在此示例中,当前传输循环不是应用程 序的最后传输循环。

在下一个时间t3处,电路14然后基于从存储器12中读取的项目 LLI(0),在由字段[email protected]指示的地址LLI(0)[email protected]处更新寄存器组(步 骤214)。在本示例中,在步骤214之后,寄存器组的字段[email protected]指示 第一列表LLI的下一个项目LLI(1)在存储器12中的地址LLI(1) [email protected](“[email protected]=LLI(1)[email protected]”)。

在步骤214之后,电路14读取字段C-sig1以确定其是否应生成 信号sig1(步骤204,在附图3中未示出)。作为示例,在此认为,不 间断地执行与第一列表LLI的项目相对应的传输循环,直到与第一列 表的项目LLI(N)相对应的传输循环为止。换言之,在本示例中,在与列表LLI的项目LLI(N)相对应的传输循环之前,电路14不生 成信号sig1,并且电路14不期望信号sig2。

因此,在下一时间t4处,电路14在通道-1通道上执行由寄存器 组的当前内容(即,这里由第一列表LLI的项目LLI(0))参数化的 (一个或多个)数据传输(步骤202)。

在下一个时间t5处,在已经确定当前传输循环不是应用程序的最 后一个循环之后(步骤210,未示出),电路14基于在由字段[email protected]指 示的地址LLI(1)[email protected]处,从存储器12中读取的项目LLI(1),更新 通道-1通道的寄存器组(步骤214)。在该更新之后,寄存器组的字段[email protected]指示存储器12中的下一个项目LLI(2)的地址LLI(2)[email protected] (“[email protected]=LLI(2)[email protected]”)。

因此,连续地实施多个传输循环,直到时间t6为止。

在下一个时间t6处,在已经确定当前传输循环不是应用程序的最 后一个循环之后(步骤210,未显示),电路14基于在由字段[email protected]指 示的地址LLI(N-1)[email protected]处所读取的项目LLI(N-1),更新与通道-1 通道相关联的寄存器组(步骤214)。在步骤214之后,通道-1通道的寄存器组的字段[email protected]指示第一列表LLI的下一个项目LLI(N)的 地址LLI(N)[email protected](“[email protected]=LLI(N)[email protected]”)。

从下一个时间t7开始,在已经确定对于当前传输循环不应生成信 号sig1也不应接收信号sig2(步骤204,未显示)之后,电路14执 行由寄存器组的当前内容(即,在本示例中,由第一列表LLI的项目 LLI(N-1))参数化的数据传输(步骤202)。

在下一个时间t8处,在已经确定当前传输循环不是应用程序的最 后一个循环(步骤210,未示出)之后,电路14基于被记录在由字段 [email protected]指示的地址LLI(N)[email protected]处的项目LLI(N),更新寄存器组(步 骤214)。在步骤214之后,通道-1通道的寄存器组的字段[email protected]指示 第一列表LLI的下一个项目LLI(N+1)的地址LLI(N+1)[email protected](“[email protected] =LLI(N+1)[email protected]”)。

在步骤214之后,电路14基于寄存器组的字段C-sig1的当前内 容,确定是否应在通道上继续执行传输循环之前,为中央处理单元11 生成信号sg1(步骤204,未示出)。在本示例中,信号sig1应由电路 14生成,并且暂停执行传输循环直到接收到信号sig2为止。换言之, 电路14根据字段C-sig1确定应暂停执行传输循环。

因此,在下一个时间t9处,电路14为中央处理单元11生成信号 sig1(步骤206)。优选地,信号sig1与暂停信号TCI(“传输完成暂 停”)相对应。

在已经接收到信号sig1之后,中央处理单元11根据系统1的状 态确定将被实施的下一个传输循环是否是与第一列表LLI相对应的 那些传输循环。在本示例中认为,下一个传输循环不是由第一列表 LLI确定的那些传输循环。

因此,在下一个时间t10处,中央处理单元11在由寄存器组的字 段[email protected]指示的地址LLI(N+1)[email protected]处记录新的项目LLI'(N+1)。作为 示例,中央处理单元在读取寄存器组的字段[email protected]期间,恢复地址LLI (N+1)[email protected]。优选地,中央处理单元11在存储器12中记录其第一项 目与项目LLI'(N+1)相对应的项目的第二链接列表LLI',例如,代 表将在通道-1通道上实施的下一传输循环的第二列表。

在下一个时间t11处,中央处理单元生成信号sig2,优选地生成 与在时间t1处相同的信号使能-通道-1。

在已经接收到信号sig2(步骤209,未示出)之后,电路14继续 执行在通道-1通道上的传输循环。

因此,在下一个时间t12处,电路14执行由寄存器组的当前内容 (即,此处由项目的第一链接列表的项目LLI(N))参数化的数据传 输(步骤202)。

在下一个时间t13处,在已经确定当前传输循环不是应用程序的 最后一个循环(步骤210,未显示)之后,电路14基于记录在存储器 12中由字段[email protected]指示的地址LLI(N+1)[email protected]处的项目LLI'(N+1), 更新与通道-1通道相关联的寄存器组(步骤214)。在所示的示例中,在此更新之后,通道-1通道的寄存器组的字段[email protected]指示第二列表LLI' 的下一个项目LLI'(N+2)的地址LLI'(N+2)[email protected](“[email protected]=LLI'(N+2) [email protected]”)。

因此,在通道-1通道上的下一传输循环不再由第一列表LLI确定, 而是由项目LLI'(N+1)确定,并且优选地,由具有项目LLI'(N+1) 作为第一项目的第二列表LLI'确定。

在该第一实施例中,中央处理单元11不修改与通道-1通道相关 联的寄存器组的内容,以修改在通道-1通道上应用程序的传输循环的 执行。因此,电路14在步骤206处解除激活通道-1通道,并在接收 到相应的信号sig2时重新激活该信号是无用的。

尽管这尚未在附图3中示出,但是在中央处理单元11在已经接 收到信号sig1(时间t9)之后根据系统1的状态确定将被实施的下一 个传输循环是否是第一列表LLI的那些传输循环的情况下,然后中央 处理单元11直接生成信号sig2,而无需修改存储器12的内容。

附图4示出了附图2的方法的第二实施例的示例,在本示例中由 附图1的系统1实施。

在该第二实施方式中,为了修改与记录到存储器中的项目的第一 链接列表相对应的下一个传输循环,中央处理单元11根据新项目直 接对寄存器组编程。优选地,新项目是第二列表的第一项目,然后将 该第二列表除了第一项目之外的其他项目记录到存储器中,优选地在 中央处理单元已经对寄存器组编程具有第二列表的第一项目之前或 之后。

在本示例中,对于在其中生成信号sig1的所有传输循环,信号sig1 都是相同的,信号sig1被生成用于中央处理单元11。此外,在此示 例中,每次生成信号sig1时,相同的信号sig2由中央处理单元11提 供,并且被电路14期望。在本示例中,寄存器组不包括字段C-sig2, 然后同时执行步骤208和步骤204,并且直接在步骤206之后执行步 骤209。

这里仅详述附图3与附图4之间的区别。

如附图3所示,在时间t8之后并且在已经确定信号sig1(这里是 暂停信号TCI)应由电路14生成并且应该暂停执行传输循环,直到 接收到信号sig2为止之后,在步骤t9处电路14生成信号sig1(步骤 206)。在该第二实施方式中,电路14还解除激活了通道-1通道,使得中央处理单元可以对寄存器组的全部或部分内容编程。

在已经接收到信号sig1之后,中央处理单元11根据系统1的状 态确定将被实施的下一个传输循环是否是与第一列表LLI相对应的 那些传输循环。在本示例中认为,如附图3中所示,下一个传输循环 不是由第一列表LLI确定的那些传输循环。

因此,在下一个时间t10处,中央处理单元11基于项目LLI'(N) 直接对寄存器组的内容编程(块“对寄存器组编程”),而无需将其记 录到存储器12中。

优选地,项目LLI'(N)是项目的第二链接列表LLI'的第一项目。 如附图4所示,然后将列表LLI'的下一个项目记录到存储器中,并且 中央处理单元11根据项目LLI'(N)对字段[email protected]编程,以指示列表 LLI'的下一个项目LLI'(N+1)的地址LLI'(N+1)[email protected](“[email protected]=LLI' (N+1)[email protected]”)。

在下一个时间t11处,中央处理单元11生成信号sig2(使能-通 道-1)。当电路14接收到信号sig2时,电路14激活,或更确切地说 重新激活通道-1通道。

在下一时间t12处,电路14执行由寄存器组的当前内容(即,这 里由在时间t10处直接编程在寄存器组中的项目LLI'(N))参数化的 数据传输(步骤202)。

在这个或这些传输之后,并且在已经确定当前传输循环不是应用 程序的最后传输循环(步骤210,未示出)之后,在时间t13处,电 路基于记录在由寄存器组的字段[email protected]指示的地址LLI'(N+1)[email protected]处的 项目LLI'(N+1),更新寄存器组(步骤214)。在所示的示例中,在此更新之后,通道-1通道的寄存器组的字段[email protected]指示第二列表LLI' 的下一项目LLI'(N+2)的地址LLI'(N+2)[email protected](“[email protected]=LLI'(N+2) [email protected]”)。

在下一个时间t14处,在已经确定了在本示例中对于当前传输循 环,不应该生成信号sig1并且不应该接收到信号sig2(步骤204和 208,未示出)之后,电路14执行由寄存器组的当前内容(即,由第 二列表LLI'的项目LLI'(N+1))参数化的(一个或多个)数据传输(步 骤202)。

尽管这尚未在附图4中示出,但是在中央处理单元11在已经接 收到信号sig1(时间t9)之后,根据系统1的状态确定是否将被实施 的下一个传输循环是否是第一列表LLI的那些传输循环的情况下,中 央处理单元11然后直接生成信号sig2,而无需修改寄存器组的内容。

附图4的实施例相对于附图3的实施例的优点是,它使能用项目 LLI'(N)而不是项目LLI(N+1)代替与在其中生成信号sig1的传输 循环相对应的项目LLI(N),项目LLI'(N)与在其中生成信号sig1 的传输循环之后的传输循环相对应。

附图5示出了附图2的方法的第三实施方式的示例,在本示例中, 通过附图1的系统1实施。

在第三实施方式中,字段C-sig1以及可能地与每个通道相关联的 寄存器组的一个或多个其他字段指示在当前传输循环期间是否应生 成信号sig1,生成哪一个信号sig1,以及在何时生成信号sig1。此外, 在第三实施方式中,与每个通道相关联的寄存器组包括字段C-sig2 以及可能地指示是否应接收信号sig2以继续执行相应的传输循环、指 示在传输循环的何时应期望信号sig2、以及指示哪一个信号sig2的一 个或多个其他字段。因此可以假设,在给定的传输循环处,电路14 将信号sig1发送到中央处理单元11,并且暂停执行传输循环直到接 收到对应的信号sig2。

更特别地,在第三实施方式中,当中央处理单元11从第一通道 接收到信号sig1时,并且当应修改第一通道上的下一个传输循环时, 中央处理单元11使用电路14的第二通道,以将与第一通道上的下一 个传输循环相对应的新项目记录到存储器中,并且使得一旦在第二通 道上的传输已经结束,则生成信号sig2。因此,在第三实施方式中, 当下一个传输循环被修改时,信号sig2不直接由中央处理单元11生 成,而是由电路14直接生成。然而,中央处理单元11通过以适应的 形式对第二通道编程来触发生成信号sig2。

在时间t0处,中央处理单元11(CPU)对通道-1通道的寄存器 组编程(步骤200)。特别地,中央处理单元11对寄存器组的字段[email protected] 编程,使得其内容代表存储器12(MEM)的地址LLI(0)[email protected]。地址 LLI(0)[email protected]与存储器12中存储在存储器12中的项目的第一链接列表 LLI中的第一项目LLI(0)的地址相对应。

在下一个时间t1处,中央处理单元11将信号使能-通道-1递送到 电路14(DMA),然后该电路激活通道-1通道。

然后,电路14读取通道-1通道的寄存器组的内容,尤其是字段 C-sig1,以验证是否应生成信号sig1(步骤204,未示出),并且如果 是(步骤206,未显示),则验证应在当前传输循环的何时进行。基于 读取寄存器组的内容,电路14还特别基于读取字段C-sig2来验证是 否应接收信号sig2(步骤208,未示出),并且如果是(步骤209,未 示出),则验证应在传输循环的何时进行。信号sig1和信号sig2因此 可以用于将在通道-1通道上传输的一系列循环的执行时间与发生在 系统中的其他事件(特别是在电路14的另一通道上执行的传输循环) 同步。

作为示例,在此认为,对于当前传输循环,不应生成信号sig1也 不期待信号sig2以继续执行通道-1通道上的传输循环。

然后,电路14从下一个时间t2开始执行由与通道-1通道相关联 的寄存器组的当前内容参数化的(一个或多个)数据传输(步骤202)。 作为示例,在应用程序的第一传输循环期间,数据传输为空传输。

然后,电路14确定当前传输循环是否是应用程序的最后传输循 环(步骤210,未示出)。

在该示例中,当前传输循环不是应用程序的最后传输循环。因此, 在下一个时间t3处,电路14基于从存储器12读取的项目LLI(0), 在由字段[email protected]指示的地址LLI(0)[email protected]处更新寄存器组(步骤214)。 在该示例中,在步骤214之后,寄存器组的字段[email protected]指示第一列表的下一个项目LLI(1)在存储器12中的地址LLI(1)[email protected](“[email protected]=LLI (1)[email protected]”)。

然后,电路14读取通道-1通道的寄存器组的内容,以验证是否 应生成信号sig1(步骤204,未示出),以及如果是(步骤206,未示 出),应在当前传输循环的何时进行,并验证是否应接收信号sig2(步 骤208,未示出),如果是(步骤209,未示出),应在传输循环的何时进行。

作为示例,在此认为,对于当前传输循环,不应生成信号sig1, 并且不期望信号sig2以继续执行通道-1通道上的传输循环。

然后,电路14从下一个时间t4开始执行(一个或多个)数据传 输(步骤202),该数据传输由与通道-1通道相关联的寄存器组的当 前内容,即,此处由第一列表LLI的项目LLI(0)进行参数化。

然后,电路14确定当前传输循环是否是应用程序的最后传输循 环(步骤210,未示出)。在该示例中,当前传输循环不是应用程序的 最后传输循环,并且在下一时间t5处,电路14基于在由字段[email protected]指 示的地址LLI(1)[email protected]处从存储器12读取的项目LLI(1),更新寄存器组(步骤214)。在该示例中,在步骤214之后,寄存器组的字段 [email protected]指示第一列表LLI的下一个项目LLI(2)在存储器12中的地址 LLI(2)[email protected](“[email protected]=LLI(2)[email protected]”)。

然后,电路14读取通道-1通道的寄存器组的内容,以验证是否 应生成信号sig1(步骤204,未示出),以及如果是(步骤204,未示 出),应在当前传输循环的何时进行,并验证是否应接收信号sig2(步 骤208,未示出),如果是(步骤209,未示出),应在传输循环的何时进行。作为示例,在此认为,对于当前传输循环,应在传输步骤202 结束处为中央处理单元11生成信号sig1,并且应在步骤210之前接 收信号sig2,以继续执行在通道-1通道上的传输循环。

因此,在下一个时间t6处,电路14在通道-1通道上执行由寄存 器组的当前内容,即,在本示例中由第一列表LLI的项目LLI(0) 参数化的(一个或多个)数据传输(步骤202)。

在下一个时间t7处,电路14为中央处理单元11生成信号sig1 (步骤206),在本示例中生成信号TCI。然后,电路14在实施步骤 210之前等待接收信号sig2。换言之,暂停执行在通道-1通道上的传 输循环,直到接收到信号sig2为止。优选地,在生成信号sig1时, 电路14不解除激活通道-1通道。

当中央处理单元11接收到信号sig1时,它根据系统1的状态, 确定在通道-1通道上的下一个传输循环是否是与第一列表LLI相对应 的那些传输循环,或者确定是否应实施除了列表LLI的传输循环以外 的其他传输循环。在此,考虑了应实施除了第一列表LLI的传输循环 以外的其他传输循环的情况作为示例。

在下一个时间t8处,中央处理单元11初始化电路14的另一个通 道(这里为通道-2通道),即,对与通道-2通道相关联的寄存器组编 程(针对通道2通道的步骤200)。更特别地,中央处理单元11对寄 存器组编程,使得通道2通道实施将项目LLI'(2)在地址LLI(2)[email protected]处传输到存储器12。地址LLI(2)[email protected]例如由中央处理单元在读取 与通道-1通道相关联的寄存器组的字段[email protected]时获得。此外,优选地, 项目LLI'(2)是项目的链接列表LLI'的第一项目。在这种情况下, 优选地将列表LLI'的其他项目与项目LLI'(2)同时记录在存储器12中。

此外,中央处理单元11对字段C-sig1以及可能地与通道2通道 相关联的寄存器组的一个或多个其他字段编程,使得一旦项目LLI' (2)到存储器12的传输已经结束,则电路14生成与通道-2通道相 关联的信号sig1。更特别地,在此与通道-2通道相关联的信号sig1是通道-1通道所期望的信号sig2,例如,在读取与通道-1通道相关联 的寄存器组时,已经向中央处理单元11告知了通道-1通道所期望的 信号sig2。

在下一个时间t9处,中央处理单元将信号使能-通道-2递送到电 路14,然后电路14激活通道-2通道。

然后,电路14读取与通道-2通道相关联的寄存器组的内容,并 被告知针对通道2通道上的当前传输循环将生成信号sig1,该信号 sig1是通道-1通道的信号sig2,并且一旦项LLI'(2)经由通道2通 道已经被传送到存储器中,则应生成该信号sig1。

因此,在下一个时间t10处,电路14在地址LLI(2)[email protected]处将项 目LLI'(2)传输到存储器中。

在下一个时间t11处,电路14生成与通道2通道相关联的信号 sig1,即,通道-1通道所期望的信号sig2。

在下一个时间t12处,在电路14已经接收到信号sig2之后,并 且已经确定通道-1通道的当前传输循环不是应用程序的最后一个传 输循环(步骤210,未显示)之后,电路14更新与通道-1通道相关 联的寄存器组(步骤214)。更特别地,电路14根据从存储器12读取的项目LLI'(2),在由寄存器组的字段[email protected]指示的地址LLI(2)[email protected] 处,更新寄存器组。在更新之后,在本示例中,字段[email protected]指示列表 LLI'的下一个项目在存储器12中的地址LLI'(3)[email protected],该列表LLI' 将项目LLI'(2)作为其第一项(“[email protected]=LLI'(3)[email protected]”)。

然后,电路14读取通道-1通道的寄存器组的内容,以验证是否 应生成信号sig1(步骤204,未示出),以及如果是(步骤206,未示 出),应在当前传输循环的何时进行,并且验证是否应接收信号sig2 (步骤208,未示出),以及如果是(步骤209,未示出),应在传输循环的何时进行。作为示例,在此认为对于当前传输循环,不应生成 信号sig1也不期望信号sig2,以继续执行在通道-1通道上的传输循环。

在下一个时间t13处,电路14在通道-1通道上执行由与通道-1 通道相关联的寄存器组的当前内容(即,在此由项目LLI'(2))参数 化的(一个或多个)数据传输(步骤202)。

在第三实施方式中,中央处理单元11不修改与通道-1通道相关 联的寄存器组的内容,以修改在通道-1通道上应用程序的传输循环的 执行。因此,通道-1通道在应用程序的执行期间始终保持激活和被分 配状态。

此外,与第一实施例和第二实施例相比,在第三实施方式中,除 了使用字段C-sig1和字段C-sig2来在至少一个传输循环处,根据系 统1的状态来修改在通道上执行的一系列传输循环以外,字段C-sig1 和字段C-sig2也可以用于将通道上传输循环的执行与系统1中发生的 事件同步。

此外,在第三实施例中,中央处理单元11不必访问存储器以插 入替换项目LLI(N)的项目LLI'(N)用于对通道-1通道编程,辅 助的通道2通道执行存储器访问。换言之,中央处理单元11不必管 理存储器访问和可能与这种存储器访问相关联的时间限制。但是,归因于由辅助的通道2通道发出的信号sig2,确保了为其分配了通道-1 通道的应用程序只有在通道2通道已经将调节应用程序的下一次传输 的链接列表项目写入存储器中后才能恢复执行。

尽管这尚未在附图5中示出,但是在中央处理单元11在已经接 收到信号sig1(时间t7)之后,根据系统1的状态确定将被实施的下 一个传输循环是否是第一列表LLI的传输循环的情况下,中央处理单 元初始化通道2通道,使得在时间t10处执行的传输是空传输,但是 通道-1通道所期望的信号sig2仍然由通道2通道在空传输的结束处生 成。在这种情况下,在地址LLI(2)[email protected]处记录的列表LLI的项目LLI (2)不被项目LLI'(2)代替。

尽管尚未结合附图2、附图3和附图4对此进行描述,但是当基 于项目的链接列表的项目更新寄存器组的全部或部分内容时,该项目 包括代表更新寄存器组的全部或部分字段的信息,特别是确定下一个 传输循环的(一个或多个)数据传输的字段C-para的信息。

已经描述了各种实施例和变型。本领域技术人员将理解,这些各 种实施例和变型的某些特征可以被结合,并且本领域技术人员将想到 其他变型。特别地,已经描述了第一实施方式和第二实施方式,其中, 在通道上执行的一系列传输循环的两个传输循环之间的字段C-sig1 的内容可能不同,即,对于每个循环,根据字段C-sig1的内容可以暂 停,或不暂停执行传输循环。可以假设字段C-sig1的内容对于应用程 序的所有传输循环中都是相同的,例如,如果字段C-sig1属于相应配 置的静态寄存器,并且状态寄存器的内容不能在更新来自存储器的寄 存器组时被修改。在这种变型中,根据字段C-sig1,例如对于每个传输循环中断,或例如从不中断执行应用程序的传输循环。

此外,第一实施方式和第二实施方式可以应用于包括单个通道的 电路14。

最后,基于上文给出的功能性指示,所描述的实施例和变型的实 际实施在本领域技术人员的能力范围内。特别地,基于上文给出的功 能性指示,确定项目的链接列表的每个项目的数据结构和/或配置寄存 器组的寄存器的数目和大小将在本领域技术人员的能力范围内。此外, 在除了附图1的系统1之外的其他系统中实施所描述的实施例将在本 领域技术人员的能力范围内。

这样的改变、修改和改进旨在作为本公开的一部分,并且旨在落 入本发明的精神和范围内。因此,前面的描述仅是示例性的,并且不 旨在是限制性的。本发明仅在以下的权利要求书及其等同物中限定。

21页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于卷积神经网络的加速系统、方法及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!