




已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
理工大学学士学位论文 摘 要 DMA 是直接存储器存取方式 即 Direct Memory Access 方式的缩写 存储器与 I O 设备之间的数据传送在 DMA 控制器 又称 DMAC 的管理下直接进行 而不经过 CPU DMA 方式适用于高速传送成组数据 DMA 控制器将向内存发出地址和控制信 号 修改地址 对传送的字的个数计数 并且以中断方式向 CPU 报告传送操作的结束 DMA 方式的主要优点是传输速度快 由于 CPU 根本不参加传送操作 因此就省去了 CPC 取指令 取数 送数等操作 目前由于大规模集成电路工艺发展 很多厂家直接 生产大规模集成电路的 DMA 控制器 虽然 DMA 控制器复杂程度差不多接近于 CPU 但是用起来非常方便 本文在基于 Verilog HDL 设计 DMA 控制器时 采用的是 Top Down 的设计方法 DMA 控制器电路系统是由数据寄存器 地址产生器 状态控制器三个子模块组成 并 且整个 DMA 控制器电路系统的编译 仿真是在对三个子模块分别进行编译 仿真的 基础上完成的 关键词 DMA 控制器 Verilog Modelsim 仿真 理工大学学士学位论文 Abstract DMA is a direct memory access mode namely Direct Memory Access the abbreviation between the memory and I O devices transmit data over the DMA controller DMAC under management directly without passing through the CPU DMA is suitable for high speed to transmit data The DMA controller to the memory address and control signals modify address counting on the transfer of the word and in order to interrupt the report to CPU transfer operation The main advantages of the DMA method is fast transmission speed Because CPU does not participate in the transfer operation thus eliminating the CPC instruction fetch access send a few operation At present due to the large scale integrated circuit technology development the direct production of DMA controller LSI many manufacturers although the DMA controller complexity almost close to CPU but it is very easy to use In this paper the design of DMA controller based on Verilog HDL using the Top Down the design method The DMA controller circuit system is composed of data register address generator state a controller composed of three modules and the compiler simulation of the entire DMA controller circuit system and are compiled based on the simulation and synthesis of three sub modules Keywords DMA controller Verilog Modelsim simulation 理工大学学士学位论文 目 录 1 绪论 1 1 1 DMA 控制器的研究意义及背景 1 1 2 DMA 控制器国内外发展状况 1 1 3 本文所做的工作及主要内容 2 1 4 篇章结构 2 2 DMA 控制器的基本理论 4 2 1 基本的 DMA 控制器 4 2 1 1 DMA 控制器的基本功能 4 2 1 2 DMA 控制器的基本组成 5 2 1 3 DMA 控制器的传送方式 6 2 1 4 DMA 控制器的传送过程 8 2 1 5 DMA 控制器的传送状态 10 2 1 6 DMA 操作的基本方法 10 2 2 选择型和多路型 DMA 控制器 12 2 2 1 选择型 DMA 控制器 12 2 2 2 多路型 DMA 控制器 13 2 3 DMA 控制器在现实中的应用 14 3 DMA 控制器的行为级设计 17 3 1 设计方案 17 3 1 1 设计说明 17 3 1 2 运行环境及设计功能要求 18 3 1 3 DMA 控制器设计的相关组件 18 3 2 DMA 控制器功能模块划分 19 3 3 功能模块的行为级设计及 VERILOG HDL 描述 20 3 3 1 数据寄存器的行为级描述 20 3 3 2 地址产生器模块的行为级设计描述 23 3 3 3 状态控制器模块的行为级设计描述 26 理工大学学士学位论文 3 3 4 全电路的行为级描述 29 4 DMAC 设计的编译和功能仿真 34 4 1 DMAC 设计的 VERILOG HDL 程序编译 34 4 2 DMAC 各模块设计的功能仿真 37 4 2 1 DRU 模块的 Sti 及仿真 37 4 2 2 AGU 模块的 Sti 及仿真 40 4 2 3 SCU 模块的 Sti 及仿真 42 4 3 DMAC 全电路的仿真结果及分析 45 4 3 1 DMAC 全电路设计中的 Sti 及代码 45 4 3 2 DMAC 全电路的仿真结果及分析 49 结 论 50 致 谢 51 参考文献 52 附录 A 英文原文 54 附录 B 汉语翻译 60 理工大学学士学位论文 1 绪论 1 1 DMA 控制器的研究意义及背景 外设与计算机内存之间的信息交换 可通过程序查询方式和中断方式进行 这两 种方式都是在 CPU 的控制下 通过 CPU 执行指令来完成的 数据传送方向为外设 CPU 内存 这两种方式每传送一个字节都需要耗用较长时间 在程序查询方式时 CPU 要反复测试外设状态 在外设未准备好时 CPU 就处于等待状态 直到外设准备 好 才进行数据传送 在中断方式下 每次实现一次数据传送 CPU 都要进行转入中 断服务子程序 保护断点 现场保护 恢复现场 返回主程序等操作 显然对于高速 的 I O 设备以及大量数据交换的场合 如软 硬磁盘等 这两种传送方式就不能满足速 度的要求了 对于这些高速外设 如果传送速度太慢 不仅降低传送效率 还会造成 数据丢失 导致传送出错 为此 提出了 DMA 直接存储器存取 传输方式 这种传送方式是不经过 CPU 干预 直接在外设与内存储器之间进行数据传送的方式 实现 DMA 传送 需要一个专用硬 件 DMA 控制器 DMAC 在 DMA 传送期间 CPU 要让出对系统总线的控制权 交给 DMA 控制 总线在 DMA 的控制下 数据直接在存储器和外设之间传送 而不经过 CPU 干预 其传送速度大大提高 可接近于存储器的最快存取速度 1 2 这种传送方 式适用于图像显示 磁盘存取 磁盘间数据传送和高速的数据采集等系统 1 2 DMA 控制器国内外发展状况 自 DMA 技术出现以来 DMA 控制器在计算机系统中获得了极大的应用 为了适 应系统总线速度的不断加快 其工作速度和灵活性也不断提高 目前的 DMA 控制器 设计一般采用可配置的通道化技术 可配置使得 DMA 不仅可以按照总线协议进行数 据交换 而且可以编程设置多种功能 根据体系结构的变化以及系统应用的需求 DMA 控制器设计时在必备的目标起始地址 单元计数和变址模式基础上可添加额外的 参数设置 使得数据传输更加灵活 TI 公司 TMS320C54x 系列 DSP 中 DMA 控制器有 6 个通道可以跟踪 6 个独立的块 传输 每个通道含有 5 个通道寄存器 还有 10 个全局寄存器 CPU 通过寄存器子寻址 理工大学学士学位论文 方式配置这些寄存器 通过这些寄存器的配置 可以实现多帧传输 自动缓冲传输 可编程的优先级 可编程的地址 时间同步以及中断生成等功能 25 TI 公司 TMSC6000 系列 DSP 中 DMA 控制器有 4 个通道和一个支持 HPI 访问的辅 助通道 每个通道都有 5 个通道寄存器还有一个全局辅助控制寄存器 该 DMA 控制 器支持多帧传输 可编程地址 可编程的字长 自动初始化 单通道分割操作等 26 ADI 公司 ADSP 2106X 系列 DSP 中 DMA 控制器能够执行内部存储器和外部数据 源或片外存储器之间的数据传输 该 DMA 控制器也支持多通道传输 一个通道对应 一个 I O 口或外设口缓冲区 一个 DMA 通道的建立是由写入一组内存缓冲区参数寄存 器来完成的 每次 DMA 传递需要一个时钟周期 而通道之间的切换没有总传输量的 损失 26 Motoroal 公司 DSP56362 支持需要数字音频压缩和解压缩 声场处理和其他数字 音频算法的数字音频应用 DSP56362 的内部 DMA 控制器包含六个独立的 DMA 通道 支持片内与片外的存取 1 2 3 维的数据传输 块传输结束时中断 DMA 触发来自 于中断线和所有外围器件 27 1 3 本文所做的工作及主要内容 本文根据当前电子系统要求数据传输量大 性能要求高等特点 以 Verilog 为硬件 描述语言和可编程逻辑器件 FPGA 为技术支撑 设计了一个基于 Verilog 语言的 DMA 控制器 并对其相应程序进行仿真 DMA 传输方式无需经过 CPU 而是在 DMA 控制 器的管理下 存储器与 I O 设备之间进行数据交换 使传输速率大大提高 具有相当 的技术优势 4 仿真的结果表明 本设计工作稳定 工作速度快 且实际模拟运行较好 全文的主要工作及内容是对 DMA 控制器的的基本概念进行了阐述 介绍了 DMA 控制 器的基本功能 组成 传送的方式 过程 状态等 同时确立 DMA 控制器的设计方 案 对其源代码进行编写 最后对其模型进行仿真并得出结论 1 4 篇章结构 本文共分为四个部分 内容如下 第一章主要分析了 DMA 的研究的背景以及课题的重要意义 并简要介绍了 DMA 控制器的发展历程和趋势 同时阐明了 DMA 的原理 最后介绍了本文所做的工作和 理工大学学士学位论文 主要内容 第二章介绍了基本 DMA 控制器实现数据直接存取的工作原理 包括 DMA 控制器 的基本功能 基本组成 传送方式 传送过程和 DMA 操作的基本方法等 同时也对 两种同步 DMA 控制器进行了简单的介绍 并对 DMA 控制器在现实中的应用进行了介 绍 第三章是本文的核心部分 在这一章中概述了 DMA 控制器的运行环境 及 DMA 控制器与周边环境之间的相互作用 并在此基础上提出了设计 DMA 控制器的相关技 术要求 同时 根据技术要求确定 DMA 控制器的设计方案 顶层设计 借助于硬件描 述语言 Verilog HDL 建立 DMA 控制器的行为模型 第四章为行为模型编写 Sti 程序代码 利用 ModelSim 对所建模型进行编译和仿真 测试 检验是否达到设计要求 理工大学学士学位论文 2 DMA 控制器的基本理论 2 1 基本的 DMA 控制器 2 1 1 DMA 控制器的基本功能 DMA 控制器是内存储器同外设之间进行高速数据传送时的硬件控制电路 是一种 实现直接数据传送的专用处理器 它必须能取代在程序控制传送中由 CPU 和软件所完 成的各项功能 它的主要功能是 1 DMAC 同外设之间有一对联络信号线 外设的 DMA 请求信号 DREQ 以及 DMAC 向外设发出的 DMA 响应信号 DACK 2 DMAC 在接收到 DREQ 后 同 CPU 之间也有一对联络信号线 DMAC 向 CPU 发出总线请求信号 HOLD 或 BUSRQ CPU 在当前总线周期结束后向 DMAC 发 出总线响应信号 HLDA 或 BUSAK DMAC 接管对总线的控制权 进入 DMA 操作方 式 3 能发出地址信息 对存储器寻址 并修改地址指针 DMAC 内部必须有能自动 加 1 或减 1 的地址寄存器 4 能决定传送的字节数 并能判断 DMA 传送是否结束 DMA 内部必须有能自动 减 1 的字计数寄存器 计数结束产生终止计数信号 5 能发出 DMA 结束信号 释放总线 使 CPU 恢复总线控制权 6 能发出读 写控制信号 包括存储器访问信号和 I O 访问信号 DMAC 内部必 须有时序和读写控制逻辑 7 8 有些 DMAC 芯片和模块在这些基本功能的基础上还增加了一些新的功能 如 在 DMA 传送结束时产生中断请求信号 在传送完一个字节数后输出一个脉冲信号 用于 记录已传送的字节数 为外部提供周期性的脉冲序列 在一个数据块传送完后能自动 装入新的起始地址和字节数 以便重复传送一个数据块或将几个数据块链接起来传送 产生两个存储器地址 从而实现存储器与存储器之间的传送以及能够对 I O 设备寻址 实现 I O 设备与 I O 设备之间的传送以及能够在传送过程中检索某一特定字节或者进行 数据检验等等 13 理工大学学士学位论文 2 1 2 DMA 控制器的基本组成 一个 DMA 控制器 实际上是采用 DMA 方式的外围设备与系统总线之间的接口电 路 这个接口电路是在中断接口的基础上再加 DMA 机构组成 习惯上将 DMA 方式的 接口电路称为 DMA 控制器 图 2 1 给出了一个最简单的 DMA 控制器组成示意图 6 图 2 1 控制器的组成 1 内存地址计数器 用于存放内存中要交换的数据的地址 在 DMA 传送前 须 通过程序将数据在内存中的起始位置 首地址 送到内存地址计数器 而当 DMA 传送 时 每交换一次数据 将地址计数器加 1 从而以增量方式给出内存中要交换的一批 数据的地址 2 字计数器 用于记录传送数据块的长度 多少字数 其内容也是在数据传送之 前由程序预置 交换的字数通常以补码形式表示 在 DMA 传送时 每传送一个字 字计数器就加 1 当计数器溢出即最高位产生进位时 表示这批数据传送完毕 于是 引起 DMA 控制器向 CPU 发出中断信号 3 数据缓冲寄存器 用于暂存每次传送的数据 一个字 当输入时 由设备 如磁 盘 送往数据缓冲寄存器 再由缓冲寄存器通过数据总线送到内存 反之 输出时 由 内存通过数据总线送到数据缓冲寄存器 然后再送到设备 4 DMA 请求 标志 每当设备准备好一个数据字后给出一个控制信号 使 DMA 请求 标志置 1 该标志置位后向 控制 状态 逻辑发出 DMA 请求 后者又向 CPU 发 理工大学学士学位论文 出总线使用权的请求 HOLD CPU 响应此请求后发回响应信号 HLDA 控制 状态 逻 辑接收此信号后发出 DMA 响应信号 使 DMA 请求 标志复位 为交换下一个字做好 准备 5 控制 状态 逻辑 由控制和时序电路以及状态标志等组成 用于修改内存地址 计数器和字计数器 指定传送类型 输入或输出 并对 DMA 请求 信号和 CPU 响应信 号进行协调和同步 6 中断机构 当字计数器溢出时 意味着一组数据交换完毕 由溢出信号触发中 断机构 向 CPU 提出中断报告 22 24 2 1 3 DMA 控制器的传送方式 1 连续传送 块传送 DMAC 申请到总线后 将一块数据传送完后才释放总线 而不管中间 DREQ 是否有效 在连续操作方式中 DMAC 在获得总线控制权后连续传 送数据字节 可以获得比单字节操作方式更高的数据传输率 但在此间 DMAC 一直占 用总线 CPU 无法进行任何需要系统总线的操作 只能保持空闲 此方式的结束 可 由 DMAC 中设置的字节计数器的计数结果决定 每操作一个字节 计数器减 1 直到产 生终止计数信号 也可以由外部输入的过程结束信号决定 其原理如图 2 2 所示 2 单次传送 每次传送一个字节 每个 DMA 周期只传送一个字节就立即释放总线 这样 CPU 至少可以得到一个总线周期 并可进行有关的操作 如果需要进行下一个字 节的传送 需要重新进行 DMA 的申请 其原理如图 2 3 所示 3 按需传送 猝发传送 只要 I O 接口的数据缓冲可用 就进行传送 I O 接口需 要有一定大小的 FIFO 缓冲 换句话说 采用猝发传送方式 通过控制 DMA 请求信 号的有效或无效 可以把一个数据块分几次传送 而允许接口的数据没准备好时 暂 时停止传送 其原理如图 2 4 所示 13 15 理工大学学士学位论文 图 2 2 连续操作方式 图 2 3 单字节操作方式 理工大学学士学位论文 图 2 4 请求操作方式 2 1 4 DMA 控制器的传送过程 DMAC 的传送过程主要是 1 外设向 DMAC 发 DMA 传送请求 DMAC 通过连接到 CPU 的 HOLD 信号向 CPU 提出 DMA 请求 CPU 在完成当前总线操作后立即对 DMA 请求做出响应 CPU 的响应包括两个方面 一方面 CPU 将控制总线 数据总线和地址总线浮空 即放弃 对这些总线的控制权 另一方面 CPU 将有效的 HLDA 信号加到 DMAC 上 用此来 通知 DMAC CPU 已经放弃了总线的控制权 2 待 CPU 将总线浮空 即放弃了总线的控制权后 由 DMAC 接管系统总线的控 制权 并向外设送出 DMA 的应答信号 3 由 DMAC 送出地址信号和控制信号 实现外设与内存或内存不同区域之间大量 数据的快速传送 理工大学学士学位论文 图 2 5 DMAC 工作电路图 4 DMAC 将规定的数据字节传送完之后 通过向 CPU 发 HOLD 信号 撤销对 CPU 的 DMA 请求 CPU 收到此信号 一方面使 HLDA 无效 另一方面又重新开始控 制总线 实现正常取指令 分析指令 执行指令的操作 下面图 2 6 是 DMA 的工作流 程示意图 17 图 2 6 DMA 的工作流程示意图 理工大学学士学位论文 2 1 5 DMA 控制器的传送状态 DMAC 是作为两种存储实体之间实现高速数据传送而设计的专用处理器 它与其 他外围接口控制器件不同 它具有接管和控制计算机系统总线 包括数据 地址和控制 总线 的能力 即它能取代 CPU 而成为系统的主控者 但在它取得总线控制权之前 又 与其他 I O 接口芯片一样受 CPU 的控制 因此 DMA 控制器在系统中有两种工作状 态 主动态与被动态 其对应的两种地位 主控器和受控器 1 主动态 是指 DMA 具有接管和控制微机系统总线的功能 即取代 CPU 而成为 系统的控制者 向存储器与外设发号施令 此时 它通过总线向存储或外设发出地址 和读写信号 以控制两存储实体 存储器与外设 间的数据传送 DMA 操作期间 控制 系统总线 控制 M 与 I O 的数据传送 通过总线向 M 或 I O 发出地址和读写信号 DMA 写操作 DMAC 发出 IOR 和 MEMW 信号 存储器 外设 DMA 读操作 DMAC 发出 IOW 和 MEMR 信号 存储器 外设 2 被动态 指 DMA 控制器在冲线控制权取得前同其他 I O 接口芯片一样 受 CPU 的控制 非 DMA 操作期间 受 CPU 控制检测 CS 和 DREQ 信号 一般当 DMAC 上电或者复位时 DMAC 自动处于被动状态 由 CPU 对 DMAC 编程 确定通道选择 DMA 操作类型及方式 内存首址 地址传送方向 传送字节数 传送完毕读 DMAC 的状态 18 21 通过对 DMAC 在系统中的两种工作状态的分析可知 在 DMA 操作过程中 总线 控制权在 DMAC 与 CPU 之间转移 当 DMAC 收到从外部设备发出的请求信号时 DMAC 经判优及屏蔽处理后向总线仲裁器送出总线请求信号要求占用总线 经总线仲 裁器裁决 CPU 完成总线周期后进入总线保持状态 使 CPU 对总线的控制失效 并发 出总线回答信号通知 DMAC CPU 已交出系统总线控制权 此时 DMAC 接管总线控 制权 然后由它向 I O 设备发出 DMA 应答信号 2 1 6 DMA 操作的基本方法 DMA 技术的出现 使得外围设备可以通过 DMA 控制器直接访问内存 与此同时 CPU 可以继续执行程序 DMA 控制器与 CPU 分时使用内存通常采用一下三种方法 1 停止 CPU 访问内存 当外围设备要求传送一批数据时 由 DMA 控制器发一个 停止信号给 CPU 要求 CPU 放弃对地址总线 数据总线和有关的控制总线的使用权 DMA 控制器获得总线控制权以后 开始进行数据传送 在一批数据传送完毕后 理工大学学士学位论文 DMA 控制器通知 CPU 可以使用内存 并把总线控制权交还给 CPU 在这种 DMA 传 送过程中 CPU 基本处于不工作状态或者说保持状态 这种传送方式的时间图如下 内存工作时间 CPU 控制并使用内存 DMA 工作并使用内存 图 2 7 停止 CPU 访问 其优点是 控制简单 它适用于数据传输率很高的设备进行成组传送 其缺点是 在 DMA 控制器访内阶段 内存的效能没有充分发挥 相当一部分内 存工作周期是空闲的 这是因为 外围设备传送两个数据之间的间隔一般总是大于内 存存储周期 即使高速 I O 设备也是如此 16 2 周期挪用 当 I O 设备没有 DMA 请求时 CPU 按程序要求访问内存 一旦 I O 设备有 DMA 请求 则由 I O 设备挪用一个或者几个内存周期 这种传送方式的时间图 如下图所示 内存工作时间 CPU 控制并使用内存 DMA 工作并使用内存 图 2 8 周期挪用 与停止 CPU 访问的 DMA 方法相比较 周期挪用的方法既实现了 I O 传送 又较 好的发挥了内存和 CPU 的效率 是一种广泛采用的方法 但是 I O 设备每一次周期挪 用都有申请总线控制权和归还总线控制权的过程 所以传送一个字对内存来说要占用 一个周期 但对 DMA 控制器来说一般要 2 5 个内存周期 视逻辑线路的延迟而定 因此 周期挪用的方法适用于 I O 设备读写周期大于内存存储周期的情况 16 3 DMA 与 CPU 交替访问 如果 CPU 的工作周期比内存存取周期长很多 此时采 用交替访内的方法可以使 DMA 传送和 CPU 同时发挥最高的效率 假设 CPU 工作周期 为 1 2 s 内存存取周期小于 0 6 s 那么一个 CPU 周期可分为 C1 和 C2 两个分周期 理工大学学士学位论文 其中 C1 供 DMA 控制器访内 C2 供 CPU 访内 这种传送方式的时间图如下 内存工作时间 CPU 控制并使用内存 DMA 工作并使用内存 图 2 9 DMA 与 CPU 交替访问 这种方式不需要总线使用权的申请 归还过程 总线使用权是通过 C1 和 C2 分时 进行的 CPU 和 DMA 控制器各自有自己的访内地址寄存器 数据寄存器和读 写信号 等控制寄存器 在 C1 周期中 如果 DMA 控制器有访内请求 可将地址 数据等信号 送到总线上 在 C2 周期中 如 CPU 有访内请求 同样将传送地址 数据等信号 事 实上 对于总线 这是用 C1 C2 控制的一个多路转换器 掌握中总线控制权的转移 几乎不需要什么时间 所以对 DMA 传送来讲效率是很高的 这种传送方式又称为 通 行的 DMA 方式 其来由是这种 DMA 传送对 CPU 来说 如同透明的玻璃一般 没有 任何感觉或者影响 在透明的 DMA 方式下工作 CPU 既不停止主程序的运行 也不 进入等待状态 是一种高效率的工作方式 当然 相应的硬件逻辑就更加复杂 16 17 2 2 选择型和多路型 DMA 控制器 2 2 1 选择型 DMA 控制器 选择型 DMA 控制器在物理上可以连接多个设备 而在逻辑上只允许连接一个设 备 换句话说 在某一个时间段内只能为一个设备提供服务 选择型 DMA 控制器的工作原理与基本 DMA 控制器大致相同 除了前面提到的基 本逻辑部件外 还有一个设备号寄存器 数据传送是以数据块为单位进行的 在每个 数据块传送之前的预置阶段 除了用程序中的 I O 指令给出数据块的传送个数 起始 地址 操作命令外 还要给出所选择的设备号 从预置开始 一直到这个数据块传送 结束 DMA 控制器只为所选的设备提供服务 下一次预置时再根据 I O 指令指出的设 备号 为所选择的另一设备提供服务 显然 选择型 DMA 控制器相当于一个逻辑开 理工大学学士学位论文 关 根据 I O 指令来控制此开关与某个设备连接 选择型 DMA 控制器只增加了少量的硬件就达到为多个外围设备提供服务的目的 它特别适合于数据传输率很高甚至接近于主存存取速度的设备 在高速传送完一个数 据块后 控制器又可为其他设备提供服务 11 12 图 2 10 选择型 DMA 控制器的逻辑框图 2 2 2 多路型 DMA 控制器 与选择型 DMA 方式相比 多路型 DMA 不仅在物理上可以连接多个外围设备 而 且在逻辑上也允许这些外围设备同时工作 各个设备以字节交叉方式通过 DMA 控制 器进行数据传送 多路型 DMA 控制器适合于同时为多个慢速外围设备提供服务 多路型 DMA 控制器可以对多个独立的 DMA 通路进行控制 当某个外围设备请求 DMA 服务时 操作过程如下 1 DMA 控制器接到设备发出的 DMA 请求 将请求转送到 CPU 2 CPU 在适当的时刻响应 DMA 请求 若 CPU 不需要占用总线则继续执行指令 若 CPU 需要占用总线则进入等待状态 3 DMA 控制器接到 CPU 的响应信号后 进行以下工作 对现有 DMA 请求中 理工大学学士学位论文 优先权最高的请求予以响应 选择相应的地址寄存器的内容来驱动地址总线 根 据所选设备操作寄存器的内容 向总线发出读 写信号 外围设备向数据总线传送 数据 或从数据总线接收数据 每个字节传送完毕后 DMA 控制器使相应的地址寄 存器和长度寄存器加 1 或减 1 以上是一个 DMA 请求的过程 在一批数据传送过程中 要多次重复上述过程 直到外围设备表示一个数据块已传送完毕 或该设备的长度控制器判定传送长度已满 多路型 DMA 控制器分为链式多路型 DMA 控制器及独立请求方式多路型 DMA 控制器 图 2 11 a 为链式多路型 DMA 控制器的原理框图 图 2 11 b 为独立请求方式型 DMA 控制器的原理框图 11 12 图 2 11 a 链式多路型 DMA 控制器的原理框图 图 2 11 b 独立请求方式型 DMA 控制器的原理框图 2 3 DMA 控制器在现实中的应用 DMA 控制器的主要用途是在 CPU 不干涉的情况下 负责存储器之间或存储器和 外围设备之间的数据交换 这种用途不仅仅可以加快存储器之间大数据量的交换 更 重要的是 CPU 可以从大数据量交换 分散数据收集 慢速设备的访问中解放出来 从而提高 CPU 的利用效率 目前国外的 DMA 技术己经逐渐实现数据交换的智能化和 通道化 DMA 不仅可以按照总线协议进行数据交换 而且可以编程设置多种功能 理工大学学士学位论文 一种智能化表现就是 DMA 采用链表形式 完成多任务数据传输 任务链表存放 在存储器中 DMA 从存储器中读取任务链表 根据链表中的内容完成相应的操作 DMA 也可以操作链表 实现和链表生成者的交互 采用链表形式 一个 DMA 就可以 自动地为多个有序设备服务 另一种智能化表现为 DMA 对特定协议的识别 比对某 种串行通讯协议的识别 从而可以完成串行数据的基本解包 打包任务 这种衍生功 能和 DMA 的通道化技术联系比较紧密 19 DMA 通道化技术就是让 DMA 为某个或某些特定的设备服务 提高这些设备 往 往是高速串行设备 存储器 的智能化 减少 CPU 的干涉 在大型计算机系统中 为了 辅助 CPU 对大量外围设备进行管理 普遍采用了 I O 通道技术 I O 通道技术是 DMA 概念的扩展 I O 通道具备执行 I O 指令来完成对 I O 操作控制的能力 由通道技术发 展起来的通道处理机可以看作是一台能够执行有限输入输出指令 并且能被多台外围 设备共享的小型 DMA 专用处理机 DMA 通道由于可以执行简单的微指令 因此可以很方便地完成对一个或多个设备 的控制 用户程序首先根据不同的设备号和数据传输任务生成设备管理程序 在管理 程序里定义 DMA 通道程序 比如链式 DMA 中的任务链表 并在初始化 DMA 通道后 启动 I O 设备 DMA 通道接收到 I O 设备提出的请求或管理程序提供的内部请求后 开始读取通道程序 DMA 通道从通道程序中知道目标设备 目标地址 源设备 源地址 数据大小 数据量 并根据微控制指令得到更详细的控制信息 然后根据通道程序定义 的数据传输 和简单处理 任务开始工作 在完成通道程序定义的所有任务后 DMA 通 道提出中断请求 CPU 根据中断请求进入中断服务程序 判断 DMA 通道完成任务的 情况 并决定是否设置新的通道任务 由于通道程序可以设置多个有序任务 DMA 通 道可以很方便地实现对多个设备的控制 20 目前 DMA 在高速数据传输 慢速设备管理 零散数据收集等方面得到广泛应用 采用通道程序可以很方便地实现不同地址段之间的数据传输 因此 DMA 在存储器分 页操作 虚拟地址映射等非连续性地址的数据传输中得到应用 在一些 Cache 访问中 为了提高数据传输速度 也采用 DMA 来实现数据在总线上的直接交换 国内有人研 究利用 DMA 芯片或 DMA 接口电路进行高速数据采集 在图像处理系统中 DMA 控制器也有广泛应用和前景 系统中采用 DSP 的片上 DMA 控制器 以 DMA 数据传输方式将图像数据从片外直接提取到片内 DSP 的 DMA 控制器可以在没有 CPU 参与的情况下完成存储器映射区之间的数据传输 DMA 理工大学学士学位论文 允许在片内存储器 片内外设或外部器件之间进行数据传输 例如 TI 公司的 TMS320VC5416 的 DMA 集成了 6 个相互独立的可编程的传输通道 允许进行 6 种不 同内容的数据传送 具有快速 大批量的特点 对于通讯微处理器而言 DMA 的介入 主要是为了提高处理器数据通讯的能力 MOTOROLA 的 MPC8240 微处理器就安排了 两个 DMA 通道负责串行设备的数据传输 AMD 公司的 AM186CC 系列微处理器 微控 制器设置了十多个 DMA 负责串行设备的数据通讯 DMA 处理串行数据的接收发送 可以减少串行设备中断 CPU 的次数 提高 CPU 的工作效率 在有些高速串行数据中 数据间隔可能很短 CPU 的中断反应时间可能太慢 此时必需采用 DMA 提高数据传 输的反应时间 比如在 AM186CC 系列微处理器中 DMA 采用了链式传输方式完成 HDLC 高级数据链路控制器 一种高性能同步串口控制器 与存储器之间的数据交换 由于 DMA 直接读取存储器中链表得知下一个传输任务 就不存在 CPU 中断反应的环 节 保证了数据安全地被接收到存储器 24 25 理工大学学士学位论文 3 DMA 控制器的行为级设计 本文所要设计的是一个同步 DMA 控制器电路系统 用来控制内存与外设之间的 数据交流 本章结合对工作要求和环境的考虑 并依据前两章所介绍的 DMA 与 DMA 控制器的基本理论 制定了此电路系统的总体设计方案并完成了电路的行为级设计 3 1 设计方案 3 1 1 设计说明 1 设计方法 硬件电路的基本设计方法主要是指 传统的 Bottom Up 的设计方 法和新兴的 Top Down 的 EDA 设计方法 由于 Top Down 的设汁方法是首先从系统设 计人手 从顶层进行功能划分和结构设计 系统的总体仿真是顶层进行功能划分的重 要环节 这时的设计是与工艺无关的 由于设计的主要仿真和调试过程是在高层次完 成的 所以能够早期发现结构设计上的错误 同时也减少了逻辑仿真的工作量 本文 采用 Top Down 的设计方法 2 设计语言 硬件描述语言是硬件设计人员和 EDA 工具之间的接口 其主要目 的是用来编写设计文件 建立电子系统行为级的仿真模型 Verilog HDL 和 VHDL 是 目前最常用的两种硬件描述语言 同时也都是 IEEE 标准化的 HDL 语言 Verilog HDL 是从 C 语言发展而来的 相比 VHDL 而言其编程风格更加简洁明了 成熟的资 源远比 VHDL 丰富 本文采用 Verilog HDL 作为设计语言 3 设计工具 现在市场上的 Verilog HDL 的仿真软件很多种 如 Mentor 公司的 Modelsim Cadence 公司的 Verilog XL Synopsys 公司的 VCS 等 本设计所采用的仿 真软件是 Mentor 公司提供的 ModelSim SE 10 1a 4 系统的时钟 在设计电路时 可以有异步电路和同步电路两种实现方法 异步 电路使用组合逻辑电路实现 没有统一的时钟信号 容易产生毛刺和竞争冒险 同步 时序电路使用组合逻辑和触发器实现电路功能 主要信号和输出信号都由时钟驱动触 发器产生 能够避免毛刺 信号稳定 本文设计的是同步 DMAC 电路 同步时钟频率 为 100MHz 4 理工大学学士学位论文 3 1 2 运行环境及设计功能要求 1 DMA 控制器的运行环境 32 bit RISC processor 8 8 RC Array 64bit Frame Buffer 32 bit SDRAM 2 功能要求 DMA 控制器在 RISC 处理器在调控下 应该具有调控数据传输的 功能 主要具有以下功能 从 SDRAM 装载数据到 FB 从 FB 储存数据到 SDRAM 从 SDRAM 转载数据到 RC 3 1 3 DMA 控制器设计的相关组件 本文所设计的 DMA 控制器是一个可选择通道的 DMA 控制器 它受控于 RISC 处 理器 处理 SDRAM FB RC 之间的数据传输 DMA 控制器与其他模块接口全景描 述如图 3 1 所示 RISC Reduced Instruction Set Computers 即精密指令集计算机 是为了提高处理器 运行的速度而设计的芯片体系 它的关键技术在于流水线操作 在一个时钟周期里完 成多条指令 由于 RISC 处理器的指令集是精简的 它的内存管理单元 浮点单元等都 能设计在同一块芯片上 RISC 处理器比 CISC 处理器设计更简单 所需要的处理时间 将变得更短 并可以采用比 CISC 处理器更多先进的技术 便于开发更快的下一代处理 器 图 3 1 DMA 控制器及接口模块全景图 理工大学学士学位论文 FB Frame Buffer 即帧缓冲器 它是一个快速存储缓冲器 运行频率高达 100MHz 它是由静态随机存储器组成的存储器阵列 数据可以通过多路复用器和缓冲 器直接传送 它功能上作为 SDRAM 数据在 DMAC 和 RC 之间传送的缓冲器 在它的 内部有两个单独的接收机 每个接收机包含两个储藏体 DMAC 每次只能访问一个储 藏体 而一个 RC 在读取数据时要访问两个储藏体 SDRAM Synchronous DRAM 即同 步动态随机存储器 这是目前使用最为广泛一种内存类型 也是目前奔腾计算机系统 普遍使用的内存形式 SDRAM 将 CPU 与 RAM 通过一个相同的时钟锁在一起 使 RAM 和 CPU 能够共享一个时钟周期 以相同的速度同步工作 与 EDO 内存相比速度 能提高 50 是目前最快的内存芯片 SDRAM 不仅可用作主存 在显示卡上的内存 方面也有广泛应用 作为主存 数据带宽越宽 同时处理的数据就越多 作为显存 显示的信息越多 显示品质也就越高 RC Re configurable Cell array 即可配置单元阵列 它有 64 个可配置单元 排列成 8 8 阵列的形式 每个单元有一个 ALU MAC 和一个寄 存器 此 RC 阵列通过 context 字来配置功能和网络连接 Context 字储存在 context memory 的两个块中 分别储存在行和列 每个块有 8 组 16 字 context RC 阵列内部互 连如图 3 2 所示 4 图 3 2 RC 阵列内部互连图 3 2 DMA 控制器功能模块划分 根据设计要求 将 DMA 控制器划分为三个主要功能模块 DataRegisters 理工大学学士学位论文 Unit DRU 数据寄存器单元 Address GeneratorUnit AGU 地址产生器单元 State Controller Unit SCU 状态控制器单元 如图 3 3 所示 图 3 3 DMA 控制器内部功能块划分 3 3 功能模块的行为级设计及 Verilog HDL 描述 3 3 1 数据寄存器的行为级描述 数据寄存器的主要任务是从 SDRAM 获取数据 然后传给 FB 或者 RC 存储器的 数据宽度是 32 位 但是 I O 传向 FB 的数据是 64 位 所以数据寄存器还必须保证数据 的正确分配 数据寄存器的内部划分如图 3 4 所示 图 3 4 DMA 控制器数据寄存器内部结构图 理工大学学士学位论文 数据寄存器 DRU 的外部信号 sys clk 为全局时钟信号 所有信号在时钟的高电 平有效 clear data regs 为 DRU 的清零复位信号 当清零复位信号为高电平时 所有 寄存器都重新复位 即装载数据 0 mem data 和 fb data 即 SDRAM 和 FB 的数据信号 由于 mem data 的数据宽度是 32 位 而 fb data 的数据宽度是 64 位的 因此需要 up reg32 enable lo reg32 enable reg64 enable1 和 reg64 enable2 四个使能信号来保 证数据正确分布 当使能信号 up reg32 enable 为高电平时 寄存器 up reg32 odata 装 载数据 mem data 当使能信号 lo reg enabel 为高电平时 寄存器 lo reg32 odata 装载 数据 mem data 当使能信号 reg64 enable1 为高电平时 寄存器 reg64 odata1 装载数 据 fb data 当使能信号 reg enable2 为高电平时 将寄存器 reg64 odata1 的数据装载到 寄存器 reg odata2 数据寄存器模块行为级设计的 Verilog HDL 描述如下 4 Module 端口定义 DRU fb data up reg32 odata lo reg32 odata reg64 odata1 reg64 odata2 mem data up reg32 enable lo reg32 enable reg64 enable1 reg64 enable2 sys clk clear data regs input sys clk 输入全局时钟信号 input clear data regs 输入 DRU 的清零复位信号 input up reg32 enable lo reg32 enable 输入四个使能信号 input reg64 enable1 reg64 enable2 input 31 0 mem data 输入 32 位同步动态随机存储器 数据 input 63 0 fb data 输入 64 位帧缓冲器数据 output 31 0 up reg32 odata lo reg32 odata output 63 0 reg64 odata1 reg64 odata2 wire sys clk clear data regs 声明一个 wire 型的时钟信号和 清零复位信号 wire 31 0 mem data wire 63 0 fb data reg 31 0 up reg32 odata reg 31 0 lo reg32 odata 理工大学学士学位论文 wire up reg32 enable wire lo reg32 enable wire ld 3st cntrl reg 63 0 reg64 odata1 reg 63 0 reg64 odata2 wire reg64 enable1 wire reg64 enable2 wire str mux sel wire str 3st cntrl integer i always posedge sys clk 时序逻辑 if clear data regs begin for i 0 i 32 i i 1 for 循环语句 begin up reg32 odata i 0 lo reg32 odata i 0 end for i 0 i 64 i i 1 begin reg64 odata1 i 0 reg64 odata2 i 0 end end else begin if up reg32 enable 1 up reg32 odata mem data else if lo reg32 enable 1 lo reg32 odata mem data else if reg64 enable1 1 理工大学学士学位论文 reg64 odata1 fb data else if reg64 enable2 1 reg64 odata2 reg64 odata1 end endmodule DRU v 3 3 2 地址产生器模块的行为级设计描述 地址产生器单元 AGU 负责 DMA 的地址部分 它生成 SDRAM FB RC 的地址 在数据寄存器传输数据时 它必须确保地址的正确 地址产生单元的内部划分如图 3 6 所示 地址产生单元 AGU 外部信号分布 sys clk 为全局时钟信号 clear agu 为 AGU 的清零复位信号 当清零复位信号为高电平时 地址信号 mem gen oaddr byte gen oaddr fb gen oaddr rc gen oaddr 都清零复位 latch tr addresses 为 RISC 处理器的指令地址 当使能信号 byte gen ldinit 为高电平时 字节数地址 byte gen oaddr 生成 当使能信号 byte gen enable 为高电平时 字节数地 址 byte gen oaddr 加 1 当使能信号
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全日培训总结课件
- 有关购房合同汇编5篇
- 货运轮船买卖合同3篇
- 瑞士瑞妍细胞美疗课件
- 2025年日照市中考英语试题(附答案)
- 东莞乐园泳池工程方案(3篇)
- 农业生态保护与现代种业创新基地建设项目可行性研究
- 玻璃厂工伤预防知识培训课件
- 猫课件教学课件
- 猫咪聚会课件
- 《学生是如何学习的:从学习科学到高效教学》札记
- 《事业单位工作人员年度考核登记表》
- 腾讯客户关系管理对策分析
- 煤矿矿长考试题库
- 《室内施工图深化设计》课件-任务一:项目施工图深化前期准备工作
- 合同诈骗罪-课件
- SL+258-2017水库大坝安全评价导则
- 电动机智能运维与健康管理
- 空调维保项目进度保障计划
- 大脑动脉狭窄脑梗死的护理查房
- T-GDPIA 21-2020 高转速高转矩同向双螺杆挤出机
评论
0/150
提交评论