1、第3章 I/O端口地址译码技术,3.1 I/O地址空间 与存储器空间一样,I/O地址空间也是一片连续的地址单元,可供各种外设作为与CPU交换信息时存放数据、状态和命令代码之用。 16位微机地址空间的范围是0000H-0FFFFH,但IBM公司在规划微机接口卡时采用非完全译码方式,只考虑低10位地址线A0-A9,所以端口的地址范围是0000H-03FFH。,3.2 I/O端口1、I/O端口 I/O端口(port):是接口电路中能被CPU直接访问的寄存器的地址。CPU通过这些端口向接口中的寄存器发送命令,读取状态和传送数据。因此,一个接口可以有几个端口,如命令口、状态口和数据口,分别对应于命令寄存
2、器、状态寄存器和数据寄存器。 2、I/O操作 IO操作:是对I/O端口的操作,而不是对I/O设备的操作。,3、I/O端口共用技术 一般情况下,一个端口只允许接纳一种信息,但有些接口芯片中,一个端口即可作命令口又可作状态口使用,或允许同一个命令口写多个命令字,这就产生了端口的共用。,3.3 端口地址编址方式1、独立编址 接口中的端口地址单独编址,而不和存储空间合在一起。IBM-PC系列就采用这种方式。优点: I/O端口地址不占用存储器空间。 I/O指令短,执行速度快。 由于专门I/O指令与存储器访问指令有明 显的区别,使程序中I/O操作和存储器操 作层次清晰,程序的可读性强。缺点:需要专门访问I
3、/O端口的指令。,2、统一编址 从存储器空间中划出一部分地址空间给I/O设备,把I/O接口中的端口当作存储器单元一样进行访问,不设置专门的I/O指令。优点:指令类型多,功能齐全。缺点:端口占用了存储器的地址空间,使存储器容量减小,另外指令长度比专门I/O指令要长,因而执行速度较慢。,3.4 独立编址方式的端口访问1、I/O指令 在I/O指令中可采用单字节地址或双字节地址寻址方式。若用单字节地址,最多可访问256个端口。其指令格式为: IN AL,0F4H ;输入 IN AX,0F4H OUT 0F4H,AL ;输出 OUT 0F4H,AX,若用双字节地址作为端口地址,则最多可寻址216=64K
4、个端口。其指令格式为 MOV DX, XXXXH IN AL, DX;8位传送(输入) 或 IN AX,DX;16位传送(输入) MOV DX, XXXXH OUT DX, AL;8位传送(输出) 或 OUT DX,AX;16位传送(输出) 这里,XXXXH为16位的两字节地址。,2、I/O端口的寻址方式 I/O端口寻址有直接I/O端口寻址和间接I/O端口寻址,其差别在I/O端口寻址是否经过DX传输。例如:输入时 IN AL,0E0H ;直接寻址 MOV DX,300H ;间接寻址 IN AL,DX例如:输出时 OUT 0E0H,AL ;直接寻址 MOV DX,300H ;间接寻址 OUT D
5、X,AL,3.4 I/O端口地址分配及选用原则,1、PC微机I/O地址的分配 I/O地址划分成两部分: 0000H-03FFH留给微机系统和ISA总线; 0400H-0FFFFH给用户应用、主板功能和PCI总线使用。 前者作为专用端口分配给相应的设备,后者由PNP即查即用机制和操作系统动态分配和管理。,表3.1 I/O接口芯片的端口地址,表3.2 常用外设接口卡的端口地址,2、I/O端口地址选用的原则: 凡是被系统配置占用了的地址一律不能使用。 未被占用的地址,用户可以使用,但对计算机 厂家申明保留的地址,不要使用。 用户可使用的地址为:300H-31FH。,3.5 I/O端口地址译码,1、I
6、/O地址译码方法(1)全译码地址线A0-A9全部参加译码,一般在采用单端口时使用。(2)部分译码只有高位地址线参加译码,产生片选信号;而低位地址线直接接芯片,作为片内寻址。(3)开关式译码在部分译码方法的基础上,加上地址开关来改变端口地址。,16位微处理器的I/O地址线是16位,实际上只使用A0-A9地址线,地址线的选择应遵循下列规则: 高位地址作为片间寻址,低位地址作为片内寻址。 片内地址线数由接口中寄存器的数目决定。,2、I/O端口地址译码电路的输入与输出信号线,I/O地址译码电路的输入信号 I/O地址译码电路不仅仅与地址信号有关,而且与控制信号有关。例如: AEN信号:当AEN=1时,为
7、DMA方式 IOR和IOW信号:控制对端口的读/写等。I/O地址译码电路的输出信号 产生一个低电平有效片选信号CS。,3.6 I/O端口地址译码电路设计1、 I/O端口地址译码电路设计的几个问题遵循I/O端口地址的选用原则选用合适的地址段,避免发生冲突。正确选用地址译码方法一般情况下,单端口地址译码采用全译码法,多端口译码采用部分译码法。灵活设计I/O地址译码电路例如下面讲的几种形式。,2、I/O端口地址译码电路设计举例固定式单端口地址译码电路设计例:设计一个地址为2FBH的地址译码电路。分析:这是一个单端口的地址译码电路,不需要产生片选CS,采用全译码方法。,表3.4 单端口地址2FBH的地
8、址线取值,只读I/O端口地址(2F8)的译码:,固定式多端口的I/O地址译码电路设计例:采用74LS138设计计算机系统板的译码电路。分析:系统板的IO地址分配在00-0FFH范围内,每个被片选的芯片有32个端口,需要留5根地址线,其它高位地址参加译码。,表3.5 译码电路输入地址线的值,片内地址,片选地址,控制信号,地址范围在00H-0FFH区间的译码电路,开关式I/O地址译码电路设计例:某微机系统的I/O空间为000H-3FFH,分成连续的16段可选地址,每个段包括8个接口芯片,每个接口芯片拥有8个端口。分析:采用部分译码方法,允许16个段可以选择,所以采用4位开关。,表3.6 开关式000H-3FFH地址线取值,片内地址,片选地址,控制信号,在同一个段里,高4位不变,一般情况下,译码器和接口电路的连接方法如下:,地址译码电路、接口电路和CPU的连接方法,