一种基于海量数据传输的dma控制器的制作方法

文档序号:6585120阅读:381来源:国知局
专利名称:一种基于海量数据传输的dma控制器的制作方法
技术领域
本发明涉及一种DMA结构,尤其涉及一种基于海量数据传输的DMA控制器。
背景技术
在含有中央处理器(CPU)的系统中,为了提高CPU的使用效率和数据传输速率,在 海量数据传输操作过程中,通常采用直接内存访问(Direct MemoryAccess Control, DMA) 的方式对数据进行操作。而DMA的操作是通过DMA控制器(DMA Controller,DMAC)来实现 的。DMA控制器有选择型和多路型两类,本发明涉及的DMA控制器为选择型,即物理上连接 有多个硬件,而逻辑上只允许一个硬件,即在某段时间内只能为一个硬件服务。
如图1所示,在现有传统DMA结构中,外设发起的DMA传输通常是从外设1的FIFO 中取数据放到外设2的FIFO中,外设发起的DMA传输通常是从外设的缓存中取数据放到总 线上的存储器中;例如当有外设需要进行DMA传输时,当其缓存装满数据后,其通过DMA请 求触发器想DMA控制器发起DMA传输请求。在此之前CPU已经将地址等控制信息配给DMA 控制器内的地址寄存器中,当DMA控制器接到DMA传输请求时,其向CPU发起总线占用请 求。CPU通常在执行完当前指令后将总线控制权交给DMA控制器。此时DMA控制器的控制、 状态寄存器发生变化,表明已获得总线控制权,开始进行DMA传输,传输中用一个计数器对 传输的数据量进行计算,并且每个时钟节拍只能传送1个字节。这虽然有效的避免了由CPU 重复取数、搬数所耗费的时间,但是对于海量数据传输来说,由于数据量大,逐字节的传送 仍然需要消耗很长时间,因此传输效率依然较低。另外,在现有的DMA传输中,如果外设比 如UART等仅有字节类型的缓存,则DMA控制器仅用总线的低8位进行传输,降低了总线的 利用率,并且DMA传输效率也比较低。

发明内容
本发明的技术解决问题是针对上述不足,提供一种基于海量数据传输的DMA控 制器,数据传输量大,并且传输速率高。 本发明的技术解决方案是一种基于海量数据传输的DMA控制器,包括总线接口、 寄存器组、状态机、存储器管理单元和数据缓存区,总线接口与控制器的总线相连,数据缓 存区连接两个外部设备;控制器通过总线接口对寄存器组进行配置管理,寄存器组的配置 结果控制状态机的工作状态,状态机根据状态机的工作状态控制存储器管理单元完成数据 缓存区与外部设备的数据交换; 所述寄存器组包括块数计数器、子块数计数器、字节计数器以及由数据源基址寄 存器、数据目的基址寄存器、数据地址增量寄存器、DMA状态寄存器和DMA控制寄存器构成 的公共寄存器; 所述控制器将寄存器组配置成三种配置结果,三种配置结果对应三种状态机的工 作状态,其中状态机的第一种工作状态是字节数据传输,状态机的第二种工作状态是块数 据传输,状态机的第三种工作状态是子块数据传输;
字节传输的配置方式为 数据源基址寄存器设置为输入数据缓冲区的首地址;
数据目的基址寄存器设置为输出数据缓冲区的首地址; 数据地址增量寄存器分为源地址增量控制位和目的地址增量控制位,源地址增量 控制位和目的地址增量控制位分别设置为地址加1模式; DMA控制寄存器包含启动控制位、暂停控制位和传输方式控制位,传输方式控制位 设为0,即为字节传输方式; DMA状态寄存器,用于查询DMA控制器当前的活动状态,包括表示"DMA控制器正 在传送数据"、"DMA控制器暂停或者不活动"、"全部数据传送完成"、"全部数据未传送完成" 和"一子块传输完成"的值; 块数计数器设置为1,即匿控制器A传输过程采用字节传输; 子块数计数器设置为1,即DMA控制器传输过程采用字节传输; 字节计数器设置为欲传送数据的字节数,即当次DMA控制器要传输的字节数; 块数据传输的配置方式为 数据源基址寄存器设置为输入数据缓冲区的首地址;
数据目的基址寄存器设置为输出数据缓冲区的首地址; 数据地址增量寄存器分为源地址增量控制位和目的地址增量控制位,源地址增量 控制位和目的地址增量控制位分别设置为地址不改变; DMA控制寄存器包含启动控制位、暂停控制位和传输方式控制位,传输方式控制位 设为l,即为块传输方式; DMA状态寄存器,用于查询DMA控制器当前的活动状态,包括表示"DMA控制器正 在传送数据"、"DMA控制器暂停或者不活动"、"全部数据传送完成"、"全部数据未传送完成" 和"一子块传输完成"的值; 块数计数器设置为欲传输数据的块数,每次DMA控制器传输过程完成一块数据的
传输,此计数器中的值相应减1,当所有块数据传输完成后计数器的值为0 ; 子块数计数器设置为1,即每次DMA控制器传输过程中每块数据中包含唯一子块,
当所有数据块传输完成后此计数器中的值为0 ; 字节计数器设置为每块数据所包含的字节数; 子块数传输的配置方式为 数据源基址寄存器设置为输入数据缓冲区的首地址;
数据目的基址寄存器设置为输出数据缓冲区的首地址; 数据地址增量寄存器分为源地址增量控制位和目的地址增量控制位,源地址增量 控制位和目的地址增量控制位分别设置为地址不改变; DMA控制寄存器包含启动控制位、暂停控制位和传输方式控制位,传输方式控制位 设为2,即为子块传输方式; DMA状态寄存器,用于查询DMA控制器当前的活动状态,包括表示"DMA控制器正 在传送数据"、"DMA控制器暂停或者不活动"、"全部数据传送完成"、"全部数据未传送完成" 和"一子块传输完成"的值; 块数计数器设置为欲传输数据的块数,DMA控制器传输过程每完成一个数据块的传输,此计数器中的值相应减1,当所有块数据传输完成后此计数器中的值为0 ; 子块数计数器设置为每块数据所包含的子块个数,每次DMA控制器传输过程仅完 成一子块数据的传输,该计数器中的值相应减1,当所有子数据块传输完成后该计数器的值 为O,该计数器中的值为0时表示一块数据传输完成;
字节计数器设置为子块数据所包含的字节数。 —种基于海量数据传输的DMA控制器,包括两个总线接口 、寄存器组、存储器管理 单元、数据缓存区和状态机;两个总线接口的一端与控制器的总线相连,其中一个总线接口 的另一端连接寄存器组,另外一个总线接口的另一端连接存储器管理单元,数据缓存区连 接两个外部设备;控制器对寄存器组进行配置管理,寄存器组的配置结果控制状态机的工 作状态,状态机根据状态机的工作状态通过另外一个总线接口控制存储器管理单元完成数 据缓存区与外部设备的数据交换; 所述寄存器组包括块数计数器、子块数计数器、字节计数器以及由数据源基址寄 存器、数据目的基址寄存器、数据地址增量寄存器、DMA状态寄存器和DMA控制寄存器构成 的公共寄存器; 所述控制器将寄存器组配置成三种配置结果,三种配置结果对应三种状态机的工 作状态,其中状态机的第一种工作状态是字节数据传输,状态机的第二种工作状态是块数 据传输,状态机的第三种工作状态是子块数据传输;
字节传输的配置方式为 数据源基址寄存器设置为输入数据缓冲区的首地址;
数据目的基址寄存器设置为输出数据缓冲区的首地址; 数据地址增量寄存器分为源地址增量控制位和目的地址增量控制位,源地址增量 控制位和目的地址增量控制位分别设置为地址加1模式; DMA控制寄存器包含启动控制位、暂停控制位和传输方式控制位,传输方式控制位 设为0,即为字节传输方式; DMA状态寄存器,用于查询DMA控制器当前的活动状态,包括表示"DMA控制器正 在传送数据"、"DMA控制器暂停或者不活动"、"全部数据传送完成"、"全部数据未传送完成" 和"一子块传输完成"的值; 块数计数器设置为1,即匿控制器A传输过程采用字节传输; 子块数计数器设置为1,即DMA控制器传输过程采用字节传输; 字节计数器设置为欲传送数据的字节数,即当次DMA控制器要传输的字节数; 块数据传输的配置方式为 数据源基址寄存器设置为输入数据缓冲区的首地址;
数据目的基址寄存器设置为输出数据缓冲区的首地址; 数据地址增量寄存器分为源地址增量控制位和目的地址增量控制位,源地址增量 控制位和目的地址增量控制位分别设置为地址不改变; DMA控制寄存器包含启动控制位、暂停控制位和传输方式控制位,传输方式控制位 设为l,即为块传输方式; DMA状态寄存器,用于查询DMA控制器当前的活动状态,包括表示"DMA控制器正 在传送数据"、"DMA控制器暂停或者不活动"、"全部数据传送完成"、"全部数据未传送完成"和"一子块传输完成"的值; 块数计数器设置为欲传输数据的块数,每次DMA控制器传输过程完成一块数据的
传输,此计数器中的值相应减1,当所有块数据传输完成后计数器的值为0 ; 子块数计数器设置为1,即每次DMA控制器传输过程中每块数据中包含唯一子块,
当所有数据块传输完成后此计数器中的值为0 ; 字节计数器设置为每块数据所包含的字节数; 子块数传输的配置方式为 数据源基址寄存器设置为输入数据缓冲区的首地址;
数据目的基址寄存器设置为输出数据缓冲区的首地址; 数据地址增量寄存器分为源地址增量控制位和目的地址增量控制位,源地址增量 控制位和目的地址增量控制位分别设置为地址不改变; DMA控制寄存器包含启动控制位、暂停控制位和传输方式控制位,传输方式控制位 设为2,即为子块传输方式; DMA状态寄存器,用于查询DMA控制器当前的活动状态,包括表示"DMA控制器正 在传送数据"、"DMA控制器暂停或者不活动"、"全部数据传送完成"、"全部数据未传送完成" 和"一子块传输完成"的值; 块数计数器设置为欲传输数据的块数,DMA控制器传输过程每完成一个数据块的
传输,此计数器中的值相应减1,当所有块数据传输完成后此计数器中的值为0 ; 子块数计数器设置为每块数据所包含的子块个数,每次DMA控制器传输过程仅完
成一子块数据的传输,该计数器中的值相应减1,当所有子数据块传输完成后该计数器的值
为O,该计数器中的值为0时表示一块数据传输完成; 字节计数器设置为子块数据所包含的字节数。 所述状态机利用第一种工作状态控制存储器管理单元完成数据缓存区与外部设 备的数据交换的方法为 (a)控制器根据传输数据的大小设置字节计数器的计数值,存储器管理单元将数 据缓存区映射为输入数据缓存区和输出数据缓存区; (b)当外设将数据存入输入数据缓存区后发出DMA数据传输请求,控制器启动状 态机采用字节数据传输; (c)状态机控制存储器管理单元将输入数据缓存区中的第一个字节写入输出数据 缓存区中,每写完一个字节后字节计数器的计数值减l,直到字节计数器的计数值为O时, 本次字节数据传输完成。 所述状态机利用第二种工作状态控制存储器管理单元完成数据缓存区与外部设 备的数据交换的方法为 (a)控制器根据传输数据的大小分别设置块数计数器和字节计数器的计数值,存 储器管理单元将数据缓存区映射为输入数据缓存区和输出数据缓存区;
(b)当外设将数据存入输入数据缓存区后发出DMA数据传输请求,控制器启动状 态机采用块数据传输; (c)状态机控制存储器管理单元将输入数据缓存区的地址和输出数据缓存区的地 址进行互换,输入数据缓存区变换为输出数据缓存区,输出数据缓存区变换为输入数据缓存区, 一次输入数据缓存区和输出数据缓存区地址的交换记为一次单块数据的传输,每完 成一次单块数据传输后块数计数器的计数值减l,直到块数计数器的计数值为0时,本次块 数据传输完成。 本发明与现有技术相比的优点是本发明的组成结构使数据传送具有三种传输方 式,通过对公共寄存器及字节计数器、块计数器以及子块数计数器的配置可实现字节数据 传输、块数据传输和子块数据传输,字节数据传输和子块数据传输适用于数据源缓存区和 数据目的缓存区不同的情况,块数据传输,适用于数据源缓存区与数据目的缓存区相同的 情况,通过改变其逻辑地址就完成了传送过程。采用本发明的技术方案使数据源缓冲区与 数据目的缓冲区数据可以在一个节拍内完成数据传输,大大加快了 DMA传输的数据量,提 高了传输效率。


图1为现有DMA控制器的结构图; 图2为本发明DMA控制器的第一种组成结构图; 图3为本发明DMA控制器的第二种组成结构图; 图4为本发明字节传输的工作流程图; 图5为本发明块数据传输的工作流程图; 图6为本发明块数据传输存储管理单元对数据缓冲区的映射原理图; 图7为本发明子块数据传输的工作流程图; 图8为子块数据传输时存储管理单元对数据缓冲区的第一种映射原理图; 图9为子块数据传输时存储管理单元对数据缓冲区的第二种映射原理图。
具体实施例方式
下面将结合附图及实施例对本发明的技术方案进行更详细的说明。
如图2所示,本发明的DMA控制器包括总线接口、寄存器组、状态机、存储器管理单 元和数据缓存区,总线接口与控制器的总线相连,数据缓存区连接两个外部设备;控制器通 过总线接口对寄存器组进行配置管理,寄存器组的配置结果控制状态机的工作状态,状态 机根据状态机的工作状态控制存储器管理单元完成数据缓存区与外部设备的数据交换;
寄存器组包括块数计数器、子块数计数器、字节计数器以及由数据源基址寄存 器、数据目的基址寄存器、数据地址增量寄存器、DMA状态寄存器和DMA控制寄存器构成的 公共寄存器; 数据源基址寄存器,用于存放传输数据的首地址; 数据目的基址寄存器,用于存放数据传送目的缓冲区的首地址,即子块首地址;
数据地址增量寄存器,用于存放在连续传送过程中源地址与目的地址每次修改的 增量; DMA状态寄存器,用于查询DMA当前的活动状态,包括表示"DMA正在传送数据"、 "DMA暂停或者不活动"、"全部数据传送完成"、"全部数据未传送完成"和"一子块传输完成" 的值; DMA控制寄存器,用于控制DMA的启动、复位、暂停以及继续操作;
块数计数器,用于设置要连续传送的数据块个数; 子块数计数器,用于设置每个数据块所含的子块数及传送子块所采用的传送方
式,传送方式为整块传送或者字节传送; 字节计数器,用于设置要传送的字节数。 如图3所示,包括两个总线接口、寄存器组、存储器管理单元、数据缓存区和状态 机;两个总线接口的一端与控制器的总线相连,其中一个总线接口的另一端连接寄存器组, 另外一个总线接口的另一端连接存储器管理单元,数据缓存区连接两个外部设备;控制器 对寄存器组进行配置管理,寄存器组的配置结果控制状态机的工作状态,状态机根据状态 机的工作状态通过另外一个总线接口控制存储器管理单元完成数据缓存区与外部设备的 数据交换; 所述寄存器组包括块数计数器、子块数计数器、字节计数器以及由数据源基址寄 存器、数据目的基址寄存器、数据地址增量寄存器、DMA状态寄存器和DMA控制寄存器构成 的公共寄存器; 数据源基址寄存器,用于存放传输数据的首地址; 数据目的基址寄存器,用于存放数据传送目的缓冲区的首地址,即子块首地址;
数据地址增量寄存器,用于存放在连续传送过程中源地址与目的地址每次修改的 增量; DMA状态寄存器,用于查询DMA当前的活动状态,包括表示"DMA正在传送数据"、 "DMA暂停或者不活动"、"全部数据传送完成"、"全部数据未传送完成"和"一子块传输完成" 的值; DMA控制寄存器,用于控制DMA的启动、复位、暂停以及继续操作;
块数计数器,用于设置要连续传送的数据块个数; 子块数计数器,用于设置每个数据块所含的子块数及传送子块所采用的传送方
式,传送方式为整块传送或者字节传送; 字节计数器,用于设置要传送的字节数。 DMA控制器,在数据传送期间,控制器可以自由访问DMA控制寄存器及DMA状态寄 存器;一个启动命令只传送一个数据,数据传送完成后等待下一个启动命令,在传送期间, 如果"暂停"命令被写入,DMA控制器将停止传送,但保留当前状态,等待"继续"命令被写入 后,继续传送过程,"复位"命令则将全部寄存器设置和状态复位。DMA控制器支持字节传送 及整块传送模式,该DMA控制器在数据源缓冲区与数据目的缓冲区之间的数据传输通道宽 度支持8位、16位和32位。在字节传送模式时,单个时钟可完成数据源缓冲区与数据目的 缓冲区之间一个字节(8位)、半字(16位)或字(32位)的传输,由于其所具有的可配置的 数据总线宽度,所以可适应多个数据缓冲区之间的数据传输;在整块传送模式时,通过存储 器管理单元实现数据源缓冲区与数据目的缓冲区之间的地址映射,从而达到在一个时钟节 拍内完成一个数据块的传送。当数据源缓冲区与数据目的缓冲区具有相同字节数时,采用 本发明所述及的整块传送模式方案可以在一个时钟节拍内完成整个数据块的传输,当数据 源缓冲区与数据目的缓冲区的字节数不一致时,根据适当配置将数据源缓冲区或数据目的 缓冲区分割成具有相同字节数的子数据块,即可在一个节拍完成一个子块的传送。当DMA 控制器完成数据源缓冲区与数据目的缓冲区之间一块数据的传输时,向CPU发出DMA传输完成中断请求。DMA控制模块,通过更改数据源基址寄存器和数据目的基址寄存器的设置来 实现不同数据缓冲区之间的数据交换,通过对数据地址增量寄存器的设置来修改非整块传 送模式下数据源地址和目的地址每次修改的增量,以实现对8-bit、 16-bit及32-bit数据 总线的支持。 DMA控制器,控制器对字节计数器、块数计数器及子块数计数器进行设置,将数据 源缓冲区与数据目的缓冲区的字节数配置成具有相同字节数的子数据块以实现整块数据 之间的地址映射,以便利用整块传送模式提高数据的传输速率。DMA控制器可以连续在两个 数据缓冲区之间传送多个数据块,中间不需要CPU干预。当数据缓冲区为FIFO时,访问地 址设置为固定的端口地址,即设置地址增量寄存器的值为O。 存储器管理单元,用于实现数据源缓冲区与数据目的缓冲区之间的地址映射。存 储器管理单元内部设置数据源缓存区即输入缓存区和数据目的缓存区即输出缓存区德基 地址指针,分别用于指向数据源缓冲区和数据目的缓冲区的首地址。 在采用块传输的过程中,一块数据传输完成后,存储器管理单元完成信号修改数 据源和数据目的基地址,以完成缓冲区之间的地址映射。 在采用字节传送的过程中,一字节数据传输完成后,存储器管理单元完成信号分 别修改数据源和数据目的基地址,以完成地址与数据之间的对应。 控制器将寄存器组配置成三种配置结果,三种配置结果对应三种状态机的工作状 态,其中状态机的第一种工作状态是字节数据传输,字节传送即每个节拍传送一个字节,适 用于数据源和数据目的不同物理块的情况;状态机的第二种工作状态是块数据传输,整块 传送即一个节拍就完成整个子块的传送,适用于数据源与数据目的是同一物理块的情况, 改变其逻辑地址就完成了传送过程;状态机的第三种工作状态是子块数据传输,同样适用 于数据源和数据目的不同物理块的情况,传输效率比字节传送效率高。 所述控制器将寄存器组配置成三种配置结果,三种配置结果对应三种状态机的工 作状态,其中状态机的第一种工作状态是字节数据传输,状态机的第二种工作状态是块数 据传输,状态机的第三种工作状态是子块数据传输;
字节传输的配置方式为 数据源基址寄存器设置为输入数据缓冲区的首地址;
数据目的基址寄存器设置为输出数据缓冲区的首地址; 数据地址增量寄存器分为源地址增量控制位和目的地址增量控制位,源地址增量 控制位和目的地址增量控制位分别设置为地址加1模式; DMA控制寄存器包含启动控制位、暂停控制位和传输方式控制位,传输方式控制位 设为0,即为字节传输方式; DMA状态寄存器,用于查询DMA控制器当前的活动状态,包括表示"DMA控制器正 在传送数据"、"DMA控制器暂停或者不活动"、"全部数据传送完成"、"全部数据未传送完成" 和"一子块传输完成"的值; 块数计数器设置为l,即匿控制器A传输过程采用字节传输; 子块数计数器设置为l,即DMA控制器传输过程采用字节传输; 字节计数器设置为欲传送数据的字节数,即当次DMA控制器要传输的字节数; 块数据传输的配置方式为
数据源基址寄存器设置为输入数据缓冲区的首地址;
数据目的基址寄存器设置为输出数据缓冲区的首地址; 数据地址增量寄存器分为源地址增量控制位和目的地址增量控制位,源地址增量 控制位和目的地址增量控制位分别设置为地址不改变; DMA控制寄存器包含启动控制位、暂停控制位和传输方式控制位,传输方式控制位 设为l,即为块传输方式; DMA状态寄存器,用于查询DMA控制器当前的活动状态,包括表示"DMA控制器正 在传送数据"、"DMA控制器暂停或者不活动"、"全部数据传送完成"、"全部数据未传送完成" 和"一子块传输完成"的值; 块数计数器设置为欲传输数据的块数,每次DMA控制器传输过程完成一块数据的
传输,此计数器中的值相应减1,当所有块数据传输完成后计数器的值为0 ; 子块数计数器设置为1,即每次DMA控制器传输过程中每块数据中包含唯一子块,
当所有数据块传输完成后此计数器中的值为0 ; 字节计数器设置为每块数据所包含的字节数; 子块数传输的配置方式为 数据源基址寄存器设置为输入数据缓冲区的首地址;
数据目的基址寄存器设置为输出数据缓冲区的首地址; 数据地址增量寄存器分为源地址增量控制位和目的地址增量控制位,源地址增量 控制位和目的地址增量控制位分别设置为地址不改变; DMA控制寄存器包含启动控制位、暂停控制位和传输方式控制位,传输方式控制位 设为2,即为子块传输方式; DMA状态寄存器,用于查询DMA控制器当前的活动状态,包括表示"DMA控制器正 在传送数据"、"DMA控制器暂停或者不活动"、"全部数据传送完成"、"全部数据未传送完成" 和"一子块传输完成"的值; 块数计数器设置为欲传输数据的块数,DMA控制器传输过程每完成一个数据块的
传输,此计数器中的值相应减1,当所有块数据传输完成后此计数器中的值为0 ; 子块数计数器设置为每块数据所包含的子块个数,每次DMA控制器传输过程仅完
成一子块数据的传输,该计数器中的值相应减1,当所有子数据块传输完成后该计数器的值
为O,该计数器中的值为0时表示一块数据传输完成; 字节计数器设置为子块数据所包含的字节数。 1、状态机利用第一种工作状态控制存储器管理单元完成数据缓存区与外部设备 的数据交换的方法如图4所示,此模式与传统DMA传送方式相同,每个时钟周期传送一个 字节数据,在此种传送模式下需设置的寄存器有DMA控制寄存器和字节数寄存器。其过程 为 (a)控制器根据传输数据的大小设置字节计数器的计数值,存储器管理单元将数 据缓存区映射为输入数据缓存区和输出数据缓存区;最大传送字节数以FIFO实际大小相 同,本次设计中最大字节数为512字节,可根据实际需要确定; (b)当外设将数据存入输入数据缓存区后发出DMA数据传输请求,控制器启动状 态机采用字节数据传输;
(c)状态机控制存储器管理单元将输入数据缓存区中的第一个字节写入输出数据 缓存区中,每写完一个字节后字节计数器的计数值减1,直到字节计数器的计数值为0时, 本次字节数据传输完成。 2、状态机利用第二种工作状态控制存储器管理单元完成数据缓存区与外部设备 的数据交换的方法如图5所示,在外设1和外设2的FIFO大小相同的情况下,采用整块传 输模式,每周期传送一个整块的数据块(512字节,可设置),在该模式下需要设置的寄存器 有DMA控制寄存器、块数计数器和字节计数器,每传送一块数据,块数计数器值减一,为0 时,数据传输完成。其过程为 (a)控制器根据传输数据的大小分别设置块数计数器和字节计数器的计数值,存 储器管理单元将数据缓存区映射为输入数据缓存区和输出数据缓存区,如图6所示;
(b)当外设将数据存入输入数据缓存区后发出DMA数据传输请求,控制器启动状
态机采用块数据传输; (c)状态机控制存储器管理单元将输入数据缓存区的地址和输出数据缓存区的地 址进行互换,输入数据缓存区变换为输出数据缓存区,输出数据缓存区变换为输入数据缓 存区, 一次输入数据缓存区和输出数据缓存区地址的交换记为一次单块数据的传输,每完 成一次单块数据传输后块数计数器的计数值减l,直到块数计数器的计数值为0时,本次块 数据传输完成。 3、在两个外设的FIF0大小相同时,本发明采用整块数据传输的方式,该方式具有 高的传输效率。而在两个外设的FIFO大小不同时,采用字节传送模式同样可以完成任务, 但采用字节传输比较慢,因此本发明提供了一种更为有效的传输方式——子块传输模式, 在此种模式下需要设置的寄存器有DMA控制寄存器、字节计数器、块数计数器和子块数计 数器,DMA控制器在收到"启动"信号后,每传送一子块数据,子块数计数器的值减一,子块数 计数器的值为0时,一块数据传输完成,同时块数计数器的值减一,块数计数器的值为0时, 数据传输全部完成。控制流程如图7所示 a)控制器根据传输数据的大小和实际应用输入数据缓冲区和输出数据缓冲区的 大小,分别设置块数计数器、子块数计数器和字节计数器的计数值; b)当外设将数据存入输入数据缓存区后发出DMA数据传输请求,控制器启动状态 机采用子块数据传输; c)状态机控制存储器管理单元将输入数据缓存区中的数据按子块方式输出,每完 成一次子块数据传输后子块数计数器的计数值减l,直到子块数计数器的计数值为0时,所 有子块传输完成,即完成一块数据的传输。 d)每完成一次单块数据传输后块数计数器的计数值减l,直到块数计数器的计数 值为0时,本次块数据传输全部完成。 在子块数据传送的过程中,根据外设数据块大小的不同,存储器管理单元采用两 种不同的管理方案。第一种方案为输入数据缓冲区大于输出数据缓冲区管理方案,第二中 方案为输入数据缓冲区小于输出数据缓冲区管理方案。 在采用第一种输入数据缓冲区大于输出数据缓冲区管理方案时,如图8所示,在 这种方案下,存储器管理单元将数据缓冲区,映射为两个大的逻辑存储缓冲区,同时定义逻 辑存储缓冲区1作为输入数据缓冲区,逻辑存储缓冲区2为输出数据缓冲区。
a)控制器根据传输数据的大小和实际应用输入数据缓冲区和输出数据缓冲区的
大小,分别设置块数计数器、子块数计数器和字节计数器的计数值; b)当外设将数据写入输入数据缓冲区后向DMA控制器发出数据传输请求; c)控制器接收到数据传输请求后启动DMA状态机,控制器通过状态机启动存储器
管理单元,存储器管理单元负责完成输入数据缓冲区与输出数据缓冲区的地址映射,此时
输入数据缓冲区变成输出数据缓冲区,输出数据缓冲区变成输入数据缓冲区,即逻辑缓冲
区1作为输出数据缓冲区,逻辑缓冲区2为输入数据缓冲区。 d)存储器管理单元根据子块数计数器将逻辑缓冲区1分割为N个大小相同的子块,每个子块定义为一个输出数据缓冲区,即包含N个大小相同的输出数据缓冲区,输出数据缓冲区指针在第一个输出数据缓冲区。 e)存储器管理单元控制输出数据缓冲区完成一个子块数据的传输,即完成一个输出数据缓冲区的传输后,存储器管理单元控制输出数据缓冲区指针跳转到下一个输出数据缓冲区,同时控制子块数计数器中的值减l,直到所有子块传输完毕,子块数计数器中的值为O,则一整块数据传输完成。否则存储器管理单元将输出数据缓冲区首地址指向下一子块,DMA控制器继续下一子块数据传输。 f) —整块数据传输完成后,块数计数器中的值减l,直到块数计数器中值为O,则所有数据传输完成,否则DMA控制器继续下一块数据传输。 在采用第二种输入数据缓冲区小于输出数据缓冲区管理方案时,如图9所示,在
这种方案下存储器管理单元将数据缓冲区也映射为两个大的逻辑存储缓冲区,同时定义
逻辑缓冲区1作为输入数据缓冲区,逻辑缓冲区2为输出数据缓冲区; a)控制器根据传输数据的大小和实际应用输入数据缓冲区和输出数据缓冲区的
大小,分别设置块数计数器、子块数计数器和字节计数器的计数值; b)当外设将数据写入输入数据缓冲区后向DMA控制器发出数据传输请求; c)状态机接收到数据传输请求后启动存储器管理单元,存储器管理单元根据子块
数计数器将逻辑缓冲区1即输入数据缓冲区分割为N个大小相同的子块,每块都映射为一
个输入数据缓冲区; d)存储器管理单元完成第一个输入数据缓冲区的地址映射后,将输入数据缓冲区指针跳转到下一个子块地址即下一个输入数据缓冲区,同时子块数计数器中的值减l,直到子块数计数器中的值为O,完成所有子块传输,则N个子块数据已写入逻辑存储缓冲区1 ;
e)存储器管理单元控制逻辑存储缓存区1和逻辑存储缓存区2的地址互换,将逻辑存储缓存区1映射为输出数据缓冲区,逻辑存储缓存区2映射为新的输入数据缓冲区,准备接收新的输入数据; f)存储器管理单元控制逻辑存储缓存区1即输出数据缓冲区完成其与外设的一个块数据的传输,同时块数计数器中的值减l,如此循环直到块数计数器中的值为O,完成全部块传输。 实施例在典型的海量数据存储设备USB 2.0SD卡读卡器中的应用。假设USBFIFO与SD卡FIFO大小均为512字节。在USB高速模式下,USB主机发送一个数据包到USBFIFO中并要求传输到SD卡FIFO中(写SD卡操作),MCU启动DMA整块传送以完成一块传送,DMA完成信号直接修改USB FIFO和SD卡FIFO基地址,即两基地址直接互换,完成源数据地址和目的数据地址的映射。在USB全速模式下(数据长度为64字节),通过设置子块长度寄存器为64字节,子块数为8,将USB FIFO分割为8个长度为64字节的子块。当USB主机发送一个数据包到USB FIFO中后,MCU启动DMA整块传输。传送一个64字节的子块。DMA传输完成信号修改USB FIFO基地址到下一子区域首地址(基地址+64字节),如果基地址跨越USB FIFO区域边界,则将USB FIFO和SD卡FIFO基地互换,完成数据源地址和数据目的地址的映射。 上述为本发明的最优实施方式,其余与现有技术相同部分不再赘述。在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的变形,但这些相应的变形都应属于本发明。
权利要求
一种基于海量数据传输的DMA控制器,其特征在于包括总线接口、寄存器组、状态机、存储器管理单元和数据缓存区,总线接口与控制器的总线相连,数据缓存区连接两个外部设备;控制器通过总线接口对寄存器组进行配置管理,寄存器组的配置结果控制状态机的工作状态,状态机根据状态机的工作状态控制存储器管理单元完成数据缓存区与外部设备的数据交换;所述寄存器组包括块数计数器、子块数计数器、字节计数器以及由数据源基址寄存器、数据目的基址寄存器、数据地址增量寄存器、DMA状态寄存器和DMA控制寄存器构成的公共寄存器;所述控制器将寄存器组配置成三种配置结果,三种配置结果对应三种状态机的工作状态,其中状态机的第一种工作状态是字节数据传输,状态机的第二种工作状态是块数据传输,状态机的第三种工作状态是子块数据传输;字节传输的配置方式为数据源基址寄存器设置为输入数据缓冲区的首地址;数据目的基址寄存器设置为输出数据缓冲区的首地址;数据地址增量寄存器分为源地址增量控制位和目的地址增量控制位,源地址增量控制位和目的地址增量控制位分别设置为地址加1模式;DMA控制寄存器包含启动控制位、暂停控制位和传输方式控制位,传输方式控制位设为0,即为字节传输方式;DMA状态寄存器,用于查询DMA控制器当前的活动状态,包括表示“DMA控制器正在传送数据”、“DMA控制器暂停或者不活动”、“全部数据传送完成”、“全部数据未传送完成”和“一子块传输完成”的值;块数计数器设置为1,即DM控制器A传输过程采用字节传输;子块数计数器设置为1,即DMA控制器传输过程采用字节传输;字节计数器设置为欲传送数据的字节数,即当次DMA控制器要传输的字节数;块数据传输的配置方式为数据源基址寄存器设置为输入数据缓冲区的首地址;数据目的基址寄存器设置为输出数据缓冲区的首地址;数据地址增量寄存器分为源地址增量控制位和目的地址增量控制位,源地址增量控制位和目的地址增量控制位分别设置为地址不改变;DMA控制寄存器包含启动控制位、暂停控制位和传输方式控制位,传输方式控制位设为1,即为块传输方式;DMA状态寄存器,用于查询DMA控制器当前的活动状态,包括表示“DMA控制器正在传送数据”、“DMA控制器暂停或者不活动”、“全部数据传送完成”、“全部数据未传送完成”和“一子块传输完成”的值;块数计数器设置为欲传输数据的块数,每次DMA控制器传输过程完成一块数据的传输,此计数器中的值相应减1,当所有块数据传输完成后计数器的值为0;子块数计数器设置为1,即每次DMA控制器传输过程中每块数据中包含唯一子块,当所有数据块传输完成后此计数器中的值为0;字节计数器设置为每块数据所包含的字节数;子块数传输的配置方式为数据源基址寄存器设置为输入数据缓冲区的首地址;数据目的基址寄存器设置为输出数据缓冲区的首地址;数据地址增量寄存器分为源地址增量控制位和目的地址增量控制位,源地址增量控制位和目的地址增量控制位分别设置为地址不改变;DMA控制寄存器包含启动控制位、暂停控制位和传输方式控制位,传输方式控制位设为2,即为子块传输方式;DMA状态寄存器,用于查询DMA控制器当前的活动状态,包括表示“DMA控制器正在传送数据”、“DMA控制器暂停或者不活动”、“全部数据传送完成”、“全部数据未传送完成”和“一子块传输完成”的值;块数计数器设置为欲传输数据的块数,DMA控制器传输过程每完成一个数据块的传输,此计数器中的值相应减1,当所有块数据传输完成后此计数器中的值为0;子块数计数器设置为每块数据所包含的子块个数,每次DMA控制器传输过程仅完成一子块数据的传输,该计数器中的值相应减1,当所有子数据块传输完成后该计数器的值为0,该计数器中的值为0时表示一块数据传输完成;字节计数器设置为子块数据所包含的字节数。
2. —种基于海量数据传输的DMA控制器,其特征在于包括两个总线接口、寄存器组、 存储器管理单元、数据缓存区和状态机;两个总线接口的一端与控制器的总线相连,其中一 个总线接口的另一端连接寄存器组,另外一个总线接口的另一端连接存储器管理单元,数 据缓存区连接两个外部设备;控制器对寄存器组进行配置管理,寄存器组的配置结果控制 状态机的工作状态,状态机根据状态机的工作状态通过另外一个总线接口控制存储器管理 单元完成数据缓存区与外部设备的数据交换;所述寄存器组包括块数计数器、子块数计数器、字节计数器以及由数据源基址寄存 器、数据目的基址寄存器、数据地址增量寄存器、DMA状态寄存器和DMA控制寄存器构成的 公共寄存器;所述控制器将寄存器组配置成三种配置结果,三种配置结果对应三种状态机的工作状 态,其中状态机的第一种工作状态是字节数据传输,状态机的第二种工作状态是块数据传 输,状态机的第三种工作状态是子块数据传输;字节传输的配置方式为数据源基址寄存器设置为输入数据缓冲区的首地址; 数据目的基址寄存器设置为输出数据缓冲区的首地址;数据地址增量寄存器分为源地址增量控制位和目的地址增量控制位,源地址增量控制 位和目的地址增量控制位分别设置为地址加1模式;DMA控制寄存器包含启动控制位、暂停控制位和传输方式控制位,传输方式控制位设为 O,即为字节传输方式;DMA状态寄存器,用于查询DMA控制器当前的活动状态,包括表示"DMA控制器正在传送 数据"、"DMA控制器暂停或者不活动"、"全部数据传送完成"、"全部数据未传送完成"和"一 子块传输完成"的值;块数计数器设置为1,即DM控制器A传输过程采用字节传输;子块数计数器设置为1,即DMA控制器传输过程采用字节传输; 字节计数器设置为欲传送数据的字节数,即当次DMA控制器要传输的字节数;块数据传输的配置方式为数据源基址寄存器设置为输入数据缓冲区的首地址; 数据目的基址寄存器设置为输出数据缓冲区的首地址;数据地址增量寄存器分为源地址增量控制位和目的地址增量控制位,源地址增量控制 位和目的地址增量控制位分别设置为地址不改变;DMA控制寄存器包含启动控制位、暂停控制位和传输方式控制位,传输方式控制位设为 l,即为块传输方式;DMA状态寄存器,用于查询DMA控制器当前的活动状态,包括表示"DMA控制器正在传送 数据"、"DMA控制器暂停或者不活动"、"全部数据传送完成"、"全部数据未传送完成"和"一 子块传输完成"的值;块数计数器设置为欲传输数据的块数,每次DMA控制器传输过程完成一块数据的传 输,此计数器中的值相应减1,当所有块数据传输完成后计数器的值为0 ;子块数计数器设置为1,即每次DMA控制器传输过程中每块数据中包含唯一子块,当所 有数据块传输完成后此计数器中的值为0 ;字节计数器设置为每块数据所包含的字节数;子块数传输的配置方式为数据源基址寄存器设置为输入数据缓冲区的首地址; 数据目的基址寄存器设置为输出数据缓冲区的首地址;数据地址增量寄存器分为源地址增量控制位和目的地址增量控制位,源地址增量控制 位和目的地址增量控制位分别设置为地址不改变;DMA控制寄存器包含启动控制位、暂停控制位和传输方式控制位,传输方式控制位设为 2,即为子块传输方式;DMA状态寄存器,用于查询DMA控制器当前的活动状态,包括表示"DMA控制器正在传送 数据"、"DMA控制器暂停或者不活动"、"全部数据传送完成"、"全部数据未传送完成"和"一 子块传输完成"的值;块数计数器设置为欲传输数据的块数,DMA控制器传输过程每完成一个数据块的传输,此计数器中的值相应减1,当所有块数据传输完成后此计数器中的值为0 ;子块数计数器设置为每块数据所包含的子块个数,每次DMA控制器传输过程仅完成一 子块数据的传输,该计数器中的值相应减l,当所有子数据块传输完成后该计数器的值为 O,该计数器中的值为0时表示一块数据传输完成;字节计数器设置为子块数据所包含的字节数。
3.根据权利要求1或2所述的一种基于海量数据传输的DMA控制器,其特征在于所 述状态机利用第一种工作状态控制存储器管理单元完成数据缓存区与外部设备的数据交 换的方法为(a) 控制器根据传输数据的大小设置字节计数器的计数值,存储器管理单元将数据缓 存区映射为输入数据缓存区和输出数据缓存区;(b) 当外设将数据存入输入数据缓存区后发出DMA数据传输请求,控制器启动状态机采用字节数据传输;(c)状态机控制存储器管理单元将输入数据缓存区中的第一个字节写入输出数据缓存 区中,每写完一个字节后字节计数器的计数值减l,直到字节计数器的计数值为0时,本次 字节数据传输完成。
4.根据权利要求1或2所述的一种基于海量数据传输的DMA控制器,其特征在于所 述状态机利用第二种工作状态控制存储器管理单元完成数据缓存区与外部设备的数据交 换的方法为(a) 控制器根据传输数据的大小分别设置块数计数器和字节计数器的计数值,存储器 管理单元将数据缓存区映射为输入数据缓存区和输出数据缓存区;(b) 当外设将数据存入输入数据缓存区后发出DMA数据传输请求,控制器启动状态机 采用块数据传输;(c) 状态机控制存储器管理单元将输入数据缓存区的地址和输出数据缓存区的地址进 行互换,输入数据缓存区变换为输出数据缓存区,输出数据缓存区变换为输入数据缓存区, 一次输入数据缓存区和输出数据缓存区地址的交换记为一次单块数据的传输,每完成一次 单块数据传输后块数计数器的计数值减l,直到块数计数器的计数值为0时,本次块数据传 输完成。
全文摘要
本发明涉及一种基于海量数据传输的DMA控制器,通过对公共寄存器及字节计数器、块计数器以及子块数计数器的配置可实现字节数据传输、块数据传输和子块数据传输。字节数据传输和子块数据传输适用于数据源缓存区和数据目的缓存区不同的情况,块数据传输,适用于数据源缓存区与数据目的缓存区相同的情况,通过改变其逻辑地址就完成了传送过程。采用本发明的技术方案使数据源缓冲区与数据目的缓冲区数据可以在一个节拍内完成数据传输,大大加快了DMA传输的数据量,提高了传输效率。
文档编号G06F13/28GK101710309SQ20091024249
公开日2010年5月19日 申请日期2009年12月15日 优先权日2009年12月15日
发明者宗宇, 张志永, 谢俊玲 申请人:北京时代民芯科技有限公司;中国航天科技集团公司第九研究院第七七二研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1