1.一种直接内存存取DMA控制器,其特征在于,包括:总线主机接口,用于提供所述DMA控制器实现从源端至目的端的数据搬运的接口;以及传输控制模块,用于控制所述DMA控制器执行基于传输链表的数据搬运,其中所述传输链表被配置为连接多个从源端接收的连续或非连续的待搬运数据;其中,所述传输控制模块还用于:基于主状态机控制所述DMA控制器执行数据搬运总过程;基于第一子状态机控制从源端接收所述待搬运数据的子过程;基于第二子状态机控制向目的端发送待搬运数据的子过程;以及基于第三子状态机控制所述DMA控制器执行基于传输链表的数据搬运的子过程,包括:S31,在没有链表传输进行时,控制所述第三子状态机处于空闲状态;S32,当选择链表传输模式且检测到源端传输请求后,控制所述第三子状态机进入校验状态,以开始链表数据传输;S33,当计数到当前传输链表的传输长度时,控制所述第三子状态机进入加载状态以加载下一个链表数据,加载完成后,控制所述第三子状态机返回校验状态以开始新一段链表数据传输;以及S34,重复上述步骤S31-S33,直到整个链表传输结束,并在整个链表传输结束时,控制所述第三子状态机进入完成状态,且在响应于完成状态而产生链表传输完成信号后,控制所述第三子状态机返回空闲状态;其中,所述DMA控制器执行基于传输链表的数据搬运包括:配置链表指针寄存器的指针指向所述传输链表中的首地址;配置链表寄存器自动访问所述链表指针寄存器所指向的首地址,并将该首地址对应的待搬运数据自动加载到所述DMA控制器;以及在完成对所述首地址对应的待搬运数据的自动加载之后,配置所述链表寄存器按照所述传输链表中的地址顺序,依次自动访问自所述首地址的下一地址起的各地址,并自动加载相应地址对应的待搬运数据至所述DMA控制器,直到加载完所述传输链表中的所有待搬运数据。
2.根据权利要求1所述的DMA控制器,其特征在于,所述基于主状态机控制所述DMA控制器执行数据搬运总过程包括:在所述DMA控制器没有进行数据需要搬运时,控制所述主状态机进入空闲状态;当需要所述DMA控制器进行数据搬运时,控制所述主状态机进入准备状态,以等待向所述DMA控制器的内部寄存器写入待搬运数据;在全部待搬运数据写入完成之后,控制所述主状态机进入等待状态,以等待源端的传输请求信号;当识别到源端的传输请求信号之后,控制所述主状态机进入工作状态,以开始一次数据传输;在每次数据传输完成后,检测所述链表寄存器是否为零,若否,则重新加载所需的待搬运数据以开始下一次数据传输,直到所述链表寄存器为零,其中所述链表寄存器为零表明全部数据传输完毕;以及在全部数据传输完毕或者数据传输错误时,控制所述主状态机返回空闲状态。
3.根据权利要求1所述的DMA控制器,其特征在于,所述基于第一子状态机控制从源端接收所述待搬运数据的子过程,包括:在没有数据搬运进行时,控制所述第一子状态机处于空闲状态;当所述主状态机进入工作状态之后,控制所述第一子状态机进入开始状态;在所述第一子状态机在开始状态停留第一预设时间后,控制第一子状态机进入工作状态,以从源端接收数据;在接收完指定数据宽度的数据之后,控制所述第一子状态机进入校验状态,以进行数据校验;若所述数据校验通过,则控制所述第一子状态机返回工作状态以接收下一数据,若所述数据校验未通过,则控制所述第一子状态机进入错误状态;以及在所有数据全部接收完毕之后或者所述第一子状态机在工作状态停留超过第二预设时间之后,控制所述第一子状态机返回空闲状态。
4.根据权利要求1所述的DMA控制器,其特征在于,所述基于第二子状态机控制向目的端发送待搬运数据的子过程,包括:在没有向目的端搬运数据时,控制所述第二子状态机处于空闲状态;当出现目的端应答信号时,控制所述第二子状态机进入工作状态以发送数据;以及当指定的数据发送完成之后或所述第二子状态机停留在工作状态超过第三预设时间之后,控制所述第二子状态机返回空闲状态。
5.根据权利要求1至4中任意一项所述的DMA控制器,其特征在于,所述DMA控制器还包括:数据校验模块,用于采用以下中的任意一种或多种校验方法来对待搬运数据进行校验:基于查表法的循环冗余校验CRC;以及错误检查和纠正ECC校验。
6.根据权利要求5所述的DMA控制器,其特征在于,所述数据校验模块包括用于执行基于查表法的CRC的以下电路:累加器电路,用于将输入的待校验数据的字节与该累加器电路中预设的字节进行逻辑运算,并将所述逻辑运算的结果作为索引值;以及查找表电路,其预存了具有不同索引值的多个CRC码,用于输出与所述累加器电路得到的索引值相适配的CRC码以用于数据校验。
7.根据权利要求6所述的DMA控制器,其特征在于,所述累加器电路被配置为16位的累加器,且其中预设的高8位字节被用于与所述待校验数据的字节进行异或运算以得到所述索引值。
8.根据权利要求5所述的DMA控制器,其特征在于,所述数据校验模块包括用于执行基于ECC校验的以下单元:ECC计算单元,用于在所述待搬运数据写入和读出时分别计算出对应的ECC码;以及ECC校验纠错单元,将两次计算的ECC码相比较以进行数据的校验和纠错。
9.根据权利要求1至4中任意一项所述的DMA控制器,其特征在于,所述DMA控制器还包括以下模块中的任意一者或多者:总线从机接口,用于提供CPU向所述DMA控制器的内部寄存器写入或读取数据的接口;多个传输通道,其中每一传输通道被配置为实现所述DMA控制器内部的两个指定存储器之间的数据传输;先进先出FIFO存储器,用于进行所述DMA控制器内部的数据缓存;数据同步模块,用于实现来自总线的配置信息的同步;中断响应模块,用于产生中断信号,并通过总线传输该中断信号以通知中央处理单元CPU;以及请求同步模块,用于将来自源端的传输请求信号同步到所述DMA控制器的时钟域下。
10.一种SOC系统,其特征在于,所述SOC系统包括权利要求1-9中任意一项所述的DMA控制器。
11.一种基于DMA控制器的数据搬运方法,其特征在于,该数据搬运方法包括:传输控制模块控制所述DMA控制器执行基于传输链表的数据搬运,其中所述数据搬运是指从源端至目的端的数据搬运,且所述传输链表被配置为连接多个从源端接收的连续或非连续的待搬运数据;其中,所述传输控制模块控制所述DMA控制器包括:基于主状态机控制所述DMA控制器执行数据搬运总过程;基于第一子状态机控制从源端接收所述待搬运数据的子过程;基于第二子状态机控制向目的端发送待搬运数据的子过程;以及基于第三子状态机控制所述DMA控制器执行基于传输链表的数据搬运的子过程,包括:S31,在没有链表传输进行时,控制所述第三子状态机处于空闲状态;S32,当选择链表传输模式且检测到源端传输请求后,控制所述第三子状态机进入校验状态,以开始链表数据传输;S33,当计数到当前传输链表的传输长度时,控制所述第三子状态机进入加载状态以加载下一个链表数据,加载完成后,控制所述第三子状态机返回校验状态以开始新一段链表数据传输;以及S34,重复上述步骤S31-S33,直到整个链表传输结束,并在整个链表传输结束时,控制所述第三子状态机进入完成状态,且在响应于完成状态而产生链表传输完成信号后,控制所述第三子状态机返回空闲状态;其中,所述DMA控制器执行基于传输链表的数据搬运包括:配置链表指针寄存器的指针指向所述传输链表中的首地址;配置链表寄存器自动访问所述链表指针寄存器所指向的首地址,并将该首地址对应的待搬运数据自动加载到所述DMA控制器;以及在完成对所述首地址对应的待搬运数据的自动加载之后,配置所述链表寄存器按照所述传输链表中的地址顺序,依次自动访问自所述首地址的下一地址起的各地址,并自动加载相应地址对应的待搬运数据至所述DMA控制器,直到加载完所述传输链表中的所有待搬运数据。
12.根据权利要求11所述的数据搬运方法,其特征在于,所述数据搬运方法还包括采用以下中的任意一种或多种校验方法来对待搬运数据进行校验:基于查表法的循环冗余校验CRC;以及错误检查和纠正ECC校验。