基于modelsim的DMA控制器的设计学士学位论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
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.1DMA控制器的研究意义及背景······································· 1謀荞抟箧飆鐸怼类蒋薔。
1.2DMA控制器国内外发展状况·········································· 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.3DMA控制器在现实中的应用········································ 15猫虿驢绘燈鮒诛髅貺庑。
3 DMA控制器的行为级设计 ··············································· 17锹籁饗迳琐筆襖鸥娅薔。
3.1设计方案·································································· 17構氽頑黉碩饨荠龈话骛。
3.1.1 设计说明························································· 17輒峄陽檉簖疖網儂號泶。
3.1.2 运行环境及设计功能要求···································· 18尧侧閆繭絳闕绚勵蜆贅。
3.1.3 DMA控制器设计的相关组件······························· 18识饒鎂錕缢灩筧嚌俨淒。
3.2DMA控制器功能模块划分··········································· 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.1DMAC设计的VERILOG HDL程序编译 ······················· 34怂阐譜鯪迳導嘯畫長凉。
4.2DMAC各模块设计的功能仿真······································ 37谚辞調担鈧谄动禪泻類。
4.2.1 DRU模块的Sti及仿真······································· 37嘰觐詿缧铴嗫偽純铪锩。
4.2.2 AGU模块的Sti及仿真······································· 40熒绐譏钲鏌觶鷹緇機库。
4.2.3 SCU模块的Sti及仿真 ······································· 42鶼渍螻偉阅劍鲰腎邏蘞。
4.3DMAC全电路的仿真结果及分析··································· 45纣忧蔣氳頑莶驅藥悯骛。
4.3.1 DMAC全电路设计中的Sti及代码························ 45颖刍莖蛺饽亿顿裊赔泷。
4.3.2 DMAC全电路的仿真结果及分析·························· 49濫驂膽閉驟羥闈詔寢賻。
结论 ··············································································· 51銚銻縵哜鳗鸿锓謎諏涼。
致谢 ··············································································· 52挤貼綬电麥结鈺贖哓类。
参考文献 ··········································································· 53赔荊紳谘侖驟辽輩袜錈。
附录A英文原文······························································· 55塤礙籟馐决穩賽釙冊庫。
附录B汉语翻译 ······························································· 61裊樣祕廬廂颤谚鍘羋蔺。
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 基本处于不工作状态或者说保持状态。
这种传送方式的时间图如下:嵝硖贪塒廩袞悯倉華糲。
图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]。
臠龍讹驄桠业變墊罗蘄。
内存工作时间
CPU 控制并使用内存
DMA 工作并使用内存
内存工作时间
CPU 控制并使用内存
DMA 工作并使用内存
(3)DMA 与CPU 交替访问:如果CPU 的工作周期比内存存取周期长很多,此时采用交替访内的方法可以使DMA 传送和CPU 同时发挥最高的效率。
假设CPU 工作周期为1.2μs ,内存存取周期小于0.6μs ,那么一个CPU 周期可分为C1和C2两个分周期,其中C1供DMA 控制器访内,C2供CPU 访内。
这种传送方式的时间图如下:鰻順褛悦漚縫冁屜鸭骞。
图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
控制器大致相同。
除了前面提到的内存工作时间
CPU 控制并使用内存
DMA 工作并使用内存
基本逻辑部件外,还有一个设备号寄存器。
数据传送是以数据块为单位进行的,在每个数据块传送之前的预置阶段,除了用程序中的I/O指令给出数据块的传送个数、起始地址、操作命令外,还要给出所选择的设备号。
从预置开始,一直到这个数据块传送结束,DMA控制器只为所选的设备提供服务。
下一次预置时再根据I/O指令指出的设备号,为所选择的另一设备提供服务。
显然,选择型DMA控制器相当于一个逻辑开关,根据I/O指令来控制此开关与某个设备连接。
浹繢腻叢着駕骠構砀湊。
选择型DMA控制器只增加了少量的硬件就达到为多个外围设备提供服务的目的,它特别适合于数据传输率很高甚至接近于主存存取速度的设备,在高速传送完一个数据块后,控制器又可为其他设备提供服务[11][12]。
鈀燭罚櫝箋礱颼畢韫粝。
图2.10 选择型DMA控制器的逻辑框图
2.2.2 多路型DMA控制器
与选择型DMA方式相比,多路型DMA不仅在物理上可以连接多个外围设备,而且在逻辑上也允许这些外围设备同时工作,各个设备以字节交叉方式通过DMA控制器进行数据传送。
多路型DMA控制器适合于同时为多个慢速外围设备提供服务。
惬執缉蘿绅颀阳灣熗鍵。