一、必要性

CPU 与外部设备交换信息是计算机系统中十分重要和十分频繁的操作。 而接口电路恰恰就是它们之间沟通的桥梁。作为接口电路,通常必须为外部设备提供几个不同地址的寄存器,每个寄存器称为一个I/O 端口。I/O 接口内部通常由数据、状态、控制这3类寄存器组成,CPU 可分别对数据、状态、控制这3种端口(port)寻址,并与之交换信息。这3种端口被简称为数据口、状态口、控制口。以上3种寄存器是I/O 接口电路中的核心部分,在较复杂的 I/O 接口电路中还包括有数据总线和地址总线缓冲器、端口地址译码器、内部控制器、对外联络控制逻辑等部分。

1、如果由 CPU 直接管理外设,则会使 CPU 完全陷入与相对运行速度超慢的外设打交道的沉重负担之 中,而不能正常工作;

2、由于外设有千万种,因此,在 CPU 与外部设备之间必须有起信息转换作用的部件;

3、需要解决 CPU 对于外设的选中问题及速度匹配问题。

二、接口电路的功能

从解决 CPU 与外部设备在连接时存在的矛盾的观点来看,CPU 与外设之间的接口一般 具有如下功能:

(1) 地址译码和设备选择功能

当 CPU 进行I/O 操作时,就要借助于接口的地址译码以选 定外设,保证每个时刻只允许被选中的I/O 接口通过数据总线与 CPU 进行数据交换或通信;而非选中的I/O 设备接口应呈高阻状态,与数据总线隔离。

(2) 信息的输入与输出功能

接口能够根据 CPU 发来的读/写控制信号决定当前进行的是输入操作还是输出操作,并且能据此从总线上接收 CPU 送来的数据和控制信息并传送给相应外设,或者将外设的数据或状态信息由接口送到总线上供 CPU 读入并处理。

(3) 信号转换功能

例如:"并→串”或者“串→并”的转换; A/D或 D/A 转换;TTL和CMOS间的电平信号的转换等。

(4) 对外设的控制和监测功能

接口电路能够接收 CPU 送来的命令字或控制信号,实施对外部设备的控制与管理。

(5) 中断或 DMA管理功能

有产生中断请求和 DMA 请求的能力以及中断和 DMA 管理的能力,如中断请求信号的发送与响应、中断源的屏蔽、中断优先级的管理等。

(6) 可编程功能

现在的接口电路芯片大多数都是可编程的,均有多种工作方式供用户选择,为了使某接口按用户的使用意图设置工作方式,可以在不改变硬件的情况下,只须修改程序就可以改变接口的工作方式,大大增加了接口的灵活性和可扩充性,使接口向智能化方向发展。

(7) 错误检测功能

一是信道干扰引起的传输错误;二是同步错误引起的溢出错误。

小结:上述功能并非每种接口都要求具备的,对不同配置和不同用途的微机系统,其接口功能不 同,接口电路的复杂程度也大不一样,但前4种功能是一般接口都应具备的。现在的接口芯片 基本上都是可编程的,这样在不改动硬件的情况下,只修改相应的驱动程序就可以改变接口的 工作方式,使一种接口电路能同多种类型外设连接,大大地增加了接口的灵活性和可扩充性。

三、接口电路的设计

1.分析接口两侧的情况

一般的做 法是:首先在硬件上从分析接口两侧的情况入手,在此基础上考虑 CPU 总线与I/O 设备之间信号的转换,合理选用I/O 接口芯片进行硬件连接,然后,根据硬件连接情况进行接口驱动程序的分析与设计。

凡是接口都有两侧,一侧是 CPU 或微机,另一侧是外设。对 CPU 一侧,要搞清是什么类型的 CPU,以及它提供的数据线的宽度(8位、16位、32位等)、地址线的宽度(16位、20位、24位、32位等)和控制线的逻辑定位(高电平有效、低电平有效、脉冲跳变)、时序关系有什么特点。其中,数据与地址线比较规整,故重点要放在控制线的分析上 对外设这一侧的分析重点应放在搞清被连外设的工作原理与特点上,找出需要接口为它提供哪些 信号才能正常工作,它能反馈给接口哪些状态信号报告工作过程,以达到与 CPU 交换数据的目的。

2.进行信号转换

找出两侧信号的差别之处,要设法进行信号转换与改造,使 之协调。

3.合理选用外围接口芯片

目前各种功能的接口电路都已做成集成芯片,需要熟练掌握和深入了解各类芯片的功能、特点、工作原理、使用方 法及编程技巧,以便根据设计要求和经济标准合理选择芯片,把它们与微处理器正确地连接起来,并编写相应的驱动程序。

4.接口驱动程序分析

接口驱动程序是模块化和结构化的,一般由初始化模块和功能模块等组成。

小结: 分析接口问题的基本方法可归纳为:分析接口两侧的信号及其特点,找出两侧进行连接时存在的差异;针对要消除两侧的这些差异来确定接口应完成的任务;为了实现接口任务,要考虑做哪些信号变换,选择什么样的元器件来进行这些变换,据此,进行接口电路功能模 块化总体机构的设计,这样就完成了对接口硬件的分析。对接口问题,仅有硬件分析还不能真正了解,还必须对接口的软件编程进行分析,而软件编程是与硬件结构紧密相连的,硬件发生变化则接口的驱动程序也就随之改变。