1、微机通过输入输出接口与外部设备相连接,这些接口一般可分为并行接口和串行接口两种,在实际应用中,并行通信常采用Intel公司的8255A作为接口芯片,而串行外设与微机系统相连,常采用串行接口芯片8251A。,第8章 常用接口芯片,在微机系统中,除了I/O 接口外,往往还需要一些专业功能的接口芯片,以增强系统的综合处理能力。例如,用于定时和对脉冲信号进行计数的可编程定时器/计数器芯片8253;在不需要处理器干预的情况下,用于存储器和接口之间直接进行数据传输管理的DMA控制器芯片8237A。,第8章 常用接口芯片,微型计算机经常要对外部事件进行定时控制或对外部事件发生的次数进行记数,即定时或计数控制
2、。一般采用两种方法,软件法和可编程定时/计数器法。后者构成一个方便灵活的定时/计数电路。这种电路不仅定时值和定时范围可由程序设置,而且具有多种工作方式,可以输出多种控制信号,具备较强的功能。,8.1 可编程定时计数器8253/8254,在设定了定时值及计数范围后,定时/计数器就可以脱离CPU独立进行定时或计数,完全不占用CPU的资源。 8254是8253的升级产品,它的引脚和8253完全相同,凡是使用8253的系统,均可由8254来取代。8254的工作频率比8253高,它还可通过读回命令来读取状态寄存器的当前内容以及计数器的值。,8.1 可编程定时计数器8253/8254,8253具有3个功能
3、相同的16位减法计数器T0、T1和T2,可进行二进制或十进制的计数/定时操作。通过编程可以选择多种工作方式和计数初值,可以方便地与PC总线连接。 8253的内部结构如图所示,主要由数据总线缓冲器、读/写逻辑、控制寄存器及三个功能相同的计数器组成。,8.1.1 8253的内部结构及其外部引脚,8253内部结构图,8.1.1 8253的内部结构及其外部引脚,(1)数据总线缓冲器 该缓冲器为三态、双向的8位缓冲器,用于将8253与系统数据总线相连接。CPU执行I/O 指令时通过缓冲器发送或接收数据,写入8253控制字、装入计数初值或读出当前计数值。 (2)读/写逻辑 读/写逻辑电路的功能是接收来自C
4、PU的控制信号,包括读、写信号和地址信号,然后产生控制整个芯片工作的控制信号。,8.1.1 8253的内部结构及其外部引脚,(3)控制寄存器 每个计数器都有1个控制寄存器,只能写入,不能读出,用于接收CPU送来的方式控制字。控制字决定了计数器的工作方式、计数形式和计数初值写入方式等。 (4)计数器0计数器2 三个计数器内部结构完全相同,每个计数器中都有一个16位减法计数器,可对二进制数或十进制数的BCD码进行计数。每个计数器都有时钟输入CLK、门控输入GATE和输出OUT引脚。,8.1.1 8253的内部结构及其外部引脚,8253引脚图,8.1.1 8253的内部结构及其外部引脚,8253端口
5、选择表,8.1.1 8253的内部结构及其外部引脚,8253的工作方式可以通过编程序设定,将给定的工作方式控制字写入控制寄存器,就可以选定8253的计数通道,并规定计数通道的工作方式,读写格式和计数数制。8253的控制字如图所示。,8.1.2 8253的控制字,8253的控制字格式,8.1.2 8253的控制字,SC1SC0 :计数通道选择位。8253的3个计数器是完全独立的,所以需要有3个控制寄存器存放各自的控制字,但是这3个控制字寄存器的地址是惟一的,即A0A1=11所对应的地址。所以将控制字的最高2位SC1和SC0用于选择使用哪个计数器,指明该控制字将指挥哪个计数器工作。,8.1.2 8
6、253的控制字,RL1RL0:读/写操作位。它规定了数据读写格式。 RL1RL0 00时,是计数值锁存操作。在计数过程中读计数值时,需要先送出锁存命令,再读取计数值。 M2M1M0:工作方式位。它用来指定所选择计数器的工作方式,8253共有6种工作方式,即方式0方式5,每种工作方式都对应各自的工作流程、计数器的输出和门控信号。 BCD:计数类型位。用以确定计数是采用二进制计数还是十进制计数。,8.1.2 8253的控制字,根据计数器启动计数的方式的不同和计数结束后输出波形的不同,8253有6种工作方式可供选择。 1. 方式0(计数结束产生中断) 8253工作于方式0时,CLK端作为计数输入信号
7、,OUT端为输出信号,当减1计数器减到零时,OUT输出高电平。,8.1.3 8253工作方式与操作时序,8253工作方式0时序,8.1.3 8253工作方式与操作时序,当GATE为1时,写入控制字后OUT信号立即变为低电平。将计数初值N写入计数初值寄存器后,从下一个CLK脉冲的下降沿开始进行减1计数,计数期间OUT端一直维持低电平,直到计数器减到零,OUT端变为高电平,并保持到重新写入计数初值或复位。OUT端输出的高电平可以作为中断请求信号使用。,8.1.3 8253工作方式与操作时序,2方式1(可编程单稳脉冲方式) 方式1可以输出一个宽度可编程控制的负脉冲,并由GATE门控信号的上升沿启动计
8、数器。 写入控制字后,OUT端即输出高电平。将计数初值N写入计数初值寄存器后,计数器并不开始计数,而是要等到门控信号GATE的上升沿到来后的下个CLK脉冲的下降沿到来时才开始计数。此时输出OUT变为低电平,直至计数器计数减到0,计数过程结束,输出端OUT变为高电平。在这个过程中,OUT端的输出为单稳态负脉冲,其宽度为N个CLK脉冲周期。,8.1.3 8253工作方式与操作时序,8253工作方式1时序,8.1.3 8253工作方式与操作时序,3方式2(频率发生器) 方式2能在OUT端输出连续的周期性负脉冲信号,又称为频率发生器方式。其OUT端输出负脉冲的宽度等于1个CLK计数时钟周期,输出脉冲的
9、周期等于N(计数初值)个CLK计数时钟周期。在计数过程中,CPU重新写入初值时,现行的计数过程不受影响,直到下一次计数时,计数器才按新的计数值进行计数操作。,8.1.3 8253工作方式与操作时序,8253工作方式2时序,8.1.3 8253工作方式与操作时序,4方式3(方波发生器) 方式3的操作也是一种连续计数的工作方式,只是OUT端输出的是方波,当计数值N为偶数,则输出对称的方波、前N/2个计数期间OUT输出高电平,后N/2个计数期间输出低电平;当N为奇数,则前(N+1)/2计数期间输出高电平;后(N1)/2计数期间输出低电平。计数器当前值减到0时计数器从新装入计数初值,开始新一轮计数。,
10、8.1.3 8253工作方式与操作时序,8253工作方式3时序,8.1.3 8253工作方式与操作时序,5方式4(软件触发方式) 方式4与方式0非常类似,写入计数初值后,在下一个时钟脉冲的下降沿开始计数。然后计数开始,当计数减到0时,由OUT输出一个时钟周期宽度的负脉冲,计数器停止工作。 当门控GATE信号为高电平时,写入8253控制字后,OUT输出立即变高电平,写入计数初值后即开始计数(软件触发),当计数器减到0时输出1个时钟周期的负脉冲。计数器停止计数。,8.1.3 8253工作方式与操作时序,8253工作方式4时序,8.1.3 8253工作方式与操作时序,6方式5(硬件选通方式) 方式4
11、与方式0非常类似,写入计数初值后,在下一个时钟脉冲的下降沿开始计数。然后计数开始,当计数减到0时,由OUT输出一个时钟周期宽度的负脉冲,计数器停止工作。 当门控GATE信号为高电平时,写入8253控制字后,OUT输出立即变高电平,写入计数初值后即开始计数(软件触发),当计数器减到0时输出1个时钟周期的负脉冲。计数器停止计数。,8.1.3 8253工作方式与操作时序,8253工作方式5时序,8.1.3 8253工作方式与操作时序,1初始化的编程 对8253初始化编程包括写入控制字和写入计数初值两个步骤: (1)先将方式控制字写入计数器的控制寄存器,以确定该计数通道的工作方式。 (2)写入定时或计
12、数的初值。如果计数值为16位,则要用两条输出指令完成初值的设置,即先写低字节,再写高字节,并注意写入正确的计数通道地址。,8.1.4 初始化编程与读输出锁存器,在不需要门控信号GATE 触发的方式中,写入计数初值计数就开始了。 例如,对计数器0 初始化,使其工作于方式1,按二进制计数,计数值为5080H。计数值低8位为80H,高8位为50H,假设端口地址为2A0H2A3H,则初始化程序为:,8.1.4 初始化编程与读输出锁存器,MOV DX,2A3H ;控制端口地址为2A3HMOV AL,32H ;控制字为00110010B OUT DX,AL ;送控制字到控制字寄存器MOV DX,2A0H
13、;计数器0端口地址为2A0HMOV AL,80HOUT DX,AL ;先写低8位计数值到计数器0MOV AL,50HOUT DX,AL ;再写高8位计数值到计数器0,8.1.4 初始化编程与读输出锁存器,2读输出锁存器 CPU可用指令读取8253任通道的计数值,读到的是执行指令瞬间的值。因为8253是16位的,要分两次读至CPU,因此若不锁存的话,在前两次执行输入指令的过程中,计数值可能已经变化了。锁存当前计数值有两种方法: (1)利用GATE信号使计数过程暂停。 (2)利用控制字将待读计数值锁存至锁存器。,8.1.4 初始化编程与读输出锁存器,这种方法通过写入控制字=00,使其不受执行计数单
14、元的变化而变化,保证CPU读出一个稳定的数值。读输出锁存器的值,也有读8位和读16位的问题,若是读16位的数据,分两次读出,先读低字节,再读高字节,即执行两次输入指令。CPU 读取此锁存值后,锁存器自动解除。,8.1.4 初始化编程与读输出锁存器,例如:要读取上面例子中计数器0的16位计数值,采用锁存器锁存方式的程序为: MOV AL,00H ;锁存计数通道0的控制字00H MOV DX,2A3H ;控制字送控制端口 OUT DX,AL MOV DX,2A0H IN AL,DX ;读取计数器0的低8位数据XCHG AL,AH ;暂存AH IN AL,DX ;读取计数器0的高8位数据XCHG A
15、L,AH ;AX中为计数器0的16位计数值,8.1.4 初始化编程与读输出锁存器,18253在PC机上的应用 IBM PCXT机使用一片Intel 8253,3条计数通道分别用于日时钟计时、DRAM刷新定时和扬声器发声。IBM PCAT使用与8253兼容的Intel 8254,在AT机的连接使用也与XT机一样。三条计数器通道的时钟输入CLK均连接到频率为1.193l8MHz的时钟信号,周期为0.838s。,8.1.5 8253应用举例,(1)计数器0的应用 门控信号GATE0接+5V为常启状态。OUT0输出接8259A的IRQ0,用做XT的日时钟的中断请求信号。设定计数器0为方式3,计数值写入
16、0,产生最大的计数初值为65536,因此输出信号频率为18.206Hz,即每秒产生182次中断请求,或者说每隔55ms申请一次日时钟中断。,8.1.5 8253应用举例,初始化程序如下:MOV AL, 36H ;设定计数器0为工作方式3, 采用二进制计数,以先低后 高字节顺序写人计数值OUT 43H, AL ;写入方式控制字MOV AL, 0 ;计数初值为0OUT 40H, AL ;写入低字节计数值OUT 40H, AL ;写入高字节计数值,8.1.5 8253应用举例,(2)计数器1的应用 门控GATE1接+5V为常启状态。输出OUT1从低变高使触发器置1,Q端输出一高电平信号,作为内存刷新
17、的请求信号,一次刷新结束,响应信号将触发器复位。 DRAM每个单元要求在2ms内必须刷新次。实际芯片每次刷新操作完成512个单元,所以经过128次刷新就能将全部芯片的64KB刷新一遍。由此可算出每隔2ms12815.6us进行次刷新操作。,8.1.5 8253应用举例,(3)计数器2的应用 微机系统中,计数通道2的输出加到扬声器上并控制其发声,作为机器的报警或伴音信号。门控GATE2接并行口位,用它控制通道2的计数过程。在XT机中是并行接口电路8255的端口位,受IO端口地址61H的位控制。输出OUT2经过一个与门,这个与门受位控制。受IO端口地址61H的位控制,XT机中是8255的位。所以扬
18、声器可由或分别控制发声。,8.1.5 8253应用举例,8255A是Intel80x86系列微处理机的配套并行接口芯片,它可以为CPU与外设之间提供并行输入/输出的通道。8255A有三个8位的并行I/O口,可通过编程设置多种工作方式,通常不需要附加外部电路,在中小系统中有着广泛应用。具备较强的功能。,8.2 可编程并行I/O芯片825SA,8255A是一个有40条引脚的双列直插式芯片,主要有3个数据输入/输出端口,即A口、B口和C口,还包括A组控制器和B组控制器、数据缓冲器和读写控制逻辑。,8.2.1 8255A芯片内部结构及其功能,8.2.1 8255A芯片内部结构及其功能,1. 输入/输出
19、端口A、B、C 8255A内部包含3个8位的输入/输出端口,通过外部的24根引脚与外设交换数据,24根引脚分别是PA7PA0,PB7PB0和PC7PC0。端口C可分成两个4位端口,分别与端口A和端口B配合工作,通常是将端口A和端口B定义为输入输出的数据端口,而端口C可作为状态或控制信息的传送端口。,8.2.1 8255A芯片内部结构及其功能,2. A组和B组控制器 端口A与端口C的高4位(PC7PC4)构成A组,由A组控制器实现控制功能,端口B与端口C的低4位(PC3PC0)构成B组,由B组控制器实现控制功能。它们各有一个控制单元,可接收来自读写控制部件的命令和CPU通道数据总线(D7D0)送
20、来的控制字,并根据它们来定义各个端口的操作方式。,8.2.1 8255A芯片内部结构及其功能,3.数据总线缓冲器 三态双向8位数据缓冲器,是8255A与系统总线的接口。它直接与CPU的数据总线相连,实现CPU与8255A接口之间的信息传递,与此关联的引脚是数据线D7D0。CPU执行输出指令时,可将控制字或数据通过数据总线缓冲器传送给8255A;CPU执行输入指令时,8255A可将状态信息或数据通过总线缓冲器传送给CPU。,8.2.1 8255A芯片内部结构及其功能,4.读写逻辑控制 读/写控制逻辑是8255A内部完成读/写控制功能的部件,它接收来自CPU的控制信号,并根据这些信号向片内各功能部
21、件发出操作命令。,8.2.1 8255A芯片内部结构及其功能,8.2.1 8255A芯片内部结构及其功能,8255A提供如下三种工作方式: 方式0:基本输人/输出方式。 方式1:选通输人/输出方式。 方式2:双向传送方式。 端口A可工作于上述三种工作方式,端口 B只可工作于两种方式(方式0和方式1),端口C只可工作于方式0。,8.2.2 8255A控制字及其工作方式,1. 8255A的控制字 (1)工作方式控制字 方式控制字用来决定8255A的工作方式。工作方式控制字可将三个端口分别定义为两组,即A口和C口的高4位为一组(A组),B口和C口的低4位为一组(B组)。当端口A工作于方式1、方式2或
22、端口B工作于方式1时,会使用端口C的某些位作控制信号用,这时就需要使用一个专门的置位复位控制字来对控制端口C的各位分别进行置位和复位操作。,8.2.2 8255A控制字及其工作方式,8255控制字格式,8.2.2 8255A控制字及其工作方式,(2)置位复位控制字 置位复位控制字可对端口C的任意一位进行置位或复位的操作复位操作。,8.2.2 8255A控制字及其工作方式,2. 8255A的工作方式 (1)工作方式0(基本输入/输出方式) 工作方式0只能完成简单的并行输入输出操作,CPU可从指定端口输入信息,也可向指定端口输出信息,适用于无条件输入/输出方式或查询输入/输出方式。A口、B 口、C
23、 口均可工作在此方式下,其中端口C被分成两个4位端口,可分别被定义为输入或输出端口。CPU与三个端口之间交换数据可直接由CPU执行IN和OUT指令来完成,而不提供任何“握手”信息。,8.2.2 8255A控制字及其工作方式,(2)工作方式1(选通输入/输出方式) 工作方式1是一种选通输入/输出方式,在这种工作方式下,A口和B 口数据输入/输出操作要利用C口所提供的选通信号和应答信号。,方式1下,A、B口均为输入的信号定义,8.2.2 8255A控制字及其工作方式,方式1下,A、B口均为输出的信号定义,8.2.2 8255A控制字及其工作方式,(3)工作方式2(双向输入/输出方式) 8255A只
24、允许A口工作在方式2下,用来在两台处理机之间实现双向并行通信。端口A工作于方式2所需要的5个控制信号分别由端口C的来提供。 当端口A工作于方式2时,允许端口B工作于方式0或方式1完成输入输出功能。这时C口剩下的3位(PC2PC0)既可以作输入/输出线使用,也可以作B口方式1下的控制线。,8.2.2 8255A控制字及其工作方式,方式2下的信号定义,8.2.2 8255A控制字及其工作方式,并行接口都有多种的用途,可以连接外部设备,进行数据传送;也可以与其他计算机连接,进行数据通信。 Intel 8255A作为通用的并行接口电路芯片,具有广泛的应用,可以应用于打印机接口电路,可以用来连接简易键盘
25、,可以用于驱动LED数码管等等。,8.2.3 8255A的应用,【例】 如图所示,设8255A端口地址为2F802F83H,编程设置8255A的A组、B组均工作于方式0,A口输出,B口输出,C口高4位输入,低4位输出。然后,读入开关S的状态,若S打开,则使发光二极管熄灭;若S闭合,则使发光二极管点亮。,8.2.3 8255A的应用,MOV AL,88H ;8255B口方式0输出, C口高位输入 MOV DX,2F83H OUT DX,AL MOV DX,2F82H IN AL,DX ;读取C口状态到AL MOV DX,2F81H AND AL,20H JZ L1 ;条件成立时PC50,S闭合
26、MOV AL,0 OUT DX,AL JMP END1L1: MOV AL,40H OUT DX,ALEND1:HLT,8.2.3 8255A的应用,可编程串行接口芯片8251A是一种通用串行接口,适用于连接串行数据传输的外部设备。它能将CPU输出的并行数据转化为串行数据,然后一位接一位地传送给外部设备,也能将外部设备送来的串行数据转化为并行数据,送入CPU进行处理。,8.3 可编程串行接口芯片8251A,1基本功能 8251A是通用的同步异步接收发送器USART(Universal Synchronous Asynchronous Receiver and Transmitter)芯片,具有
27、独立的发送器和接收器,它能以单工、半双工和全双工的方式进行通信,并且提供了与MODEM连接的控制信号。,8.3.1 8251A的基本功能与内部结构,在同步方式下,可以编程设定内同步方式或外同步方式,并自动插入同步字符,传送字符的数据位可以定义为58位,波特率064Kbps可选择。 在异步方式下,可以自动产生起始位和停止位,并可以编程选择产生1、1.5或2位停止位,传送字符的数据位可以定义为58位,波特率019.2Kbps可选择。同步方式和异步方式都具有奇偶校验、帧错误和溢出出错检测电路。,8.3.1 8251A的基本功能与内部结构,2内部结构,8.3.1 8251A的基本功能与内部结构,(1)
28、发送器及发送控制电路 发送器将要发送的数据(字符)送到发送数据缓冲器中,再由发送缓冲器并行传送到发送数据移位寄存器中。 (2)接收器及接收控制电路 接收器将RXD线上的数据送至移位寄存器,经移位、奇偶校验和去掉停止位后,就得到了转换后的并行数据,再传送给接收数据缓冲器,同时输出RXRDY有效信号,通知CPU取走字符。,8.3.1 8251A的基本功能与内部结构,(3)数据总线缓冲器 由状态缓冲器、发送数据/命令缓冲器和接收数据缓冲器组成,是三态双向8位缓冲器,用作8251A和微机系统数据总线之间的接口。 (4)读写控制逻辑 (5)调制解调控制电路,8.3.1 8251A的基本功能与内部结构,8
29、.3.2 8251A的引脚,RESET:复位信号,高电平有效。当该信号为高电平时,8251A实现复位功能,内部所有寄存器都被置位初始状态。 RxRDY:接收器准备好信号,高电平有效。接收缓冲器收到一个数据字符,则RxRDY信号有效,通知CPU接收数据,若8251A 采用中断方式与CPU交换数据,则RxRDY信号可用作向CPU发出的中断请求信号。CPU取走接收缓冲器的数据后,RxRDY变为低电平。,8.3.2 8251A的引脚,SYNDET/BRKDET:同步检测/断缺检测信号,引脚具有双功能,高电平有效。 TxRDY:发送器准备好信号。若该信号有效,则CPU向8251A写入待发送的数据,825
30、1A将从CPU送来的并行数据锁存在数据发送缓冲器中。 TxE:发送器空信号,高电平有效。若该信号有 效,表示发送移位寄存器没有要发送的字符,CPU把要发送的下一个数据写入8251A后,TXE自动复位。,8.3.2 8251A的引脚,8.3.3 8251A的控制字,8251A是一个可编程的通用串行通信接口芯片,具体使用时,用户必须对它进行初始化编程。它有两类控制字:方式选择控制字和操作命令控制字。前者用于设定8251A的工作方式,后者使8251A处于规定的状态,准备接收或发送数据。,1.方式选择控制字 方式选择控制字可以分为四组,每组两位。,8.3.3 8251A的控制字,D1D0:确定工作方式
31、是同步方式还是异步方式。当D1D0 =00时,则为同步方式;D1D0的后三种组合用以选择输入时钟频率与波特率之间的系数。D3D2:用以规定同步传送时每个字符的位数。D5D4:用以规定要不要校验以及校验的方式。D7D6:在同步和异步方式时具有不同的意义。异步时用以规定停止位的位数;同步时用以确定是内同步还是外同步和同步字符的个数。,8.3.3 8251A的控制字,2.操作命令控制字 操作命令控制字用来使8251A处于规定的某种工作状态,以便接收或发送数据。,8.3.3 8251A的控制字,3.状态字 8251A的内部工作状态存放在状态寄存器中,CPU可以通过IN指令来读取8251A的状态字。,8
32、.3.3 8251A的控制字,D0:发送准备好TxRDY。一旦发送数据缓冲器空,则状态标志TxRDY置l。 状态位D1(RxRDY)、D2(TxE)、D6(SYNDETB)以及D7(DSR)的定义与其相应的引脚定义相同。D3:奇偶出错标志PE。D4:溢出出错标志OE。D5:帧出错标志FE,FE1表示当前产生了帧出错。,8.3.3 8251A的控制字,8.3.4 8251A的初始化编程,8251A是一个可编程的通用串行通信接口芯片,具体使用时,用户必须对它进行初始化编程。它有两类控制字: 方式选择控制字用于设定8251A的工作方式 操作命令控制字使8251A处于规定的状态,准备接收或发送数据。,
33、初始化要在8251A处于复位状态开始,以先写入方式控制字,再写入命令控制字实现。 8251A的方式选择控制字和操作命令字均无特征位标志,且都是送到同一个控制口地址,所以在向8251A写入方式选择控制字和操作命令控制字时,必须按一定的顺序,这种顺序是:复位,方式选择控制字,操作命令控制字1,操作命令控制字2,。,8.3.4 8251A的初始化编程,8.3.4 8251A的初始化编程,【例】若8251A采用同步传送方式、两个同步字符(18H)、内同步、偶校验;7 位数据位,启动发送、接收,试编写其初始化程序。设控制口地址为204H,数据口地址为200H。 MOV DX,0204H ;对控制口送工作
34、方式控制字 MOV AL,38H OUT DX,AL MOV AL,18H ;输入8251A两个同步字符 OUT DX,AL OUT DX,AL MOV AL,97H ;对8251A送命令控制字 OUT DX,AL,8.3.5 8251A的应用举例,直接存储器存取DMA (Direct Memory Access)是一种让数据在外设和内存之间(或者内存到内存之间)直接传送的方式。在DMA传送期间,CPU自己挂起,把总线控制权让出来,在DMA控制器的管理下,提供给外设和内存使用。DMA传送的关键是DMA控制器,它可以像CPU那样取得总线控制权。,8.4 DMA控制器8237A,DMA控制器在微机
35、系统中有两种工作状态:主动状态和被动状态。 在主动状态时,DMA控制器取代CPU而获得总线的控制权,向存储器和外设下达控制命令;在被动状态时,DMA接受CPU对它的控制和指挥,例如CPU对DMA 控制器的初始化编程和内部状态的读取。在复位后,DMA控制器自动设置为被动状态。,8.4 DMA控制器8237A,8237A是Intel公司推出的高性能可编程DMA控制器,它允许DMA传输速度高达1.6MB/s。 8237A与Intel公司的各种微处理器配合使用,可以实现外设直接访问系统的存储器,能提供多种可编程控制特性,增大了数据的吞吐量,从而大大改善了微型计算机的性能。,8.4 DMA控制器8237
36、A,8.4.1 8237A的功能与内部结构,1. 8237A芯片的主要功能 DMA控制器8237A一方面可以控制系统总线,另一方面又可以和其他接口一样,接受CPU对它的读/写操作,它具有以下功能: (1) 能够响应外设的DMA请求,使CPU暂停工作,接管总线控制权。 (2) 能够按节拍提供外设和存储器工作的各种控制信号。,(3) 有四个独立DMA通道,对每一个通道的请求都可以分别允许和禁止。每个通道传送数据的最大长度可以达到64KB。 (4) 有两种优先级管理方式:固定优先级和循环优先级。 (5) 具有四种基本的传送方式:单字节传送方式、数据块传送方式、请求传送方式和级联方式。 (6) 823
37、7A可以级联使用以扩展通道数。,8.4.1 8237A的功能与内部结构,2. 8237A的内部结构 8237A的内部结构由两部分构成:一部分是4个DMA通道以及与外设的连接;另一部分是读/写控制逻辑、控制寄存器组、锁存缓冲器和页面地址寄存器。 图中只给出了通道0的内部编程结构,通道1通道3与通道0相同。每个通道都包含一个基本地址寄存器、当前地址寄存器、基本字节计数器和当前字节计数器。,一个6位的方式寄存器(模式寄存器),一个1位的DMA请求触发器及一个1位的屏蔽触发器。同时,每个通道都有两个与外设相连的引脚。4个通道共用一个控制寄存器和一个状态寄存器。 读/写控制逻辑主要用于控制数据的传送方向
38、,控制寄存器组主要用于控制8237A的工作方式。使用8237A工作时,需要外接一个8位的地址锁存缓冲器,它通过可控的三态门连接系统地址总线A8A15。,8.4.2 8237A的引脚,8237A芯片采用40引脚双列直插封装。,8.4.3 8237A的工作模式,1.DMA的传送方式 (1)单字节传送方式 单字节传送方式是每次DMA传送只传输一个字节的数据,然后又把总线控制权还给CPU。下一次传送必须重新向CPU 提出请求才能进行,即使是连续地请求DMA操作,在两个字节传送中间至少也有一个总线周期是让CPU使用的。,(2)数据块传送方式 数据块传送方式是将一块数据的各字节连续传送,中间并不停顿,成块
39、传送过程中,即使把DMA请求(外设来的)信号撤去,也能保证连续传送。 (3)请求传送方式 请求传送方式也是一种成块传送方式,即要到一块数据全部传送完毕后才释放总线。 (4)级连方式 用于通过多个8237A级连来扩展通道。,8.4.3 8237A的工作模式,2.DMA的传送类型(1)DMA写传送:将外部输入的数据写入存储器。 (2)DMA读传送:将数据由存储器传送到外设。 (3)DMA校验:用于校验读或写传送功能,是一种空操作。 (4)存储器到存储器传送:通道0的地址寄存器设置为存储器源数据区地址,通道1的地址寄存器存放存储器目标地址,字节计数器为传送字节数,可通过软件启动传送。,8.4.3 8237A的工作模式,8.4.4 8237A在微机系统中的应用,对8237A控制器的4个通道安排如下: (1)CH0:用在系统板上,作为动态存储器的刷新控制。 (2)CH1:用于扩展选件上,为用户预留的DMA 通道。 (3)CH2:用于扩展选件上,作为软盘驱动器数据传送用的DMA控制。 (4)CH3:用于扩展选件上,作为硬盘驱动器数据传送用的DMA控制。,