资源预览内容
第1页 / 共31页
第2页 / 共31页
第3页 / 共31页
第4页 / 共31页
第5页 / 共31页
第6页 / 共31页
第7页 / 共31页
第8页 / 共31页
第9页 / 共31页
第10页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第8章 可编程DMA控制器8237A,8.1 概述 8.2 8237A的内部结构与引脚 8.3 8237A的工作方式 8.4 8237A内部寄存器功能及格式 8.5 8237A的编程及应用,8.1 概述,8.1.1 8237A的主要功能 8237A是40引脚双列直插式高性能可编程DMA控制器。 主要功能如下: (1)有4个独立DMA通道,每个通道均可独立传送数据。 (2)每个通道DMA请求都可分别允许和禁止。 (3)每个通道均有64 KB寻址和计数能力。 (4)有4种DMA传送方式,分别为单字节传送、数据块传送、请求传送和级联传送方式。 (5)需要更多数据传送通道可把8237A级联。,8.1 概述,8.1.2 8237A的工作状态 8237A有主态方式和从态方式两种不同工作状态. DMA控制器未取得总线控制权时须由CPU对其进行编程,这时,CPU处于主控状态,DMA控制器和一般I/O芯片一样,是系统总线从设备,这种工作方式称为从态方式。 当DMA控制器取得总线控制权后,系统就完全在它的控制下,使I/O设备和存储器之间或存储器与存储器之间进行直接的数据传送,这种工作方式称为主态方式。,8.2 8237A内部结构及引脚,8-2-1 8237A内部结构 8237A内部结构由时序与控制逻辑、优先级编码电路、数据和地址缓冲器组、命令控 制逻辑和内部寄存器等组成。,8.2 8237A内部结构及引脚,8-2-2 8237A的引脚 8237A是40引脚的双列直插式器件,由于它既可做主模块又可做从模块,故其外部引脚设置也具有一定的特点。如它的I/O读写线和数据线是双向的,另外,还设置了存储器读/写线和16位地址输出线。这些都是其他I/O接口芯片所没有的。,8.3 8237A的工作方式,8.3.1 单字节传送方式 这种工作方式下,每进行一次DMA操作,只传送1 B数据。 8237A每完成1 B传送计数器便自动减1,地址寄存器值加1或减1。 当内部字节计数器由0减为FFFFH时,产生传输过程结束信号EOP,表示DMA传送过程结束。 这种方式的特点是一次DMA传送只传送1 B的数据,占用一个总线周期,然后释放系统总线。,8.3.2 数据块传送方式 该方式传送会一个字节一个字节进行下去,直到把整个数据块全部传送完毕才交出系统总线控制权。 外设准备好后,向8237A发DREQ信号,8237A收到该信号后向CPU发HRQ信号请求占用总线,CPU同意HRQ请求,向8237A发HLDA信号,然后8237A向外设发DACK信号开始DMA传送,直到整个数据块传送完毕。 每次DREQ有效后,若CPU响应其请求让出总线控制权给8237A,8237A进行DMA服务时,就会连续传送数据,只有当字节计数器计数由0减为FFFFH或外部送有效EOP信号时,才将总线控制权交给CPU,结束DMA服务。 该方式的特点是数据传输效率高。,8.3.3 请求传送方式 这种工作方式与数据块传送方式类似,不同点在于每传送1 B后,8237A都对DREQ端进行测试,询问其是否有效。 如检测到DREQ端变为无效电平,则停止DMA传送,但不释放系统总线,测试过程仍进行。 当检测到DREQ端变为有效电平时,就在原来的基础上继续进行传送。 这种方式的特点是DREQ信号一直有效时,连续传送数据,只有当字节计数器由1减为FFFFH,或外部送来有效的EOP信号,或DREQ变为无效时才结束DMA传送过程。,8.3.4 级联传送方式 在这种方式下可把一片8237A(主片)和 几片8237A(从片)进 行级联,以便扩充DMA通道。 图8-3所示为二级8237A级联时的情况,图8-3 二级8237A级联,8.4 8237A内部寄存器功能及格式,8237A的内部可编程寄存器主要有10个,如下表所示。,8.4.1 当前地址寄存器,每个通道都有一个16位的当前地址寄存器,用于存放DMA传送的存储器当前地址值。每传送一个数据,地址值自动增1或减1,以指向下一个存储单元。在编程状态下,CPU可用输出指令对该寄存器写入初值,也可由输入指令读出该寄存器中的值,但每次只能读/写8位数据,故对该寄存器的读/写操作要分两次进行。若工作方式寄存器编程为自动预置操作,则当DMA传送结束,产生EOP信号后,8237A自动将基地址的值装入该寄存器中。,8.4.2 当前字节寄存器,每个通道都有一个16位长的当前字节计数寄存器,用来保存DMA传送的当前字节数。实际传送的字节数比编程写入的字节数大1。例如,编程的初始值为10,将传送11 B。每次传送以后,字节计数器减1。当其内容从0减1而到达FFFFH时,将产生终止计数TC脉冲输出终止计数。CPU访问它是以连续2 B对其读出或写入。在自动预置方式时,当EOP有效后,被重新预置成初始值;如果在非自动预置方式,这个计数器在终止计数之后将为FFFFH。,8.4.3 基地址寄存器,每个通道都有一个16位的基地址寄存器,用来存放对应通道当前地址寄存器的初值,CPU对DMA控制器编程设置地址初值时,同时写入基地址寄存器和当前地址寄存器,即两个寄存器有相同的写入端口地址,编程时写入相同的内容。但基地址寄存器的内容不能被CPU读出,也不能被修改。设置该寄存器的主要目的在于,当执行自动预置操作时,当前地址寄存器能恢复到初始值。,8.4.4 基字节寄存器,每个通道都有一个16位的基字节寄存器,用于存放对应通道当前字节计数器的初值,该值也是在CPU对8237A进行初始化编程时与当前字节计数器一起被写入的,且两者具有相同的写入端口,写入相同的内容。该寄存器的内容不会自动修改,也不能被CPU读出,它主要用于自动预置操作时使当前字节计数器恢复初值。,8.4.5 命令寄存器,8.4.6 工作方式寄存器,8.4.7 请求寄存器,8.4.8 屏蔽寄存器,(1)通道屏蔽字。,8.4.8 屏蔽寄存器,(2)主屏蔽字。,8.4.9 状态寄存器,8.4.10 暂存寄存器,暂存寄存器是一个8位的寄存器,在存储器至存储器传送期间,用来暂存从源地址单元读出的数据。当数据传送完成时,所传送的最后1 B数据可以由CPU读出。用RESET信号可以清除此暂存器。,8.4.11 软件命令,(1)主清除命令。 (2)清除字节指示器命令。 (3)清除屏蔽寄存器命令。,8.5 8237A的编程及应用,8.5.1 8237A主要寄存器端口地址分配 DMA传送前CPU要对8237A进行初始化编程。 每片8237A有4个地址选择线A3A0,占用16个连续端口地址,地址高4位为0。,8.5.2 8237A编程一般步骤 (1)发送主清除命令,使8237A复位。 (2)写工作方式寄存器。 (3)写命令寄存器。 (4)输入相应通道当前地址寄存器和基地址寄存器初值。 (5)输入当前字节计数器和基字节寄存器的初始值。 (6)写屏蔽寄存器。 (7)写请求寄存器。,【例8.1】利用通道1从外设输入54 KB的一个数据块,传送至5678H开始的存储区域(增量传送),采用块传送方式,传送完不自动初始化,外设的DREQ和DACK都为高电平有效。 已知8237A的端口地址为50H5FH。,初始化程序如下: OUT 5DH,AL ;主清除命令 MOV AL,78H ;基地址和当前地址的低8位 OUT 50H,AL MOV AL,56H ;基地址和当前地址的高8位 OUT 50H,AL MOV AL,00H ;基字节数和当前字节数低8位 OUT 51H,AL MOV AL,0D8H ;基字节数和当前字节数高8位 OUT 51H,AL MOV AL,85H ;模式控制字 OUT 5BH,AL MOV AL,01H ;屏蔽控制字,使通道1屏蔽位复位 MOV AL,0A0H ;命令字 OUT 58H,AL,8.5.3 8237A应用举例,8237A既能提供外设和存储器之间的DMA传输,也能进行存储器和存储器之间的DMA传输,但在PC/XT机的BIOS初始化系统时,将8237A的存储器和存储器间传送方式禁止了,因此只用它实现外设和内存间的高速数据交换。,本章小结 DMA控制器8237A有总线主模块和总线从模块两种不同的工作状态。 总线主模块下DMA控制器可直接控制系统总线。 8237A DMA控制器含有4个独立的DMA通道,可用来实现内存到接口、接口到内存及内存到内存之间的高速数据传送。,本章内容到此结束 谢谢各位 !,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号