基于modelsim的DMA控制器的设计学士学位论文.docx

上传人:b****7 文档编号:11188829 上传时间:2023-02-25 格式:DOCX 页数:71 大小:949.25KB
下载 相关 举报
基于modelsim的DMA控制器的设计学士学位论文.docx_第1页
第1页 / 共71页
基于modelsim的DMA控制器的设计学士学位论文.docx_第2页
第2页 / 共71页
基于modelsim的DMA控制器的设计学士学位论文.docx_第3页
第3页 / 共71页
基于modelsim的DMA控制器的设计学士学位论文.docx_第4页
第4页 / 共71页
基于modelsim的DMA控制器的设计学士学位论文.docx_第5页
第5页 / 共71页
点击查看更多>>
下载资源
资源描述

基于modelsim的DMA控制器的设计学士学位论文.docx

《基于modelsim的DMA控制器的设计学士学位论文.docx》由会员分享,可在线阅读,更多相关《基于modelsim的DMA控制器的设计学士学位论文.docx(71页珍藏版)》请在冰豆网上搜索。

基于modelsim的DMA控制器的设计学士学位论文.docx

基于modelsim的DMA控制器的设计学士学位论文

基于modelsim的DMA控制器的设计学士学位论文

摘要

DMA是直接存储器存取方式,即(DirectMemoryAccess)方式的缩写,存储器与I/O设备之间的数据传送在DMA控制器(又称DMAC)的管理下直接进行,而不经过CPU。

DMA方式适用于高速传送成组数据。

DMA控制器将向内存发出地址和控制信号,修改地址,对传送的字的个数计数,并且以中断方式向CPU报告传送操作的结束。

DMA方式的主要优点是传输速度快。

由于CPU根本不参加传送操作,因此就省去了CPC取指令、取数、送数等操作。

目前由于大规模集成电路工艺发展,很多厂家直接生产大规模集成电路的DMA控制器,虽然DMA控制器复杂程度差不多接近于CPU,但是用起来非常方便。

本文在基于VerilogHDL设计DMA控制器时,采用的是Top-Down的设计方法。

DMA控制器电路系统是由数据寄存器、地址产生器、状态控制器三个子模块组成,并且整个DMA控制器电路系统的编译、仿真是在对三个子模块分别进行编译、仿真的基础上完成的。

关键词:

DMA控制器;Verilog;Modelsim;仿真

Abstract

DMAisadirectmemoryaccessmode,namely(DirectMemoryAccess)theabbreviation,betweenthememoryandI/OdevicestransmitdataovertheDMAcontroller(DMAC)undermanagementdirectly,withoutpassingthroughtheCPU.DMAissuitableforhighspeedtotransmitdata.TheDMAcontrollertothememoryaddressandcontrolsignals,modifyaddress,countingonthetransferoftheword,andinordertointerruptthereporttoCPUtransferoperation.ThemainadvantagesoftheDMAmethodisfasttransmissionspeed.BecauseCPUdoesnotparticipateinthetransferoperation,thuseliminatingtheCPCinstructionfetch,access,sendafewoperation.Atpresent,duetothelargescaleintegratedcircuittechnologydevelopment,thedirectproductionofDMAcontrollerLSImanymanufacturers,althoughtheDMAcontrollercomplexityalmostclosetoCPU,butitisveryeasytouse.

Inthispaper,thedesignofDMAcontrollerbasedonVerilogHDL,usingtheTop-Downthedesignmethod.TheDMAcontrollercircuitsystemiscomposedofdataregister,addressgenerator,stateacontrollercomposedofthreemodules,andthecompiler,simulationoftheentireDMAcontrollercircuitsystemandarecompiled,basedonthesimulationandsynthesisofthreesub-modules.

Keywords:

DMAcontroller;Verilog;Modelsim;simulation

 

 

1绪论

1.1DMA控制器的研究意义及背景

外设与计算机内存之间的信息交换,可通过程序查询方式和中断方式进行。

这两种方式都是在CPU的控制下,通过CPU执行指令来完成的。

数据传送方向为外设→CPU→内存。

这两种方式每传送一个字节都需要耗用较长时间。

在程序查询方式时,CPU要反复测试外设状态,在外设未准备好时,CPU就处于等待状态,直到外设准备好,才进行数据传送。

在中断方式下,每次实现一次数据传送,CPU都要进行转入中断服务子程序、保护断点、现场保护、恢复现场、返回主程序等操作。

显然对于高速的I/O设备以及大量数据交换的场合(如软、硬磁盘等),这两种传送方式就不能满足速度的要求了。

对于这些高速外设,如果传送速度太慢,不仅降低传送效率,还会造成数据丢失,导致传送出错。

为此,提出了DMA(直接存储器存取)传输方式。

这种传送方式是不经过CPU干预,直接在外设与内存储器之间进行数据传送的方式。

实现DMA传送,需要一个专用硬件DMA控制器(DMAC),在DMA传送期间,CPU要让出对系统总线的控制权,交给DMA控制。

总线在DMA的控制下,数据直接在存储器和外设之间传送,而不经过CPU干预,其传送速度大大提高,可接近于存储器的最快存取速度[1][2]。

这种传送方式适用于图像显示、磁盘存取、磁盘间数据传送和高速的数据采集等系统。

1.2DMA控制器国内外发展状况

自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控制器的设计方案(顶层设计),借助于硬件描述语言VerilogHDL建立DMA控制器的行为模型。

第四章为行为模型编写Sti程序代码,利用ModelSim对所建模型进行编译和仿真测试,检验是否达到设计要求。

 

2DMA控制器的基本理论

2.1基本的DMA控制器

2.1.1DMA控制器的基本功能

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.2DMA控制器的基本组成

一个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.3DMA控制器的传送方式

(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.4DMA控制器的传送过程

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.5DMAC工作电路图

(4)DMAC将规定的数据字节传送完之后,通过向CPU发HOLD信号,撤销对CPU的DMA请求。

CPU收到此信号,一方面使HLDA无效,另一方面又重新开始控制总线,实现正常取指令、分析指令、执行指令的操作。

下面图2.6是DMA的工作流程示意图[17]。

图2.6DMA的工作流程示意图

2.1.5DMA控制器的传送状态

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.6DMA操作的基本方法

DMA技术的出现,使得外围设备可以通过DMA控制器直接访问内存,与此同时,CPU可以继续执行程序。

DMA控制器与CPU分时使用内存通常采用一下三种方法:

(1)停止CPU访问内存:

当外围设备要求传送一批数据时,由DMA控制器发一个停止信号给CPU,要求CPU放弃对地址总线、数据总线和有关的控制总线的使用权。

DMA控制器获得总线控制权以后,开始进行数据传送。

在一批数据传送完毕后,DMA控制器通知CPU可以使用内存,并把总线控制权交还给CPU。

在这种DMA传送过程中,CPU基本处于不工作状态或者说保持状态。

这种传送方式的时间图如下:

图2.7停止CPU访问

其优点是:

控制简单,它适用于数据传输率很高的设备进行成组传送。

其缺点是:

在DMA控制器访内阶段,内存的效能没有充分发挥,相当一部分内存工作周期是空闲的。

这是因为,外围设备传送两个数据之间的间隔一般总是大于内存存储周期,即使高速I/O设备也是如此[16]。

(2)周期挪用:

当I/O设备没有DMA请求时,CPU按程序要求访问内存;一旦I/O设备有DMA请求,则由I/O设备挪用一个或者几个内存周期。

这种传送方式的时间图如下图所示:

图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访内。

这种传送方式的时间图如下:

图2.9DMA与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.3DMA控制器在现实中的应用

DMA控制器的主要用途是在CPU不干涉的情况下,负责存储器之间或存储器和外围设备之间的数据交换。

这种用途不仅仅可以加快存储器之间大数据量的交换,更重要的是,CPU可以从大数据量交换、分散数据收集、慢速设备的访问中解放

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 城乡园林规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1