《可编程控制器PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《可编程控制器PPT讲稿.ppt(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、可编程控制器第1页,共23页,编辑于2022年,星期六8.1 概述 Inte18237A是一种有40个引脚的高性能可编程DMA控制器,采用主频5MHz的8237A传送速度可达到1.6MB/秒。8237A的主要功能为:(1)在一个8237A芯片中有4个独立的DMA通道,每个通道均可独立地传送数据,可控制4个I/O外设进行DMA传送。(2)每个通道的DMA请求都可以分别允许和禁止。每个通道的DMA请求有不同的优先权,优先权可以是固定的,也可以是循环的。(3)每个通道均有64KB的寻址和计数能力,即一次DMA传送的数据最大长度可达64KB。第2页,共23页,编辑于2022年,星期六8.1 概述(4)
2、可以在存储器与外设间进行数据传送,也可以在存储器的两个区域之间进行传送。(5)8237A有四种DMA传送方式,分别为单字节传送、数据块传送、请求传送方式和级连方式。(6)8237A芯片有一条结束处理的输入信号,允许外界用此输入端结束DMA传送或重新初始化。(7)8237A可以级连,扩展更多的通道。(8)40脚双列直插式,+5V工作电源。第3页,共23页,编辑于2022年,星期六8.1 概述8237A有两种不同的工作状态,分别为从态方式和主态方式。(1)在DMA控制器未取得总线控制权时必须由CPU对DMA控制器进行编程,以确定通道的选择、数据传送的方式和类型、内存单元起始地址、地址是递增还是递减
3、及要传送的总字节数等,CPU也可以读取DMA控制总线的状态。这时,CPU处于主控状态,而DMA控制器就和一般的I/O芯片一样,是系统总线的从设备,这种工作方式称为从态方式。(2)当DMA控制器取得总线控制权后,系统就完全在它的控制下,使I/O设备和存储之间或存储器与存储器之间进行直接的数据传送,这种工作方式称为主态方式。第4页,共23页,编辑于2022年,星期六8.2 8237A的内部结构及引脚 8-2-1 8237A的内部结构 8237A的内部结构如图8-1所示,主要由时序与控制逻辑、优先级编码电路、数据和地址缓冲器组、命令控制逻辑和内部寄存器等组成。第5页,共23页,编辑于2022年,星期
4、六8.2 8237A的内部结构及引脚图8-1 8237A的内部结构图 第6页,共23页,编辑于2022年,星期六8.2 8237A的内部结构及引脚8-2-2 8237A的引脚 8237A采用双列直插式,有40个引脚,其引脚排列如图8-2所示。第7页,共23页,编辑于2022年,星期六8.3 8237A工作方式 8.3.1 单字节传送方式 在这种工作方式下,每进行一次DMA操作,只传送一个字节的数据。8237A每完成一个字节的传送,计数器便自动减1,地址寄存器的值加1或减1。接着,8237A释放系统总线,把控制权交还给CPU。但是8237A在释放总线后,会立即对DREQ端进行测试,一旦DREQ有
5、效,则8237A会立即发送总线请求,在获得总线控制权后,又成为总线主模块而进行DMA传送。特点:一次DMA传送至传送1个字节的数据,占用1个总线周期,然后释放系统总线。因此,这种方式又被称为总线周期窃取方式。第8页,共23页,编辑于2022年,星期六8.3.2 块传送方式 在这种工作方式下,一旦开始传送,就会一个字节一个字节的进行下去,直到把整个数据块全部传送完毕,才交出系统总线控制权。特点:数据传输效率高,DREQ有效电平只要保持到DACK有效,就能传送完整批数据,但整个数据块传送期间,CPU失去总线控制权,因而别的DMA请求也被禁止。第9页,共23页,编辑于2022年,星期六8.3.3 请
6、求传送方式 这种工作方式每传送一个字节后,8237A都对DREQ端进行测试,询问其是否有效。如果检测到DREQ端变为无效电平,则立刻“挂起”,停止DMA传送,但并不释放系统总线,测试过程仍然进行。当检测到DREQ端变为有效电平时,就在原来的基础上继续进行传送。由于请求传送方式在传送完一个字节的数据之后就询问DREQ信号是否有效,故又称询问传送方式。特点:DREQ信号一直有效时,则连续传送数据,只有当字节计数器由1减为FFFFH,或外部送来有效的信号,或DREQ变为无效时才结束DMA传送过程。第10页,共23页,编辑于2022年,星期六8.3.4 级联传送方式 在这种方式下,可以把一片8237A
7、(称为主片)和几片8237A(称为从片)进行级联,以便扩充DMA通道。图8-3所示为二级8237A级联时的情况 图8-3 二级8237A级联第11页,共23页,编辑于2022年,星期六8.4 8237A内部寄存器功能及格式8237A的内部可编程寄存器主要有10个,如下表所示。名 称位数数 量功能当前地址寄存器164 (每通道一个)保存在DMA传送期间的地址值,可读写当前字节计数寄存器164 (每通道一个)寄存当前字节数,初始值比实际值少1,可读写基地址寄存器164 (每通道一个)寄存当前地址寄存器的初始值,只能写基字节数寄存器164 (每通道一个)保存相应通道当前字(节)数的计数器的初值工作方
8、式寄存器84 (每通道一个)寄存相应通道的方式控制字,由编程写入命令寄存器81 (4个通道共用一个)寄存CPU发送的控制命令状态寄存器81 (4个通道共用一个)存放8237A各通道的现行状态请求寄存器41 (每通道1位)寄存各通道的DMA请求信号屏蔽寄存器41 (每通道1位)用于选择允许或禁止各通道的DMA请求信号暂存寄存器81 (每通道1位)暂存传输数据,仅用于存储器到存储器的传输第12页,共23页,编辑于2022年,星期六8.5 8237A的编程及应用8237A进行初始化编程的步骤如下:(1)输出主清除命令,使8237A处于复位状态,以接收新的命令;(2)写入工作方式寄存器,以确定8237
9、A工作方式和传送类型;(3)写入命令寄存器,以控制8237A的工作;(4)根据所选通道,输入相应通道当前地址寄存器和基地址寄存器的初始值;(5)输入当前字节计数器和基字节寄存器的初始值;(6)写入屏蔽寄存器;(7)写入请求寄存器,便可由软件DMA传送。否则,经过(1)(6)步编程后,由通道DREQ启动DMA传送过程。第13页,共23页,编辑于2022年,星期六【例8.1】在某一个系统中,用一片8237A设计了DMA传输电路,8237A的基地址为00H。要求利用它的通道0,从外设(如磁盘)输入一个1KB的数据块,传送到内存中6000H开始的区域中,每传送一个字节,地址增1,采用数据块连续传送方式
10、,禁止自动预置,外设的DMA请求信号DREQ和响应信号DACK均为高电平有效。初始化8237A的程序如下:第14页,共23页,编辑于2022年,星期六DMA EQU 00H ;8237A的基地址为00H;输出主清除命令OUT DMA+0DH,AL ;发总清除命令;将基地址6000H写入通道0基地址和当前地址寄存器,分两次进行MOV AX,6000H ;基地址和当前地址寄存器OUT DMA+00H,AL ;先写入低8位地址MOV AL,AHOUT DMA+00H,AL ;后写入高8位地址;把要传送的总字节数1K=400H减1后,送到基字计数器和当前字计数器MOV AX,0400H ;总字节数DE
11、C AX ;总字节数减1OUT DMA+01H,AL ;先写入字节数的低8位MOV AL,AHOUT DMA+01H,AL ;后写入字节数的高8位 第15页,共23页,编辑于2022年,星期六n;写入方式字:数据块传送,地址增量,禁止自动预置,写传送,选择通道nMOV AL,10000100B ;方式字nOUT DMA+0BH,AL ;写入方式字n;写入屏蔽字:通道0屏蔽位清0nMOV AL,00H ;屏蔽字nOUT DMA+0AH,AL ;写入8237An;写入命令字:DACK和DREQ为高电平,固定优先级,非存储器间传送nMOV AL,10000000B ;命令字nOUT DMA+08H,
12、AL ;写入8237An;写入请求字:通道0产生请求nMOV AL,04H ;请求字nOUT DMA+09H,AL ;将请求字写入8237A,用软件启动8237A 第16页,共23页,编辑于2022年,星期六n 3.8237A的应用n在PC/XT机中,用一片8237A-5构成DMA控制电路形成4个DMA通道,提供数据宽度为8位的DMA传输。使用固定优先级,所以通道0的优先级最高,通道3最低。这4个DMA通道的功能分配如下:n通道0 用于动态RAM的刷新n通道1 为用户保留n通道2 用于软盘DMA传送n通道3 用于硬盘DMA传送第17页,共23页,编辑于2022年,星期六n在PC/XT机进行软盘
13、或硬盘DMA传输时,先要对8237A-5进行编程。下面是ROM BIOS中的一段程序,名为DMA_SETUP,位于首地址为FEEC8H的内存中。它被读软盘、写软盘和软盘校验程序等调用,用来向8237A-5输入所要读写数据的20位首地址和字计数器初始值。调用前要求的入口参数是:nAL=DMA方式字(读=46H,写=4AH,校验=42H)。nDH=要传送的扇区个数。每个扇区的字节数基数为128,实际由磁盘驱动器的规格而定,可能是128,256,512或1024个,也就是说可能是128的1,2,4,8倍,表示成2的N次方,N分别为0、1、2、3。N存放在磁盘基值区DISK_BASE的第03号单元中,
14、可由它和DH中的扇区数计算出实际要传送的总字节数。第18页,共23页,编辑于2022年,星期六nES:BX=所读写数据的内存首地址(段地址:偏移量)nDMA_SETUP PROC NEARnPUSH CX ;保护CX的值nCLI ;关中断nOUT DMA+0CH,AL ;清除先/后触发器nPUSH AX ;延时,满足8237A I/O定时要求nPOP AXnOUT DMA+0BH,AL ;将AL中的方式字写入方式寄存器n;计算20位物理地址,结果的最高4位放在CH中,低16位放入AXnMOV AX,ES ;AX段基地址nMOV CL,4 ;循环次数nROL AX,CL ;AX循环左移4位nMO
15、V CH,AL ;AX的低8位暂存入CHnAND AL,0F0H ;AX的最低4位清零 第19页,共23页,编辑于2022年,星期六ADD AX,BX ;加上偏移量,形成16位地址(A15A0)JNC RLL ;无进位,转移INC CH;有进位,最高4位加1。至此形成了20位物理地址,低16位在;AX中,最高4位在CH的低4位中RLL:PUSH AX ;保存16位起始地址;将16位地址送到通道2基址和当前地址寄存器中OUT DMA+4,AL ;先写低字节MOV AL,AHOUT DMA+4,AL ;后写高字节;将最高4位地址预置到页面寄存器中MOV AL,CH ;最高4位地址AND AL,0F
16、H ;截低4位OUT 81H,AL ;置入页面寄存器(通道2,软盘DMA传送)MOV AH,DH ;取传输的扇区数送AHSUB AL,AL ;AL清零后,使AX=256扇区数SHR AX,1 ;将AX内容除以2后,AX=128扇区数;调用取软盘参数子程序,要求入口参数:BX=字节索引值(03号单元)2PUSH AX ;保存AX的值MOV BX,6;BX=字节索引值2CALL GET_PARM ;调用取参数子程序 第20页,共23页,编辑于2022年,星期六;调用后结果,AH=N,N可以是0,1,2或3,它表示所选软盘每扇区的字节数:0或;128,1为256,2为512,3为1024MOV CL
17、,AH ;基数值N由AH送CLPOP AX;弹出“128扇区数”送AXSHL AX,CL ;左移后,AXAXNDEC AX;传输总字节数减1PUSH AX ;保存此值(即基字计数值);将减1后的字节数送通道2基字和当前字计数器OUT DMA+5,AL ;先送高字节MOV AL,AHOUT DMA+5,AL ;后送高字节STI ;开中断POP CX;恢复计数值(基字计数值)POP AX;恢复低16位起始地址 第21页,共23页,编辑于2022年,星期六;将基地址和基字计数器值相加,判别是否有进位,若有,表示超出64K,出错;因为DMA传送过程中,页寄存器的值是不变的,8237A只允许在64K范围内变化ADD AX,CX ;相加,根据结果建立进位位CFPOP CX ;恢复进入子程序时保护的CX值MOV AL,02HOUT DMA+0AH,AL ;清除通道2(软盘DMA传送)的屏蔽位RET ;返回,若CF=1,则64K溢出,应减少传送的扇区数,字组;的传送要分块进行DMA_SETUP ENDP 第22页,共23页,编辑于2022年,星期六 本章内容到此结束本章内容到此结束 谢谢各位谢谢各位 !第23页,共23页,编辑于2022年,星期六
限制150内