410 likes | 564 Views
第 7 章 输入 / 输出系统. 7.1 概 述. 7.1.1 接口电路. 定义: 是 CPU 与 “ 外部世界 ” 的 连接电路 ,负责 “ 中转 ” 各种 信息 。. I/O 接口与 I/O 设备. 不同 I/O 设备对应 I/O 接口不同。. I/O 接口受 CPU 控制, I/O 设备受 I/O 接口控制。. 为增加通用性, I/O 接口的接口电路一般均具有可编程功能。. 微机的应用离不开与外部设备接口的设计、选用和连接。. 微机接口技术是编程人员的一项基本技能。. 1 I/O 接口功能. 数据缓冲功能: 通过寄存器或锁存器实现。.
E N D
7.1 概 述 7.1.1 接口电路 定义:是CPU与“外部世界”的连接电路,负责“中转”各种信息。
I/O接口与I/O设备 不同I/O设备对应I/O接口不同。 I/O接口受CPU控制,I/O设备受I/O接口控制。 为增加通用性,I/O接口的接口电路一般均具有可编程功能。 微机的应用离不开与外部设备接口的设计、选用和连接。 微机接口技术是编程人员的一项基本技能。
1 I/O接口功能 数据缓冲功能:通过寄存器或锁存器实现。 存放数据的寄存器或锁存器称之为数据口。 接受和执行CPU命令功能: 存放CPU命令代码的寄存器称之为命令口, 存放执行状态信息的寄存器称之为状态口。 设备选择功能:CPU通过地址选择不同外设。 即CPU通过地址选择不同I/O接口。 信号转换功能:协调总线信号与I/O设备信号。 转换包括信号的逻辑关系、时序配合和电平转换。 可编程功能:增加接口的灵活性和智能性。
2 接口电路分类 接口按通用性可分为两类:专用接口和通用接口。 通用接口是可供多种外部设备使用的标准接口,它可以连接各种不同的外设而不必增加附加电路。 接口按可编程性也分为两类:可编程接口和不可编程接口。 接口按与外设数据的传送方式可分为并行I/O接口和串行I/O接口两种。
I/O接口组成 接口由接口硬件和接口软件组成。 1.接口硬件
CPU侧引脚信号: 地址信号:选择I/O接口及CPU命令分类; 数据信号:根据命令类型,送到对应的REG中,或从REG中取得数据或状态; 控制信号:控制命令的执行、时序、信号同步; 状态信号:接口的部分工作状态信号。 外设侧引脚信号: 数据信号:接口缓冲REG与外设间的数据交换; 状态信号:外设工作状态送给接口的状态REG; 控制信号:接口的内部控制逻辑控制外设工作的控制信号和同步信号。
内部控制逻辑: 根据控制REG、状态REG、总线控制信号及外设状态信号控制I/O接口的工作。 2.接口软件(设备驱动程序) 初始化程序段:设置接口工作方式及初始条件。 传送方式处理程序段:CPU针对不同的I/O设备有不同的处理方式。 主控程序段:完成接口任务的程序。 程序终止与退出程序段:接口电路硬件保护及操作系统中数据恢复。 辅助程序段:提供人-机对话手段。
7.1.2 输入/输出端口 1.I/O端口 供CPU直接存取访问的接口中的寄存器或电路。 接口中的命令口、状态口和数据口均为I/O端口。 2.I/O端口地址 接口中的不同寄存器或电路的编号。 CPU通过命令对接口进行控制。 3.命令、接口与I/O端口关系 接口:I/O端口:命令----1:n:m*n。 CPU通过I/O端口地址区分不同的接口。
二、I/O端口编址 1.I/O统一编址(存储器映象I/O编址) 一个I/O端口等同于一个存储器单元。 优点: 对I/O端口的访问命令与对存储器单元访问相同,不必使用专用I/O指令(统一用LOAD/STORE) ; 外设数目或I/O寄存器数几乎不受限制。 缺点: I/O端口占用部分MEM空间,可用MEM空间减小; 对MEM访问指令较长,执行速度较慢; I/O端口地址译码时间较长。
2.I/O独立编址 I/O端口地址空间与存储器地址空间相互独立。 应用:Z-80系列和x86系列均采用此方式。 优点: MEM地址空间不受I/O端口地址空间影响; I/O端口数量不多,占用地址线少,地址译码简单,速度较快; 使用专用I/O命令(IN/OUT),与MEM访问命令(LOAD/STORE)有明显区别,便于理解和检查。
要求处理器提供MEMR/MEMW和IOR/IOW两组控制信号,增加了控制逻辑的复杂性。要求处理器提供MEMR/MEMW和IOR/IOW两组控制信号,增加了控制逻辑的复杂性。 缺点: 专用I/O指令增加指令系统复杂性,且I/O指令类型少,程序设计灵活性较差; 3.Intel系列微机I/O编址 Intel系列微处理器支持I/O独立编址方式和I/O统一编址(存储器映象编址)方式。 I/O统一编址时,I/O地址不能缓存。 Intel系列微机系统仅支持I/O独立编址方式。
I/O端口地址信号:由地址线信号和IOW/IOR信号线组成。I/O端口地址信号:由地址线信号和IOW/IOR信号线组成。 三、PC系列微机I/O端口访问 1.I/O端口地址空间 I/O端口地址空间:64K(A0-A15)个8位端口空间。 2.I/O端口地址寻址方式 I/O端口支持直接寻址和间接寻址方式。 OUT 60H,AL ; OUT DX,34H ; 3.I/O端口与累加器间I/O指令 格式:IN、OUT。
控制信号线:IOW/IOR与MEMW/MEMR 4.I/O端口与存储器间I/O指令 格式:INSB(W、D)、OUTSB(W、D)。 参数:用DX指定I/O端口地址,输入/输出时的目的/源RAM地址用ES:DI(EDI)/DS:SI(ESI)指定。 结果:通过前缀REP连续传送。 5.I/O端口与存储器端口访问的区别 命令类型:IN/OUT与LOAD/STORE 地址信号线:A0-A15与A0-A31
四、Pentium的I/O保护 I/O保护在保护模式下有效,在实地址模式下无效。 1.I/O特权级IOPL保护 保护通过比较当前任务的特权级CPL和标志寄存器的IOPL字段实现的。 若CPL≤IOPL,可执行IN、OUT、INS、OUTS、CLI、STI等敏感指令(对IOPL敏感);否则不行。 每个任务都有自己的IOPL,0级特权的过程可通过POPF和IRET指令修改任务的IOPL。
2.I/O允许位映象保护 I/O允许位映象用来修正IOPL对I/O敏感指令的影响,允许低特权的程序访问某些I/O端口。 I/O允许位映象是一个位向量,每位对应一个端口的操作权限(0表示允许)。 操作系统可通过改变任务TSS中的I/O允许映象来为某任务分配端口。
第四节 接口分析与设计方法 一、x86系列微机接口分析 1.I/O接口硬件分类 系统板上I/O芯片和I/O扩展槽接口卡。 2.I/O端口地址分配 PC系列I/O地址线有16根,对应64K空间; PC/XT的I/O端口译码只使用了A0-A9,共1024个端口,地址范围为0000H~03FFH。 不同的微机系统对I/O端口地址的分配不同。 初期:A9=0端口(512个)为系统板所用,其他端口(512个)为扩展槽所用。
PC/AT:A8=A9=0端口(256个)为系统板所用,其他端口(768个)为扩展槽所用。PC/AT:A8=A9=0端口(256个)为系统板所用,其他端口(768个)为扩展槽所用。 系统板I/O接口芯片端口地址(0000H-00FFH): 返回29页
IOW/IOR信号(有效)、AEN信号(无效)和I/O端口地址高位。 用户I/O端口地址选用原则: 系统配置占用的端口地址一律不能用; 厂家声明保留的端口地址不要用; 其余端口地址可用,为避免冲突最好采用DIP。 3.I/O端口地址译码方法 一个I/O接口对应多个连续I/O端口。 I/O接口芯片片选(CS)译码: I/O接口芯片内部端口译码: I/O端口地址低位。
数据总线 D0-D7 PA0-7 PB0-7 PC0-7 RD WR RESET 控制总线 RESET 8255A AEN IO/M A9-A2 A1 地址总线 A1 A0 CS RD WR A0 例1:并行接口使用8255A芯片,地址空间60H-63H。 返回下页 多个接口时,采用单独译码/集中译码?
15 1 Y0 A 14 2 B 74LS138 13 00H CPU MEM 3 C 12 : 5 11 1FH 20H 数据总线 4 10 : 地址总线 6 9 G1 3FH 控制总线 7 Y7 40H : 5FH 60H : D7-D0 D7-D0 CS CS 7FH WR RD RD WR 设 备 侧 信 号 设 备 侧 信 号 3FFH Ax-A0 Ax-A0 8253 8259 G2A G2B 例2:多个接口集中译码。 如何区分MEM和I/O? 转上页 返回26页
4.I/O端口访问 CPU通过I/O指令对I/O接口进行访问。 汇编语言指令:IN、OUT。 C语言指令:inportb(inport)、outportb(outport)。 VC++指令:_inp(_inpw)、_outp(_outpw)。 例:读取CMOS信息。 ;功能:读取CMOS信息 ;调用:AL=CMOS地址 ;返回:AL=CMOS内容 proc_read_cmos proc cli or al,80h ;屏蔽NMI out 70h,al jmp $+2 ;延迟 in al,71h ;读CMOS数据 sti ret proc_read_cmos endp main() { int i; unsigned char c_CmosMessage[64]; for (i=0;i<=63;i++) { outportb(0x70,i); c_CmosMessage[i]=inportb(0x71) ; } printf("CMOS信息读取完毕。\n"); }
控制总线:IOW有效、IOR无效、MEMR/MEMW无效、 AEN无效。 译 码 器:根据DX高位译码,Y2有效,其他Yx无效。 5.I/O指令与接口实现 执行CPU指令:MOV DX,42H OUT DX,8AH 转24页 地址总线:将42H写入A9~A0。 接口芯片:8253工作,其他接口芯片不工作。 接口电路:8253对应接口电路应答选中信号,8253根据DX低位选择相应的寄存器。 8253: 接受数据总线(D7~D0)数据(8AH),写入所选寄存器。
15 1 Y0 A 14 2 B 74LS138 13 3 C 12 5 11 4 10 6 9 G1 7 Y7 G1=1,G2A=G2B=0。 G2A G2B 二、I/O端口地址译码电路的几种形式 1.固定式端口地址译码 接口中只有一个端口时可采用门电路构成。 接口中有多个端口时一般采用译码器电路构成,常见的译码器有74LS138、74LS154等。 74LS138译码器: 工作条件: 工作原理: 将复合的输入信号变为枚举的输出信号。
输入/输出真值表: CBA连续时,Y0~Y7亦为连续的。
15 1 Y0 A5 A DMACS(8237) 14 2 A6 INTRCS(8259) B 74LS138 13 3 T/C CS(8253) A7 C 12 PPICS(8255) 5 11 A8 WRTDMAPG ≥1 4 10 A9 WRTNMIREG ≥1 6 9 G1 AEN’ 7 Y7 IOW AEN’=AEN∩IO/M。 G2A G2B 74LS138在PC机系统板端口译码的应用: 转20页 为何中断控制1端口地址为0020H-003FH?
15 1 Y0 A3 A 14 2 ?~? A4 B 74LS138 13 3 A5 C 12 5 11 A6 ?~? ≥1 A8 4 10 A9 6 9 G1 AEN’ 7 Y7 G2A G2B 8个 08H(88H)、20H(A0H) 每个出端对应接口的端口数量? Y1、Y4对应端口地址?
7.2 微机系统与与输入/输出设备信息交换 7.2.1 无条件传送方式 特点:I时假设外设已准备好,O时假设外设空闲。 要求:接口I时加缓冲器,O时加锁存器。 应用:对简单外设的操作。 7.2.2 查询方式 工作原理:CPU查询外设已准备好后,才传送数据。 特点:CPU与外设间自然同步。 要求:不需要增加额外的硬件电路。 应用:适用在CPU不太忙且传送速度要求不高时。
7.2.3 中断传送方式 特点:CPU与外设可同时工作。 要求:接口中需要中断控制逻辑支持。 应用:适用于非高速度大量数据传送时。 7.2.4 直接存储器存取(DMA)方式 特点:数据的传送不经过CPU,I/O设备管理由CPU控制,简化CPU对I/O的控制。 要求:需要DMA控制器及相关逻辑支持。 应用:适用与高速度大量数据传送时。
7.2.5 I/O处理机(IOP)方式 特点: I/O处理机接管了CPU的各种I/O操作及I/O控制功能,CPU能与IOP并行工作。 要求:需要IOP支持。 应用:高速I/O归IOP管理,低速I/O设备归CPU管理。
7.3 可编程计数/定时器8254 8253的组成与功能 如图4.6、图4.7所示为8253/8254的内部结构及引脚图。 • 1.3个独立的16位计数器 3个计数器分别为计数器0、计数器1、计数器2,每个计数器的内部逻辑结构如图4.8所示。
此寄存器用来保存来自CPU送入的控制字。每个计数器都有一个控制命令寄存器,用于保存该计数器的控制信息。控制字将决定计数器的工作方式、计数形式及输出方式,也能决定应如何装入计数器初值。8253的3个控制寄存器只占用一个地址号,而靠控制字中最高二位来指定当前的控制字是发给哪一个计数器的。控制寄存器只能写入,不能读取。此寄存器用来保存来自CPU送入的控制字。每个计数器都有一个控制命令寄存器,用于保存该计数器的控制信息。控制字将决定计数器的工作方式、计数形式及输出方式,也能决定应如何装入计数器初值。8253的3个控制寄存器只占用一个地址号,而靠控制字中最高二位来指定当前的控制字是发给哪一个计数器的。控制寄存器只能写入,不能读取。 • 2.控制命令寄存器
3.读/写逻辑 读/写逻辑的任务是接收来自CPU的控制信号,完成对8253各计数寄存器的读/写操作。这些控制信号包括读信号RD、写信号WR、片选信号CS和片内寄存器对址信号A0、A1。
4.数据总线缓冲器 这是一个双向、三态8位缓冲器。它用于8253和系统数据总线连接。CPU通过数据总线缓冲器将控制命令字和计数值写入8253计数器,或者从8253计数器读取当前计数值。 8253的8位数据线D0~D7通常与系统数据总线D0~D7相连。8253共占用4个I/O地址。 8253各端口的地址分配见表4.8所示。
表4.8 8253端口的地址分配 返回本节
8253与系统的连接应用实例 • 图4.9为8253用作方波发生器与8088总线的接口方法。图中仅用了A7~A2作为8253片选地址线,产生片选信号Y1与8253的CS端相连。要求计数器2用作方波发生器产生40KHz方波输出。已知CLK2时钟端输入信号频率为2MHz。
图4.9 8253与8088总线的连接 返回本节