1 / 227

第六章 输入输出和中断技术

第六章 输入输出和中断技术. 本章内容 基本概念 I/O 端口的编址 输入输出的基本方法: 无条件 、 查询 、 中断 、 DMA 中断 中断基本概念 8086/8088 中断系统 8259 中断控制器 * DMA* DMA 的基本概念 DMA 工作过程 DMA 的三种传输方式 . 地址总线 AB. CPU. I/O 接 口. 输 出 设 备 O. I/O 接 口. 存 储 器 M. 输 入 设 备 I. 数据总线 DB. 控制总线 CB. 微型计算机中 I/O 接口的作用. CPU. I/O 接口

nickan
Download Presentation

第六章 输入输出和中断技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第六章 输入输出和中断技术 • 本章内容 • 基本概念 • I/O端口的编址 • 输入输出的基本方法:无条件、查询、中断、DMA • 中断 • 中断基本概念 • 8086/8088中断系统 • 8259中断控制器* • DMA* • DMA的基本概念 • DMA工作过程 • DMA的三种传输方式

  2. 地址总线 AB CPU I/O 接 口 输 出 设 备 O I/O 接 口 存 储 器 M 输 入 设 备 I 数据总线 DB 控制总线 CB 微型计算机中I/O接口的作用

  3. CPU I/O接口 电路 I/O 设备 • 什么是I/O接口(电路)? • I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路,I/O接口就是CPU与外设的连接部件。 • PC机系统板的可编程接口芯片、I/O总线槽的电路板(适配器)都是I/O接口电路 接口在CPU与外设之间

  4. 6.1 输入/输出接口(I/O接口) • 6.1.1 概述 • I/O接口的定义 把外设连接到总线上的一组逻辑电路的总称。实现外设与主机之间的信息交换。 • I/O接口要解决的问题 • 速度匹配(Buffer) • 信号电平和驱动能力(电平转换器、驱动器) • 信号形式匹配(A/D、D/A) • 信息格式(字节流、块、数据包、帧) • 时序匹配(定时关系) • 总线隔离(三态门)

  5. I/O接口的功能 • I/O地址译码与设备选择 • 把选中的与总线相接,未选中的与总线隔离(高阻态) • 数据的缓冲与暂存 • 缓解接口与CPU工作速度的差异 输出接口有锁存环节 输入接口有缓冲环节 • 对外设进行监测、控制与管理,中断处理 • 信号电平与类型的转换 • 形式、格式、电平、功率、码制等

  6. 6.1.2 I/O接口的编址方式 • I/O端口: I/O信息的三种类型:数据、命令、状态。 传送这三类信息的通道分别称为:数据端口(I、O)、命令端口(O)、状态端口(I)。 • 不同外设具有的端口数各不相同,计算机中为每一个端口都赋予一个惟一编号——称为端口地址(或端口号)。 • 端口有两种编址方式:统一编址和独立编址。

  7. I/O接口电路的基本结构

  8. 1. 统一编址 地址空间(共1MB) 0 • 定义 把外设接口与内存统一进行编址。各占据统一地址空间的不同部分。 • 优点 • 指令统一,灵活; • 访问控制信号统一,使用同一组的地址/控制信号。 • 缺点 • 内存可用地址空间减小 例如:MCS-51单片机 内存地址 (960KB) EFFFFH F0000H I/O地址 (64KB) FFFFFH

  9. 2. 独立编址 • 定义:外设地址空间和内存地址空间相互独立。 • 优点:内存地址空间不受I/O编址的影响 • 缺点:I/O指令功能较弱,使用不同的读写控制信号 例如:8088/8086 微机系统 内存地址空间 I/O地址空间 00000H 0000H I/O空间 (64KB) FFFFH 内存空间 (1MB) FFFFFH

  10. MCS-51单片机

  11. 20 16 8088/ 8086

  12. MEMR、MEMW 8 0 8 8/8086 总 线 存储器访问 A19-A0 IOR、IOW 、AEN I/O访问 A15-A0 例如:8088/8086系统 D15/D7~D0 D15/D7~D0

  13. 8088/8086 CPU的I/O编址方式 • 采用I/O独立编址方式(但地址线与存储器共用) • 地址线上的地址信号用 来区分: • /0时为I/O地址/M地址 • I/O操作只使用20根地址线中的16/8根:A15/7~ A0 • 可寻址的I/O端口数为64K(65536)/256个 • I/O地址范围为0~FFFFH/0~FFH • IBM PC只使用了10根A9~ A01024个I/O地址(0~3FFH) 原因:够用为度, 简化电路

  14. 6.1.3 I/O端口地址的译码 I/O接口 (1端口) • 、 、 A15~ A0 OUT指令 将使总线的 信号有效 IN 指令 将使总线的 信号有效 当接口只有1个端口(仅数据口,无状态口和控制口)时,16位地址线一般应全部参与译码,译码输出直接选择该端口; 下面先介绍这种简单情况 当接口具有多个端口时,则16位地址线的高位参与译码(决定接口的基地址),而低位则用于确定要访问哪一个端口。 A0~A15 译码器 CS 例如: 某外设接口有4个端口(如8255/8253),地址为2F0H~2F3H,则其基地址为2F0H,由A15~A2译码得到,而A1、A0用来确定4个端口中的某一个。请思考:A0~A15=? I/O接口 (4端口) A0 A0 A1 A1 译码器 CS … A2~A15

  15. 6.1.4 I/O数据的传送方式 • 并行 • 定义:一个数据单位(通常为字节)的各位同时传送 • 特点:速度快、距离短、成本高 • 例如:PC机的并行接口(通常用于连接打印机) • 串行 • 定义:数据按位进行传送 • 特点:速度慢、距离远、成本低 • 例如:PC机的串行接口(通常用于串行通信)

  16. 6.2 简单接口电路 • 6.2.1 接口电路的基本结构 数据输入寄存器 (or 三态门) 译码 电路 数据线 AB (A0-A15) 数据输出寄存器 (锁存器) 接主机 接外设 DB (D0-D7) 状态线 状态寄存器 (or 三态门) 控制 逻辑 CB (IOR、IOW) 控制线 命令寄存器

  17. 接口电路的典型结构 AB 地址 译码 C P U 外 设 I/O端口1 (状态端口) DB 数据 缓冲 I/O端口2 (数据端口)      数据端口:用于存放CPU与外设间传送的数据信息 状态端口:用于暂存外设的状态信息 控制端口:用于存放CPU对外设或接口的控制信息,      控制外设或接口的工作方式。 CB 控制 电路 I/O端口3 (控制端口) 按存放信息的不同分类 • CPU对外设输入/输出的控制,通过对接口电路中各I/O端口的读/写操作完成。 • 端口 地址编号 • 从编程角度看,接口内部主要包括一个或多个CPU可以进行读/写操作的临时寄存器,又称I/O端口(Port)。 • 各I/O端口由端口地址区分(80X86 64K) ----编址方式 可用普通逻辑芯片(本章) 也可用专用接口芯片(下章)

  18. 接口电路的基本结构(续) • 数据输入/输出寄存器(缓冲器/锁存器) ——暂存输入/输出的数据。 • 命令寄存器(锁存器) ——存放控制命令,用来设定接口功能、工作参数和工作方式。 • 状态寄存器(缓冲器) ——保存外设当前状态,以供CPU读取。 • 一个外设一般占用端口地址情况 ——数据I/O、命令、状态三个寄存器各占一个端口地址(共3个);有时把命令、状态两个寄存器共占一个端口地址(共2个);一些简单外设只有数据寄存器一个端口(共1个)。 I/O接口可用普通门电路或专用电路制作

  19. T2 T1 T3 T4 8088 CLK GND A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND VCC A15 A16/S3 A17/S4 A18/S5 A19/S6 SSO MN/MX RD HOLD HLDA WR IO/M DT/R DEN ALE INTA TEST READY RESET IO/M A19~A16 /S6~S3 A15~A8 AD7~AD0 A7 ~ A0 D7 ~ D0 ALE RD DT/R DEN 8088CPU最小模式下, I/O端口读周期时序

  20. T2 T1 T3 T4 8088 GND A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND VCC A15 A16/S3 A17/S4 A18/S5 A19/S6 SSO MN/MX RD HOLD HLDA WR IO/M DT/R DEN ALE INTA TEST READY RESET CLK IO/M A19~A16 /S6~S3 A15~A8 AD7~AD0 A7 ~ A0 D7 ~ D0 ALE WR DT/R DEN 8088CPU最小模式下, I/O端口写周期时序

  21. CPU总线I/O读、写时序(简化) T4 Tw T3 Tw T4 T2 T1 T3 T2 T1 CLK CLK A15~A0 A15~A0 D7~ D0 D7~D0 IOR IOW IN指令时序 OUT指令时序

  22. 简单接口电路(无条件传输) • 数据输入接口 • 必须具有三态输出能力,以便与总线挂接 • 外设有数据保持能力时—可用三态门实现 • 外设无数据保持能力时—用三态输出的锁存器实现 • 数据输出接口 • 常用锁存器实现

  23. 简单数据输入接口电路 • 三态门:高电平、低电平、高阻态 • 通常一个器件中包含8个三态门 • 常用芯片:74LS244(教材图6.3) • 应用例子:开关接口 • 工作波形图如下: A B E A0~A15 地址有效 IOR 译码输出 D0~D7 开关状态

  24. 简单的输入接口举例 编程实现如果所有开关都闭合,则程序转向标号NEXT1,否则转向NEXT2。 MOV DX,83FCH IN AL, DX AND AL,0FFH JZ NEXT1 JMP NEXT2 译码器 0 1 1 1 1 1 1 1 1 0 0 0 0 83FCH ~83FFH 0 0 0 0 0 输入设备 接口电路 系统总线

  25. 简单的输出接口举例 • 锁存器:由D触发器构成 • 通常一个器件包含:8个D触发器(+8个三态门) • 常用芯片:(教材图6.5、图6.6) • 74LS273(具有二态输出的D锁存器,内部结构见图6.5) • 74LS374(具有三态输出的D锁存器,内部结构见图6.8) • 应用例子:发光二极管接口 MOV DX,0FFFFH MOV AL,01000001B OUT DX,AL +5V 74LS273 R =1 D0 | D7 Q0 D0~D7 . . . . . . . . . . . . 功能: 第1、7个发亮,其余不亮 译 码 器 A0~A15 CP R =1 Q7 IOW 译码器具体连接见图6-6 输出设备 接口电路 系统总线 74LS374使用见图6-9

  26. 无条件传送方式(包括I/O) 数据 输出端口 选中地址 写信号 输入端口 读信号 无条件传送(I/O)

  27. 输入/输出接口综合应用例子 • 根据开关状态在7/8段数码管上显示数字或符号 • 共阳极7段数码管结构见p255 图6.10 • 用74LS273作为输出接口,把数据送到7段数码管 • 74LS273的地址假设为F0H • 用74LS244作为输入口,读入开关K0~K3的状态 • 74LS244的地址假设为F1H • 当开关的状态分别为0000~1111时,在7段数码管上对应显示’0’~’F’ • 7段码表见下面

  28. 共阳极、共阴极两种 a b f g e C d h a b c d e f g h a b c d e f g h com com 共阳极 共阴极

  29. 0~F的共阳极7段显示码表(已反相)

  30. 74LS273的端口地址:00F0 H = 0000 0000 1111 0000 B 74LS244的端口地址:00F1 H = 0000 0000 1111 0001 B D0 Q0 | Q1 D7 Q2 Q3 Q4 CP Q5 Q6 Q7 a b c d e f g h D0~D7 8个 反相器 译码电路 ≥1 IOW & 74LS138 A7~A4 G1 G2A G2B C B A Rx8 74LS273 7406 共阳极 7段数码管 ≥1 Y0 +5V A15~A8 K0~K3 D0 O1 I1 O2 I2 O3 I3 O4 I4 E1 A3 A2 D1 Y1 A1 D2 A0 D3 ≥1 IOR 开关 74LS244

  31. 相应程序段如下: …… Seg7 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,67H,77H,7CH,39H,5EH,79H,71H …… LEA BX, Seg7;取7段码表基地址 MOV AH, 0 GO:MOV DX, 0F1H ;开关接口的地址为F1H IN AL, DX ;读入开关状态 AND AL, 0FH ;保留低4位 MOV SI, AX ;作为7段码表的表内位移量 MOV AL, [BX+SI];取7段码 思考:可否改用XLAT? MOV DX, 0F0H ;7段数码管接口的地址为F0H OUT DX, AL JMP GO

  32. CPU与外设间的数据传送方式 I/O接口电路基础:三态缓冲器/锁存器 问题:CPU与外设的工作速度不一致,尤其是当外设由其他CPU或时序电路控制时更加明显,应如何解决效率和可靠性。 数据传送控制:使两者高效、可靠地进行数据传送 四种传送方式 (1)无条件传送方式 (2)条件传送方式 ( 查询方式) (3)中断传送方式 (4)DMA传送方式 ( Direct Memory Access ) 存贮器直接存取方式 (程序方式)

  33. IO总线 DB 三 态 缓冲器 开关 状态 D7 ~ D0 地址 译码 AB 284H A15 ~ A0 0 与 非 0 0 IOR 典型无条件传送方式接口电路(输入) 例: 开关 图中译码电路的作用: 只当A15~A0上出现284H时, (即0000 001010000100B) 输出0,其他输出1。 74LS244 E1/E2 该电路在CPU执行指令(当外设开关准备好后-开关动作时间固定) MOV DX, 284H IN AL, DX 功能:将输入设备的数据读入CPU内AL中

  34. 典型无条件传送方式接口电路(输出) IO总线 D7 ~ D0 数据线 锁存器 输出 设备 A15 ~ A0 地址 译码 地址线 288H 0 与 非 0 0 IOW 该电路在CPU执行指令(当外设LED指示灯准备好后—实际上一直处于准备好) MOV AL, 81H MOV DX, 288H OUT DX, AL 功能:CPU内AL中的数据81H送至输出设备 例:LED指示灯 74LS273 图中译码电路的作用: 只当A15~A0上出现288H时, (即0000 0010 1000 1000B) 输出0,其他输出1。

  35. 无条件传送方式(同步传送方式) (程序方式之一) • 实现方法 CPU不查询外设工作状态, 与外设速度的匹配通过在软件上延时完成, 在程序中直接用I/O指令,完成与外设的数据传送 • 特点 1. 适用于外设动作时间已知, 前提:CPU与外设进行数据传送时,外设保证已准备好。如开关、发光器件(如发光二极管、7段数码管、灯泡等)、继电器、步进电机等。 2. 软硬件十分简单。

  36. 从状态端口读入状态信息 N 外设准备好否? Y 从数据端口传送一个数据 (程序方式之二) 条件传送方式(查询传送方式) 编程流程 • 实现方法: 在与外设进行传送数据前,CPU先查询外设状态,当外设准备好后,再才执行I/O指令,实现数据传送。 • 特点: 1. CPU通过不断查询外设状态,实现与外设的速度匹配; 2. CPU的工作效率低,响应速度慢; 3. 适用于简单、慢速的或实时性要求不高的外设. 注意:多个外设时,查询流程见教材P259 图6.15-查询顺序代表了优先级

  37. 查询方式输入例 假设外设的状态端口为28C H(83H), 其中D7=1时,表示外设数据准备好 外设的数据端口为288 H(80H)。 实现从外设读50H个字节到内存缓冲区buffer中。 地址线 C P U 输入 外 备 地址 译码 28CH端口 状态端口 数据线 数据 缓冲 288H端口 数据端口 控制线 控制 电路 状态 信号 数据 信号 I/O接口

  38. 查询方式输入接口电路 PC总线 IOR 数据 端口 地址 译码 地址线 A15 ~ A0 288H 锁 存 器 三 态 缓冲器 数 据 线 D7 ~ D0 R Q D 三 态 缓冲器 D7 状态 端口 地址 译码 28CH D7 D6 D0 IOR BUSY & & READY GND MOV DX, 288H IN AL, DX 状态端口 D7=1 表示外设准备好 输 入 装 置 D0 : D7 READY STB +5v MOV DX, 28CH IN AL, DX

  39. 从28CH状态端口 读入外设状态信息 N Y Y D7=1, 外设准备好否? 从288H数据端口 读入一个字节数据 N 50H个数据传送结束? 流程图 编程从外设读入50H个字节到内存缓冲区buffer中

  40. 查询方式输入程序片段 思考:若状态口和数据口为83H和80H,则程序应如何修改? STATUS EQU 28CH MOV AX, SEG buffer ;取缓冲区首地址 MOV DS, AX LEA DI, buffer MOV CX, 50H ;传送个数 next:MOV DX, STATUS ask:IN AL, DX ;从状态端口读入状态信息 TEST AL, 10000000B ;80H, 检测D7位 JZask ;D7=0,继续查询 MOV DX, 288H IN AL, DX ;从数据端口读入数据 MOV [DI], AL ;送缓冲区 INC DI ;修改缓冲区指针 LOOP next ;传送下一个 ….

  41. 查询方式输出例 假设外设的状态端口为28C H, 其中D0 = 0时,表示外设准备好 外设的数据端口为288 H。 编程将缓冲区buffer的80H个字节输出到外设。 地址线 C P U 输出 外 备 地址 译码 28CH端口 状态端口 数据线 数据 缓冲 288H端口 数据端口 控制线 控制 电路 状态 信号 数据 信号 I/O接口

  42. 查询方式输出接口 IOW 数据 端口 地址 译码 地址线 A15 ~ A0 PC 总 线 288H 输 出 设 备 锁 存 器 D7 ~ D0 数 据 线 三 态 缓冲器 R D Q D0 状态 端口 地址 译码 +5v ACK D7 D6D0 28CH IOR & & BUSY MOV DX, 288H OUT DX, AL 状态端口 D0 = 0 表示外设准备好 READY (BUSY) MOV DX, 28CH IN AL, DX

  43. 从28CH状态端口 读入外设状态信息 N Y Y D0=0, 外设准备好否? 将一字节数据送至 288H数据端口 N 80H个数据传送结束? 条件查询输出流程图 编程将缓冲区buffer的80H个字节输出到外设

  44. 查询方式输出程序片断 STATUS_PORT EQU 28CH DATA_PORT EQU 288H MOV AX, SEG buffer ;取缓冲区首地址 MOV DS, AX LEA SI, buffer MOV CX, 80H ;传送个数 next:MOV DX, STATUS_PORT ask:IN AL, DX;从状态端口读入状态信息 TEST AL, 0000 0001B ;检测D0位 JNZ ask ;D0=1,继续查询 MOV AL, [SI] ;从缓冲区取数 MOV DX, DATA_PORT OUT DX, AL ;从数据端口输出数据 INC SI ;修改缓冲区指针 LOOP next ;输出下一个 ….

  45. 中断传送方式 • 实现方法: 1. 当外设准备好,向CPU发出中断请求 2. CPU在满足响应中断的条件下,发出中断响应信号; 3. CPU暂停当前的程序,转去执行中断服务程序, 完成与外设的数据传送; 4. CPU从中断服务程序返回,继续执行被中断的程序

  46. 设 发申请 中断服务程序 发申请 中断服务程序 中断方式下CPU执行程序流程 时间随机 两者无关 硬件中断---NMI 与INTR两根线申请中断(与CALL差别大) 软件中断---INT n与INTO指令(与CALL功能类似)

  47. 中断传送方式 4 1 3 2

  48. 中断过程大致分为: • 中断请求:由需要提供中断服务程序的设备提出; • 中断响应:CPU给设备发出一个中断应答信号; • 现场保护:保护执行中断服务程序前的各种信息; • 执行中断服务程序:完成特定的操作; • 退出中断服务程序:恢复现场。

More Related