• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 23
    • 下载费用:30 金币  

    重庆时时彩个位定胆稳赚: 一种基于海量数据传输的DMA控制器.pdf

    摘要
    申请专利号:

    重庆时时彩单双窍门 www.4mum.com.cn CN200910242497.7

    申请日:

    2009.12.15

    公开号:

    CN101710309A

    公开日:

    2010.05.19

    当前法律状态:

    授权

    有效性:

    有权

    法律详情: 授权|||实质审查的生效IPC(主分类):G06F 13/28申请日:20091215|||公开
    IPC分类号: G06F13/28 主分类号: G06F13/28
    申请人: 北京时代民芯科技有限公司; 中国航天科技集团公司第九研究院第七七二研究所
    发明人: 宗宇; 谢俊玲; 张志永
    地址: 100076 北京市丰台区东高地四营门北路2号
    优先权:
    专利代理机构: 中国航天科技专利中心 11009 代理人: 安丽
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN200910242497.7

    授权公告号:

    101710309B||||||

    法律状态公告日:

    2011.05.04|||2010.07.07|||2010.05.19

    法律状态类型:

    授权|||实质审查的生效|||公开

    摘要

    本发明涉及一种基于海量数据传输的DMA控制器,通过对公共寄存器及字节计数器、块计数器以及子块数计数器的配置可实现字节数据传输、块数据传输和子块数据传输。字节数据传输和子块数据传输适用于数据源缓存区和数据目的缓存区不同的情况,块数据传输,适用于数据源缓存区与数据目的缓存区相同的情况,通过改变其逻辑地址就完成了传送过程。采用本发明的技术方案使数据源缓冲区与数据目的缓冲区数据可以在一个节拍内完成数据传输,大大加快了DMA传输的数据量,提高了传输效率。

    权利要求书

    1: 一种基于海量数据传输的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控制寄存器包含启动控制位、暂??刂莆缓痛浞绞娇刂莆?,传输方式控制位设为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时表示一块数据传输完成; 字节计数器设置为子块数据所包含的字节数。
    3: 根据权利要求1或2所述的一种基于海量数据传输的DMA控制器,其特征在于:所述状态机利用第一种工作状态控制存储器管理单元完成数据缓存区与外部设备的数据交换的方法为: (a)控制器根据传输数据的大小设置字节计数器的计数值,存储器管理单元将数据缓存区映射为输入数据缓存区和输出数据缓存区; (b)当外设将数据存入输入数据缓存区后发出DMA数据传输请求,控制器启动状态机 采用字节数据传输; (c)状态机控制存储器管理单元将输入数据缓存区中的第一个字节写入输出数据缓存区中,每写完一个字节后字节计数器的计数值减1,直到字节计数器的计数值为0时,本次字节数据传输完成。
    4: 根据权利要求1或2所述的一种基于海量数据传输的DMA控制器,其特征在于:所述状态机利用第二种工作状态控制存储器管理单元完成数据缓存区与外部设备的数据交换的方法为: (a)控制器根据传输数据的大小分别设置块数计数器和字节计数器的计数值,存储器管理单元将数据缓存区映射为输入数据缓存区和输出数据缓存区; (b)当外设将数据存入输入数据缓存区后发出DMA数据传输请求,控制器启动状态机采用块数据传输; (c)状态机控制存储器管理单元将输入数据缓存区的地址和输出数据缓存区的地址进行互换,输入数据缓存区变换为输出数据缓存区,输出数据缓存区变换为输入数据缓存区,一次输入数据缓存区和输出数据缓存区地址的交换记为一次单块数据的传输,每完成一次单块数据传输后块数计数器的计数值减1,直到块数计数器的计数值为0时,本次块数据传输完成。

    说明书


    一种基于海量数据传输的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,即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时表示一块数据传输完成;

        字节计数器设置为子块数据所包含的字节数。

        一种基于海量数据传输的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时表示一块数据传输完成;

        字节计数器设置为子块数据所包含的字节数。

        所述状态机利用第一种工作状态控制存储器管理单元完成数据缓存区与外部设备的数据交换的方法为:

        (a)控制器根据传输数据的大小设置字节计数器的计数值,存储器管理单元将数据缓存区映射为输入数据缓存区和输出数据缓存区;

        (b)当外设将数据存入输入数据缓存区后发出DMA数据传输请求,控制器启动状态机采用字节数据传输;

        (c)状态机控制存储器管理单元将输入数据缓存区中的第一个字节写入输出数据缓存区中,每写完一个字节后字节计数器的计数值减1,直到字节计数器的计数值为0时,本次字节数据传输完成。

        所述状态机利用第二种工作状态控制存储器管理单元完成数据缓存区与外部设备的数据交换的方法为:

        (a)控制器根据传输数据的大小分别设置块数计数器和字节计数器的计数值,存储器管理单元将数据缓存区映射为输入数据缓存区和输出数据缓存区;

        (b)当外设将数据存入输入数据缓存区后发出DMA数据传输请求,控制器启动状态机采用块数据传输;

        (c)状态机控制存储器管理单元将输入数据缓存区的地址和输出数据缓存区的地址进行互换,输入数据缓存区变换为输出数据缓存区,输出数据缓存区变换为输入数据缓存区,一次输入数据缓存区和输出数据缓存区地址的交换记为一次单块数据的传输,每完成一次单块数据传输后块数计数器的计数值减1,直到块数计数器的计数值为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时,访问地址设置为固定的端口地址,即设置地址增量寄存器的值为0。

        存储器管理单元,用于实现数据源缓冲区与数据目的缓冲区之间的地址映射。存储器管理单元内部设置数据源缓存区即输入缓存区和数据目的缓存区即输出缓存区德基地址指针,分别用于指向数据源缓冲区和数据目的缓冲区的首地址。

        在采用块传输的过程中,一块数据传输完成后,存储器管理单元完成信号修改数据源和数据目的基地址,以完成缓冲区之间的地址映射。

        在采用字节传送的过程中,一字节数据传输完成后,存储器管理单元完成信号分别修改数据源和数据目的基地址,以完成地址与数据之间的对应。

        控制器将寄存器组配置成三种配置结果,三种配置结果对应三种状态机的工作状态,其中状态机的第一种工作状态是字节数据传输,字节传送即每个节拍传送一个字节,适用于数据源和数据目的不同物理块的情况;状态机的第二种工作状态是块数据传输,整块传送即一个节拍就完成整个子块的传送,适用于数据源与数据目的是同一物理块的情况,改变其逻辑地址就完成了传送过程;状态机的第三种工作状态是子块数据传输,同样适用于数据源和数据目的不同物理块的情况,传输效率比字节传送效率高。

        所述控制器将寄存器组配置成三种配置结果,三种配置结果对应三种状态机的工作状态,其中状态机的第一种工作状态是字节数据传输,状态机的第二种工作状态是块数据传输,状态机的第三种工作状态是子块数据传输;

        字节传输的配置方式为:

        数据源基址寄存器设置为输入数据缓冲区的首地址;

        数据目的基址寄存器设置为输出数据缓冲区的首地址;

        数据地址增量寄存器分为源地址增量控制位和目的地址增量控制位,源地址增量控制位和目的地址增量控制位分别设置为地址加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时表示一块数据传输完成;

        字节计数器设置为子块数据所包含的字节数。

        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)状态机控制存储器管理单元将输入数据缓存区的地址和输出数据缓存区的地址进行互换,输入数据缓存区变换为输出数据缓存区,输出数据缓存区变换为输入数据缓存区,一次输入数据缓存区和输出数据缓存区地址的交换记为一次单块数据的传输,每完成一次单块数据传输后块数计数器的计数值减1,直到块数计数器的计数值为0时,本次块数据传输完成。

        3、在两个外设的FIFO大小相同时,本发明采用整块数据传输的方式,该方式具有高的传输效率。而在两个外设的FIFO大小不同时,采用字节传送模式同样可以完成任务,但采用字节传输比较慢,因此本发明提供了一种更为有效的传输方式——子块传输模式,在此种模式下需要设置的寄存器有:DMA控制寄存器、字节计数器、块数计数器和子块数计数器,DMA控制器在收到“启动”信号后,每传送一子块数据,子块数计数器的值减一,子块数计数器的值为0时,一块数据传输完成,同时块数计数器的值减一,块数计数器的值为0时,数据传输全部完成??刂屏鞒倘缤?所示:

        a)控制器根据传输数据的大小和实际应用输入数据缓冲区和输出数据缓冲区的大小,分别设置块数计数器、子块数计数器和字节计数器的计数值;

        b)当外设将数据存入输入数据缓存区后发出DMA数据传输请求,控制器启动状态机采用子块数据传输;

        c)状态机控制存储器管理单元将输入数据缓存区中的数据按子块方式输出,每完成一次子块数据传输后子块数计数器的计数值减1,直到子块数计数器的计数值为0时,所有子块传输完成,即完成一块数据的传输。

        d)每完成一次单块数据传输后块数计数器的计数值减1,直到块数计数器的计数值为0时,本次块数据传输全部完成。

        在子块数据传送的过程中,根据外设数据块大小的不同,存储器管理单元采用两种不同的管理方案。第一种方案为输入数据缓冲区大于输出数据缓冲区管理方案,第二中方案为输入数据缓冲区小于输出数据缓冲区管理方案。

        在采用第一种输入数据缓冲区大于输出数据缓冲区管理方案时,如图8所示,在这种方案下,存储器管理单元将数据缓冲区,映射为两个大的逻辑存储缓冲区,同时定义逻辑存储缓冲区1作为输入数据缓冲区,逻辑存储缓冲区2为输出数据缓冲区。

        a)控制器根据传输数据的大小和实际应用输入数据缓冲区和输出数据缓冲区的大小,分别设置块数计数器、子块数计数器和字节计数器的计数值;

        b)当外设将数据写入输入数据缓冲区后向DMA控制器发出数据传输请求;

        c)控制器接收到数据传输请求后启动DMA状态机,控制器通过状态机启动存储器管理单元,存储器管理单元负责完成输入数据缓冲区与输出数据缓冲区的地址映射,此时输入数据缓冲区变成输出数据缓冲区,输出数据缓冲区变成输入数据缓冲区,即逻辑缓冲区1作为输出数据缓冲区,逻辑缓冲区2为输入数据缓冲区。

        d)存储器管理单元根据子块数计数器将逻辑缓冲区1分割为N个大小相同的子块,每个子块定义为一个输出数据缓冲区,即包含N个大小相同的输出数据缓冲区,输出数据缓冲区指针在第一个输出数据缓冲区。

        e)存储器管理单元控制输出数据缓冲区完成一个子块数据的传输,即完成一个输出数据缓冲区的传输后,存储器管理单元控制输出数据缓冲区指针跳转到下一个输出数据缓冲区,同时控制子块数计数器中的值减1,直到所有子块传输完毕,子块数计数器中的值为0,则一整块数据传输完成。否则存储器管理单元将输出数据缓冲区首地址指向下一子块,DMA控制器继续下一子块数据传输。

        f)一整块数据传输完成后,块数计数器中的值减1,直到块数计数器中值为0,则所有数据传输完成,否则DMA控制器继续下一块数据传输。

        在采用第二种输入数据缓冲区小于输出数据缓冲区管理方案时,如图9所示,在这种方案下:存储器管理单元将数据缓冲区也映射为两个大的逻辑存储缓冲区,同时定义逻辑缓冲区1作为输入数据缓冲区,逻辑缓冲区2为输出数据缓冲区;

        a)控制器根据传输数据的大小和实际应用输入数据缓冲区和输出数据缓冲区的大小,分别设置块数计数器、子块数计数器和字节计数器的计数值;

        b)当外设将数据写入输入数据缓冲区后向DMA控制器发出数据传输请求;

        c)状态机接收到数据传输请求后启动存储器管理单元,存储器管理单元根据子块数计数器将逻辑缓冲区1即输入数据缓冲区分割为N个大小相同的子块,每块都映射为一个输入数据缓冲区;

        d)存储器管理单元完成第一个输入数据缓冲区的地址映射后,将输入数据缓冲区指针跳转到下一个子块地址即下一个输入数据缓冲区,同时子块数计数器中的值减1,直到子块数计数器中的值为0,完成所有子块传输,则N个子块数据已写入逻辑存储缓冲区1;

        e)存储器管理单元控制逻辑存储缓存区1和逻辑存储缓存区2的地址互换,将逻辑存储缓存区1映射为输出数据缓冲区,逻辑存储缓存区2映射为新的输入数据缓冲区,准备接收新的输入数据;

        f)存储器管理单元控制逻辑存储缓存区1即输出数据缓冲区完成其与外设的一个块数据的传输,同时块数计数器中的值减1,如此循环直到块数计数器中的值为0,完成全部块传输。

        实施例:在典型的海量数据存储设备USB?2.0SD卡读卡器中的应用。假设USB?FIFO与SD卡FIFO大小均为512字节。在USB高速模式下,USB主机发送一个数据包到USB?FIFO中并要求传输到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控制器.pdf
    链接地址://www.4mum.com.cn/p-5782046.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03