7.1.1 I/O接口

7.1.1 I/O接口

I/O接口电路是介于主机和外设之间的一种缓冲电路。它实际上是连接外设和某种总线的逻辑电路的总称。它作为主机和外设进行信息交换的桥梁,在微机系统中起着重要的作用。但是,主机与外设交换信息时需要考虑它们之间的速度、信号电平、信号格式、时序等的匹配问题。

1.I/O接口的主要功能

I/O接口的作用是为主机提供外设的工作状态和数据,对外设传送主机发出的各种命令和数据。通过I/O接口可使主机与外设协调一致地工作。因此,I/O接口应具有如下功能。

·数据缓冲功能。

·设备选择功能。

·信号转换功能。

·对外设的控制和监测功能。

·中断请求与管理功能。

·可编程功能。

上述功能并非每种接口都要求具备,对不同配置和不同用途的微机系统,其接口功能也不相同。但前两种功能是一般接口都需要的。

2.I/O接口的编址方式

通常把I/O接口电路中能被CPU直接访问的寄存器或某些特定器件称为端口。一个I/O接口可能有几个端口,如命令口、状态口、数据口等。I/O端口的编址方式有两种,即与存储器统一编址和I/O单独编址。

两种编址方式各有优缺点。与存储器统一编址的优点是:无须专门的I/O指令,CPU可以像访问存储器那样访问I/O端口。其缺点是:端口占用了一部分存储空间。

I/O单独编址要求CPU有专门的I/O指令,其优点是:端口所需地址线少,地址译码器较简单;I/O指令执行所需时间少,指令长度短;I/O指令与存储器操作指令有明显的区别,使程序编制与阅读较清晰。其缺点是:增加了I/O读/写控制信号。

3.I/O接口与CPU之间的信息传送方式

主机与外设之间的信息传送实际上是CPU与接口之间的信息传送。在微机系统中,CPU与接口之间传送信息的方式有无条件传送、程序查询传送、中断传送和DMA传送。

(1)无条件传送

它适合于外设总是准备好的情况,主机在进行读/写操作时可以不必检查外设的状态。这种接口电路简单,传送速度不高。

(2)程序查询传送

该方式要求在数据传送前,CPU先检查外设的状态,当外设准备好时,CPU才可以向外设进行读/写;否则,CPU处于查询等待状态。这种方式也称为应答式传送方式,相应的状态信号称为握手信号。这种方式同样效率低,速度不高。

(3)中断传送

为了克服上述传送方式中CPU效率不高的缺点,采用中断传送方式。该方式是当某外设要求与CPU交换数据时,可向CPU发出中断请求,CPU在执行完当前指令后,即可中断当前任务的执行,并识别中断源,根据中断类型号转入相应的中断处理程序,以实现对请求中断的外设的管理。在中断处理结束时,恢复保存的现场与断点,继续执行原来的程序。这种方式实现了CPU与外设并行工作,大大地提高了CPU的效率。

(4)DMA传送

DMA传送方式又称为直接存储器存取方式,实际上就是在存储器与外设之间开辟一条高速数据通道,使外设与内存之间直接交换数据。这一数据通道是通过DMA控制器来实现的。在DMA传送期间,不需要CPU的干预,而是由DMA控制器控制系统总线,在其控制下完成数据传送任务。

4.I/O端口地址译码与地址分配

I/O接口电路在系统中必须有自己的地址,以便让CPU随时访问它们。I/O地址的生成一般是指地址信号A9~A0(或A16~A0)的高位经译码产生端口的片选信号,低位产生片内的寄存器地址。设计译码器时还要考虑 、AEN等信号。地址译码器可用一般的组合逻辑电路实现,也可用门电路与译码器等实现。

应当熟练掌握I/O地址译码器的设计,了解全译码电路和部分译码电路的区别。

当8位接口电路与8086 CPU连接时,低8位数据总线只能传送I/O端口为偶地址的数据,而高8位数据总线只能传送I/O端口为奇地址的数据。若I/O端口使用连续的地址,则必须附加一个16位的总线变换器。

X86微机系统可寻址的I/O地址空间为64 KB,但实际上PC系列微机的ISA总线支持的端口数目为1 024个,地址范围为000H~3FFH,使用的地址线为A9~A0。系统对1 024个端口地址进行了分配,详细地址分配表请参看本书对应教材《微机原理与接口技术(第3版)》中的说明。