1、微型计算机原理 与接口技术,第六章,1,教学目的,了解输入输出系统的基本知识 了解系统总线与输入输出设备的连接方式。 掌握简单设备接口的设计方法 了解中断的基本概念 了解中断的处理过程 熟悉8088/8086中断系统,第6章 输入/输出与中断技术,2,主机与外部设备之间要想协调工作,需要一个桥梁将外部设备的信息进行缓冲、定时和变换,这就是接口。,6.1 I/O接口概述,3,6.1.1 I/O接口功能,(1)信号电平转换 不同规格的电平转换为TTL或者MOS电路的电平。 (2)数据格式转换 串并互转换或数模互转换。 (3)速度匹配 通过缓冲或锁存保证CPU与外设或内存传输数据时各部件都能正确接收
2、数据。 (4)数据传送 建立数据传输的逻辑关系,即规定好数据传输的过程与时序。 (5)寻址能力 为外设的各个端口编址,使外设能被CPU访问到。 (6)错误检测功能 可进行数据校验,保证数据传输的正确性。,4,6.1.2 I/O接口的分类,按数据传送方式分 并行接口:一次传送一个字节或字的所有位。 串行接口:一位一位地传送。 CPU与接口之间通过系统总线传输信息,属于并行传输,传输的信息有接口的地址信息、控制信息和数据信息。 I/O接口与设备之间可以通过串行和并行两种方式交换信息,包括数据信息、控制信息和状态信息。,5,6.2 I/O端口及其编址方式,CPU与外设进行数据传输,接口电路需要设置若
3、干专用寄存器,缓冲输入输出数据,设定控制方式,保存输入输出状态信息,这些寄存器常称为端口。CPU通过对端口分配地址识别它们,称为编址。,6,6.2.1 I/O端口的概念,接口中可被CPU直接访问的专用寄存器称为端口。 CPU给每个端口分配一个地址,称为端口地址或端口号。 一个接口中的多个端口分配连续地址。 思考:专用寄存器中保存的是什么数据?这些数据可能是从哪里来的?,7,端口传送的信息,包括:状态信息(外设提供)、控制信息(CPU提供)和数据信息(CPU或外设提供),6.2.1 I/O端口的概念,根据数据传输方向,端口可分为输入端口和输出端口。 输入端口:具有“通断”控制能力 输出端口:具有
4、锁存能力 根据端口传输的信息,端口可分为数据端口、状态端口和控制端口 输入:数据端口、状态端口 输出:数据端口、控制端口,8,6.2.2 I/O端口的编址方式,I/O端口编址方式是计算机系统为I/O端口分配端口号的方式。 常见的I/O编址方式有两种: 与内存单元统一编址方式、I/O端口 独立编址方式,9,与内存单元统一编址方式,即存储器映射编址方式,在CPU的内存地址空间中划出一部分作为输入输出系统的端口地址范围,不能再作为内存地址使用。 优点:数据传送指令、测试指令都可以访问I/O端口,不用设置专门的I/O指令;不需要专用的I/O端口控制信号。 缺点:划出的端口地址范围,不能再作为内存地址使
5、用 ,所以减少了内存地址空间,从指令上难以区分内存还是端口操作。,10,独立编址方式,又称单独编址方式,给外部设备分配专用的端口地址,提供专用的控制信号,使它们成为一个独立的I/O地址空间,与内存编址无关。 优点:不占用内存空间;输入输出地址线根数少,I/O端口译码电路简单。 缺点:需要专用的I/O指令、专用控制线。,11,独立编址方式,8088/8086系统中,I/O端口地址范围从0000HFFFFH,共64K的地址空间。 指令: IN OUT 总线: A0A15 IOR IOW,12,6.3 CPU与外部设备之间的数据传送方式,主机与外设之间通过一定的控制方式进行信息交换,常用的控制的方式
6、包括无条件传送方式、程序查询传送方式、中断传送方式、直接存储器存取(DMA)方式。,13,6.3.1 无条件传送方式,又称为同步方式,适合简单外设的数据输入输出。 常用外设:开关、继电器、步进电机、发光二极管等。 优点:控制程序简单,软、硬件开销都少。,14,输入设备,输出设备,无条件输入接口,15,输入接口具有数据的通断能力,无条件输出接口,16,输出接口具有数据的锁存能力,6.3.2 程序查询传送方式,又称为条件传送方式。 I/O接口中有一个状态端口,CPU通过读取状态端口的信息了解设备目前的状态。 工作过程: 检查外设的状态,判断外设是否“准备好”。 若没有准备好,则继续查询其状态。 外
7、设已准备好,CPU与外设进行数据传送。 若还有数据待传输,则转,否则终止传输。,17,程序查询传送方式流程图,缺点: 效率低 实时性差 可用于简 单外设的 传输控制。,18,6.3.3 中断传送方式,当设备处于空闲状态或者外设数据准备好时,接口向CPU发出中断请求信号,CPU收到申请后及时响应接口的中断请求,暂停执行主程序,转入执行I/O操作程序(中断服务子程序),完成数据传输之后再返回到主程序继续执行,这种数据传送方式称为中断方式。,19,中断传送流程图,优点: 实时性好 处理迅速 缺点: 不适用于 大量数据 的高速传输。,20,程序控制下的输入输出方式,无条件传送方式、程序查询传送方式和中
8、断传送方式在数据传送过程中,CPU从内存读出数据,再输出到外部设备,因此,这三种方式被统称为程序控制下的输入输出方式(Programmed input and output),简称PIO方式。,21,6.3.4 DMA方式,直接存储器存取(Direct Memory Access)方式简称为DMA方式。 是在内存储器和I/O设备之间建立数据通路,不经过CPU的干预,实现内存与外设之间的快速数据传送。 实现DMA方式需要专门的硬件装置DMA控制器(DMAC),它负责控制外设与内存之间的数据传输。,22,DMAC的功能,DMAC接收外设请求信号,并向CPU发出总线请求信号。 DMA过程中可实现:
9、向地址总线发送地址信号,能够生成读写控制信号。 控制数据传送的字节数。 DMA过程结束时,能向CPU发出DMA结束信号,并将总线的控制权交还给CPU。,23,系统总线,CPU,DMAC,存储器,外设接口,AEN,IOW,MEMW,MEMR,IOR,MEMW,MEMR,IOW,IOR,AEN,HOLD,HLDA,DRQ,DACK,AEN,IOW,IOR,MEMW,MEMR, 外设发出DMA请求 DMAC向CPU申请总线 CPU完成当前总线周期后响应,并释放总线控制权 DMAC得到总线控制权,并发出DMA响应信号 由DMAC发出各种控制信号,控制外设与存储器之 间的数据传送 数据传送完后,DMAC
10、撤销HOLD信号 CPU释放HLDA信号,并重新控制总线,DMA控制方式,24,DMA方式工作流程, 外设向DMA控制器发出“DMA传送请求”信号(DRQ); DMA控制器收到请求后,向CPU发出“总线请求”信号HOLD,表示希望占用总线; CPU将数据总线、地址总线和相应的控制信号线均置为高阻态,向DMA控制器发出“总线响应”信号(HLDA); DMA控制器收到HLDA信号后,就开始控制总线,并向外设发出DMA响应信号DACK; DMA控制器送出地址信号和相应的控制信号,实现外设与内存或内存与内存之间的直接数据传送; 规定的数据传送完后,DMA控制器就撤销发往CPU的HOLD信号。CPU检测
11、到HOLD失效后,紧接着撤销HLDA信号,并在下一时钟周期重新开始控制总线。,25,6.4 简单接口电路的应用,本节将围绕典型的接口芯片分别举例说明简单输入接口和简单输出接口与系统的连接方式,并分析接口的一般组成。,26,6.4.1 简单的输入接口电路,74LS244: 8个三态门。 两个控制端:1G和2G,低电平有效,各控制4个三态门。 A端为数据输入端,Y端为数据输出端。 当控制端为低电平时,数据从A端输入,Y端输出;当控制端为高电平时,三态门呈高阻状态,A端与Y端断开。,27,简单的输入接口电路,分析端口地址 采用了部分地址译码方式 输入端口的地址应该有两个,分别为FFC0H与FFC1H
12、。,28,简单的输入接口电路,编写读取开关的程序 MOV DX, 0FFC0H IN AL, DX,29,简单的输入接口电路,分析开关状态与读入数据的关系 开关的状态有两种:高电平和低电平。当开关闭合时,A端为低电平,CPU读入的数据位为0;当开关断开时,A端为高电平,CPU读入的数据位为1。,30,简单的输入接口电路,判断开关的状态 当8个开关都闭合时,AL=0;当8个不全闭合时,AL0,通过测试AL中各个位的值可以了解各个开关的状态。,31,简单的输入接口电路,MOV DX, 0FFC1H IN AL, DX TEST AL, 0FFH JZ GOON NEXT: MOV AX, BX A
13、DD AX, CX GOON: ,32,简单的输入接口电路,测试K3的状态,K3断开时转到Label处执行,程序段如下: TEST AL, 4 JNZ Label Label: ,33,或门电路,6.4.2 简单的输出接口电路,74LS273,输出接口芯片 有8位D锁存器,输入端D0D7, 输出端Q0Q7 MR清除端,为低电平时,芯片复位,Q端输出全为0; CP触发端,上升沿触发,当CP从低电平到高电平跳变时,D0D7的数据输出到Q0Q7并锁存,直到CP端下一个上沿信号出现。,34,八段LED 显示器,35,八段LED显示字形代码表,36,通知:,由于端午节放假,第14周周一(6月2日)的实验
14、串到第14周周六(6月7日)对应时间段!,简单的输出接口电路,74LS273作为输出接口电路驱动一个共阴极8段LED显示器。请在LED显示器上循环显示数字0F 。,38,简单的输出接口电路,分析地址 设计程序,39,简单的输出接口电路,分析地址 74LS273的端口地址为FE00H,40,简单的输出接口电路,设计程序 数据段 字形代码表 代码段 读表(代码) 发送代码 延时 跳转,41,程序数据段,DSEG SEGMENT SEG8 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;显示字形编码表 DB 6FH,77H,7CH,39H,5EH,79H,71H,00H DS
15、EG ENDS,42,程序代码段1,CSEG SEGMENT ASSUME DS: DSEG , CS:CSEG START: MOV AX, DSEG MOV DS, AX ;程序代码段2 MOV AH, 4CH INT 21H CSEG ENDS END START,43,程序代码段2,LEA BX, SEG8 ;取8段码显示字形表基地址 MOV DX, 0FE00H AA1: MOV SI, 0 AA2: MOV AL, BX+SI ;取显示字形码 OUT DX, AL CALL DELAY ;调用延时子程序 INC SI CMP SI,16 JZ AA1 JMP AA2,44,延时子程
16、序,DELAY PROC NEAR ;子程序开始 PUSH CX MOV CX,2FFFH SUBS: LOOP SUBS POP CX RET DELAY ENDP ;子程序结束,45,6.5 中断技术,中断是计算机系统中广泛使用的一项重要技术,它不仅用于数据传输、系统功能调用,还利用中断实现了分时处理、实时处理、故障处理。,中断的概念,中断,是指在程序执行过程中,出现某种紧急事件,CPU暂停执行现行程序,转去执行处理该事件的程序中断服务程序,执行完后再返回到被暂停的程序继续执行,这一过程称为中断。,46,中断源,引起中断的设备或事件称为中断源 计算机的中断源可能是某个硬件部件,也可能是软件
17、。 常见的中断源有: 外围设备 CPU 存储器 控制器 总线 实时钟的定时 程序指令 硬件故障,47,中断的分类,内部中断包括:由CPU本身产生的中断、由控制器产生的中断、由程序员安排的中断指令引起的中断。 外部中断又根据中断事件的紧迫程度将中断源划分为可屏蔽中断和不可屏蔽中断。 可屏蔽中断是指可以延时处理的事件,例如打印机的输入输出中断请求。 不可屏蔽中断是指事件异常紧急,必须马上处理,例如掉电、内存奇偶校验错引起的中断。,48,6.6 中断处理的基本过程,中断处理的基本过程包括 中断请求 中断判优 中断响应 中断服务和中断返回。,49,6.6.1中断请求,内部中断无需请求 外部中断请求由中
18、断源提出。 CPU的两个中断输入引脚INTR和NMI负责接收中断请求信号。 INTR为可屏蔽中断请求输入引脚。 可屏蔽中断请求信号一般为高电平。CPU收到申请后检查标志寄存器中的中断允许标志位IF,当IF=1时,CPU接受中断请求;当IF=0时,CPU不予响应,该请求被屏蔽。 NMI为不可屏蔽中断请求输入引脚,边沿触发。,50,6.6.2中断判优,CPU一次只能接受一个中断源的请求。 多个中断源同时向CPU提出中断请求时,CPU必须找出中断优先级最高的中断源,这一过程称为中断判优。 中断判优可以采用硬件方法,也可采用软件方法。,51,软件判优,CPU检测到中断请求后,响应中断进入中断服务程序,
19、首先读取中断寄存器的内容,逐位检测它们的状态,检测到某一位为1,就确定对应的中断源有中断请求,转去执行它的中断服务程序。先检测哪一个,哪一个的优先级就高,后检测哪一个,哪一个优先级就低,检测的顺序就是各中断源的优先级顺序。,52,软件判优的简单电路,53,软件判优的简单电路,查询程序: MOV DX, 87FFH IN AL, DX ;读中断请求寄存器内容 RCR AL, 1 ;循环右移1位,最低位移CF,CF移最高位 JC IR0 ;IRQ0有请求,转IR0 RCR AL,1 JC IR1 ;IRQ1有请求,转IR1 RCR AL,1 JC IR2 ;IRQ2有请求,转IR2 软件判优的硬件
20、电路简单,优先权安排灵活,但软件判优所花的时间长,如果中断源很多,中断的实时性就很差。,54,硬件判优,两种常见的方式: 菊花链判优电路 中断控制器判优,55,菊花链判优电路,基本设计思想:每个中断源都有一个中断逻辑电路,所有的中断逻辑电路连成一条链,形如菊花链。排在链前端的中断源优先级最高,越靠后的设备优先级越低。CPU收到中断请求,如果允许中断,CPU发出中断应答信号INTA,INTA信号首先到达菊花链的前端。,56,菊花链判优电路,如果中断源1提出了中断请求,它就会截获INTA信号,封锁它,使它不能向下一个中断源传送。下面的中断源的中断请求不能被响应。,57,中断控制器判优,CPU的IN
21、TR和INTA引脚与中断控制器相连,外设的中断请求信号通过IR0IR7进入中断控制器。中断控制器向CPU发INTR请求信号,CPU接受中断申请后发出INTA信号后,中断控制器将中断向量码送出。,58,6.6.3中断响应,经过中断判优,中断处理就进入中断响应阶段。CPU在每条指令的最后一个时钟周期检测中断请求信号,若为非屏蔽中断请求,则CPU执行完现行指令后,就立即响应中断。 如果是可屏蔽中断请求。 CPU响应中断需要满足4个条件: CPU处于开中断状态,即IF=1; 当前没有发生复位、没有总线请求、没有内部中断、没有不可屏蔽中断; 当前执行的指令不是开中断指令STI,也不是中断返回指令IRET
22、。如果刚巧是,CPU将它们执行结束后,再执行一条指令,CPU才能响应中断。 CPU执行完现行指令。,59,6.6.3中断响应,中断响应时,CPU向中断源发出中断响应信号INTA,同时: 保护硬件现场,即将标志寄存器FLAGS入栈; 关中断,即设置IF=0; 保护断点,把主程序断点的CS 和IP值压入堆栈; 获得中断服务程序的入口地址,分别送入IP和CS中。,60,6.6.4中断服务,CPU响应中断以后,获得了中断服务程序的入口地址,转去执行中断服务程序,为设备服务。 中断服务的过程: 保护现场 开中断 中断服务 恢复现场 返回,思考:中断服务中的保护现场和中断响应中的保护现场有什么区别?,61
23、,6.6.5中断返回,在中断服务程序的最后一条语句IRET的功能就是中断返回的操作。中断返回操作是中断响应操作的逆过程,CPU从堆栈中弹出IP、CS和FLAGS,恢复被中断程序的基本信息,使被中断程序继续运行。,62,6.7 8086/8088中断系统,8086/8088CPU的中断系统具有很强的中断处理能力,可以处理256种中断。每种中断对应一个编号,范围0255,这个编号称为中断源的中断类型码或中断向量码。中断分为两类:内部中断和外部中断。外部中断又分为可屏蔽中断和不可屏蔽中断两类。,63,1. 外部中断,不可屏蔽中断 CPU一定要响应的中断。 NMI是不可屏蔽中断请求信号的输入端。 优先
24、级高于可屏蔽中断。 不可屏蔽中断的编号为2。 CPU不需获取中断向量码,不发送INTA,直接查中断向量表转去执行中断服务程序。 不可屏蔽中断用于处理紧急事件,如存储器读/写出错、电源掉电等。,64,可屏蔽中断 CPU可以延时接受的中断请求为可屏蔽中断。 INTR是可屏蔽中断请求信号的输入端。 CPU收到中断请求信号后,检测中断允许标志位IF,若IF=1,CPU准备响应INTR请求;若IF=0时,CPU屏蔽INTR请求。 中断标志位IF可以用指令STI和CLI进行设置。 可屏蔽中断的优先级低于不可屏蔽中断。,65,2. 内部中断,内部中断包括: INT n INT3 INTO指令 除法错中断 单
25、步中断,66,INT n CPU执行INT n指令,产生中断向量码为n的中断。n的取值范围0255。不管是内部中断还是外部中断都可以通过INT n指令调用其中断服务程序。 INT3 CPU执行INT3指令引起的中断,称为断点中断,中断向量码为3。这是个单字节指令,代码为0CCH。在调试程序时用这条指令设置断点。,67,INTO指令 CPU执行INTO指令时,检测溢出标志位OF,如果OF=1,则产生中断向量码为4的中断。若OF=0,INTO指令不起作用。 MOV BL,126 MOV AL,5 ADD AL,BL ;OF=1 INTO ;执行溢出中断服务程序,68,除法错中断 执行除法指令时,除
26、数为0或商数超出了结果寄存器的取值范围,产生中断,中断向量码为0。这个中断的处理过程一般由系统软件负责。 单步中断 也叫陷阱中断,中断向量码为1。标志寄存器的标志位TF=1产生的中断,TF也叫陷阱(Trap)标志。如果TF=1,CPU 执行一条指令后产生单步中断。单步中断常用于调试程序。,69,3.中断优先级与中断嵌套,8088/8086系统的中断优先级如下: 除法错中断INT nINTO不可屏蔽中断可屏蔽中断单步中断 中断嵌套:CPU暂时中断正在执行的中断服务程序,转去处理优先级更高的中断源,处理完以后,再返回到被中断的中断服务程序继续执行。中断嵌套使那些更紧急的优先级更高的中断源及时得到服
27、务。,70,4. 中断向量和中断向量表,8086为每个中断源分配了一个编号,称为中断类型码或中断向量码。 中断向量:中断服务程序的入口地址。 中断向量表:将中断向量按一定的规律排列成表。,71,4. 中断向量和中断向量表,256个中断向量 每个向量(入口地址)需要4个内存单元,256种中断共需要1K(1024)个内存单元。 8088/8086系统中的中断向量表位于内存低地址00000003FFH的存储区内。,72,4. 中断向量和中断向量表,当CPU调用中断向量号为n的中断服务程序时, 首先把n乘以4,得到它位于中断向量表中的首地址4n, 然后把以4n为首地址的连续两个单元的内容装入IP寄存器
28、,即IP=(4n:4n+1);再把(4n+2:4n+3)两个单元的内容装入CS寄存器,CPU就转去执行n的中断服务程序。,73,4. 中断向量和中断向量表,例:DOS系统中断的类型号为21H,在中断向量表中的首地址:n4=84H。 例:如中断类型号为20H,则中断向量的存放首地址为20H480H,(设中断向量表中0000:0080H0000:0083H的区域顺序存放着10H,20H,00H,40H)。当系统响应20H号中断,从中断向量表中取出该中断服务程序的入口地址为:CS:IP=4000H:2010H。,74,5. 8086/8088CPU中断处理流程,CPU在每条指令的最后一个时钟周期检测
29、有无中断请求,若有则可获得中断类型吗 获得中断类型码之后,各种中断的处理过程相同: 将中断类型码放入暂存器保存; 将标志寄存器内容压入堆栈,以保护中断时的状态; 将IF和TF标志清0; 保护断点,当前的IP和CS的内容入栈; 根据中断类型码,在中断向量表中找出中断服务程序的入口地址,装入IP和CS,转向中断服务程序。 执行中断服务程序; 中断返回。,75,8086/ 8088CPU中断处理流程,76,77,练习(P165 15题),已知对应于中断向量码为18H的中断服务程序存放在0020H:6314H开始的内存区域中,求对应于18H类型码的中断向量表的内容是什么?,中断服务程序入口地址为: 4*18H=60H 则在中断向量表中 00060H 存放:14H 00061H存放:63H 00062H存放:20H 00063H存放:00H,.,.,.,18H中断向量码,0020H:6314H,IP,CS,0000H:0060H,