2.2 输入/输出接口基础

为了完成一定的实际任务,微型计算机必须与外部世界进行广泛的信息交换,即与各种外设相连。常见的外设有键盘、鼠标、磁盘、CRT、打印机等,它们都是大家熟悉的输入/输出设备。在一些控制场合,还需要模/数转换器、数/模转换器、发光二极管、光电隔离器等,这些设备在信息格式、工作速度、驱动方式等方面彼此差别很大,所以不能直接与CPU相连,必须通过接口电路连接。I/O接口是处于系统与外设之间、用来协助完成数据传送和传送控制任务的一部分电路。

接口技术是用微型计算机组成一个实际应用系统的关键技术,任何一个微型计算机应用系统的研制和设计,实际上主要就是微型计算机接口的研制和设计。它包括硬件接口电路的设计和编制使这些电路按要求进行工作的驱动程序。

2.2.1 接口的基本概念

所谓接口,是指在两台计算机之间、计算机与外设之间、计算机内部各部件之间起连接作用的逻辑电路,是CPU与外界进行信息交换的中转站。外设是多种多样的,其输入/输出信息的形式和工作速度各不相同。输入/输出信息有数字信号、状态信号和控制信号。输入/输出信息速度也差别很大。按键输入时,每个字符的输入时间以秒为数量级,打印机为300字符/秒,而磁盘输入可达到250000比特/秒的二进制信息,如何把输入/输出信息的形式或工作速度不同的外设与高速CPU连接起来,就是计算机输入/输出接口所要研究的问题。

输入/输出技术是信息传送的控制技术,是一种采用软、硬结合的方法,实现CPU与外设之间协调与匹配,实现二者之间高效、可靠的信息传递的一门技术。

1.CPU和I/O设备之间的信号

计算机有各种用途,但不论用于何种场合,都离不开信息处理,所处理的信息,均要由输入设备提供,而处理后的结果数据,则要送给输出设备,以各种形式报告给用户。为了让外设按计算机的要求有次序地输入或接收数据,计算机的CPU就要能控制输入/输出设备的启动或停止,并了解它们当前的工作状态,从而送出相应的控制命令。

通常,我们把计算机与外设间的这种交换数据、状态和控制命令的过程统称为通信(Communication)。通信过程就是数据传输的过程,在这个过程中要传输的信息有数据信息、状态信息、控制信息。

(1)数据信息

CPU和外设交换的基本信息就是数据,数据通常为8位或16位。数据信息可分为以下三种类型。

① 数字量:它们是二进制数的形式或以ASCII码表示的数据及字符,通常是8位的。

② 模拟量:如果一个微型计算机系统是用于控制的,那么多数情况下的输入信息是现场连续变化的物理量,如温度、湿度、压力、流量等,这些物理量一般先通过传感器变成电压或电流,再经过放大、滤波,这样的电压或电流仍然是连续变化的物理量,而计算机无法直接接收和处理模拟量,要变成数字量,才能送入计算机;反过来,计算机输出的数字量要经过数字量往模拟量的转换,变成模拟量,才能控制现场。

③ 开关量:开关量可以表示两个状态,如开关的闭合和断开、电机的运转和停止等,这样的量只用1位二进制数表示就可以了。

上面这些数据信息,一般是由外设通过接口和CPU连接的。在输入过程中,数据信息由外设经过外设和接口之间的数据线进入接口,再到达系统的数据总线,从而送给CPU;在输出过程中,数据信息从CPU经过数据总线进入接口,再通过接口和外设之间的数据线送给外设。

外设和接口之间的数据信息可以是串行的,也可以是并行的,相应地要使用串行接口或并行接口。

(2)状态信息

状态信息反映了当前外设所处的工作状态,是外设通过接口往CPU传送的。

对于输入设备来说,通常用准备好(READY)信号来表明输入的数据是否准备就绪;对于输出设备来说,通常用忙(BUSY)信号表示输出设备是否处于空闲,如为空闲,则可接收CPU送来的信息,否则CPU应等待。

(3)控制信息

控制信息是CPU通过接口传送给外设的,CPU通过发送控制信息控制外设的工作,如外设的启动、停止就是常见的控制信息。

从含义上讲,数据信息、状态信息和控制信息各不相同,应该分别传送。但在微型计算机系统中,CPU通过接口和外设交换信息时,只有输入指令和输出指令,所以状态信息、控制信息也被广泛地视为一种数据信息,即状态信息作为一种输入信息,而控制信息作为一种输出信息,这样状态信息和控制信息也通过数据总线来传送。

但在接口中,这三种信息进入不同的寄存器。具体地说,CPU送往外设的数据或外设送往CPU的数据放在数据缓冲器中,从外设送往CPU的状态信息放在接口的状态寄存器中,而CPU送往外设的控制信息要送到接口的控制寄存器中。

2.设置I/O接口的原因

微处理器与I/O设备之间实现数据传输远不如存储器那么简单。因为存储器是由半导体电路芯片组成的,而且系统选用的存储器芯片的访问周期通常与系统时钟周期是同一个数量级,且存储器本身又提供数据缓冲的能力,所以微处理器一般只需两个时钟周期左右的时间,便能在总线上存取数据。而I/O接口设备品种繁多,几乎都离不开机电传动装置。微处理器在与I/O设备进行数据交换时,必须通过接口电路来连接,其主要原因有以下几个方面。

(1)速度不匹配

I/O设备的工作速度比微处理器慢得多,而且因设备种类不同,其速度差异较大,有每秒能传输几兆位的硬盘驱动器,但也有每秒仅传输100多个字符的串行打印机。

(2)时序不匹配

一般来讲,I/O设备上的信息处理都有自身的定时控制电路,以自己的速率传输数据,无法与处理机的时序取得同步。

(3)信息格式不匹配

在不同的I/O设备上,存储和处理信息的格式不同,有并行和串行之分,也有二进制位、ASCII码和BCD码之分。若在磁盘上存储信息,则还要按不同的磁道记录格式将选定的编码信息进行存取。这些信息格式都比微处理器与存储器间的数据格式复杂得多。

(4)信息类型与电平不匹配

不同的I/O设备处理的信号类型不同,它们或是数字信号,或是连续电流,或是其他模拟量,而且信号电平的幅值不一。

任何外设都是通过各自的接口连接到微机系统总线上的,不同类型的外设,应设置相应的接口电路连到系统总线上,以完成不同的功能。

3.接口的功能

接口电路是专门为解决CPU与外设之间的不匹配、不能协调工作而设置的,它处在总线和外设之间,一般应具有以下基本功能。

(1)对输入/输出数据进行缓冲、隔离和锁存

外设品种繁多,其工作原理、工作速度、信息格式、驱动方式都有差异。它不能直接和CPU总线相连,要借助于接口电路使外设和总线隔离,起缓冲、暂存数据的作用。在众多外设中,在某一时段仅允许被CPU选中的设备通过接口享用总线与CPU交换信息,而未选中的设备由于接口的隔离作用不能享用总线。

对输入接口,其内部都有起缓冲和隔离作用的三态门电路,只有当CPU选中此接口,三态门选通时,才允许选定的输入设备将数据送至系统数据总线,而其他未被选中的输入设备,此时相应的接口三态门“关闭”,从而达到与数据总线隔离的目的。

对于输出设备,由于CPU输出的数据仅在输出指令周期中的短暂时间内存在于数据总线上,故需在接口电路中设置数据锁存器,暂时锁存CPU送至外设的数据,以便使速度过慢的外设有足够的时间准备接收数据并进行相应的数据处理,从而解决主机“快”和外设“慢”之间的矛盾。

所以,根据输入/输出数据进行缓冲、隔离、锁存的要求,外设经接口与总线相连,其连接方法必须遵循“输入要三态、输出要锁存”的原则。

(2)对信号的形式和数据格式进行交换与匹配

CPU只能处理数字信号,信号的电平是0V和5V,而且提供的功率很小。而外设的信号形式多种多样,有数字量、模拟量(电压、电流、频率、相位)、开关量等。所以在输入/输出时,必须将信号转变为适合对方需要的形式。例如,将电压信号变为电流信号、将弱电信号变为强电信号、数字信号与模拟信号相互转换、并行数据与串行数据相互转换、配备校验位等。

(3)提供信息相互交换的应答联络信号

计算机执行指令时所完成的各种操作,都是在规定的时钟信号下完成的,并有一定的时序。而外设也有自己的定时与逻辑控制,但通常与CPU的时序是不相同的。外设接口就需要将外设的工作状态(例如忙、就绪、中断请求)等信号及时通知CPU,CPU根据外设的状态经接口发出各种控制信号、命令并传递数据。接口不仅控制CPU送给外设的信息,也能缓存外设送给CPU的信息,以实现CPU与外设间信息符合时序的要求,协调工作。

(4)根据寻址信息选择相应的外设

一个计算机系统往往有多种外设,但CPU在某一时间只能与一台外设交换信息,因此需要通过接口地址译码对外设进行寻址,以选定所需的外设,只有选中的设备才能与CPU交换信息;当同时有多个外设需要与CPU交换数据时,也需要通过外设接口来安排其优先顺序。

由此可见,I/O电路是外设和计算机之间传送信息的交换器件,也有人称它为界面,它使两者之间能很好地协调工作,每一个外设都要通过接口电路才能和计算机相连。

4.I/O接口的结构

在设计接口电路时,I/O接口电路与外设间交换的信息可以进一步进行划分,分为CPU与接口之间的信息及接口与外设之间的信息两部分。

(1)CPU与接口之间

CPU对接口的操作主要包括CPU对端口的初始化、发送命令(如读写命令)、选通端口等。所以CPU与接口之间的主要信息有数据信息、地址信息和控制信息。

(2)接口与外设之间

接口对外设的操作主要是与外设的数据传送、读出外设的状态及对外设的启动、停止等控制。所以,接口与外设之间的信息是数据信息、状态信息和控制信息。典型的I/O接口形式如图2-9所示,其中既有数据端口,又有状态端口及控制端口。每个I/O端口对应一个I/O地址。从硬件上看,端口可以理解为寄存器或缓冲器,CPU可以用I/O指令对其进行访问。接口电路占有三个I/O地址(也称端口地址),分别对应数据端口、状态端口和控制端口。数据端口可以是双向的,而状态端口只有输入端口,控制端口只有输出操作,有时后两个端口合用一个端口地址。用I/O读()或写()信号与地址组合后分别选择访问。

图2-9 典型的I/O接口形式

2.2.2 I/O接口的端口及编址

1.端口

所谓端口,是指I/O接口(包括芯片和控制卡)中供CPU直接存取访问的那些寄存器或某些硬件特定电路。一个I/O接口总要包括若干端口,除常见的数据端口、命令端口和状态端口外,还有特殊用途的端口,如方式控制端口、操作结果端口和地址索引端口等。端口的多少及相应的功能完全取决于与I/O接口所关联的I/O设备。但需要指出的是,一个端口可设定为只读(一般为状态和结果信息)、读写(一般为数据或命令信息)或只写(读出无意义,如方式控制、命令参数信息)。这些属性是在设计I/O接口功能时决定的,用户不能改变。

2.端口编址方式

既然端口可被微处理器访问,如同存储单元,那么每个端口也存在着编址的方式问题。在当今流行的各类微机中,对I/O接口的端口编址有两种方法:端口统一编址和端口独立编址。

(1)端口统一编址

端口统一编址的出发点是把每一个端口视为一个存储单元,并与存储单元一样统一编址,这样访问存储器的所有指令就均可用来访问I/O端口,不用设置专门的I/O指令。这种寻址方式又称为存储器映像寻址的I/O寻址方式。

端口统一编址方式实际上是把I/O地址映射到存储空间,作为整个存储空间的一部分,即系统把存储空间的一小部分划出来供外设用,大部分仍归存储单元使用,这就是存储器映像寻址方式名称的由来。

端口统一编址的优点:

① 微处理器的指令集中不必包含I/O操作指令,简化了指令系统的设计。

② 能用类型多、功能强的访问存储器指令,对I/O设备进行方便、灵活的操作。

③ I/O地址空间可大可小,能根据实际系统上的外设数目来调整。

端口统一编址的缺点:

① I/O端口占用了存储单元的地址空间,为了尽可能减少所占的内存空间,必须用全译码方式来形成I/O地址,使I/O地址译码电路变得较复杂。

② 访问存储器的指令一般要比I/O指令长一两个字节,这会延长输入/输出操作的时间。

(2)端口独立编址

端口独立编址的出发点是把I/O接口视为一个独立于存储空间的I/O空间,它们不占用存储空间,而用专门的输入指令和输出指令来访问这种独立地址空间的端口,这种寻址方式也称为I/O接口单独编址方式。

端口独立编址的优点:

① 将输入/输出指令和访问存储器的指令明显区分开,使程序清晰,可读性好。

② I/O指令长度短,执行速度快,也不占用内存空间。

③ I/O地址译码电路较简单。

端口独立编址的缺点:

① CPU指令系统中必须有专门的I/O接口输入和输出指令,这些指令的功能没有访问存储器指令的功能强。

② CPU要能提供区分存储器读/写和I/O接口读/写的控制信号。

由Motorola公司的微处理器6800、68000系列构成的微型机采用前一种方法;而由Zilog和Intel公司的微处理器Z80、Z800、8086/8088、80286、80386、80486、Pentium等系列构成的微型机都采用后一种方法。在微型计算机系统设计过程中,I/O端口采用何种编址方式是由CPU决定的,MCS-51单片机外部扩展的I/O接口和外部RAM采用统一编址方式。

2.2.3 I/O接口的发展

微型计算机接口技术的发展,基本上是与微处理器的发展同步的。伴随着微型计算机的发展,相应的接口技术及电路经历了以下几个阶段。

(1)简单接口

集成度较低,系统结构和指令系统都较为简单,但由于所涉及的接口技术原理具有普遍性,且价格低廉,使用方便,所以现在还在使用。

(2)可编程接口

集成度提高,可以设置其工作方式,通用性好,使用灵活。

(3)智能接口和通用外围接口

集计算机技术和接口技术于一体,可直接和外设相连,且外部的管理可通过外围接口的软件完成,从而把中央处理器从繁重的外设管理中解放出来,专门用于系统的主体操作,提高了系统的效率和数据的吞吐率。

(4)功能接口板

微型计算机的广泛应用加大了对接口的需求,总线标准又从电气特性、机械特性及通信协议等方面的功能为接口板的设计提高了保障。于是为缩短应用系统的开发研制过程,许多生产厂家、研究所、大专院校,为各类总线的微型计算机开发出越来越多的功能接口板。

总之,微型计算机接口技术发展较快,正沿着提高集成度、增强功能、加大灵活性和适应性、提高智能化程度的道路发展,将给用户带来更大的方便。