您好,欢迎来电子发烧友网! ,新用户?[免费注册]

当前位置:电子发烧友网 > 图书频道 > 电子 > 《微计算机原理》 > 第7章 8086系统设计

第5节 输入输出接口

                                                                                            第五节 输入输出接口 

  如第六章所述,CPU要通过接口电路才能和外设交换信息.一般在接口电路中要有输入输出数据锁存器和 缓冲器,要有状态和控制命令寄存器,还要有地址译码器和控制电路,以及中断控制逻辑电路.这样才能解决 CPU与外设时序匹配问题,对外设实施控制,保证CPU于外设正确可靠的交换信息.
  随着大规模集成电路的发展,生产了许多通用的可编程接口芯片,这些接口芯片按数据传送方式可分成 并行接口和串行接口两大类.如Z80PIO,I8255,MC6821均为并行接口芯片,而Z80SIO,I8251,I8250,MC6850等 均为串行接口芯片,本结只讨论并行接口芯片,有关串行接口芯片在接口电路一书中介绍.
  可编程并行接口芯片,在实现方法上各厂家虽各有不同,但器件的基本结构和基本功能大体相同,一般 有以下几个功能:
   (1)有两个或两个以上的含有锁存器和缓冲器的数据端口.
   (2)每个数据端口都有和CPU交换数据用的状态和数据信息,也有与外设交换信息用的状态和控制信息.
   (3)通常每个数据端口还具有能用中断方式与CPU交换信息所必需的电路.
   (4)选片和控制电路.
   (5)都有控制字寄存器,这些寄存器可由CPU写入.即用程序可选择端口,端口传送方向,交换信息的方法等.
  INTEL 8255A 是一个典型通用的可编程并行接口芯片,本节作详细介绍.

§7.5.1 8255A的内部结构 

8255A的内部结构如图7-31所示.由以下几部分组成:

                                                   
  1.数据总线缓冲器,这是一个双向三态缓冲器,是8255A与系统总线的接口,CPU与8255A之间的数据传送 ,状态和命令传送都通过它.
  2.读/写控制逻辑,它与CPU的地址总线A1,A0以及有关控制信号相连(RD,WR,RESET,IO/M),由它控制把CPU的控制命令或输出 数据送数据端口,或者将外设的状态和输入数据送CPU.CS片选信号,CS=0时允许CPU与8255A交换信息.RD 和WR读/写信号,RD=0时,CPU读入8255A的数据或状态.WR=0时,CPU将数据或状态送入8255A.RESET复位信号, RESET=1时,清除控制寄存器,并使所有端口为输入方式.A1,A0端口寻址信号,由此两位选择三个端口和一个 控制寄存器.表7-3说明了A1,A0和RD,WR及CS组合所实现的功能.

 

A1 A0 RD WR CS 功能
0 0 0 1 0 端口A->数据总线
0 1 0 1 0 端口B数据总线
1 0 0 1 0 端口C数据总线
0 0 1 0 0 数据总线端口A
0 1 1 0 0 数据总线端口B
1 0 1 0 0 数据总线端口C
1 1 1 0 0 数据总线控制字寄存器
* * * * 1 数据总线为三态
* * 1 1 0 数据总线为三态
1 1 0 1 0 非法状态

  3.数据输入端口A,B,C是三个8位输入输出端口.端口A具有一个8位数据输出锁存和缓冲器,一个8位数据输入锁存器.端口A具有一个8位数据输入/输出锁存缓冲器和一个8位数据输入缓冲器.端口C具有一个8位 数据输入缓冲器.通常端口A和B作为数据输入输出端口,端口C作为控制和状态信息端口,在方式控制字的 控制下,端口C可分为两个四位端口,每个端口包含一个四位锁存器.
  4.A组和B组控制电路,这是两组根据CPU送来的控制字控制8255工作方式电路,A组控制端口A和端口C的 高4位,B组控制端口B和端口C的低4位.
 

§7.5.2 工作方式 

  8255A有三种基本的工作方式,他们是方式0(MODE 0),基本输入/输出方式;方式1(MODE 1),选通输入/输出方式;方式2(MODE 2),双向传送.
  1.方式选择控制字
  使用8255A时要对8255进行初始化编程,CPU向8255A的控制寄存器输出一个方式选择控制字,由它来决定8255A三个功能和工作方式.控制字的格式如图7-32所示.可以分别选择端口A和端口B的工作方式.端口C则分成两部分,高四位随端口A,低四位随端口B,端口A可有三种工作方式,而端口B只能工作于方式0和方式1.
  2.按位置位复位功能
  端口C的每一位都可由输出指令置位或复位,这一功能主要用于控制,实现这一功能的控制字格式见图 7-33.要注意的是,端口C按位置位复位的控制字是写到控制寄存器的地址.例如,下面几条指令使端口C的 BIT 1置0,而使BIT 7置1,设控制寄存器地址为CNTRL.
   MOV AL,02H
   OUT CNTRL,AL ;置PC1为0
   MOV AL,0FH
   OUT CNTRL,AL ;置PC7为1


 

§7.5.3 8255A的工作方式 

1.方式0的功能

方式0是一种基本的输入或输出方式,在这种工作方式下,三个端口的每一个都可由程序设定为输入或 输出端口,但这种方式沒有规定固定的用于应答式的联络信号线,基本功能为:有两个8位端口和两个4位 端口(C),因此,输入输出可有16种不同的组合;任何一端可作为输入或输出,输出是锁存的,输入是不锁存的. 在这种方式下,CPU可用输入输出指令读或写,可用作无条件传送接口电路,也可用作条件接口传送电路, 此时端口C某些位作端口A和B的控制或状态位.方式0的输入输出时序如图7-34所示.

                                                         

                                                            
  输入时,当外设准备好一个数据,CPU执行一条输入指令便可从8255读入这个数据.但RD的宽度要大于300ns,而且地址信号要超前RD信号TAR,这样在RD有效后经TRD时间,数据即可稳定在数据总线上.
  输出时,CPU用输出指令将数据输出到8255数据输出锁存器,并传给外设,要求WR宽度大于400ns,且地址信号要超前WR信号TAW,并在WR信号结束后保持TWA时间(TWA大于70ns).另外输出数据必须在WR结束前TDW时间内有效(大于100ns),并在WR信号结束后保持TWA时间(接口).
2.方式1的功能
  这是一种选通的I/O方式,在这种方式时,端口A和B仍作为数据的输入输出端口,但同时规定端口C的某些 位用作控制或状态信息.在方式1工作时,三个端口分成AB两组,每组包含有8位数据口及三条控制和状态线. 每组即可输入也可输出.当端口A和B工作在方式1输入时,其控制字格式及信号连接如图7-35所示.

                                                            

其中各控制信号的意义如下:
  STB(Strobe):选通输入,低电平有效.这是由外设提供的输入信号,当其有效时,将输入设备送来的数据 送入输入锁存器.
  IBF:输入缓冲器滿信号,高电平有效,是8255的输出信号,当其有效时,表示数据已输入至输入锁存器,他 由STB信号置位,RD信号上升沿复位.
  INTR:中断请求信号,高电平有效,是8255的输出信号,向CPU申请中断请求.当STB,IBF和IBTE都为高电平 时被置为高,由RD信号下降沿清除.
  INTE A:端口A中断允许信号,由PC4的置位复位控制,PC4=1时允许中断.
  INTE B:由PC2的置位复位控制.
  方式1的输入时序见图7-36.当外设准备好数据,用STB信号把数据送入输入锁存器.STB的宽度至少为500 ns,STB的下降沿经过TSIB时间(TSIB<300ns),IBF信号有效,输给外设,阻止外设输入新的数据,也可供CPU 查询.STB信号结束后经TSIT向CPU发出INTR信号.CPU响应中断并转入中断服务程序,执行输入指令发出RD信号,把数据读入CPU,并清除INTR,使IBF变为低电平.

                                                                       

                                                                      

方式1输出工作情况如图7-37所示:

                                                                                  

控制信号如下:
  OBF(Output Buffer Full):输出缓冲器满信号,低电平有效,送给外设信号.当有效时,表示CPU已将数据送到输出锁存器,由WR上升沿置成低电平,ACK使其变高.
  ACK(Acknowlege):外设送来的响应信号,低电平有效,表示数据已被外设取走.
  INTR:中断请求信号,当外设已取走数据,向CPU中断请求,要求CPU送下一个数据,当ACK,OBF和INTE均为 高电平时,INTR变高,由WR的下降沿复位.
  INTE A由PC6置位复位,INTE B由PC2置位/复位.
  方式1的输出时序如图7-38.方式1用中断方式输出時,由CPU响应中断开始,在中断服务程序,CPU执行输出 指令时发出WR信号,将数据送到输出锁存器,在WR的上升沿产生OBF信号,由OBF将数据送到外设,外设收到数据 后,发回ACK信号,它使OBF变高,使INTR变高,又向CPU申请中断.

                                                                            
3.方式2的功能
  方式2可使外设在单一总线上即可接收数据也可发送数据.只有端口A有这种功能,端口C提供5位控制状态 信息。各控制信息信号的信息与方式1输入输出时信号意义相同.其中INTE A表示允许输出中断,由PC6置位/复位控制,INTE B允许输入时中断,由PC4置位/复位控制.
  方式2的工作时序就是方式1的输入时序与输出时序的组合,输入和输出都可请求中断.
  当端口A工作在方式2时,端口B可工作在方式0或方式1,当端口B工作在方式1时,PC0是INTRB,PC1是IBFB或 OBFB,PC2是INTE B,可以用输入指令读入端口C,检查各位的状态.
 

§7.5.4 8255A的应用 

  在IBM PC/XT中,有一片8255A三个端口全部工作在方式0,起电路如图7-40所示.

                                                                
                                                               
  1.PA0~PA7在加电自检时工作于输出状态,输出当前部件的标志信号,若检测到关键性故障停机时,测量PA口的电平可确定发生故障的部件.PA口主要输出下列被检部件标志:
  PA2 PA1 PA0
  0  0  1    BIOS累加和错
  0  1  0   8253错
  0  1  1    8237错
  1  0  0   前16KB RAM错
  1  0  1   8259错
  1  1  0   CRT適配器
  在正常的工作时,CPU通过PA口读取键盘输入扫描码.
  2.PB口输出系统内部控制信号,通过编程设置,可以控制系统内部某些电路的动作.
   PB0输出TIM2GATESPK信号,送到8253的GATE2,控制8253通道工作.
   PB1输出SPKDATA信号,控制扬声器发声.
   PB3输出控制对系统开关DIP的读取,当PB3=0时,允许PC口读取DIP的低四位,PB3=1时,允许PC口读取DIP的高四位.
   PB4输出ENBRAMPCK信号,是允许系统板RAM进行奇偶校验信号,送到奇偶校验电路.
   PB5输出ENABLE I/O CK信号,送到NMI控制电路,PB5=0时,允许I/O通道中奇偶校验结果送入NMI控制电路.
   PB6和PB7是键盘接口电路的控制信号.

  3.PC口读取系统内部状态,其中PC0~PC3读取系统配置开关DIP的设置状态,PC4读取扬声器的状态,PC5 读取8252的OUT2状态,PC6读取I/O通道中奇偶校验状态,PC7读取系统板上RAM奇偶校验的结果.