第8章常用可编程并行接口芯片第8章常用可编程并行接口芯片1.可编程接口芯片的基本概念2.可编程并行接口芯片8255A3.可编程定时器/计数器芯片82534.DMA控制器可编程控制器1.DMA的基本概念概述DMA数据传送的基本过程2.可编程DMA控制器8237A可编程DMA控制器8237A引脚和结构8237A初始化编程8237A应用举例1、DMA的基本概念概述直接存储器存取方式,即DMA(DirectMemoryAccess)方式,存储器与I/O设备之间的数据传送在DMA控制器(又称DMAC)的管理下直接进行,而不经过CPU。这种方式大大提高了传送数据的速率,但控制电路复杂,适于大批量高速度数据传送的场合。2、DMA数据传送的基本过程DMA控制器在系统中的地位DMA控制器在系统中有两种工作状态:主动态与被动态;并处在两种不同的地位:主控器与受控器。在主动态时,DMAC取代处理器CPU,获得了对系统总线(AB、DB、CB)的控制权,成为系统总线的主控者,向存储器和外设发出各种信号,以控制在两个存储实体间的信息传送。以存储器和I/O外设之间传送数据为例,当DMA写操作时,数据由外设传到存储器,它发出和信号;DMA读操作时,数据从存储器传送到外设,它发出和信号。在被动态时,它接受CPU对它的控制和指挥。例如:在对DMAC进行初始化编程以及从DMAC读取状态时,它就如同一般I/O芯片一样,受CPU的控制,成为系统CPU的受控者。一般当DMAC加电或复位时,DMAC自动处于被动DMA状态。也就是说在进行DMA传送之前,必须由CPU处理器对DMAC编程,以确定通道的选择、数据传送模式和类型、内存首地址、地址递增还是递减以及所需要传送的字节数等参数。在DMA传送完毕后,需要读取DMAC的状态。这些时候DMA控制器是CPU的从设备。DMA工作过程(1)外设准备好数据后向DMAC发出DMA请求DREQ;(2)DMAC经过内部的判优和屏蔽处理后,向总线仲裁机构发出总线请求信号HRQ,请求占用总线。即DMAC将此请求传递到CPU的总线保持端HOLD,向CPU提出DMA请求;(3)CPU在完成当前总线周期后检测HOLD,在非总线封锁条件下,对DMA请求作出响应;一是CPU将地址总线、数据总线、控制总线置高阻,放弃对总线的控制权;二是CPU送出有效的总线响应信号HLDA加载至DMAC,告之可以使用总线;DMA数据传送的基本过程(1)(4)到有效的总线响应信号后,向外设送出DMA应答信号DACK,通知外设做好数据传送准备,同时占用总线,开始对总线实施控制;(5)DMAC送出内存地址和对内存与外设的控制信号,控制外设与内存或内存与内存之间的数据传送;(6)DMAC通过计数控制将预定的数据传送完后,一方面,向外设发出传送结束信号,另一方面,向CPU发出无效的HOLD信号,撤消CPU的DMA请求;(7)CPU收到此信号后,送出无效的HLDA,并重新开始控制总线,实现正常的总线控制操作。在DMA传送期间,HRQ信号和HLDA信号一直有效,直至DMA传送结束。DMA数据传送的基本过程(2)3.DMA传送与中断传送比较(1)(1)DMA传送比中断传送的速度快。DMA传送一个字节只占用CPU的一个总线周期;中断方式传送是由CPU通过程序来实现的,每次执行中断服务程序,CPU要保护断点,在中断服务程序中,需要保护现场和恢复现场,需要执行若干条指令才能传送一个字节。3.DMA传送与中断传送比较(2)(2)DMA响应比中断响应的速度快。中断方式在CPU的当前指令(一条指令需要执行若干个总线周期)执行完才能响应中断请求;DMA方式是在CPU当前指令的一个总线周期执行完就响应DMA请求。(3)请求方式中断请求分为外部中断(由外部硬件产生的)和内部中断(由执行指令产生的);DMA请求也由两种方式:可以由硬件发出,也可以由软件发出。2.可编程DMA控制器8237AIntel8237A是Intel系列中高性能的可编程DMA控制器,它有4个独立的通道,每通道均有64K的寻址能力,并且还可以用级联方式扩展更多的通道。允许在外设与存储器以及存储器与存储器之间交换数据,数据传输率可达1.6Mb/S,提供多种控制方式和操作模式。在8086(88)系统中,DMAC选用的是一片可编程器件Intel8237A-5。8237A与CPU的接口电路8237A与外设的接口电路A0~A3:双向、三态。作为输入地址信号,用来选择8237A的内部寄存器。当8237A作为主控芯片用来控制总线进行DMA传送时,输出地址线的最低4位。A4~A7:三态输出。在DMA传送过程中,送出A4~A74位地址信号。DB0~DB7:双向、三态数据总线,与系统的数据总线相连。在CPU控制系统总线时,可以通过它们对8237A编程或读出8237A内部寄存器的内容。ADSTB(addressstrobe):地址选通、输出信号,高电平有效,用来将从DB0~DB7输出的高8位地址A8~A15锁存到地址锁存器。AEN(addressenable):地址允许、输出信号,高电平有效。在DMA传送期间,该信号有效时,禁止其它系统总线驱动器使用系统总线,同时允许地址锁存器中的高8位地址信息送上系统地址总线。HRQ(holdrequest):保持请求信号,输出,高电平有效。在仅有一块8237A的系统中,HRQ通常接到CPU的HOLD引脚,用来向CPU请求对系统总线的控制权。如果通道的相应屏蔽位被清除(为0),也就是说DMA请求未被屏蔽,只要出现DREQ有效信号,8237A就会立即发出HRQ有效信号。在HRQ有效之后,至少等待一个时钟周期后,HLDA才会有效。HLDA(holdacknowledge):保持响应输入信号,高电平有效。来自CPU的同意让出总线响应信号。它有效表示CPU已经让出对总线的控制权,把总线的控制权交给DMAC。DREQ0~DREQ3(DMArequest):DMA请求(通道0~3)输入信号。有效电平,可由编程设定。复位时使它们初始化为高电平有效。这4条DMA请求线,送到各个通道的请求信号。在固定优先权时,DREQ0的优先权最高,DREQ3的优先权最低。可编程设定的。DACK0~DACK3(DMAacknowledge):DMA响应输出信号,分别对应通道0~3。该信号是一个有效电平可编程的输出信号。复位时使它们初始化为低电平有效。8237A用这些信号来通知各自的外部设备已经被授予一个DMA周期了。/IOW:双向三态低电平有效的I/O写控制信号。CPU控制总线时,CPU用它把数据写入8237。DMA操作期间,由8237发出,作为对I/O设备写入的控制信号。/IOR:双向三态低电平有效的I/O读控制信号。除/IOR用来控制数据的读出外,其双重作用与/IOW一样。/MEMW:三态输出低电平有效的存储器写控制信号。在DMA传送期间,由该端送出有效信号,控制存储器的写操作。/MEMR:三态输出低电平有效的存储器读控制信号。含义与/MEMW类似。CLK:时钟输入,用来控制8237内部操作定时和DMA传送时的数据传送速率。/CS:片选信号,低电平有效输入信号。RESET:复位信号,高电平有效输入信号。复位有效时,将清除命令、状态、请求、暂存寄存器和先/后触发器,并清除字节指示器和置位屏蔽寄存器。复位之后,8237A处于空闲周期,它的所有控制线都处于高阻状态,并且禁止所有通道的DMA操作。复位之后必须重新对8237A初始化,它才能进入DMA操作。READY:准备好输入信号,当选存储器I/O设备速度比较慢时,可用这个异步输入信号使存储器或I/O读写周期插入等待状态,以便适应慢速内存或外设。/EOP:过程结束,低电平有效的双向信号。8237A允许用外部输入信号来终止正在执行的DMA传送。通过把外部输入的低电平信号加到8237A的/EOP端即可做到这一点。另外,当8237A的任一通道传送结束,到达计数终点时,8237A会产生一个有效的/EOP输出信号。一旦出现/EOP,不管是来自内部还是外部的,都会终止当前的DMA传送,复位请求位,并根据编程规定(是否是自动预置)而做相应的操作。在/EOP端不用时,应通过数千欧的电阻接到高电平上,以免由它输入干扰信号。DMA8237A工作过程8237A的工作方式有四种工作方式(1)单字节传送方式(singletransfermode)(2)块传送方式(blocktransfermode)(3)请求传送方式(demandtransfermode)(4)级联方式(cascademode)DMA传送有三种类型DMA读传送:指把数据由存储器传送至I/O接口(可简记为M→I/O)操作时先由MEMR有效从存储器读出数据放在数据总线上,然后再由IOW有效把数据写入I/O接口;DMA写传送:指把数据由I/O接口传送至存储器操作时先由IOR有效从I/O接口读出数据放在数据总线上,然后再由MEMW有效把数据写入存储器.校验传送也被称为假传送(pseudotransfers)。在校验传送时,存储器和I/O接口的读、写控制信号均处于无效状态,所以实际上并不进行真正的数据传送。这种传送类型一般是用于对DMAC器件测试时使用。1.8237A的内部结构8237A由三部分组成:3个基本的控制逻辑单元三个缓冲器I/O缓冲器1I/O缓冲器2输出缓冲器12个内部寄存器组(1)控制逻辑单元①定时和控制逻辑单元。它根据初始化编程时所设置的工作方式寄存器的内容和命令,在输入时钟信号的定时控制下,产生8237内部的定时信号和外部的控制信号。②命令控制单元。其主要作用是在CPU控制总线时,即DMA处于空闲周期时(被动态),将CPU在编程初始化送来的命令字进行译码;而在8237进入DMA服务时,对设定DMA操作类型的工作方式字进行译码。③优先权控制逻辑。用来裁决各通道的优先权次序,解决多个通道同时请求DMA服务时可能出现的优先权竞争问题。(2)缓冲器①I/O缓冲器1:8位、双向、三态的缓冲器,用于与系统的数据总线接口。非DMA周期时,CPU向8237A送出的编程控制字、从8237A读取的状态字、当前的地址和字节计数器的内容都经过这个缓冲器;当DMA周期时,DMAC所送出的地址由这个缓冲器输出到地址锁存器锁存。②I/O缓冲器2:4位、双向、三态缓冲器。在CPU控制总线时,将地址总线的低4位A0~A3送入8237A进行译码后,选择8237A内部寄存器;在DMA周期时,它送出8237A寻址的存储器地址的低4位A0~A3。③输出缓冲器:4位、输出、三态缓冲器。在CPU控制总线时,呈高阻状态;在DMA控制总线时,它导通,由8237A提供的16位存储器地址的A4~A7通过它送出。(3)内部寄存器8237A有4个独立的DMA通道,有12个内部寄存器。8237的寄存器(1)当前地址寄存器(2)当前字节计数寄存器(3)基地址和基字节计数寄存器基寄存器的内容不能被CPU读出,而当前寄存器的内容可以被CPU读出。(4)模式寄存器(5)命令寄存器命令寄存器是四个通道公用的一个8位寄存器,用以控制整个8237的操作。(6)请求寄存器8237的每个通道除了可以响应硬件的DMA请求信号(DREQ)外,工作在块传送方式时也可以响应由软件发出的DMA请求。软件的DMA请求是:通过使相应通道的“请求位”(requestbit)置位来实现的,它等效于外部产生一个有效的DREQ信号。8237每一个通道有一位“请求位”,四个通道的请求位构成一个4位的请求寄存器。(7)屏蔽寄存器8237每个通道有一位“屏蔽位”(maskbit),当其通道的“屏蔽位”置1时,则外部对应的DREQ信号被屏蔽,不予响应,从而禁