按照数据信息传输方向划分:按照外设与CPU之间数据信息传输的方向,可以将外部设备划分为输入设备、输出设备和复合输入输出设备。
①输入设备:数据信息从外部设备送往CPU;
②输出设备:数据信息从CPU送往外部设备;
③复合输入输出设备:数据信息在CPU和外设之间双向传播。
按照设备的功能划分:外设可以划分为人机交互设备、数据存储设备、媒体输入输出设备和数据采集与设备控制设备。
外部设备的信号分类:外部设备与主机之间交换的信号可以分为数据信号、控制信号和状态信号三类。三类信号都是以数据的形式,通过数据总线和CPU进行信息传输的。
①数据信号:以二进制形式表示的各种信息;
②控制信号:CPU以一组二进制形式表示的用于控制设备工作的命令;
③状态信号:用一组二进制数表示的外设当前的工作状态,从外设送到CPU。
状态信号分类:
①输入设备状态信号:输入设备在完成一次输入操作后就会发出就绪信号(READY),等待CPU来进行数据传输。
②输出设备状态信号:输出设备在接收了来自CPU的数据信息后,实施输出的过程中将发出忙信号(BUSY),表示当前不能接收信的数据信息。
③出错状态信号:一些设备可以发出指示出错的状态信号。
接口的定义:接口是计算机一个部件与另一个部件之间的连接界面。
I/O接口的定义:计算机连接总线和外部设备的中间界面。
I/O接口的功能:
①设备选择功能:CPU通过发出不同的地址代码来标识和选择不同的外设。接口对系统总线上传输的外设地址进行译码,在检测到本设备地址的代码时产生相应的选中信号,并按照CPU的要求来进行信息传输。
②信息传输与联络功能:在设备被选中时,接口从CPU接收数据或控制信息,或将数据及状态信息发往数据总线。
③数据格式转换功能:如果外设和CPU数据格式不同时,接口需要进行两种数据格式之间的相互转换。(例如串行数据和并行数据的相互转化)
④中断管理功能:接口应该可以向CPU申请中断并进行中断优先权的管理等。
⑤复位功能:接口在接收系统的复位信号后将接口电路及其外设转换为初始状态。
⑥可编程功能:一部分接口具有可编程特性,扩大了接口的适用范围。
⑦错误检测功能:一些数据量大且传输速率高的接口具有信号传输的错误检测功能。
常见的信号传输错误:
①物理信道上的传输错误:信号在线路上传输时如果遇到干扰信号则可能发生传输错误。检测传输错误的常用方法是奇偶校验。
②数据传输中的覆盖错误。
端口的定义:接口内通常设置有若干个寄存器,用来暂存CPU和外设之间传输的数据、状态和命令,这些寄存器称为端口。每一个端口都有一个独立的地址。
端口的分类:根据寄存器内暂存信息的种类和传输方向,可以划分为数据输入端口、输出输出端口、命令端口(控制端口)和状态端口。
CPU和端口的关系:CPU与外部设备的输入输出操作,都是通过对相应端口的读写操作来实现的。所谓外设的地址,实际上就是该设备对应的接口内各个端口的地址。一台外设可以拥有几个通常是相邻的端口地址。
统一编址方法:统一编址也称为存储器映射编址方式。该方式从内存的地址空间中专门划分出一部分分配给I/O端口,已经用于I/O端口的地址,存储器不能再使用。
统一编址方法的评价:统一编址方式可以降低CPU的复杂性方便使用,但是相对减少了内存的可用范围,降低了程序的可读性和可维护性。
独立编址方法:内存和I/O端口具有各自独立的编制空间,访问I/O端口需要专门的I/O指令。8086/8088 CPU都采用这种方式。
端口输入输出中累加器的作用:输入输出必须通过累加器进行:8位外部端口用AL进行输出;16位外部端口用AX进行输入输出;32位外部端口用EAX进行输入输出。
输入指令和输出指令:输入指令IN把外部设备接口输入的信息读入累加器;输出指令OUT把累加器中的内容向输出端口输出。
端口地址的两种寻址方式:如果端口地址在0-255的范围内,则可以直接以立即数的形式使用地址;当端口地址大于255时,必须事先把地址送入DX寄存器,通过该寄存器进行间接寻址。
内存地址代码的分解:由于一个接口上的几个端口地址往往是连续排列的,因此可以把地址代码分解为两个部分:高位地址用于对接口的选择;低位地址用来选择接口内不同的端口。
跳线器的作用:设定端口地址时,为了避免与已有设备的端口地址重复,接口电路是为了避免重复的发生而用来改变端口地址的设备。
地址代码的共用:由于读写操作不会同时进行,因此一个输入端口和另一个输出端口可以使用同一个地址代码。
数据设备的三态输出要求:为了使得内存、外设的数据输入端口等能够正常地使用数据总线进行数据传送,要求所有连接到数据总线的设备都有三态输出的功能。也就是说,当CPU选中该设备时,它能向系统数据总线发送数据信号;在其他时间,它的输出必须呈现高阻状态。为此,所有输入端口必须通过三态缓冲器与系统总线连接。
数据设备的锁存器:数据设备不仅要具备三态缓冲器,同时还应该具备锁存器以暂时保存需要输出的数据。如果输入设备自身具有数据锁存的功能则输入接口内可以不使用锁存器,但是绝对不能没有三态缓冲器。同时,CPU送往外部设备的数据或命令也一般需要接口进行锁存,以便外部设备有充分的时间接收和处理。
设备的BUSY状态信号:当外设在接收和输出数据器件,其状态位BUSY将置为1。CPU通过对状态端口的读指令获取设备的状态,如果为1则不能向端口发送新的数据,否则将导致覆盖错误。