微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月19日
微机原理与接口技术 第6章 输入输出接口 朱华贵 2015年11月19日
本章主要内容 I/O接口概述 1 常用I/O接口芯片 2 CPU与外设之间的数据传送方式 3 8086CPU的输入输出 4
6.1 I/O接口概述 输入和输出设备是计算机系统的重要组成部分,完成输入/输出(简称I/O)操作的部件称为输入/输出接口。 各种外部设备通过输入输出接口与系统相连,并在接口电路的支持下实现数据传输和操作控制。
计算机系统中接口的位置
6.1.1 CPU与I/O设备之间的接口信息 1.数据(Data) 2.状态信息(Status) 3.控制信息(Control) 数字量 模拟量 开关量 2.状态信息(Status) 3.控制信息(Control)
6.1.2 I/O接口的主要功能 1.对输入输出数据进行缓冲和锁存 2.对信号的形式和数据的格式进行变换 3.对I/O端口进行寻址 4.提供联络信号
6.1.3 I/O接口的结构 数据端口:用于数据信息I/O的端口。CPU通过数据接收端口输入数据,有的能保存外设发往CPU的数据;CPU通过数据输出端口输出数据,一般能将CPU发往外设的数据锁存。 状态端口:CPU通过状态端口了解外设或接口部件本身的状态。 控制端口:CPU通过控制端口发出控制命令,以控制接口部件或外设的动作。
6.1.4 输入输出的寻址方式 1.存储器映像的I/O寻址 从外部设备输入一个数据,作为一次存储器读的操作;而向外部设备输出一个数据,则作为一次存储器写的操作。
优点: CPU对外设的操作可使用全部的存储器操作指令,故指令多,使用方便。如可以对外设中的数据(存于外设的寄存器中)进行算术和逻辑运算,进行循环或移位等。 内存和外设的地址分布图是同一个。 不需要专门的输入输出指令以及区分是存储器还是I/O操作的控制信号。 缺点: 外设占用了内存单元,使内存容量减小。
6.1.4 输入输出的寻址方式 2. I/O映像的I/O寻址 I/O端口地址与存储单元地址分开编址。CPU有专门的I/O指令,用地址来区分不同的外设。 但要注意实际上是以端口(Port)作为地址单元,因为一个外设不仅有数据寄存器还有状态寄存器和控制命令寄存器,它们各需要一个端口才能加以区分,故一个外设往往需要数个端口地址。
优点: 缺点: I/O端口不占用存储器地址,故不会减少用户的存储器地址空间; 采用单独的I/O指令,使程序中I/O操作和其他操作层次清晰,便于理解。 缺点: 单独I/O指令的功能有限,只能对端口数据进行输入/输出操作,不能直接进行移位、比较等其他操作; 采用专用的I/O操作时序及I/O控制信号线,因而增加了微处理器本身控制逻辑的复杂性。
PC/AT/Pentium:A8=A9=0端口(256个)为系统板所用,其他端口(768个)为扩展槽所用。 系统板I/O接口芯片端口地址(0000H-00FFH): I/O芯片名称 地址范围 DMAC1 DMAC2 DMA页面寄存器 0000-001FH 00C0-00DFH 0080-009FH 中断控制器1 中断控制器2 0020-003FH 00A0-00BFH 定时器 并行接口芯片(键盘接口) RT/CMOS RAM 协处理器 0040-005FH 0060-006FH 0070-007FH 00F0-00FFH
例如:读取计算机的实时时钟并显示。根据COMS RAM实时钟信息存放位置表,是编写程序显示当前的时间,格式为时时:分分:秒秒。 MOV AL,4H;04H是存放“小时"的单元偏移地址 OUT 70H,AL;送地址端口 IN AL,71H;读数据端口
6.2 常用I/O接口芯片
6.2 常用I/O接口芯片
6.3 CPU与外设之间的数据传送方式 CPU与外设之间的数据传送方式一般有: 程序控制方式 中断方式 直接存储器存取方式DMA 通道控制方式
6.3.1 程序控制方式 采用程序控制方式时,状态和数据的传输由CPU执行一系列指令完成。数据传送过程中,或者由CPU查询外设状态,或者由外设向CPU发出请求。 这种方式又可分为无条件传输方式和程序查询方式。
1.无条件传输方式 CPU不需要了解外设状态,直接与外设传输数据,适用于按钮开关、发光二极管等简单外设与CPU的数据传送过程。 这种传输方式的特点是硬件电路和程序设计都比较简单,一般用于能够确信外设已经准备就绪的场合。
接口 CPU 数据线 译码 外 设 地址线 或门 M/IO WR 输 出
接口 CPU 数据线 译码 外 设 地址线 或门 M/IO RD 输 入
【例6-1】接口电路如图所示。编程不断扫描开关Ki(i=0~7)。若开关Ki闭合,对应的发光二极管LEDi(i=0~7)点亮,否则LEDi熄灭。
CODE SEGMENT ASSUME CS:CODE MAIN PROC FAR START: PUSH DS MOV AX,0 PUSH AX AGAIN: MOV DX,200H IN AL,DX ;读取开关状态 NOT AL ;取反 OUT DX,AL ;输出控制LED JMP AGAIN RET ;返回DOS MAIN ENDP CODE ENDS END START
【例6-2】硬件连接如前例图所示,要求LED0~LED7循环电亮。自到按“ESC”时退出。 CODE SEGMENT ASSUME CS:CODE MAIN PROC FAR START: PUSH DS MOV AX,0 PUSH AX MOV DX,200H ;设置I/O端口 MOV CL,01H ;设置输出初值
AGAIN: MOV AH,1 ;读键盘缓冲区字符 INT 16H CMP AL,1BH ;若为“ESC”键,则退出 JZ EXIT MOV AL,CL OUT DX,AL ;输出控制LED MOV BX,100 ;向子程序传递参数,实现1秒软延时 CALL DELAY ;子程序DELAY实现10ms延时 ROL CL,1 ;循环左移1位 JMP AGAIN EXIT: RET
DELAY PROC NEAR ;延时子程序DELAY PUSH BX PUSH CX WAIT0: MOV CX,2801 WAIT1: LOOP WAIT1 DEC BX JNZ WAIT0 POP CX POP BX RET DELAY ENDP MAIN ENDP CODE ENDS END START
2.程序查询方式 也称为条件传输方式,常用于慢速设备与CPU交换数据。
程序查询方式的一般过程为: CPU从接口中读取状态字; CPU检测状态字的相应位,是否满足“就绪”条件,如不满足,则转1); 如状态位表明外设已处于“就绪”条件,则传输数据。
输入时,状态寄存器的状态指示要输入的数据是否已经准备就绪; 准备好? 读取状态信息 输入数据 是 否 外设 数据线 状态线
常用的状态线有IBF,READY 功能: 1、输入设备准备好数据,状态线有效; 2、CPU读数据端口,取走数据后,状态线转换为无效
1、STB有效,(1)、输入设备数据进入锁存器;(2)、IBF 有效 2、CPU读状态端口 3、CPU读数据端口,同时清IBF 外设 1、STB有效,(1)、输入设备数据进入锁存器;(2)、IBF 有效 2、CPU读状态端口 3、CPU读数据端口,同时清IBF
1 STB IBF /RD 2 3
输出时,状态寄存器的状态指示输出设备是否空闲。 外设 忙? 读取状态信息 输出数据 否 是 数据线 状态线 常用的状态线有empty,busy 功能: 1、输出设备空闲,BUSY无效; 2、CPU写数据端口,输出设备输出数据,状态线转换为有效
2、CPU写数据,(1)、数据进入数据锁存器;(2)、BUSY 有效 3、输出设备工作完毕,busy无效 举例:打印机 外设 1、CPU读状态端口,查BUSY线 2、CPU写数据,(1)、数据进入数据锁存器;(2)、BUSY 有效 3、输出设备工作完毕,busy无效
6.3.2中断方式 不让CPU主动去查询外设的状态,而是让外设在数据准备好之后再通知CPU。这样,CPU在没接到外设通知前只管做自己的事情,只有接到通知时才执行与外设的数据传输工作,从而大大提高CPU的利用率。 中断方式详见第10章。
6.3.2中断方式 主程序 中断服务子程序 中断申请信号
6.3.3 直接存储器存取(DMA)方式 DMA方式就是在系统中建立一种机制,将外设与内存间建立起直接的通道,CPU不再直接参加外设与内存间的数据传输,而是在系统需要进行DMA传输时,将CPU对地址总线、数据总线及控制总线的管理权交由DMA控制器进行控制。当完成一次 DMA数据传输后,再将这个控制权还给CPU。
6.3.3 直接存储器存取(DMA)方式 DMA方式由硬件自动实现的,并不需要程序进行控制。 DMAC(称为DMA控制器)芯片来完成相关工作,如内存地址的修改、字节长度的控制。当CPU放弃数据总线、地址总线及控制总线的控制权时,由DMAC实现外设和内存间的数据交换,同时也包括与CPU之间必要的连接。
DMA的基本功能和步骤 (1) DMAC接收I/O接口的DMA请求,并向CPU发出总线请求信号HOLD; AB DB CB CPU DMAC Memory I/O HOLD HLDA (1) DMAC接收I/O接口的DMA请求,并向CPU发出总线请求信号HOLD; (2) 当CPU发出总线回答信号HLAD后,接管对总线的控制,进入DMA传送过程; (3) 能实现有效的寻址,即能输出地址信息并在数据传送过程中自动修改地址; (6) 在DMA传送结束后,能释放总线给CPU,恢复CPU对总线的控制。 (4) 能向存储器和I/O接口发出相应的读/写控制信号; (5) 能控制数据传送的字节数,控制DMA传送是否结束;
6.3.4 通道控制方式和I/O处理器 在大、中型计算机系统中,配置的I/O设备很多,输入输出操作十分频繁,如果仅用DMA控制器,则需要CPU不断地对各个DMA控制器进行设置,影响CPU的正常工作。 将DMA控制器的功能增强,使其能够按CPU的意图自行设置操作方式,控制数据传送。于是,DMA控制器发展成了通道控制器。
1. I/O 通道( I/O Channel ) 早期的“通道”是由一些简单的、主要用于数据输入输出的CPU构成,可配置简单的输入输出程序。 主CPU只需使用简单的通道命令启动通道,二者即可并行工作。输入输出程序可以在主存中,也可以在通道的局部存储器中。主CPU一旦启动通道工作,通道控制器即从主存或通道存储器中取出相应的程序,控制数据的输入输出。
2. I/O处理器(IOP) 通道控制器发展成I/O处理器(I/O Processor),也称为I/O处理机。 主要由一个进行I/O操作的CPU、内部寄存器、局部存储器和设备控制器组成。在一个通道处理器中可有多个通道,分别与多个设备控制器连接;而一个设备控制器可控制多台外设工作。在实际使用中,I/O处理器与主CPU构成多处理器(或称多处理机)系统,相互并行工作。
3.外围处理机(PPU) I/O处理器的功能不断增强,又出现了外围处理机PPU(Peripheral Processor Unit)。 除了完成I/O通道所要完成的I/O控制之外,还增强了路由选择、数码转换、格式处理、数据块检错/纠错等功能。它的算术逻辑处理功能增强,缓冲寄存器增多,基本上独立于主机完成所有的输入输出操作。
6.4 8086CPU的输入/输出 1、I/O 寻址64K 2、8086CPU的I/O指令 (1) 直接寻址输入/输出指令(八位端口地址) IN AL,n (字节输入) IN AX,n (字输入) OUT n,AL (字节输出) OUT n,AX (字输出) 0000H 00FFH n 0100H FFFFH
(2)DX寄存器间接寻址输入(十六位端口地址) IN AL,DX (字节输入) IN AX,DX (字输入) OUT DX,AL (字节输出) OUT DX,AX (字输出) 0000H 00FFH 0100H FFFFH DX
3、有关端口地址问题 a、8086CPU与外设交换数据可以字或字节进行; b、当以字节进行时,偶地址端口的字节数据由低8位数据线D7~D0位传送,奇地址端口的字节数据由高8位数据线D15~D8传送; c、当用户在安排外设的端口地址时,如果外设是以8位的方式与CPU连接,就只能将其数据线或者与CPU的低八位或者与高八位连接,这样同一台外设的所有寄存器端口地址都只能是偶地址或是奇地址,这时设备的端口地址就会是不连续的。