基于modelsim的dma控制器的设计学士学位论文(编辑修改稿)内容摘要:
部 DMA控制器包含六个独立的 DMA通道,支持片内与片外的存取, 3 维的数据传输,块传输结束时中断, DMA 触发来自于中断线和所有外围器件 [27]。 本文所做的工作及主要内容 本文根据当前电子系统要求数据传输量大,性能要求高等特点,以 Verilog 为硬件描述语言和可编程逻辑器件 (FPGA)为技术支撑,设计了一个基于 Verilog 语言的 DMA控制器,并对其相应程序进行仿真。 DMA 传输方式无需经过 CPU,而是在 DMA 控制器的管理下,存储器与 I/O 设备之间进行数据交换, 使 传输速率大大提高,具有相当 的技术优势 [4]。 仿真的结果表明,本设计工作稳定,工作速度快, 且 实际模拟运行较好。 全文的主要工作及内容是对 DMA 控制器的的基本概念进行了阐述,介绍了DMA 控制器的基本功能、组成,传送的方式、过程、状态等,同时确立 DMA 控制器的设计方案,对其源代码进行编写,最后对其模型进行仿真并得出结论。 篇章结构 本文共分为 四 个部分,内容如下: 第一章主要分析了 DMA 的研究的背景以及课题的重要意义,并简要介绍了 DMA控制器的发展历程和趋势,同时阐明了 DMA 的原理,最后介绍了本文所做的工作和理工大学学士学位论文 3 主要内容。 第二章介绍了 基本 DMA 控制器实现数据直接存取的工作原理,包括 DMA 控制器的基本功能、基本组成、传送方式、传送过程和 DMA 操作的基本方法等,同时也对两种同步 DMA 控制器进行了简单的介绍。 并对 DMA 控制器在现实中的应用进行了介绍。 第三章是本文的核心部分,在这一章中概述了 DMA 控制器的运行环境,及 DMA控制器与周边环境之间的相互作用,并在此基础上提出了设计 DMA 控制器的相关技术要求。 同时,根据技术要求确定 DMA 控制器的设计方案 (顶层设计 ),借助于硬件描述语言 Verilog HDL 建立 DMA 控制器的行为模型。 第四章为行为 模型编写 Sti 程序代码,利用 ModelSim对所建模型进行编译和仿真测试,检验是否达到设计要求。 理工大学学士学位论文 4 2 DMA 控制器的基本理论 基本的 DMA 控制器 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]。 理工大学学士学位论文 5 DMA 控制器的基本组成 一个 DMA 控制器,实际上是采用 DMA 方式的外围设备与系统总线之间的接口电路,这个接口电路是在中断接口的基础上再加 DMA 机构组成。 习惯上将 DMA 方式的接口电路称为 DMA 控制器。 图 给出了一个最简单的 DMA 控制器组成示意图 [6]。 图 控制器的组成 (1)内存地址计数器:用于存放内存中要交换的数据的地址。 在 DMA 传送前, 须通过程序将数据在内存中的起始位置 (首地址 )送到内存地址计数器。 而当 DMA 传送时,每交换一次数据,将地址计数器加 “1”,从而以增量方式给出内存中要交换的一批数据的地址。 (2)字计数器:用于记录传送数据块的长度 (多少字数 )。 其内容也是在数据传送之前由程序预置,交换的字数通常以补码形式表示。 在 DMA 传送时,每传送一个字,字计数器就加 “1”。 当计数器溢出即最高位产生进位时,表示这批数据传送完毕,于是引起 DMA 控制器向 CPU发出中断信号。 (3)数据缓冲寄存器:用于暂存每次传送的数据 (一个字 )。 当输入时,由设 备 (如磁盘 )送往数据缓冲寄存器,再由缓冲寄存器通过数据总线送到内存。 反之,输出时,由内存通过数据总线送到数据缓冲寄存器,然后再送到设备。 (4)“DMA请求 ”标志:每当设备准备好一个数据字后给出一个控制信号,使 “DMA 理工大学学士学位论文 6 请求 ”标志置 “1”。 该标志置位后向 “控制 /状态 ”逻辑发出 DMA 请求,后者又向 CPU 发出总线使用权的请求 (HOLD), CPU 响应此请求后发回响应信号 HLDA, “控制 /状态 ”逻辑接收此信号后发出 DMA 响应信号,使 “DMA 请求 ”标志复位,为交换下一个字做好准备。 (5)“控制 /状态 ”逻辑:由控制 和时序电路以及状态标志等组成,用于修改内存地址计数器和字计数器,指定传送类型 (输入或输出 ),并对 “DMA 请求 ”信号和 CPU 响应信号进行协调和同步。 (6)中断机构:当字计数器溢出时,意味着一组数据交换完毕,由溢出信号触发中断机构,向 CPU提出中断报告 [22][24]。 DMA 控制器的传送方式 (1)连续传送 (块传送 ): DMAC 申请到总线后,将一块数据传送完后才释放总线,而不管中间 DREQ 是否有效。 在连续操作方式中, DMAC 在获得总线控制权后连续传送数据字节,可以获得比单字节操作方式更高的数据 传输率。 但在此间 DMAC 一直占用总线, CPU无法进行任何需要系统总线的操作,只能保持空闲。 此方式的结束,可由 DMAC 中设置的字节计数器的计数结果决定 (每操作一个字节,计数器减 1,直到产生终止计数信号 ),也可以由外部输入的过程结束信号决定。 其原理如图 所示。 (2)单次传送 (每次传送一个字节 ):每个 DMA 周期只传送一个字节就立即释放总线。 这样 CPU至少可以得到一个总线周期,并可进行有关的操作。 如果需要进行下一个字节的传送,需要重新进行 DMA 的申请。 其原理如图 所示。 (3)按需传送 (猝发传送 ):只要 I/O 接口的数据缓冲可用,就进行传送。 (I/O 接口需要有一定大小的 FIFO 缓冲 )。 换句话说,采用猝发传送方式,通过控制 DMA 请求信号的有效或无效,可以把一个数据块分几次传送,而允许接口的数据没准备好时,暂时停止传送。 其原理如图 所示 [13][15]。 理工大学学士学位论文 7 图 连续操作方式 图 单字节操作方式 理工大学学士学位论文 8 图 请求操作方式 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 送出地址信号和控制信号,实现外设与内存或内存不同区域之间大量数据的快速传送。 理工大学学士学位论文 9 图 DMAC 工作电路图 (4)DMAC 将规定的数据字节传送完之后,通过向 CPU 发 HOLD 信号,撤销对CPU的 DMA 请求。 CPU收到此信号,一方面使 HLDA 无效,另一方面又重新开始控制总线,实现正常取指令、分析指令、执行指令的操作。 下面图 是 DMA 的工作流程示意图 [17]。 图 DMA 的工作流程示意图 理工大学学士学位论文 10 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 应答信号。 DMA 操作的基本方法 DMA 技术的出现,使得外围设备可以通过 DMA 控制器直接访问内存,与此同时,CPU可以继续执行程序。 DMA 控制器与 CPU分时使用内存通常采用一下三种方法: (1)停止 CPU访问内存:当外围设备要求传送一批数据时,由 DMA 控制器发一个停止信号给 CPU,要求 CPU放弃对地址总线、数据总线和有关的控制总线的使用权。 DMA 控制器获得总线控制权以后,开始进行数据传送。 在一批数据传送完毕后, DMA理工大学学士学位论文 11 控制器通知 CPU可以使用内存,并把总线控制权交还给 CPU。 在这种 DMA 传送过程中, CPU基本处于不工作状态或者说保持状态。 这种传送方式的时间图如下: 图 停止 CPU 访问 其优点 是:控制简单,它适用于数据传输率很高的设备进行成组传送。 其缺点是:在 DMA 控制器访内阶段,内存的效能没有充分发挥,相当一部分内存工作周期是空闲的。 这是因为,外围设备传送两个数据之间的间隔一般总是大于内存存储周期,即使高速 I/O 设备也是如此 [16]。 (2)周期挪用:当 I/O 设备没有 DMA 请求时, CPU按程序要求访问内存;一旦 I/O设备有 DMA 请求,则由 I/O 设备挪用一个或者几个内存周期。 这种传送方式的时间图如下图所示: 图 周期挪用 与停止 CPU访问的 DMA 方法相比较,周期挪用的方法既实现了 I/O 传送,又较好的发挥了内存和 CPU的效率,是一种广泛采用的方法。 但是 I/O 设备每一次周期挪用都有申请总线控制权和归还总线控制权的过程,所以传送一个字对内存来说要占用一个周期,但对 DMA 控制器来说一般要 2—5 个内存周期 (视逻辑线路的延迟而定 )。 因此,周期挪用的方法适用于 I/O 设备读写周期大于内存存储周期的情况 [16]。 (3)DMA 与 CPU 交替访问:如果 CPU 的工作周期比内存存取周期长很多,此时采用交替访内的方法可以使 DMA 传送和 CPU 同时发挥最高的效率。 假设 CPU 工作周期为 ,内存存取周期小于 ,那么一个 CPU 周期可分为 C1 和 C2 两个分内存工作时间 CPU控制并使用内存 DMA 工作并使用内存 内存工作时间 CPU控制并使用内存 DMA 工作并使用内存 理工大学学士学位论文 12 周期,其中 C1 供 DMA 控制器访内, C2 供 CPU访内。 这种传送方式的时间图如下: 图 DMA 与 CPU 交替访问 这种方式不需要总线使用权的申请、归还过程,总线使用权是通过 C1 和 C2 分时进行的。 CPU和 DMA 控制器各自有自己的访内地址寄存器、数据寄存器和读 /写信号等控制寄存器。 在 C1 周期中,如果 DMA 控制器有访内请求,可将地址、数据等信号送到总线上。 在 C2 周期中,如 CPU有访内请求,同样将传送地址、数据等信号。 事实上,对于总线,这是用 C1, C2 控制的一个多路转换器,掌握中总线控制权的转移几乎不需要什么时间,所以对 DMA 传送来讲效率是很高的。 这种传送方式又称为 “通行的 DMA”方式,其来由是这种 DMA 传送对 CPU来说,如同透明的玻璃一般,没有任何感觉或者影响。 在透明的 DMA 方式下工作, CPU既不停止主程序的运行,也不进入等待状态,是一种高效率的工作方式。 当然,相应的硬件逻辑就更加复杂 [16][17]。 选择型和多路型 DMA 控制器 选择型 DMA 控制器 选择型 DMA 控制器在物理上可以连接多个设备,而在逻辑上只允许连接一个设备。 换句话说,在某一个时间段内只能为一个设备提供服务。 选择型 DMA 控制器的工作原理与基本 DMA 控制器大致相同。 除了前面提到的基本逻辑部件外,还有一个设备号寄存器。 数据传送是以数据块为单位进行的,在每个数据块传送之前的预置阶段,除了用程序中的 I/O 指令给出数据块的传送个数、起始地址、操作命令外,还要给出所选择的设备号。 从预置开始,一直到这个数据块传送结束, DMA 控制器只为所选的设备提供服务。 下一次预置时再根据 I/O 指令指出的设备号,为所选择的另一设备提供服务。 显然,选择型 DMA 控制器相当于一个逻辑内存工作时间 CPU控制并使用内存 DMA 工作并使用内存 理工大学学士学位论文 13 开关,根据 I/O 指令来控制此开关与某个设备连接。 选择型 DMA 控制器只增加了少量的硬件就达到为多个外围设备提供服务的目的,它特别适合于数据传输率很高甚至接近于主存存取速度的设备,在高速传送完一个数据块后,控制器又可为其他设备提供服务 [11][12]。 图 选择型 DMA 控制器的逻辑框图 多路型 DMA 控制器 与选择型 DMA 方式相比,多路型 DMA 不仅在物理上可以连接多个外围设备,而且在逻辑上也允许这些外围设备同时 工作,各个设备以字节交叉方式通过 DMA 控制器进行数据传送。 多路型 DMA 控制器适合于同时为多个慢速外围设备提供服务。 多路型 DMA 控制器可以对多个独立的 DMA 通路进行控制。 当某个外围设备请求 DMA 服务时,操作过程如下: (1)DMA 控制器接到设备发出的 DMA 请求,将请求转送到 CPU。 (2)CPU 在适当的时刻响应 DMA 请求。 若 CPU 不需要占用总线则继续执行指令;若 CPU需要占用总线则进入等待状态。 (3)DMA 控制器接到 CPU 的响应信号后,进行以下。基于modelsim的dma控制器的设计学士学位论文(编辑修改稿)
相关推荐
吉林化工学院信息与控制工程学院专业综合设计说明书 7 24 或 16 位模 /数转换器 (ADC0) C8051F350/1/2/3 内部有一个全差分 24 位 (C8051F350/1) 或 16 位(C8051F352/3)SigmaDelta的 数转换器 (ADC),该 ADC具有在片校准功能。 两个独立的抽取滤波器可被编程到 1KHz的样率。 可以使用内部的
void Write_Cmd(uchar cmd) { uchar lcdtemp = 0。 LCD_RS_L。 LCD_RW_H。 LCD_DataIn。 do //判忙 { LCD_EN_H。 _NOP()。 lcdtemp = LCD2MCU_Data。 LCD_EN_L。 } while(lcdtemp amp。 0x80)。 LCD_DataOut。 LCD_RW_L。
比较数据的时机。 多部比较锁存器组合工作,以达到同步更新和比较数据的目的。 通用异步 /同步收发器采用一个硬件, UART 接口(异步模式)和 SPI 接口(同步模式)。 而且具有强大功能的 430 系列单片机端口很多, P1~P6 有 64或100引脚之多。 唐 山 学 院 毕 业 设 计 8 ( 4)系统工作稳定 上电复位后,首先由 DCO_CLK 启动 CPU,保证程序从正确的位置开始运行
LINUX 系统移植及按键驱动开发 Linux 系统移植 获取 Linux 内核源代码 从 linux 官方网站下载 Linux 内核代码。 指定交叉编译变量 我们移植目的是让 可以在 mini2440 上运行。 修改总目录下面的 Makefile,改为: export KBUILD_BUILDHOST :=$(SUBARCH) ARCH ?= arm CROSS_COMPILE ?=
922 的 DA 引脚经过一个非门连接到单片机的 /INT0 脚,当 MM74C922 检测到键盘输入时, DA 产生高电平,与之相连的 /INT0 检测到低电平,给单片机一个中断,单片机从P2 口的低四位读入键盘上按下的键的值。 图 37 键盘接口电路图 江苏农牧科技职 业学院毕业论文(设计) 8 第四章 软件设计 本设计主要包含主程序、外部中断 0 程序。 主程序设计 主程序函数表示
的情况。 停止位:用于表示单个包的最后一位。 典型的值为 1, 2位。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。 因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。 适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 奇偶校验位:在串口通信中一种简单的检错方式。 有四种检错方式:偶、奇