CPU对多个外设进行控制时,是分时进行的,即在某一时刻仅对一个外设进行控制,对外设的选择是接口的重要部分,外设选择实际上就是端口寻址。I/O端口地址译码电路就是用来对外设进行选择I/O端口地址译码技术一、I/O端口和I/O操作二、端口地址编址方式三、独立编址方式的端口访问1.I/O端口及其编址方式一、I/O端口和I/O操作端口(port)是接口电路中能被CPU直接访问的寄存器的地址。CPU通过这些地址(端口)向接口电路中的寄存器发送命令、读取状态和传送数据。一个接口可以有几个端口{命令口(命令寄存器)--------写口状态口(状态寄存器)--------读口数据口(数据寄存器)--------读、写1I/O端口及其编址方式1I/O端口及其编址方式CPU给每个寄存器分配了一个地址(端口)。CPU在访问这些寄存器时,只需指明它们的端口,不需指出是什么寄存器。CPU在控制I/O设备时,只需指明与该设备相关的端口。通常所说的I/O操作,是对I/O端口的操作,而不是对I/O设备的操作,即CPU所访问的是与I/O设备相关的端口,而不是I/O设备本身。端口地址是一种重要资源1I/O端口及其编址方式PC机I/O端口地址分配1、统一编址(存储器映射方式)Motorola68、65系列Apple系列、小型机将存储器空间划出一部分给I/O设备,把I/O接口中的每一个接口当作存储单元一样进行访问,每一个端口占用一个存储单元地址。二.端口地址编址方式{1I/O端口及其编址方式Port3Port2Port1Port000000HFFFFFHF0000H其中64K个I/O端口统一编址:总共1M字节存储器Port65535EFFFFH1I/O端口及其编址方式I/O与存储器单元在同一地址空间MI/O优点:1)不需设置专门的I/O指令,凡对存储器可使用的指令(即所有访问内存指令)均可用于对端口的访问,不需要单独的I/O端口地址译码电路。2)可采用丰富的访存指令操作I/O单元。由于访问内存指令类型多、功能齐全,用这些指令访问I/O设备,不仅使输入/输出操作灵活、方便,而且还可直接对端口内容进一步进行算术逻辑运算、移位等。1I/O端口及其编址方式缺点:•端口占用了存储器的地址空间,使存储器容量减小。•指令长度比专门I/O指令要长,执行时间较长,降低了数据交换速度,I/O程序不易读。3)能给I/O端口有较大的编址空间,这对大型控制系统和数据通信系统是很有意义的。1I/O端口及其编址方式2、独立编址{Z80系列机、大型机IBMPC系列,Intel80x86系列微机Port65535Port255Port3Port2Port1Port0Port0(16位)Port1(16位)Port0(32位)PC系列机采用独立编址方式00000H07FFFHFFFFFHI/O端口存储器I/O端口地址空间不占用存储器地址空间,二者的地址空间相互独立完全分开,两者各自有一套独立的地址空间,相互不会影响。1I/O端口及其编址方式以80x86为例1MB64KB0000HFFFFH特点1)端口地址不占用存储器空间,需独立的I/O端口地址译码电路选取I/O端口。2)需要用专门的I/O指令(IN,OUT)对端口进行操作,I/O指令短,执行速度快。由于I/O指令和存储器访问指令有明显的区别,从而使I/O程序便于阅读,层次清晰。1I/O端口及其编址方式3)使用专门的信号来区分CPU是访问存储器还是访问I/O端口。4)I/O端口地址和存储器地址可以重叠,不会混淆。缺点:I/O指令功能简单、类型少,使I/O操作受到限制,要用专门信号区分访问内存还是访问I/O端口。8086CPU用M/IO{IN,OUT指令时,M/IO=0执行访问内存指令时,M/IO=11I/O端口及其编址方式地址总线上是一个有效的I/O端口地址地址总线上传送的是一个访问内存的地址1I/O端口及其编址方式三、独立编址方式的端口访问IBMPC系列采用独立编址方式,即用I/O指令访问端口,实现数据的I/O传递。80x86用IN或OUT指令只能在I/O端口和累加器之间进行。分为(I/O指令中端口地址的宽度):直接方式(单字节地址)间接方式(双字节地址)。输入指令完成外设数据输入INAL,PORT(字节输入)INAX,PORT(字输入)INAL,DX(字节输入)INAX,DX(字输入)输出指令完成外设数据输出OUTPORT,AL(字节输出)OUTPORT,AX(字输出)OUTDX,AL(字节输出)OUTDX,AX(字输出)1I/O端口及其编址方式直接直接间接间接I/O端口访问——CPU对I/O端口读/写。通常所说的CPU从端口读数据或向端口写数据仅仅是指I/O端口与CPU累加器之间的数据传送,并未涉及数据是否传送到存储器(RAM)的问题。当要求输入时,将端口的数据传送到存储器,除了把数据读入CPU的累加器外,还要将累加器中的数据再传送到内存。或者输出时,数据从存储器先送到CPU的累加器,再从累加器传送到I/O端口。1I/O端口及其编址方式152、间接方式:把端口地址放在DX寄存器中,对该端口进行读写输入:INAL,DX输出:OUTDX,AL当端口地址大于255时,采用该方式,且间址寄存器只能用DX,最多可寻址216=64K个端口。1I/O端口及其编址方式18不同的微机系统其I/O端口地址的分配是不同的。每一个外设都要占用一定的I/O地址空间。要把新的I/O设备加入到系统中。以IBM-PC系统为例来分析I/O端口地址分配情况。2.I/O端口地址分配22一、I/O接口硬件分类分两类:1、系统板上的I/O芯片:大多数是可编程的大规模集成电路,如定时/计数器,中断控制器,DMA控制器,并行接口等。2、I/O扩展槽上的接口控制卡,由若干个集成电路按一定的逻辑组成的一个部件,如软驱卡、硬驱卡、图形卡、声卡、串行通信卡等。2.I/O端口地址分配23二、I/O端口地址分配PC机的I/O地址线只用了低10根A9~A0(高6位未用)。故地此范围0000H~03FFH(210=1024=1K个端口)2.I/O端口地址分配24PC机I/O端口地址分配在Intel系列微机系统中采用I/O独立编址方式。I/O操作只使用20根地址线中的16根A15~A0,可寻址的I/O端口数为64K(65536)个。I/O地址范围为0000H~FFFFH。在IBM-PC机中只使用了1024个I/O端口地址(0~3FFH)。在目前的微型计算机系统中,系统为主板保留了1024个端口,分配了最低端的1024个地址(0000H~03FFH)。1K以上的地址(0400H~FFFFH)作为用户扩展使用。用户在设计扩展接口时,应注意不能使用系统已经占用的地址。2.I/O端口地址分配25PC机I/O端口地址分配如何了解微机系统中已经使用了哪些端口地址?可以通过Windows系统中“控制面板”中的系统程序查看I/O端口的分配。2.I/O端口地址分配26PC机I/O端口地址分配2.I/O端口地址分配27PC机I/O端口地址分配2.I/O端口地址分配28PC机I/O端口地址分配2.I/O端口地址分配29PC机I/O端口地址分配2.I/O端口地址分配30PC机I/O端口地址分配2.I/O端口地址分配31PC机I/O端口地址分配2.I/O端口地址分配32PC机I/O端口地址分配2.I/O端口地址分配332.I/O端口地址分配PC机I/O端口地址分配342.I/O端口地址分配PC机I/O端口地址分配352.I/O端口地址分配PC机I/O端口地址分配36三、I/O端口地址选用的原则1、凡是被系统配置两个占用了的地址,和已保留的地址不能使用。2、可使用300~31FH地址,是IBM-PC留作实验卡用的,用户可以使用。2.I/O端口地址分配37一、I/O地址译码电路工作原理及作用二、I/O地址译码方法三、I/O端口地址译码电路设计3.I/O端口地址译码将来自于地址总线上的地址代码翻译为所需要访问的端口(寄存器)38补充:常用逻辑符号名称国外流行符号国标符号表达式非门或门与门或非门与非门异或门异或非门ABY≥1Y=A+BABY=1Y=A+BABY=1Y=A+BABY&Y=A•BABY&Y=A•BABY≥1Y=A+BAY1Y=A43●CPU给每个寄存器分配了一个地址●CPU在访问这些寄存器时,只需指明它们的端口●CPU在控制I/O设备时,只需指明与该设备相关的端口