可编程DMA控制器8237A.ppt
《可编程DMA控制器8237A.ppt》由会员分享,可在线阅读,更多相关《可编程DMA控制器8237A.ppt(63页珍藏版)》请在三一办公上搜索。
1、第9章 可编程DMA控制器8237A,9.1 8237A的引脚与内部结构项目1:利用8237进行存贮器到存贮器数据传送9.1.2 知识讲解9.2 8237A的控制字及应用项目2:用8237A从接口向RAM输入数据并显示 9.2.2 知识讲解9.3 项目扩展与工程应用9.3.1 项目3:DMA进行存贮器到存贮器传送数据9.3.2 项目4:DMA进行存贮器到I/O数据传送思考题与练习题,9.1 8237A的引脚与内部结构,1项目要求与目的(1)项目要求:利用8086CPU控制8237A可编程DMA控制器,实现存贮器之间的DMA数据传送。(2)项目目的:了解8237A DMA控制器基本原理。掌握82
2、37A DMA控制器的使用方法。学习用DMA进行存贮器到存贮器传送数据的编程方法。,2项目电路连接与说明(1)项目电路连接:做MEM=MEM数据传送时无需用户联线,系统自动做总线切换,本程序将RAM中的一段数据用DMA方式复制到另一地址。(2)项目说明:实验过程中不用联线,程序运行状态通过查看存贮器、寄存器内容来观察。要传送存储器的起始地址为8100H:0000H,传送字节数2000,8237的端口地址为00H0FH,8237通道1的页面寄存器端口地址为83H,则利用8237通道1进行存储器的数据传送。对程序进行编译连接后,使光标指向最后一条MOV指令处,点击菜单栏调试下拉菜单的执行到光标所在
3、行,使程序执行到此处。查看运行后8237寄存器值、存贮器的内容,点击菜单栏查看的数据区窗口中的代码段数据窗口,查看8100:0000到8100:0800中数据与8100:0100到8100:0900中数据一致(要注意各实验系统为用户提供的RAM区间)。,3项目电路原理框图DMA进行存贮器到存贮器传送数据电路框图如图9-1所示。电路由8086CPU芯片、8237A芯片、RAM等组成。,图9-1 DMA进行存贮器到存贮器传送数据电路框图,4项目程序设计(1)程序流程图DMA进行存贮器到存贮器传送数据程序流程图如图9-2所示。,图9-2 DMA进行存贮器到存贮器传送数据程序流程图,(2)程序清单DM
4、A进行存贮器到存贮器传送数据程序清单如下所示。,DMA EQU 00HDATA SEGMENTPB DB?DATA ENDSSTACK SEGMENT STACKSTA DW 50 DUP(0)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AL,04HOUT DMA+0DH,AL;复位命令,使先后触发器清0MOV AL,08H,OUT 83H,AL;置通道1页面寄存器 MOV AL,00H OUT DMA+02H,AL;写地址低8位 MOV AL,00H OUT DMA+02H,
5、AL;写地址高8位 MOV AX,2000;置传送字节数OUT DMA+03H,AL;先写入低8位 MOV AL,AH;OUT DMA+03H,AL;后写入高8位MOV AL,88HOUT DMA+0BH,AL;后通道0模式字MOV AL,85H OUT DMA+0BH,AL;后通道1模式字MOV AL,83H OUT DMA+08H,AL;写命令字,允许通道0地址保持MOV AL,0EH OUT DMA+0FH,AL;通道0解除屏蔽MOV AL,04H OUT DMA+09H,AL;通道0软件请求,启动DMA传送MOV AH,4CH;返回DOSINT 21H CODE ENDS END ST
6、ART,9.1.2 知识讲解,1.DMA传送的基本概念直接存储器存取DMA是一种外设与存储器或者存储器与存储器之间直接传送数据的方法,适用于需要大量数据高速传送的场合,通常在微机系统中,图像显示、磁盘存取、磁盘间的数据传送和高速的数据采集系统均可采用DMA数据交换技术。DMA传送示意图如图9-3所示,在数据传送过程中,DMA控制器可以获得总线控制权,控制高速I/O设备(如磁盘)和存储器之间直接进行数据传送,不需要CPU直接参与。用来控制DMA传送的硬件控制电路就是DMA控制器(简称DMAC)。,图9-3 DMA传送示意图图9-3 DMA数据传送过程如下:I/O接口向DMAC发出DMA请求。如果
7、DMAC未被屏蔽,则在接到DMA请求后,向CPU发出总线请求,希望CPU让出数据总线、地址总线和控制总线的控制权,由DMAC控制。CPU执行完现行的总线周期,如果CPU同意让出总线控制权,向DMAC发出响应请求的回答信号,并且脱离三总线处于等待状态。DMAC在收到总线响应信号后,向I/O接口发DMA响应信号,并由DMAC接管三总线控制权。进行DMA传送。DMAC给出传送数据的内存地址,传送的字节数,及发出/信号;在DMA控制下,每传送一个字节,地址寄存器加1,字节计数器减1,如此循环,直至计数器之值为0。DMA读操作:读存储器写外设。DMA写操作:读外设写存储器。,DMA传送结束,DMAC撤除
8、总线请求信号,CPU重新控制总线,恢复CPU的工作。Intel8237A是一种高性能的可编程DMA控制器,可以用软件对芯片进行编程,使它能在多种方式下工作。一个芯片中有4个独立的DMA通道。每个通道的DMA请求都可以允许和禁止。每个通道的DMA请求有不同的优先权。优先权可以是固定的,也可以是循环的,由初始化编程决定。每个通道一次传送的最大长度不能超过64KB。可以用级联的方法来扩展通道数。8237A DMAC有四个通道,每个通道都可用于DMA数据传送。PC机系统占用了8237A通道0、通道2、通道3,分别用于刷新动态存储器、软盘控制器与存储器间交换数据、硬盘控制器与存储器交换数据,只有通道1未
9、使用,供用户使用。,2.8237A引脚与内部结构(1)8237A引脚8237A为40个引脚的双列直插式封装的芯片如图9-4(a)所示,引脚功能如下。BD7BD0(21脚23脚、26脚30脚):8位数据线,双向,三态。作用有三:第一是当8237A空闲,即CPU控制总线时,BD7BD0作为双向数据线,由CPU读/写8237A内部寄存器;第二是当8237A控制总线时,BD7BD0输出被访问存储器单元的高8位地址信号A15A8,并由ADSTB信号将这些地址信息存入地址锁存器。第三是在进行DMA操作时,读周期经DB7DB0线把源存储器的数据送入数据缓冲器保存,在写周期再把数据缓冲器保存的数据经DB7DB
10、0传送到目的存储器。A3A0(35脚32脚):低8位地址线的低4位,双向,三态。当CPU控制总线时,8237作为一般I/O接口,A3A0为输入,作为选中8237A内部寄存器的地址选择线。当8237A控制总线时,A3A0为输出,作为选中存储器的低4位地址。,A7A4(40脚37脚):低8位地址线的高4位,输出,三态。当8237A控制总线时,A7A4作为被访问存储器单元的地址信号A7A4。(11脚):片选信号,输入,低电平有效。当8237A空闲时,仅作为一个I/O设备时,为8237A的片选信号。当该信号有效时,CPU向8237A写入工作方式控制字、操作方式控制字,或读入状态寄存器中的内容。(1脚)
11、:I/O读信号,双向,三态,低电平有效。当CPU控制总线时,为输入信号,CPU读8237A内部寄存器的状态信息;当8237A控制总线时,为输出信号,与配合实现DMA写操作。(2脚):I/O写信号,双向,三态,低电平有效。当CPU控制总线时,为输入信号,CPU利用它把数据写入8237A内部寄存器;当8237A控制总线时,为输出信号,与配合实现DMA读操作。,CLK(12脚):时钟信号,输入。8237A的时钟频率为3MHz,用于控制芯片内部定时和数据传送速率。RESET(2脚):复位信号,输入,高电平有效。当芯片被复位时,屏蔽寄存器被置1,其余寄存器置0,8237A处于空闲状态,即4个通道的DMA
12、请求被禁止,仅作为一般I/O设备。READY(6脚):准备好信号,输入,高电平有效。当进行DMA操作,存储器或外部设备的速度较慢,来不及接收或发送数据时,外部电路使READY 为低电平,这时DMA控制器会在总线传送周期,自动插入等待周期,直到READY变成高电平。AEN(9脚):地址允许信号,输出,高电平有效。访问DMA时AEN1,访问外设时AEN0。当AEN1时,它把外部地址锁存器中的高8位地址送入地址总线,与8237A芯片输出的低8位地址组成16位地址。ADSTB(8脚):地址选通信号,输出,高电平有效。当ADSTB1时,将保存在8237A缓冲器的高8位地址信号传送到片外地址锁存器。,图9
13、-4 8237A引脚与内部结构图,(3脚):存储器读信号,输出,三态,低电平有效。在DMA操作时,作为从选定的存储单元读出数据的控制信号。(4脚):存储器写信号,输出,三态,低电平有效。在DMA操作时,作为向选定的存储单元写入数据的控制信号。(36脚):DMA传送结束信号,双向,低电平有效。任一通道DMA传送结束时,从此端子发出有效信号,此外,当外部从端输入有效信号时,也能强迫DMAC终止传送过程。DREQ3DREQ0(16脚19脚):DMA请求信号,输入,有效电平可由工作方式控制字确定。他们分别是连接到四个通道的外设,向DMA控制器请求DMA操作的请求信号。该信号要保持有效电平一直到8237
14、A控制器作出DMA应答信号DACK。当8237A被复位时,他们被初始化为高电平有效。HRQ(10脚):请求占用总线信号,输出,高电平有效。该信号是DMAC接到某个通道的DMA请求信号后,且该通道请求未被屏蔽情况下,DMAC向CPU发出请求占用总线的信号。HLDA(7脚):同意占用总线信号,输入,高电平有效。此信号是CPU发给DMAC,同意DMAC器占用总线控制权请求的应答信号。8237A接收到HLDA后,即可进行DMA操作。DACK3DACK0(15脚、14脚、24脚、25脚):DMA响应信号,输出,它的有效电平可由工作方式控制字确定。该信号是由8237A控制器发给四个通道中申请DMA操作的通
15、道的应答信号。VCC(31脚):电源+5V。GND(20脚):接地。NC(5脚):空(没有用)。,(2)内部结构8237A的内部结构如图9-4(b)所示,图中通道部分只画出了 一个通道的情况。8237A的内部结构由控制逻辑单元、优先级编码单元、缓冲器和内部寄存器四个基本部分组成,功能介绍如下。控制逻辑单元控制逻辑单元的主要功能是根据CPU传送来的有关DMAC的工作方式控制字和操作方式控制字,在定时控制下,产生DMA请求信号、DMA传送以及发出DMA结束的信号。优先级编码单元它用来裁决各通道的优先级顺序,解决多个通道同时请求DMA服务时可能出现的优先级竞争问题。优先级顺序是指通道0优先级最高,其
16、次是通道1,通道3的优先级最低。循环四个通道的优先级不断变化,即本次循环执行DMA操作的通道,到下一次循环为优先级最低。不论优先级别高还是低,只要某个通道正在进行DMA操作,其他通道无论级别高低,均不能打断当前的操作。当前操作结束后,再根据级别的高低,响应下一个通道的DMA操作申请。缓冲器组包括两个I/O缓冲器1、I/O缓冲器2和一个输出缓冲器,通过这三个缓冲器把8237A的数据线、地址线和CPU的系统总线相连。,I/O缓冲器1:8位、双向、三态地址/数据缓冲器,作为8位数据BD7BD0输入/输出和高8位地址A15A8输出缓冲。I/O缓冲器2:4位地址缓冲器,作为地址A3A0输出缓冲。输出缓冲
17、器:4位地址缓冲器,作为地址A7A4输出缓冲。内部寄存器8237A内部寄存器共有12个,如表9-1所示。分为两大类:一类是控制寄存器或状态寄存器;另一类是地址寄存器和字节计数器。CPU对8237A内部寄存器的访问是在8237A作为一般的I/O设备时,通过A3A0的地址译码选择相应的寄存器。具体操作是:用A3区分上述两类寄存器,A3=1选择第一类寄存器,A3=0选择第二类寄存器。对于第一类寄存器,有两个寄存器共用一个端口地址,这种情况,用和来区分。,表9-1 8237A的内部寄存器,表9-2 8237A内部寄存器寻址及软件命令,从8237A内部寄存器寻址及软件命令表9-2可以看出,A31选择第一
18、类寄存器,A30选择第二类寄存器。对于第一类寄存器A2A0用来指明选择哪一个寄存器,若有两个寄存器共用一个端口,用读写信号区分。对于第二类寄存器用A2、A1来区分选择哪一个通道,用A0来区别是选择地址寄存器还是字节计数器。现只对基地址寄存器、当前地址寄存器、基字节数寄存器和当前字节计数器的作用进行阐述,其他寄存器的作用将在控制字设置中讲解。基地址寄存器、当前地址寄存器这两个寄存器都用来存放DMA操作时将要访问的存储器的地址,是16位的寄存器,每个通道都有。基地址寄存器的内容是初始化编程时由CPU写入,整个DMA操作期间不再变化。若在工作方式控制字中设置D4位等于1,采用自动预置方式,那么DMA
19、操作结束,自动将基地址寄存器的内容写入当前地址寄存器。该寄存器的内容只能写入,不能读出。当前地址寄存器的作用是在DMA操作期间,通过加1或减1的方法不断修改访问存储器的地址指针,指出当前正访问的存储器地址。当前地址寄存器地址值的输入方法,可在初始化时写入,也可在DMA操作结束,由基地址寄存器写入。该寄存器的内容可通过执行两次输入指令读入CPU中。基字节数寄存器、当前字节计数器这两个寄存器都用来存放进行DMA操作时传送的字节数,是16位寄存器,每个通道都有。,基地址寄存器的内容是初始化编程时由CPU写入,整个DMA操作期间不再变化。若在工作方式控制字中设置D4位等于1,采用自动预置方式,那么DM
20、A操作结束,自动将基地址寄存器的内容写入当前地址寄存器。该寄存器的内容只能写入,不能读出。当前地址寄存器的作用是在DMA操作期间,通过加1或减1的方法不断修改访问存储器的地址指针,指出当前正访问的存储器地址。当前地址寄存器地址值的输入方法,可在初始化时写入,也可在DMA操作结束,由基地址寄存器写入。该寄存器的内容可通过执行两次输入指令读入CPU中。基字节数寄存器、当前字节计数器这两个寄存器都用来存放进行DMA操作时传送的字节数,是16位寄存器,每个通道都有。基字节数寄存器的数据是在初始化时写入的,整个DMA操作中不变,若将工作方式控制字中的D4位置1,采用自动预置方式,那么DMA操作结束,自动
21、将基字节数寄存器的内容写入当前字节计数器。该寄存器的内容只能写入,不能读出。当前字节计数器的作用是在DMA传送操作期间,每传送一个字节,字节计数器减1,当由0减到FFFFH时,产生DMA操作结束信号。当前字节计数器的内容可在初始化命令写入,也可通过在DMA传送结束时由基字节计数寄存器写入。该寄存器的内容既能写入也能通过执行两次输入指令读入CPU。,9.2 8237A的控制字及应用,项目2:用8237A从接口向RAM输入数据并显示 1项目要求与目的(1)项目要求:利用8086CPU控制8237A可编程DMA控制器,实现从接口向存贮器输入数据。要求每发生一次DMA请求,就从接口电路(74LS244
22、)向内存传送一个字节数据,存入从6000H:0H开始的10个字节的缓冲区,然后将该缓冲区的内容送PC机屏幕上显示。(2)项目目的:掌握8237A DMA控制器的使用方法。学习用DMA控制器实现从接口向存贮器输入数据的编程方法。2项目电路连接与说明(1)项目电路连接:做I/O=MEM数据传送时用户可以根据如图9-5所示联线,电路需要增加一个74LS244芯片。(2)项目说明:本程序将I/O口中的数据用DMA方式读到内存,然后将该内存的内容送PC机屏幕上显示。因此需要编写8237的初始化程序及有关控制程序。8237的端口地址为00H0FH,通道1页面寄存器的端口地址为83H.3项目电路原理框图 用
23、8237从接口向RAM输入数据并显示电路框图如图9-5所示。电路由8086CPU芯片、8237A芯片、RAM、74LS244芯片和开关K0K7等组成。,图9-5 用8237从接口向RAM输入数据并显示电路框图,。,4项目程序设计(1)程序流程图用8237从接口向RAM输入数据并显示程序流程图如图9-6所示。,图9-6 DMA进行存贮器到I/O间传送数据程序流程图,(2)程序清单DMA进行存贮器到I/O间传送数据程序清单如下所示。DMA EQU 00HDATA SEGMENTIN-data DB 10 DUP(20H),0DH,0AH,24HDATA ENDSEXTRA SEGMENT AT 6
24、000HBUF-data DB 13 DUP(?)EXTRA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:EXTRASTART:MOV AX,DATA MOV DS,AXMOV AX,EXTRA MOV ES,AX LEA SI,IN-data,LEA DI,BUF-data CLD;方向标志DF=0 MOV CX,13 REP MOVSB;清缓冲区 OUT DMA+0DH,AL;复位命令,使先后触发器清0 MOV AL,06H;置通道1页面寄存器 OUT 83H,AL MOV AL,00H OUT DMA+02H,AL;写入地址低8位MOV AL,00
25、H OUT DMA+02H,AL;写入地址高8位 MOV AX,10;置传送字节数 OUT DMA+03H,AL;先写入低8位MOV AL,AH;置传送字节数 OUT DMA+03H,AL;后写入高8位MOV AL,55H OUT DMA+0BH,AL;输出模式字MOV AL,00H,OUT DMA+08H,AL;输出命令字MOV AL,01H OUT DMA+0AH,AL;清除通道1屏蔽位,启动DMA传送DISP:LEA DX,BUF-data MOV AH,09H INT 21H;显示字符串 MOV AH,01H INT 16H JZ DISP;无键按下继续显示 MOV AH,4CH IN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可编程 DMA 控制器 8237
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6555596.html