首页 理论教育 输入输出端口地址译码|微型计算机原理

输入输出端口地址译码|微型计算机原理

时间:2023-11-03 理论教育 版权反馈
【摘要】:在基于X86系列微处理器的微型计算机中,输入/输出接口电路与CPU之间的信息传递绝大多数是通过CPU对接口电路所提供的寄存器进行IN/OUT指令操作来完成的,这些能够用IN/OUT指令进行读写的寄存器被称作端口寄存器,简称端口。以6502微处理器为核心的Apple Ⅱ系列微机采用的就是存储器映像的I/O端口编址方式。例如图6-1所示译码电路用于实现对36CH~36FH端口的地址译码,当CPU对这几个I/O端口进行读写操作时,使能信号CS为低电平。

输入输出端口地址译码|微型计算机原理

在基于X86系列微处理器的微型计算机中,输入/输出接口电路与CPU之间的信息传递绝大多数是通过CPU对接口电路所提供的寄存器进行IN/OUT指令操作来完成的,这些能够用IN/OUT指令进行读写的寄存器被称作端口寄存器,简称端口。

从端口中存储数据的物理意义来看,端口可以分为三类:数据端口、状态端口和控制端口,有时又被简称为数据口、状态口和控制口。数据口是用来存放CPU和外设之间传递的数据信息的端口,一般对应于前文所叙述的用于暂存数据的数据锁存器。状态口用来存放状态信息,其中的数据可以反映外设的当前状态,比如数据是否已经准备好,外设是否忙(即是否可以从CPU接收新的数据)等。控制口则用来传递控制信息,这些控制信息由CPU发送给接口电路进而实现对外围设备的控制。一般来讲在一个接口电路中数据端口是必须存在的,而状态端口和控制端口则根据接口电路的功能需要而设置。

为了使端口能够被CPU所访问,它们必须被赋予确切的端口地址。在微机系统中,I/O端口的编址方式主要有两种,即“存储器映像方式”和“独立编址方式”。

在“存储器映像方式”中,I/O端口与主存储器的存储单元统一编址,CPU采用统一的指令来访问主存储器和I/O端口。以6502微处理器为核心的Apple Ⅱ系列微机采用的就是存储器映像的I/O端口编址方式。此种编址方式的优点是不需要单独的I/O指令,所有存储器访问指令都可以被用作访问I/O端口,I/O编程相对要简单一些。但是,此种编址方式对I/O端口和主存储器一视同仁,一方面I/O端口占用了存储器的编址空间,使存储器的编址空间减少,另一方面难以在指令级区分出对I/O端口和存储器这两种不同性质的访问,对于指令级的优化不利。

在基于X86微处理器构建的微机系统中,I/O端口的编址采用的是“独立编址方式”,即I/O端口与主存储器存储单元分别编址,建立各自独立的地址空间(分别称作I/O空间和存储空间),在访问时采用不同的指令进行访问。此种编址方式的优点是存储空间和I/O空间互相隔离,使用不同的控制信号控制,采用不同的指令进行访问,从而能够针对I/O访问和存储器访问的不同特性进行不同的指令级优化。另外,不占用存储空间的I/O端口编址也能够节省存储器地址空间。但是,分离的I/O空间要求对I/O端口的访问只能通过特殊的IN/OUT指令来完成,也给I/O编程带来了一些额外的复杂性。

根据X86系列CPU的规定,低16位地址线A15~A0被用作I/O端口的译码,即I/O端口的地址范围是0~FFFFH。在IBM PC中,I/O端口的译码只使用了A9~A0这10条地址线,从而将其I/O端口的数量限制在1024个,其中00H~FFH端口地址供主机板上的接口电路使用,100H~3FFH地址分配给总线插槽上的I/O接口卡。(www.xing528.com)

除了地址线之外,还有一些对端口进行读写控制的信号也必须参加I/O端口的地址译码,比如8位ISA总线的AEN、978-7-111-46342-9-Chapter06-1.jpgR和978-7-111-46342-9-Chapter06-2.jpg。在8位ISA总线的定义中,AEN代表当前的读写访问是由CPU发起(AEN=0)还是由DMA控制器发起(AEN=1),如果接口电路只接受CPU的访问,则地址译码中必须要求AEN=0。

978-7-111-46342-9-Chapter06-3.jpg

图6-1 使用74LS138的译码电路

978-7-111-46342-9-Chapter06-4.jpgR和978-7-111-46342-9-Chapter06-5.jpgW分别是I/O读和I/O写命令,对应于CPU执行IN指令和OUT指令。IOR为低电平代表CPU或DMA发起了对I/O端口的读操作,978-7-111-46342-9-Chapter06-6.jpg的含义与978-7-111-46342-9-Chapter06-7.jpgR类似。AEN、978-7-111-46342-9-Chapter06-8.jpg978-7-111-46342-9-Chapter06-9.jpg和地址信号通过各种组合,就可以得到接口电路的使能信号。由于大多数芯片的片选信号要求低电平输入,因此接口电路的使能信号通常也选择为低电平有效。接口电路的使能信号可以通过组合逻辑电路或者译码器(如74LS138)对地址线、978-7-111-46342-9-Chapter06-10.jpgN、978-7-111-46342-9-Chapter06-11.jpgR、IOW等信号进行逻辑运算或译码来产生。例如图6-1所示译码电路用于实现对36CH~36FH端口的地址译码,当CPU对这几个I/O端口进行读写操作时,使能信号CS为低电平。

需要注意的是,能够达到相同功能的译码电路还有很多,比如采用逻辑门电路直接组合形成或采用译码器的不同译码方案实现等。同时,随着PnP技术的广泛采用,大部分外设的接口电路必须允许通过初始化编程的方式来改变其I/O地址,这时就需要更加复杂的译码电路(比如基于比较器实现的译码电路),而且这些译码电路经常会与其他电路一起集成在一个大规模的集成电路之中,这也是在当前的主板和扩展板卡上很少看到74LS138这类译码器的原因。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈