Top Banner
第 6 第 第第第第第第 6.3 中中中中 6.4 中中中中中中中 6.5 中中中中 6.2 中中中中中中 6.1 中中中中中中中中中
144

第6章 输入输出技术

May 31, 2015

Download

Documents

jugn

hgfdh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 第6章 输入输出技术

第 6章 输入输出技术

6.3 中断方式6.4 直接存贮器存取

6.5 例题解析

6.2 程序控制方式

6.1 输入输出的基本方法

Page 2: 第6章 输入输出技术

- 2- 目录 上页 下页 结束

第 6 章 基本输入输出接口教学重点

I/O 接口电路的典型结构 无条件传送方式 查询传送方式 中断工作过程

Page 3: 第6章 输入输出技术

- 3- 目录 上页 下页 结束

6.1 输入输出的基本方法6.1.1 输入输出接口的概念及基本结构

为什么需要 I/O 接口(电路)?微机的外部设备多种多样工作原理、驱动方式、信息格式、以及工作

速度方面彼此差别很大它们不能与 CPU 直接相连必须经过中间电路再与系统相连这部分电路被称为 I/O 接口电路

多种外设

1. 接口电路

Page 4: 第6章 输入输出技术

- 4- 目录 上页 下页 结束

6.1.1 输入 / 输出接口概述(续 1 )什么是 I/O 接口(电路)? I/O 接口是位于系统与外设间、用来协助

完成数据传送和控制任务的逻辑电路 PC 机系统板的可编程接口芯片、 I/O 总

线槽的电路板(适配器)都是接口电路

CPUCPUCPUCPU 接口接口电路电路

I/OI/O

设备设备

Page 5: 第6章 输入输出技术

- 5- 目录 上页 下页 结束

6.1.1 输入 / 输出接口概述(续 2 )什么是微机接口技术? 处理微机系统与外设间联系的技术 注意其软硬结合的特点 根据应用系统的需要,使用和构造相应

的接口电路,编制配套的接口程序,支持和连接有关的设备

Page 6: 第6章 输入输出技术

- 6- 目录 上页 下页 结束

2. 接口电路分类 ⑴ 按接口电路的通用性

⑵ 按数据传送格式

⑶ 按接口是否可编程

⑷ 按时序控制方式

专用接口 通用接口

并行接口 串行接口

可编程接口 不可编程接口

同步接口 异步接口

Page 7: 第6章 输入输出技术

- 7- 目录 上页 下页 结束

3. 接口的基本功能⑴ 对输入输出数据进行缓冲和锁存

输出接口有锁存环节输入接口有缓冲环节

⑵ 对信号的形式和数据的格式进行变换微机直接处理:数字量、开关量、脉冲量

⑶ 对 I/O 端口进行寻址⑷ 与 CPU 和 I/O 设备进行联络⑸ 中断管理 /DMA 控制功能

Page 8: 第6章 输入输出技术

- 8- 目录 上页 下页 结束

4. 接口电路的基本结构

控制总线 CB

地址总线 AB

I/O 接口电路数据

控制

状态

数据总线 DBCPU 外设

控制寄存器

状态寄存器

数据寄存器

Page 9: 第6章 输入输出技术

- 9- 目录 上页 下页 结束

6.1.2 外设接口的编址方式接口电路占用的 I/O 端口有两类编排形式 I/O 端口单独编址

I/O 地址空间独立于存储地址空间如 8086/8088

I/O 端口与存储器统一编址它们共享一个地址空间如 M6800

Page 10: 第6章 输入输出技术

- 10- 目录 上页 下页 结束

1. I/O 端口与存储器统一编址 优点:

不需要专门的 I/O 指令I/O 数据存取与存储器数据

存取一样灵活 缺点:

I/O 端口要占去部分存储器地址空间

程序不易阅读(不易分清访存和访问外设)

内存部分

I/O部分

存储空间

0

FFFFF

Page 11: 第6章 输入输出技术

- 11- 目录 上页 下页 结束

2. I/O 端口单独编址 优点:

I/O 端口的地址空间独立控制和地址译码电路相对简

单专门的 I/O 指令使程序清晰

易读 缺点:

I/O 指令没有存储器指令丰富

内存空间

I/O空间

FFFFF

0

FFFF

0

80x86 采用 I/O 端口独立编址80x86 采用 I/O 端口独立编址

Page 12: 第6章 输入输出技术

- 12- 目录 上页 下页 结束

补充 : 8088/8086 的输入输出指令 输入指令

IN AL,i8/DX ; 字节输入IN AX,i8/DX ; 字输入

输出指令OUT i8/DX,AL ; 字节输出OUT i8/DX ; 字输出

功能演示

功能演示

Page 13: 第6章 输入输出技术

- 13- 目录 上页 下页 结束

6.1.3 输入输出的基本方法

1. 程序控制方式 2. 中断控制方式 3. 直接存储器存取控制方式 4. 通道方式 5. 外围处理方式

Page 14: 第6章 输入输出技术

- 14- 目录 上页 下页 结束

数据传送方式 程序控制下的数据传送——通过 CPU 执行程

序中的 I/O 指令来完成传送,又分为: 无条件传送 查询传送 中断传送

直接存储器存取( DMA )——传送请求由外设向 DMA 控制器( DMAC )提出,后者向 CPU 申请总线,最后 DMAC 利用系统总线来完成外设和存储器间的数据传送

I/O 处理机—— CPU 委托专门的 I/O 处理机来管理外设,完成传送和相应的数据处理

Page 15: 第6章 输入输出技术

- 15- 目录 上页 下页 结束

1. 无条件传送方式及其接口在 CPU 与慢速变化的设备交换数据时,可以认为

它们总是处于“就绪”状态,随时可以进行数据传送,这就是无条件传送,或称立即传送、同步传送

适合于简单设备,如 LED 数码管、按键 / 按纽等 无条件传送的接口和操作均十分简单 这种传送有前提:外设必须随时处于就绪状态

传送流程传送流程

接口实例接口实例

6.2. 程序控制方式

Page 16: 第6章 输入输出技术

- 16- 目录 上页 下页 结束

无条件传送:输入示例

IOR

三态缓冲器 OE

I/O装置地

址译码器CS

D7~ D0

A15~ A1

A00160H

MOV DX, 160HIN AL, DX

MOV DX, 160HIN AL, DX

Page 17: 第6章 输入输出技术

- 17- 目录 上页 下页 结束

无条件传送:输入实例

MOV DX, 160HIN AL, DX

MOV DX, 160HIN AL, DX

74LS244+5V

10K x 8

G1 G2

数据总

线

CS

RD

Page 18: 第6章 输入输出技术

- 18- 目录 上页 下页 结束

无条件传送:输出示例

地址译码器

数据锁存器

A15

A0~ A14

-IOW

CS

0160H

输出设备

D7~ D0

MOV DX, 160HMOV AL, [BX]OUT DX, AL

MOV DX, 160HMOV AL, [BX]OUT DX, AL

Page 19: 第6章 输入输出技术

- 19- 目录 上页 下页 结束

无条件传送:输出实例

MOV DX, 160HMOV AL, [BX]OUT DX, AL

MOV DX, 160HMOV AL, [BX]OUT DX, AL

+5V74LS373

300 x 8LE OE

数据总

线

CSWR

Page 20: 第6章 输入输出技术

- 20- 目录 上页 下页 结束

无条件传送:输入输出接口

K7

K1

K0

+5VD0~ D7

A0~A15

CLKLS06反相

驱动器LS273

8D锁存器

LS244三态

缓冲器

8000H

译码

+5V

LED0

LED7

-G

-IOW

-IOR

Page 21: 第6章 输入输出技术

- 21- 目录 上页 下页 结束

无条件传送:输入输出接口

next: mov dx,8000h ;DX 指向数据端口in al, dx ;从输入端口读开关状态not al ;反相out dx, al ; 送输出端口显示call delay ;调子程序延时jmp next ; 重复

next: mov dx,8000h ;DX 指向数据端口in al, dx ;从输入端口读开关状态not al ;反相out dx, al ; 送输出端口显示call delay ;调子程序延时jmp next ; 重复

Page 22: 第6章 输入输出技术

- 22- 目录 上页 下页 结束

就绪?2. 查询传送方式及其接口

CPU先了解(查询)外设的工作状态,在外设就绪(可以交换信息的情况下)实现数据的输入或输出

对多个外设的情况,则 CPU 按一定顺序依次查询(轮询)。先查询的外设将优先进行数据交换

查询传送的特点是:工作可靠,适用面宽,但传送效率低

Page 23: 第6章 输入输出技术

- 23- 目录 上页 下页 结束

查询传送的两个环节

查询环节寻址状态口读取状态寄存器的标志位若不就绪就继续查询,直至就绪

传送环节寻址数据口是输入,通过输入指令从数据口读入数据是输出,通过输出指令向数据口输出数据

输入状态

就绪?

数据交换Y

N

传送流程

接口实例

Page 24: 第6章 输入输出技术

- 24- 目录 上页 下页 结束

查询输入接口

-IOR+5V

8D锁存器

8 位三态

缓冲器

译码1 位三态

缓冲器

A0~A158000H

8001H

D0~D7

D0

输入设备

-IOR-STB

RQD

Page 25: 第6章 输入输出技术

- 25- 目录 上页 下页 结束

查询输入接口

mov dx,8000h ;DX 指向状态端口status: in al,dx ; 读状态端口

test al,01h ;测试标志位 D0

jz status ;D0= 0 ,未就绪,继续查询 inc dx ;D0= 1 ,就绪, DX 指向数据端

口in al,dx ;从数据端口输入数据

mov dx,8000h ;DX 指向状态端口status: in al,dx ; 读状态端口

test al,01h ;测试标志位 D0

jz status ;D0= 0 ,未就绪,继续查询 inc dx ;D0= 1 ,就绪, DX 指向数据端

口in al,dx ;从数据端口输入数据

Page 26: 第6章 输入输出技术

- 26- 目录 上页 下页 结束

查询输出接口

8D锁存器

译码1 位三态

缓冲器

R

Q

A0~ A15

8000H

8001H

D0~ D7

D7

D+5V

-ACK

-IOW

-IOR

输出设备

Page 27: 第6章 输入输出技术

- 27- 目录 上页 下页 结束

查询输出接口

mov dx,8000h ;DX 指向状态端口status: in al,dx ; 读取状态端口的状态数据

test al,80h ;测试标志位 D7

jnz status ;D7= 1 ,未就绪,继续查询inc dx ;D7= 0 ,就绪, DX 指向数据端

口mov al,buf ; 变量 buf 送 AL

out dx,al ;将数据输出给数据端口

mov dx,8000h ;DX 指向状态端口status: in al,dx ; 读取状态端口的状态数据

test al,80h ;测试标志位 D7

jnz status ;D7= 1 ,未就绪,继续查询inc dx ;D7= 0 ,就绪, DX 指向数据端

口mov al,buf ; 变量 buf 送 AL

out dx,al ;将数据输出给数据端口

Page 28: 第6章 输入输出技术

- 28- 目录 上页 下页 结束

6.3 中断传送方式

程序断点

主程序

中断请求 为外设

继续执行

返回断点

传送流程传送流程

CPU在执行程序中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务程序;

服务结束后,又返回原来的断点,继续执行原来的程序

CPU在执行程序中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务程序;

服务结束后,又返回原来的断点,继续执行原来的程序

提供服务

中断服务程序入口

6.3.1 中断的基本概念1. 中断的概念

Page 29: 第6章 输入输出技术

- 29- 目录 上页 下页 结束

2. 中断控制方式 中断传送是一种效率更高的程序传送方式 进行传送的中断服务程序是预先设计好的 中断请求是外设随机向 CPU 提出的 CPU 对请求的检测是有规律的:一般是在每条指令的最后一个时钟周期采样中断请求输入引脚

本书主要论述中断在输入和输出方面的应用 中断还有着非常广泛的应用

Page 30: 第6章 输入输出技术

- 30- 目录 上页 下页 结束

3. 中断源 能够引发中断的事件被称为中断源。通常,中断源

有两类:内部中断源和外部中断源。 由处理机内部产生的中断事件称为内部中断源。常见的内部中断源有计算溢出、指令的单步运行、执行特定的中断指令等。

由处理机之外的外围设备产生的中断事件称为外部中断源。常见的外部中断源有外设的输入 / 输出请求、定时时间到、电源掉电、设备故障等。

Page 31: 第6章 输入输出技术

- 31- 目录 上页 下页 结束

三态缓冲器

中断传送与接口(续)

D0~ D7

+5V

8D锁存器

8 位三态

缓冲器

RQ

译码

8001H

中断向量号

D0~ D7

INTR

D

输入设备

中断允许触发器

A0~ A15

中断请求触发器

-IOR

-INTA

-STB

Page 32: 第6章 输入输出技术

- 32- 目录 上页 下页 结束

4. 中断处理过程1. 中断请求(外设)2. 中断响应( CPU )3. 关中断( CPU )4. 断点保护( CPU )5. 中断识别(硬件 / 软

件)

6. 现场保护(用户)7. 中断服务(用户)8. 恢复现场(用户)9. 开中断( CPU/ 用户)10. 中断返回(用户)

中断服务是进行数据交换的实质性环节

Page 33: 第6章 输入输出技术

- 33- 目录 上页 下页 结束

5. 中断系统的功能 ① 能进入中断和退出中断,即完

成上述中断响应和中断返回的过程 .② 能对某些中断进行屏蔽,并在

必要时开放 .③ 能进行优先权排队 .④ 提供中断嵌套能力 .

Page 34: 第6章 输入输出技术

- 34- 目录 上页 下页 结束

6.3.2 8086 中断系统 8086 的中断系统采用向量中断机制 一共可处理 256 个中断 采用中断向量编号 0~ 255 ,对 256 个中断加

以区别 可屏蔽中断需借助专用的中断控制器 Intel 825

9A 对系统中的可屏蔽中断资源进行管理:扩充系统的可屏蔽中断资源,并管理它们:实现中断优先权比较实现中断源的识别

Page 35: 第6章 输入输出技术

- 35- 目录 上页 下页 结束

1. 8086 中断类型

硬件中断 软件中断

⑴ 硬件中断 硬件中断,又称外部中断,它是由处理器外部的硬件、外围设备的请求而引起的中断。 8086 有两条硬件中断请求信号线: NMI (非屏蔽中断)和 INTR (可屏蔽中断)。

Page 36: 第6章 输入输出技术

- 36- 目录 上页 下页 结束

8088 的中断类型

中断逻辑

INTO指令

单步中断

除法错误

INT N指令

CPU

NMI

8259A中断

控制器

IR0

IR1

IR2

IR3

IR4

IR5

IR6

IR7

外设中断源

-INTA

可屏蔽中断申请

INTR

不可屏蔽中断申请

可屏蔽中断源不可屏蔽中断源 内部中断

Page 37: 第6章 输入输出技术

- 37- 目录 上页 下页 结束

⑵ 软件中断 ( 内部中断 ) 内部中断——内部机制产生除法错中断( 0 号)——除运算结果溢出时产生指令中断( n 号)——执行 int n 指令后产生(操作码 CDH )断点中断( 3 号)——执行 int 3 指令(单字节指令操作码 CC

H )用于在调试中设置断点,程序遇断点则中断溢出中断( 4 号)——执行 into 指令,且前面运算有溢出( O

F=1 )时产生单步中断( 1 号)—— TF标志置 1 后,每执行一条子指令将发生一次

外部中断——外部引脚触发非屏蔽中断(外设提供向量号)——触发 INTR引脚产生可屏蔽中断( 2 号)—— 触发 NMI引脚产生

内部中断——内部机制产生除法错中断( 0 号)——除运算结果溢出时产生指令中断( n 号)——执行 int n 指令后产生(操作码 CDH )断点中断( 3 号)——执行 int 3 指令(单字节指令操作码 CC

H )用于在调试中设置断点,程序遇断点则中断溢出中断( 4 号)——执行 into 指令,且前面运算有溢出( O

F=1 )时产生单步中断( 1 号)—— TF标志置 1 后,每执行一条子指令将发生一次

外部中断——外部引脚触发非屏蔽中断(外设提供向量号)——触发 INTR引脚产生可屏蔽中断( 2 号)—— 触发 NMI引脚产生

Page 38: 第6章 输入输出技术

- 38- 目录 上页 下页 结束

⑶ 中断优先权 8086规定中断优先权从高到低的顺序为: ① 除法错、溢出中断指令 INTO 、中断指

令 INT n 。 ② 非屏蔽中断 NMI。 ③ 可屏蔽中断 INTR。 ④ 单步中断。

Page 39: 第6章 输入输出技术

- 39- 目录 上页 下页 结束

2. 8088 的中断向量表 中断向量:指示中断服务程序的入口地址,该

地址包括:偏移地址 IP 、段地址 CS (共 32位)

每个中断向量的低字是偏移地址、高字是段地址,需占用 4 个字节(低对低,高对高)。

8088 微处理器从物理地址 000H 开始到 3FFH( 1KB ),依次安排各个中断向量,向量号从0到 255。

256 个中断响亮所占用的 1KB区域,称中断向量表

中断向量:指示中断服务程序的入口地址,该地址包括:偏移地址 IP 、段地址 CS (共 32位)

每个中断向量的低字是偏移地址、高字是段地址,需占用 4 个字节(低对低,高对高)。

8088 微处理器从物理地址 000H 开始到 3FFH( 1KB ),依次安排各个中断向量,向量号从0到 255。

256 个中断响亮所占用的 1KB区域,称中断向量表

• 几个概念:向量号 N/ 中断向量 /中断服务程序的入口地址

• 中断向量的存放首址= N×4

• 几个概念:向量号 N/ 中断向量 /中断服务程序的入口地址

• 中断向量的存放首址= N×4

4B

4B

中断向量表

1KB

3FFH

0H

0 号中断向量

IP

CS

Page 40: 第6章 输入输出技术

- 40- 目录 上页 下页 结束

内部中断是由于 8086 内部执行程序出现特殊情况而引起的中断除法错中断: 向量号为 0

指令中断( int n ): 向量号为 n

断点中断( int 3 ): 向量号为 3

溢出中断( into ) : 向量号为 4

单步中断: 向量号为 1

内部中断是由于 8086 内部执行程序出现特殊情况而引起的中断除法错中断: 向量号为 0

指令中断( int n ): 向量号为 n

断点中断( int 3 ): 向量号为 3

溢出中断( into ) : 向量号为 4

单步中断: 向量号为 1

内部中断的中断向量号已由 Intel 公司确定内部中断的中断向量号已由 Intel 公司确定

Page 41: 第6章 输入输出技术

- 41- 目录 上页 下页 结束

外部中断是由于 8086 外部通过 CPU引脚提出中断请求而引起的中断非屏蔽中断( NMI ): 向量号为 2

外部通过非屏蔽中断 NMI 请求,必须响应非屏蔽中断主要用于处理系统的意外或故障(如奇偶校验或

协处理器运算错误等)可屏蔽中断( INTR ): 向量号由中断控制器提供

外部通过可屏蔽中断 INTR 请求,由标志位 IF 控制是否响应;响应时将产生有效的 – INTA 信号

可屏蔽中断主要用于外设中断请求(请求交换数据等服务)

外部中断是由于 8086 外部通过 CPU引脚提出中断请求而引起的中断非屏蔽中断( NMI ): 向量号为 2

外部通过非屏蔽中断 NMI 请求,必须响应非屏蔽中断主要用于处理系统的意外或故障(如奇偶校验或

协处理器运算错误等)可屏蔽中断( INTR ): 向量号由中断控制器提供

外部通过可屏蔽中断 INTR 请求,由标志位 IF 控制是否响应;响应时将产生有效的 – INTA 信号

可屏蔽中断主要用于外设中断请求(请求交换数据等服务)

标志位 IF控制可屏蔽中断的响应标志位 IF控制可屏蔽中断的响应

Page 42: 第6章 输入输出技术

- 42- 目录 上页 下页 结束

中断标志 IF 的状态 IF= 0 :可屏蔽中断不会被响应(禁止中断,关中断,

中断屏蔽)系统复位,使 IF= 0

任何一个中断被响应,使 IF= 0

执行指令 CLI ,使 IF= 0

IF= 1 :可屏蔽中断会被响应(允许中断,开中断,中断开放)执行指令 STI ,使 IF= 1

执行指令 IRET 后 IF 将恢复为中断前的状态

IF= 0 :可屏蔽中断不会被响应(禁止中断,关中断,中断屏蔽)系统复位,使 IF= 0

任何一个中断被响应,使 IF= 0

执行指令 CLI ,使 IF= 0

IF= 1 :可屏蔽中断会被响应(允许中断,开中断,中断开放)执行指令 STI ,使 IF= 1

执行指令 IRET 后 IF 将恢复为中断前的状态

明确 IF 标志的状态是关键明确 IF 标志的状态是关键

Page 43: 第6章 输入输出技术

- 43- 目录 上页 下页 结束

3. 8086 中断处理过程⑴ 可屏蔽中断的中断过程

中断源通过中断控制器 8259 向 CPU发出中断请求信号 CPU在每一个指令周期的最后一个时钟周期采样 INTR 信

号线 当 CPU响应可屏蔽级的中断请求时,首先通过信号线向 8

259 连续发出两个负脉冲的中断响应信号。 CPU暂停执行当前程序,而转去执行相应的中断处理程序 CPU 执行中断服务程序 返回断点,继续执行被打断的程序

中断源通过中断控制器 8259 向 CPU发出中断请求信号 CPU在每一个指令周期的最后一个时钟周期采样 INTR 信

号线 当 CPU响应可屏蔽级的中断请求时,首先通过信号线向 8

259 连续发出两个负脉冲的中断响应信号。 CPU暂停执行当前程序,而转去执行相应的中断处理程序 CPU 执行中断服务程序 返回断点,继续执行被打断的程序

Page 44: 第6章 输入输出技术

- 44- 目录 上页 下页 结束

⑵ 非屏蔽中断和软件中断的执行过程

查询中断的先后顺序决定了各中断源的优先级别软件中断

除法错中断指令中断溢出中断

非屏蔽中断可屏蔽中断单步中断

查询中断的先后顺序决定了各中断源的优先级别软件中断

除法错中断指令中断溢出中断

非屏蔽中断可屏蔽中断单步中断

Page 45: 第6章 输入输出技术

- 45- 目录 上页 下页 结束

8086 的中断响应过程

NMI

N

软件中断

INTR

TF=1

中断响应周期读中断向量号

下条指令

现行指令

IF= 1

N

NN

N

Y

Y

Y

Y

Y

执行中断服务

Page 46: 第6章 输入输出技术

- 46- 目录 上页 下页 结束

8086 的中断响应过程(续)

Y还有 NMI

TEMP= 1

标志寄存器入栈

TEMP= TF , IF= TF= 0

CS : IP 入栈

获取中断向量

执行服务程序

弹出 CS : IP

弹出标志寄存器

返回被中断程序

( 1 )

( 2 )

( 3 )

( 4 )

( 5 )N

NY

( 6 )

单步中断

Page 47: 第6章 输入输出技术

- 47- 目录 上页 下页 结束

8086 的中断响应过程(续)

8088各种中断源的优先权,实际上是指被识别的先后顺序

多种中断同时请求时,最先响应的则可能是单步中断或 NMI 中断

8088各种中断源的优先权,实际上是指被识别的先后顺序

多种中断同时请求时,最先响应的则可能是单步中断或 NMI 中断

Page 48: 第6章 输入输出技术

- 48- 目录 上页 下页 结束

6.3.3 8259 中断控制器 Intel 8259A 是可编程中断控制器 PIC 可配合 CPU ( I8080/85 、 I8086/88/286/386等)

管理可屏蔽中断 8259A 的基本功能

1 片 8259A 可以管理 8级中断,经级联最多可扩展至 64级每一级中断都可单独被屏蔽或允许在中断响应周期,可提供相应的调用指令(配合 I8080/85

)或中断向量号(配合 I8086/88/286/386 )8259A 设计有多种工作方式,通过初始化编程进行设置

Intel 8259A 是可编程中断控制器 PIC 可配合 CPU ( I8080/85 、 I8086/88/286/386等)

管理可屏蔽中断 8259A 的基本功能

1 片 8259A 可以管理 8级中断,经级联最多可扩展至 64级每一级中断都可单独被屏蔽或允许在中断响应周期,可提供相应的调用指令(配合 I8080/85

)或中断向量号(配合 I8086/88/286/386 )8259A 设计有多种工作方式,通过初始化编程进行设置

Page 49: 第6章 输入输出技术

- 49- 目录 上页 下页 结束

1. 8259A 的内部结构和引脚

D7~D0

-INTAINT

中断请求寄存器

中断屏蔽寄存器

数据总线

缓冲器IR0

IR7

读 /写控制逻辑

级联缓冲器比较器

-RD-WR

A0

-CS

CAS0CSA1CAS2

-SP/-EN

优先权判别电路

中断服务寄存器

控制逻辑

Page 50: 第6章 输入输出技术

- 50- 目录 上页 下页 结束

⑴ 8259 的内部结构 中断请求寄存器 IRR保存 8 条外界中断请求信号 IR0~ IR7 的请求状态Di 位为 1表示 IRi引脚有中断请求;为 0表示无请求

中断服务寄存器 ISR保存正在被 8259A服务着的中断状态Di 位为 1表示 IRi 中断正在服务中;为 0表示没有被服务

中断屏蔽寄存器 IMR保存对中断请求信号 IR 的屏蔽状态Di 位为 1表示 IRi 中断被屏蔽(禁止);为 0表示允许

中断请求寄存器 IRR保存 8 条外界中断请求信号 IR0~ IR7 的请求状态Di 位为 1表示 IRi引脚有中断请求;为 0表示无请求

中断服务寄存器 ISR保存正在被 8259A服务着的中断状态Di 位为 1表示 IRi 中断正在服务中;为 0表示没有被服务

中断屏蔽寄存器 IMR保存对中断请求信号 IR 的屏蔽状态Di 位为 1表示 IRi 中断被屏蔽(禁止);为 0表示允许

Page 51: 第6章 输入输出技术

- 51- 目录 上页 下页 结束

优先权判别器 PR

优先权判别器( PR )用来识别各中断请求的优先级别 读 /写控制电路 读 /写控制电路接收来自 CPU 的读 /写控制命令和片选控

制信息 数据总线缓冲器 这是一个 8 位的双向三态缓冲器,使 8259 和 CPU 数据总

线 D7~ D0 直接挂接,完成命令和状态信息的传送。

优先权判别器 PR

优先权判别器( PR )用来识别各中断请求的优先级别 读 /写控制电路 读 /写控制电路接收来自 CPU 的读 /写控制命令和片选控

制信息 数据总线缓冲器 这是一个 8 位的双向三态缓冲器,使 8259 和 CPU 数据总

线 D7~ D0 直接挂接,完成命令和状态信息的传送。

Page 52: 第6章 输入输出技术

- 52- 目录 上页 下页 结束

控制电路 它是 8259 内部的控制器,根据 CPU 对 8259 编程设定的工作方式产生内部控制信号,向 CPU发出中断请求信号 INT ,请求 CPU响应,同时产生与当前中断请求服务有关的控制信号,并在接收到来自 CPU 的中断响应信号后,将中断类型号送到数据总线。

级联缓冲 /比较器 该功能部件用来实现多个 8259 的级联连接及数据缓冲

方式。

控制电路 它是 8259 内部的控制器,根据 CPU 对 8259 编程设定的工作方式产生内部控制信号,向 CPU发出中断请求信号 INT ,请求 CPU响应,同时产生与当前中断请求服务有关的控制信号,并在接收到来自 CPU 的中断响应信号后,将中断类型号送到数据总线。

级联缓冲 /比较器 该功能部件用来实现多个 8259 的级联连接及数据缓冲

方式。

Page 53: 第6章 输入输出技术

- 54- 目录 上页 下页 结束

中断级连 8259A 可以级连, 1 个主片最多可以级连 8 个从片 级连时,主片的级连线 CAS0~ CAS2 连至每个从

片的 CAS0~ CAS2 ,输出被选中的从片编号, 每个从片的中断请求信号 INT ,连至主 8259A 的

一个中断请求输入端 IRx;主片的 INT 线连至 CPU 的中断请求输入端 INTR

在非缓冲方式下,引脚 -SP/-EN ,通过接地指定该片充当从片( -SP= 0 );反之若接高电平则该片充当主片( -SP= 1 )。

8259A 可以级连, 1 个主片最多可以级连 8 个从片 级连时,主片的级连线 CAS0~ CAS2 连至每个从

片的 CAS0~ CAS2 ,输出被选中的从片编号, 每个从片的中断请求信号 INT ,连至主 8259A 的

一个中断请求输入端 IRx;主片的 INT 线连至 CPU 的中断请求输入端 INTR

在非缓冲方式下,引脚 -SP/-EN ,通过接地指定该片充当从片( -SP= 0 );反之若接高电平则该片充当主片( -SP= 1 )。

Page 54: 第6章 输入输出技术

- 55- 目录 上页 下页 结束

⑵ 8259 的引脚功能

8259 芯片有 28 条引脚,双列直插式封装,如图 6.10所示。

8259 芯片有 28 条引脚,双列直插式封装,如图 6.10所示。

图 6.10 8259 芯片引脚定义

Page 55: 第6章 输入输出技术

- 56- 目录 上页 下页 结束

2. 8259A 的中断过程

CAS0~ CAS2

D0~ D7

-SP/-EN

IR0~ IR7

CPU响应周期

8259A 工作波形

INT

第 1 个总线周期T1 T2 T3 T4

ALE

CLK

第 2 个总线周期T1 T2 T3 T4

第 1 个 -INTA前保持高电平

-INTA

-LOCK

中断向量

主片输出级联信号从片接收

Page 56: 第6章 输入输出技术

- 57- 目录 上页 下页 结束

3. 8259A 的工作方式

普通全嵌套方式特殊全嵌套方式自动循环方式特殊循环方式

优先权固定方式

优先权循环方式 设置优先权方式

普通中断结束方式特殊中断结束方式

自动中断结束方式非自动中断结束方式

结束中断方式

中断屏蔽方式普通屏蔽方式特殊屏蔽方式

中断触发方式 边沿触发方式电平触发方式

数据线连接方式 缓冲方式非缓冲方式

与 CPU 配合方式 与 8080/8085 CPU 配合与 8086/8088 CPU 配合

级连方式 级连不级连

Page 57: 第6章 输入输出技术

- 58- 目录 上页 下页 结束

( 1 )中断结束处理方式什么是 8259A 的中断结束?

8259A 利用中断服务寄存器 ISR判断:某位为 1 ,表示正在进行中断服务;该位为 0 ,就是该中断结束服务。

这里说明如何使 ISR某位为 0 ,不反映 CPU 的工作状态。

Page 58: 第6章 输入输出技术

- 59- 目录 上页 下页 结束

( 1 )中断结束处理方式(续)自动中断结束方式普通中断结束方式

配合全嵌套优先权方式使用 当 CPU 用输出指令往 8259A发出普通中断结束 EOI命令时, 8259A就会把所有正在服务的中断中优先权最高的 ISR 位复位。

特殊中断结束方式 配合循环优先权方式使用 CPU在程序中向 8259A发送一条特殊中断结束命令,这个命令中指出了要清除哪个 ISR 位。

Page 59: 第6章 输入输出技术

- 60- 目录 上页 下页 结束

( 2 ) 缓冲方式 缓冲方式

8259A 的数据线需加缓冲器予以驱动8259A把 SP*/EN*引脚作为输出端,输出允许信号,用以锁存或开启缓冲器

非缓冲方式SP*/EN*引脚为输入端若 8259A级连,由其确定是主片或从片

Page 60: 第6章 输入输出技术

- 61- 目录 上页 下页 结束

( 3 )嵌套方式普通全嵌套方式

8259A 的中断优先权顺序固定不变,从高到低依次为 IR0 、 IR1 、 IR2 、…… IR7

中断请求后, 8259A 对当前请求中断中优先权最高的中断 IRi予以响应,将其向量号送上数据总线,对应 ISR的 Di 位置位,至到中断结束( ISR 的 Di 位复位)在 ISR 的 Di 位置位期间,禁止再发生同级和低级优先权

的中断,但允许高级优先权中断的嵌套 特殊全嵌套方式 优先权自动循环方式 优先权特殊循环方式

Page 61: 第6章 输入输出技术

- 62- 目录 上页 下页 结束

( 4 ) 中断屏蔽方式普通屏蔽方式将 IMR 的 Di 位置 1 ,则对应的中断 IRi 被屏蔽,该中断请求不能从 8259A 送到 CPU

如果 IMR 的 Di 位置 0 ,则允许 IRi 中断产生 特殊屏蔽方式将 IMR 的 Di 位置 1 ,对应的中断 IRi 被屏蔽

的同时,使 ISR 的 Di 位置 0

Page 62: 第6章 输入输出技术

- 63- 目录 上页 下页 结束

⑸ 优先级的控制 ① 固定优先级 所谓固定优先级,即是指 8259 的 8 个中断源中, IR0 优先级最高,

IR1 优先级次之,依次降低,直到 IR7 优先级最低,这个顺序固定不变。 ② 循环优先级 8259 将中断源 IR0 ~ IR7 按下标序号顺序构成一个环,有两种规定

方式:● 自动优先循环级。 该方式规定:刚被服务过的中断源,其优先级别被改为最低级,而

将最高优先级赋给原来比它低一级的中断源,其它中断源的优先顺序依中断源顺序环确定。例如: CPU 对 IR3 的中断服务刚结束时, IR3 的优先级别变为最低,这时 8259 的 8 个中断源优先顺序由高到低为 IR4 ,IR5 , IR6 , IR7 , IR0 , IR1 , IR2 , IR3 。

● 指定优先循环级。 该方式规定:在 OCW2 中指定的中断源,其优先级别被设为最低级,

其它中断源的优先顺序依中断源顺序环确定。例如: CPU 在对 IR3 的中断服务过程中,通过指令在 OCW2 中指定 IR5 具有最低优先级,则 IR3 中断服务结束时, 2859A 的 8 个中断源优先顺序由高到低为 IR6 ,IR7 , IR0 , IR1 , IR2 , IR3 , IR4 , IR5 。

Page 63: 第6章 输入输出技术

- 64- 目录 上页 下页 结束

优先权方式 普通全嵌套方式

8259A 的中断优先权顺序固定不变,从高到低依次为 :IR0 、 IR1 、 IR2 、…… IR7

中断请求后, 8259A 对当前请求中断中优先权最高的中断 IRi 予以响应,将其向量号送上数据总线,对应 ISR 的 Di 位置位,至到中断结束( ISR 的 Di 位复位)

在 ISR 的 Di 位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套

特殊全嵌套方式——允许同级中断嵌套(用于级连主片) 优先权自动循环方式——最高优先权自动转移到相邻的低优先

级中断源 优先权特殊循环方式——最高优先权转移到由指令指定的中断

Page 64: 第6章 输入输出技术

- 65- 目录 上页 下页 结束

( 6 ) 中断触发方式边沿触发方式

8259A将中断请求输入端出现的上升沿作为中断请求信号

电平触发方式中断请求端出现的高电平是有效

的中断请求信号

Page 65: 第6章 输入输出技术

- 66- 目录 上页 下页 结束

( 7 ) 中断级连 一个系统中, 8259A 可以级连,有一个主 8259A ,若干个(最多 8 个)从 8259A

级连时,主 8259A 的三条级连线 CAS0~ CAS2作为输出线,连至每个从 8259A 的 CAS0~ CAS2

每个从 8259A 的中断请求信号 INT ,连至主 8259A 的一个中断请求输入端 IR

主 8259A 的 INT 线连至 CPU 的中断请求输入端 SP*/EN*在非缓冲方式下,规定该 8259A 是主片

( SP*= 1 )还是从片( SP*= 0 )

Page 66: 第6章 输入输出技术

- 67- 目录 上页 下页 结束

级连方式 不级连——只用 1 片,如 PC/XT级连——使用 2~9 片,如 PC/AT ( 2 片)

-INTA

INTR

IR0

IR7

IR7

IR0

CAS0~CAS2=010

INT

INT

D0~D7

Page 67: 第6章 输入输出技术

- 68- 目录 上页 下页 结束

4. 8259A 的编程初始化编程

8259A 开始工作前, 用户必须对 8259A 进行初始化编程。通过写入初始化命令字 ICW 对 8259A 进行初始化。

工作方式编程在 8259A 工作期间

可以随时向 8259A写入操作命令字 OCW ,使之按用户设置的新的工作方式进行工作,用户还可以通过写操作命令字 OCW 通知 8259A ,下面的操作要读取 8259A 中的状态信息,以便了解其工作情况。

Page 68: 第6章 输入输出技术

- 69- 目录 上页 下页 结束

⑴ 8259 的初始化编程 8259初始化编程的主要任务有:① 复位 8259 芯片。② 设定中断请求信号 INT 有效的形式,是高电平有效,还是上升沿有效。

③ 设定 8259 工作在单片方式还是多片级联方式。④ 设定 8259 管理的中断类型号的基值,即 0级 IR

0所对应的中断类型号。⑤ 设定各中断级的优先次序, IR0 最高, IR7 最低。

⑥ 设定一次中断处理结束时的结束方式。

Page 69: 第6章 输入输出技术

- 70- 目录 上页 下页 结束

( 1 )初始化命令字 ICW

初始化命令字 ICW 最多有 4 个 8259A在开始工作前必须写入 必须按照 ICW1~ ICW4顺序写入 ICW1 和 ICW2 是必须送的 ICW3 和 ICW4 由工作方式决定

流程

D7 D6 D5 D4 D3 D2 D1 D0

Page 70: 第6章 输入输出技术

- 71- 目录 上页 下页 结束

ICW1

× × × 1 LTIM × SNGL IC4

D7 D6 D5 D4 D3 D2 D1 D0

×——表示可以任意为 1 为 0 都 可 以 (建议为0 )

1——只能为 1 ,作为标志中断触发方式:LTIM= 1 ,电平触发方式LTIM= 0 ,边沿触发方式

规定单片或级连方式:SNGL= 1 ,单片方式SNGL= 0 ,级连方式

是否写入 ICW4

IC4= 1 ,要写入 ICW4

IC4= 0 ,不写入 ICW4 ,即 ICW4规定的位全为 0

Page 71: 第6章 输入输出技术

- 72- 目录 上页 下页 结束

ICW2

T7 T6 T5 T4 T3 × × ×

D7 D6 D5 D4 D3 D2 D1 D0

设置中断向量号T7~ T3 为中断向量号的高 5 位低 3 位由 8259A自动确定:IR0 为 000 、 IR1 为 001 、……、IR7 为 111

Page 72: 第6章 输入输出技术

- 73- 目录 上页 下页 结束

ICW3

S7 S6 S5 S4 S3 S2/

ID2

S1/

ID1

S0/

ID0

D7 D6 D5 D4 D3 D2 D1 D0

级连命令字主片 8259A : Si = 1 对应 IRi 接有从片;否则 IRi 没有连接从片从片 8259A : ID0 ~ ID2 编码说明从片 INT引脚接到主片哪个 IR引脚

Page 73: 第6章 输入输出技术

- 74- 目录 上页 下页 结束

ICW4

0 0 0 SFNM BUF M/S AEOI μPM

D7 D6 D5 D4 D3 D2 D1 D0

嵌套方式:特殊全嵌套 方 式 ( SFNM =1 )普通全嵌套 方 式 ( SFNM =0 )

数据线的缓冲方式:缓冲方式( BUF= 1 )非缓冲方式( BUF= 0 )

主片 /从片选择:主片( M/S=1 )从片( M/S=0 )

中断结束方式:自动中断结束( AEOI= 1 )非自动中断结束( AEOI= 0 )

微处理器类型:16 位 80x86 ( PM= 1 )8 位 8080/8085 ( PM=0 )

Page 74: 第6章 输入输出技术

- 75- 目录 上页 下页 结束

8259 芯片的初始化流程

ICW4 ( A0=1 )

SNGL=0 ?

ICW1 的 IC4=1 ?

初始化完,准备接受中断请求输入

ICW1 ( A0=0 , D4=1 )

ICW2 ( A0=0 )

ICW3 ( A0=0 )

Page 75: 第6章 输入输出技术

- 76- 目录 上页 下页 结束

初始化主片 8259Amov al,11h ;写入 ICW1

out 20h,al

jmp intr1

intr1: mov al,08h ;写入 ICW2

out 21h,al

jmp intr2

intr2: mov al,04h ;写入 ICW3

out 21h,al

jmp intr3

intr3: mov al,1h ;写入 ICW4

out 21h,al

中断控制器的初始化程序段

Page 76: 第6章 输入输出技术

- 77- 目录 上页 下页 结束

初始化从片 8259Amov al,11h ;写入 ICW1out 0a0h,aljmp intr5

intr5: mov al,70h ;写入 ICW2out 0a1h,aljmp intr6

intr6: mov al,02h ;写入 ICW3out 0a1h,aljmp intr7

intr7: mov al, 01h ;写入 ICW4out 0a1h,al

中断控制器的初始化程序段

Page 77: 第6章 输入输出技术

- 78- 目录 上页 下页 结束

⑵ 工作方式编程 8259 工作方式编程主要完成的任务是对中断请求的屏蔽、优先级循环控制、中断结束方式、内部控制寄存器的查询等。

8259A 工作期间,可以随时接受操作命令字 OCW OCW 共有 3 个: OCW1~ OCW3写入时没有顺序要求,需要哪个 OCW就写入那个

OCW

D7 D6 D5 D4 D3 D2 D1 D0

Page 78: 第6章 输入输出技术

- 79- 目录 上页 下页 结束

OCW1

M7 M6 M5 M4 M3 M2 M1 M0

D7 D6 D5 D4 D3 D2 D1 D0

屏蔽命令字内容写入中断屏蔽寄存器 IMR

Di=Mi 对应 IRi ,为 1禁止 IRi中断;为 0允许 IRi 中断。各位互相独立。

Page 79: 第6章 输入输出技术

- 80- 目录 上页 下页 结束

OCW2

R SL EOI 0 0 L2 L1 L0

D7 D6 D5 D4 D3 D2 D1 D0

R 、 SL 和 EOI 配 合使用产生中断结束 EOI命令和改变优先权顺序

L2 ~ L0 的 3 位 编码指定 IR引脚

Page 80: 第6章 输入输出技术

- 81- 目录 上页 下页 结束

OCW3

0 ESMM SMM 0 1 P RR RIS

D7 D6 D5 D4 D3 D2 D1 D0

ESMM 、 SMM

设置中断屏蔽方式P 、 RR 和 RIS

规定随后 读 取 的状态字含义

Page 81: 第6章 输入输出技术

- 82- 目录 上页 下页 结束

读取状态字 CPU 可读出 IRR 、 ISR 、 IMR 和查询

字 A0 为低,由 OCW3 中 RR 和 RIS 位设定

读取 IRR或 ISR ,由 OCW3 中 P 位设定读取查询字

而 A0引脚为高电平时读取的都是 IMR 查询字反映 8259A 是否有中断请求

Page 82: 第6章 输入输出技术

- 83- 目录 上页 下页 结束

查询字

I - - - - W2 W1 W0

D7 D6 D5 D4 D3 D2 D1 D0

中断位 I 位为 1 ,有外设请求中断

W2 ~ W0 的 编码当前中 断 请 求 的最高优先级

Page 83: 第6章 输入输出技术

- 84- 目录 上页 下页 结束

补充: 命令字和状态字的区别方法

⑴ 利用读写信号区别写入的控制寄存器和读出的状态寄存器

⑵ 利用地址信号区别不同 I/O 地址的寄存器

⑶ 由控制字中的标志位说明是哪个寄存器⑷ 由芯片内顺序控制逻辑按一定顺序识别

不同的寄存器⑸ 由前面的控制字决定后续操作的寄存器

接口电路中常用的方法

Page 84: 第6章 输入输出技术

- 85- 目录 上页 下页 结束

( 1 )与 CPU 的配合方式 与 8080/8085 CPU 配合—— 中断响应时, -INTA 信号 3

次有效, 8259A 送 CALL XXXXH 指令( 3 个字节)的机器代码到数据总线 ;

与 8086/8088 CPU 配合——中断响应时, -INTA 信号 2次有效, 8259A 送相应的中断向量号( 1 个字节)到数据总线。

8080/85

CPU8259A

8086/88

CPU8259A

CALL XXXXH 中断向量号

-INTA

INTR

-INTA

INTR

5. 80X86 微机的中断控制器

Page 85: 第6章 输入输出技术

- 86- 目录 上页 下页 结束

( 2 ) 与处理器接口 -CS A0 -RD -WR 功能

0 0 1 0

0 1 1 0

0 0 0 1

0 1 0 1

0 × 1 1

1 × × ×

写入 ICW1 、 OCW2 和 OCW3

写入 ICW2~ ICW4 和 OCW1

读出 IRR 、 ISR 和查询字读出 IMR

数据总线高阻状态数据总线高阻状态

Page 86: 第6章 输入输出技术

- 87- 目录 上页 下页 结束

6.4.3 中断识别和中断优先权处理问题 1 :系统有多个中断请求,CPU 如何识别中断源?

办法 1 : 向量中断(硬件)办法 2 : 中断查询(软 / 硬件结

合)

中断源的识别中断源的识别

Page 87: 第6章 输入输出技术

- 88- 目录 上页 下页 结束

中断查询接口

A0~ A15

锁存器

INTR

三态缓冲器

译码

8001H

D0~ D7

中断 A中断 B中断 C

中断 H

… …

-IOR

Page 88: 第6章 输入输出技术

- 89- 目录 上页 下页 结束

6.4.3 中断优先权(续 1 )问题 2 :有多个中断同时请求,CPU 如何应对?

办法 1 :链式优先权排队电路办法 2 :优先权编码电路

中断优先级排队中断优先级排队

Page 89: 第6章 输入输出技术

- 90- 目录 上页 下页 结束

链式中断优先权排队电路

A2

A1

C2

C1

D2

D1B2

B1

中断源 A

触发器

中断源 B

触发器

中断源 C

触发器

中断矢量 D中断矢量 C中断矢量 B中断矢量 A

中断源 D

触发器

缓冲器缓冲器缓冲器缓冲器

-INTA

高优先级

Page 90: 第6章 输入输出技术

- 91- 目录 上页 下页 结束

中断优先权编码电路

比较器失效信号(先前无中断请求时有效)

比较器 8:3优先权编码器

优先权寄存器 D0~ D7

2

1 A< B

中断请求 0中断请求 1中断请求 2

A0A1A2INTR

B0B1B2

有中断请求

Page 91: 第6章 输入输出技术

- 92- 目录 上页 下页 结束

6.4.3 中断优先权(续 2 )问题 3 :中断处理过程中,又有中断提出请求,怎么办?

办法 1 :链式优先权排队电路办法 2 :优先权编码电路

中断嵌套中断嵌套

Page 92: 第6章 输入输出技术

- 93- 目录 上页 下页 结束

I/O 接口的典型结构

1. 接口电路的内部结构2. 接口电路的外部特性3. 接口芯片的分类4. 接口芯片的可编程性

1. 接口电路的内部结构2. 接口电路的外部特性3. 接口芯片的分类4. 接口芯片的可编程性

Page 93: 第6章 输入输出技术

- 94- 目录 上页 下页 结束

1. 接口电路的内部结构 CPU 与外设主要有数据、状态和控制信息

需要相互交换,于是从应用角度看内部:⑴ 数据寄存器保存外设给 CPU 和 CPU 发往外设的数据

⑵ 状态寄存器保存外设或接口电路的状态

⑶ 控制寄存器保存 CPU 给外设或接口电路的命令

理解端口理解端口

Page 94: 第6章 输入输出技术

- 95- 目录 上页 下页 结束

2. 接口电路的外部特性 面向 CPU 一侧的信号:

用于与 CPU 连接主要是数据、地址和控制信号

面向外设一侧的信号:用于与外设连接提供的信号五花八门功能定义、时序及有效电平等差异较大

Page 95: 第6章 输入输出技术

- 96- 目录 上页 下页 结束

3. 接口芯片的分类 接口电路核心部分往往是一块或数块大规模集成电路芯片(接口芯片):

通用接口芯片支持通用的数据输入输出和控制的接口芯片

面向外设的专用接口芯片针对某种外设设计、与该种外设接口

面向微机系统的专用接口芯片与 CPU 和系统配套使用,以增强其总体功能

Page 96: 第6章 输入输出技术

- 97- 目录 上页 下页 结束

4. 接口电路的可编程性 许多接口电路具有多种功能和工作方式,

可以通过编程的方法选定其中一种 接口需要进行物理连接,还需要编写接

口软件 接口软件有两类:

初始化程序段——设定芯片工作方式等数据交换程序段——管理、控制、驱动外设,负责外设和系统间信息交换

Page 97: 第6章 输入输出技术

- 98- 目录 上页 下页 结束

IBM PC/AT 主机板的 I/O译码电路

接口芯片内部译码A0~ A4

DMA 控制器 1中断控制器 1定时计数器并行接口电路DMA页面寄存器中断控制器 2DMA 控制器 2协处理器

A5

A6

A7

A8

A9

ALS138 译码器

HLDAMASTER

ABC

E1

-E2

-E3

Y0Y1Y2Y3Y4Y5Y6Y7

Page 98: 第6章 输入输出技术

- 99- 目录 上页 下页 结束

IBM PC/XT 主机板的 I/O译码电路Y0

Y1

Y2

Y3

Y4

Y5

Y6

Y7

A5

A6

A7

A8

A9

AEN

-IOW

AB

C

-G2B

-G2A

G1

74LS13874LS138

-DMA CS ( 8237 )-INTR CS ( 8259 )-T/C CS ( 8253 )-PPI CS ( 8255 )-WRTDMAPG(写 DMA页面寄存器)-WRTNMIREG(写 NMI屏蔽寄存器)

Page 99: 第6章 输入输出技术

- 100- 目录 上页 下页 结束

用门电路实现 I/O 地址译码A9

A8

A7

A6

A5

A2

A4

A3

AENA1

A0

74LS03

I/O 地址 3E7H

Page 100: 第6章 输入输出技术

- 101- 目录 上页 下页 结束

6.4 DMA 传送方式希望克服程序控制传送的不足:

外设→ CPU→ 存储器外设← CPU← 存储器

直接存储器存取 DMA :不经 CPU ,不用指令 外设→存储器( DMA写) 外设←存储器( DMA 读) 扩展:外设↔ 外设 CPU 出让系统总线(输出高阻),由 DMA 控制

器( DMAC )接管系统总线

Page 101: 第6章 输入输出技术

- 102- 目录 上页 下页 结束

6.4.1 DMA 传送的工作过程 ⑴ CPU 对 DMA 控制器进行初始化设置

⑵ 外设、 DMAC 、 CPU , 3 者通过应答信号建立联系: CPU将总线暂交 DMAC 控制,事后再将控制权返还。 ⑶ DMA 传送DMA 读:存储器 → 外设DMA写:存储器 ← 外设

⑷ DMAC 的功能:对存储器寻址地址动加 1/减 1计数器减 1判断传送是否完成

传送流程

Page 102: 第6章 输入输出技术

- 103- 目录 上页 下页 结束

DMA 传送( 以 DMA 写为例)

-MEMW-IOR

数据总线地址总线

输入设备

存储器

DMAC

CPU

③④

①HOLD

HLDA

Page 103: 第6章 输入输出技术

- 104- 目录 上页 下页 结束

DMA 传送流程HLDA

发存储器地址

传送数据

传送结束?

DMA 结束

修改地址指针

Page 104: 第6章 输入输出技术

- 105- 目录 上页 下页 结束

传送方式的比较 无条件传送:慢速外设需与 CPU保持同步 查询传送: 简单实用,效率较低 中断传送:外设主动,可与 CPU并行工作,但每次传送需要大量额外时间开销

DMA 传送: DMAC 控制,外设直接和存储器进行数据传送,适合大量、快速数据传送

Page 105: 第6章 输入输出技术

- 106- 目录 上页 下页 结束

6.4.2 DMA 控制器 8237每个 8237A 芯片有 4 个 DMA 通道,就

是有 4 个 DMA 控制器每个 DMA 通道具有不同的优先权每个 DMA 通道可以分别允许和禁止每个 DMA 通道有 4 种工作方式 一次传送的最大长度可达 64KB 多个 8237A 芯片可以级连,扩展通道数

Page 106: 第6章 输入输出技术

- 107- 目录 上页 下页 结束

1. DMA 控制器的功能 ① 编程设定 DMA 的传输模式及其所访问内存的地址区域。 ② 屏蔽或接受外围设备的 DMA 请求( DREQ ),当有多

个设备同时请求时,还要进行优先级排队,首先接受最高级的请求。

③ 向 CPU转达 DMA 请求, DMA 控制器要向 CPU发出总线请求信号 HOLD(高电平有效 ) ,请求 CPU放弃总线的控制。

④ 接收 CPU 的总线响应信号 (HLDA) ,接管总线控制权,实现对总线的控制。

⑤ 向相应外围设备转达 DMA允许信号 DACK。于是在 DMA 控制器的管理下,实现外围设备和存储器之间的数据直接传送。

⑥ 在传送过程中进行地址修改和字节计数。在传送完要求的字节数后,向 CPU发出 DMA 结束信号 (EOP) ,撤消总线请求 (HRQ) ,将总线控制权交还给 CPU。

Page 107: 第6章 输入输出技术

- 108- 目录 上页 下页 结束

2. 可编程 DMA 控制器 Intel8237DMAC

的主要性能和内部结构 内部结构和外部引脚都相对比较复杂 应用观点,内部主要由两类寄存器组成

通道寄存器控制和状态寄存器

首先分类展开外部引脚

Page 108: 第6章 输入输出技术

- 109- 目录 上页 下页 结束

3. 8237 的外部引脚

Page 109: 第6章 输入输出技术

- 110- 目录 上页 下页 结束

(1) 请求与响应信号 DREQ0~ DREQ3 : DMA 通道请求。当外设

需要请求 DMA服务时,将 DREQ 信号置成有效电平,并要保持到产生响应信号。

HRQ :总线请求。 8237A 输出有效的 HRQ高电平,向 CPU 申请使用系统总线。

HLDA :总线响应。 8237A 接受来自 CPU 的响应信号 HLDA ,取得了总线的控制权。

DACK0~ DACK3 : DMA 通道响应。 8237A使请求服务的通道产生相应的 DMA响应信号。

3. 8237 的外部引脚

Page 110: 第6章 输入输出技术

- 111- 目录 上页 下页 结束

(2) DMA 传送控制信号 A0~ A7 :地址线。输出低 8 位存储器地址。 DB0~ DB7 :数据线。输出高 8 位存储器地址;

存贮器与存贮器的传送期间,用于数据传送。 ADSTB :地址选通。 DMA 传送开始时,输出高

有效,把在 DB0~ DB7上输出的高 8 位地址锁存在外部锁存器中。

AEN :地址允许。输出高有效,将锁存的高 8 位地址送入系统总线,与芯片此时输出的低 8 位地址组成 16 位存储器地址。

Page 111: 第6章 输入输出技术

- 112- 目录 上页 下页 结束

(2) DMA 传送控制信号(续) MEMR* :存储器读。有效将数据从存储器读出 MEMW* :存储器写。有效将数据写入存储器 IOR* : I/O 读。有效将数据从外设读出 IOW* : I/O。有效将数据写入外设 READY :准备好。 DMA 传送的 S3 下降沿检测到为低时,插入等待状态 Sw ,直到 READY为高才进入第 4 个时钟周期 S4。

EOP* :过程结束。 DMA 传送过程结束,输出一个低有效脉冲。外部输入低脉冲信号,则终结 DMA 传送。

Page 112: 第6章 输入输出技术

- 113- 目录 上页 下页 结束

(3) 处理器接口信号 DB0~ DB7 :数据线。用于 8237A 与微处理

器进行数据交换。 A0~ A3 :地址线。用以选择芯片内部寄存器。 CS* :片选。低有效时,微处理器与 8237A

通过数据线通信,主要完成对 8237A 的编程。 IOR* : I/O 读。读取 8237A 内部寄存器。 IOW* : I/O写。写入 8237A 内部寄存器。 CLK :时钟。控制芯片内部操作和数据传输。 RESET :复位。使 8237A 处于初始状态。

Page 113: 第6章 输入输出技术

- 114- 目录 上页 下页 结束

4. 8237 DMAC 的工作方式

DMA 传送方式· 单字节传送方式 · 数据块传送方式· 请求传送方式 · 级连方式

DMA 传送类型· DMA 读 · DMA写 · DMA检验

存储器到存储器的传送

工作模式(传送方式)和操作类型。

Page 114: 第6章 输入输出技术

- 115- 目录 上页 下页 结束

① . DMA 传送-单字节方式每次 DMA 传送时仅传送一个字节 传送一个字节之后,字节数寄存器减 1 ,地址

寄存器加 1或减 1 , HRQ 变为无效 8237A释放系统总线,将控制权还给 CPU若传送后使字节数从 0减到 FFFFH ,则终结

DMA 传送或重新初始化 特点:

一次传送一个字节,效率略低DMA 传送之间 CPU 有机会重新获取总线控制权

⑴ 工作模式 : (每个通道有 4 种工作模式 )

Page 115: 第6章 输入输出技术

- 116- 目录 上页 下页 结束

② 数据块传送方式 由 DREQ启动就连续地传送数据,直到字

节数寄存器从 0减到 FFFFH终止计数,或由外部输入有效信号终结 DMA 传送

DREQ只需维持有效到 DACK 有效 特点:

一次请求传送一个数据块,效率高整个 DMA 传送期间 CPU长时间无法控制总线

(无法响应其他 DMA 请求、无法处理中断等)

Page 116: 第6章 输入输出技术

- 117- 目录 上页 下页 结束

③ 请求传送方式 DREQ 信号有效就连续传送数据 DREQ 信号无效, DMA 传送被暂时中止, 82

37A释放总线, CPU 可继续操作 DMA 通道的地址和字节数的中间值仍被保持 DREQ 信号再次有效, DMA 传送就继续进行 如果字节数寄存器从 0减到 FFFFH ,或者由

外部送来一个有效的信号,将终止计数 特点:

DMA操作可由外设利用 DREQ 信号控制传送的过程

Page 117: 第6章 输入输出技术

- 118- 目录 上页 下页 结束

④ 级联方式 用于通过多个 8237A级连以扩展通道第二级的 HRQ 和 HLDA 信号连到第一级某个通道的 DREQ 和 DACK上

第二级芯片的优先权等级与所连通道的优先权相对应

第一级只起优先权网络的作用,实际的操作由第二级芯片完成

还可由第二级扩展到第三级等

Page 118: 第6章 输入输出技术

- 119- 目录 上页 下页 结束

⑵ 操作类型 DMA 读——把数据由存储器传送到外设

由 MEMR* 有效从存储器读出数据,由 IOW* 有效把这一数据写入外设

DMA写——把外设输入的数据写入存储器由 IOR* 有效从外设输入数据,由 MEMW* 有效把

这一数据写入存储器。 DMA检验——空操作

8237A 不进行任何检验外设可以进行 DMA校验存储器和 I/O 控制线保持无效,不进行传送

存储器→存储器传送

Page 119: 第6章 输入输出技术

- 120- 目录 上页 下页 结束

存储器→存储器传送固定使用通道 0 和通道 1 通道 0 的地址寄存器存源区地址 通道 1 的地址寄存器存目的区地址,通道 1 的

字节数寄存器存传送的字节数 传送由设置通道 0 的软件请求启动每传送一字节需用 8 个时钟周期前 4 个时钟周期用通道 0 地址寄存器的地址从源区读

数据送入 8237A 的临时寄存器后 4 个时钟周期用通道 1 地址寄存器的地址把临时寄

存器中的数据写入目的区

Page 120: 第6章 输入输出技术

- 121- 目录 上页 下页 结束

5. 8237 的控制字和编程 8237A 共有 10 种内部寄存器,对它们的操作有时需要配合 3 个软件命令

8237A 的“软件命令”不需要通过数据总线写入控制字直接由地址和控制信号译码实现

全部都用地址 A0~ A3区分

Page 121: 第6章 输入输出技术

- 122- 目录 上页 下页 结束

(1) 当前地址寄存器保持 DMA 传送的当前地址值每次传送后该寄存器的值自动加 1或减 1 这个寄存器的值可由 CPU写入和读出

基地址寄存器存放初始值

㈠ 内部寄存器

Page 122: 第6章 输入输出技术

- 123- 目录 上页 下页 结束

(2) 当前字节数寄存器保持 DMA 传送的剩余字节数每次传送后,该寄存器的值减 1 这个寄存器的值可由 CPU写入和读出该寄存器的值减至 0 ,再减 1 (从 0减到 FFF

FH )时,终止计数

传送 N个字节,初始值为 N- 1传送 N个字节,初始值为 N- 1

基字节数寄存器存放初始值

Page 123: 第6章 输入输出技术

- 124- 目录 上页 下页 结束

⑶ 基地址寄存器和基字节计数寄存器每个通道均有一个 16 位的基地址寄存器和一个 16

位的基字节计数寄存器。 它们用来存放所对应的地址寄存器和字节计数器的初始值。

在编程时,这两个寄存器由 CPU 以连续两字节方式与对应的当前寄存器同时写入,但它们的内容不能读出。

在自动预置方式时,基本寄存器的内容被用来恢复当前寄存器的初始值。

Page 124: 第6章 输入输出技术

- 125- 目录 上页 下页 结束

(4) 命令寄存器 存放 8237A 的命令字 设置 8237A 芯片的操作方式影响每个 DMA 通道复位时使命令寄存器清零 设置 D2= 1才使 8237A 可以作为 DMA 控制器

请看命令字的格式

Page 125: 第6章 输入输出技术

- 126- 目录 上页 下页 结束

命令字格式D7 D6 D5 D4 D3 D2 D1 D0

0 DACK低有效1 DACK高有效

0 DREQ高有效1 DREQ低有效

0 滞后写1 扩展写× 若 D3= 1

0 固定优先权1 循环优先权

0 正常时序1 压缩时序× 若 D0= 1

0 允许 DMAC 工作1 禁止 DMAC 工作

0 允许通道 0 地址改变1 禁止通道 0 地址改变× 若 D0= 0

0 禁止存储器之间传送1 允许存储器之间传送

Page 126: 第6章 输入输出技术

- 127- 目录 上页 下页 结束

(5) 方式寄存器

存放相应通道的方式控制字选择某个 DMA 通道的工作方式 其中用最低 2 位选择哪个 DMA 通道

请看方式字的格式

Page 127: 第6章 输入输出技术

- 128- 目录 上页 下页 结束

方式字格式D7 D6 D5 D4 D3 D2 D1 D0

00 请求模式01 单 字 节模式10 数 据块模式11 级联模式

0 地 址增量 (加1 )1 地 址减量 (减1 )

0 禁止自动初始化1 允许自动初始化

00 DMA校验01 DMA写10 DMA 读11 非法×× 若 D7D6= 11

00 通道 0

01 通道 1

10 通道 2

11 通道 3

Page 128: 第6章 输入输出技术

- 129- 目录 上页 下页 结束

(6) 请求寄存器 存放软件 DMA 请求状态除硬件 DMA 请求外,当工作在数据块传送

方式时也可以通过软件发出 DMA 请求若是存贮器到存贮器传送,则必须由软件请

求启动通道 0

请看请求字的格式

Page 129: 第6章 输入输出技术

- 130- 目录 上页 下页 结束

请求字格式D7 D6 D5 D4 D3 D2 D1 D0

任意0 复位1 置位 00 通道 0

01 通道 1

10 通道 2

11 通道 3

Page 130: 第6章 输入输出技术

- 131- 目录 上页 下页 结束

(7) 屏蔽寄存器 控制外设硬件 DMA 请求是否被响应(为 0允许),各个通道互相独立。 3 种方法:单通道屏蔽字只对一个 DMA 通道屏蔽位进行设置主屏蔽字对 4 个 DMA 通道屏蔽位同时进行设置清屏蔽寄存器命令使 4 个屏蔽位都清零(允许)

复位使 4 个通道全置于屏蔽状态当一个通道的 DMA 过程结束,如果不是工作在自动初始化方式,则这一通道的屏蔽位置位,必须再次编程为允许,才能进行下次 DMA 传送

请看屏蔽字的格式

Page 131: 第6章 输入输出技术

- 132- 目录 上页 下页 结束

单通道屏蔽字格式D7 D6 D5 D4 D3 D2 D1 D0

任意 0 清屏蔽位1 置屏蔽位 00 通道 0

01 通道 1

10 通道 2

11 通道 3

Page 132: 第6章 输入输出技术

- 133- 目录 上页 下页 结束

主屏蔽字格式D7 D6 D5 D4 D3 D2 D1 D0

任意

Di= 0 清通道 I屏蔽位 Di= 1 置通道 I屏

蔽位

Page 133: 第6章 输入输出技术

- 134- 目录 上页 下页 结束

(8) 状态寄存器 可由 CPU 读取低 4 位反映读命令这个瞬间每个通道是

否产生 TC (为 1 ,表示该通道传送结束)

高 4 位反映每个通道的 DMA 请求情况(为 1 ,表示该通道有请求)

状态位在复位或被读出后,均被清零

Page 134: 第6章 输入输出技术

- 135- 目录 上页 下页 结束

(9) 暂存寄存器在存储器到存储器的传送方式下,临时

寄存器保存从源存储单元读出的数据,该数据又被写入到目的存储单元

传送完成,临时寄存器只会保留最后一个字节,可由 CPU 读出

复位使临时寄存器内容为零

Page 135: 第6章 输入输出技术

- 136- 目录 上页 下页 结束

补充 : 读写通道寄存器 CPU 与 8237A之间通过 8 位数据总线交换信息, 8237A 的通道寄存器均为 16 位

需要两次读写操作才能实现 CPU 与 8237A之间的一个完整数据的交换

8237A 内含一个高 /低触发器,用来控制读写通道寄存器的高、低字节

Page 136: 第6章 输入输出技术

- 137- 目录 上页 下页 结束

补充 : 高 /低触发器该触发器为 0 ,控制读写低字节该触发器为 1 ,控制读写高字节 软、硬件复位后,触发器为 0每次读写通道寄存器,自动改变触发器

状态。如果对 16 位寄存器的操作用两次连续读写进行,就不必清除这个触发器

清除高 /低触发器软件命令( A3A2A1A0

= 1100 )将使高 /低触发器清零

Page 137: 第6章 输入输出技术

- 138- 目录 上页 下页 结束

(10) 软件命令 清除高 /低触发器软件命令

A3A2A1A0= 1100 ,使高 /低触发器清零主清除命令

A3A2A1A0= 1101 ,使高 /低触发器清零还使命令、状态、请求、临时寄存器清零使屏蔽寄存器置为全 1 (禁止 DMA 请求)主清除命令与硬件的 RESET 信号具有相同的功能

清屏蔽寄存器命令A3A2A1A0= 1110 ,使 4 个屏蔽位都清零(允许 DM

A 请求)

Page 138: 第6章 输入输出技术

- 139- 目录 上页 下页 结束

㈡ 内部寄存器的寻址 对 8237 内部寄存器的寻址和执行与控制器有关的

软件命令,都由芯片选择信号, I/O 读、 I/O写和A3~ A0 地址线的不同状态编码来完成。 = 0表示访问该 8237DMAC 芯片; A3= 0则表示访问某个地址寄存器或字节计数器; A3=1则表示访问控制寄存器和状态寄存器。

或正在发出一条软件命令。在和 A3 都为 0 时, CPU 访问某个地址寄存器或字

节计数器,并由 A2~ A1 编码状态给出通道号,而A0=0表示访问当前地址寄存器, A0= 1表示访问当前字节计数器。而用为低电平或为低电平表示是读操作还是写操作。

对当前地址寄存器进行写入的同时,也写入基本地址寄存器;对当前字节计数器进行写入的同时,也写入基本字节计数器。

CS

Page 139: 第6章 输入输出技术

- 140- 目录 上页 下页 结束

㈢ 8237 的编程步骤① 输出主清除命令;② 写入基与现行地址寄存器;③ 写入基与现行字节数址寄存器;④ 写入模式寄存器;⑤ 写入屏蔽寄存器;⑥ 写入命令寄存器;⑦ 写入请求寄存器;

若有软件请求,就写入到指定通道,就可以开始 DMA传送过程;若无软件请求,则在完成了① -⑦的编程后,由通道的 DREQ启动 DMA传送过程。

Page 140: 第6章 输入输出技术

例:若要利用通道 0 ,由外设 (磁盘 ) 输入 32KB 的一个数据块,传送至内存 8000H开始的区域 (增量传送 ) ,采用块连续传送的方式,传送完不自动初始化,外设的 DREQ 和 DACK都为高电平有效。

要编程首先要确定端口地址。地址的低 4 位用以区分 8237 的内部寄存器,高 4 位地址 A7 ~ A4经译码后,连至选片端 CS ,假定选中时高 4 位为 5 。① 模式控制字 D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 0 0 1 0 0② 屏蔽字 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 0 0③ 命令字 D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 0 0 0 0 0

Page 141: 第6章 输入输出技术

- 142- 目录 上页 下页 结束

DMA 通道 0 的刷新编程OUT 5DH , AL ;输出主清除命令MOV AL , 00HOUT 50H , AL ;输出基和现行地址的低 8 位MOV AL , 80HOUT 50H , AL ;输出基和现行地址的高 8 位MOV AL , 00HOUT 51H , ALMOV AL , 80HOUT 51H , AL ;给基和现行字节数赋值MOV AL , 84HOUT 5BH , AL ;输出模式字MOV AL , 00HOUT 5AH , AL ;输出屏蔽字MOV AL , 0AOHOUT 58H , AL ;输出命令字

IBM PC/XT

Page 142: 第6章 输入输出技术

- 143- 目录 上页 下页 结束

6. Intel 8237 的应用举例㈠ 8088 访问 8237 的寻址 (自学 )

㈡ 8237 的初始化编程 在进行 DMA 传输之前, CPU 要对 8237 进行

编程。 DMA 传输要涉及到 RAM 地址、数据块长、操作方式和传输类型,因此,在每次 DMA 传输之前,除自动预置外,都必须对 8237 进行一次初始化编程。若数据块超过 64KB界限时,还必须将页面地址写入页面寄存器。 ㈢ 利用 8237 的 CHl实现 DMA 数据传送 (自学 )

Page 143: 第6章 输入输出技术

- 144- 目录 上页 下页 结束

6.5例题解析

Page 144: 第6章 输入输出技术

第 6章教学要求1. 了解 8237A引脚特点和工作时序2. 掌握 8237A 的各种工作方式3. 理解 8237A 内部寄存器的作用和编程4. 了解 8237A 在 IBM PC 系列机上的应用情况