I/O接口的编址方式

计算机控制系统中,存储器和I/O接口都接到CPU的同一数据总线上。当CPU与存储器和I/O接口进行数据交换时,就涉及到CPU与哪一个I/O接口芯片的哪一个端口联系,还是从存储器的哪一个单元联系的地址选择问题,即寻址问题。这涉及I/O接口的编址方式,通常有两种编址方式,一种是I/O接口与存储器统一编址,另一种是I/O接口独立编址。

一、I/O接口独立编址方式

这种编址方式是将存储器地址空间和I/O接口地址空间分开设置,互不影响。设有专门的输入指令(IN)和输出指令(OUT)来完成I/O操作,例如Z80微处理器的I/O接口是按独立编址方式的,它利用MREQ和IORQ信号来区分是访问存储器地址空间还是I/O接口地址空间,利用读、写操作信号区分是读操作还是写操作。存储器的地址译码使用16位地址(A0~A15),可以寻址64KB的内存空间,而I/O接口的地址译码仅使用地址总线的低8位(A0~A7),可以寻址256个I/O端口地址空间。

8086微处理器的I/O接口也是属于独立编址方式的。它允许有64K个8位的I/O端口,两个编号相邻的8位端口可以组合成一个16位端口。指令系统中既有访问8位端口的输入输出指令,也有访问16位端口的输入输出指令。

8086输入输出指令可以分为两大类:一类是直接的输入输出指令,(如INAL,55H;OUT70H,AX),另一类是间接的输入输出指令(如INAX,DX;OUTDX,AL),在执行间接输入输出指令前,必须在DX寄存器中先设置好访问端口号。

二、I/O接口与存储器统一编址方式

这种编址方式不区分存储器地址空间和I/O接口地址空间,把所有的I/O接口的端口都当作是存储器的一个单元对待,每个接口芯片都安排一个或几个与存储器统一编号的地址号。也不设专门的输入/输出指令,所有传送和访问存储器的指令都可用来对I/O接口操作。M6800和6502微处理器以及Intel51系列的51、96系列单片机就是采用I/O接口与存储器统一编址的。

两种编址方式有各自的优缺点,独立编址方式的主要优点是内存地址空间与I/O接口地址空间分开,互不影响,译码电路较简单,并设有专门的I/O指令,所编程序易于区分,且执行时间短,快速性好。其缺点是只用I/O指令访问I/O端口,功能有限且要采用专用I/O周期和专用的I/O控制线,使微处理器复杂化。统一编址方式的主要优点是访问内存的指令都可用于I/O操作,数据处理功能强;同时I/O接口可与存储器部分公用译码和控制电路。其缺点是:I/O接口要占用存储器地址空间的一部分;因不用专门的I/O指令,程序中较难区分I/O操作。

I/O接口的编址方式是由所选定的微处理器决定了的,接口设计时应按所选定的处理器所规定的编址方式来设计I/O接口地址译码器。但是独立编址的微处理器的I/O接口也可以设计成统一编址方式使用,如在8086系统中,就可通过硬件将I/O接口的端口与存储器统一编址。这时应在信号或者号有效的同时,使M/信号处于高电平,通过外部逻辑组合电路的组合,产生对存储器的读、写信号,CPU就可以用功能强、使用灵活方便的各条访内指令来实现对I/O端口的读、写操作。

你可能感兴趣的:(I/O接口的编址方式)