I/O接口与端口

时间:2024-03-11 16:56:02

输入输出接口

高速的微处理器与低速的外设能够协调的工作,需要有一个具有数据 缓冲和锁存能力、数据格式转换能力、定时控制能力并且能够提供外设状态的连接电路,我们把它叫做输入输出接口。

I/O接口应具有以下的功能:

(1)地址译码

CPU通过给接口分配地址识别接口,并通过地址总线将地址信息传送给接口。接口应该具有地址译码的能力。

(2)数据传送

(3)提供握手联络信号

外部设备的工作速度往往远低于CPU的 处理速度,CPU发送的数据不能被外设及时读取,造成数据丢失,因此需要握手联络信号(当设备准备好,CPU就与其交换信息,否则就等待),使CPU与I/O设备同步。

(4)数据格式转换

I/O接口必须能够提供外部设备的状态信 息,同时能够根据CPU的命令输出控制信号,对外设实施控制。

(5)信号电平转换

外部设备多是复杂的机电设备,其信号 电平多数与TTL或者MOS电路不兼容,需要接口来完成信号的电平转换。

(6)错误检测功能

接口和设备间的数据传输经常受到干扰,导致信息出错,接口应具备一定的错误检测能力,对传输信息进行校验。

I/O接口的分类

按数据传送方式,I/O接口分为并行接口和串行接口两类。

(1)并行接口,一次传送一个字节或多个字节的所有位。

(2)串行接口,一次传送一位,数据的所有位逐位传送。

CPU与I/O接口之间通过系统总线传输信息,包括地址信息、控制信息和 数据信息。I/O接口与设备之间通过串行或并行方式交换信息,包括数据 信息、控制信息和状态信息。

I/O端口

I/O接口电路需要设置若干专用寄存器,缓冲输入输出数据,设定控制 方式,保存输入输出状态信息等,这些寄存器可被CPU直接访问,常称为端口。

  • 根据端口传输的信息,端口可分为数据端口、状态端口和控制端口,用 以传输数据信息、状态信息和控制信息。

    状态信息是由外设提供,CPU适时读取,因此状态端口为信息输入端口。

    I/O接口在开始工作前,CPU需要设定它的工作方式,这些信息存放在 控制端口。

  • 根据信息传输方向,端口又可 以分为输入端口、输出端口或着是输入/输出的双向端口。

    只用来输出数 据的数据端口称为数据输出端口,只用来输入数据的数据端口称为数据 输入端口。

输入端口具有的能力:

CPU从输入端口输入数据时,要求外部设备事先将数据准备好,当外设有数据要发给CPU时,数据应先保存在输入端口上,不能直接进入系统的数据总线上,当需要读取数据时,输入端口就把数据放到数据总线上,这就是输入端口必须具有的通断控制能力。

总线结构的计算机系统,除了CPU任何其他部件都不能直接加载数据到数据总线上。设备的接口电路挂接在系统总线上,但是设备输出的数据不能直接加载到数据总线。所以,接口上需要有一个“开关”一样的电路,当CPU读取外部设备的数据时,这个“开关”就将设备的数据加载到数据总线上,然后CPU通过数据总线接收数据。也就是书评输入端口必须具有“通断”控制能力。

输出端口具有的能力:

CPU向输出端口输出数据时,由于外设的速度慢,数据必须在输出端口 保持一定的时间,使外设能够正确接收,所以输出端口应具备数据锁存能力。

I/O端口的编址方式

CPU通过地址识别端口,端口地址也称为端口号。为I/O端口分配地址称为编址。I/O端口的编址方式有 两种:

  • 与存储器统一编址
  • 独立编址方式

1. 与存储器统一编址

这种方式又称为存储器映射编址方式。它将I/O端口作为内存单元对待,由CPU统一分配地址。通 常在CPU的地址空间中划出一部分作为输入输出系统的端口地址范围,不再作为内存地址使用。

通常为一个外设的各个端口分配连续的地址

  • 优点:访问I/O端口和访问内存单元一样,所有访问内存的指令都可以访问I/O端口,不用设置专门 的I/O指令;也不需要专用的I/O端口控制信号,简化了系统总线

    • 利用数据传送指令就可以实现 CPU 与 I/O 端口的数据交换;

    • 用测试指令可以测试端口的状态位,了解外设的状态,判断输入输出操作的执行情况。

  • 缺点:占用一部分CPU地址空间。划出的端口地址范围,不能再作为内存地址使用 ,所以减少了内存地址空间。

2. 独立编址方式

CPU给I/O端口分配一个独立的地址空间,提供专用的控制信号。I/O端口地址空间与内存地址空间隔离。

  • 优点:不占用内存空间,而且I/O端口地址线根数少,因为I/O端口地址空间不像内存那么大,不需要那么大的空间,所以译码电路简单。
  • 缺点:需要专用的控制信号和专用的I/O指令。

3. 8088/8086CPU的编制方式

8088/8086CPU采用独立编址方式管理I/O端口,内存空间00000HFFFFFH(1MB),使用A0A19 全部20根地址线寻址。它使用地址信号线A0~A15,最多能够管理64K个端口, 端口地址范围0000H~FFFFH,有专用的控制信号 IOR 和 IOW 或IO/ M 、 RD 和 WR ; 专用指令IN和OUT。

CPU通过总线与存储器、I/O交换一个数据所需要的时间称为总线周期

M/IO:=1,表明该总线周期,CPU与存储器交换信息

​ =0,表明该总线周期,CPU与I/O接口交换信息

W/R: =1,表明该总线周期,CPU进行写操作

​ =0,表明该总线周期,CPU进行读操作

D/C :=1,表明该总线周期,传输的是数据

​ =0,表明该总线周期,传输的是指令代码

这三个信号的组合,决定当前总线周期所完成的操作

  • I/O地址空间中000003FFH区间通常留给系统设备和ISA总线的端口使用。其中000000FFH区 间的端口地址,用于访问系统板上的设备,如时钟、定时器、键盘接口、中断控制器和DMA控制 器等。这个区间的地址信号中A8~A15都为0,所以为了使用方便,这个区间的端口地址在IN、OUT 指令中以8位地址的形式出现,只体现了A0~A7的内容。
  • 0100~03FFH区间用于磁盘控制器、显示器、串行口和并行口等接口。
  • 0400H~FFFFH地址区间用于用户应用、主板功能和PCI总线

CPU数据传送控制方式

微处理器与I/O设备之间的信息必须同步进行。常用的数据传送控制方式包括无条件传送方式、程序查询传送方式、中断传送方式、直接存储器存取方式(DMA)。

1. 无条件传送方式

无条件传送方式又称同步方式,适合简单外设的数据输入输出,例如开关、继电器、步进电机、发光二极管等。这些外设随时可以接收数据、随时可以提供数据,永远与CPU同步,CPU可直接与其进行数据交换,数据输入输出的控制程序很简单。

2. 程序查询传送方式

在实际应用中,多数I/O设备接收或发送信息的速度比微处理器慢很多,需要降低CPU数据传输的速度以匹配设备。CPU与它们交换信息时,首先要查询设备目前的工作状态,当设备准备好,CPU就与其交换信息,否则就等待,这种工作方式称为程序查询方式或握手。

例如,打印机每秒可打印200个字符,显然微处理器发送字符的速度远大于打印机打印字符的速度。微处理机与打印机连接需要进行速度匹配。

过程:

CPU通过数据端口DataP传送数据(D0~D7),并产生一个STB信号作为数据选通信信号发给打印机。打印机设置BUSY信号为逻辑1表示打印机“忙”,CPU通过状态端口StateP读取状态信息BUSY。

CPU发送信息前首先查询或测试BUSY信号,如果BUSY为逻辑1,表明打印机正在忙,CPU就等待;否则就发送一个字符到数据端口,然后再STB引脚设置一个脉冲信号。打印机利用STB脉冲信号接收D0~D7的数据。打印机收到数据后将BUSY信号置1并进行打印,打印结束后再将BUSY信号置为逻辑0.

  • 缺点

    在这种传送方式下,CPU每传送一次数据,都要查询外设状态,外设工作速度慢,CPU只好反复查询,或延时等待以匹配外设。CPU花费很多时间完成与外设的时序匹配,因此CPU的工作效率很低。

3. 中断传送方式

当输出设备处于空闲状态或者输入设备数据准备好时,接口向CPU发 出中断请求信号,CPU收到申请后及时响应接口的中断请求,暂停执 行主程序,转去执行中断服务程序,完成数据传输之后再返回到主程 序继续执行

  • 优点:

    这种方式,CPU不再检测或查询外设的状态,设备具有了主动反映其 状态的能力,消除了程序查询方式的盲式测试,这种数据传送方式称 为中断方式。与程序查询方式相比,中断传送方式实时性好、节省 CPU时间、外设具有申请服务的主动权,并且在一定程度上实现设备 与CPU并行工作。

  • 缺点:

    中断方式仍需要通过CPU执行程序来实现外设 与CPU之间的信息传送;CPU每次中断都需要花费时间保护断点和现 场,无法满足高速I/O设备的速度要求。

无条件传送方式、程序查询方式和中断方式在数据传送过程中,都需要经过CPU处理,CPU 从内存读出数据,再输出到外部设备,因此,这三种方式被统称为程 序控制下的输入输出方式(Programmed input and output),简称 PIO方式

4.DMA方式

直接存储器存取(Direct Memory Access)方式简称为DMA方式。 是在内存储器和I/O设备之间建立数据通路,不经过CPU的干预,实现内 存与设备之间的快速数据传送。

实现DMA方式需要专门的硬件装置DMA控制器(DMAC),控制外设与 内存之间的数据传输。

DMA数据传输的工作流程

① 外设向DMAC发出“DMA传送请求”信号(DRQ);

② DMAC收到请求后,向CPU发出“总线请求”信号HOLD,表示希望占 用总线;

③ CPU将数据总线、地址总线和相应的控制信号线均置为高阻态,表示让出三大总线的使用权,向DMA 控制器发出“总线响应”信号(HLDA)。

④ DMAC收到HLDA信号后,就开始控制总线,并向外设发出DMA响应信 号DACK;

⑤ DMAC送出地址信号和相应的控制信号,实现外设与内存或内存与内存 之间的直接数据传送;

⑥ 规定的数据传送完后,DMAC就撤销发往CPU的HOLD信号。CPU检测 到HOLD失效后,紧接着撤销HLDA信号,并在下一时钟周期重新开始控 制总线。