1、1,第八章 输入和输出,8.1.1 概述- 接口技术的基本概念 8.1.2 I/O端口编址方式 8.1.3 I/O端口地址分配 8.1.4 I/O端口地址译码 8.2 I/O程序传送方式,2,8.1.1 概述- 接口技术的基本概念,一、 接口的概念和功能 二、 接口电路的典型结构 三、 外部设备特点 四、 I/O接口和 I/O端口,3,一、 接口的概念和功能,1、接口和接口技术 2、为什么要用接口电路?,4,1、接口和接口技术,5,6,外设是用来实现人机交互的一些机电设备。 外设处理信息的类型、速度、通信方式与CPU不匹配, 不能直接挂在总线上,必须通过接口和系统相连,2、为什么要用接口电路?
2、,7,二、接口电路的典型结构,从编程角度看,接口内部主要包括一个或多个CPU可以进行读/写操作的寄存器,又称为I/O端口。 各I/O端口由端口地址区分。,8,按存放信息的不同,I/O端口可分为三种类型数据端口:用于存放CPU与外设间传送的数据信息状态端口:用于暂存外设的状态信息控制端口:用于存放CPU对外设或接口的控制信息, 控制外设或接口的工作方式。,1001 0101 (状态端口),0110 1010 (数据端口),1100 0110 (控制端口),地址 译码,数据 缓冲,控制 电路,外设,AB,DB,CB,CPU,9,CPU对外设输入/输出的控制,是通过对接口电路中各I/O端口的读/写操
3、作完成。,10,三、外部设备特点,由以上特点,对I / O 部分设计必须考虑两个问题: A 外设如何与CPU连接-必须通过I/O接口. B CPU如何寻址相应的I / O 设备-通过寻址与设备对应的I/O端口.,(1)品种繁多。 (2)工作速度一般比CPU慢,且速度的分布也相当宽。 (3)信号类型与电平种类多样化。 (4)信息结构形式复杂。,11,四、 I/O接口和 I/O端口,1.I/O接口(1) I/O接口是一电子电路(以IC芯片或接口板形式出现 ),其内有若干专用寄存器和相应的控制逻辑电路构成.它是CPU和I/O设备之间交换信息的媒介和桥梁.,(2)I/O接口的基本功能为: 进行端口地址
4、译码设备选择 向CPU提供I/O设备的状态信息和进行命令译码 进行定时和相应时序控制。 对传送数据提供缓冲,以消除计算机与外设在“定时” 或数据处理速度上的差异。 提供计算机与外设间有关信息格式的相容性变换。提供有关电气的适配 还可以中断方式实现CPU与外设之间信息的交换,12,(3)CPU与I / O之间的接口信号,数字:如二进制表示的字母.BCD码.ASC2码或字符。,开关量:一些两个状态的量。,状态信号:表示I/O装置状态的量。,控制信号:如CPU发出的R/W信号和从外设发来的中断信号等。,CPU,I / O 设置,数据,状态,控制,13,对CPU来说,外设状态信息须作为数据输入,而其控
5、制命令作为数据输出,为使它们与数据相互区别-这三者必须从各自端口出入。,14,2. I/O端口是 I/O接口中可通过编程实现寻址并进行读写的寄存器。CPU 与外设之间交换信息具体是通过I/O端口来进行的。即 端口 寄存器,注意:1.一个外设与CPU交换信息往往需要几个端口:数据端口控制端口状态端口,有时可以合用,15,2.在微机系统中,每个端口 分配有唯一的地址码,称之为端口地址。3.CPU对外设的访问实际上是通过对I/O端口的访问来实现的-因为端口与设备是一一对应的关系4.I/O通道也就是可以传送和暂存数据的实际通路,所以 I/O端口有时也称作I/O通道。,16,CPU与外设通过I/O接口通
6、信示意图:,17, 8.1.2 I/O端口编址方式,一、 存储器映象I/O寻址方式二、 独立I / O 的寻址方式三、 80X86的I/O指令寻址方式,18,一、 存储器映象I/O寻址1. 基本结构从存储器空间划出一部分地址空间给I/O设备,把I/O接口中的端口当作存储器单元一样进行访问,不设置专门的I/O指令。,19,2.特点 (1) 主存单元与I/O端口一起编址。 (2) 据地址区分访问是I/O端口还是主存。 (3) 系统中可以不设I/O指令。 3.优缺点 (1)指令兼容性,存储器指令也可用于I/O数据。 (2)I/O接口有较大的编址空间。 (3)I/O部分的控制逻辑比较简单。但是,其指令
7、功能不强,且处理机芯片有额外的对I/O进行操作的控制引脚。,20,二、独立I / O 的寻址方式,1. 特点 (1) 主存单元与I/O端口分开寻址 (2) 设置I/O指令 (3) 指明是访问I/O端口,还是主存单元? 2. 基本结构: 略 3. 优缺点: (1) 独立的控制结构,使其可与存储器分开进行设计。,21,但是,其指令功能不强,且处理机芯片有额外的对I/O进行操作的控制引脚。,(2) 单独的I/O指令,可与访问存储器的指令区分。 (3) 指令地址较短,所需译码硬件较少。 (4) 指令格式较短,执行时间也短。,22,三、 80X86的I/O指令,1. 输入指令 ININ AL , nIN
8、 AX , nIN AL , DXIN AX , DX2. 输出指令 OUTOUT N , AL/AX;OUT DX ,AL/AX; 说明:两种指令均可传送一个字节或字,且只能通过AL或者AX传送。 如:IN指令中的目的操作数必须是AL(字节传送)或AX(字传送),23,四、独立编址方式的端口访问1. I/O指令中端口地址的宽度IBM-PC系列采用I/O(input/output)指令访问端口,实现数据的I/O传送。,在I/O指令中可采用单字节地址或双字节地址寻址方式。若用单字节地址作业端口地址,则最多可访问256个端口。其指令格式为:IN AL,PORT ;输入OUT PORT,AL ;输出
9、 这里,PORT是一个8位的字节地址。,例如: IN AL,60H ;60H为系统板8255A的PA端口地址 OUT 61H,AL ;61H为系统板8255A的PB端口地址,24,双字节地址作为端口地址,则最多可寻址216=64K个端口。MOV DX, H IN AL, DX ;8位传送MOV DX, H OUT DX,AL ;8位传送 这里, H 为16位的两字节地址。,例如: MOV DX,300H ;300H为扩展板8255A的PA端口 IN AL,DX MOV DX,301H ; 301H为扩展板8255A的PB端口 OUT DX,AL,25,2. I/O端口访问 所谓对端口的访问就是
10、CPU对端口的读/写。将端口的数据传送存储器 例如: 输入时 MOV DX,300H ;I/O端口IN AL, DX ;从端口读数据到ALMOV DI,AL ;将数据从AL存储器输出时 MOV DX,301H ;I/O端口MOV AL,SI ;从内存取数到ALOUT DX,AL ;数据从AL端口,26,8.1.3 I/O端口地址分配,一、I/O接口硬件分类 二、I/O端口地址分配 三、I/O端口地址选用的原则,27,一、I/O接口硬件分类 I/O接口的硬件分成两类: 1.系统板上的I/O芯片 如定时/计数器、中断控制器、DMA控制器、并行接口等。2. I/O扩展槽上的接口控制卡 如软驱卡、硬驱
11、卡、图形卡、声卡、打印卡、串行通信卡等。,28,二、I/O端口地址分配PC微机是根据上述I/O接口的硬件分类,把I/O空间分成两部分。PC微机I/O地址线可有16根,对应的I/O端口编址可达64K字节,其端口地址译码是采用部分译码法,即只使用了低10位地址线一个A0A9,故其I/0端口地址范围是0000H003FFH,总共只有1024个端口。,29,表1 系统板上接口芯片的端口地址 I/O芯片名称 端口地址 DMA控制器1 00001FH DMA控制器2 0C00DFH DMA页面寄存器 08009FH 中断控制器1 02003FH 中断控制器2 0A00BFH 定时器 04005FH 并行接
12、口芯片(键盘接口) 06006FH RT/CMOS RAM 07007FH协处理器 0F00FFH,30,表2 扩展槽上接口控制卡的端口地址I/0接口名称 端口地址 游戏控制卡 20020FH 并行口控制卡1 37037FH 并行口控制卡2 27027FH 串行口控制卡1 3F83FFH 串行口控制卡2 2F02FFH 原型插件板(用户可用) 30031FH 同步通信卡1 3A03AFH 同步通信卡2 38038FH 单显MDA 3B03BFH 彩显CGA 3D03DFH 彩显EGG/VGA 3C03CFH 硬驱控制卡 1F01FFH 软驱控制卡 3F03F7H PC网卡 36036FH,31
13、,三、I/O端口地址选用的原则 凡是被系统配置占用了的地址一律不能使用; 未被占用的地址,用户可以使用,但申明保留的地址,不要使用。 用户可使用300H31FH地址。,32,8.1.4 I/O端口地址译码,一、I/O地址译码电路工作原理及作用 二、I/O地址译码方法 三、I/O端口地址译码电路设计,33,一、I/O地址译码电路工作原理及作用译码电路的输入信号I/O地址译码电路不仅仅与地址信号有关,而且与控制信号有关。 二、I/O地址译码方法高位地址线与CPU的控制信号进行组合,经译码电路产生I/O接口芯片CS的片选。低位地址线不参加译码,直接连到I/O接口芯片,进行I/O接口芯片的片内端口寻址
14、,即寄存器寻址。,34,三、I/O端口地址译码电路设计 1.固定式端口地址译码固定式是指接口中用到的端口地址不能更改。 例1:使用74LS20/30/32和74LS04设计I/O端口地址为2F8H的只读译码电路。 分析:若要产生2F8H端口地址,则译码电路的输入地址线就应具有如下所示的 值。译码电路输入地址线的值 地址线 0 0 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 二进制 0 0 1 0 1 1 1 1 1 0 0 0 十六进制 2 F 8,35,译码电路输入:地址线:10根,地址值:2F8HA9A0=1011111000B控制线:AEN=0 IOR=0译码电路输出:
15、Y=0 为译码选中。,36,37,当执行指令: MOV DX,2F8HI N AL,DX 时, Y=0 ,对应端口被选中,38,2.可选式端口地址译码-即 采用比较器设计可选址的译码电路,地址线:A1A0不参加译码。A4A3A2输入组合使74LS138译码器输出八个片选信号。A5=0,A9A8A7A6采用比较器和跳线开关变址。 比较器为74LS85,A0A1A2A3和B0B1B2B3为待比较的数据。 输入“A=B”为高选择相等比较。 输出“A=B”为1输入两组数据相等,否则 输入两组数据不相等。,39,40,一、无条件传送方式 二、有条件传送方式 三、中断传送方式 四、DMA传送方式, 8.2
16、 I/O程序传送方式,41,一、 无条件传送方式当外部设备的各种动作时间是固定的,且已知就可采用这种方式,把软件延时时间设计大于这个固定动作时间,不用状态判断。这种方式一般只需一个数据端口,42,无条件传送的输入方式,三 态 缓冲器,数据总线DB,地址总线,数据,来自外设,RD,IO/M,地址译码器,&,无条件传送的输入方式,8,43,无条件传送的输出方式,锁存器,数据总线DB,地址总线,到外设,WR,IO/M,地址译码器,&,CE,74LS237,无条件传送的输出方式,8,44,由于外设速度比较慢,要求输出数据在接口电路输出端维持一段时间,故必须加锁存器,锁存器,数据总线DB,地址总线,到外
17、设,WR,IO/M,地址译码器,&,CE,74LS237,8,45,二、有条件传送方式(又叫查询传送方式),无条件传送必须确认外设已经准备好才能用,有条件传送采用查询外设状态,这样接口部分除数据端口外,还须有状态信号端口。查询式输入其接口电路如下:,46,查询式输入接口电路,o,o,o,o,o,o,o,o,o,+5V,IO/M,RD,A7 A0,Ready(D4),RD,IO/M,CS,CS,输 入 装 置,数据,选通信号,D,Q,锁存器,缓冲器,缓冲器,地址译码,地址译码,状态口,数据口,数据,去DB,状态信息,&,&,R,数据端口,状态端口,47,当输入装置数据准备好发出一个选通信号,一面
18、把数据锁存起来,一面送D触发器的CLK端,将D=1打入Q端,使Q=1;CPU读入状态信息READY;当READY=1,输入数据;读入数据同时,将状态信号清零。 程序段如下: G0: IN AL,STATUS-PORT ;读入状态信息TEST AL,10H ;READY=1?JZ G0 ;未准备好,再查IN AL,DATA-PORT ;准备好,读入,48,查询式输出如图示,查询式输出接口电路,地址译码,o,o,o,o,o,o,o,o,A7 A0,IO/M,WR,IO/M,RD,+5V,Q,D,R,ACK,“BUSY”,DB,去 DB 状态信息BUSY(D0),输出数据端口,状态端口,数据,输 出
19、 装 置,锁存器,缓冲器,地址译码,&,&,CS,CS,地址译码,49,在输出时CPU需了解外设的状态,如无空则等待,有空执行输出指令,过程如下:当输出装置输出数据后,发ACK信号,将D触发器置0,即BUSY=0 CPU查询BYSY,若为0,转入,否,继续查 执行输出指令,把数据送至锁存器 同时令D触发器置1,它一方面告知外设, 数据已准备好,另一方面让BUSY=1,阻止CPU输出新的数据,50,程序段如下: G0: IN AL,STATUT-PORT ;输入状态信息TEST AL,01 ;BUSY=0?JNZ G0 ;为1,再查MOV AL,STORE ;从缓冲区取数OUT DATA-POR
20、T,AL ;输出数据,51,三、中断传送方式,采用查询方式,CPU要不断查询外设,当有些外设速度较低(例键盘、打印机),CPU要等待,效率低,采用中断方式可提高CPU效率。,INTR,主程序,响应,中断服务程序,返回,CPU,外设,52,当外设准备好(输入)或闲(输出),向CPU发出申请,CPU响应后,暂停执行原程序,转去执行中断服务程序。中断传送的接口电路如下:,53,中断传送接口电路,装置中断允许,o,o,o,o,o,o,输入装置,数据,锁存器,缓冲器,缓冲器,中断矢量,去DB,INTA(中断响应信号),INTR,去数据总线DB,地址总线,选通,IOR,+5V,D,Q,&,&,R,CS,地
21、址译码,54,以输入为例:输入装置输入一数据,发出选通信号,一方面把数据存入锁存器,一方面又使D触发器置1,在中断允许下,发出INTR, CPU在现行指令执行完后,发出INTA, 把外设送来的中断向量放到DB上,于是CPU转入中断服务程序,读入数据,同时清除中断请求INTR,中断处理完,CPU返回被中断处理的程序继续执行。,55,四、 DMA传送方式(直接数据通道传送),上述中断传送方式可大大提高CPU效率,但仍是由CPU来传送,要用不少指令,有些情况下仍嫌太慢,例磁盘与内存间交换数据,高速采集,高速数据块传送(内存内存)等,通常采用DMA传送。下面简单介绍一下概念。进行DMA传送要用到DMA
22、控制器(DMAC)为实现DMA方式而设计的专门接口。,56,DMAC包括四个寄存器:状态控制寄存器,数据寄存器,地址寄存器和字节计数器.这些寄存器在传送之前进行初始化。 DMAC的传送步骤: DMAC向CPU发出总线请求HOLD信号 CPU收到HOLD后,在当前总线周期的T4 状态输出一个总线响应信号HLDA,让出总线控制权,DMAC接管总线控制权进入DMA方式,57,发出地址信息,能对存储器寻址 发出读或写等控制信号,通过DB传送数据 修改地址指针、字节计数器,判断DMA传送是否结束 若传送完,发出DMA结束信号,CPU恢复对总线的控制DMA可实现:存储器外设存储器存储器,58,三态缓冲器和
23、锁存器,(一)三态缓冲器是微处理器并行总线接口中必须要使用的一种接口部件。,如图:,o,EN,输入,其中EN开门:,输入为1时,输出为1,输入为0时,输出为0,其中EN关门:,输入为1/0,输出为高阻,几个问题的讨论,59,(二)锁存器:功能是把来自设备的输入信息锁存起来,并一直稳定地保持它,直到微处理器取走信息。,如图:,1,8,D,D,EN,CP,.,o,60,CPU对多个外设的选择,当CPU与多个外设通信时,CPU就需要对各外设对应的接口芯片进行逻辑选择。 其中: CPU利用译码器对高位地址译码产生相应的片选信号,因此选择外设所对应的接口芯片的方法,与CPU与MEMORY相连时产生片选信
24、号的思想一样,也使用部分译码器,如:可使用3-8译码器。,61,输入/输出的定时与协调,在输入/输出的过程中,CPU与外设之间如果没有时间上的相互配合与协调,数据的传送过程无法正常进行。,(一)采用查询的方法通常,这种方法安排有一对“握手”线,作为通信时CPU与设备之间进行应答信号用。,其输入 “应答” 过程一般分为以下几步:,62,(1)外设通过数据线送到I/O接口,同时通过握手线1送“数据准备好”信号。 (2)CPU检查是否有 “数据准备好” 信号。 (3)若有 “数据准备好” 信号,则CPU 读数据。 (4)CPU 将 “输入响应” 信号通过握手线2送往外设。该信号表示上一个数据已取走,外设可再送下一个数据。,63,(二)采用中断的方法 (1)外设向CPU发出中断请求信号。 (2)CPU检查是否允许中断。 (3)若允许中断,则CPU发出中断响应信号。 (4)CPU读入中断类型码,执行中断服务子程序,传输数据。 (三)采用DMA方法 (1)外设向DMA控制器发出DMA请求信号。 (2)DMA控制器向CPU发出总线请求信号。 (3)若CPU交出总线控制权,则由DMA控制器完成数据传送。,64,缓冲区的问题,输入缓冲区 输出缓冲区 输入输出缓冲区 多缓冲区,end,65,本章结束,谢谢合作!,