直接内存存取装置、数据传输方法及集成电路系统转让专利

申请号 : CN202211093188.X

文献号 : CN115168260B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡杰蔡权雄牛昕宇

申请人 : 深圳鲲云信息科技有限公司

摘要 :

本申请涉及直接内存存取的技术领域,提供一种直接内存存取装置、数据传输方法及集成电路系统,该直接内存存取装置包括:直接内存存取控制器、通道配置模块、第一数据处理模块和多个第二数据处理模块,其中,直接内存存取控制器和通道配置模块均与系统总线连接,第一数据处理模块与直接内存存取控制器、通道配置模块连接,每个第二数据处理模块通过对应的预设通道与第一数据处理模块连接。本申请旨在降低DMA相关电路的设计难度和多DMA接口调度难度。

权利要求 :

1.一种直接内存存取装置,其特征在于,所述直接内存存取装置包括:

直接内存存取控制器,与系统总线连接;

通道配置模块,与所述系统总线连接,用于获取读数据或写数据的通道配置信息;

第一数据处理模块,与所述直接内存存取控制器、所述通道配置模块连接;

多个第二数据处理模块,每个所述第二数据处理模块通过对应的预设通道与所述第一数据处理模块连接;

其中,所述通道配置模块还用于将所述读数据或写数据的通道配置信息发送给所述第一数据处理模块;

所述第一数据处理模块包括数据分发模块,所述预设通道包括第一通道;所述读数据的通道配置信息包括第一通道的通道标识和有效数据长度;所述数据分发模块包括数据选择器和多个第一数据转换单元,每个所述第一数据转换单元的第一端均与所述数据选择器连接,每个所述第一数据转换单元的第二端通过对应的第一通道与所述第二数据处理模块连接;

所述数据选择器用于根据所述第一通道的通道标识从多个所述第一通道中确定第一目标通道,并将所述直接内存存取控制器传输的读数据发送至所述第一目标通道对应的第一数据转换单元;所述第一数据转换单元用于根据所述第一通道的有效数据长度,将所述数据选择器发送的所述读数据分成多个第一子数据,并通过所述第一目标通道将所述第一子数据发送给对应的所述第二数据处理模块;所述第二数据处理模块用于对所述第一子数据执行设定操作;

所述第二数据处理模块还用于通过对应的预设通道将多个第二子数据输出至所述第一数据处理模块;所述第一数据处理模块还用于根据所述写数据的通道配置信息,将所述多个第二子数据进行组合得到写数据,并将所述写数据传输至所述直接内存存取控制器。

2.如权利要求1所述的直接内存存取装置,其特征在于,所述第二数据处理模块包括读数据处理模块;所述读数据处理模块通过对应的第一通道与所述数据分发模块连接;

所述读数据处理模块用于对所述第一子数据执行设定操作。

3.如权利要求2所述的直接内存存取装置,其特征在于,所述第一数据转换单元包括第一移位电路、第一拼接电路、第一存储器和第一计数电路;

所述第一移位电路的第一端作为所述第一数据转换单元的第一端,所述第一拼接电路连接于所述第一移位电路的第二端与所述第一存储器的第一端之间,所述第一存储器的第二端作为所述第一数据转换单元的第二端,所述第一计数电路分别连接于所述第一移位电路、第一拼接电路、第一存储器的受控端;

所述第一移位电路用于根据所述第一通道的有效数据长度,从所述读数据中搬移出多个子读数据;第一拼接电路用于将所述多个子读数据拼接为第一子数据;所述第一存储器用于暂存所述第一子数据,并通过第一目标通道输出所述第一子数据;所述第一计数电路用于对所述读数据的数量进行统计,并根据统计结果控制所述第一移位电路、第一拼接电路和所述第一存储器。

4.如权利要求1至3任一项所述的直接内存存取装置,其特征在于,所述第一数据处理模块包括数据组合模块,所述第二数据处理模块包括写数据处理模块,所述预设通道包括第二通道;所述写数据处理模块通过对应的第二通道与所述数据组合模块连接;

所述写数据处理模块用于通过对应的第二通道将多个第二子数据输出至所述数据组合模块;

所述数据组合模块用于根据所述写数据的通道配置信息,从多个所述第二通道中确定所述多个第二子数据对应的第二目标通道;

所述数据组合模块还用于根据所述写数据的通道配置信息,将通过所述第二目标通道接收的所述多个第二子数据进行组合得到写数据,并将所述写数据传输至所述直接内存存取控制器。

5.如权利要求4所述的直接内存存取装置,其特征在于,所述数据组合模块包括排序单元和多个第二数据转换单元,每个所述第二数据转换单元的第一端通过对应的第二通道与所述写数据处理模块连接,每个所述第二数据转换单元的第二端均与所述排序单元连接;

所述写数据的通道配置信息包括第二通道的通道标识和有效数据长度;

所述第二数据转换单元用于根据所述第二通道的有效数据长度,将通过对应的第二通道接收的多个第二子数据进行组合得到写数据,并将所述写数据发送至所述排序单元;

所述排序单元用于根据所述第二通道的通道标识从多个所述第二通道中确定第二目标通道,并对所述第二目标通道对应的第二数据转换单元发送的所述写数据进行排序,以及将排序的所述写数据传输至所述直接内存存取控制器。

6.如权利要求5所述的直接内存存取装置,其特征在于,所述第二数据转换单元包括第二移位电路、第二拼接电路、第二存储器和第二计数电路;

所述第二移位电路的第一端作为所述第二数据转换单元的第一端,所述第二拼接电路连接于所述第二移位电路的第二端与所述第二存储器的第一端之间,所述第二存储器的第二端作为所述第二数据转换单元的第二端,所述第二计数电路分别连接于所述第二移位电路、第二拼接电路、第二存储器的受控端;

所述第二移位电路用于根据所述第二通道的有效数据长度,将通过对应的第二通道接收的多个第二子数据进行组合得到子写数据;第二拼接电路用于将所述子写数据拼接为所述写数据;所述第二存储器用于暂存并输出所述写数据;所述第二计数电路用于对所述写数据的数量进行统计,并根据统计结果控制所述第二移位电路、第二拼接电路和所述第二存储器。

7.如权利要求5所述的直接内存存取装置,其特征在于,所述排序单元包括第一状态机和第二状态机;

所述第一状态机用于根据所述第二通道的通道标识从多个所述第二通道中确定第二目标通道,并对所述第二目标通道对应的第二数据转换单元发送的多个写数据进行排序;

所述第二状态机用于将排序的所述多个写数据进行组合,并将组合后的所述写数据传输至所述直接内存存取控制器。

8.如权利要求1所述的直接内存存取装置,其特征在于,所述直接内存存取装置包括第一工作模式和第二工作模式;

在所述第一工作模式下,所述第一数据处理模块通过同一预设通道将所述第一子数据发送至对应的第二数据处理模块,所述第二数据处理模块通过同一预设通道将多个第二子数据输出至所述第一数据处理模块;

在所述第二工作模式下,所述第一数据处理模块通过不同预设通道将所述第一子数据发送至各自对应的第二数据处理模块,各所述第二数据处理模块通过不同预设通道将多个第二子数据输出至所述第一数据处理模块。

9.如权利要求8所述的直接内存存取装置,其特征在于,所述第一工作模式和第二工作模式是根据所述通道配置信息确定的,所述通道配置信息是根据工作模式标识和通道标识生成的;其中,所述工作模式标识用于指示所述第一工作模式或所述第二工作模式,所述通道标识用于指示所述读数据或写数据对应的预设通道。

10.如权利要求9所述的直接内存存取装置,其特征在于,所述通道配置模块包括第一寄存器和第二寄存器,所述第一寄存器用于存储所述工作模式标识,所述第二寄存器用于存储所述通道标识。

11.如权利要求1所述的直接内存存取装置,其特征在于,所述通道配置模块、所述第一数据处理模块和所述第二数据处理模块中的一个或多个集成在所述直接内存存取控制器。

12.一种数据传输方法,其特征在于,应用于直接内存存取装置,所述直接内存存取装置包括通道配置模块、直接内存存取控制器、第一数据处理模块和多个第二数据处理模块,每个所述第二数据处理模块通过对应的预设通道与所述第一数据处理模块连接;所述第一数据处理模块包括数据分发模块,所述预设通道包括第一通道;所述数据分发模块包括数据选择器和多个第一数据转换单元,每个所述第一数据转换单元的第一端均与所述数据选择器连接,每个所述第一数据转换单元的第二端通过对应的第一通道与所述第二数据处理模块连接;所述方法包括:通过所述通道配置模块获取读数据的通道配置信息,并将所述读数据的通道配置信息发送至所述第一数据处理模块,所述读数据的通道配置信息包括第一通道的通道标识和有效数据长度;

通过所述直接内存存取控制器基于系统总线读取所述读数据,并将所述读数据输出至所述第一数据处理模块;

通过所述数据选择器根据所述第一通道的通道标识从多个所述第一通道中确定第一目标通道,并将所述直接内存存取控制器传输的读数据发送至所述第一目标通道对应的第一数据转换单元;通过所述第一数据转换单元根据所述第一通道的有效数据长度,将所述数据选择器发送的所述读数据分成多个第一子数据,并通过所述第一目标通道将所述第一子数据发送给对应的所述第二数据处理模块;

通过所述第二数据处理模块所述第一子数据执行设定操作。

13.一种数据传输方法,其特征在于,应用于直接内存存取装置,所述直接内存存取装置包括通道配置模块、直接内存存取控制器、第一数据处理模块和多个第二数据处理模块,每个所述第二数据处理模块通过对应的预设通道与所述第一数据处理模块连接;所述第一数据处理模块包括数据组合模块,所述预设通道包括第二通道;所述数据组合模块包括排序单元和多个第二数据转换单元,每个所述第二数据转换单元的第一端通过对应的第二通道与所述第二数据处理模块连接,每个所述第二数据转换单元的第二端均与所述排序单元连接;所述方法包括:通过所述通道配置模块获取写数据的通道配置信息,并将所述写数据的通道配置信息发送至所述第一数据处理模块,所述写数据的通道配置信息包括第二通道的通道标识和有效数据长度;

通过所述第二数据处理模块,经由所述第二通道将多个第二子数据输出至所述第一数据处理模块;

通过所述第二数据转换单元根据所述第二通道的有效数据长度,将通过对应的第二通道接收的多个第二子数据进行组合得到写数据,并将所述写数据发送至所述排序单元;通过所述排序单元根据所述第二通道的通道标识从多个所述第二通道中确定第二目标通道,并对所述第二目标通道对应的第二数据转换单元发送的所述写数据进行排序,以及将排序的所述写数据传输至所述直接内存存取控制器;

通过所述直接内存存取控制器基于系统总线对所述写数据进行写入操作。

14.一种集成电路系统,其特征在于,所述集成电路系统包括权利要求1‑11任一项所述的直接内存存取装置。

说明书 :

直接内存存取装置、数据传输方法及集成电路系统

技术领域

[0001] 本申请涉及直接内存存取的技术领域,尤其涉及一种直接内存存取装置、数据传输方法及集成电路系统。

背景技术

[0002] 直接内存存取(Direct Memory Access,DMA)控制器是当今主流的片上系统(SystemonChip,SOC)中必需的设备,其功能是代替CPU完成大量、复杂的数据搬运过程,而无需CPU的干预,以提高系统工作效率。在SOC系统的中DMA控制器往往直接挂在系统总线上,其直接访问存储设备以及I/O设备是通过总线完成的,可以传输一定格式的数据。然而,在某个时间内,常规一个DMA接口只传输一种类型的数据,如果要传输多种不同类型的数据,需要多个DMA接口。DMA接口越多,则电路设计就越复杂,也会存在竞争总线的问题,从而增加了多DMA接口的调度难度。

发明内容

[0003] 本申请的主要目的在于提供一种直接内存存取装置、数据传输方法及集成电路系统,旨在减少DMA接口数量,降低电路设计难度和多DMA接口调度难度。
[0004] 第一方面,本申请提供一种直接内存存取装置,所述直接内存存取装置包括:
[0005] 直接内存存取控制器,与系统总线连接;
[0006] 通道配置模块,与所述系统总线连接,用于获取读数据或写数据的通道配置信息;
[0007] 第一数据处理模块,与所述直接内存存取控制器、所述通道配置模块连接;
[0008] 多个第二数据处理模块,每个所述第二数据处理模块通过对应的预设通道与所述第一数据处理模块连接;
[0009] 其中,所述通道配置模块还用于将所述读数据或写数据的通道配置信息发送给所述第一数据处理模块;
[0010] 所述第一数据处理模块用于根据所述读数据的通道配置信息,将所述直接内存存取控制器传输的读数据分成多个第一子数据,并通过所述预设通道将所述第一子数据发送至对应的第二数据处理模块;所述第二数据处理模块用于对所述第一子数据执行设定操作;
[0011] 所述第二数据处理模块还用于通过所述预设通道将多个第二子数据输出至所述第一数据处理模块;所述第一数据处理模块还用于根据所述写数据的通道配置信息,将所述多个第二子数据进行组合得到写数据,并将所述写数据传输至所述直接内存存取控制器。
[0012] 第二方面,本申请还提供一种数据传输方法,应用于直接内存存取装置,所述直接内存存取装置包括通道配置模块、直接内存存取控制器、第一数据处理模块和多个第二数据处理模块,每个所述第二数据处理模块通过对应的预设通道与所述第一数据处理模块连接;所述方法包括:
[0013] 通过所述通道配置模块获取读数据的通道配置信息,并将所述读数据的通道配置信息发送至所述第一数据处理模块;
[0014] 通过所述直接内存存取控制器基于系统总线读取所述读数据,并将所述读数据输出至所述第一数据处理模块;
[0015] 通过所述第一数据处理模块根据所述读数据的通道配置信息,将所述读数据分成多个第一子数据,并通过所述预设通道将所述第一子数据发送至对应的第二数据处理模块;
[0016] 通过所述第二数据处理模块所述第一子数据执行设定操作。
[0017] 第三方面,本申请还提供一种数据传输方法,应用于直接内存存取装置,所述直接内存存取装置包括通道配置模块、直接内存存取控制器、第一数据处理模块和多个第二数据处理模块,每个所述第二数据处理模块通过对应的预设通道与所述第一数据处理模块连接;所述方法包括:
[0018] 通过所述通道配置模块获取写数据的通道配置信息,并将所述写数据的通道配置信息发送至所述第一数据处理模块;
[0019] 通过所述第二数据处理模块,经由所述预设通道将多个第二子数据输出至所述第一数据处理模块;
[0020] 通过所述第一数据处理模块根据所述写数据的通道配置信息,将所述多个第二子数据进行组合得到写数据,并将所述写数据传输至所述直接内存存取控制器;
[0021] 通过所述直接内存存取控制器基于系统总线对所述写数据进行写入操作。
[0022] 第四方面,本申请还提供一种集成电路系统,所述集成电路系统包括如上所述的直接内存存取装置。
[0023] 本申请提供一种直接内存存取装置、数据传输方法及集成电路系统,直接内存存取装置包括直接内存存取控制器、通道配置模块、第一数据处理模块和多个第二数据处理模块,直接内存存取控制器和通道配置模块均与系统总线连接,第一数据处理模块与直接内存存取控制器、通道配置模块连接,每个第二数据处理模块通过对应的预设通道与第一数据处理模块连接。其中,通道配置模块用于获取读数据或写数据的通道配置信息,并将读数据或写数据的通道配置信息发送给第一数据处理模块。第一数据处理模块用于根据读数据的通道配置信息,将直接内存存取控制器传输的读数据分成多个第一子数据,并通过预设通道将第一子数据发送至对应的第二数据处理模块;第二数据处理模块用于对第一子数据执行设定操作。第二数据处理模块还用于通过对应的预设通道将多个第二子数据输出至第一数据处理模块;第一数据处理模块还用于根据写数据的通道配置信息,将多个第二子数据进行组合得到写数据,并将写数据传输至直接内存存取控制器。通过上述方式,能够高效的对不同数据类型的读数据或写数据进行相应处理,使得直接内存存取DMA控制器能够支持多数据类型传输,因此无需设置多个DMA接口,从而能够减少DMA接口数量,降低电路设计难度和多DMA接口调度难度。

附图说明

[0024] 为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0025] 图1为本申请实施例提供的一种直接内存存取装置的结构示意性框图;
[0026] 图2为本申请实施例提供的另一种直接内存存取装置的结构示意性框图;
[0027] 图3为本申请实施例提供的另一种直接内存存取装置的结构示意性框图;
[0028] 图4为本申请实施例提供的数据分发模块的结构示意性框图;
[0029] 图5为本申请实施例提供的数据分发模块中的第一数据转换单元的结构示意性框图;
[0030] 图6为本申请实施例提供的数据组合模块的一结构示意性框图;
[0031] 图7为本申请实施例提供的数据组合模块的另一结构示意性框图;
[0032] 图8为本申请实施例提供的另一种直接内存存取装置的结构示意性框图;
[0033] 图9为本申请实施例提供的一种数据传输方法的步骤流程示意图;
[0034] 图10为本申请实施例提供的另一种数据传输方法的步骤流程示意图;
[0035] 图11为本申请实施例提供的一种集成电路系统的结构示意性框图;
[0036] 图12为本申请实施例提供的另一种集成电路系统的结构示意性框图。
[0037] 本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0038] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0039] 附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。另外,虽然在装置示意图中进行了功能模块的划分,但是在某些情况下,可以以不同于装置示意图中的模块划分。
[0040] 下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
[0041] 请参照图1,图1为本申请实施例提供的一种直接内存存取装置的示意性框图。
[0042] 如图1所示,该直接内存存取装置100,包括:DMA控制器110、通道配置模块120、第一数据处理模块130和多个第二数据处理模块140。
[0043] DMA控制器110与系统总线连接。通道配置模块120与系统总线连接,用于获取读数据或写数据的通道配置信息,通道配置模块120还用于将读数据或写数据的通道配置信息发送给第一数据处理模块130。第一数据处理模块130与DMA控制器110、通道配置模块120连接,每个第二数据处理模块140通过对应的预设通道与第一数据处理模块130连接。
[0044] 需要说明的是,DMA技术常应用在高速、大数据量的传输系统中,目的在于提高系统吞吐量和效率,可应用于图像处理、数据采集、同步信号收发以及磁盘存取等场景。利用DMA控制器110可以实现存储器到外设、外设到存储器以及存储器到存储器之间的数据传输任务。
[0045] 在实现DMA传输时,由DMA控制器110直接掌管系统总线。因此,在DMA传输前,CPU要把总线控制权交给DMA控制器110,而在结束DMA传输后,DMA控制器110要把总线控制权再交回给CPU。本申请实施例中,DMA传输包括读数据的传输和写数据的传输。
[0046] 需要说明的是,通道配置模块120挂载于系统总线,被其它模块比如主控制器等控制,通道配置模块120包括多个寄存器,该多个寄存器用于保存通道配置信息,因此该通道配置模块120也可以看成是多个寄存器的组合,每个寄存器都具有单独的地址,主控制器利用地址总线寻址这些寄存器之后,将第一数据处理模块130所需的通道配置信息写入相应寄存器内,再由通道配置模块120将通道配置信息传输至第一数据处理模块130。
[0047] 示例性的,主控制器可以包括但不限于中央处理器(Central Processing Unit,CPU)、数字信号处理器(Digital Signal Processing,DSP)、ARM(Advanced RISC Machine)处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)以及现场可编程门阵列(Field‑Programmable Gate Array,FPGA)等等。系统总线可以包括但不限于高级系统总线(Advanced System Bus,ASB)、高级外设总线(Advanced Peripheral Bus,APB)、高级高性能总线(Advanced High‑performance Bus,AHB)以及高级跟踪总线(Advanced Trace Bus,ATB)等总线。
[0048] 其中,通道配置信息可以包括通道标识、工作模式标识和通道的有效数据长度标识等。通道标识用于指示读数据或写数据对应的预设通道。工作模式标识用于指示处理读数据或写数据时的工作模式。通道的有效数据长度标识用于指示预设通道被配置的有效数据长度,有效数据长度例如为通过预设通道的第一子数据或第二子数据的位宽。
[0049] 示例性的,工作模式包括单一通道模式和混合通道模式,单一通道模式是指读数据或写数据通过一个固定的预设通道在第一数据处理模块130与第二数据处理模块140之间进行数据传输,混合通道模式是指读数据或写数据可以通过不同的预设通道在第一数据处理模块130与各第二数据处理模块140之间进行数据传输。
[0050] 在一实施例中,第一数据处理模块130用于根据读数据的通道配置信息,将DMA控制器110传输的读数据分成多个第一子数据,并通过预设通道将第一子数据发送至对应的第二数据处理模块140。第二数据处理模块140用于对第一子数据执行设定操作。
[0051] 其中,第二数据处理模块140可以包括乘法器、加法器、减法器等器件,当然也可以包括存储器、外设接口等器件。第二数据处理模块140对第一子数据的设定操作可以是乘法器、加法器、减法器等器件自身设置的如乘、加、减等操作,该设定操作也可以是如存储器、外设接口等器件提供的存储、输出等操作,本实施例对此不做具体限定。
[0052] 需要说明的是,预设通道的有效数据长度是固定的,读数据的数据长度通常大于预设通道的容量,因此需要对读数据进行分块处理,才能实现读数据的传输。
[0053] 示例性的,假设读数据的位宽是32bits,预设通道的有效数据长度是20bits,由此可以配置第一子数据的数据位宽是20bits,第一数据处理模块130就可以从每个去往预设通道的32bits的读数据中截取出20bits,作为最终发出的第一子数据。
[0054] 可以理解的是,如果读数据的数据位宽小于或等于预设通道的有效数据长度,也可以不对读数据进行分块处理,第一数据处理模块130可以直接通过预设通道将该读数据发送至对应的第二数据处理模块140。
[0055] 在一实施例中,第二数据处理模块140还用于通过预设通道将多个第二子数据输出至第一数据处理模块130。第一数据处理模块130还用于根据写数据的通道配置信息,将多个第二子数据进行组合得到写数据,并将写数据传输至DMA控制器110。
[0056] 需要说明的是,在执行写数据的数据传输任务时,由于通过预设通道传输的写数据通常为分块的多个第二子数据,因此需要对多个第二子数据进行组合,才能得到完整的写数据,并将写数据传输至DMA控制器110。
[0057] 示例性的,假设写数据的数据位宽为32bits,预设通道的有效数据长度是20bits,则通过预设通道接收的多个第二子数据的数据位宽是20bits。由此,第一数据处理模块130可以将20bits的第二子数据组合为32bits的写数据,并将组合好的写数据传输至DMA控制器110。
[0058] 可以理解的是,如果写数据的数据位宽小于或等于预设通道的有效数据长度,则第一数据处理模块130也可以不对第二子数据进行组合处理,第一数据处理模块130可以直接将第二子数据作为写数据传输至DMA控制器110。
[0059] 相关DMA技术中,在一个有限的时间段或一个DMA操作请求内,只传输一种类型数据。如果需要传输不同类型数据,得发起多次DMA操作请求,或者使用多个DMA接口。若是发起多次DMA操作请求,则会拉长整个数据传输时间,增加CPU占用率。若是使用多个DMA接口,则会显著增加电路设计复杂度以及接口调度难度。
[0060] 本申请实施例通过设置多个预设通道将第一数据处理模块130与多个第二数据处理模块140进行连接,从而能够高效的对不同数据类型的读数据或写数据进行相应处理,使得DMA控制器110能够支持多数据类型传输,无需发起多次DMA操作请求,也无需设置多个DMA接口,从而能够缩短数据传输时间,减少CPU占用率和DMA接口数量,能够降低电路设计难度和多DMA接口调度难度。
[0061] 在一实施例中,如图2所示,DMA控制器110包括第一DMA子控制器111和第二DMA子控制器112。第一DMA子控制器111用于接收系统总线传输的读数据,并将读数据发送至第一数据处理模块130。第二DMA子控制器112用于接收第一数据处理模块130发送的写数据,并将写数据传输至系统总线。
[0062] 需要说明的是,通过第一DMA子控制器111专用于执行读数据的传输任务,并通过第二DMA子控制器112专用于执行写数据的传输任务,使得读数据和写数据的数据传输过程不容易出现错误,能够提高读数据和写数据的数据传输的可靠性。
[0063] 在一实施例中,如图3所示,第一数据处理模块130包括数据分发模块131,第二数据处理模块140包括读数据处理模块141,预设通道包括第一通道。读数据处理模块141通过对应的第一通道与数据分发模块131连接。
[0064] 其中,通道配置模块120用于获取读数据的通道配置信息,并将读数据的通道配置信息发送至数据分发模块131。数据分发模块131用于根据读数据的通道配置信息,将DMA控制器110传输的读数据分成多个第一子数据。数据分发模块131还用于根据读数据的通道配置信息,从多个第一通道中确定第一子数据对应的第一目标通道,并通过第一目标通道将第一子数据发送给对应的读数据处理模块141。读数据处理模块141用于对第一子数据执行设定操作。
[0065] 需要说明的是,在执行读数据的数据传输任务时,由于预设通道的有效数据长度的存在,因此需要对读数据进行分块处理。同时由于读数据的目的地址不同,需要确定待接收该读数据的读数据处理模块141,以及读数据处理模块141对应的第一目标通道。例如需要从多个读数据处理模块141(如读数据处理模块1至读数据处理模块x)中确定待接收第一子数据的目标读数据处理模块,并确定目标读数据处理模块对应的第一目标通道。如此,数据分发模块131才能通过第一目标通道将第一子数据发送给对应的读数据处理模块141。
[0066] 需要说明的是,通过该第一目标通道发送的第一子数据可以是对读数据进行分块处理得到的多个第一子数据中的其中一个,也可以是其中的多个,本实施例对此不做具体限定。
[0067] 示例性的,DMA控制器110通过数据读取操作从系统总线处到10个读数据,这10个读数据分别属于3种不同类型,比如,前2个属于同一个类型,中间3个数据属于一个类型,最后5个数据属于另外一种类型,且前2个读数据应该去通道一,中间3个读数据去通道二,后5个读数据去通道三。由此,CPU发送这10个读数据的通道配置信息存储至通道配置模块120,该通道配置信息包括每个读数据对应的通道标识以及第一通道的有效数据长度,再由通道配置模块120将该通道配置信息发送给数据分发模块131。数据分发模块131根据这10个读数据各自对应的有效数据长度,对各个读数据进行分块处理得到多个第一子数据,并且,数据分发模块131根据这10个读数据各自对应的通道标识,确定每个读数据对应的第一目标通道,并通过每个读数据对应的第一目标通道将第一子数据发送给对应的读数据处理模块141。
[0068] 在一实施例中,如图4所示,数据分发模块131包括数据选择器1311和多个第一数据转换单元1312,每个第一数据转换单元1312的第一端均与数据选择器1311连接,每个第一数据转换单元1312的第二端通过对应的第一通道与读数据处理模块141连接,其中,读数据的通道配置信息包括第一通道的通道标识和有效数据长度。
[0069] 其中,数据选择器1311用于根据第一通道的通道标识从多个第一通道中确定第一目标通道,并将DMA控制器110传输的读数据发送至第一目标通道对应的第一数据转换单元1312,第一数据转换单元1312用于根据第一通道的有效数据长度,将数据选择器1311发送的读数据分成多个第一子数据,并通过第一目标通道将第一子数据发送给对应的读数据处理模块141。
[0070] 需要说明的是,每个第一数据转换单元1312与均与一个第一通道相对应,如果有多个第一数据转换单元1312,则设置有对应多个第一通道,第一数据转换单元1312与第一通道一一对应连接。数据选择器1311能够根据第一通道的通道标识(例如通道bit位),将读数据转往对应的第一数据转换单元1312,该第一数据转换单元1312对应的第一通道的通道标识与读数据的通道配置信息中的通道标识相匹配。第一数据转换单元1312可以实现读数据的位宽变化,例如能够根据设计需要对每个读数据做切分,从而生成多个第一子数据。
[0071] 在一实施例中,如图5所示,第一数据转换单元1312包括第一移位电路、第一拼接电路、第一存储器和第一存储器。第一移位电路的第一端作为第一数据转换单元的第一端,第一拼接电路连接于第一移位电路的第二端与第一存储器的第一端之间,第一存储器的第二端作为第一数据转换单元的第二端,第一计数电路分别连接于第一移位电路、第一拼接电路、第一存储器的受控端。
[0072] 其中,第一移位电路用于根据第一通道的有效数据长度,从读数据中搬移出多个子读数据,第一拼接电路用于将多个子读数据拼接为第一子数据,第一存储器用于暂存第一子数据,并通过第一目标通道输出第一子数据,第一计数电路用于对读数据的数量进行统计,并根据统计结果控制第一移位电路、第一拼接电路和第一移位电路。
[0073] 需要说明的是,第一移位电路作用是对每个进来的数据进行左移或右移当然也能不移,从而能够搬移出子读数据,该子读数据可以为预设的读数据格式确定。第一拼接电路就是把两个顺序进来的数据中有效部分拼在一起,从而得到第一子数据。第一移位电路和第一拼接电路可以是配合使用的。举例,比如进来读数据ab,如果第一通道的数据位宽与读数据一致,并想收到读数据bx。第一数据转换单元1312可以将读数据ab中的b移到左边得到新数据bx。此时新数据量已达到要求,所以bx到第一拼接电路不会再变化,或认为它与全无效数据拼接而不会变。第一存储器可以是小型存储器,只是为了暂存新数据bx,也可以存储因为第一通道被下游反压而不能发出的数据。因此,第一移位电路可以实现长数据变短数据,第一拼接电路可以实现短数据变长数据,从而实现位宽变化。
[0074] 需要说明的是,第一数据转换单元1312唯一的输入就是读数据,所以读数据的数量就是此单元处理数据的重要依据,第一计数电路作用是对读数据做数量统计,第一数据转换单元1312中的各个电路模块如第一移位电路、第一拼接电路、第一存储器都在第一计数电路控制下工作,例如第一计数电路根据读数据的数据数量,产生一系列控制信号,并将控制信号分别发送给第一移位电路、第一拼接电路、第一存储器的受控端,从而控制各个电路模块工作。第一计数电路可以包括多个计数器,例如第一计数电路是多个小型的计数器配合工作的。
[0075] 在一实施例中,如图3所示,第一数据处理模块130包括数据组合模块132,第二数据处理模块140包括写数据处理模块142,预设通道包括第二通道。写数据处理模块142通过对应的第二通道与数据组合模块132连接。
[0076] 其中,写数据处理模块142用于通过对应的第二通道将多个第二子数据输出至数据组合模块132。通道配置模块120还用于获取写数据的通道配置信息,并将写数据的通道配置信息发送至数据组合模块132。数据组合模块132用于根据写数据的通道配置信息,从多个第二通道中确定多个第二子数据对应的第二目标通道。数据组合模块132还用于根据写数据的通道配置信息,将通过第二目标通道接收的多个第二子数据进行组合得到写数据,并将写数据传输至DMA控制器110。
[0077] 需要说明的是,在执行写数据的数据传输任务时,由于通过第二通道传输的写数据是分块的多个第二子数据,因此数据组合模块132需要对多个第二子数据进行组合,才能得到完整的写数据。同时数据组合模块132也需要从多个第二通道中确定传输该多个第二子数据的第二目标通道,以便于数据组合模块132能够准确的对通过第二目标通道接收的多个第二子数据进行组合得到写数据。该第二目标通道可以是根据多个写数据处理模块142(如写数据处理模块1至写数据处理模块y)中输出该多个第二子数据的目标写数据处理模块确定的,目标写数据处理模块与第二目标通道存在对应关系。
[0078] 需要说明的是,执行写数据的数据传输过程是执行读数据的数据传输过程的反向操作,因此写数据的数据传输过程可参阅读数据的数据传输过程的相应实施例进行实施。
[0079] 在一实施例中,如图6所示,数据组合模块132包括排序单元1321和多个第二数据转换单元1322,每个第二数据转换单元1322的第一端通过对应的第二通道与写数据处理模块142连接,每个第二数据转换单元1322的第二端均与排序单元1321连接。写数据的通道配置信息包括第二通道的通道标识和有效数据长度。
[0080] 其中,第二数据转换单元1322用于根据第二通道的有效数据长度,将通过对应的第二通道接收的多个第二子数据进行组合得到写数据,并将写数据发送至排序单元1321。排序单元1321用于根据第二通道的通道标识从多个第二通道中确定第二目标通道,并对第二目标通道对应的第二数据转换单元1322发送的写数据进行排序,以及将排序的写数据传输至DMA控制器110。
[0081] 需要说明的是,每个第二数据转换单元1322与均与一个第二通道相对应,如果有多个第二数据转换单元1322,则设置有对应多个第二通道,第二数据转换单元1322与第一通道一一连接,多个第二数据转换单元1322均连接到一个排序单元1321。通过第二数据转换单元1322接收写数据处理模块142发送的多个第二子数据,对多个第二子数据进行组合得到写数据,以及通过排序单元1321对第二数据转换单元1322发送的写数据进行排序后输出,极大的提高了写数据的数据处理效率,从而使得DMA控制器110能够支持多数据类型传输,因此无需设置多个DMA接口。
[0082] 在一实施例中,如图7所示,排序单元包括第一状态机和第二状态机,第一状态机用于根据第二通道的通道标识从多个第二通道中确定第二目标通道,并对第二目标通道对应的第二数据转换单元发送的多个写数据进行排序。第二状态机用于将排序的多个写数据进行组合,并将组合后的写数据传输至DMA控制器。
[0083] 需要说明的是,第一状态机可以接收多个第二数据转换单元1322输出,并根据预先配置的排序规则(规则主要包括各个第二通道的有效数据长度,和每个第二通道的优先级,其至同一个通道可以拆成多次输出,中间插入其它写数据。写数据的数据规格可以是自定义的,只要与排序单元1321匹配就行),根据第二通道的优先级可以判断写数据输出的先后次序。可以理解,第一状态机内可以设置有数据选择器,通过数据选择器实现数据拆分和输出。第二状态机主要起到混合不同通道或者相同通道数据的作用,将多个小数据混成一个大数据。比如上游状态机通道1过来,通道2过来,规则让a和b放在一起作为写数据,所以第二状态机就能得到新数据ab并发出。当然根据规则也可以不混合,相当于数据直通。可以理解,第二状态机内部也可以设置有数据选择器,通过该数据选择器实现数据组合并输出。
[0084] 在一实施例中,如图7所示,第二数据转换单元1322包括第二移位电路、第二拼接电路、第二存储器和第二计数电路。第二移位电路的第一端作为第二数据转换单元的第一端,第二拼接电路连接于第二移位电路的第二端与第二存储器的第一端之间,第二存储器的第二端作为第二数据转换单元的第二端,第二计数电路分别连接于第二移位电路、第二拼接电路、第二存储器的受控端。
[0085] 其中,第二移位电路用于根据第二通道的有效数据长度,将通过对应的第二通道接收的多个第二子数据进行组合得到子写数据。第二拼接电路用于将子写数据拼接为写数据,第二存储器用于暂存并输出写数据。第二计数电路用于对写数据的数量进行统计,并根据统计结果控制第二移位电路、第二拼接电路和第二存储器。
[0086] 需要说明的是,第二数据转换单元1322的具体电路设置可参阅前述的第二数据转换单元1312。例如,第二移位电路的作用在于对每个进来的数据进行左移、右移或者不移,第二拼接电路可以就是把两个顺序进来的数据中有效部分拼在一起,第二移位电路和第二拼接电路可以是配合使用的。第二存储器可以是小型存储器,只是为了暂存并输出写数据,也可以存储因为第二通道被下游反压而不能发出的数据。因此,第二移位电路可以实现长数据变短数据,第二拼接电路可以实现短数据变长数据,从而实现位宽变化。第二计数电路作用是对写数据做数量统计,第二数据转换单元1322中的各个电路模块如第二移位电路、第二拼接电路、第二存储器都在第二计数电路控制下工作。第二计数电路可以包括多个计数器,例如包括多个小型的计数器,从而节省电路成本。
[0087] 在一实施例中,第二数据转换单元1322还可以增加通道表示的数据添加模块,数据添加模块用于对每个输入数据加上通道信息,这样排序单元1321才能识别是哪个通道的数据。可理解的,数据分发模块131也可以在入口设置第三状态机,该第三状态机与第二状态机作用相反,就是将一个读数据拆成多个带通道信息的小数据。
[0088] 在一实施例中,多个第二数据处理模块140包括多个读数据处理模块141和多个写数据处理模块142,读数据处理模块141和写数据处理模块142的数量可以相同或者不相同。数据分发模块131可以包括数据选择器,数据组合模块132可以包括第二数据选择器和排序单元。读数据处理模块141和写数据处理模块142可以包括乘法器、加法器、减法器等器件,当然也可以包括存储器、外设接口等器件,本实施例对此不做具体限定。
[0089] 请参照图8,图8为本申请实施例提供的另一种直接内存存取装置的结构示意性框图。如图8所示,直接内存存取装置100包括DMA控制器110、通道配置模块120、第一数据处理模块130和多个第二数据处理模块140。其中,DMA控制器110包括第一DMA子控制器111和第二DMA子控制器112,第一数据处理模块130包括数据分发模块131和数据组合模块132,多个第二数据处理模块140包括多个读数据处理模块141和多个写数据处理模块142。读数据处理模块141通过对应的第一通道与数据分发模块131连接,写数据处理模块142通过对应的第二通道与数据组合模块132连接。
[0090] 通道配置模块120用于获取读数据的通道配置信息,并将读数据的通道配置信息发送至数据分发模块131;通道配置模块120还用于获取写数据的通道配置信息,并将写数据的通道配置信息发送至数据组合模块132。
[0091] 第一DMA子控制器111用于接收系统总线传输的读数据,并将读数据发送至数据分发模块131;第二DMA子控制器112用于接收数据组合模块132发送的写数据,并将写数据传输至系统总线。
[0092] 数据分发模块131用于根据读数据的通道配置信息,从多个第一通道中确定读数据对应的第一目标通道,并通过第一目标通道将读数据分发至读数据处理模块141;数据组合模块132用于根据写数据的通道配置信息,从多个第二通道中确定写数据对应的第二目标通道,并通过第二目标通道接收写数据处理模块142发送的多个子数据,将多个子数据进行组合得到写数据。
[0093] 读数据处理模块141用于对第一子数据执行设定操作,例如对第一子数据执行写入操作;写数据处理模块142用于通过对应的第二通道将多个第二子数据输出至数据组合模块132,例如对多个第二子数据进行读取操作并输出给数据组合模块132。
[0094] 需要说明的是,本申请实施例利用一个直接内存存取装置100可以传输不同类型的数据,比如在读数据的数据传输过程,通过预设通道一进行传输的读数据是图像,通过预设通道二进行传输的读数据是weight系数,通过预设通道三进行传输的读数据是其它数据等等。通过多个数量的预设通道来取代多DMA接口实现数据读写,能够减少芯片内的DMA接口数量,从而简化电路设计。
[0095] 在一实施例中,直接内存存取装置100包括第一工作模式和第二工作模式。在第一工作模式下,第一数据处理模块130通过同一预设通道将第一子数据发送至对应的第二数据处理模块140,各第二数据处理模块140通过对应的同一预设通道将多个第二子数据输出至第一数据处理模块130。在第二工作模式下,第一数据处理模块130通过不同预设通道将第一子数据发送至各自对应的第二数据处理模块140,各第二数据处理模块140通过不同预设通道将多个第二子数据输出至第一数据处理模块130。
[0096] 需要说明的是,第一工作模式也可以称为单一通道模式,第二工作模式也可以称为混合通道模式。本申请实施例中的读数据或写数据可以单一传输,也可以混合传输。例如,直接内存存取装置100读到的一批连续的读数据,这批读数据可以全是通道一的图像,也可以是多个通道混合在一起的读数据,比如前几个读数据是通道一的图像,后几个读数据是通道二的,再往后的读数据又是通道三的。可见,本申请实施例提供的数据读取方式非常灵活方便,并且可以兼容常规的单一通道模式设计。
[0097] 在一实施例中,第一工作模式和第二工作模式是根据通道配置信息确定的,通道配置信息是根据工作模式标识和通道标识生成的;其中,工作模式标识用于指示第一工作模式或第二工作模式,通道标识用于指示读数据或写数据对应的预设通道。
[0098] 需要说明的是,通道配置信息可以包括多个比特位,通道配置信息中固定位置的一个或多个比特位可以作为工作模式标识和通道标识。比如令通道配置信息中的三个比特位固定做通道标识,一个比特位固定做工作模式标识,000可以表示通道一,001可以表示通道二,010可以表示通道三。0可以表示第一工作模式,1可以表示第二工作模式。
[0099] 第一工作模式下,数据分发模块131和数据组合模块132只是个简单的通路选择,根据通道配置信息只固定与一个通道交互,比如数据分发模块131将所有读数据分发到读通道一,数据组合模块132固定由通道二接收写数据的多个第二子数据。第二工作模式下,数据分发模块131和数据组合模块132配置的通道配置信息可以指向不同的预设通道,数据传输方式更为灵活,并且可以传输不同类型数据。
[0100] 在一实施例中,通道配置模块120包括第一寄存器和第二寄存器,第一寄存器用于存储工作模式标识,第二寄存器用于存储通道标识。其中,工作模式标识和通道标识可以包括数字、字母、符号中的至少一种。
[0101] 示例性的,假设定义一个寄存器A,A为0时表示第一工作模式(单一通道模型),A为1时表示第二工作模式(混合通道模式)。再定义一个3bit的寄存器B,寄存器B的值表示通道标识,类似000(二进制)表示通道一,001表示通道二。当通道配置模块120中的寄存器A为0且寄存器B为001时,通道配置模块120发送通道配置信息给数据分发模块131,相当于告诉数据分发模块131,现在所有读数据分成的第一子数据只给一个通道,即通道1。
[0102] 可以理解的是,通道配置模块120还包括其他寄存器,本实施例对此不做具体限定。例如,通道配置信息还包括预设通道的数据有效长度标识,通道配置模块120还包括第三寄存器,第三寄存器用于存储该数据有效长度标识。
[0103] 在一实施例中,通道配置模块120、第一数据处理模块130和第二数据处理模块140中的一个或多个集成在DMA控制器110。其中,DMA控制器110可以是相关技术可以生产得到的DMA控制器110,通过将通道配置模块120、第一数据处理模块130和第二数据处理模块140中的一个或多个集成在该DMA控制器110,得到不同于当前DMA控制器110的新DMA控制器110,该新DMA控制器110可以传输不同类型的数据,能够减少DMA接口数量,降低电路设计难度和多DMA接口调度难度。
[0104] 在一实施例中,第一数据处理模块130可以包括数据分发模块131和数据组合模块132,数据分发模块131或数据组合模块132也可以部分或全部的集成于第一数据处理模块
130中。同理,第二数据处理模块140可以包括读数据处理模块141和写数据处理模块142,读数据处理模块141和写数据处理模块142也可以部分或全部的集成于第二数据处理模块140中,本实施例对此不做具体限定。
[0105] 本申请实施例中的直接内存存取装置100包括DMA控制器110、通道配置模块120、第一数据处理模块130和多个第二数据处理模块140。DMA控制器110和通道配置模块120均与系统总线连接,第一数据处理模块130与DMA控制器110、通道配置模块120连接,每个第二数据处理模块140通过对应的预设通道与第一数据处理模块130连接。其中,通道配置模块120用于获取读数据或写数据的通道配置信息,并将读数据或写数据的通道配置信息发送给第一数据处理模块130。第一数据处理模块130用于根据读数据的通道配置信息,将DMA控制器110传输的读数据分成多个第一子数据,并通过预设通道将第一子数据发送至对应的第二数据处理模块140;第二数据处理模块140用于对第一子数据执行设定操作。第二数据处理模块140还用于通过对应的预设通道将多个第二子数据输出至第一数据处理模块130;
第一数据处理模块130还用于根据写数据的通道配置信息,将多个第二子数据进行组合得到写数据,并将写数据传输至DMA控制器110。通过上述方式,能够高效的对不同数据类型的读数据或写数据进行相应处理,使得DMA控制器110能够支持多数据类型传输,因此无需设置多个DMA接口,从而能够减少DMA接口数量,降低电路设计难度和多DMA接口调度难度。
[0106] 本申请实施例还提供一种数据传输方法。其中,该数据传输方法可应用于直接内存存取装置中,直接内存存取装置包括通道配置模块、DMA控制器、第一数据处理模块和多个第二数据处理模块,每个第二数据处理模块通过对应的预设通道与第一数据处理模块连接。
[0107] 请参照图9,图9为本申请实施例提供的一种数据传输方法的步骤流程示意图。
[0108] 如图9所示,该数据传输方法包括步骤S201至步骤S204。
[0109] 步骤S201、通过通道配置模块获取读数据的通道配置信息,并将读数据的通道配置信息发送至第一数据处理模块。
[0110] 需要说明的是,通道配置模块挂载于系统总线,被其它模块比如中央处理器(central processing unit,CPU)等控制,通道配置模块包括多个寄存器,该多个寄存器用于保存通道配置信息,因此该通道配置模块也可以看成是多个寄存器的组合,每个寄存器都具有单独的地址,CPU利用地址总线寻址这些寄存器之后,将第一数据处理模块所需的通道配置信息写入相应寄存器内,再由通道配置模块将通道配置信息传输至第一数据处理模块。
[0111] 其中,通道配置信息可以包括通道标识、工作模式标识和通道的有效数据长度标识等。通道标识用于指示读数据或写数据对应的预设通道。工作模式标识用于指示处理读数据或写数据时的工作模式。通道的有效数据长度标识用于指示预设通道被配置的有效数据长度,有效数据长度例如为通过预设通道的第一子数据或第二子数据的位宽。
[0112] 示例性的,工作模式包括单一通道模式和混合通道模式,单一通道模式是指读数据或写数据通过一个固定的预设通道在第一数据处理模块与第二数据处理模块之间进行数据传输,混合通道模式是指读数据或写数据可以通过不同的预设通道在第一数据处理模块与各第二数据处理模块之间进行数据传输。
[0113] 在一实施例中,第一数据处理模块包括数据分发模块,由通道配置模块获取读数据的通道配置信息,并将读数据的通道配置信息发送至数据分发模块。
[0114] 步骤S202、通过DMA控制器基于系统总线读取读数据,并将读数据输出至第一数据处理模块。
[0115] 在实现DMA传输时,由DMA控制器直接掌管系统总线。因此,在DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器要把总线控制权再交回给CPU。本申请实施例中,该DMA控制器可用于读数据的传输。
[0116] 在一实施例中,DMA控制器包括第一DMA子控制器,通过第一DMA子控制器接收系统总线传输的读数据,并将读数据发送至第一数据处理模块。通过第一DMA子控制器专用于执行读数据的传输任务,使得读数据的数据传输过程不容易出现错误,能够提高读数据的数据传输的可靠性。
[0117] 在一实施例中,第一数据处理模块包括数据分发模块,DMA控制器基于系统总线读取读数据,并将读数据输出至数据分发模块。
[0118] 步骤S203、通过第一数据处理模块根据读数据的通道配置信息,将读数据分成多个第一子数据,并通过预设通道将第一子数据发送至对应的第二数据处理模块。
[0119] 需要说明的是,预设通道的有效数据长度是固定的,读数据的数据长度通常大于预设通道的容量,因此需要对读数据进行分块处理,才能实现读数据的传输。
[0120] 示例性的,假设读数据的位宽是32bits,预设通道的有效数据长度是20bits,由此可以配置第一子数据的数据位宽是20bits,第一数据处理模块就可以从每个去往预设通道的32bits的读数据中截取出20bits,作为最终发出的第一子数据。
[0121] 可以理解的是,如果读数据的数据位宽小于或等于预设通道的有效数据长度,也可以不对读数据进行分块处理,第一数据处理模块可以直接通过预设通道将该读数据发送至对应的第二数据处理模块。
[0122] 在一实施例中,第一数据处理模块包括数据分发模块,第二数据处理模块包括多个读数据处理模块,预设通道包括第一通道,读数据处理模块通过对应的第一通道与数据分发模块连接。通过数据分发模块根据读数据的通道配置信息,将DMA控制器传输的读数据分成多个第一子数据,并通过数据分发模块根据读数据的通道配置信息,从多个第一通道中确定读数据对应的第一目标通道,并通过第一目标通道将读数据分发至读数据处理模块。
[0123] 需要说明的是,在执行读数据的数据传输任务时,由于读数据的目的地址不同,需要确定待接收该读数据的第二数据处理模块,因此还需要确定第二数据处理模块对应的第一目标通道,才能通过第一目标通道将第一子数据发送给对应的读数据处理模块。通过该第一目标通道发送的第一子数据可以是对读数据进行分块处理得到的多个第一子数据中的其中一个,也可以是其中的多个,本实施例对此不做具体限定。
[0124] 在一实施例中,数据分发模块可以包括数据选择器。数据选择器可以是一个或多个,通过数据选择器对读数据分成多个第一子数据,并将第一子数据分发至读数据处理模块。
[0125] 在一实施例中,数据分发模块包括数据选择器和多个第一数据转换单元,每个第一数据转换单元的第一端均与数据选择器连接,每个第一数据转换单元的第二端通过对应的第一通道与读数据处理模块连接,其中,读数据的通道配置信息包括第一通道的通道标识和有效数据长度。
[0126] 其中,通过数据选择器根据第一通道的通道标识从多个第一通道中确定第一目标通道,并将DMA控制器传输的读数据发送至第一目标通道对应的第一数据转换单元,通过第一数据转换单元根据第一通道的有效数据长度,将数据选择器发送的读数据分成多个第一子数据,并通过第一目标通道将第一子数据发送给对应的读数据处理模块。
[0127] 需要说明的是,每个第一数据转换单元与均与一个第一通道相对应,如果有多个第一数据转换单元,则设置有对应多个第一通道,第一数据转换单元与第一通道一一对应连接。通过数据选择器能够根据第一通道的通道标识(例如通道bit位),将读数据转往对应的第一数据转换单元,该第一数据转换单元对应的第一通道的通道标识与读数据的通道配置信息中的通道标识相匹配。通过第一数据转换单元可以实现读数据的位宽变化,例如能够根据设计需要对每个读数据做切分,从而生成多个第一子数据。
[0128] 在一实施例中,第一数据转换单元包括第一移位电路、第一拼接电路、第一存储器和第一存储器。第一移位电路的第一端作为第一数据转换单元的第一端,第一拼接电路连接于第一移位电路的第二端与第一存储器的第一端之间,第一存储器的第二端作为第一数据转换单元的第二端,第一计数电路分别连接于第一移位电路、第一拼接电路、第一存储器的受控端。
[0129] 其中,通过第一移位电路根据第一通道的有效数据长度,从读数据中搬移出多个子读数据,通过第一拼接电路将多个子读数据拼接为第一子数据,通过第一存储器暂存第一子数据,并通过第一目标通道输出第一子数据,通过第一计数电路对读数据的数量进行统计,并根据统计结果控制第一移位电路、第一拼接电路和第一移位电路。
[0130] 步骤S204、通过第二数据处理模块第一子数据执行设定操作。
[0131] 其中,第二数据处理模块可以包括乘法器、加法器、减法器等器件,当然也可以包括存储器、外设接口等器件。第二数据处理模块对第一子数据的设定操作可以是乘法器、加法器、减法器等器件自身设置的如乘、加、减等操作,该设定操作也可以是如存储器、外设接口等器件提供的存储、输出等操作,本实施例对此不做具体限定。
[0132] 上述实施例提供的数据传输方法,通过通道配置模块获取读数据的通道配置信息,并将读数据的通道配置信息发送至第一数据处理模块;通过DMA控制器基于系统总线读取读数据,并将读数据输出至第一数据处理模块;通过第一数据处理模块根据读数据的通道配置信息,将读数据分成多个第一子数据,并通过预设通道将第一子数据发送至对应的第二数据处理模块;通过第二数据处理模块第一子数据执行设定操作。
[0133] 请参照图10,图10为本申请实施例提供的另一种数据传输方法的步骤流程示意图。
[0134] 如图10所示,该数据传输方法包括步骤S301至步骤S304。
[0135] 步骤S301、通过通道配置模块获取写数据的通道配置信息,并将写数据的通道配置信息发送至第一数据处理模块。
[0136] 需要说明的是,通道配置模块挂载于系统总线,被其它模块比如中央处理器(central processing unit,CPU)等控制,通道配置模块包括多个寄存器,该多个寄存器用于保存通道配置信息,因此该通道配置模块也可以看成是多个寄存器的组合,每个寄存器都具有单独的地址,CPU利用地址总线寻址这些寄存器之后,将第一数据处理模块所需的通道配置信息写入相应寄存器内,再由通道配置模块将通道配置信息传输至第一数据处理模块。
[0137] 其中,通道配置信息可以包括通道标识、工作模式标识和通道的有效数据长度标识等。通道标识用于指示读数据或写数据对应的预设通道。工作模式标识用于指示处理读数据或写数据时的工作模式。通道的有效数据长度标识用于指示预设通道被配置的有效数据长度,有效数据长度例如为通过预设通道的第一子数据或第二子数据的位宽。
[0138] 在一实施例中,第一数据处理模块包括数据组合模块,通道配置模块还用于获取写数据的通道配置信息,并将写数据的通道配置信息发送至数据组合模块。
[0139] 步骤S302、通过第二数据处理模块,经由预设通道将多个第二子数据输出至第一数据处理模块。
[0140] 其中,第二数据处理模块可以包括乘法器、加法器、减法器等器件,当然也可以包括存储器、外设接口等器件。
[0141] 需要说明的是,预设通道的有效数据长度是固定的,因此第二数据处理模块经由预设通道输出的多个第二子数据的数据位宽通常小于或等于预设通道的有效数据长度。
[0142] 在一实施例中,第一数据处理模块包括数据组合模块,第二数据处理模块包括写数据处理模块,预设通道包括第二通道。写数据处理模块通过对应的第二通道与数据组合模块连接。写数据处理模块用于通过对应的第二通道将多个第二子数据输出至数据组合模块。
[0143] 步骤S303、通过第一数据处理模块根据写数据的通道配置信息,将多个第二子数据进行组合得到写数据,并将写数据传输至DMA控制器。
[0144] 需要说明的是,在执行写数据的数据传输任务时,由于通过预设通道传输的写数据通常为分块的多个第二子数据,因此需要通过第一数据处理模块对多个第二子数据进行组合,才能得到完整的写数据,并将写数据传输至DMA控制器。
[0145] 示例性的,假设写数据的数据位宽为32bits,预设通道的有效数据长度是20bits,则通过预设通道接收的多个第二子数据的数据位宽是20bits。由此,第一数据处理模块可以将20bits的第二子数据组合为32bits的写数据,并将组合好的写数据传输至DMA控制器。
[0146] 可以理解的是,如果写数据的数据位宽小于或等于预设通道的有效数据长度,则第一数据处理模块也可以不对第二子数据进行组合处理,第一数据处理模块可以直接将第二子数据作为写数据传输至DMA控制器。
[0147] 在一实施例中,第一数据处理模块包括数据组合模块,第二数据处理模块包括写数据处理模块,预设通道包括第二通道。写数据处理模块通过对应的第二通道与数据组合模块连接。数据组合模块用于根据写数据的通道配置信息,从多个第二通道中确定多个第二子数据对应的第二目标通道。数据组合模块还用于根据写数据的通道配置信息,将通过第二目标通道接收的多个第二子数据进行组合得到写数据,并将写数据传输至DMA控制器。
[0148] 需要说明的是,在执行写数据的数据传输任务时,由于通过第二通道传输的写数据是分块的多个第二子数据,因此需要对多个第二子数据进行组合。同时也需要从多个第二通道中确定传输该多个第二子数据的第二目标通道,以便数据组合模块能够准确的对通过第二目标通道接收的多个第二子数据进行组合得到写数据。
[0149] 在一实施例中,数据组合模块可以包括第二数据选择器和排序单元。其中,第二数据选择器可以为一个或多个。通过第二数据选择器根据写数据的通道配置信息,从多个第二通道中确定多个第二子数据对应的第二目标通道。通过排序单元接收通过第二目标通道传输的多个第二子数据,并对多个第二子数据进行排序处理。通过第二数据选择器根据写数据的通道配置信息,将接收的多个第二子数据进行组合得到写数据,并将写数据传输至DMA控制器。
[0150] 在一实施例中,数据组合模块包括排序单元和多个第二数据转换单元,每个第二数据转换单元的第一端通过对应的第二通道与写数据处理模块连接,每个第二数据转换单元的第二端均与排序单元连接。写数据的通道配置信息包括第二通道的通道标识和有效数据长度。
[0151] 其中,通过第二数据转换单元根据第二通道的有效数据长度,将通过对应的第二通道接收的多个第二子数据进行组合得到写数据,并将写数据发送至排序单元。通过排序单元根据第二通道的通道标识从多个第二通道中确定第二目标通道,并对第二目标通道对应的第二数据转换单元发送的写数据进行排序,以及将排序的写数据传输至DMA控制器。
[0152] 需要说明的是,每个第二数据转换单元与均与一个第二通道相对应,如果有多个第二数据转换单元,则设置有对应多个第二通道,第二数据转换单元与第一通道一一连接,多个第二数据转换单元均连接到一个排序单元。通过第二数据转换单元接收写数据处理模块发送的多个第二子数据,对多个第二子数据进行组合得到写数据,以及通过排序单元对第二数据转换单元发送的写数据进行排序后输出,极大的提高了写数据的数据处理效率,从而使得DMA控制器能够支持多数据类型传输,因此无需设置多个DMA接口。
[0153] 在一实施例中,排序单元包括第一状态机和第二状态机,通过第一状态机根据第二通道的通道标识从多个第二通道中确定第二目标通道,并对第二目标通道对应的第二数据转换单元发送的多个写数据进行排序。通过第二状态机将排序的多个写数据进行组合,并将组合后的写数据传输至DMA控制器。
[0154] 需要说明的是,第一状态机可以接收多个第二数据转换单元输出,并根据预先配置的排序规则(规则主要包括各个第二通道的有效数据长度,和每个第二通道的优先级,其至同一个通道可以拆成多次输出,中间插入其它写数据。写数据的数据规格可以是自定义的,只要与排序单元匹配就行),根据第二通道的优先级可以判断写数据输出的先后次序。可以理解,第一状态机内可以设置有数据选择器,通过数据选择器实现数据拆分和输出。第二状态机主要起到混合不同通道或者相同通道数据的作用,将多个小数据混成一个大数据。比如上游状态机通道1、通道2过来,规则让a和b放在一起作为写数据,所以第二状态机就能得到新数据ab并发出。当然根据规则也可以不混合,相当于数据直通。可以理解,第二状态机内部也可以设置有数据选择器,通过该数据选择器实现数据组合并输出。
[0155] 在一实施例中,第二数据转换单元包括第二移位电路、第二拼接电路、第二存储器和第二计数电路。第二移位电路的第一端作为第二数据转换单元的第一端,第二拼接电路连接于第二移位电路的第二端与第二存储器的第一端之间,第二存储器的第二端作为第二数据转换单元的第二端,第二计数电路分别连接于第二移位电路、第二拼接电路、第二存储器的受控端。
[0156] 其中,通过第二移位电路根据第二通道的有效数据长度,将通过对应的第二通道接收的多个第二子数据进行组合得到子写数据。通过第二拼接电路将子写数据拼接为写数据,通过第二存储器暂存并输出写数据。通过第二计数电路对写数据的数量进行统计,并根据统计结果控制第二移位电路、第二拼接电路和第二存储器。
[0157] 步骤S304、通过DMA控制器基于系统总线对写数据进行写入操作。
[0158] 在实现DMA传输时,由DMA控制器直接掌管系统总线。因此,在DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器要把总线控制权再交回给CPU。本申请实施例中,DMA传输包括读数据的传输和写数据的传输。
[0159] 在一实施例中,DMA控制器包括第二DMA子控制器。第二DMA子控制器用于接收第一数据处理模块发送的写数据,并将写数据传输至系统总线,以通过系统总线对写数据进行写入操作,例如将写数据写入至内部存储器等。
[0160] 需要说明的是,通过第二DMA子控制器专用于执行写数据的传输任务,例如通过DMA控制器基于系统总线对写数据进行写入操作,使得写数据的数据传输过程不容易出现错误,能够提高写数据的数据传输的可靠性。
[0161] 上述实施例提供的数据传输方法,通过通道配置模块获取写数据的通道配置信息,并将写数据的通道配置信息发送至第一数据处理模块;通过第二数据处理模块,经由预设通道将多个第二子数据输出至第一数据处理模块;通过第一数据处理模块根据写数据的通道配置信息,将多个第二子数据进行组合得到写数据,并将写数据传输至DMA控制器;通过DMA控制器基于系统总线对写数据进行写入操作。
[0162] 需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述步骤S201至步骤S204以及步骤S301至步骤S304的数据传输方法的具体工作过程,可以参考前述直接内存存取装置实施例中的对应过程,在此不再赘述。
[0163] 需要说明的是,上述步骤S201至步骤S204记载的读数据的数据传输方法,以及上述步骤S301至步骤S304记载的写数据的数据传输方法均可应用于本申请实施例提供的直接内存存取装置中。因此,该直接内存存取装置既可以实现读数据的数据传输任务,又可以实现写数据的数据传输任务。
[0164] 也就是说,该直接内存存取装置可以在实现读数据的数据传输任务之后,再实现写数据的数据传输任务。或者,该直接内存存取装置可以在实现写数据的数据传输任务之后,再实现读数据的数据传输任务,本实施例对此不做具体限制。
[0165] 请参阅图11,图11为本申请实施例提供的一种集成电路系统的结构示意性框图。
[0166] 如图11所示,该集成电路系统400包括直接内存存取装置401,其中该直接内存存取装置401可以是如上所述的直接内存存取装置100。例如,该直接内存存取装置401可以包括DMA控制器、通道配置模块、第一数据处理模块和多个第二数据处理模块。DMA控制器和通道配置模块均与系统总线连接,第一数据处理模块与DMA控制器、通道配置模块连接,每个第二数据处理模块通过对应的预设通道与第一数据处理模块连接。其中,通道配置模块用于获取读数据或写数据的通道配置信息,并将读数据或写数据的通道配置信息发送给第一数据处理模块。第一数据处理模块用于根据读数据的通道配置信息,将DMA控制器传输的读数据分成多个第一子数据,并通过预设通道将第一子数据发送至对应的第二数据处理模块;第二数据处理模块用于对第一子数据执行设定操作。第二数据处理模块还用于通过对应的预设通道将多个第二子数据输出至第一数据处理模块;第一数据处理模块还用于根据写数据的通道配置信息,将多个第二子数据进行组合得到写数据,并将写数据传输至DMA控制器。
[0167] 示例性的,该集成电路系统400可以是SoC系统(System on a Chip,片上系统),也可以是SiP(System In a Package,系统级封装)系统,当然还其它类型的系统,比如可以是基于现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)的异构系统。
[0168] 在一实施例中,如图12所示,该集成电路系统400还可以包括通过系统总线402连接的处理器403和存储器404,其中,存储器可以包括存储介质和内存储器,存储介质可以是非易失性的,也可以是易失性的。存储介质可存储操作系统和计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行任意一种数据传输方法。
[0169] 其中,处理器用于提供计算和控制能力,支撑整个集成电路系统400的运行。内存储器为存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种数据传输方法。
[0170] 本领域技术人员可以理解,图11或图12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的集成电路系统400的限定,具体的集成电路系统400可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0171] 应当理解的是,处理器可以是中央处理单元 (Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路 (Application Specific Integrated Circuit,ASIC)、现场可编程门阵列 (Field‑Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0172] 需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述集成电路系统400的具体工作过程,可以参考前述直接内存存取装置和数据传输方法实施例中的对应过程,在此不再赘述。
[0173] 应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
[0174] 还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/ 或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0175] 上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。