您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 第6章DMA微机原理
第6章DMA控制器DMA控制器8273A学习目的:通过对本章的学习,您应该能够达到下列要求:了解8259A、8237A、8253芯片的内部结构描述各芯片的工作原理熟悉8259A、8253芯片的工作方式掌握各芯片的编程方法学会8253的应用6.1DMA概述主要内容:DMA控制器的一般结构和概要DMA控制器8237A的原理8237A的编程和使用基本问题:说明在DMA方式时内存往外设传输数据的过程。DMA控制器初始化工作包括哪些内容?DMA控制器在什么时候作为主模块?什么时候作为从模块?为什么CPU对DMA控制器提出的总线响应要比中断请求响应快?DMA控制器DMA控制器可以象CPU那样得到总线控制权,用DMA方式实现外部设备和存储器之间的数据高速传输。一个DMA控制器通常可以连接一个或几个输入/输出接口,每个接口通过一组连线和DMA控制器相连。将DMA控制器中和某个接口有联系的部分为一个通道。而一个DMA控制器一般由几个通道组成。DMA方式,外设向內存传输数据的过程:当一个接口中有数据要输入时,就往DMA控制器发个DMA请求;DMA控制器接到请求后,便往控制总线上发一个总线请求;如果CPU允许让出总线,则发一个总线允许信号;DMA控制器接到此信号后,就将地址寄存器的内容送到地址总线上,同时往接口发一个DMA回答信号,并发一个1/O读信号和一个内存写信号;接口接到DMA回答信号以后,将数据送到数据总线上,并撤除DMA请求信号;内存在接收到数据以后,一般往DMA控制器回送一个准备好信号,于是,DMA控制器的地址寄存器内容加1或减1,计数器的值减1,而且撤除总线请求信号,这样,就完成了对一个数据的DMA输入传输。DMA传输结束时,往接口发一个结束信号,向CPU交回总线控制权。其状态寄存器的传输结束标志置“1”。查询时,CPU在主程序中通过查询状态寄存器的传输结束标志,决定是否进行后续处理。中断方式时,结束信号可作为送到外设的中断请求信号(也可以送到总线控制逻辑)。后续程序必须检查出错标志,确定是否重新传输、打印出错信息。注意:DMA控制器不能提供中断类型号。图6-8DMA控制器内部编程结构和外部连接6.28257芯片内部结构数据总线缓冲器读写逻辑电路工作方式寄存器状态寄存器优先选择逻辑4个DMA通道6.38237A的控制寄存器格式和软命令8237共有9类寄存器当前地址寄存器当前字节数寄存器基地址和基字节数寄存器命令寄存器方式寄存器请求寄存器屏蔽寄存器状态寄存器临时寄存器。6.3.18237A的控制寄存器格式1.基地址寄存器该寄存器用以存放16位地址。在编程时,它与当前地址寄存器被同时写入某一起始地址。在8237A工作过程中其内容不变化。在自动预置时,其内容被写到当前地址寄存器中。2.基字节计数寄存器该寄存器用以存放该通道数据传送的个数。在编程时,它与当前字节计数寄存器被同时写入要传送数据的个数。在8237A工作过程中其内容保持不变。在自动预置时,其内容被写到当前字节计数寄存器中。3.当前地址寄存器每个通道有一个16位的当前地址数寄存器。该寄存器存放DMA传送期间的地址值。每次传送后自动加1或减1。CPU可以对其进行读写操作。在选择自动预置时,每当字计数值减为0或外部发生,就会自动将基地址寄存器的内容写入当前地址寄存器中,恢复其初始值。4.当前字节计数寄存器每个通道有一个16位的当前字节数寄存器。它保持着要传送的字节数,在每次传送后此寄存器减1。在自动预置下,每当字计数值减为0或外部发生,就会自动将基字节计数寄存器的内容写入当前字节计数寄存器中,恢复其初始计数值。5.地址暂存寄存器和字节计数寄存器这两个16位的寄存器和CPU不直接发生关系,程序员也不能控制这两个寄存器。6.工作方式寄存器图6.58237A方式寄存器格式图6.48237A命令寄存器格式7.命令寄存器8单通道屏蔽寄存器寄存器图6.68237A单通道屏蔽寄存器寄存器格式9四通道屏蔽寄存器寄存器图6.78237A四通道屏蔽寄存器寄存器格式8237A请求寄存器格式图6.88237A请求寄存器格式8237A状态寄存器格式图6.98237A状态寄存器格式6.3.28237A的软命令1.清除高/低触发器8237内部的高/低触发器用以控制写入或读出16位寄存器的高字节还是低字节。如触发器为0,则操作的为低字节;为“1”,操作的为高字节。在复位以后,此触发器被清为零,每当对16位寄存器进行操作,此触发器改变状态。我们也可以用此命令使它清为零,以改变下面要进行的读/写操作的顺序。2.主清除命令这个命令与硬件的Reset信号有相同的功能,即它使命令、状态、请求、临时寄存器以及内部的高低触发器清零;使屏蔽寄存器全置为1(即屏蔽状态);使8237进入空闲周期,以便进行编程。3.清除屏蔽寄存器命令6.48237A的工作时序图6.118237时序图DMA控制器内部包含一个控制器寄存器和一个状态寄存器,一个地址寄存器和计数器。多通道时,控制寄存器和状态寄存器为本多个通道所公用,而地址寄存器和计数器为本每个通道所独有。DMA的初始化:(1)将数据传输缓冲区的起始(结束)地址送到地址寄存器中。(2)将传输的字节数(字数)送到计数器中。6.58237A的编程应用1)输出主清除命令2)写入基与当前地址寄存器3)写入基与当前字节数寄存器4)写入方式寄存器5)写入屏蔽寄存器6)写入命令寄存器7)写入请求寄存器6.5.1编程举例若要利用通道0,由外设(磁盘)输入32K字节的一个数据块,传送至内存8000H开始的区域(增量传送),采用块连续传送的方式,传送完不自动初始化,外设的DREQ和DACK都为高电平有效。要编程首先要确定端口地址。地址的低4位用以区分8237的内部寄存器,高4位地址A7~A4经译码后,连至选片端,假定选中时高4位为5。首先根据要求确定了方式控制字为84H,屏蔽控制字为00H,命令控制字为A0H。OUT5DH,AL;输出主清除命令MOVAL,00HOUT50H,AL;输出基和现行地址的低8位MOVAL,80HOUT50H,AL;输出基和现行地址的高8位MOVAL,00HOUT51H,ALMOVAL,80HOUT51H,AL;给基和现行字节数赋值MOVAL,84HOUT5BH,AL;输出模式字MOVAL,00HOUT5AH,AL;输出屏蔽字MOVAL,0A0HOUT58H,AL;输出命令字6.5.28237A在PC/XT微机中的应用习题
本文标题:第6章DMA微机原理
链接地址:https://www.777doc.com/doc-5536419 .html