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

第6章 输入输出技术

  • Upload
    jugn

  • View
    649

  • Download
    7

Embed Size (px)

DESCRIPTION

hgfdh

Citation preview

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 系列机上的应用情况